@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.
Files changed (2) hide show
  1. package/dist/index.mjs +37 -32
  2. 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.32.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
- * `declaredType` comes from the generated route manifest. A flag the spec
303
- * declares as `string` is passed through untouched its content is data, not
304
- * syntax, so a value that merely *looks* like JSON (a GCP service account key
305
- * file in `create-secret --value`) or like a number (an account number) must
306
- * still arrive as a string. Coercing it produced a body the server rejects,
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 value a string flag still coerces is the literal `null`: "set it to
310
- * null to clear" is the documented way to detach a nullable reference
311
- * (`--default_model_route_id null`, `--ai_provider_id null`), and the shell has
312
- * no other way to spell JSON null. The cost is that a string whose entire value
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: an undeclared type (a flag
316
- * the manifest has no entry for) is still sniffed, since that is the only
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 flag
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
- * The filter failed **open**, with exit 0 and no warning, and the caller acted on
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 server
8557
- * already answers `400 VALIDATION_FAILED` naming the field (`strictFields`), and
8558
- * that check is the authority on what a body may contain — rejecting locally
8559
- * would front-run it, hide the real error, and make an older CLI refuse a field a
8560
- * newer server accepts. It would also make the behavior untestable through the
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.32.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.32.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"