@soat/cli 0.18.5 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.mjs +69 -7
  2. package/package.json +2 -2
package/dist/index.mjs CHANGED
@@ -13,7 +13,7 @@ import { load } from "js-yaml";
13
13
  import * as os from "node:os";
14
14
 
15
15
  //#region package.json
16
- var version = "0.18.5";
16
+ var version = "0.19.0";
17
17
 
18
18
  //#endregion
19
19
  //#region src/cli-wrappers/wrappers/formations.ts
@@ -788,6 +788,12 @@ var routes = {
788
788
  "required": false,
789
789
  "type": "boolean",
790
790
  "in": "body"
791
+ }, {
792
+ "name": "trace_content_mode",
793
+ "description": "Zero-retention opt-in for this agent. `null` inherits the project's setting; `none` means trace and generation content is never written. Setting `full` under a project whose own mode is `none` is refused with 400 — the project is a floor an agent may only tighten.",
794
+ "required": false,
795
+ "type": "string",
796
+ "in": "body"
791
797
  }, {
792
798
  "name": "version_label",
793
799
  "description": "Optional tag for the config version this write archives (e.g. `initial`). Annotates the version only — it is not stored on the agent and is not part of the config, so labelling a change is never itself a change.",
@@ -946,6 +952,12 @@ var routes = {
946
952
  "required": false,
947
953
  "type": "boolean",
948
954
  "in": "body"
955
+ }, {
956
+ "name": "trace_content_mode",
957
+ "description": "Zero-retention opt-in for this agent. `null` inherits the project's setting; `none` means trace and generation content is never written. Setting `full` under a project whose own mode is `none` is refused with 400.",
958
+ "required": false,
959
+ "type": "string",
960
+ "in": "body"
949
961
  }, {
950
962
  "name": "version_label",
951
963
  "description": "Optional tag for the config version this write archives (e.g. `pre-tone-change`). Annotates the version only — it is not stored on the agent and is not part of the config, so labelling a change is never itself a change. Ignored when the write changes nothing, since no version is created.",
@@ -1088,6 +1100,12 @@ var routes = {
1088
1100
  "required": false,
1089
1101
  "type": "boolean",
1090
1102
  "in": "body"
1103
+ }, {
1104
+ "name": "trace_content_mode",
1105
+ "description": "Zero-retention opt-in for this agent. `null` inherits the project's setting; `none` means trace and generation content is never written. Setting `full` under a project whose own mode is `none` is refused with 400.",
1106
+ "required": false,
1107
+ "type": "string",
1108
+ "in": "body"
1091
1109
  }, {
1092
1110
  "name": "version_label",
1093
1111
  "description": "Optional tag for the config version this write archives (e.g. `pre-tone-change`). Annotates the version only — it is not stored on the agent and is not part of the config, so labelling a change is never itself a change. Ignored when the write changes nothing, since no version is created.",
@@ -1188,7 +1206,7 @@ var routes = {
1188
1206
  "in": "body"
1189
1207
  }, {
1190
1208
  "name": "metadata",
1191
- "description": "Caller-supplied key/value metadata attached to the generation record for per-run audit attribution (e.g. the knowledge-corpus version that produced this action). Round-trips when the generation is fetched via the generations API. Reserved server-owned keys (`action_id`, `trigger_id`, `orchestration_run_id`, `node_id`, `extraction`, and internal recovery state) cannot be set here and are rejected with 400.",
1209
+ "description": "Caller-supplied key/value metadata attached to the generation record for per-run audit attribution (e.g. the knowledge-corpus version that produced this action). Round-trips verbatim when the generation is fetched via the generations API. The bag is caller-owned and no key is reserved: server-owned state (usage attribution, the served agent version, the model route's record, the extraction summary) lives in its own top-level generation fields and cannot be written from here. Use the request's own `action_id` field to set the usage-attribution label.",
1192
1210
  "required": false,
1193
1211
  "type": "object",
1194
1212
  "in": "body"
@@ -3841,7 +3859,7 @@ var routes = {
3841
3859
  "update-generation": {
3842
3860
  serviceClass: "Generations",
3843
3861
  operationId: "updateGeneration",
3844
- description: "Attaches caller-supplied key/value metadata to a generation record for per-run audit attribution (e.g. recording which knowledge-corpus version produced an AI action). The provided keys are shallow-merged over the existing metadata, so repeated patches accumulate and system-owned keys are preserved. Reserved keys (`action_id`, `trigger_id`, `orchestration_run_id`, `node_id`, `extraction`, and internal recovery state) cannot be set and are rejected with 400.",
3862
+ description: "Attaches caller-supplied key/value metadata to a generation record for per-run audit attribution (e.g. recording which knowledge-corpus version produced an AI action). The provided keys are shallow-merged over the existing `metadata`, so repeated patches accumulate. The bag is caller-owned and no key is reserved: server-owned state (usage attribution, the served agent version, the route's record, the extraction summary) lives in its own top-level fields and cannot be written from here.",
3845
3863
  moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/generations",
3846
3864
  httpMethod: "patch",
3847
3865
  pathParams: ["generation_id"],
@@ -3854,12 +3872,28 @@ var routes = {
3854
3872
  "in": "path"
3855
3873
  }, {
3856
3874
  "name": "metadata",
3857
- "description": "Caller-supplied key/value metadata to shallow-merge into the generation record. Reserved server-owned keys (`action_id`, `trigger_id`, `orchestration_run_id`, `node_id`, `extraction`, and internal recovery state) are rejected with 400.\n",
3875
+ "description": "Caller-supplied key/value metadata to shallow-merge into the generation record's caller-owned `metadata` bag. No key is reserved: server-owned state lives in its own top-level fields and cannot be written from here.\n",
3858
3876
  "required": true,
3859
3877
  "type": "object",
3860
3878
  "in": "body"
3861
3879
  }]
3862
3880
  },
3881
+ "purge-generation-content": {
3882
+ serviceClass: "Generations",
3883
+ operationId: "purgeGenerationContent",
3884
+ description: "Clears the generation's content — `metadata`, `error`, `extraction`, and the internal recovery state of a paused run — and stamps `content_redacted_at`. The usage and audit skeleton is preserved: ids, timestamps, status, stop reason, and the attribution fields (`action_id`, `trigger_id`, `orchestration_run_id`, `node_id`, `agent_version`, `routing`) the billing ledger reads. A purged generation reads back as that skeleton, not a 404. This does **not** delete the parent trace's steps object, which holds this generation's content alongside its siblings'. To erase the run's content completely, purge the trace (`DELETE /api/v1/traces/{trace_id}/content`), which cascades here. Idempotent — purging an already-purged generation succeeds and leaves the original `content_redacted_at` in place.",
3885
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/generations",
3886
+ httpMethod: "delete",
3887
+ pathParams: ["generation_id"],
3888
+ queryParams: [],
3889
+ flags: [{
3890
+ "name": "generation_id",
3891
+ "description": "Public ID of the generation",
3892
+ "required": true,
3893
+ "type": "string",
3894
+ "in": "path"
3895
+ }]
3896
+ },
3863
3897
  "list-guardrails": {
3864
3898
  serviceClass: "Guardrails",
3865
3899
  operationId: "listGuardrails",
@@ -4252,7 +4286,7 @@ var routes = {
4252
4286
  "in": "body"
4253
4287
  }, {
4254
4288
  "name": "chunk_strategy",
4255
- "description": "",
4289
+ "description": "Send `null` to clear the rule's override and fall back to the per-request default.",
4256
4290
  "required": false,
4257
4291
  "type": "string",
4258
4292
  "in": "body"
@@ -5295,7 +5329,7 @@ var routes = {
5295
5329
  "update-project": {
5296
5330
  serviceClass: "Projects",
5297
5331
  operationId: "updateProject",
5298
- description: "Updates a project's name, its attached guardrails (`guardrail_ids` — the project-scope baseline governing every tool call by every agent in the project), its orchestration concurrency limit (`max_concurrent_runs`), its inherited model route (`default_model_route_id`), and/or its read-auditing opt-in (`audit_reads_enabled`). At least one field is required. Requires admin role. Detaching a guardrail (removing an id) additionally requires guardrails:DetachGuardrail.",
5332
+ description: "Updates a project's name, its attached guardrails (`guardrail_ids` — the project-scope baseline governing every tool call by every agent in the project), its orchestration concurrency limit (`max_concurrent_runs`), its inherited model route (`default_model_route_id`), its read-auditing opt-in (`audit_reads_enabled`), its trace-content retention window (`trace_content_retention_days`), and/or its zero-retention setting (`trace_content_mode`). At least one field is required. Requires admin role. Detaching a guardrail (removing an id) additionally requires guardrails:DetachGuardrail.",
5299
5333
  moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/projects",
5300
5334
  httpMethod: "patch",
5301
5335
  pathParams: ["project_id"],
@@ -5336,6 +5370,18 @@ var routes = {
5336
5370
  "required": false,
5337
5371
  "type": "boolean",
5338
5372
  "in": "body"
5373
+ }, {
5374
+ "name": "trace_content_retention_days",
5375
+ "description": "How long trace and generation content is kept before the daily retention sweep content-purges it. `null` (the default) disables retention; otherwise an integer >= 1. The sweep uses the same purge path as `DELETE /traces/{trace_id}/content`, so the row survives as an auditable skeleton with `content_redacted_at` set.",
5376
+ "required": false,
5377
+ "type": "integer",
5378
+ "in": "body"
5379
+ }, {
5380
+ "name": "trace_content_mode",
5381
+ "description": "Whether trace and generation content is persisted at all. `full` (the default) stores it; `none` is zero-retention — content is never written, for every agent in the project. An agent may tighten this to `none` on its own but cannot loosen a `none` project back to `full`.",
5382
+ "required": false,
5383
+ "type": "string",
5384
+ "in": "body"
5339
5385
  }]
5340
5386
  },
5341
5387
  "delete-project": {
@@ -6097,7 +6143,7 @@ var routes = {
6097
6143
  "update-task": {
6098
6144
  serviceClass: "Tasks",
6099
6145
  operationId: "updateTask",
6100
- description: "Updates a task's payload, title, or assignee. `state` is never directly writable — move it with a transition; sending a `state` field is rejected as an unknown field (`VALIDATION_FAILED`). `payload` is shallow-merged over the existing payload (PATCH semantics): keys the request omits are preserved, so setting one field never discards values an on_enter automation wrote (e.g. `last_result`). The merged payload is validated against the workflow's `payload_schema`.",
6146
+ description: "Updates a task's payload, title, or assignee. `state` is never directly writable — move it with a transition; sending a `state` field is rejected as an unknown field (`VALIDATION_FAILED`). `payload` is shallow-merged over the existing payload (PATCH semantics): keys the request omits are preserved. The payload is caller-owned; the automation result lives in the read-only `last_result` field, which no patch can reach. The merged payload is validated against the workflow's `payload_schema`.",
6101
6147
  moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/tasks",
6102
6148
  httpMethod: "patch",
6103
6149
  pathParams: ["task_id"],
@@ -6518,6 +6564,22 @@ var routes = {
6518
6564
  "in": "query"
6519
6565
  }]
6520
6566
  },
6567
+ "purge-trace-content": {
6568
+ serviceClass: "Traces",
6569
+ operationId: "purgeTraceContent",
6570
+ description: "Deletes the trace's steps object from storage and clears its content columns (`file_id`, `error`), cascading to every descendant trace and to all of their generations. A descendant holds its own steps object covering the same run, so the cascade is what makes the erasure complete rather than merely partial. The rows survive as auditable skeletons with `content_redacted_at` set — ids, timestamps, step counts, and the generations' usage-attribution fields are preserved, because the billing and audit ledger must outlive a tenant's erasure of the content. A purged trace therefore reads back as a skeleton, not a 404: a 404 would prove nothing. Idempotent — purging an already-purged trace succeeds and leaves the original `content_redacted_at` in place.",
6571
+ moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/traces",
6572
+ httpMethod: "delete",
6573
+ pathParams: ["trace_id"],
6574
+ queryParams: [],
6575
+ flags: [{
6576
+ "name": "trace_id",
6577
+ "description": "Public ID of the trace",
6578
+ "required": true,
6579
+ "type": "string",
6580
+ "in": "path"
6581
+ }]
6582
+ },
6521
6583
  "list-triggers": {
6522
6584
  serviceClass: "Triggers",
6523
6585
  operationId: "listTriggers",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soat/cli",
3
- "version": "0.18.5",
3
+ "version": "0.19.0",
4
4
  "type": "module",
5
5
  "dependencies": {
6
6
  "@inquirer/input": "^5.1.2",
@@ -8,7 +8,7 @@
8
8
  "@ttoss/logger": "^0.8.19",
9
9
  "commander": "^15.0.0",
10
10
  "js-yaml": "^5.2.1",
11
- "@soat/sdk": "0.18.5"
11
+ "@soat/sdk": "0.19.0"
12
12
  },
13
13
  "devDependencies": {
14
14
  "@ttoss/config": "^1.37.17",