@soat/cli 0.42.0 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +29 -11
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -13,7 +13,7 @@ import * as os from "node:os";
|
|
|
13
13
|
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
14
14
|
|
|
15
15
|
//#region package.json
|
|
16
|
-
var version = "0.
|
|
16
|
+
var version = "0.44.0";
|
|
17
17
|
|
|
18
18
|
//#endregion
|
|
19
19
|
//#region src/cli-wrappers/wrappers/formations.ts
|
|
@@ -1499,7 +1499,7 @@ var routes = {
|
|
|
1499
1499
|
"create-ai-provider": {
|
|
1500
1500
|
serviceClass: "AIProviders",
|
|
1501
1501
|
operationId: "createAiProvider",
|
|
1502
|
-
description: "Creates a new LLM provider configuration",
|
|
1502
|
+
description: "Creates a new LLM provider configuration. A `bedrock` or `vertex` record must carry a credential of its own — a linked `secret_id`, or an `apiKey` in `config`. Without one the provider SDK signs with the server's own credentials (the AWS default credential chain, Google Application Default Credentials), which is refused with `400 VALIDATION_FAILED` unless the deployment allows it.",
|
|
1503
1503
|
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/ai-providers",
|
|
1504
1504
|
httpMethod: "post",
|
|
1505
1505
|
pathParams: [],
|
|
@@ -1530,7 +1530,7 @@ var routes = {
|
|
|
1530
1530
|
"in": "body"
|
|
1531
1531
|
}, {
|
|
1532
1532
|
"name": "secret_id",
|
|
1533
|
-
"description": "Secret ID containing API credentials",
|
|
1533
|
+
"description": "Secret ID containing API credentials. Required for `bedrock` and `vertex` unless `config.apiKey` carries one.",
|
|
1534
1534
|
"required": false,
|
|
1535
1535
|
"type": "string",
|
|
1536
1536
|
"in": "body"
|
|
@@ -1641,7 +1641,7 @@ var routes = {
|
|
|
1641
1641
|
"list-ai-provider-models": {
|
|
1642
1642
|
serviceClass: "AIProviders",
|
|
1643
1643
|
operationId: "listAiProviderModels",
|
|
1644
|
-
description: "Asks the provider which models it can run, using this provider record's own credentials and configuration, and returns provider-native model ids — the same strings `default_model` and an agent's `model` carry. Which models are reachable is a property of the credential, not of the provider type: a Vertex provider sees only the publisher models its Google Cloud project and location serve, and a Bedrock provider only the foundation models enabled in its region. Reading the list is how a caller avoids pinning a model that fails at generation time. Not every provider type can answer. `azure` lists deployments an operator named rather than models, and `ollama` lists whatever was pulled onto that host, so both return `400 MODEL_LISTING_UNSUPPORTED`. Listing resolves credentials the same way generation does, so a record that can generate can list. The API-key types (`openai`, `groq`, `xai`, `gateway`, `custom`, `anthropic`, `google`) use the record's linked secret and cannot list without one. `bedrock` and `vertex` use the linked secret
|
|
1644
|
+
description: "Asks the provider which models it can run, using this provider record's own credentials and configuration, and returns provider-native model ids — the same strings `default_model` and an agent's `model` carry. Which models are reachable is a property of the credential, not of the provider type: a Vertex provider sees only the publisher models its Google Cloud project and location serve, and a Bedrock provider only the foundation models enabled in its region. Reading the list is how a caller avoids pinning a model that fails at generation time. Not every provider type can answer. `azure` lists deployments an operator named rather than models, and `ollama` lists whatever was pulled onto that host, so both return `400 MODEL_LISTING_UNSUPPORTED`. Listing resolves credentials the same way generation does, so a record that can generate can list. The API-key types (`openai`, `groq`, `xai`, `gateway`, `custom`, `anthropic`, `google`) use the record's linked secret and cannot list without one. `bedrock` and `vertex` use the linked secret — IAM keys or a Bedrock API key, a Google service-account key. A record with no `secret_id` would fall back to the server's own credentials (the AWS default credential chain, Google Application Default Credentials); it can list only on a deployment that allows a record to use them, and returns `400 AI_PROVIDER_MISCONFIGURED` otherwise. A Vertex record needs no `config.project` when its secret is a service-account key, since the key file names its own project. A Vertex record in express mode (API key) cannot list at all: the publisher-model listing rejects API keys and needs a credential that asserts a principal, so it returns `400 MODEL_LISTING_UNSUPPORTED`. The Vertex answer is the publisher catalogue the record's `config.location` region serves. The project behind the credential is billed and quota'd for the call but does not filter the result, so a listed model may still be unavailable to that project at generation time.",
|
|
1645
1645
|
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/ai-providers",
|
|
1646
1646
|
httpMethod: "get",
|
|
1647
1647
|
pathParams: ["ai_provider_id"],
|
|
@@ -5677,11 +5677,11 @@ var routes = {
|
|
|
5677
5677
|
"list-orchestration-runs": {
|
|
5678
5678
|
serviceClass: "Orchestrations",
|
|
5679
5679
|
operationId: "listOrchestrationRuns",
|
|
5680
|
-
description: "Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, or by whether the run has a parent at all. Note when aggregating: a run's `usage` covers its whole subtree, so summing it over a list that contains both a parent and its children counts the children more than once. Pass `nested=false` to sum over runs a caller started.",
|
|
5680
|
+
description: "Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, by status, or by whether the run has a parent at all. Note when aggregating: a run's `usage` covers its whole subtree, so summing it over a list that contains both a parent and its children counts the children more than once. Pass `nested=false` to sum over runs a caller started.",
|
|
5681
5681
|
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/orchestrations",
|
|
5682
5682
|
httpMethod: "get",
|
|
5683
5683
|
pathParams: [],
|
|
5684
|
-
queryParams: ["orchestration_id", "parent_orchestration_run_id", "nested", "limit", "offset"],
|
|
5684
|
+
queryParams: ["orchestration_id", "parent_orchestration_run_id", "nested", "status", "limit", "offset"],
|
|
5685
5685
|
flags: [{
|
|
5686
5686
|
"name": "orchestration_id",
|
|
5687
5687
|
"description": "Filter by orchestration public ID (orch_...)",
|
|
@@ -5700,6 +5700,12 @@ var routes = {
|
|
|
5700
5700
|
"required": false,
|
|
5701
5701
|
"type": "boolean",
|
|
5702
5702
|
"in": "query"
|
|
5703
|
+
}, {
|
|
5704
|
+
"name": "status",
|
|
5705
|
+
"description": "Filter by run status. Repeat the parameter to OR values — `status=queued&status=running&status=sleeping&status=awaiting_input` is the set still driving, which is how a caller finds live work without paging every run the project ever started.\n\nThere is no `non_terminal` shorthand on purpose: which statuses count as live is the caller's policy. A value outside the enum, empty string included, is a `400`.",
|
|
5706
|
+
"required": false,
|
|
5707
|
+
"type": "array",
|
|
5708
|
+
"in": "query"
|
|
5703
5709
|
}, {
|
|
5704
5710
|
"name": "limit",
|
|
5705
5711
|
"description": "Maximum number of results to return",
|
|
@@ -6189,7 +6195,7 @@ var routes = {
|
|
|
6189
6195
|
"create-quota": {
|
|
6190
6196
|
serviceClass: "Quotas",
|
|
6191
6197
|
operationId: "createQuota",
|
|
6192
|
-
description: "Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor
|
|
6198
|
+
description: "Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`; `storage_bytes` is valid for `scope: project` only. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A `cost_usd` quota may name one `meter_type` to cap; omitting it caps every priced meter. A duplicate quota (same project, scope, scope_ref, metric, window, meter_type) is rejected with 409. `storage_bytes` caps a stored total rather than a windowed one, so it takes `window: current` and every other metric refuses that value (400 either way). It is enforced at the corpus write paths — file upload and create, document create, document ingest and re-ingest, memory-entry create — with `409 QUOTA_STORAGE_EXCEEDED` and no `Retry-After`, since no window reset clears a footprint.",
|
|
6193
6199
|
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/quotas",
|
|
6194
6200
|
httpMethod: "post",
|
|
6195
6201
|
pathParams: [],
|
|
@@ -6220,13 +6226,13 @@ var routes = {
|
|
|
6220
6226
|
"in": "body"
|
|
6221
6227
|
}, {
|
|
6222
6228
|
"name": "window",
|
|
6223
|
-
"description": "The window over which the metric is aggregated",
|
|
6229
|
+
"description": "The window over which the metric is aggregated. `current` is the only accepted value for storage_bytes (a stored total is not aggregated over time) and is refused for every other metric.",
|
|
6224
6230
|
"required": true,
|
|
6225
6231
|
"type": "string",
|
|
6226
6232
|
"in": "body"
|
|
6227
6233
|
}, {
|
|
6228
6234
|
"name": "limit",
|
|
6229
|
-
"description": "The cap. Must be a positive integer for requests/tokens; fractional values are allowed for cost_usd.",
|
|
6235
|
+
"description": "The cap. Must be a positive integer for requests/tokens/storage_bytes (bytes); fractional values are allowed for cost_usd.",
|
|
6230
6236
|
"required": true,
|
|
6231
6237
|
"type": "number",
|
|
6232
6238
|
"in": "body"
|
|
@@ -6242,6 +6248,12 @@ var routes = {
|
|
|
6242
6248
|
"required": false,
|
|
6243
6249
|
"type": "string",
|
|
6244
6250
|
"in": "body"
|
|
6251
|
+
}, {
|
|
6252
|
+
"name": "meter_type",
|
|
6253
|
+
"description": "Only for metric cost_usd (400 on any other metric). The meter this cap answers for. Omit it and the cap sums every priced meter, which is the existing behaviour; name one and only that meter's cost counts, so an AI spend cap is not consumed by platform meters the operator prices (and vice versa). Part of the quota's identity, so two meter scopes can share a scope/metric/window and neither conflicts with an unscoped cap. Immutable after creation — replace the quota to change it.",
|
|
6254
|
+
"required": false,
|
|
6255
|
+
"type": "string",
|
|
6256
|
+
"in": "body"
|
|
6245
6257
|
}]
|
|
6246
6258
|
},
|
|
6247
6259
|
"get-quota": {
|
|
@@ -6829,11 +6841,11 @@ var routes = {
|
|
|
6829
6841
|
"list-tasks": {
|
|
6830
6842
|
serviceClass: "Tasks",
|
|
6831
6843
|
operationId: "listTasks",
|
|
6832
|
-
description: "Lists tasks (the board query). Filter by workflow, state, status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.",
|
|
6844
|
+
description: "Lists tasks (the board query). Filter by workflow, state, status, automation status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.",
|
|
6833
6845
|
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/tasks",
|
|
6834
6846
|
httpMethod: "get",
|
|
6835
6847
|
pathParams: [],
|
|
6836
|
-
queryParams: ["project_id", "workflow_id", "state", "status", "assignee", "limit", "offset"],
|
|
6848
|
+
queryParams: ["project_id", "workflow_id", "state", "status", "automation_status", "assignee", "limit", "offset"],
|
|
6837
6849
|
flags: [{
|
|
6838
6850
|
"name": "project_id",
|
|
6839
6851
|
"description": "",
|
|
@@ -6858,6 +6870,12 @@ var routes = {
|
|
|
6858
6870
|
"required": false,
|
|
6859
6871
|
"type": "string",
|
|
6860
6872
|
"in": "query"
|
|
6873
|
+
}, {
|
|
6874
|
+
"name": "automation_status",
|
|
6875
|
+
"description": "Filter by the current state's dispatch status. Repeat the parameter to OR values. `none` selects the tasks whose `automation_status` is `null` — the ones that never entered a state with an automation. It is a value a task really holds, so it is a value of the filter too; the parameter's own absence already means \"every task\".\n\nA value outside the enum, empty string included, is a `400`.",
|
|
6876
|
+
"required": false,
|
|
6877
|
+
"type": "array",
|
|
6878
|
+
"in": "query"
|
|
6861
6879
|
}, {
|
|
6862
6880
|
"name": "assignee",
|
|
6863
6881
|
"description": "",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soat/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.44.0",
|
|
4
4
|
"description": "CLI for SOAT — open-source infrastructure for production-ready AI agents.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-agents",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@inquirer/input": "^5.1.2",
|
|
24
24
|
"@inquirer/password": "^5.1.1",
|
|
25
|
-
"@soat/sdk": "0.
|
|
25
|
+
"@soat/sdk": "0.44.0",
|
|
26
26
|
"@ttoss/logger": "^0.8.19",
|
|
27
27
|
"commander": "^15.0.0",
|
|
28
28
|
"js-yaml": "^5.2.1"
|