@soat/cli 0.5.5 → 0.5.7

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 (2) hide show
  1. package/dist/esm/index.js +2294 -316
  2. package/package.json +3 -3
package/dist/esm/index.js CHANGED
@@ -16,12 +16,12 @@ import { program } from "commander";
16
16
  // package.json
17
17
  var package_default = {
18
18
  name: "@soat/cli",
19
- version: "0.5.5",
19
+ version: "0.5.7",
20
20
  type: "module",
21
21
  scripts: {
22
22
  generate: "tsx scripts/generate.ts",
23
23
  lint: "eslint src tests",
24
- test: "pnpm --filter @soat/sdk build && jest --config tests/unit/jest.config.ts --coverage=false",
24
+ test: "jest --config tests/unit/jest.config.ts --coverage=false",
25
25
  typecheck: "tsc --noEmit && tsc --noEmit -p tests/tsconfig.json",
26
26
  build: "pnpm generate && tsup"
27
27
  },
@@ -57,10 +57,10 @@ var package_default = {
57
57
  }
58
58
  };
59
59
 
60
- // src/cli-wrappers/wrappers/agentFormations.ts
60
+ // src/cli-wrappers/wrappers/formations.ts
61
61
  import * as fs from "fs";
62
62
  import yaml from "js-yaml";
63
- var FORMATION_COMMANDS = ["validate-agent-formation", "plan-agent-formation", "create-agent-formation", "update-agent-formation"];
63
+ var FORMATION_COMMANDS = ["validate-formation", "plan-formation", "create-formation", "update-formation"];
64
64
  var TEMPLATE_PATH_FLAG = "template-path";
65
65
  var TEMPLATE_FILE_FLAG = "template-file";
66
66
  var ENV_FILE_FLAG = "env-file";
@@ -139,9 +139,25 @@ var resolveEnvRef = /* @__PURE__ */__name(args => {
139
139
  }
140
140
  return value;
141
141
  }, "resolveEnvRef");
142
- var agentFormationsWrapper = {
143
- id: "agent-formations-wrapper",
142
+ var formationsWrapper = {
143
+ id: "formations-wrapper",
144
144
  commands: FORMATION_COMMANDS,
145
+ helpFlags: [{
146
+ name: "template-path",
147
+ description: "Path to template file (JSON or YAML). Alias: --template-file",
148
+ required: false,
149
+ type: "string"
150
+ }, {
151
+ name: "parameter",
152
+ description: "Template parameter in key=value format (repeatable). Values may reference env vars ($VAR)",
153
+ required: false,
154
+ type: "string"
155
+ }, {
156
+ name: "env-file",
157
+ description: "Path to .env file for parameter variable substitution",
158
+ required: false,
159
+ type: "string"
160
+ }],
145
161
  // eslint-disable-next-line complexity
146
162
  apply: /* @__PURE__ */__name(({
147
163
  context
@@ -255,7 +271,7 @@ var parseUnknownWithRepeats = /* @__PURE__ */__name(args => {
255
271
  }, "parseUnknownWithRepeats");
256
272
 
257
273
  // src/cli-wrappers/index.ts
258
- var WRAPPERS = [agentFormationsWrapper];
274
+ var WRAPPERS = [formationsWrapper];
259
275
  var resolveWrapperForCommand = /* @__PURE__ */__name(args => {
260
276
  const {
261
277
  commandName
@@ -287,6 +303,12 @@ var applyWrapperForCommand = /* @__PURE__ */__name(args => {
287
303
  }
288
304
  });
289
305
  }, "applyWrapperForCommand");
306
+ var getWrapperHelpFlags = /* @__PURE__ */__name(commandName => {
307
+ const wrapper = WRAPPERS.find(w => {
308
+ return w.commands.includes(commandName);
309
+ });
310
+ return wrapper?.helpFlags ?? [];
311
+ }, "getWrapperHelpFlags");
290
312
 
291
313
  // src/config.ts
292
314
  import * as fs2 from "fs";
@@ -345,940 +367,2870 @@ var routes = {
345
367
  "list-actors": {
346
368
  serviceClass: "Actors",
347
369
  operationId: "listActors",
348
- description: "List actors",
370
+ description: "Returns all actors the caller has access to. If projectId is provided, returns only actors in that project. project keys are scoped to a single project automatically. JWT users without projectId receive actors across all their accessible projects.",
371
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/actors",
349
372
  pathParams: [],
350
- queryParams: ["project_id", "external_id", "limit", "offset"]
373
+ queryParams: ["project_id", "external_id", "limit", "offset"],
374
+ flags: [{
375
+ "name": "project_id",
376
+ "description": "Project ID (optional)",
377
+ "required": false,
378
+ "type": "string",
379
+ "in": "query"
380
+ }, {
381
+ "name": "external_id",
382
+ "description": "External ID to filter by (e.g. WhatsApp phone number)",
383
+ "required": false,
384
+ "type": "string",
385
+ "in": "query"
386
+ }, {
387
+ "name": "limit",
388
+ "description": "Maximum number of results to return",
389
+ "required": false,
390
+ "type": "integer",
391
+ "in": "query"
392
+ }, {
393
+ "name": "offset",
394
+ "description": "Number of results to skip",
395
+ "required": false,
396
+ "type": "integer",
397
+ "in": "query"
398
+ }]
351
399
  },
352
400
  "create-actor": {
353
401
  serviceClass: "Actors",
354
402
  operationId: "createActor",
355
- description: "Create an actor",
403
+ description: "Creates a new actor. project keys automatically infer the project from the key's scope; JWT callers must supply projectId.",
404
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/actors",
356
405
  pathParams: [],
357
- queryParams: []
406
+ queryParams: [],
407
+ flags: [{
408
+ "name": "project_id",
409
+ "description": "Project ID. Required for JWT auth; omit when using an project key.",
410
+ "required": false,
411
+ "type": "string",
412
+ "in": "body"
413
+ }, {
414
+ "name": "name",
415
+ "description": "",
416
+ "required": true,
417
+ "type": "string",
418
+ "in": "body"
419
+ }, {
420
+ "name": "external_id",
421
+ "description": "Optional external identifier (e.g. WhatsApp phone number). If provided and an actor with this externalId already exists in the project, the existing actor is returned (idempotent \u2014 200 OK).",
422
+ "required": false,
423
+ "type": "string",
424
+ "in": "body"
425
+ }, {
426
+ "name": "memory_id",
427
+ "description": "Memory ID to link to this actor. Mutually exclusive with auto_create_memory.",
428
+ "required": false,
429
+ "type": "string",
430
+ "in": "body"
431
+ }, {
432
+ "name": "auto_create_memory",
433
+ "description": "When true, automatically creates a new memory container for this actor and links it. Ignored if memory_id is set. With external_id (idempotent), memory is only created on first creation.",
434
+ "required": false,
435
+ "type": "boolean",
436
+ "in": "body"
437
+ }]
358
438
  },
359
439
  "get-actor": {
360
440
  serviceClass: "Actors",
361
441
  operationId: "getActor",
362
- description: "Get an actor by ID",
442
+ description: "Returns an actor by its ID",
443
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/actors",
363
444
  pathParams: ["actor_id"],
364
- queryParams: []
445
+ queryParams: [],
446
+ flags: [{
447
+ "name": "actor_id",
448
+ "description": "Actor ID",
449
+ "required": true,
450
+ "type": "string",
451
+ "in": "path"
452
+ }]
365
453
  },
366
454
  "update-actor": {
367
455
  serviceClass: "Actors",
368
456
  operationId: "updateActor",
369
- description: "Update an actor",
457
+ description: "Updates an actor's properties",
458
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/actors",
370
459
  pathParams: ["actor_id"],
371
- queryParams: []
460
+ queryParams: [],
461
+ flags: [{
462
+ "name": "actor_id",
463
+ "description": "Actor ID",
464
+ "required": true,
465
+ "type": "string",
466
+ "in": "path"
467
+ }, {
468
+ "name": "name",
469
+ "description": "",
470
+ "required": false,
471
+ "type": "string",
472
+ "in": "body"
473
+ }, {
474
+ "name": "instructions",
475
+ "description": "Persona-specific instructions",
476
+ "required": false,
477
+ "type": "string",
478
+ "in": "body"
479
+ }, {
480
+ "name": "memory_id",
481
+ "description": "Memory ID to link to this actor. Set to null to unlink.",
482
+ "required": false,
483
+ "type": "string",
484
+ "in": "body"
485
+ }, {
486
+ "name": "tags",
487
+ "description": "",
488
+ "required": false,
489
+ "type": "object",
490
+ "in": "body"
491
+ }]
372
492
  },
373
493
  "delete-actor": {
374
494
  serviceClass: "Actors",
375
495
  operationId: "deleteActor",
376
- description: "Delete an actor",
496
+ description: "Deletes an actor by its ID",
497
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/actors",
377
498
  pathParams: ["actor_id"],
378
- queryParams: []
499
+ queryParams: [],
500
+ flags: [{
501
+ "name": "actor_id",
502
+ "description": "Actor ID",
503
+ "required": true,
504
+ "type": "string",
505
+ "in": "path"
506
+ }]
379
507
  },
380
508
  "get-actor-tags": {
381
509
  serviceClass: "Actors",
382
510
  operationId: "getActorTags",
383
- description: "Get actor tags",
511
+ description: "Returns all tags attached to the actor",
512
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/actors",
384
513
  pathParams: ["actor_id"],
385
- queryParams: []
514
+ queryParams: [],
515
+ flags: [{
516
+ "name": "actor_id",
517
+ "description": "Actor ID",
518
+ "required": true,
519
+ "type": "string",
520
+ "in": "path"
521
+ }]
386
522
  },
387
523
  "replace-actor-tags": {
388
524
  serviceClass: "Actors",
389
525
  operationId: "replaceActorTags",
390
- description: "Replace actor tags",
526
+ description: "Replaces all tags on the actor with the provided tags (not merged)",
527
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/actors",
391
528
  pathParams: ["actor_id"],
392
- queryParams: []
529
+ queryParams: [],
530
+ flags: [{
531
+ "name": "actor_id",
532
+ "description": "Actor ID",
533
+ "required": true,
534
+ "type": "string",
535
+ "in": "path"
536
+ }]
393
537
  },
394
538
  "merge-actor-tags": {
395
539
  serviceClass: "Actors",
396
540
  operationId: "mergeActorTags",
397
- description: "Merge actor tags",
541
+ description: "Merges provided tags with existing tags (existing tags are preserved unless overridden)",
542
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/actors",
398
543
  pathParams: ["actor_id"],
399
- queryParams: []
400
- },
401
- "validate-agent-formation": {
402
- serviceClass: "AgentFormations",
403
- operationId: "validateAgentFormation",
404
- description: "Validate a formation template",
405
- pathParams: [],
406
- queryParams: []
407
- },
408
- "plan-agent-formation": {
409
- serviceClass: "AgentFormations",
410
- operationId: "planAgentFormation",
411
- description: "Plan a formation deployment",
412
- pathParams: [],
413
- queryParams: []
414
- },
415
- "list-agent-formations": {
416
- serviceClass: "AgentFormations",
417
- operationId: "listAgentFormations",
418
- description: "List agent formations",
419
- pathParams: [],
420
- queryParams: ["project_id"]
421
- },
422
- "create-agent-formation": {
423
- serviceClass: "AgentFormations",
424
- operationId: "createAgentFormation",
425
- description: "Create a new agent formation",
426
- pathParams: [],
427
- queryParams: []
428
- },
429
- "get-agent-formation": {
430
- serviceClass: "AgentFormations",
431
- operationId: "getAgentFormation",
432
- description: "Get a specific agent formation",
433
- pathParams: ["formation_id"],
434
- queryParams: []
435
- },
436
- "update-agent-formation": {
437
- serviceClass: "AgentFormations",
438
- operationId: "updateAgentFormation",
439
- description: "Update an agent formation",
440
- pathParams: ["formation_id"],
441
- queryParams: []
442
- },
443
- "delete-agent-formation": {
444
- serviceClass: "AgentFormations",
445
- operationId: "deleteAgentFormation",
446
- description: "Delete an agent formation",
447
- pathParams: ["formation_id"],
448
- queryParams: []
449
- },
450
- "list-agent-formation-events": {
451
- serviceClass: "AgentFormations",
452
- operationId: "listAgentFormationEvents",
453
- description: "List formation operation events",
454
- pathParams: ["formation_id"],
455
- queryParams: []
544
+ queryParams: [],
545
+ flags: [{
546
+ "name": "actor_id",
547
+ "description": "Actor ID",
548
+ "required": true,
549
+ "type": "string",
550
+ "in": "path"
551
+ }]
456
552
  },
457
553
  "list-agent-tools": {
458
554
  serviceClass: "AgentTools",
459
555
  operationId: "listAgentTools",
460
- description: "List agent tools",
556
+ description: "Returns all agent tools in the project.",
557
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
461
558
  pathParams: [],
462
- queryParams: ["project_id"]
559
+ queryParams: ["project_id"],
560
+ flags: [{
561
+ "name": "project_id",
562
+ "description": "Project public ID to filter by",
563
+ "required": false,
564
+ "type": "string",
565
+ "in": "query"
566
+ }]
463
567
  },
464
568
  "create-agent-tool": {
465
569
  serviceClass: "AgentTools",
466
570
  operationId: "createAgentTool",
467
- description: "Create an agent tool",
571
+ description: "Creates a new agent tool in the project.",
572
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
468
573
  pathParams: [],
469
- queryParams: []
574
+ queryParams: [],
575
+ flags: []
470
576
  },
471
577
  "get-agent-tool": {
472
578
  serviceClass: "AgentTools",
473
579
  operationId: "getAgentTool",
474
- description: "Get an agent tool",
580
+ description: "Returns a single agent tool by ID.",
581
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
475
582
  pathParams: ["tool_id"],
476
- queryParams: []
583
+ queryParams: [],
584
+ flags: [{
585
+ "name": "tool_id",
586
+ "description": "",
587
+ "required": true,
588
+ "type": "string",
589
+ "in": "path"
590
+ }]
477
591
  },
478
592
  "update-agent-tool": {
479
593
  serviceClass: "AgentTools",
480
594
  operationId: "updateAgentTool",
481
- description: "Update an agent tool",
595
+ description: "Updates an existing agent tool.",
596
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
482
597
  pathParams: ["tool_id"],
483
- queryParams: []
598
+ queryParams: [],
599
+ flags: [{
600
+ "name": "tool_id",
601
+ "description": "",
602
+ "required": true,
603
+ "type": "string",
604
+ "in": "path"
605
+ }]
484
606
  },
485
607
  "delete-agent-tool": {
486
608
  serviceClass: "AgentTools",
487
609
  operationId: "deleteAgentTool",
488
- description: "Delete an agent tool",
610
+ description: "Deletes an agent tool by ID.",
611
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
489
612
  pathParams: ["tool_id"],
490
- queryParams: []
613
+ queryParams: [],
614
+ flags: [{
615
+ "name": "tool_id",
616
+ "description": "",
617
+ "required": true,
618
+ "type": "string",
619
+ "in": "path"
620
+ }]
491
621
  },
492
622
  "list-agents": {
493
623
  serviceClass: "Agents",
494
624
  operationId: "listAgents",
495
- description: "List agents",
625
+ description: "Returns all agents in the project.",
626
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
496
627
  pathParams: [],
497
- queryParams: ["project_id"]
628
+ queryParams: ["project_id"],
629
+ flags: [{
630
+ "name": "project_id",
631
+ "description": "Project public ID to filter by",
632
+ "required": false,
633
+ "type": "string",
634
+ "in": "query"
635
+ }]
498
636
  },
499
637
  "create-agent": {
500
638
  serviceClass: "Agents",
501
639
  operationId: "createAgent",
502
- description: "Create an agent",
640
+ description: "Creates a new agent bound to an AI provider.",
641
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
503
642
  pathParams: [],
504
- queryParams: []
643
+ queryParams: [],
644
+ flags: []
505
645
  },
506
646
  "get-agent": {
507
647
  serviceClass: "Agents",
508
648
  operationId: "getAgent",
509
- description: "Get an agent",
649
+ description: "Returns a single agent by ID.",
650
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
510
651
  pathParams: ["agent_id"],
511
- queryParams: []
652
+ queryParams: [],
653
+ flags: [{
654
+ "name": "agent_id",
655
+ "description": "",
656
+ "required": true,
657
+ "type": "string",
658
+ "in": "path"
659
+ }]
512
660
  },
513
661
  "update-agent": {
514
662
  serviceClass: "Agents",
515
663
  operationId: "updateAgent",
516
- description: "Update an agent",
664
+ description: "Updates an existing agent.",
665
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
517
666
  pathParams: ["agent_id"],
518
- queryParams: []
667
+ queryParams: [],
668
+ flags: [{
669
+ "name": "agent_id",
670
+ "description": "",
671
+ "required": true,
672
+ "type": "string",
673
+ "in": "path"
674
+ }]
519
675
  },
520
676
  "delete-agent": {
521
677
  serviceClass: "Agents",
522
678
  operationId: "deleteAgent",
523
- description: "Delete an agent",
679
+ description: "Deletes an agent by ID.",
680
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
524
681
  pathParams: ["agent_id"],
525
- queryParams: []
682
+ queryParams: [],
683
+ flags: [{
684
+ "name": "agent_id",
685
+ "description": "",
686
+ "required": true,
687
+ "type": "string",
688
+ "in": "path"
689
+ }]
526
690
  },
527
691
  "create-agent-generation": {
528
692
  serviceClass: "Agents",
529
693
  operationId: "createAgentGeneration",
530
- description: "Run an agent generation",
694
+ description: "Sends messages to the agent, resolves its tools, and runs the AI model loop. Supports streaming via `stream: true`. Client tools pause the generation and return `requires_action`.",
695
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
531
696
  pathParams: ["agent_id"],
532
- queryParams: []
697
+ queryParams: [],
698
+ flags: [{
699
+ "name": "agent_id",
700
+ "description": "",
701
+ "required": true,
702
+ "type": "string",
703
+ "in": "path"
704
+ }]
533
705
  },
534
706
  "submit-agent-tool-outputs": {
535
707
  serviceClass: "Agents",
536
708
  operationId: "submitAgentToolOutputs",
537
- description: "Submit tool outputs for a paused generation",
709
+ description: "Resumes a generation that was paused due to client tool calls. Provide tool outputs for each pending tool call.",
710
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
538
711
  pathParams: ["agent_id", "generation_id"],
539
- queryParams: []
712
+ queryParams: [],
713
+ flags: [{
714
+ "name": "agent_id",
715
+ "description": "",
716
+ "required": true,
717
+ "type": "string",
718
+ "in": "path"
719
+ }, {
720
+ "name": "generation_id",
721
+ "description": "",
722
+ "required": true,
723
+ "type": "string",
724
+ "in": "path"
725
+ }]
540
726
  },
541
727
  "create-agent-actor": {
542
728
  serviceClass: "Agents",
543
729
  operationId: "createAgentActor",
544
- description: "Create an actor for an agent",
730
+ description: "Creates a new actor associated with the specified agent",
731
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/agents",
545
732
  pathParams: ["agent_id"],
546
- queryParams: []
733
+ queryParams: [],
734
+ flags: [{
735
+ "name": "agent_id",
736
+ "description": "Agent ID",
737
+ "required": true,
738
+ "type": "string",
739
+ "in": "path"
740
+ }, {
741
+ "name": "name",
742
+ "description": "",
743
+ "required": true,
744
+ "type": "string",
745
+ "in": "body"
746
+ }, {
747
+ "name": "type",
748
+ "description": "Optional actor type",
749
+ "required": false,
750
+ "type": "string",
751
+ "in": "body"
752
+ }, {
753
+ "name": "external_id",
754
+ "description": "Optional external identifier",
755
+ "required": false,
756
+ "type": "string",
757
+ "in": "body"
758
+ }, {
759
+ "name": "tags",
760
+ "description": "",
761
+ "required": false,
762
+ "type": "object",
763
+ "in": "body"
764
+ }]
547
765
  },
548
766
  "list-ai-providers": {
549
767
  serviceClass: "AIProviders",
550
768
  operationId: "listAiProviders",
551
- description: "List AI providers",
769
+ description: "Returns a list of AI provider configurations for a project",
770
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/ai-providers",
552
771
  pathParams: [],
553
- queryParams: ["project_id", "limit", "offset"]
772
+ queryParams: ["project_id", "limit", "offset"],
773
+ flags: [{
774
+ "name": "project_id",
775
+ "description": "Project ID (required if not using project key auth)",
776
+ "required": false,
777
+ "type": "string",
778
+ "in": "query"
779
+ }, {
780
+ "name": "limit",
781
+ "description": "Number of results per page",
782
+ "required": false,
783
+ "type": "integer",
784
+ "in": "query"
785
+ }, {
786
+ "name": "offset",
787
+ "description": "Number of results to skip",
788
+ "required": false,
789
+ "type": "integer",
790
+ "in": "query"
791
+ }]
554
792
  },
555
793
  "create-ai-provider": {
556
794
  serviceClass: "AIProviders",
557
795
  operationId: "createAiProvider",
558
- description: "Create an AI provider",
796
+ description: "Creates a new LLM provider configuration",
797
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/ai-providers",
559
798
  pathParams: [],
560
- queryParams: []
799
+ queryParams: [],
800
+ flags: [{
801
+ "name": "project_id",
802
+ "description": "Project ID (required if not using project key auth)",
803
+ "required": false,
804
+ "type": "string",
805
+ "in": "body"
806
+ }, {
807
+ "name": "name",
808
+ "description": "Provider configuration name",
809
+ "required": true,
810
+ "type": "string",
811
+ "in": "body"
812
+ }, {
813
+ "name": "provider",
814
+ "description": "LLM provider",
815
+ "required": true,
816
+ "type": "string",
817
+ "in": "body"
818
+ }, {
819
+ "name": "default_model",
820
+ "description": "Default model to use",
821
+ "required": true,
822
+ "type": "string",
823
+ "in": "body"
824
+ }, {
825
+ "name": "secret_id",
826
+ "description": "Secret ID containing API credentials",
827
+ "required": false,
828
+ "type": "string",
829
+ "in": "body"
830
+ }, {
831
+ "name": "base_url",
832
+ "description": "Custom base URL for the provider",
833
+ "required": false,
834
+ "type": "string",
835
+ "in": "body"
836
+ }, {
837
+ "name": "config",
838
+ "description": "Additional provider-specific configuration",
839
+ "required": false,
840
+ "type": "object",
841
+ "in": "body"
842
+ }]
561
843
  },
562
844
  "get-ai-provider": {
563
845
  serviceClass: "AIProviders",
564
846
  operationId: "getAiProvider",
565
- description: "Get an AI provider",
847
+ description: "Returns a specific AI provider configuration",
848
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/ai-providers",
566
849
  pathParams: ["ai_provider_id"],
567
- queryParams: []
850
+ queryParams: [],
851
+ flags: [{
852
+ "name": "ai_provider_id",
853
+ "description": "AI Provider ID",
854
+ "required": true,
855
+ "type": "string",
856
+ "in": "path"
857
+ }]
568
858
  },
569
859
  "update-ai-provider": {
570
860
  serviceClass: "AIProviders",
571
861
  operationId: "updateAiProvider",
572
- description: "Update an AI provider",
862
+ description: "Updates an AI provider configuration",
863
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/ai-providers",
573
864
  pathParams: ["ai_provider_id"],
574
- queryParams: []
865
+ queryParams: [],
866
+ flags: [{
867
+ "name": "ai_provider_id",
868
+ "description": "AI Provider ID",
869
+ "required": true,
870
+ "type": "string",
871
+ "in": "path"
872
+ }, {
873
+ "name": "name",
874
+ "description": "",
875
+ "required": false,
876
+ "type": "string",
877
+ "in": "body"
878
+ }, {
879
+ "name": "default_model",
880
+ "description": "",
881
+ "required": false,
882
+ "type": "string",
883
+ "in": "body"
884
+ }, {
885
+ "name": "secret_id",
886
+ "description": "",
887
+ "required": false,
888
+ "type": "string",
889
+ "in": "body"
890
+ }, {
891
+ "name": "base_url",
892
+ "description": "",
893
+ "required": false,
894
+ "type": "string",
895
+ "in": "body"
896
+ }, {
897
+ "name": "config",
898
+ "description": "",
899
+ "required": false,
900
+ "type": "object",
901
+ "in": "body"
902
+ }]
575
903
  },
576
904
  "delete-ai-provider": {
577
905
  serviceClass: "AIProviders",
578
906
  operationId: "deleteAiProvider",
579
- description: "Delete an AI provider",
907
+ description: "Deletes an AI provider configuration",
908
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/ai-providers",
580
909
  pathParams: ["ai_provider_id"],
581
- queryParams: []
910
+ queryParams: [],
911
+ flags: [{
912
+ "name": "ai_provider_id",
913
+ "description": "AI Provider ID",
914
+ "required": true,
915
+ "type": "string",
916
+ "in": "path"
917
+ }]
582
918
  },
583
919
  "list-api-keys": {
584
920
  serviceClass: "APIKeys",
585
921
  operationId: "listApiKeys",
586
- description: "List API keys",
922
+ description: "Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - API key scoped to a project: returns only API keys scoped to that project.",
923
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/api-keys",
587
924
  pathParams: [],
588
- queryParams: []
925
+ queryParams: [],
926
+ flags: []
589
927
  },
590
928
  "create-api-key": {
591
929
  serviceClass: "APIKeys",
592
930
  operationId: "createApiKey",
593
- description: "Create an API key",
931
+ description: "Creates a new API key for the authenticated user. - If `project_id` is provided, the key is scoped to that project. - If `policy_ids` is provided, the key's effective permissions are the intersection of the user's policies and the key's policies. - If neither is provided, the key inherits the user's full permissions.",
932
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/api-keys",
594
933
  pathParams: [],
595
- queryParams: []
934
+ queryParams: [],
935
+ flags: [{
936
+ "name": "name",
937
+ "description": "Key name for identification",
938
+ "required": true,
939
+ "type": "string",
940
+ "in": "body"
941
+ }, {
942
+ "name": "project_id",
943
+ "description": "Optional project ID to scope this key to a specific project",
944
+ "required": false,
945
+ "type": "string",
946
+ "in": "body"
947
+ }, {
948
+ "name": "policy_ids",
949
+ "description": "Optional list of policy IDs to attach. Key permissions become the intersection of user policies and these policies.",
950
+ "required": false,
951
+ "type": "array",
952
+ "in": "body"
953
+ }]
596
954
  },
597
955
  "get-api-key": {
598
956
  serviceClass: "APIKeys",
599
957
  operationId: "getApiKey",
600
- description: "Get an API key",
958
+ description: "Returns details of an API key. Only the owner or an admin can access it.",
959
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/api-keys",
601
960
  pathParams: ["api_key_id"],
602
- queryParams: []
961
+ queryParams: [],
962
+ flags: [{
963
+ "name": "api_key_id",
964
+ "description": "API key public ID (key_ prefix)",
965
+ "required": true,
966
+ "type": "string",
967
+ "in": "path"
968
+ }]
603
969
  },
604
970
  "update-api-key": {
605
971
  serviceClass: "APIKeys",
606
972
  operationId: "updateApiKey",
607
- description: "Update an API key",
973
+ description: "Updates an API key's name, project scope, or policies. Only the owner or an admin can update it.",
974
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/api-keys",
608
975
  pathParams: ["api_key_id"],
609
- queryParams: []
976
+ queryParams: [],
977
+ flags: [{
978
+ "name": "api_key_id",
979
+ "description": "API key public ID (key_ prefix)",
980
+ "required": true,
981
+ "type": "string",
982
+ "in": "path"
983
+ }, {
984
+ "name": "name",
985
+ "description": "",
986
+ "required": false,
987
+ "type": "string",
988
+ "in": "body"
989
+ }, {
990
+ "name": "project_id",
991
+ "description": "Set to null to remove project scope",
992
+ "required": false,
993
+ "type": "string",
994
+ "in": "body"
995
+ }, {
996
+ "name": "policy_ids",
997
+ "description": "Replace the key's policy list (empty array removes all)",
998
+ "required": false,
999
+ "type": "array",
1000
+ "in": "body"
1001
+ }]
610
1002
  },
611
1003
  "delete-api-key": {
612
1004
  serviceClass: "APIKeys",
613
1005
  operationId: "deleteApiKey",
614
- description: "Delete an API key",
1006
+ description: "Deletes an API key. Only the owner or an admin can delete it.",
1007
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/api-keys",
615
1008
  pathParams: ["api_key_id"],
616
- queryParams: []
1009
+ queryParams: [],
1010
+ flags: [{
1011
+ "name": "api_key_id",
1012
+ "description": "API key public ID (key_ prefix)",
1013
+ "required": true,
1014
+ "type": "string",
1015
+ "in": "path"
1016
+ }]
617
1017
  },
618
1018
  "list-chats": {
619
1019
  serviceClass: "Chats",
620
1020
  operationId: "listChats",
621
- description: "List chats",
1021
+ description: "Returns all chats in the project.",
1022
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/chats",
622
1023
  pathParams: [],
623
- queryParams: ["project_id"]
1024
+ queryParams: ["project_id"],
1025
+ flags: [{
1026
+ "name": "project_id",
1027
+ "description": "Project public ID to filter by",
1028
+ "required": false,
1029
+ "type": "string",
1030
+ "in": "query"
1031
+ }]
624
1032
  },
625
1033
  "create-chat": {
626
1034
  serviceClass: "Chats",
627
1035
  operationId: "createChat",
628
- description: "Create a chat",
1036
+ description: "Creates a new chat resource bound to an AI provider.",
1037
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/chats",
629
1038
  pathParams: [],
630
- queryParams: []
1039
+ queryParams: [],
1040
+ flags: []
631
1041
  },
632
1042
  "get-chat": {
633
1043
  serviceClass: "Chats",
634
1044
  operationId: "getChat",
635
- description: "Get a chat",
1045
+ description: "Returns a single chat by ID.",
1046
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/chats",
636
1047
  pathParams: ["chat_id"],
637
- queryParams: []
1048
+ queryParams: [],
1049
+ flags: [{
1050
+ "name": "chat_id",
1051
+ "description": "",
1052
+ "required": true,
1053
+ "type": "string",
1054
+ "in": "path"
1055
+ }]
638
1056
  },
639
1057
  "delete-chat": {
640
1058
  serviceClass: "Chats",
641
1059
  operationId: "deleteChat",
642
- description: "Delete a chat",
1060
+ description: "Deletes a chat by ID.",
1061
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/chats",
643
1062
  pathParams: ["chat_id"],
644
- queryParams: []
1063
+ queryParams: [],
1064
+ flags: [{
1065
+ "name": "chat_id",
1066
+ "description": "",
1067
+ "required": true,
1068
+ "type": "string",
1069
+ "in": "path"
1070
+ }]
645
1071
  },
646
1072
  "create-chat-completion-for-chat": {
647
1073
  serviceClass: "Chats",
648
1074
  operationId: "createChatCompletionForChat",
649
- description: "Create a chat completion for a stored chat",
1075
+ description: "Runs a completion using the AI provider and settings stored in the chat. Pass `stream: true` for SSE streaming. A system message in `messages` overrides the chat's stored system message for this call only. Messages may use `documentId` instead of `content`.",
1076
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/chats",
650
1077
  pathParams: ["chat_id"],
651
- queryParams: []
1078
+ queryParams: [],
1079
+ flags: [{
1080
+ "name": "chat_id",
1081
+ "description": "",
1082
+ "required": true,
1083
+ "type": "string",
1084
+ "in": "path"
1085
+ }]
652
1086
  },
653
1087
  "create-chat-completion": {
654
1088
  serviceClass: "Chats",
655
1089
  operationId: "createChatCompletion",
656
- description: "Create a chat completion (stateless)",
1090
+ description: "OpenAI Chat Completions-compatible endpoint. Resolves the AI provider from `ai_provider_id`, decrypts its secret, and calls the appropriate Vercel AI SDK provider. `ai_provider_id` is required \u2014 there is no server-side model fallback.",
1091
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/chats",
657
1092
  pathParams: [],
658
- queryParams: []
1093
+ queryParams: [],
1094
+ flags: []
659
1095
  },
660
1096
  "create-chat-actor": {
661
1097
  serviceClass: "Chats",
662
1098
  operationId: "createChatActor",
663
- description: "Create an actor for a chat",
1099
+ description: "Creates a new actor associated with the specified chat",
1100
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/chats",
664
1101
  pathParams: ["chat_id"],
665
- queryParams: []
1102
+ queryParams: [],
1103
+ flags: [{
1104
+ "name": "chat_id",
1105
+ "description": "Chat ID",
1106
+ "required": true,
1107
+ "type": "string",
1108
+ "in": "path"
1109
+ }, {
1110
+ "name": "name",
1111
+ "description": "",
1112
+ "required": true,
1113
+ "type": "string",
1114
+ "in": "body"
1115
+ }, {
1116
+ "name": "type",
1117
+ "description": "Optional actor type",
1118
+ "required": false,
1119
+ "type": "string",
1120
+ "in": "body"
1121
+ }, {
1122
+ "name": "external_id",
1123
+ "description": "Optional external identifier",
1124
+ "required": false,
1125
+ "type": "string",
1126
+ "in": "body"
1127
+ }, {
1128
+ "name": "tags",
1129
+ "description": "",
1130
+ "required": false,
1131
+ "type": "object",
1132
+ "in": "body"
1133
+ }]
666
1134
  },
667
1135
  "list-conversations": {
668
1136
  serviceClass: "Conversations",
669
1137
  operationId: "listConversations",
670
- description: "List conversations",
1138
+ description: "Returns all conversations the caller has access to. If projectId is provided, returns only conversations in that project. project keys are scoped to a single project automatically.",
1139
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
671
1140
  pathParams: [],
672
- queryParams: ["project_id", "actor_id", "limit", "offset"]
1141
+ queryParams: ["project_id", "actor_id", "limit", "offset"],
1142
+ flags: [{
1143
+ "name": "project_id",
1144
+ "description": "Project ID (optional)",
1145
+ "required": false,
1146
+ "type": "string",
1147
+ "in": "query"
1148
+ }, {
1149
+ "name": "actor_id",
1150
+ "description": "Filter by actor ID",
1151
+ "required": false,
1152
+ "type": "string",
1153
+ "in": "query"
1154
+ }, {
1155
+ "name": "limit",
1156
+ "description": "Maximum number of results to return",
1157
+ "required": false,
1158
+ "type": "integer",
1159
+ "in": "query"
1160
+ }, {
1161
+ "name": "offset",
1162
+ "description": "Number of results to skip",
1163
+ "required": false,
1164
+ "type": "integer",
1165
+ "in": "query"
1166
+ }]
673
1167
  },
674
1168
  "create-conversation": {
675
1169
  serviceClass: "Conversations",
676
1170
  operationId: "createConversation",
677
- description: "Create a conversation",
1171
+ description: "Creates a new conversation. project keys automatically infer the project from the key's scope; JWT callers must supply projectId.",
1172
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
678
1173
  pathParams: [],
679
- queryParams: []
1174
+ queryParams: [],
1175
+ flags: [{
1176
+ "name": "project_id",
1177
+ "description": "Project ID. Required for JWT auth; omit when using an project key.",
1178
+ "required": false,
1179
+ "type": "string",
1180
+ "in": "body"
1181
+ }, {
1182
+ "name": "status",
1183
+ "description": "Initial conversation status",
1184
+ "required": false,
1185
+ "type": "string",
1186
+ "in": "body"
1187
+ }, {
1188
+ "name": "name",
1189
+ "description": "Optional name for the conversation",
1190
+ "required": false,
1191
+ "type": "string",
1192
+ "in": "body"
1193
+ }, {
1194
+ "name": "actor_id",
1195
+ "description": "Actor ID to associate with this conversation",
1196
+ "required": false,
1197
+ "type": "string",
1198
+ "in": "body"
1199
+ }]
680
1200
  },
681
1201
  "get-conversation": {
682
1202
  serviceClass: "Conversations",
683
1203
  operationId: "getConversation",
684
- description: "Get a conversation by ID",
1204
+ description: "Returns a conversation by its ID",
1205
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
685
1206
  pathParams: ["conversation_id"],
686
- queryParams: []
1207
+ queryParams: [],
1208
+ flags: [{
1209
+ "name": "conversation_id",
1210
+ "description": "Conversation ID",
1211
+ "required": true,
1212
+ "type": "string",
1213
+ "in": "path"
1214
+ }]
687
1215
  },
688
1216
  "update-conversation": {
689
1217
  serviceClass: "Conversations",
690
1218
  operationId: "updateConversation",
691
- description: "Update a conversation",
1219
+ description: "Updates the status of a conversation",
1220
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
692
1221
  pathParams: ["conversation_id"],
693
- queryParams: []
1222
+ queryParams: [],
1223
+ flags: [{
1224
+ "name": "conversation_id",
1225
+ "description": "Conversation ID",
1226
+ "required": true,
1227
+ "type": "string",
1228
+ "in": "path"
1229
+ }, {
1230
+ "name": "status",
1231
+ "description": "New conversation status",
1232
+ "required": true,
1233
+ "type": "string",
1234
+ "in": "body"
1235
+ }]
694
1236
  },
695
1237
  "delete-conversation": {
696
1238
  serviceClass: "Conversations",
697
1239
  operationId: "deleteConversation",
698
- description: "Delete a conversation",
1240
+ description: "Deletes a conversation by its ID",
1241
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
699
1242
  pathParams: ["conversation_id"],
700
- queryParams: []
1243
+ queryParams: [],
1244
+ flags: [{
1245
+ "name": "conversation_id",
1246
+ "description": "Conversation ID",
1247
+ "required": true,
1248
+ "type": "string",
1249
+ "in": "path"
1250
+ }]
701
1251
  },
702
1252
  "list-conversation-messages": {
703
1253
  serviceClass: "Conversations",
704
1254
  operationId: "listConversationMessages",
705
- description: "List conversation messages",
1255
+ description: "Returns all messages (documents) attached to a conversation, ordered by position",
1256
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
706
1257
  pathParams: ["conversation_id"],
707
- queryParams: ["limit", "offset"]
1258
+ queryParams: ["limit", "offset"],
1259
+ flags: [{
1260
+ "name": "conversation_id",
1261
+ "description": "Conversation ID",
1262
+ "required": true,
1263
+ "type": "string",
1264
+ "in": "path"
1265
+ }, {
1266
+ "name": "limit",
1267
+ "description": "Maximum number of results to return",
1268
+ "required": false,
1269
+ "type": "integer",
1270
+ "in": "query"
1271
+ }, {
1272
+ "name": "offset",
1273
+ "description": "Number of results to skip",
1274
+ "required": false,
1275
+ "type": "integer",
1276
+ "in": "query"
1277
+ }]
708
1278
  },
709
1279
  "add-conversation-message": {
710
1280
  serviceClass: "Conversations",
711
1281
  operationId: "addConversationMessage",
712
- description: "Add a message to a conversation",
1282
+ description: "Creates a document from the message text and attaches it to the conversation at the given position. If position is omitted, it is appended at the end.",
1283
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
713
1284
  pathParams: ["conversation_id"],
714
- queryParams: []
1285
+ queryParams: [],
1286
+ flags: [{
1287
+ "name": "conversation_id",
1288
+ "description": "Conversation ID",
1289
+ "required": true,
1290
+ "type": "string",
1291
+ "in": "path"
1292
+ }, {
1293
+ "name": "message",
1294
+ "description": "Message text content to add to the conversation",
1295
+ "required": true,
1296
+ "type": "string",
1297
+ "in": "body"
1298
+ }, {
1299
+ "name": "role",
1300
+ "description": "Role of the message sender",
1301
+ "required": true,
1302
+ "type": "string",
1303
+ "in": "body"
1304
+ }, {
1305
+ "name": "actor_id",
1306
+ "description": "Optional actor ID to associate with this message (user identity)",
1307
+ "required": false,
1308
+ "type": "string",
1309
+ "in": "body"
1310
+ }, {
1311
+ "name": "position",
1312
+ "description": "Zero-based position. Defaults to MAX+1 (append).",
1313
+ "required": false,
1314
+ "type": "integer",
1315
+ "in": "body"
1316
+ }, {
1317
+ "name": "metadata",
1318
+ "description": "Optional structured metadata to attach to the message (e.g. phone number, channel). Stored as-is and injected into the AI prompt context.",
1319
+ "required": false,
1320
+ "type": "object",
1321
+ "in": "body"
1322
+ }]
715
1323
  },
716
1324
  "generate-conversation-message": {
717
1325
  serviceClass: "Conversations",
718
1326
  operationId: "generateConversationMessage",
719
- description: "Generate the next message in a conversation",
1327
+ description: "Generates the next message using the specified actor's linked agent or chat. On `completed`, the reply is persisted as a new ConversationMessage authored by that actor. On `requires_action`, nothing is persisted; the caller must submit tool outputs via the Agents module and re-invoke generate.",
1328
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
720
1329
  pathParams: ["conversation_id"],
721
- queryParams: []
1330
+ queryParams: [],
1331
+ flags: [{
1332
+ "name": "conversation_id",
1333
+ "description": "",
1334
+ "required": true,
1335
+ "type": "string",
1336
+ "in": "path"
1337
+ }, {
1338
+ "name": "agent_id",
1339
+ "description": "ID of the agent that will produce the next message.",
1340
+ "required": true,
1341
+ "type": "string",
1342
+ "in": "body"
1343
+ }, {
1344
+ "name": "model",
1345
+ "description": "Optional model override.",
1346
+ "required": false,
1347
+ "type": "string",
1348
+ "in": "body"
1349
+ }, {
1350
+ "name": "stream",
1351
+ "description": "If true, stream tokens via SSE. NOT IMPLEMENTED in v1 \u2014 returns 501.",
1352
+ "required": false,
1353
+ "type": "boolean",
1354
+ "in": "body"
1355
+ }, {
1356
+ "name": "tool_context",
1357
+ "description": "Key-value pairs injected as context headers into all tool call requests made during this generation.",
1358
+ "required": false,
1359
+ "type": "object",
1360
+ "in": "body"
1361
+ }]
722
1362
  },
723
1363
  "list-conversation-actors": {
724
1364
  serviceClass: "Conversations",
725
1365
  operationId: "listConversationActors",
726
- description: "List actors in a conversation",
1366
+ description: "Returns all distinct actors who have sent at least one message in the conversation",
1367
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
727
1368
  pathParams: ["conversation_id"],
728
- queryParams: []
1369
+ queryParams: [],
1370
+ flags: [{
1371
+ "name": "conversation_id",
1372
+ "description": "Conversation ID",
1373
+ "required": true,
1374
+ "type": "string",
1375
+ "in": "path"
1376
+ }]
729
1377
  },
730
1378
  "remove-conversation-message": {
731
1379
  serviceClass: "Conversations",
732
1380
  operationId: "removeConversationMessage",
733
- description: "Remove a message from a conversation",
1381
+ description: "Removes a document from a conversation",
1382
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
734
1383
  pathParams: ["conversation_id", "document_id"],
735
- queryParams: []
1384
+ queryParams: [],
1385
+ flags: [{
1386
+ "name": "conversation_id",
1387
+ "description": "Conversation ID",
1388
+ "required": true,
1389
+ "type": "string",
1390
+ "in": "path"
1391
+ }, {
1392
+ "name": "document_id",
1393
+ "description": "Document ID",
1394
+ "required": true,
1395
+ "type": "string",
1396
+ "in": "path"
1397
+ }]
736
1398
  },
737
1399
  "get-conversation-tags": {
738
1400
  serviceClass: "Conversations",
739
1401
  operationId: "getConversationTags",
740
- description: "Get conversation tags",
1402
+ description: "Returns all tags attached to the conversation",
1403
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
741
1404
  pathParams: ["conversation_id"],
742
- queryParams: []
1405
+ queryParams: [],
1406
+ flags: [{
1407
+ "name": "conversation_id",
1408
+ "description": "Conversation ID",
1409
+ "required": true,
1410
+ "type": "string",
1411
+ "in": "path"
1412
+ }]
743
1413
  },
744
1414
  "replace-conversation-tags": {
745
1415
  serviceClass: "Conversations",
746
1416
  operationId: "replaceConversationTags",
747
- description: "Replace conversation tags",
1417
+ description: "Replaces all tags on the conversation with the provided tags",
1418
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
748
1419
  pathParams: ["conversation_id"],
749
- queryParams: []
1420
+ queryParams: [],
1421
+ flags: [{
1422
+ "name": "conversation_id",
1423
+ "description": "Conversation ID",
1424
+ "required": true,
1425
+ "type": "string",
1426
+ "in": "path"
1427
+ }]
750
1428
  },
751
1429
  "merge-conversation-tags": {
752
1430
  serviceClass: "Conversations",
753
1431
  operationId: "mergeConversationTags",
754
- description: "Merge conversation tags",
1432
+ description: "Merges provided tags with existing tags",
1433
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/conversations",
755
1434
  pathParams: ["conversation_id"],
756
- queryParams: []
1435
+ queryParams: [],
1436
+ flags: [{
1437
+ "name": "conversation_id",
1438
+ "description": "Conversation ID",
1439
+ "required": true,
1440
+ "type": "string",
1441
+ "in": "path"
1442
+ }]
757
1443
  },
758
1444
  "list-documents": {
759
1445
  serviceClass: "Documents",
760
1446
  operationId: "listDocuments",
761
- description: "List documents",
1447
+ description: "Returns all documents the caller has access to. If projectId is provided, returns only documents in that project. project keys are scoped to a single project automatically. JWT users without projectId receive documents across all their accessible projects.",
1448
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/documents",
762
1449
  pathParams: [],
763
- queryParams: ["project_id"]
1450
+ queryParams: ["project_id"],
1451
+ flags: [{
1452
+ "name": "project_id",
1453
+ "description": "Project ID (optional)",
1454
+ "required": false,
1455
+ "type": "string",
1456
+ "in": "query"
1457
+ }]
764
1458
  },
765
1459
  "create-document": {
766
1460
  serviceClass: "Documents",
767
1461
  operationId: "createDocument",
768
- description: "Create a document",
1462
+ description: "Creates a new text document and generates an embedding vector for semantic search. project keys automatically infer the project from the key's scope; JWT callers must supply projectId.",
1463
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/documents",
769
1464
  pathParams: [],
770
- queryParams: []
1465
+ queryParams: [],
1466
+ flags: [{
1467
+ "name": "project_id",
1468
+ "description": "Project ID. Required for JWT auth; omit when using an project key.",
1469
+ "required": false,
1470
+ "type": "string",
1471
+ "in": "body"
1472
+ }, {
1473
+ "name": "content",
1474
+ "description": "",
1475
+ "required": true,
1476
+ "type": "string",
1477
+ "in": "body"
1478
+ }, {
1479
+ "name": "path",
1480
+ "description": "Logical path within the project (e.g. /reports/q1.txt). Defaults to /filename if omitted.",
1481
+ "required": false,
1482
+ "type": "string",
1483
+ "in": "body"
1484
+ }, {
1485
+ "name": "filename",
1486
+ "description": "",
1487
+ "required": false,
1488
+ "type": "string",
1489
+ "in": "body"
1490
+ }]
771
1491
  },
772
1492
  "get-document": {
773
1493
  serviceClass: "Documents",
774
1494
  operationId: "getDocument",
775
- description: "Get a document by ID",
1495
+ description: "Returns a document with its text content",
1496
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/documents",
776
1497
  pathParams: ["document_id"],
777
- queryParams: []
1498
+ queryParams: [],
1499
+ flags: [{
1500
+ "name": "document_id",
1501
+ "description": "Document ID",
1502
+ "required": true,
1503
+ "type": "string",
1504
+ "in": "path"
1505
+ }]
778
1506
  },
779
1507
  "update-document": {
780
1508
  serviceClass: "Documents",
781
1509
  operationId: "updateDocument",
782
- description: "Update a document",
1510
+ description: "Updates document content, title, path, metadata, or tags. Supplying `path` moves the document to a new logical path within the project.",
1511
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/documents",
783
1512
  pathParams: ["document_id"],
784
- queryParams: []
1513
+ queryParams: [],
1514
+ flags: [{
1515
+ "name": "document_id",
1516
+ "description": "Document ID",
1517
+ "required": true,
1518
+ "type": "string",
1519
+ "in": "path"
1520
+ }, {
1521
+ "name": "content",
1522
+ "description": "New text content",
1523
+ "required": false,
1524
+ "type": "string",
1525
+ "in": "body"
1526
+ }, {
1527
+ "name": "title",
1528
+ "description": "New title",
1529
+ "required": false,
1530
+ "type": "string",
1531
+ "in": "body"
1532
+ }, {
1533
+ "name": "path",
1534
+ "description": "Logical path within the project (e.g. /reports/q1.txt). Pass null to clear.",
1535
+ "required": false,
1536
+ "type": "string",
1537
+ "in": "body"
1538
+ }, {
1539
+ "name": "metadata",
1540
+ "description": "Arbitrary metadata object",
1541
+ "required": false,
1542
+ "type": "object",
1543
+ "in": "body"
1544
+ }, {
1545
+ "name": "tags",
1546
+ "description": "Key-value tags",
1547
+ "required": false,
1548
+ "type": "object",
1549
+ "in": "body"
1550
+ }]
785
1551
  },
786
1552
  "delete-document": {
787
1553
  serviceClass: "Documents",
788
1554
  operationId: "deleteDocument",
789
- description: "Delete a document",
1555
+ description: "Deletes a document and its underlying file",
1556
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/documents",
790
1557
  pathParams: ["document_id"],
791
- queryParams: []
1558
+ queryParams: [],
1559
+ flags: [{
1560
+ "name": "document_id",
1561
+ "description": "Document ID",
1562
+ "required": true,
1563
+ "type": "string",
1564
+ "in": "path"
1565
+ }]
792
1566
  },
793
1567
  "get-document-tags": {
794
1568
  serviceClass: "Documents",
795
1569
  operationId: "getDocumentTags",
796
- description: "Get document tags",
1570
+ description: "Returns all tags attached to the document",
1571
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/documents",
797
1572
  pathParams: ["document_id"],
798
- queryParams: []
1573
+ queryParams: [],
1574
+ flags: [{
1575
+ "name": "document_id",
1576
+ "description": "Document ID",
1577
+ "required": true,
1578
+ "type": "string",
1579
+ "in": "path"
1580
+ }]
799
1581
  },
800
1582
  "replace-document-tags": {
801
1583
  serviceClass: "Documents",
802
1584
  operationId: "replaceDocumentTags",
803
- description: "Replace document tags",
1585
+ description: "Replaces all tags on the document with the provided tags (not merged)",
1586
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/documents",
804
1587
  pathParams: ["document_id"],
805
- queryParams: []
1588
+ queryParams: [],
1589
+ flags: [{
1590
+ "name": "document_id",
1591
+ "description": "Document ID",
1592
+ "required": true,
1593
+ "type": "string",
1594
+ "in": "path"
1595
+ }]
806
1596
  },
807
1597
  "merge-document-tags": {
808
1598
  serviceClass: "Documents",
809
1599
  operationId: "mergeDocumentTags",
810
- description: "Merge document tags",
1600
+ description: "Merges provided tags with existing tags (existing tags are preserved unless overridden)",
1601
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/documents",
811
1602
  pathParams: ["document_id"],
812
- queryParams: []
1603
+ queryParams: [],
1604
+ flags: [{
1605
+ "name": "document_id",
1606
+ "description": "Document ID",
1607
+ "required": true,
1608
+ "type": "string",
1609
+ "in": "path"
1610
+ }]
813
1611
  },
814
1612
  "list-files": {
815
1613
  serviceClass: "Files",
816
1614
  operationId: "listFiles",
817
- description: "List all files",
1615
+ description: "Returns a list of all stored files",
1616
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/files",
818
1617
  pathParams: [],
819
- queryParams: ["project_id", "limit", "offset"]
1618
+ queryParams: ["project_id", "limit", "offset"],
1619
+ flags: [{
1620
+ "name": "project_id",
1621
+ "description": "Filter files by project ID",
1622
+ "required": false,
1623
+ "type": "string",
1624
+ "in": "query"
1625
+ }, {
1626
+ "name": "limit",
1627
+ "description": "Maximum number of results to return",
1628
+ "required": false,
1629
+ "type": "integer",
1630
+ "in": "query"
1631
+ }, {
1632
+ "name": "offset",
1633
+ "description": "Number of results to skip",
1634
+ "required": false,
1635
+ "type": "integer",
1636
+ "in": "query"
1637
+ }]
820
1638
  },
821
1639
  "create-file": {
822
1640
  serviceClass: "Files",
823
1641
  operationId: "createFile",
824
- description: "Create a file",
1642
+ description: "Creates a new file record in the system",
1643
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/files",
825
1644
  pathParams: [],
826
- queryParams: []
1645
+ queryParams: [],
1646
+ flags: [{
1647
+ "name": "project_id",
1648
+ "description": "Public ID of the project",
1649
+ "required": true,
1650
+ "type": "string",
1651
+ "in": "body"
1652
+ }, {
1653
+ "name": "path",
1654
+ "description": "Logical path within the project (e.g. /images/logo.png). Defaults to /filename if omitted.",
1655
+ "required": false,
1656
+ "type": "string",
1657
+ "in": "body"
1658
+ }, {
1659
+ "name": "filename",
1660
+ "description": "Name of the file",
1661
+ "required": false,
1662
+ "type": "string",
1663
+ "in": "body"
1664
+ }, {
1665
+ "name": "content_type",
1666
+ "description": "MIME type of the file",
1667
+ "required": false,
1668
+ "type": "string",
1669
+ "in": "body"
1670
+ }, {
1671
+ "name": "size",
1672
+ "description": "File size in bytes",
1673
+ "required": false,
1674
+ "type": "integer",
1675
+ "in": "body"
1676
+ }, {
1677
+ "name": "storage_type",
1678
+ "description": "Storage backend type",
1679
+ "required": true,
1680
+ "type": "string",
1681
+ "in": "body"
1682
+ }, {
1683
+ "name": "storage_path",
1684
+ "description": "Path where the file is stored",
1685
+ "required": true,
1686
+ "type": "string",
1687
+ "in": "body"
1688
+ }, {
1689
+ "name": "metadata",
1690
+ "description": "JSON string with additional metadata",
1691
+ "required": false,
1692
+ "type": "string",
1693
+ "in": "body"
1694
+ }]
827
1695
  },
828
1696
  "upload-file": {
829
1697
  serviceClass: "Files",
830
1698
  operationId: "uploadFile",
831
- description: "Upload a file",
1699
+ description: "Uploads a file to the server and stores it in the configured storage directory",
1700
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/files",
832
1701
  pathParams: [],
833
- queryParams: []
1702
+ queryParams: [],
1703
+ flags: []
834
1704
  },
835
1705
  "upload-file-base64": {
836
1706
  serviceClass: "Files",
837
1707
  operationId: "uploadFileBase64",
838
- description: "Upload a file using base64 encoding",
1708
+ description: "Uploads a file to the server using base64-encoded content",
1709
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/files",
839
1710
  pathParams: [],
840
- queryParams: []
1711
+ queryParams: [],
1712
+ flags: []
841
1713
  },
842
1714
  "get-file": {
843
1715
  serviceClass: "Files",
844
1716
  operationId: "getFile",
845
- description: "Get a file by ID",
1717
+ description: "Returns the data and metadata of a specific file",
1718
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/files",
846
1719
  pathParams: ["file_id"],
847
- queryParams: []
1720
+ queryParams: [],
1721
+ flags: [{
1722
+ "name": "file_id",
1723
+ "description": "File ID",
1724
+ "required": true,
1725
+ "type": "string",
1726
+ "in": "path"
1727
+ }]
848
1728
  },
849
1729
  "delete-file": {
850
1730
  serviceClass: "Files",
851
1731
  operationId: "deleteFile",
852
- description: "Delete a file",
1732
+ description: "Removes a file from the system by ID",
1733
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/files",
853
1734
  pathParams: ["file_id"],
854
- queryParams: []
1735
+ queryParams: [],
1736
+ flags: [{
1737
+ "name": "file_id",
1738
+ "description": "ID of the file to delete",
1739
+ "required": true,
1740
+ "type": "string",
1741
+ "in": "path"
1742
+ }]
855
1743
  },
856
1744
  "download-file": {
857
1745
  serviceClass: "Files",
858
1746
  operationId: "downloadFile",
859
- description: "Download a file",
1747
+ description: "Streams the file content to the client",
1748
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/files",
860
1749
  pathParams: ["file_id"],
861
- queryParams: []
1750
+ queryParams: [],
1751
+ flags: [{
1752
+ "name": "file_id",
1753
+ "description": "File ID",
1754
+ "required": true,
1755
+ "type": "string",
1756
+ "in": "path"
1757
+ }]
862
1758
  },
863
1759
  "update-file-metadata": {
864
1760
  serviceClass: "Files",
865
1761
  operationId: "updateFileMetadata",
866
- description: "Update file metadata",
1762
+ description: "Updates the metadata field of a file",
1763
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/files",
867
1764
  pathParams: ["file_id"],
868
- queryParams: []
1765
+ queryParams: [],
1766
+ flags: [{
1767
+ "name": "file_id",
1768
+ "description": "File ID",
1769
+ "required": true,
1770
+ "type": "string",
1771
+ "in": "path"
1772
+ }, {
1773
+ "name": "metadata",
1774
+ "description": "New metadata as a JSON string",
1775
+ "required": false,
1776
+ "type": "string",
1777
+ "in": "body"
1778
+ }, {
1779
+ "name": "filename",
1780
+ "description": "New filename for the file",
1781
+ "required": false,
1782
+ "type": "string",
1783
+ "in": "body"
1784
+ }]
869
1785
  },
870
1786
  "download-file-base64": {
871
1787
  serviceClass: "Files",
872
1788
  operationId: "downloadFileBase64",
873
- description: "Download file as base64",
1789
+ description: "Returns the file content encoded as base64",
1790
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/files",
874
1791
  pathParams: ["file_id"],
875
- queryParams: []
1792
+ queryParams: [],
1793
+ flags: [{
1794
+ "name": "file_id",
1795
+ "description": "File ID",
1796
+ "required": true,
1797
+ "type": "string",
1798
+ "in": "path"
1799
+ }]
876
1800
  },
877
1801
  "get-file-tags": {
878
1802
  serviceClass: "Files",
879
1803
  operationId: "getFileTags",
880
- description: "Get file tags",
1804
+ description: "Returns all tags attached to the file",
1805
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/files",
881
1806
  pathParams: ["file_id"],
882
- queryParams: []
1807
+ queryParams: [],
1808
+ flags: [{
1809
+ "name": "file_id",
1810
+ "description": "File ID",
1811
+ "required": true,
1812
+ "type": "string",
1813
+ "in": "path"
1814
+ }]
883
1815
  },
884
1816
  "replace-file-tags": {
885
1817
  serviceClass: "Files",
886
1818
  operationId: "replaceFileTags",
887
- description: "Replace file tags",
1819
+ description: "Replaces all tags on the file with the provided tags",
1820
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/files",
888
1821
  pathParams: ["file_id"],
889
- queryParams: []
1822
+ queryParams: [],
1823
+ flags: [{
1824
+ "name": "file_id",
1825
+ "description": "File ID",
1826
+ "required": true,
1827
+ "type": "string",
1828
+ "in": "path"
1829
+ }]
890
1830
  },
891
1831
  "merge-file-tags": {
892
1832
  serviceClass: "Files",
893
1833
  operationId: "mergeFileTags",
894
- description: "Merge file tags",
1834
+ description: "Merges provided tags with existing tags",
1835
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/files",
895
1836
  pathParams: ["file_id"],
896
- queryParams: []
1837
+ queryParams: [],
1838
+ flags: [{
1839
+ "name": "file_id",
1840
+ "description": "File ID",
1841
+ "required": true,
1842
+ "type": "string",
1843
+ "in": "path"
1844
+ }]
1845
+ },
1846
+ "validate-formation": {
1847
+ serviceClass: "Formations",
1848
+ operationId: "validateFormation",
1849
+ description: "Validates a formation template without creating any resources. Returns a list of errors and warnings. Accepts the template as a JSON object or as a YAML/JSON string.",
1850
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/formations",
1851
+ pathParams: [],
1852
+ queryParams: [],
1853
+ flags: [{
1854
+ "name": "template",
1855
+ "description": "",
1856
+ "required": true,
1857
+ "type": "string",
1858
+ "in": "body"
1859
+ }]
1860
+ },
1861
+ "plan-formation": {
1862
+ serviceClass: "Formations",
1863
+ operationId: "planFormation",
1864
+ description: "Computes a diff between the desired template and the current stack state without making any changes. Returns the list of planned actions.",
1865
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/formations",
1866
+ pathParams: [],
1867
+ queryParams: [],
1868
+ flags: [{
1869
+ "name": "project_id",
1870
+ "description": "Project ID",
1871
+ "required": true,
1872
+ "type": "string",
1873
+ "in": "body"
1874
+ }, {
1875
+ "name": "formation_id",
1876
+ "description": "Existing formation ID to compare against. Omit for new formation planning.",
1877
+ "required": false,
1878
+ "type": "string",
1879
+ "in": "body"
1880
+ }, {
1881
+ "name": "template",
1882
+ "description": "",
1883
+ "required": true,
1884
+ "type": "string",
1885
+ "in": "body"
1886
+ }, {
1887
+ "name": "parameters",
1888
+ "description": "Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`.\n",
1889
+ "required": false,
1890
+ "type": "object",
1891
+ "in": "body"
1892
+ }]
1893
+ },
1894
+ "list-formations": {
1895
+ serviceClass: "Formations",
1896
+ operationId: "listFormations",
1897
+ description: "Returns all formation stacks for a project",
1898
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/formations",
1899
+ pathParams: [],
1900
+ queryParams: ["project_id"],
1901
+ flags: [{
1902
+ "name": "project_id",
1903
+ "description": "Project ID (required if not using project key auth)",
1904
+ "required": false,
1905
+ "type": "string",
1906
+ "in": "query"
1907
+ }]
1908
+ },
1909
+ "create-formation": {
1910
+ serviceClass: "Formations",
1911
+ operationId: "createFormation",
1912
+ description: "Validates the template, creates the formation record, then provisions all declared resources in dependency order.",
1913
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/formations",
1914
+ pathParams: [],
1915
+ queryParams: [],
1916
+ flags: [{
1917
+ "name": "project_id",
1918
+ "description": "Project ID",
1919
+ "required": true,
1920
+ "type": "string",
1921
+ "in": "body"
1922
+ }, {
1923
+ "name": "name",
1924
+ "description": "Human-readable name for the formation stack",
1925
+ "required": true,
1926
+ "type": "string",
1927
+ "in": "body"
1928
+ }, {
1929
+ "name": "template",
1930
+ "description": "",
1931
+ "required": true,
1932
+ "type": "string",
1933
+ "in": "body"
1934
+ }, {
1935
+ "name": "parameters",
1936
+ "description": "Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`. Required parameters (those without a default) must be provided here.\n",
1937
+ "required": false,
1938
+ "type": "object",
1939
+ "in": "body"
1940
+ }, {
1941
+ "name": "metadata",
1942
+ "description": "",
1943
+ "required": false,
1944
+ "type": "object",
1945
+ "in": "body"
1946
+ }]
1947
+ },
1948
+ "get-formation": {
1949
+ serviceClass: "Formations",
1950
+ operationId: "getFormation",
1951
+ description: "Returns the formation stack including its current resources.",
1952
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/formations",
1953
+ pathParams: ["formation_id"],
1954
+ queryParams: [],
1955
+ flags: [{
1956
+ "name": "formation_id",
1957
+ "description": "",
1958
+ "required": true,
1959
+ "type": "string",
1960
+ "in": "path"
1961
+ }]
1962
+ },
1963
+ "update-formation": {
1964
+ serviceClass: "Formations",
1965
+ operationId: "updateFormation",
1966
+ description: "Applies a new template to the formation. Resources are created, updated, or deleted to reconcile the current state with the desired state.",
1967
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/formations",
1968
+ pathParams: ["formation_id"],
1969
+ queryParams: [],
1970
+ flags: [{
1971
+ "name": "formation_id",
1972
+ "description": "",
1973
+ "required": true,
1974
+ "type": "string",
1975
+ "in": "path"
1976
+ }, {
1977
+ "name": "template",
1978
+ "description": "",
1979
+ "required": false,
1980
+ "type": "string",
1981
+ "in": "body"
1982
+ }, {
1983
+ "name": "parameters",
1984
+ "description": "Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`. Required parameters (those without a default) must be provided here.\n",
1985
+ "required": false,
1986
+ "type": "object",
1987
+ "in": "body"
1988
+ }, {
1989
+ "name": "metadata",
1990
+ "description": "",
1991
+ "required": false,
1992
+ "type": "object",
1993
+ "in": "body"
1994
+ }]
1995
+ },
1996
+ "delete-formation": {
1997
+ serviceClass: "Formations",
1998
+ operationId: "deleteFormation",
1999
+ description: "Deletes the formation stack and all its managed resources in reverse dependency order.",
2000
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/formations",
2001
+ pathParams: ["formation_id"],
2002
+ queryParams: [],
2003
+ flags: [{
2004
+ "name": "formation_id",
2005
+ "description": "",
2006
+ "required": true,
2007
+ "type": "string",
2008
+ "in": "path"
2009
+ }]
2010
+ },
2011
+ "list-formation-events": {
2012
+ serviceClass: "Formations",
2013
+ operationId: "listFormationEvents",
2014
+ description: "Returns all operations (create, update, delete) with their event logs for the formation, ordered chronologically.",
2015
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/formations",
2016
+ pathParams: ["formation_id"],
2017
+ queryParams: [],
2018
+ flags: [{
2019
+ "name": "formation_id",
2020
+ "description": "",
2021
+ "required": true,
2022
+ "type": "string",
2023
+ "in": "path"
2024
+ }]
897
2025
  },
898
2026
  "search-knowledge": {
899
2027
  serviceClass: "Knowledge",
900
2028
  operationId: "searchKnowledge",
901
- description: "Search knowledge",
2029
+ description: "Searches across documents and memory entries using semantic search, file paths, document IDs, or memory IDs/tags. At least one of `query`, `document_paths`, `document_ids`, `memory_ids`, or `memory_tags` must be provided.",
2030
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/knowledge",
902
2031
  pathParams: [],
903
- queryParams: []
2032
+ queryParams: [],
2033
+ flags: [{
2034
+ "name": "project_id",
2035
+ "description": "Limit search to a specific project",
2036
+ "required": false,
2037
+ "type": "string",
2038
+ "in": "body"
2039
+ }, {
2040
+ "name": "query",
2041
+ "description": "Semantic search query text",
2042
+ "required": false,
2043
+ "type": "string",
2044
+ "in": "body"
2045
+ }, {
2046
+ "name": "min_score",
2047
+ "description": "Minimum similarity score (0\u20131). Results with lower scores are excluded. Only applies when `query` is provided.",
2048
+ "required": false,
2049
+ "type": "number",
2050
+ "in": "body"
2051
+ }, {
2052
+ "name": "limit",
2053
+ "description": "Maximum number of results to return (default 10)",
2054
+ "required": false,
2055
+ "type": "integer",
2056
+ "in": "body"
2057
+ }, {
2058
+ "name": "memory_ids",
2059
+ "description": "Search entries within these specific memories",
2060
+ "required": false,
2061
+ "type": "array",
2062
+ "in": "body"
2063
+ }, {
2064
+ "name": "memory_tags",
2065
+ "description": "Search entries in memories whose tags match any of these patterns (glob supported)",
2066
+ "required": false,
2067
+ "type": "array",
2068
+ "in": "body"
2069
+ }, {
2070
+ "name": "document_paths",
2071
+ "description": "Filter results to documents whose file path starts with one of these prefixes",
2072
+ "required": false,
2073
+ "type": "array",
2074
+ "in": "body"
2075
+ }, {
2076
+ "name": "document_ids",
2077
+ "description": "Filter results to specific document IDs",
2078
+ "required": false,
2079
+ "type": "array",
2080
+ "in": "body"
2081
+ }]
904
2082
  },
905
2083
  "list-memories": {
906
2084
  serviceClass: "Memories",
907
2085
  operationId: "listMemories",
908
- description: "List memories",
2086
+ description: "Returns a list of memory configurations for a project",
2087
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/memories",
909
2088
  pathParams: [],
910
- queryParams: ["project_id", "tags"]
2089
+ queryParams: ["project_id", "tags"],
2090
+ flags: [{
2091
+ "name": "project_id",
2092
+ "description": "Project ID (required if not using project key auth)",
2093
+ "required": false,
2094
+ "type": "string",
2095
+ "in": "query"
2096
+ }, {
2097
+ "name": "tags",
2098
+ "description": "Filter memories by tag patterns. Supports glob syntax (`*` matches any substring, `?` matches any single character). Multiple values are ORed \u2014 a memory is returned if any of its tags match any of the provided patterns. Omit to return all memories.\n",
2099
+ "required": false,
2100
+ "type": "array",
2101
+ "in": "query"
2102
+ }]
911
2103
  },
912
2104
  "create-memory": {
913
2105
  serviceClass: "Memories",
914
2106
  operationId: "createMemory",
915
- description: "Create a memory",
2107
+ description: "Creates a new memory configuration in a project",
2108
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/memories",
916
2109
  pathParams: [],
917
- queryParams: []
2110
+ queryParams: [],
2111
+ flags: [{
2112
+ "name": "project_id",
2113
+ "description": "Project ID (required if not using project key auth)",
2114
+ "required": false,
2115
+ "type": "string",
2116
+ "in": "body"
2117
+ }, {
2118
+ "name": "name",
2119
+ "description": "Memory name",
2120
+ "required": true,
2121
+ "type": "string",
2122
+ "in": "body"
2123
+ }, {
2124
+ "name": "description",
2125
+ "description": "Optional description",
2126
+ "required": false,
2127
+ "type": "string",
2128
+ "in": "body"
2129
+ }, {
2130
+ "name": "tags",
2131
+ "description": "Optional list of tags for filtering in knowledge search",
2132
+ "required": false,
2133
+ "type": "array",
2134
+ "in": "body"
2135
+ }]
918
2136
  },
919
2137
  "get-memory": {
920
2138
  serviceClass: "Memories",
921
2139
  operationId: "getMemory",
922
- description: "Get a memory",
2140
+ description: "Returns a single memory configuration by ID",
2141
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/memories",
923
2142
  pathParams: ["memory_id"],
924
- queryParams: []
2143
+ queryParams: [],
2144
+ flags: [{
2145
+ "name": "memory_id",
2146
+ "description": "",
2147
+ "required": true,
2148
+ "type": "string",
2149
+ "in": "path"
2150
+ }]
925
2151
  },
926
2152
  "update-memory": {
927
2153
  serviceClass: "Memories",
928
2154
  operationId: "updateMemory",
929
- description: "Update a memory",
2155
+ description: "Updates an existing memory configuration",
2156
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/memories",
930
2157
  pathParams: ["memory_id"],
931
- queryParams: []
2158
+ queryParams: [],
2159
+ flags: [{
2160
+ "name": "memory_id",
2161
+ "description": "",
2162
+ "required": true,
2163
+ "type": "string",
2164
+ "in": "path"
2165
+ }, {
2166
+ "name": "name",
2167
+ "description": "Memory name",
2168
+ "required": false,
2169
+ "type": "string",
2170
+ "in": "body"
2171
+ }, {
2172
+ "name": "description",
2173
+ "description": "Optional description",
2174
+ "required": false,
2175
+ "type": "string",
2176
+ "in": "body"
2177
+ }, {
2178
+ "name": "tags",
2179
+ "description": "Optional list of tags for filtering in knowledge search",
2180
+ "required": false,
2181
+ "type": "array",
2182
+ "in": "body"
2183
+ }]
932
2184
  },
933
2185
  "delete-memory": {
934
2186
  serviceClass: "Memories",
935
2187
  operationId: "deleteMemory",
936
- description: "Delete a memory",
2188
+ description: "Deletes a memory configuration",
2189
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/memories",
937
2190
  pathParams: ["memory_id"],
938
- queryParams: []
2191
+ queryParams: [],
2192
+ flags: [{
2193
+ "name": "memory_id",
2194
+ "description": "",
2195
+ "required": true,
2196
+ "type": "string",
2197
+ "in": "path"
2198
+ }]
939
2199
  },
940
2200
  "list-memory-entries": {
941
2201
  serviceClass: "MemoryEntries",
942
2202
  operationId: "listMemoryEntries",
943
- description: "List memory entries",
2203
+ description: "Returns all entries in a memory container",
2204
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/memoryEntries",
944
2205
  pathParams: ["memory_id"],
945
- queryParams: []
2206
+ queryParams: [],
2207
+ flags: [{
2208
+ "name": "memory_id",
2209
+ "description": "",
2210
+ "required": true,
2211
+ "type": "string",
2212
+ "in": "path"
2213
+ }]
946
2214
  },
947
2215
  "create-memory-entry": {
948
2216
  serviceClass: "MemoryEntries",
949
2217
  operationId: "createMemoryEntry",
950
- description: "Create a memory entry",
2218
+ description: "Creates a new entry in the specified memory container. Automatically generates an embedding for semantic search.",
2219
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/memoryEntries",
951
2220
  pathParams: ["memory_id"],
952
- queryParams: []
2221
+ queryParams: [],
2222
+ flags: [{
2223
+ "name": "memory_id",
2224
+ "description": "",
2225
+ "required": true,
2226
+ "type": "string",
2227
+ "in": "path"
2228
+ }, {
2229
+ "name": "content",
2230
+ "description": "The text content of the memory entry",
2231
+ "required": true,
2232
+ "type": "string",
2233
+ "in": "body"
2234
+ }, {
2235
+ "name": "source",
2236
+ "description": "How this entry was created",
2237
+ "required": false,
2238
+ "type": "string",
2239
+ "in": "body"
2240
+ }, {
2241
+ "name": "duplicate_threshold",
2242
+ "description": "Cosine similarity score at or above which the incoming content is considered a duplicate and skipped (default 0.95)",
2243
+ "required": false,
2244
+ "type": "number",
2245
+ "in": "body"
2246
+ }, {
2247
+ "name": "update_threshold",
2248
+ "description": "Cosine similarity score at or above which the incoming content is appended to the existing entry (default 0.75)",
2249
+ "required": false,
2250
+ "type": "number",
2251
+ "in": "body"
2252
+ }]
953
2253
  },
954
2254
  "get-memory-entry": {
955
2255
  serviceClass: "MemoryEntries",
956
2256
  operationId: "getMemoryEntry",
957
- description: "Get a memory entry",
2257
+ description: "Returns a single memory entry by ID",
2258
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/memoryEntries",
958
2259
  pathParams: ["memory_id", "entry_id"],
959
- queryParams: []
2260
+ queryParams: [],
2261
+ flags: [{
2262
+ "name": "memory_id",
2263
+ "description": "",
2264
+ "required": true,
2265
+ "type": "string",
2266
+ "in": "path"
2267
+ }, {
2268
+ "name": "entry_id",
2269
+ "description": "",
2270
+ "required": true,
2271
+ "type": "string",
2272
+ "in": "path"
2273
+ }]
960
2274
  },
961
2275
  "update-memory-entry": {
962
2276
  serviceClass: "MemoryEntries",
963
2277
  operationId: "updateMemoryEntry",
964
- description: "Update a memory entry",
2278
+ description: "Updates an existing memory entry. Regenerates the embedding if content changes.",
2279
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/memoryEntries",
965
2280
  pathParams: ["memory_id", "entry_id"],
966
- queryParams: []
2281
+ queryParams: [],
2282
+ flags: [{
2283
+ "name": "memory_id",
2284
+ "description": "",
2285
+ "required": true,
2286
+ "type": "string",
2287
+ "in": "path"
2288
+ }, {
2289
+ "name": "entry_id",
2290
+ "description": "",
2291
+ "required": true,
2292
+ "type": "string",
2293
+ "in": "path"
2294
+ }, {
2295
+ "name": "content",
2296
+ "description": "Updated text content",
2297
+ "required": false,
2298
+ "type": "string",
2299
+ "in": "body"
2300
+ }]
967
2301
  },
968
2302
  "delete-memory-entry": {
969
2303
  serviceClass: "MemoryEntries",
970
2304
  operationId: "deleteMemoryEntry",
971
- description: "Delete a memory entry",
2305
+ description: "Deletes a memory entry",
2306
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/memoryEntries",
972
2307
  pathParams: ["memory_id", "entry_id"],
973
- queryParams: []
2308
+ queryParams: [],
2309
+ flags: [{
2310
+ "name": "memory_id",
2311
+ "description": "",
2312
+ "required": true,
2313
+ "type": "string",
2314
+ "in": "path"
2315
+ }, {
2316
+ "name": "entry_id",
2317
+ "description": "",
2318
+ "required": true,
2319
+ "type": "string",
2320
+ "in": "path"
2321
+ }]
974
2322
  },
975
2323
  "list-policies": {
976
2324
  serviceClass: "Policies",
977
2325
  operationId: "listPolicies",
978
- description: "List all policies",
2326
+ description: "Returns a list of all global policies. Requires admin role.",
2327
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/policies",
979
2328
  pathParams: [],
980
- queryParams: []
2329
+ queryParams: [],
2330
+ flags: []
981
2331
  },
982
2332
  "create-policy": {
983
2333
  serviceClass: "Policies",
984
2334
  operationId: "createPolicy",
985
- description: "Create a policy",
2335
+ description: "Creates a new global policy. Requires admin role.",
2336
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/policies",
986
2337
  pathParams: [],
987
- queryParams: []
2338
+ queryParams: [],
2339
+ flags: [{
2340
+ "name": "name",
2341
+ "description": "",
2342
+ "required": false,
2343
+ "type": "string",
2344
+ "in": "body"
2345
+ }, {
2346
+ "name": "description",
2347
+ "description": "",
2348
+ "required": false,
2349
+ "type": "string",
2350
+ "in": "body"
2351
+ }, {
2352
+ "name": "document",
2353
+ "description": "",
2354
+ "required": true,
2355
+ "type": "string",
2356
+ "in": "body"
2357
+ }]
988
2358
  },
989
2359
  "get-policy": {
990
2360
  serviceClass: "Policies",
991
2361
  operationId: "getPolicy",
992
- description: "Get a policy",
2362
+ description: "Returns details of a specific policy. Requires admin role.",
2363
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/policies",
993
2364
  pathParams: ["policy_id"],
994
- queryParams: []
2365
+ queryParams: [],
2366
+ flags: [{
2367
+ "name": "policy_id",
2368
+ "description": "Policy public ID (pol_ prefix)",
2369
+ "required": true,
2370
+ "type": "string",
2371
+ "in": "path"
2372
+ }]
995
2373
  },
996
2374
  "update-policy": {
997
2375
  serviceClass: "Policies",
998
2376
  operationId: "updatePolicy",
999
- description: "Update a policy",
2377
+ description: "Updates an existing global policy. Requires admin role.",
2378
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/policies",
1000
2379
  pathParams: ["policy_id"],
1001
- queryParams: []
2380
+ queryParams: [],
2381
+ flags: [{
2382
+ "name": "policy_id",
2383
+ "description": "Policy public ID (pol_ prefix)",
2384
+ "required": true,
2385
+ "type": "string",
2386
+ "in": "path"
2387
+ }, {
2388
+ "name": "name",
2389
+ "description": "",
2390
+ "required": false,
2391
+ "type": "string",
2392
+ "in": "body"
2393
+ }, {
2394
+ "name": "description",
2395
+ "description": "",
2396
+ "required": false,
2397
+ "type": "string",
2398
+ "in": "body"
2399
+ }, {
2400
+ "name": "document",
2401
+ "description": "",
2402
+ "required": true,
2403
+ "type": "string",
2404
+ "in": "body"
2405
+ }]
1002
2406
  },
1003
2407
  "delete-policy": {
1004
2408
  serviceClass: "Policies",
1005
2409
  operationId: "deletePolicy",
1006
- description: "Delete a policy",
2410
+ description: "Deletes a global policy. Requires admin role.",
2411
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/policies",
1007
2412
  pathParams: ["policy_id"],
1008
- queryParams: []
2413
+ queryParams: [],
2414
+ flags: [{
2415
+ "name": "policy_id",
2416
+ "description": "Policy public ID (pol_ prefix)",
2417
+ "required": true,
2418
+ "type": "string",
2419
+ "in": "path"
2420
+ }]
1009
2421
  },
1010
2422
  "create-project": {
1011
2423
  serviceClass: "Projects",
1012
2424
  operationId: "createProject",
1013
- description: "Create a project",
2425
+ description: "Creates a new project. Requires admin role.",
2426
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/projects",
1014
2427
  pathParams: [],
1015
- queryParams: []
2428
+ queryParams: [],
2429
+ flags: [{
2430
+ "name": "name",
2431
+ "description": "",
2432
+ "required": true,
2433
+ "type": "string",
2434
+ "in": "body"
2435
+ }]
1016
2436
  },
1017
2437
  "get-project": {
1018
2438
  serviceClass: "Projects",
1019
2439
  operationId: "getProject",
1020
- description: "Get a project",
2440
+ description: "Returns details of a specific project.",
2441
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/projects",
1021
2442
  pathParams: ["project_id"],
1022
- queryParams: []
2443
+ queryParams: [],
2444
+ flags: [{
2445
+ "name": "project_id",
2446
+ "description": "Project public ID (proj_ prefix)",
2447
+ "required": true,
2448
+ "type": "string",
2449
+ "in": "path"
2450
+ }]
1023
2451
  },
1024
2452
  "delete-project": {
1025
2453
  serviceClass: "Projects",
1026
2454
  operationId: "deleteProject",
1027
- description: "Delete a project",
2455
+ description: "Deletes a project. Requires admin role.",
2456
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/projects",
1028
2457
  pathParams: ["project_id"],
1029
- queryParams: []
2458
+ queryParams: [],
2459
+ flags: [{
2460
+ "name": "project_id",
2461
+ "description": "Project public ID (proj_ prefix)",
2462
+ "required": true,
2463
+ "type": "string",
2464
+ "in": "path"
2465
+ }]
1030
2466
  },
1031
2467
  "list-secrets": {
1032
2468
  serviceClass: "Secrets",
1033
2469
  operationId: "listSecrets",
1034
- description: "List secrets",
2470
+ description: "Returns a list of secrets for a project",
2471
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/secrets",
1035
2472
  pathParams: [],
1036
- queryParams: ["project_id", "limit", "offset"]
2473
+ queryParams: ["project_id", "limit", "offset"],
2474
+ flags: [{
2475
+ "name": "project_id",
2476
+ "description": "Project ID (required if not using project key auth)",
2477
+ "required": false,
2478
+ "type": "string",
2479
+ "in": "query"
2480
+ }, {
2481
+ "name": "limit",
2482
+ "description": "Number of results per page",
2483
+ "required": false,
2484
+ "type": "integer",
2485
+ "in": "query"
2486
+ }, {
2487
+ "name": "offset",
2488
+ "description": "Number of results to skip",
2489
+ "required": false,
2490
+ "type": "integer",
2491
+ "in": "query"
2492
+ }]
1037
2493
  },
1038
2494
  "create-secret": {
1039
2495
  serviceClass: "Secrets",
1040
2496
  operationId: "createSecret",
1041
- description: "Create a secret",
2497
+ description: "Creates a new encrypted secret in a project",
2498
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/secrets",
1042
2499
  pathParams: [],
1043
- queryParams: []
2500
+ queryParams: [],
2501
+ flags: [{
2502
+ "name": "project_id",
2503
+ "description": "Project ID (required if not using project key auth)",
2504
+ "required": false,
2505
+ "type": "string",
2506
+ "in": "body"
2507
+ }, {
2508
+ "name": "name",
2509
+ "description": "Secret name",
2510
+ "required": true,
2511
+ "type": "string",
2512
+ "in": "body"
2513
+ }, {
2514
+ "name": "value",
2515
+ "description": "Secret value (will be encrypted)",
2516
+ "required": true,
2517
+ "type": "string",
2518
+ "in": "body"
2519
+ }]
1044
2520
  },
1045
2521
  "get-secret": {
1046
2522
  serviceClass: "Secrets",
1047
2523
  operationId: "getSecret",
1048
- description: "Get a secret",
2524
+ description: "Returns a specific secret",
2525
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/secrets",
1049
2526
  pathParams: ["secret_id"],
1050
- queryParams: []
2527
+ queryParams: [],
2528
+ flags: [{
2529
+ "name": "secret_id",
2530
+ "description": "Secret ID",
2531
+ "required": true,
2532
+ "type": "string",
2533
+ "in": "path"
2534
+ }]
1051
2535
  },
1052
2536
  "update-secret": {
1053
2537
  serviceClass: "Secrets",
1054
2538
  operationId: "updateSecret",
1055
- description: "Update a secret",
2539
+ description: "Updates a secret's name and/or value",
2540
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/secrets",
1056
2541
  pathParams: ["secret_id"],
1057
- queryParams: []
2542
+ queryParams: [],
2543
+ flags: [{
2544
+ "name": "secret_id",
2545
+ "description": "Secret ID",
2546
+ "required": true,
2547
+ "type": "string",
2548
+ "in": "path"
2549
+ }, {
2550
+ "name": "name",
2551
+ "description": "New secret name",
2552
+ "required": false,
2553
+ "type": "string",
2554
+ "in": "body"
2555
+ }, {
2556
+ "name": "value",
2557
+ "description": "New secret value",
2558
+ "required": false,
2559
+ "type": "string",
2560
+ "in": "body"
2561
+ }]
1058
2562
  },
1059
2563
  "delete-secret": {
1060
2564
  serviceClass: "Secrets",
1061
2565
  operationId: "deleteSecret",
1062
- description: "Delete a secret",
2566
+ description: "Deletes a secret",
2567
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/secrets",
1063
2568
  pathParams: ["secret_id"],
1064
- queryParams: []
2569
+ queryParams: [],
2570
+ flags: [{
2571
+ "name": "secret_id",
2572
+ "description": "Secret ID",
2573
+ "required": true,
2574
+ "type": "string",
2575
+ "in": "path"
2576
+ }]
1065
2577
  },
1066
2578
  "list-agent-sessions": {
1067
2579
  serviceClass: "Sessions",
1068
2580
  operationId: "listAgentSessions",
1069
- description: "List sessions",
2581
+ description: "Returns sessions for the specified agent, optionally filtered by actorId and status.",
2582
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/sessions",
1070
2583
  pathParams: ["agent_id"],
1071
- queryParams: ["actor_id", "status", "limit", "offset"]
2584
+ queryParams: ["actor_id", "status", "limit", "offset"],
2585
+ flags: [{
2586
+ "name": "agent_id",
2587
+ "description": "Agent public ID",
2588
+ "required": true,
2589
+ "type": "string",
2590
+ "in": "path"
2591
+ }, {
2592
+ "name": "actor_id",
2593
+ "description": "Filter by actor public ID",
2594
+ "required": false,
2595
+ "type": "string",
2596
+ "in": "query"
2597
+ }, {
2598
+ "name": "status",
2599
+ "description": "Filter by session status (open or closed)",
2600
+ "required": false,
2601
+ "type": "string",
2602
+ "in": "query"
2603
+ }, {
2604
+ "name": "limit",
2605
+ "description": "",
2606
+ "required": false,
2607
+ "type": "integer",
2608
+ "in": "query"
2609
+ }, {
2610
+ "name": "offset",
2611
+ "description": "",
2612
+ "required": false,
2613
+ "type": "integer",
2614
+ "in": "query"
2615
+ }]
1072
2616
  },
1073
2617
  "create-agent-session": {
1074
2618
  serviceClass: "Sessions",
1075
2619
  operationId: "createAgentSession",
1076
- description: "Create a session",
2620
+ description: "Creates a new session for the specified agent. Internally creates a conversation and two actors (agent + user) so the caller only needs this single call to start interacting with the agent.",
2621
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/sessions",
1077
2622
  pathParams: ["agent_id"],
1078
- queryParams: []
2623
+ queryParams: [],
2624
+ flags: [{
2625
+ "name": "agent_id",
2626
+ "description": "Agent public ID",
2627
+ "required": true,
2628
+ "type": "string",
2629
+ "in": "path"
2630
+ }]
1079
2631
  },
1080
2632
  "get-agent-session": {
1081
2633
  serviceClass: "Sessions",
1082
2634
  operationId: "getAgentSession",
1083
- description: "Get a session",
2635
+ description: "Returns details of a single session.",
2636
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/sessions",
1084
2637
  pathParams: ["agent_id", "session_id"],
1085
- queryParams: []
2638
+ queryParams: [],
2639
+ flags: [{
2640
+ "name": "agent_id",
2641
+ "description": "Agent public ID",
2642
+ "required": true,
2643
+ "type": "string",
2644
+ "in": "path"
2645
+ }, {
2646
+ "name": "session_id",
2647
+ "description": "Session public ID",
2648
+ "required": true,
2649
+ "type": "string",
2650
+ "in": "path"
2651
+ }]
1086
2652
  },
1087
2653
  "update-session": {
1088
2654
  serviceClass: "Sessions",
1089
2655
  operationId: "updateSession",
1090
- description: "Update a session",
2656
+ description: "Updates the session name and/or status.",
2657
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/sessions",
1091
2658
  pathParams: ["agent_id", "session_id"],
1092
- queryParams: []
2659
+ queryParams: [],
2660
+ flags: [{
2661
+ "name": "agent_id",
2662
+ "description": "Agent public ID",
2663
+ "required": true,
2664
+ "type": "string",
2665
+ "in": "path"
2666
+ }, {
2667
+ "name": "session_id",
2668
+ "description": "Session public ID",
2669
+ "required": true,
2670
+ "type": "string",
2671
+ "in": "path"
2672
+ }]
1093
2673
  },
1094
2674
  "delete-agent-session": {
1095
2675
  serviceClass: "Sessions",
1096
2676
  operationId: "deleteAgentSession",
1097
- description: "Delete a session",
2677
+ description: "Deletes the session and its underlying conversation and actors.",
2678
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/sessions",
1098
2679
  pathParams: ["agent_id", "session_id"],
1099
- queryParams: []
2680
+ queryParams: [],
2681
+ flags: [{
2682
+ "name": "agent_id",
2683
+ "description": "Agent public ID",
2684
+ "required": true,
2685
+ "type": "string",
2686
+ "in": "path"
2687
+ }, {
2688
+ "name": "session_id",
2689
+ "description": "Session public ID",
2690
+ "required": true,
2691
+ "type": "string",
2692
+ "in": "path"
2693
+ }]
1100
2694
  },
1101
2695
  "list-agent-session-messages": {
1102
2696
  serviceClass: "Sessions",
1103
2697
  operationId: "listAgentSessionMessages",
1104
- description: "List session messages",
2698
+ description: "Returns messages in the session with simplified roles (user/assistant) instead of raw actor IDs.",
2699
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/sessions",
1105
2700
  pathParams: ["agent_id", "session_id"],
1106
- queryParams: ["limit", "offset"]
2701
+ queryParams: ["limit", "offset"],
2702
+ flags: [{
2703
+ "name": "agent_id",
2704
+ "description": "Agent public ID",
2705
+ "required": true,
2706
+ "type": "string",
2707
+ "in": "path"
2708
+ }, {
2709
+ "name": "session_id",
2710
+ "description": "Session public ID",
2711
+ "required": true,
2712
+ "type": "string",
2713
+ "in": "path"
2714
+ }, {
2715
+ "name": "limit",
2716
+ "description": "",
2717
+ "required": false,
2718
+ "type": "integer",
2719
+ "in": "query"
2720
+ }, {
2721
+ "name": "offset",
2722
+ "description": "",
2723
+ "required": false,
2724
+ "type": "integer",
2725
+ "in": "query"
2726
+ }]
1107
2727
  },
1108
2728
  "add-session-message": {
1109
2729
  serviceClass: "Sessions",
1110
2730
  operationId: "addSessionMessage",
1111
- description: "Add a user message",
2731
+ description: "Saves a user message to the session. When autoGenerate is enabled on the session and no generation is currently in progress, generation is triggered automatically and the response mirrors GenerateSessionResponse. Otherwise returns the saved user message.",
2732
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/sessions",
1112
2733
  pathParams: ["agent_id", "session_id"],
1113
- queryParams: []
2734
+ queryParams: [],
2735
+ flags: [{
2736
+ "name": "agent_id",
2737
+ "description": "Agent public ID",
2738
+ "required": true,
2739
+ "type": "string",
2740
+ "in": "path"
2741
+ }, {
2742
+ "name": "session_id",
2743
+ "description": "Session public ID",
2744
+ "required": true,
2745
+ "type": "string",
2746
+ "in": "path"
2747
+ }]
1114
2748
  },
1115
2749
  "generate-session-response": {
1116
2750
  serviceClass: "Sessions",
1117
2751
  operationId: "generateSessionResponse",
1118
- description: "Trigger agent generation",
2752
+ description: "Triggers the agent to generate a response based on the current conversation. Returns the assistant reply or a requires_action status if the agent needs client tool outputs. Pass ?async=true for a 202 accepted response when you do not need to wait for the result.",
2753
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/sessions",
1119
2754
  pathParams: ["agent_id", "session_id"],
1120
- queryParams: ["async"]
2755
+ queryParams: ["async"],
2756
+ flags: [{
2757
+ "name": "agent_id",
2758
+ "description": "Agent public ID",
2759
+ "required": true,
2760
+ "type": "string",
2761
+ "in": "path"
2762
+ }, {
2763
+ "name": "session_id",
2764
+ "description": "Session public ID",
2765
+ "required": true,
2766
+ "type": "string",
2767
+ "in": "path"
2768
+ }, {
2769
+ "name": "async",
2770
+ "description": "When true, generation runs in the background and 202 is returned immediately",
2771
+ "required": false,
2772
+ "type": "boolean",
2773
+ "in": "query"
2774
+ }]
1121
2775
  },
1122
2776
  "submit-session-tool-outputs": {
1123
2777
  serviceClass: "Sessions",
1124
2778
  operationId: "submitSessionToolOutputs",
1125
- description: "Submit tool outputs",
2779
+ description: "Submits client tool outputs for a generation that returned requires_action. The agent continues its loop and returns the final or next requires_action result.",
2780
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/sessions",
1126
2781
  pathParams: ["agent_id", "session_id"],
1127
- queryParams: []
2782
+ queryParams: [],
2783
+ flags: [{
2784
+ "name": "agent_id",
2785
+ "description": "Agent public ID",
2786
+ "required": true,
2787
+ "type": "string",
2788
+ "in": "path"
2789
+ }, {
2790
+ "name": "session_id",
2791
+ "description": "Session public ID",
2792
+ "required": true,
2793
+ "type": "string",
2794
+ "in": "path"
2795
+ }]
1128
2796
  },
1129
2797
  "get-session-tags": {
1130
2798
  serviceClass: "Sessions",
1131
2799
  operationId: "getSessionTags",
1132
- description: "Get session tags",
2800
+ description: "Returns the session's tags object.",
2801
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/sessions",
1133
2802
  pathParams: ["agent_id", "session_id"],
1134
- queryParams: []
2803
+ queryParams: [],
2804
+ flags: [{
2805
+ "name": "agent_id",
2806
+ "description": "Agent public ID",
2807
+ "required": true,
2808
+ "type": "string",
2809
+ "in": "path"
2810
+ }, {
2811
+ "name": "session_id",
2812
+ "description": "Session public ID",
2813
+ "required": true,
2814
+ "type": "string",
2815
+ "in": "path"
2816
+ }]
1135
2817
  },
1136
2818
  "replace-session-tags": {
1137
2819
  serviceClass: "Sessions",
1138
2820
  operationId: "replaceSessionTags",
1139
- description: "Replace session tags",
2821
+ description: "Replaces all tags on the session.",
2822
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/sessions",
1140
2823
  pathParams: ["agent_id", "session_id"],
1141
- queryParams: []
2824
+ queryParams: [],
2825
+ flags: [{
2826
+ "name": "agent_id",
2827
+ "description": "Agent public ID",
2828
+ "required": true,
2829
+ "type": "string",
2830
+ "in": "path"
2831
+ }, {
2832
+ "name": "session_id",
2833
+ "description": "Session public ID",
2834
+ "required": true,
2835
+ "type": "string",
2836
+ "in": "path"
2837
+ }]
1142
2838
  },
1143
2839
  "merge-session-tags": {
1144
2840
  serviceClass: "Sessions",
1145
2841
  operationId: "mergeSessionTags",
1146
- description: "Merge session tags",
2842
+ description: "Merges the provided tags into the session's existing tags.",
2843
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/sessions",
1147
2844
  pathParams: ["agent_id", "session_id"],
1148
- queryParams: []
2845
+ queryParams: [],
2846
+ flags: [{
2847
+ "name": "agent_id",
2848
+ "description": "Agent public ID",
2849
+ "required": true,
2850
+ "type": "string",
2851
+ "in": "path"
2852
+ }, {
2853
+ "name": "session_id",
2854
+ "description": "Session public ID",
2855
+ "required": true,
2856
+ "type": "string",
2857
+ "in": "path"
2858
+ }]
1149
2859
  },
1150
2860
  "list-traces": {
1151
2861
  serviceClass: "Traces",
1152
2862
  operationId: "listTraces",
1153
- description: "List traces",
2863
+ description: "Returns a paginated list of execution traces for the project.",
2864
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/traces",
1154
2865
  pathParams: [],
1155
- queryParams: ["project_id", "limit", "offset"]
2866
+ queryParams: ["project_id", "limit", "offset"],
2867
+ flags: [{
2868
+ "name": "project_id",
2869
+ "description": "Project public ID to filter by",
2870
+ "required": false,
2871
+ "type": "string",
2872
+ "in": "query"
2873
+ }, {
2874
+ "name": "limit",
2875
+ "description": "Maximum number of results to return",
2876
+ "required": false,
2877
+ "type": "integer",
2878
+ "in": "query"
2879
+ }, {
2880
+ "name": "offset",
2881
+ "description": "Number of results to skip",
2882
+ "required": false,
2883
+ "type": "integer",
2884
+ "in": "query"
2885
+ }]
1156
2886
  },
1157
2887
  "get-trace": {
1158
2888
  serviceClass: "Traces",
1159
2889
  operationId: "getTrace",
1160
- description: "Get a trace",
2890
+ description: "Returns a single trace by ID.",
2891
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/traces",
1161
2892
  pathParams: ["trace_id"],
1162
- queryParams: []
2893
+ queryParams: [],
2894
+ flags: [{
2895
+ "name": "trace_id",
2896
+ "description": "Public ID of the trace",
2897
+ "required": true,
2898
+ "type": "string",
2899
+ "in": "path"
2900
+ }]
1163
2901
  },
1164
2902
  "get-trace-tree": {
1165
2903
  serviceClass: "Traces",
1166
2904
  operationId: "getTraceTree",
1167
- description: "Get trace tree",
2905
+ description: "Returns the full execution tree rooted at the given trace (or its root if the given trace is a child). Each node represents one agent's execution session. The `children` array contains traces triggered by sub-agent tool calls from that trace.",
2906
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/traces",
1168
2907
  pathParams: ["trace_id"],
1169
- queryParams: []
2908
+ queryParams: [],
2909
+ flags: [{
2910
+ "name": "trace_id",
2911
+ "description": "Public ID of any trace in the tree (root or child)",
2912
+ "required": true,
2913
+ "type": "string",
2914
+ "in": "path"
2915
+ }]
1170
2916
  },
1171
2917
  "list-users": {
1172
2918
  serviceClass: "Users",
1173
2919
  operationId: "listUsers",
1174
- description: "List all users",
2920
+ description: "Returns a list of all users",
2921
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/users",
1175
2922
  pathParams: [],
1176
- queryParams: []
2923
+ queryParams: [],
2924
+ flags: []
1177
2925
  },
1178
2926
  "create-user": {
1179
2927
  serviceClass: "Users",
1180
2928
  operationId: "createUser",
1181
- description: "Create a user",
2929
+ description: "Creates a new user in the system",
2930
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/users",
1182
2931
  pathParams: [],
1183
- queryParams: []
2932
+ queryParams: [],
2933
+ flags: [{
2934
+ "name": "username",
2935
+ "description": "",
2936
+ "required": true,
2937
+ "type": "string",
2938
+ "in": "body"
2939
+ }, {
2940
+ "name": "password",
2941
+ "description": "",
2942
+ "required": true,
2943
+ "type": "string",
2944
+ "in": "body"
2945
+ }, {
2946
+ "name": "role",
2947
+ "description": "",
2948
+ "required": false,
2949
+ "type": "string",
2950
+ "in": "body"
2951
+ }]
1184
2952
  },
1185
2953
  "get-user": {
1186
2954
  serviceClass: "Users",
1187
2955
  operationId: "getUser",
1188
- description: "Get a user by ID",
2956
+ description: "Returns the data of a specific user",
2957
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/users",
1189
2958
  pathParams: ["user_id"],
1190
- queryParams: []
2959
+ queryParams: [],
2960
+ flags: [{
2961
+ "name": "user_id",
2962
+ "description": "User ID",
2963
+ "required": true,
2964
+ "type": "string",
2965
+ "in": "path"
2966
+ }]
1191
2967
  },
1192
2968
  "delete-user": {
1193
2969
  serviceClass: "Users",
1194
2970
  operationId: "deleteUser",
1195
- description: "Delete a user by ID",
2971
+ description: "Deletes a specific user",
2972
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/users",
1196
2973
  pathParams: ["user_id"],
1197
- queryParams: []
2974
+ queryParams: [],
2975
+ flags: [{
2976
+ "name": "user_id",
2977
+ "description": "User ID",
2978
+ "required": true,
2979
+ "type": "string",
2980
+ "in": "path"
2981
+ }]
1198
2982
  },
1199
2983
  "bootstrap-user": {
1200
2984
  serviceClass: "Users",
1201
2985
  operationId: "bootstrapUser",
1202
- description: "Create the first admin user",
2986
+ description: "Creates the first admin user. Returns 409 if any user already exists.",
2987
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/users",
1203
2988
  pathParams: [],
1204
- queryParams: []
2989
+ queryParams: [],
2990
+ flags: [{
2991
+ "name": "username",
2992
+ "description": "",
2993
+ "required": true,
2994
+ "type": "string",
2995
+ "in": "body"
2996
+ }, {
2997
+ "name": "password",
2998
+ "description": "",
2999
+ "required": true,
3000
+ "type": "string",
3001
+ "in": "body"
3002
+ }]
1205
3003
  },
1206
3004
  "login-user": {
1207
3005
  serviceClass: "Users",
1208
3006
  operationId: "loginUser",
1209
- description: "Login user",
3007
+ description: "Authenticates a user and returns a JWT token",
3008
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/users",
1210
3009
  pathParams: [],
1211
- queryParams: []
3010
+ queryParams: [],
3011
+ flags: [{
3012
+ "name": "username",
3013
+ "description": "",
3014
+ "required": true,
3015
+ "type": "string",
3016
+ "in": "body"
3017
+ }, {
3018
+ "name": "password",
3019
+ "description": "",
3020
+ "required": true,
3021
+ "type": "string",
3022
+ "in": "body"
3023
+ }]
1212
3024
  },
1213
3025
  "get-user-policies": {
1214
3026
  serviceClass: "Users",
1215
3027
  operationId: "getUserPolicies",
1216
- description: "Get policies attached to a user",
3028
+ description: "Returns the list of policies attached to a user. Requires admin role.",
3029
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/users",
1217
3030
  pathParams: ["user_id"],
1218
- queryParams: []
3031
+ queryParams: [],
3032
+ flags: [{
3033
+ "name": "user_id",
3034
+ "description": "User public ID (usr_ prefix)",
3035
+ "required": true,
3036
+ "type": "string",
3037
+ "in": "path"
3038
+ }]
1219
3039
  },
1220
3040
  "attach-user-policies": {
1221
3041
  serviceClass: "Users",
1222
3042
  operationId: "attachUserPolicies",
1223
- description: "Attach policies to a user",
3043
+ description: "Replaces the user's policy list with the provided policy IDs. Requires admin role.",
3044
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/users",
1224
3045
  pathParams: ["user_id"],
1225
- queryParams: []
3046
+ queryParams: [],
3047
+ flags: [{
3048
+ "name": "user_id",
3049
+ "description": "User public ID (usr_ prefix)",
3050
+ "required": true,
3051
+ "type": "string",
3052
+ "in": "path"
3053
+ }, {
3054
+ "name": "policy_ids",
3055
+ "description": "List of policy public IDs to attach (replaces existing)",
3056
+ "required": true,
3057
+ "type": "array",
3058
+ "in": "body"
3059
+ }]
1226
3060
  },
1227
3061
  "list-webhooks": {
1228
3062
  serviceClass: "Webhooks",
1229
3063
  operationId: "listWebhooks",
1230
- description: "List webhooks for a project",
3064
+ description: "Lists all webhooks configured for the specified project",
3065
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/webhooks",
1231
3066
  pathParams: ["project_id"],
1232
- queryParams: []
3067
+ queryParams: [],
3068
+ flags: [{
3069
+ "name": "project_id",
3070
+ "description": "",
3071
+ "required": true,
3072
+ "type": "string",
3073
+ "in": "path"
3074
+ }]
1233
3075
  },
1234
3076
  "create-webhook": {
1235
3077
  serviceClass: "Webhooks",
1236
3078
  operationId: "createWebhook",
1237
- description: "Create a webhook",
3079
+ description: "Creates a new webhook for the specified project",
3080
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/webhooks",
1238
3081
  pathParams: ["project_id"],
1239
- queryParams: []
3082
+ queryParams: [],
3083
+ flags: [{
3084
+ "name": "project_id",
3085
+ "description": "",
3086
+ "required": true,
3087
+ "type": "string",
3088
+ "in": "path"
3089
+ }]
1240
3090
  },
1241
3091
  "get-webhook": {
1242
3092
  serviceClass: "Webhooks",
1243
3093
  operationId: "getWebhook",
1244
- description: "Get a webhook",
3094
+ description: "Retrieves the details of a specific webhook",
3095
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/webhooks",
1245
3096
  pathParams: ["project_id", "webhook_id"],
1246
- queryParams: []
3097
+ queryParams: [],
3098
+ flags: [{
3099
+ "name": "project_id",
3100
+ "description": "",
3101
+ "required": true,
3102
+ "type": "string",
3103
+ "in": "path"
3104
+ }, {
3105
+ "name": "webhook_id",
3106
+ "description": "",
3107
+ "required": true,
3108
+ "type": "string",
3109
+ "in": "path"
3110
+ }]
1247
3111
  },
1248
3112
  "update-webhook": {
1249
3113
  serviceClass: "Webhooks",
1250
3114
  operationId: "updateWebhook",
1251
- description: "Update a webhook",
3115
+ description: "Updates an existing webhook's configuration",
3116
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/webhooks",
1252
3117
  pathParams: ["project_id", "webhook_id"],
1253
- queryParams: []
3118
+ queryParams: [],
3119
+ flags: [{
3120
+ "name": "project_id",
3121
+ "description": "",
3122
+ "required": true,
3123
+ "type": "string",
3124
+ "in": "path"
3125
+ }, {
3126
+ "name": "webhook_id",
3127
+ "description": "",
3128
+ "required": true,
3129
+ "type": "string",
3130
+ "in": "path"
3131
+ }]
1254
3132
  },
1255
3133
  "delete-webhook": {
1256
3134
  serviceClass: "Webhooks",
1257
3135
  operationId: "deleteWebhook",
1258
- description: "Delete a webhook",
3136
+ description: "Deletes a webhook and stops all event deliveries",
3137
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/webhooks",
1259
3138
  pathParams: ["project_id", "webhook_id"],
1260
- queryParams: []
3139
+ queryParams: [],
3140
+ flags: [{
3141
+ "name": "project_id",
3142
+ "description": "",
3143
+ "required": true,
3144
+ "type": "string",
3145
+ "in": "path"
3146
+ }, {
3147
+ "name": "webhook_id",
3148
+ "description": "",
3149
+ "required": true,
3150
+ "type": "string",
3151
+ "in": "path"
3152
+ }]
1261
3153
  },
1262
3154
  "list-webhook-deliveries": {
1263
3155
  serviceClass: "Webhooks",
1264
3156
  operationId: "listWebhookDeliveries",
1265
- description: "List deliveries for a webhook",
3157
+ description: "Lists all event deliveries for a specific webhook",
3158
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/webhooks",
1266
3159
  pathParams: ["project_id", "webhook_id"],
1267
- queryParams: ["limit", "offset"]
3160
+ queryParams: ["limit", "offset"],
3161
+ flags: [{
3162
+ "name": "project_id",
3163
+ "description": "",
3164
+ "required": true,
3165
+ "type": "string",
3166
+ "in": "path"
3167
+ }, {
3168
+ "name": "webhook_id",
3169
+ "description": "",
3170
+ "required": true,
3171
+ "type": "string",
3172
+ "in": "path"
3173
+ }, {
3174
+ "name": "limit",
3175
+ "description": "",
3176
+ "required": false,
3177
+ "type": "integer",
3178
+ "in": "query"
3179
+ }, {
3180
+ "name": "offset",
3181
+ "description": "",
3182
+ "required": false,
3183
+ "type": "integer",
3184
+ "in": "query"
3185
+ }]
1268
3186
  },
1269
3187
  "get-webhook-delivery": {
1270
3188
  serviceClass: "Webhooks",
1271
3189
  operationId: "getWebhookDelivery",
1272
- description: "Get a delivery",
3190
+ description: "Retrieves the details of a specific webhook delivery",
3191
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/webhooks",
1273
3192
  pathParams: ["project_id", "webhook_id", "delivery_id"],
1274
- queryParams: []
3193
+ queryParams: [],
3194
+ flags: [{
3195
+ "name": "project_id",
3196
+ "description": "",
3197
+ "required": true,
3198
+ "type": "string",
3199
+ "in": "path"
3200
+ }, {
3201
+ "name": "webhook_id",
3202
+ "description": "",
3203
+ "required": true,
3204
+ "type": "string",
3205
+ "in": "path"
3206
+ }, {
3207
+ "name": "delivery_id",
3208
+ "description": "",
3209
+ "required": true,
3210
+ "type": "string",
3211
+ "in": "path"
3212
+ }]
1275
3213
  },
1276
3214
  "rotate-webhook-secret": {
1277
3215
  serviceClass: "Webhooks",
1278
3216
  operationId: "rotateWebhookSecret",
1279
- description: "Rotate webhook secret",
3217
+ description: "Rotates the secret key for the specified webhook",
3218
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/webhooks",
1280
3219
  pathParams: ["project_id", "webhook_id"],
1281
- queryParams: []
3220
+ queryParams: [],
3221
+ flags: [{
3222
+ "name": "project_id",
3223
+ "description": "",
3224
+ "required": true,
3225
+ "type": "string",
3226
+ "in": "path"
3227
+ }, {
3228
+ "name": "webhook_id",
3229
+ "description": "",
3230
+ "required": true,
3231
+ "type": "string",
3232
+ "in": "path"
3233
+ }]
1282
3234
  }
1283
3235
  };
1284
3236
 
@@ -1319,6 +3271,7 @@ var resolveServiceClass = /* @__PURE__ */__name(serviceClassName => {
1319
3271
  return void 0;
1320
3272
  }, "resolveServiceClass");
1321
3273
  program.name("soat").description("SOAT CLI").version(package_default.version).option("-p, --profile <name>", "config profile to use");
3274
+ program.addHelpText("after", "\nTip: Run `soat <command> --help` to see command-specific flags and docs.");
1322
3275
  program.command("configure").description("Save credentials to a named profile (~/.soat/config.json)").option("-p, --profile <name>", "profile name", "default").action(async opts => {
1323
3276
  const [{
1324
3277
  default: input
@@ -1458,7 +3411,7 @@ program.command("listen").description("Start a local webhook listener for testin
1458
3411
  });
1459
3412
  });
1460
3413
  });
1461
- program.argument("[command]", "API command in kebab-case (e.g. list-actors)").argument("[args...]").allowUnknownOption().action(async commandName => {
3414
+ program.argument("[command]", "API command in kebab-case (e.g. list-actors)").argument("[args...]").allowUnknownOption().passThroughOptions().action(async commandName => {
1462
3415
  if (!commandName) {
1463
3416
  program.help();
1464
3417
  return;
@@ -1471,6 +3424,31 @@ program.argument("[command]", "API command in kebab-case (e.g. list-actors)").ar
1471
3424
  }
1472
3425
  const rawIdx = process.argv.indexOf(commandName);
1473
3426
  const rawArgs = rawIdx >= 0 ? process.argv.slice(rawIdx + 1) : [];
3427
+ if (rawArgs.includes("--help") || rawArgs.includes("-h")) {
3428
+ const wrapperFlags = getWrapperHelpFlags(commandName);
3429
+ const allFlags = [...route.flags, ...wrapperFlags.map(f => {
3430
+ return {
3431
+ ...f,
3432
+ in: "wrapper"
3433
+ };
3434
+ })];
3435
+ console.log(`
3436
+ Usage: soat ${commandName} [flags]
3437
+ `);
3438
+ console.log(` ${route.description}
3439
+ `);
3440
+ console.log(` Module docs: ${route.moduleDocsUrl}
3441
+ `);
3442
+ if (allFlags.length > 0) {
3443
+ console.log("Flags:");
3444
+ for (const f of allFlags) {
3445
+ const req = f.required ? " [required]" : "";
3446
+ const desc = f.description ? ` ${f.description}` : "";
3447
+ console.log(` --${f.name} <${f.type}>${req}${desc}`);
3448
+ }
3449
+ }
3450
+ process.exit(0);
3451
+ }
1474
3452
  const parsedFlags = parseUnknownWithRepeats({
1475
3453
  cliArgs: rawArgs
1476
3454
  });