@soat/cli 0.52.0 → 0.54.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 +47 -12
- 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.54.0";
|
|
17
17
|
|
|
18
18
|
//#endregion
|
|
19
19
|
//#region src/cli-wrappers/wrappers/formations.ts
|
|
@@ -437,11 +437,11 @@ var routes = {
|
|
|
437
437
|
"list-activity": {
|
|
438
438
|
serviceClass: "Activity",
|
|
439
439
|
operationId: "listActivity",
|
|
440
|
-
description: "Returns activity entries for a project, newest first, filterable by kind and
|
|
440
|
+
description: "Returns activity entries for a project, newest first, filterable by kind, severity, agent, generation and orchestration run — every filter composable with the rest. Paginated with an opaque cursor rather than offset/limit — pass the previous page's `next_cursor` to fetch the next one; a `null` `next_cursor` means there is no more data.",
|
|
441
441
|
moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/activity",
|
|
442
442
|
httpMethod: "get",
|
|
443
443
|
pathParams: [],
|
|
444
|
-
queryParams: ["project_id", "kind", "severity", "cursor", "limit"],
|
|
444
|
+
queryParams: ["project_id", "kind", "severity", "agent_id", "generation_id", "orchestration_run_id", "cursor", "limit"],
|
|
445
445
|
flags: [{
|
|
446
446
|
"name": "project_id",
|
|
447
447
|
"description": "Project ID (required if not using project key auth)",
|
|
@@ -460,6 +460,24 @@ var routes = {
|
|
|
460
460
|
"required": false,
|
|
461
461
|
"type": "string",
|
|
462
462
|
"in": "query"
|
|
463
|
+
}, {
|
|
464
|
+
"name": "agent_id",
|
|
465
|
+
"description": "Filter to entries produced by one agent. Composable with every other filter — entries carry one agent, one generation and one run, so naming two narrows to the rows where both hold.",
|
|
466
|
+
"required": false,
|
|
467
|
+
"type": "string",
|
|
468
|
+
"in": "query"
|
|
469
|
+
}, {
|
|
470
|
+
"name": "generation_id",
|
|
471
|
+
"description": "Filter to entries produced during one agent generation. This is what turns `tool_resolution_failed` from alertable into usable: the warning for a suspect turn is one query rather than a scan of the project's feed.",
|
|
472
|
+
"required": false,
|
|
473
|
+
"type": "string",
|
|
474
|
+
"in": "query"
|
|
475
|
+
}, {
|
|
476
|
+
"name": "orchestration_run_id",
|
|
477
|
+
"description": "Filter to entries produced during one orchestration run.",
|
|
478
|
+
"required": false,
|
|
479
|
+
"type": "string",
|
|
480
|
+
"in": "query"
|
|
463
481
|
}, {
|
|
464
482
|
"name": "cursor",
|
|
465
483
|
"description": "Opaque cursor from a previous page's `next_cursor`",
|
|
@@ -832,7 +850,7 @@ var routes = {
|
|
|
832
850
|
"in": "body"
|
|
833
851
|
}, {
|
|
834
852
|
"name": "boundary_policy",
|
|
835
|
-
"description": "",
|
|
853
|
+
"description": "Restricts which SOAT actions the agent may invoke. Evaluated as the intersection with the caller's own policy, so it can only narrow.",
|
|
836
854
|
"required": false,
|
|
837
855
|
"type": "object",
|
|
838
856
|
"in": "body"
|
|
@@ -996,7 +1014,7 @@ var routes = {
|
|
|
996
1014
|
"in": "body"
|
|
997
1015
|
}, {
|
|
998
1016
|
"name": "boundary_policy",
|
|
999
|
-
"description": "",
|
|
1017
|
+
"description": "Restricts which SOAT actions the agent may invoke. Evaluated as the intersection with the caller's own policy, so it can only narrow.",
|
|
1000
1018
|
"required": false,
|
|
1001
1019
|
"type": "object",
|
|
1002
1020
|
"in": "body"
|
|
@@ -1144,7 +1162,7 @@ var routes = {
|
|
|
1144
1162
|
"in": "body"
|
|
1145
1163
|
}, {
|
|
1146
1164
|
"name": "boundary_policy",
|
|
1147
|
-
"description": "",
|
|
1165
|
+
"description": "Restricts which SOAT actions the agent may invoke. Evaluated as the intersection with the caller's own policy, so it can only narrow.",
|
|
1148
1166
|
"required": false,
|
|
1149
1167
|
"type": "object",
|
|
1150
1168
|
"in": "body"
|
|
@@ -6284,6 +6302,12 @@ var routes = {
|
|
|
6284
6302
|
"required": false,
|
|
6285
6303
|
"type": "object",
|
|
6286
6304
|
"in": "body"
|
|
6305
|
+
}, {
|
|
6306
|
+
"name": "idempotency_key",
|
|
6307
|
+
"description": "Deduplication key, unique within the project, that makes a retry of an ambiguous failure safe. The first request under a key starts the run and answers `201`; any later request carrying the same key answers `200` with that same run, whatever state it has reached — including a retry that arrives while the original is still running.\n\nThe key is claimed by the run record and stays claimed for as long as the record exists, so it never silently expires and lets a second run through.\n\n`orchestration_id`, `input`, `tool_context` and `metadata` are the request the key names: reusing a key with any of them changed is `409 IDEMPOTENCY_KEY_REUSED` rather than a replay of a run that does something else. `wait` is not part of that comparison — it says how the caller waits, not what the run is — so a retry may flip it.",
|
|
6308
|
+
"required": false,
|
|
6309
|
+
"type": "string",
|
|
6310
|
+
"in": "body"
|
|
6287
6311
|
}, {
|
|
6288
6312
|
"name": "wait",
|
|
6289
6313
|
"description": "When true, block until the run reaches a terminal (succeeded/failed) or awaiting_input state and return the settled run. When false (default), return immediately with status \"queued\" and execute the run in the background.",
|
|
@@ -9451,6 +9475,19 @@ var findUnknownFlags = args => {
|
|
|
9451
9475
|
|
|
9452
9476
|
//#endregion
|
|
9453
9477
|
//#region src/webhookSignature.ts
|
|
9478
|
+
/**
|
|
9479
|
+
* Verification of the signature on a payload the local `soat listen` listener
|
|
9480
|
+
* receives. The listener takes two kinds, both under `X-Soat-Signature`,
|
|
9481
|
+
* distinguished by the value's own prefix rather than by header name:
|
|
9482
|
+
*
|
|
9483
|
+
* - A **webhook delivery** carries `t=<unix>,v1=<hex>` — a digest over
|
|
9484
|
+
* `<t>.<raw body>`, so the timestamp is authenticated and a subscriber can
|
|
9485
|
+
* bound a replay by age.
|
|
9486
|
+
* - A **trigger** payload carries `sha256=<hex>`, a digest over the bare
|
|
9487
|
+
* body, which is the scheme a webhook-type trigger's sender signs with.
|
|
9488
|
+
*/
|
|
9489
|
+
/** Only the timestamped scheme starts this way; everything else is bare-body. */
|
|
9490
|
+
var TIMESTAMPED_PREFIX = "t=";
|
|
9454
9491
|
var digestMatches = args => {
|
|
9455
9492
|
const expectedBuffer = Buffer.from(args.expected, "utf8");
|
|
9456
9493
|
const actualBuffer = Buffer.from(args.actual, "utf8");
|
|
@@ -9495,10 +9532,8 @@ var headerValue = value => {
|
|
|
9495
9532
|
* Picks the scheme a delivery used and verifies it, when a secret is supplied.
|
|
9496
9533
|
*/
|
|
9497
9534
|
var inspectDeliverySignature = args => {
|
|
9498
|
-
const
|
|
9499
|
-
const
|
|
9500
|
-
const scheme = timestamped ? "v2" : "v1";
|
|
9501
|
-
const signature = timestamped || bareBody;
|
|
9535
|
+
const signature = headerValue(args.headers["x-soat-signature"]);
|
|
9536
|
+
const scheme = signature.startsWith(TIMESTAMPED_PREFIX) ? "v2" : "v1";
|
|
9502
9537
|
if (!args.secret) return {
|
|
9503
9538
|
signature,
|
|
9504
9539
|
scheme,
|
|
@@ -9510,11 +9545,11 @@ var inspectDeliverySignature = args => {
|
|
|
9510
9545
|
valid: scheme === "v2" ? verifyTimestampedSignature({
|
|
9511
9546
|
secret: args.secret,
|
|
9512
9547
|
payload: args.payload,
|
|
9513
|
-
header:
|
|
9548
|
+
header: signature
|
|
9514
9549
|
}) : verifyBareBodySignature({
|
|
9515
9550
|
secret: args.secret,
|
|
9516
9551
|
payload: args.payload,
|
|
9517
|
-
header:
|
|
9552
|
+
header: signature
|
|
9518
9553
|
})
|
|
9519
9554
|
};
|
|
9520
9555
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soat/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.54.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.6",
|
|
24
24
|
"@inquirer/password": "^5.2.2",
|
|
25
|
-
"@soat/sdk": "0.
|
|
25
|
+
"@soat/sdk": "0.54.0",
|
|
26
26
|
"@ttoss/logger": "^0.8.20",
|
|
27
27
|
"commander": "^15.0.0",
|
|
28
28
|
"js-yaml": "^5.4.2"
|