@soat/cli 0.41.0 → 0.43.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 +85 -7
- 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.43.0";
|
|
17
17
|
|
|
18
18
|
//#endregion
|
|
19
19
|
//#region src/cli-wrappers/wrappers/formations.ts
|
|
@@ -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",
|
|
@@ -5770,6 +5776,28 @@ var routes = {
|
|
|
5770
5776
|
"in": "path"
|
|
5771
5777
|
}]
|
|
5772
5778
|
},
|
|
5779
|
+
"pause-orchestration-run": {
|
|
5780
|
+
serviceClass: "Orchestrations",
|
|
5781
|
+
operationId: "pauseOrchestrationRun",
|
|
5782
|
+
description: "Parks a run in flight as `awaiting_input` at its next checkpoint, with a `required_action` of type `paused` naming the pause as operator-initiated rather than a node's. Unlike cancel, the run keeps its last checkpoint and resume-orchestration-run re-drives it from there — so work already done is deferred rather than discarded. A `queued` or `sleeping` run is parked immediately (a sleeping run keeps the wake it was due, and resuming hands it back to the scheduler at that instant). A `running` run keeps running until the round in flight reaches its checkpoint, so the response may still read `running` while `pause_requested_at` is set. A run already parked on a human, webhook or approval node keeps that node's `required_action`; the pause is still recorded, which is what makes submit-human-input refuse until the run is resumed. The pause fans out to the run's `loop` / `sub_orchestration` descendants — each parks at its own next checkpoint — because otherwise a parent's pause would bound nothing. Resuming does not fan out: each parked descendant is resumed by its own id. Idempotent: pausing an already-paused run answers with it unchanged.",
|
|
5783
|
+
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/orchestrations",
|
|
5784
|
+
httpMethod: "post",
|
|
5785
|
+
pathParams: ["orchestration_run_id"],
|
|
5786
|
+
queryParams: [],
|
|
5787
|
+
flags: [{
|
|
5788
|
+
"name": "orchestration_run_id",
|
|
5789
|
+
"description": "Public ID of the run (run_...)",
|
|
5790
|
+
"required": true,
|
|
5791
|
+
"type": "string",
|
|
5792
|
+
"in": "path"
|
|
5793
|
+
}, {
|
|
5794
|
+
"name": "reason",
|
|
5795
|
+
"description": "Why the run is being paused, surfaced on the parked run's `required_action.reason` and on `pause_reason`.",
|
|
5796
|
+
"required": false,
|
|
5797
|
+
"type": "string",
|
|
5798
|
+
"in": "body"
|
|
5799
|
+
}]
|
|
5800
|
+
},
|
|
5773
5801
|
"submit-human-input": {
|
|
5774
5802
|
serviceClass: "Orchestrations",
|
|
5775
5803
|
operationId: "submitHumanInput",
|
|
@@ -5801,7 +5829,7 @@ var routes = {
|
|
|
5801
5829
|
"resume-orchestration-run": {
|
|
5802
5830
|
serviceClass: "Orchestrations",
|
|
5803
5831
|
operationId: "resumeOrchestrationRun",
|
|
5804
|
-
description: "Re-drives an awaiting_input orchestration run from its last checkpoint. This does not satisfy the pause itself — it carries no node_id or payload, so a run parked on a human or webhook-receive node re-parks on the same node. Use submit-human-input to supply the awaited payload and advance the run.",
|
|
5832
|
+
description: "Re-drives an awaiting_input orchestration run from its last checkpoint. This does not satisfy the pause itself — it carries no node_id or payload, so a run parked on a human or webhook-receive node re-parks on the same node. Use submit-human-input to supply the awaited payload and advance the run. It is also the only thing that lifts an operator pause (pause-orchestration-run): a run parked with `required_action.type` of `paused` re-drives the frontier that had not run yet, and one paused mid-timer goes back to `sleeping` for the wake it was already due.",
|
|
5805
5833
|
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/orchestrations",
|
|
5806
5834
|
httpMethod: "post",
|
|
5807
5835
|
pathParams: ["orchestration_run_id"],
|
|
@@ -6167,7 +6195,7 @@ var routes = {
|
|
|
6167
6195
|
"create-quota": {
|
|
6168
6196
|
serviceClass: "Quotas",
|
|
6169
6197
|
operationId: "createQuota",
|
|
6170
|
-
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`. 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 duplicate quota (same project, scope, scope_ref, metric, window) is rejected with 409.",
|
|
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`. 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.",
|
|
6171
6199
|
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/quotas",
|
|
6172
6200
|
httpMethod: "post",
|
|
6173
6201
|
pathParams: [],
|
|
@@ -6220,6 +6248,12 @@ var routes = {
|
|
|
6220
6248
|
"required": false,
|
|
6221
6249
|
"type": "string",
|
|
6222
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"
|
|
6223
6257
|
}]
|
|
6224
6258
|
},
|
|
6225
6259
|
"get-quota": {
|
|
@@ -6807,11 +6841,11 @@ var routes = {
|
|
|
6807
6841
|
"list-tasks": {
|
|
6808
6842
|
serviceClass: "Tasks",
|
|
6809
6843
|
operationId: "listTasks",
|
|
6810
|
-
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.",
|
|
6811
6845
|
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/tasks",
|
|
6812
6846
|
httpMethod: "get",
|
|
6813
6847
|
pathParams: [],
|
|
6814
|
-
queryParams: ["project_id", "workflow_id", "state", "status", "assignee", "limit", "offset"],
|
|
6848
|
+
queryParams: ["project_id", "workflow_id", "state", "status", "automation_status", "assignee", "limit", "offset"],
|
|
6815
6849
|
flags: [{
|
|
6816
6850
|
"name": "project_id",
|
|
6817
6851
|
"description": "",
|
|
@@ -6836,6 +6870,12 @@ var routes = {
|
|
|
6836
6870
|
"required": false,
|
|
6837
6871
|
"type": "string",
|
|
6838
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"
|
|
6839
6879
|
}, {
|
|
6840
6880
|
"name": "assignee",
|
|
6841
6881
|
"description": "",
|
|
@@ -7014,6 +7054,44 @@ var routes = {
|
|
|
7014
7054
|
"in": "body"
|
|
7015
7055
|
}]
|
|
7016
7056
|
},
|
|
7057
|
+
"pause-task": {
|
|
7058
|
+
serviceClass: "Tasks",
|
|
7059
|
+
operationId: "pauseTask",
|
|
7060
|
+
description: "Pauses a task's automation. While a pause is in force no state's `on_enter` dispatches and no retry chain continues — an agent generation, a tool call and a sub-orchestration alike — so the task stops spending without losing its place. A workflow has no run object, so this is the workflow half of pause-orchestration-run: the pause lands on the instance, which is the task. Transitions are deliberately still allowed — a move costs nothing while every dispatch it would start is suppressed — so a board stays usable under a pause. Entering a state whose dispatch is suppressed records `automation_status: paused`, which resume-task reads to know that state still owes its work. A dispatch already in flight is left to finish, and its outcome still routes; only what would start after it is suppressed. Idempotent: pausing an already-paused task answers with it unchanged.",
|
|
7061
|
+
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/tasks",
|
|
7062
|
+
httpMethod: "post",
|
|
7063
|
+
pathParams: ["task_id"],
|
|
7064
|
+
queryParams: [],
|
|
7065
|
+
flags: [{
|
|
7066
|
+
"name": "task_id",
|
|
7067
|
+
"description": "",
|
|
7068
|
+
"required": true,
|
|
7069
|
+
"type": "string",
|
|
7070
|
+
"in": "path"
|
|
7071
|
+
}, {
|
|
7072
|
+
"name": "reason",
|
|
7073
|
+
"description": "Why the task is being paused, surfaced on `pause_reason`.",
|
|
7074
|
+
"required": false,
|
|
7075
|
+
"type": "string",
|
|
7076
|
+
"in": "body"
|
|
7077
|
+
}]
|
|
7078
|
+
},
|
|
7079
|
+
"resume-task": {
|
|
7080
|
+
serviceClass: "Tasks",
|
|
7081
|
+
operationId: "resumeTask",
|
|
7082
|
+
description: "Lifts a task's pause. When the pause suppressed the current state's `on_enter` — `automation_status: paused` — that dispatch is started now, as the caller resuming rather than as whoever last moved the task. A state whose dispatch had already completed, or that declares none, is left alone, so a resume never re-spends work the pause did not stop. This is the only way a pause is lifted; a task that is merely idle is advanced by firing a transition instead.",
|
|
7083
|
+
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/tasks",
|
|
7084
|
+
httpMethod: "post",
|
|
7085
|
+
pathParams: ["task_id"],
|
|
7086
|
+
queryParams: [],
|
|
7087
|
+
flags: [{
|
|
7088
|
+
"name": "task_id",
|
|
7089
|
+
"description": "",
|
|
7090
|
+
"required": true,
|
|
7091
|
+
"type": "string",
|
|
7092
|
+
"in": "path"
|
|
7093
|
+
}]
|
|
7094
|
+
},
|
|
7017
7095
|
"get-task-history": {
|
|
7018
7096
|
serviceClass: "Tasks",
|
|
7019
7097
|
operationId: "getTaskHistory",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soat/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.43.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.43.0",
|
|
26
26
|
"@ttoss/logger": "^0.8.19",
|
|
27
27
|
"commander": "^15.0.0",
|
|
28
28
|
"js-yaml": "^5.2.1"
|