@soat/cli 0.32.0 → 0.33.1
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 +37 -32
- 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.33.1";
|
|
17
17
|
|
|
18
18
|
//#endregion
|
|
19
19
|
//#region src/cli-wrappers/wrappers/formations.ts
|
|
@@ -299,22 +299,19 @@ var extractPositionalArgs = args => {
|
|
|
299
299
|
/**
|
|
300
300
|
* Coerce a raw flag value to the JSON type the spec declares for it.
|
|
301
301
|
*
|
|
302
|
-
*
|
|
303
|
-
*
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
* with no way to escape it from the shell.
|
|
302
|
+
* A flag the spec declares as `string` is passed through untouched — its
|
|
303
|
+
* content is data, not syntax, so a value that merely *looks* like JSON (a GCP
|
|
304
|
+
* service account key in `create-secret --value`) or like a number must still
|
|
305
|
+
* arrive as a string. Coercing it produced a body the server rejects, with no
|
|
306
|
+
* way to escape it from the shell.
|
|
308
307
|
*
|
|
309
|
-
* The one
|
|
310
|
-
*
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
* is `null` cannot be sent — a far rarer need than clearing a field.
|
|
308
|
+
* The one exception is the literal `null`: "set it to null to clear" is the
|
|
309
|
+
* documented way to detach a nullable reference and the shell has no other way
|
|
310
|
+
* to spell JSON null. The cost is that a string whose entire value is `null`
|
|
311
|
+
* cannot be sent.
|
|
314
312
|
*
|
|
315
|
-
* Every other flag keeps the permissive behavior
|
|
316
|
-
*
|
|
317
|
-
* signal available.
|
|
313
|
+
* Every other flag keeps the permissive behavior — an undeclared type is still
|
|
314
|
+
* sniffed, since that is the only signal available.
|
|
318
315
|
*/
|
|
319
316
|
var parseFlagValue = (value, declaredType) => {
|
|
320
317
|
if (declaredType === "string") return value.trim() === "null" ? null : value;
|
|
@@ -5588,17 +5585,29 @@ var routes = {
|
|
|
5588
5585
|
"list-orchestration-runs": {
|
|
5589
5586
|
serviceClass: "Orchestrations",
|
|
5590
5587
|
operationId: "listOrchestrationRuns",
|
|
5591
|
-
description: "Returns orchestration runs the caller can access, optionally filtered by orchestration.",
|
|
5588
|
+
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.",
|
|
5592
5589
|
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/orchestrations",
|
|
5593
5590
|
httpMethod: "get",
|
|
5594
5591
|
pathParams: [],
|
|
5595
|
-
queryParams: ["orchestration_id", "limit", "offset"],
|
|
5592
|
+
queryParams: ["orchestration_id", "parent_orchestration_run_id", "nested", "limit", "offset"],
|
|
5596
5593
|
flags: [{
|
|
5597
5594
|
"name": "orchestration_id",
|
|
5598
5595
|
"description": "Filter by orchestration public ID (orch_...)",
|
|
5599
5596
|
"required": false,
|
|
5600
5597
|
"type": "string",
|
|
5601
5598
|
"in": "query"
|
|
5599
|
+
}, {
|
|
5600
|
+
"name": "parent_orchestration_run_id",
|
|
5601
|
+
"description": "Filter to the runs one specific parent run's `loop` / `sub_orchestration` nodes started (run_...). This is how a caller holding a parent names the individual children behind its `usage`.",
|
|
5602
|
+
"required": false,
|
|
5603
|
+
"type": "string",
|
|
5604
|
+
"in": "query"
|
|
5605
|
+
}, {
|
|
5606
|
+
"name": "nested",
|
|
5607
|
+
"description": "Filter by whether the run was started by another run. `false` returns only the runs a caller started (no parent), which is the set to sum `usage` over; `true` returns only the runs a `loop` / `sub_orchestration` node started, across every parent. Omit to return both.\n\nContradicting `parent_orchestration_run_id` with `nested=false` is a `400`; any value other than `true` or `false` is a `400`.",
|
|
5608
|
+
"required": false,
|
|
5609
|
+
"type": "boolean",
|
|
5610
|
+
"in": "query"
|
|
5602
5611
|
}, {
|
|
5603
5612
|
"name": "limit",
|
|
5604
5613
|
"description": "Maximum number of results to return",
|
|
@@ -7003,7 +7012,7 @@ var routes = {
|
|
|
7003
7012
|
"in": "body"
|
|
7004
7013
|
}, {
|
|
7005
7014
|
"name": "preset_parameters",
|
|
7006
|
-
"description": "Fixed parameters pinned on every call this tool makes, whatever its type. Keys matching fields in the input schema are removed from the schema shown to the model, and a pinned value wins over one the model or a direct caller supplies for the same key.",
|
|
7015
|
+
"description": "Fixed parameters pinned on every call this tool makes, whatever its type. Keys matching fields in the input schema are removed from the schema shown to the model, and a pinned value wins over one the model or a direct caller supplies for the same key.\n\nValues accept `{{context:<key>}}` references, resolved per call from the caller's `tool_context`, so a pin can be the run's own value — the one account this run may act on — rather than one fixed when the tool was created. A resolved value is retyped to the parameter's declared schema type; a key missing from the call's `tool_context` fails the call with `MISSING_TOOL_CONTEXT_KEY` rather than sending the literal placeholder. `{{secret:...}}` is not resolved here. See the Tool Context reference.",
|
|
7007
7016
|
"required": false,
|
|
7008
7017
|
"type": "object",
|
|
7009
7018
|
"in": "body"
|
|
@@ -7113,7 +7122,7 @@ var routes = {
|
|
|
7113
7122
|
"in": "body"
|
|
7114
7123
|
}, {
|
|
7115
7124
|
"name": "preset_parameters",
|
|
7116
|
-
"description": "Fixed parameters pinned on every call this tool makes, whatever its type. Keys matching fields in the input schema are removed from the schema shown to the model, and a pinned value wins over one the model or a direct caller supplies for the same key.",
|
|
7125
|
+
"description": "Fixed parameters pinned on every call this tool makes, whatever its type. Keys matching fields in the input schema are removed from the schema shown to the model, and a pinned value wins over one the model or a direct caller supplies for the same key.\n\nValues accept `{{context:<key>}}` references, resolved per call from the caller's `tool_context`, so a pin can be the run's own value — the one account this run may act on — rather than one fixed when the tool was created. A resolved value is retyped to the parameter's declared schema type; a key missing from the call's `tool_context` fails the call with `MISSING_TOOL_CONTEXT_KEY` rather than sending the literal placeholder. `{{secret:...}}` is not resolved here. See the Tool Context reference.",
|
|
7117
7126
|
"required": false,
|
|
7118
7127
|
"type": "object",
|
|
7119
7128
|
"in": "body"
|
|
@@ -8544,23 +8553,19 @@ var suggestionFor = args => {
|
|
|
8544
8553
|
return near ? ` Did you mean --${toKebab(near)}?` : "";
|
|
8545
8554
|
};
|
|
8546
8555
|
/**
|
|
8547
|
-
* Reject an unrecognized flag **only where the server cannot catch it** — a
|
|
8548
|
-
* the CLI would otherwise append to the query string.
|
|
8556
|
+
* Reject an unrecognized flag **only where the server cannot catch it** — a
|
|
8557
|
+
* flag the CLI would otherwise append to the query string.
|
|
8549
8558
|
*
|
|
8550
8559
|
* An undeclared query param never reaches a check: the server ignores what it
|
|
8551
|
-
* does not know, so `list-agents --limitt 1` returned every row instead of one
|
|
8552
|
-
*
|
|
8553
|
-
* a superset it never asked for. The name does not survive the request, so only
|
|
8560
|
+
* does not know, so `list-agents --limitt 1` returned every row instead of one,
|
|
8561
|
+
* with exit 0 and no warning. The name does not survive the request, so only
|
|
8554
8562
|
* the client can catch it.
|
|
8555
8563
|
*
|
|
8556
|
-
* An unrecognized flag on a **write** is deliberately still forwarded. The
|
|
8557
|
-
* already answers `400 VALIDATION_FAILED` naming the field
|
|
8558
|
-
*
|
|
8559
|
-
*
|
|
8560
|
-
*
|
|
8561
|
-
* CLI: `tests/smoke-tests.sh` asserts precisely that the server rejects
|
|
8562
|
-
* `update-agent --reasoning` with a 400, which a client-side refusal turns into a
|
|
8563
|
-
* usage error the assertion cannot read.
|
|
8564
|
+
* An unrecognized flag on a **write** is deliberately still forwarded. The
|
|
8565
|
+
* server already answers `400 VALIDATION_FAILED` naming the field, and that
|
|
8566
|
+
* check is the authority on what a body may contain — rejecting locally would
|
|
8567
|
+
* hide the real error and make an older CLI refuse a field a newer server
|
|
8568
|
+
* accepts. `tests/smoke-tests.sh` asserts precisely that server-side 400.
|
|
8564
8569
|
*
|
|
8565
8570
|
* Returns the error lines to print; empty when every flag is recognized.
|
|
8566
8571
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soat/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.1",
|
|
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.33.1",
|
|
26
26
|
"@ttoss/logger": "^0.8.19",
|
|
27
27
|
"commander": "^15.0.0",
|
|
28
28
|
"js-yaml": "^5.2.1"
|