@naturali/cli 0.78.6 → 0.80.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 +427 -8
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -14,7 +14,7 @@ var __exportAll = (all, no_symbols) => {
|
|
|
14
14
|
};
|
|
15
15
|
//#endregion
|
|
16
16
|
//#region package.json
|
|
17
|
-
var version = "0.
|
|
17
|
+
var version = "0.80.0";
|
|
18
18
|
//#endregion
|
|
19
19
|
//#region ../sdk/src/generated/core/bodySerializer.gen.ts
|
|
20
20
|
const serializeFormDataPair = (data, key, value) => {
|
|
@@ -2479,6 +2479,126 @@ var Files = class {
|
|
|
2479
2479
|
});
|
|
2480
2480
|
}
|
|
2481
2481
|
};
|
|
2482
|
+
var Formations = class {
|
|
2483
|
+
/**
|
|
2484
|
+
* Validate a formation template
|
|
2485
|
+
*
|
|
2486
|
+
* Validates a formation template without creating any resources. Returns a list of errors and warnings. Accepts the template as a JSON object or as a YAML/JSON string.
|
|
2487
|
+
*
|
|
2488
|
+
*/
|
|
2489
|
+
static validateFormation(options) {
|
|
2490
|
+
return (options.client ?? client).post({
|
|
2491
|
+
url: "/v1/projects/{project_id}/formations/validate",
|
|
2492
|
+
...options,
|
|
2493
|
+
headers: {
|
|
2494
|
+
"Content-Type": "application/json",
|
|
2495
|
+
...options.headers
|
|
2496
|
+
}
|
|
2497
|
+
});
|
|
2498
|
+
}
|
|
2499
|
+
/**
|
|
2500
|
+
* Plan a formation deployment
|
|
2501
|
+
*
|
|
2502
|
+
* Computes a diff between the desired template and the current stack state without making any changes. Returns the list of planned actions.
|
|
2503
|
+
*
|
|
2504
|
+
*/
|
|
2505
|
+
static planFormation(options) {
|
|
2506
|
+
return (options.client ?? client).post({
|
|
2507
|
+
url: "/v1/projects/{project_id}/formations/plan",
|
|
2508
|
+
...options,
|
|
2509
|
+
headers: {
|
|
2510
|
+
"Content-Type": "application/json",
|
|
2511
|
+
...options.headers
|
|
2512
|
+
}
|
|
2513
|
+
});
|
|
2514
|
+
}
|
|
2515
|
+
/**
|
|
2516
|
+
* List formations
|
|
2517
|
+
*
|
|
2518
|
+
* Returns all formation stacks for a project
|
|
2519
|
+
*/
|
|
2520
|
+
static listFormations(options) {
|
|
2521
|
+
return (options.client ?? client).get({
|
|
2522
|
+
url: "/v1/projects/{project_id}/formations",
|
|
2523
|
+
...options
|
|
2524
|
+
});
|
|
2525
|
+
}
|
|
2526
|
+
/**
|
|
2527
|
+
* Create a new formation
|
|
2528
|
+
*
|
|
2529
|
+
* Validates the template, creates the formation record, then provisions all declared resources in dependency order.
|
|
2530
|
+
*
|
|
2531
|
+
* A **template-shape** error is refused with `400`. A **deploy** failure is not: the operation ran, so the formation is returned with `201` and `status: "failed"`, and `error` explains why (the resources created before the failure are rolled back). Read `status` — a `2xx` here means the deploy was attempted, not that it worked. The `builtin` CLI exits non-zero on that body so `create-formation && …` does not lie.
|
|
2532
|
+
*
|
|
2533
|
+
*/
|
|
2534
|
+
static createFormation(options) {
|
|
2535
|
+
return (options.client ?? client).post({
|
|
2536
|
+
url: "/v1/projects/{project_id}/formations",
|
|
2537
|
+
...options,
|
|
2538
|
+
headers: {
|
|
2539
|
+
"Content-Type": "application/json",
|
|
2540
|
+
...options.headers
|
|
2541
|
+
}
|
|
2542
|
+
});
|
|
2543
|
+
}
|
|
2544
|
+
/**
|
|
2545
|
+
* Delete an formation
|
|
2546
|
+
*
|
|
2547
|
+
* Deletes the formation stack and all its managed resources in reverse dependency order.
|
|
2548
|
+
*
|
|
2549
|
+
* A resource the platform refuses to delete on its own — most often an agent that has generation or trace history — fails the teardown with `409 FORMATION_DELETE_FAILED`, naming every blocking resource in `error.meta.failures`. Resolve the blockers (for an agent, `DELETE /v1/projects/{project_id}/agents/{agent_id}?force=true` also removes its generations and traces, and `deletion_policy: retain` exempts it from teardown entirely) and delete the formation again.
|
|
2550
|
+
*
|
|
2551
|
+
* A refusal the platform can foresee is found by a pre-flight, before the first delete: nothing is removed, and the formation stays `active` and intact for the retry. An unforeseeable error surfaces mid-teardown instead, where resources deleted before the blocker stay deleted and the formation is left in `delete_failed`. The error message states which happened.
|
|
2552
|
+
*
|
|
2553
|
+
*/
|
|
2554
|
+
static deleteFormation(options) {
|
|
2555
|
+
return (options.client ?? client).delete({
|
|
2556
|
+
url: "/v1/projects/{project_id}/formations/{formation_id}",
|
|
2557
|
+
...options
|
|
2558
|
+
});
|
|
2559
|
+
}
|
|
2560
|
+
/**
|
|
2561
|
+
* Get a specific formation
|
|
2562
|
+
*
|
|
2563
|
+
* Returns the formation stack including its current resources.
|
|
2564
|
+
*/
|
|
2565
|
+
static getFormation(options) {
|
|
2566
|
+
return (options.client ?? client).get({
|
|
2567
|
+
url: "/v1/projects/{project_id}/formations/{formation_id}",
|
|
2568
|
+
...options
|
|
2569
|
+
});
|
|
2570
|
+
}
|
|
2571
|
+
/**
|
|
2572
|
+
* Update an formation
|
|
2573
|
+
*
|
|
2574
|
+
* Applies a new template to the formation. Resources are created, updated, or deleted to reconcile the current state with the desired state.
|
|
2575
|
+
*
|
|
2576
|
+
* A **template-shape** error is refused with `400`. A **deploy** failure is not: the operation ran, so the formation is returned with `200` and `status: "failed"`, and `error` explains why. Read `status` — a `2xx` here means the deploy was attempted, not that it worked. The `builtin` CLI exits non-zero on that body so `update-formation && …` does not lie.
|
|
2577
|
+
*
|
|
2578
|
+
*/
|
|
2579
|
+
static updateFormation(options) {
|
|
2580
|
+
return (options.client ?? client).put({
|
|
2581
|
+
url: "/v1/projects/{project_id}/formations/{formation_id}",
|
|
2582
|
+
...options,
|
|
2583
|
+
headers: {
|
|
2584
|
+
"Content-Type": "application/json",
|
|
2585
|
+
...options.headers
|
|
2586
|
+
}
|
|
2587
|
+
});
|
|
2588
|
+
}
|
|
2589
|
+
/**
|
|
2590
|
+
* List formation operation events
|
|
2591
|
+
*
|
|
2592
|
+
* Returns all operations (create, update, delete) with their event logs for the formation, ordered chronologically.
|
|
2593
|
+
*
|
|
2594
|
+
*/
|
|
2595
|
+
static listFormationEvents(options) {
|
|
2596
|
+
return (options.client ?? client).get({
|
|
2597
|
+
url: "/v1/projects/{project_id}/formations/{formation_id}/events",
|
|
2598
|
+
...options
|
|
2599
|
+
});
|
|
2600
|
+
}
|
|
2601
|
+
};
|
|
2482
2602
|
var Generations = class {
|
|
2483
2603
|
/**
|
|
2484
2604
|
* List generations
|
|
@@ -3139,7 +3259,9 @@ var Orchestrations = class {
|
|
|
3139
3259
|
/**
|
|
3140
3260
|
* List orchestration runs
|
|
3141
3261
|
*
|
|
3142
|
-
* Returns orchestration runs the caller can access, optionally filtered by orchestration.
|
|
3262
|
+
* Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, or by whether the run has a parent at all.
|
|
3263
|
+
*
|
|
3264
|
+
* 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.
|
|
3143
3265
|
*/
|
|
3144
3266
|
static listOrchestrationRuns(options) {
|
|
3145
3267
|
return (options.client ?? client).get({
|
|
@@ -3789,7 +3911,7 @@ var Tools = class {
|
|
|
3789
3911
|
*
|
|
3790
3912
|
* Directly invokes a tool and returns its output. Supported for `http`, `mcp`, and `pipeline` tools. `client` tools cannot be invoked server-side and will return 422. A `pipeline` tool runs its declared steps in order and returns the mapped `output` (or the last step's output); `action` is ignored and `input` is the pipeline input.
|
|
3791
3913
|
* For `mcp` tools the `action` field is required and identifies which tool name to invoke. For `http` tools `action` is ignored. When an `mcp` tool declares an `actions` allowlist, an action outside it is rejected with `400 VALIDATION_FAILED` ("not available on this tool") before any outbound request is made.
|
|
3792
|
-
* `preset_parameters` stored on the tool are
|
|
3914
|
+
* `preset_parameters` stored on the tool are pinned over the caller-supplied `input` before execution: a key the tool presets keeps its preset value even when `input` sets it. Keys the presets do not name are taken from `input` as sent.
|
|
3793
3915
|
*
|
|
3794
3916
|
*/
|
|
3795
3917
|
static callTool(options) {
|
|
@@ -4299,6 +4421,7 @@ var NaturaliClient = class {
|
|
|
4299
4421
|
evaluations;
|
|
4300
4422
|
exceptions;
|
|
4301
4423
|
files;
|
|
4424
|
+
formations;
|
|
4302
4425
|
generations;
|
|
4303
4426
|
guardrails;
|
|
4304
4427
|
ingestionRules;
|
|
@@ -4346,6 +4469,7 @@ var NaturaliClient = class {
|
|
|
4346
4469
|
this.evaluations = bindResource(Evaluations, this.http);
|
|
4347
4470
|
this.exceptions = bindResource(Exceptions, this.http);
|
|
4348
4471
|
this.files = bindResource(Files, this.http);
|
|
4472
|
+
this.formations = bindResource(Formations, this.http);
|
|
4349
4473
|
this.generations = bindResource(Generations, this.http);
|
|
4350
4474
|
this.guardrails = bindResource(Guardrails, this.http);
|
|
4351
4475
|
this.ingestionRules = bindResource(IngestionRules, this.http);
|
|
@@ -4388,6 +4512,7 @@ var src_exports = /* @__PURE__ */ __exportAll({
|
|
|
4388
4512
|
Evaluations: () => Evaluations,
|
|
4389
4513
|
Exceptions: () => Exceptions,
|
|
4390
4514
|
Files: () => Files,
|
|
4515
|
+
Formations: () => Formations,
|
|
4391
4516
|
Generations: () => Generations,
|
|
4392
4517
|
Guardrails: () => Guardrails,
|
|
4393
4518
|
IngestionRules: () => IngestionRules,
|
|
@@ -10107,6 +10232,284 @@ const routes = {
|
|
|
10107
10232
|
"in": "path"
|
|
10108
10233
|
}]
|
|
10109
10234
|
},
|
|
10235
|
+
"validate-formation": {
|
|
10236
|
+
serviceClass: "Formations",
|
|
10237
|
+
operationId: "validateFormation",
|
|
10238
|
+
description: "Validates a formation template without creating any resources. Returns a list of errors and warnings. Accepts the template as a JSON object or as a YAML/JSON string.",
|
|
10239
|
+
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/formations",
|
|
10240
|
+
httpMethod: "post",
|
|
10241
|
+
pathParams: ["project_id"],
|
|
10242
|
+
queryParams: [],
|
|
10243
|
+
flags: [
|
|
10244
|
+
{
|
|
10245
|
+
"name": "project_id",
|
|
10246
|
+
"description": "Project public ID (proj_ prefix).",
|
|
10247
|
+
"required": true,
|
|
10248
|
+
"type": "string",
|
|
10249
|
+
"in": "path"
|
|
10250
|
+
},
|
|
10251
|
+
{
|
|
10252
|
+
"name": "template",
|
|
10253
|
+
"description": "A formation template supplied as either a JSON object or a YAML/JSON string. When a string is provided the server parses it with a YAML parser (JSON is valid YAML) before processing.\n",
|
|
10254
|
+
"required": false,
|
|
10255
|
+
"type": "string",
|
|
10256
|
+
"in": "body"
|
|
10257
|
+
},
|
|
10258
|
+
{
|
|
10259
|
+
"name": "parameters",
|
|
10260
|
+
"description": "Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`. When provided, the validation result also reports required parameters that are still missing after applying these values.\n",
|
|
10261
|
+
"required": false,
|
|
10262
|
+
"type": "object",
|
|
10263
|
+
"in": "body"
|
|
10264
|
+
}
|
|
10265
|
+
]
|
|
10266
|
+
},
|
|
10267
|
+
"plan-formation": {
|
|
10268
|
+
serviceClass: "Formations",
|
|
10269
|
+
operationId: "planFormation",
|
|
10270
|
+
description: "Computes a diff between the desired template and the current stack state without making any changes. Returns the list of planned actions.",
|
|
10271
|
+
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/formations",
|
|
10272
|
+
httpMethod: "post",
|
|
10273
|
+
pathParams: ["project_id"],
|
|
10274
|
+
queryParams: [],
|
|
10275
|
+
flags: [
|
|
10276
|
+
{
|
|
10277
|
+
"name": "project_id",
|
|
10278
|
+
"description": "Project public ID (proj_ prefix).",
|
|
10279
|
+
"required": true,
|
|
10280
|
+
"type": "string",
|
|
10281
|
+
"in": "path"
|
|
10282
|
+
},
|
|
10283
|
+
{
|
|
10284
|
+
"name": "formation_id",
|
|
10285
|
+
"description": "Existing formation ID to compare against. Omit for new formation planning.",
|
|
10286
|
+
"required": false,
|
|
10287
|
+
"type": "string",
|
|
10288
|
+
"in": "body"
|
|
10289
|
+
},
|
|
10290
|
+
{
|
|
10291
|
+
"name": "template",
|
|
10292
|
+
"description": "A formation template supplied as either a JSON object or a YAML/JSON string. When a string is provided the server parses it with a YAML parser (JSON is valid YAML) before processing.\n",
|
|
10293
|
+
"required": true,
|
|
10294
|
+
"type": "string",
|
|
10295
|
+
"in": "body"
|
|
10296
|
+
},
|
|
10297
|
+
{
|
|
10298
|
+
"name": "parameters",
|
|
10299
|
+
"description": "Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`. A parameter declared with `use_previous_value: true` may be omitted to reuse its stored value.\n",
|
|
10300
|
+
"required": false,
|
|
10301
|
+
"type": "object",
|
|
10302
|
+
"in": "body"
|
|
10303
|
+
}
|
|
10304
|
+
]
|
|
10305
|
+
},
|
|
10306
|
+
"list-formations": {
|
|
10307
|
+
serviceClass: "Formations",
|
|
10308
|
+
operationId: "listFormations",
|
|
10309
|
+
description: "Returns all formation stacks for a project",
|
|
10310
|
+
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/formations",
|
|
10311
|
+
httpMethod: "get",
|
|
10312
|
+
pathParams: ["project_id"],
|
|
10313
|
+
queryParams: ["limit", "offset"],
|
|
10314
|
+
flags: [
|
|
10315
|
+
{
|
|
10316
|
+
"name": "project_id",
|
|
10317
|
+
"description": "Project public ID (proj_ prefix).",
|
|
10318
|
+
"required": true,
|
|
10319
|
+
"type": "string",
|
|
10320
|
+
"in": "path"
|
|
10321
|
+
},
|
|
10322
|
+
{
|
|
10323
|
+
"name": "limit",
|
|
10324
|
+
"description": "Maximum number of results to return",
|
|
10325
|
+
"required": false,
|
|
10326
|
+
"type": "integer",
|
|
10327
|
+
"in": "query"
|
|
10328
|
+
},
|
|
10329
|
+
{
|
|
10330
|
+
"name": "offset",
|
|
10331
|
+
"description": "Number of results to skip",
|
|
10332
|
+
"required": false,
|
|
10333
|
+
"type": "integer",
|
|
10334
|
+
"in": "query"
|
|
10335
|
+
}
|
|
10336
|
+
]
|
|
10337
|
+
},
|
|
10338
|
+
"create-formation": {
|
|
10339
|
+
serviceClass: "Formations",
|
|
10340
|
+
operationId: "createFormation",
|
|
10341
|
+
description: "Validates the template, creates the formation record, then provisions all declared resources in dependency order. A **template-shape** error is refused with `400`. A **deploy** failure is not: the operation ran, so the formation is returned with `201` and `status: \"failed\"`, and `error` explains why (the resources created before the failure are rolled back). Read `status` — a `2xx` here means the deploy was attempted, not that it worked. The `builtin` CLI exits non-zero on that body so `create-formation && …` does not lie.",
|
|
10342
|
+
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/formations",
|
|
10343
|
+
httpMethod: "post",
|
|
10344
|
+
pathParams: ["project_id"],
|
|
10345
|
+
queryParams: [],
|
|
10346
|
+
flags: [
|
|
10347
|
+
{
|
|
10348
|
+
"name": "project_id",
|
|
10349
|
+
"description": "Project public ID (proj_ prefix).",
|
|
10350
|
+
"required": true,
|
|
10351
|
+
"type": "string",
|
|
10352
|
+
"in": "path"
|
|
10353
|
+
},
|
|
10354
|
+
{
|
|
10355
|
+
"name": "name",
|
|
10356
|
+
"description": "Human-readable name for the formation stack",
|
|
10357
|
+
"required": true,
|
|
10358
|
+
"type": "string",
|
|
10359
|
+
"in": "body"
|
|
10360
|
+
},
|
|
10361
|
+
{
|
|
10362
|
+
"name": "template",
|
|
10363
|
+
"description": "A formation template supplied as either a JSON object or a YAML/JSON string. When a string is provided the server parses it with a YAML parser (JSON is valid YAML) before processing.\n",
|
|
10364
|
+
"required": true,
|
|
10365
|
+
"type": "string",
|
|
10366
|
+
"in": "body"
|
|
10367
|
+
},
|
|
10368
|
+
{
|
|
10369
|
+
"name": "parameters",
|
|
10370
|
+
"description": "Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`. Required parameters (those without a default) must be provided here.\n",
|
|
10371
|
+
"required": false,
|
|
10372
|
+
"type": "object",
|
|
10373
|
+
"in": "body"
|
|
10374
|
+
},
|
|
10375
|
+
{
|
|
10376
|
+
"name": "metadata",
|
|
10377
|
+
"description": "Static annotations stored on the formation record. This field is NOT a substitution site: `sub`/`param`/`ref` expressions are rejected with 400 (`FORMATION_INVALID_METADATA`). For deploy-time substitution use the template's top-level `metadata` block, which is resolved into `resolved_metadata`.\n",
|
|
10378
|
+
"required": false,
|
|
10379
|
+
"type": "object",
|
|
10380
|
+
"in": "body"
|
|
10381
|
+
}
|
|
10382
|
+
]
|
|
10383
|
+
},
|
|
10384
|
+
"get-formation": {
|
|
10385
|
+
serviceClass: "Formations",
|
|
10386
|
+
operationId: "getFormation",
|
|
10387
|
+
description: "Returns the formation stack including its current resources.",
|
|
10388
|
+
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/formations",
|
|
10389
|
+
httpMethod: "get",
|
|
10390
|
+
pathParams: ["project_id", "formation_id"],
|
|
10391
|
+
queryParams: [],
|
|
10392
|
+
flags: [{
|
|
10393
|
+
"name": "project_id",
|
|
10394
|
+
"description": "Project public ID (proj_ prefix).",
|
|
10395
|
+
"required": true,
|
|
10396
|
+
"type": "string",
|
|
10397
|
+
"in": "path"
|
|
10398
|
+
}, {
|
|
10399
|
+
"name": "formation_id",
|
|
10400
|
+
"description": "",
|
|
10401
|
+
"required": true,
|
|
10402
|
+
"type": "string",
|
|
10403
|
+
"in": "path"
|
|
10404
|
+
}]
|
|
10405
|
+
},
|
|
10406
|
+
"update-formation": {
|
|
10407
|
+
serviceClass: "Formations",
|
|
10408
|
+
operationId: "updateFormation",
|
|
10409
|
+
description: "Applies a new template to the formation. Resources are created, updated, or deleted to reconcile the current state with the desired state. A **template-shape** error is refused with `400`. A **deploy** failure is not: the operation ran, so the formation is returned with `200` and `status: \"failed\"`, and `error` explains why. Read `status` — a `2xx` here means the deploy was attempted, not that it worked. The `builtin` CLI exits non-zero on that body so `update-formation && …` does not lie.",
|
|
10410
|
+
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/formations",
|
|
10411
|
+
httpMethod: "put",
|
|
10412
|
+
pathParams: ["project_id", "formation_id"],
|
|
10413
|
+
queryParams: [],
|
|
10414
|
+
flags: [
|
|
10415
|
+
{
|
|
10416
|
+
"name": "project_id",
|
|
10417
|
+
"description": "Project public ID (proj_ prefix).",
|
|
10418
|
+
"required": true,
|
|
10419
|
+
"type": "string",
|
|
10420
|
+
"in": "path"
|
|
10421
|
+
},
|
|
10422
|
+
{
|
|
10423
|
+
"name": "formation_id",
|
|
10424
|
+
"description": "",
|
|
10425
|
+
"required": true,
|
|
10426
|
+
"type": "string",
|
|
10427
|
+
"in": "path"
|
|
10428
|
+
},
|
|
10429
|
+
{
|
|
10430
|
+
"name": "template",
|
|
10431
|
+
"description": "A formation template supplied as either a JSON object or a YAML/JSON string. When a string is provided the server parses it with a YAML parser (JSON is valid YAML) before processing.\n",
|
|
10432
|
+
"required": false,
|
|
10433
|
+
"type": "string",
|
|
10434
|
+
"in": "body"
|
|
10435
|
+
},
|
|
10436
|
+
{
|
|
10437
|
+
"name": "parameters",
|
|
10438
|
+
"description": "Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`. Required parameters (those without a default) must be provided here, unless the parameter is declared with `use_previous_value: true`, in which case omitting it reuses the previously stored value.\n",
|
|
10439
|
+
"required": false,
|
|
10440
|
+
"type": "object",
|
|
10441
|
+
"in": "body"
|
|
10442
|
+
},
|
|
10443
|
+
{
|
|
10444
|
+
"name": "metadata",
|
|
10445
|
+
"description": "Static annotations stored on the formation record. This field is NOT a substitution site: `sub`/`param`/`ref` expressions are rejected with 400 (`FORMATION_INVALID_METADATA`). For deploy-time substitution use the template's top-level `metadata` block, which is resolved into `resolved_metadata`.\n",
|
|
10446
|
+
"required": false,
|
|
10447
|
+
"type": "object",
|
|
10448
|
+
"in": "body"
|
|
10449
|
+
}
|
|
10450
|
+
]
|
|
10451
|
+
},
|
|
10452
|
+
"delete-formation": {
|
|
10453
|
+
serviceClass: "Formations",
|
|
10454
|
+
operationId: "deleteFormation",
|
|
10455
|
+
description: "Deletes the formation stack and all its managed resources in reverse dependency order. A resource the platform refuses to delete on its own — most often an agent that has generation or trace history — fails the teardown with `409 FORMATION_DELETE_FAILED`, naming every blocking resource in `error.meta.failures`. Resolve the blockers (for an agent, `DELETE /v1/projects/{project_id}/agents/{agent_id}?force=true` also removes its generations and traces, and `deletion_policy: retain` exempts it from teardown entirely) and delete the formation again. A refusal the platform can foresee is found by a pre-flight, before the first delete: nothing is removed, and the formation stays `active` and intact for the retry. An unforeseeable error surfaces mid-teardown instead, where resources deleted before the blocker stay deleted and the formation is left in `delete_failed`. The error message states which happened.",
|
|
10456
|
+
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/formations",
|
|
10457
|
+
httpMethod: "delete",
|
|
10458
|
+
pathParams: ["project_id", "formation_id"],
|
|
10459
|
+
queryParams: [],
|
|
10460
|
+
flags: [{
|
|
10461
|
+
"name": "project_id",
|
|
10462
|
+
"description": "Project public ID (proj_ prefix).",
|
|
10463
|
+
"required": true,
|
|
10464
|
+
"type": "string",
|
|
10465
|
+
"in": "path"
|
|
10466
|
+
}, {
|
|
10467
|
+
"name": "formation_id",
|
|
10468
|
+
"description": "",
|
|
10469
|
+
"required": true,
|
|
10470
|
+
"type": "string",
|
|
10471
|
+
"in": "path"
|
|
10472
|
+
}]
|
|
10473
|
+
},
|
|
10474
|
+
"list-formation-events": {
|
|
10475
|
+
serviceClass: "Formations",
|
|
10476
|
+
operationId: "listFormationEvents",
|
|
10477
|
+
description: "Returns all operations (create, update, delete) with their event logs for the formation, ordered chronologically.",
|
|
10478
|
+
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/formations",
|
|
10479
|
+
httpMethod: "get",
|
|
10480
|
+
pathParams: ["project_id", "formation_id"],
|
|
10481
|
+
queryParams: ["limit", "offset"],
|
|
10482
|
+
flags: [
|
|
10483
|
+
{
|
|
10484
|
+
"name": "project_id",
|
|
10485
|
+
"description": "Project public ID (proj_ prefix).",
|
|
10486
|
+
"required": true,
|
|
10487
|
+
"type": "string",
|
|
10488
|
+
"in": "path"
|
|
10489
|
+
},
|
|
10490
|
+
{
|
|
10491
|
+
"name": "formation_id",
|
|
10492
|
+
"description": "",
|
|
10493
|
+
"required": true,
|
|
10494
|
+
"type": "string",
|
|
10495
|
+
"in": "path"
|
|
10496
|
+
},
|
|
10497
|
+
{
|
|
10498
|
+
"name": "limit",
|
|
10499
|
+
"description": "Maximum number of results to return",
|
|
10500
|
+
"required": false,
|
|
10501
|
+
"type": "integer",
|
|
10502
|
+
"in": "query"
|
|
10503
|
+
},
|
|
10504
|
+
{
|
|
10505
|
+
"name": "offset",
|
|
10506
|
+
"description": "Number of results to skip",
|
|
10507
|
+
"required": false,
|
|
10508
|
+
"type": "integer",
|
|
10509
|
+
"in": "query"
|
|
10510
|
+
}
|
|
10511
|
+
]
|
|
10512
|
+
},
|
|
10110
10513
|
"list-generations": {
|
|
10111
10514
|
serviceClass: "Generations",
|
|
10112
10515
|
operationId: "listGenerations",
|
|
@@ -12073,12 +12476,14 @@ const routes = {
|
|
|
12073
12476
|
"list-orchestration-runs": {
|
|
12074
12477
|
serviceClass: "Orchestrations",
|
|
12075
12478
|
operationId: "listOrchestrationRuns",
|
|
12076
|
-
description: "Returns orchestration runs the caller can access, optionally filtered by orchestration.",
|
|
12479
|
+
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.",
|
|
12077
12480
|
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/orchestrations",
|
|
12078
12481
|
httpMethod: "get",
|
|
12079
12482
|
pathParams: ["project_id"],
|
|
12080
12483
|
queryParams: [
|
|
12081
12484
|
"orchestration_id",
|
|
12485
|
+
"parent_orchestration_run_id",
|
|
12486
|
+
"nested",
|
|
12082
12487
|
"limit",
|
|
12083
12488
|
"offset"
|
|
12084
12489
|
],
|
|
@@ -12097,6 +12502,20 @@ const routes = {
|
|
|
12097
12502
|
"type": "string",
|
|
12098
12503
|
"in": "query"
|
|
12099
12504
|
},
|
|
12505
|
+
{
|
|
12506
|
+
"name": "parent_orchestration_run_id",
|
|
12507
|
+
"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`.",
|
|
12508
|
+
"required": false,
|
|
12509
|
+
"type": "string",
|
|
12510
|
+
"in": "query"
|
|
12511
|
+
},
|
|
12512
|
+
{
|
|
12513
|
+
"name": "nested",
|
|
12514
|
+
"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`.",
|
|
12515
|
+
"required": false,
|
|
12516
|
+
"type": "boolean",
|
|
12517
|
+
"in": "query"
|
|
12518
|
+
},
|
|
12100
12519
|
{
|
|
12101
12520
|
"name": "limit",
|
|
12102
12521
|
"description": "Maximum number of results to return",
|
|
@@ -13727,7 +14146,7 @@ const routes = {
|
|
|
13727
14146
|
},
|
|
13728
14147
|
{
|
|
13729
14148
|
"name": "preset_parameters",
|
|
13730
|
-
"description": "Fixed parameters
|
|
14149
|
+
"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.",
|
|
13731
14150
|
"required": false,
|
|
13732
14151
|
"type": "object",
|
|
13733
14152
|
"in": "body"
|
|
@@ -13865,7 +14284,7 @@ const routes = {
|
|
|
13865
14284
|
},
|
|
13866
14285
|
{
|
|
13867
14286
|
"name": "preset_parameters",
|
|
13868
|
-
"description": "Fixed parameters
|
|
14287
|
+
"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.",
|
|
13869
14288
|
"required": false,
|
|
13870
14289
|
"type": "object",
|
|
13871
14290
|
"in": "body"
|
|
@@ -13918,7 +14337,7 @@ const routes = {
|
|
|
13918
14337
|
"call-tool": {
|
|
13919
14338
|
serviceClass: "Tools",
|
|
13920
14339
|
operationId: "callTool",
|
|
13921
|
-
description: "Directly invokes a tool and returns its output. Supported for `http`, `mcp`, and `pipeline` tools. `client` tools cannot be invoked server-side and will return 422. A `pipeline` tool runs its declared steps in order and returns the mapped `output` (or the last step's output); `action` is ignored and `input` is the pipeline input. For `mcp` tools the `action` field is required and identifies which tool name to invoke. For `http` tools `action` is ignored. When an `mcp` tool declares an `actions` allowlist, an action outside it is rejected with `400 VALIDATION_FAILED` (\"not available on this tool\") before any outbound request is made. `preset_parameters` stored on the tool are
|
|
14340
|
+
description: "Directly invokes a tool and returns its output. Supported for `http`, `mcp`, and `pipeline` tools. `client` tools cannot be invoked server-side and will return 422. A `pipeline` tool runs its declared steps in order and returns the mapped `output` (or the last step's output); `action` is ignored and `input` is the pipeline input. For `mcp` tools the `action` field is required and identifies which tool name to invoke. For `http` tools `action` is ignored. When an `mcp` tool declares an `actions` allowlist, an action outside it is rejected with `400 VALIDATION_FAILED` (\"not available on this tool\") before any outbound request is made. `preset_parameters` stored on the tool are pinned over the caller-supplied `input` before execution: a key the tool presets keeps its preset value even when `input` sets it. Keys the presets do not name are taken from `input` as sent.",
|
|
13922
14341
|
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/tools",
|
|
13923
14342
|
httpMethod: "post",
|
|
13924
14343
|
pathParams: ["project_id", "tool_id"],
|
|
@@ -13947,7 +14366,7 @@ const routes = {
|
|
|
13947
14366
|
},
|
|
13948
14367
|
{
|
|
13949
14368
|
"name": "input",
|
|
13950
|
-
"description": "Input parameters for the tool call. These are merged with the tool's `preset_parameters` before execution
|
|
14369
|
+
"description": "Input parameters for the tool call. These are merged with the tool's `preset_parameters` before execution; a preset value wins over the same key sent here.\n",
|
|
13951
14370
|
"required": false,
|
|
13952
14371
|
"type": "object",
|
|
13953
14372
|
"in": "body"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@naturali/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.80.0",
|
|
4
4
|
"description": "Command-line interface for the naturali.ai API, generated from its OpenAPI specs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"tsx": "^4.23.1",
|
|
31
31
|
"typescript": "~6.0.3",
|
|
32
32
|
"vitest": "^4.1.10",
|
|
33
|
-
"@naturali/sdk": "0.
|
|
33
|
+
"@naturali/sdk": "0.80.0"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"generate": "tsx scripts/generate.ts",
|