@soat/sdk 0.36.0 → 0.37.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.cjs +6 -4
- package/dist/index.d.cts +49 -33
- package/dist/index.d.mts +49 -33
- package/dist/index.mjs +6 -4
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1044,7 +1044,7 @@ var AiProviders = class {
|
|
|
1044
1044
|
/**
|
|
1045
1045
|
* Upsert per-provider price overrides
|
|
1046
1046
|
*
|
|
1047
|
-
* Upserts price overrides for this AI provider instance, keyed on (model, effective_from). The provider slug is taken from the AI provider itself, so only the model, rates, and effective_from are supplied. Authorized by the caller's access to the provider's project. `effective_from` must be in the future — past prices are immutable, so ship
|
|
1047
|
+
* Upserts price overrides for this AI provider instance, keyed on (model, effective_from). The provider slug is taken from the AI provider itself, so only the model, rates, and effective_from are supplied. Authorized by the caller's access to the provider's project. `effective_from` must be in the future once the (model, component) has a price row — past prices are immutable, so corrections ship as new future-dated rows. A first price for a (model, component) nothing prices yet may be dated now or earlier, so a new provider is never live and unpriced.
|
|
1048
1048
|
*
|
|
1049
1049
|
*/
|
|
1050
1050
|
static updateAiProviderPrices(options) {
|
|
@@ -2317,6 +2317,8 @@ var Formations = class {
|
|
|
2317
2317
|
*
|
|
2318
2318
|
* 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.
|
|
2319
2319
|
*
|
|
2320
|
+
* A deploy that replaced a resource and could not delete the superseded one answers `status: "active"` with `error.code: "FORMATION_REPLACE_CLEANUP_FAILED"` — the desired state is realised, and `error.meta.failures` names every resource still live. The next deploy retries the disposal.
|
|
2321
|
+
*
|
|
2320
2322
|
*/
|
|
2321
2323
|
static updateFormation(options) {
|
|
2322
2324
|
return (options.client ?? client).put({
|
|
@@ -3162,7 +3164,7 @@ var Projects = class {
|
|
|
3162
3164
|
/**
|
|
3163
3165
|
* Update a project
|
|
3164
3166
|
*
|
|
3165
|
-
* 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 continuation-chain ceiling (`max_chain_generations`), 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.
|
|
3167
|
+
* 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 continuation-chain ceiling (`max_chain_generations`), its orchestration nesting bound (`max_run_depth`), 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.
|
|
3166
3168
|
*/
|
|
3167
3169
|
static updateProject(options) {
|
|
3168
3170
|
return (options.client ?? client).patch({
|
|
@@ -3189,7 +3191,7 @@ var Projects = class {
|
|
|
3189
3191
|
/**
|
|
3190
3192
|
* Upsert a project's price rows
|
|
3191
3193
|
*
|
|
3192
|
-
* Upserts project + provider-slug price rows, keyed on (provider, model, effective_from). A row covers all of the project's instances of that provider slug. Authorized by the caller's access to the project. `effective_from` must be in the future — past prices are immutable, so ship
|
|
3194
|
+
* Upserts project + provider-slug price rows, keyed on (provider, model, effective_from). A row covers all of the project's instances of that provider slug. Authorized by the caller's access to the project. `effective_from` must be in the future once the (provider, model, component) is priced — past prices are immutable, so corrections ship as new future-dated rows. A first price, with no row for the project or the global default, may be dated now or earlier.
|
|
3193
3195
|
*
|
|
3194
3196
|
*/
|
|
3195
3197
|
static updateProjectPrices(options) {
|
|
@@ -3963,7 +3965,7 @@ var Usage = class {
|
|
|
3963
3965
|
/**
|
|
3964
3966
|
* Upsert price-book rows
|
|
3965
3967
|
*
|
|
3966
|
-
* Upserts price rows keyed on (provider, model, effective_from). Admin only. `effective_from` must be in the future — past prices are immutable so recorded costs stay explainable; ship corrections as new future-dated rows.
|
|
3968
|
+
* Upserts price rows keyed on (provider, model, effective_from). Admin only. `effective_from` must be in the future once the (provider, model, component) is priced — past prices are immutable so recorded costs stay explainable; ship corrections as new future-dated rows. A first price, with no row in this scope or any broader one, may be dated now or earlier.
|
|
3967
3969
|
*
|
|
3968
3970
|
*/
|
|
3969
3971
|
static upsertPriceBook(options) {
|
package/dist/index.d.cts
CHANGED
|
@@ -462,11 +462,11 @@ type Agent = {
|
|
|
462
462
|
*/
|
|
463
463
|
max_steps?: number | null;
|
|
464
464
|
/**
|
|
465
|
-
* Tool choice strategy. Accepts a string (`"auto"`, `"required"`) or an object (`{ "type": "tool", "tool_name": "my_tool" }`). A forcing value (`"required"` or the object form) forbids a final assistant message on every step of every turn, including a resumed or continued one, so it requires a `
|
|
465
|
+
* Tool choice strategy. Accepts a string (`"auto"`, `"required"`) or an object (`{ "type": "tool", "tool_name": "my_tool" }`). A forcing value (`"required"` or the object form) forbids a final assistant message on every step of every turn, including a resumed or continued one, so it requires a `has_tool_call` entry in `stop_conditions` — otherwise the write is refused with `FORCED_TOOL_CHOICE_CANNOT_STOP`.
|
|
466
466
|
*/
|
|
467
467
|
tool_choice?: unknown;
|
|
468
468
|
/**
|
|
469
|
-
* Conditions that end the agent's work early, on top of `max_steps` — turn-scoped (`
|
|
469
|
+
* Conditions that end the agent's work early, on top of `max_steps` — turn-scoped (`has_tool_call`) or chain-scoped (`max_chain_generations`). See the create request body for the accepted shapes.
|
|
470
470
|
*/
|
|
471
471
|
stop_conditions?: Array<{
|
|
472
472
|
[key: string]: unknown;
|
|
@@ -682,17 +682,17 @@ type CreateAgentRequest = {
|
|
|
682
682
|
tool_bindings?: Array<ToolBinding>;
|
|
683
683
|
max_steps?: number;
|
|
684
684
|
/**
|
|
685
|
-
* Tool choice strategy. Accepts a string (`"auto"`, `"required"`) or an object (`{ "type": "tool", "tool_name": "my_tool" }`). A forcing value (`"required"` or the object form) forbids a final assistant message on every step of every turn, including a resumed or continued one, so it requires a `
|
|
685
|
+
* Tool choice strategy. Accepts a string (`"auto"`, `"required"`) or an object (`{ "type": "tool", "tool_name": "my_tool" }`). A forcing value (`"required"` or the object form) forbids a final assistant message on every step of every turn, including a resumed or continued one, so it requires a `has_tool_call` entry in `stop_conditions` — otherwise the write is refused with `FORCED_TOOL_CHOICE_CANNOT_STOP`.
|
|
686
686
|
*/
|
|
687
687
|
tool_choice?: unknown;
|
|
688
688
|
/**
|
|
689
689
|
* Conditions that end the agent's work early, on top of `max_steps`. Two scopes:
|
|
690
690
|
*
|
|
691
|
-
* `{"type": "
|
|
691
|
+
* `{"type": "has_tool_call", "tool_name": "<resolved tool name>"}` ends the **turn** after the step that calls the named tool. It narrows when the loop ends — it never lets it run past `max_steps`.
|
|
692
692
|
*
|
|
693
|
-
* `{"type": "
|
|
693
|
+
* `{"type": "max_chain_generations", "max_generations": <n>}` bounds the **continuation chain** instead: once the chain has spawned that many generations, further resumptions stop with `chain_limit` rather than extending it. It never shortens a turn. The effective ceiling is the smaller of this and the deployment's `MAX_CONTINUATION_CHAIN_GENERATIONS`, so an agent can be stricter than the platform but never looser.
|
|
694
694
|
*
|
|
695
|
-
* An unknown `type`, a `
|
|
695
|
+
* An unknown `type`, a `has_tool_call` without a `tool_name`, a `max_chain_generations` whose `max_generations` is not a positive integer, or a non-object entry is rejected with 400.
|
|
696
696
|
*/
|
|
697
697
|
stop_conditions?: Array<{
|
|
698
698
|
[key: string]: unknown;
|
|
@@ -787,17 +787,17 @@ type UpdateAgentRequest = {
|
|
|
787
787
|
tool_bindings?: Array<ToolBinding> | null;
|
|
788
788
|
max_steps?: number | null;
|
|
789
789
|
/**
|
|
790
|
-
* Tool choice strategy. Accepts a string (`"auto"`, `"required"`) or an object (`{ "type": "tool", "tool_name": "my_tool" }`). A forcing value (`"required"` or the object form) forbids a final assistant message on every step of every turn, including a resumed or continued one, so it requires a `
|
|
790
|
+
* Tool choice strategy. Accepts a string (`"auto"`, `"required"`) or an object (`{ "type": "tool", "tool_name": "my_tool" }`). A forcing value (`"required"` or the object form) forbids a final assistant message on every step of every turn, including a resumed or continued one, so it requires a `has_tool_call` entry in `stop_conditions` — otherwise the write is refused with `FORCED_TOOL_CHOICE_CANNOT_STOP`.
|
|
791
791
|
*/
|
|
792
792
|
tool_choice?: unknown;
|
|
793
793
|
/**
|
|
794
794
|
* Conditions that end the agent's work early, on top of `max_steps`. Two scopes:
|
|
795
795
|
*
|
|
796
|
-
* `{"type": "
|
|
796
|
+
* `{"type": "has_tool_call", "tool_name": "<resolved tool name>"}` ends the **turn** after the step that calls the named tool. It narrows when the loop ends — it never lets it run past `max_steps`.
|
|
797
797
|
*
|
|
798
|
-
* `{"type": "
|
|
798
|
+
* `{"type": "max_chain_generations", "max_generations": <n>}` bounds the **continuation chain** instead: once the chain has spawned that many generations, further resumptions stop with `chain_limit` rather than extending it. It never shortens a turn. The effective ceiling is the smaller of this and the deployment's `MAX_CONTINUATION_CHAIN_GENERATIONS`, so an agent can be stricter than the platform but never looser.
|
|
799
799
|
*
|
|
800
|
-
* An unknown `type`, a `
|
|
800
|
+
* An unknown `type`, a `has_tool_call` without a `tool_name`, a `max_chain_generations` whose `max_generations` is not a positive integer, or a non-object entry is rejected with 400.
|
|
801
801
|
*/
|
|
802
802
|
stop_conditions?: Array<{
|
|
803
803
|
[key: string]: unknown;
|
|
@@ -2249,19 +2249,19 @@ type AgentResourceProperties = {
|
|
|
2249
2249
|
*/
|
|
2250
2250
|
tool_choice?: unknown;
|
|
2251
2251
|
/**
|
|
2252
|
-
* Conditions that stop the agent's work early — turn-scoped (`
|
|
2252
|
+
* Conditions that stop the agent's work early — turn-scoped (`has_tool_call`) or chain-scoped (`max_chain_generations`).
|
|
2253
2253
|
*/
|
|
2254
2254
|
stop_conditions?: Array<{
|
|
2255
2255
|
/**
|
|
2256
|
-
* Condition type — `
|
|
2256
|
+
* Condition type — `has_tool_call` or `max_chain_generations`
|
|
2257
2257
|
*/
|
|
2258
2258
|
type?: string;
|
|
2259
2259
|
/**
|
|
2260
|
-
* Tool name to match when type is `
|
|
2260
|
+
* Tool name to match when type is `has_tool_call`
|
|
2261
2261
|
*/
|
|
2262
2262
|
tool_name?: string | null;
|
|
2263
2263
|
/**
|
|
2264
|
-
* Generations the continuation chain may reach when type is `
|
|
2264
|
+
* Generations the continuation chain may reach when type is `max_chain_generations`
|
|
2265
2265
|
*/
|
|
2266
2266
|
max_generations?: number | null;
|
|
2267
2267
|
}> | null;
|
|
@@ -2526,7 +2526,7 @@ type ToolResourceProperties = {
|
|
|
2526
2526
|
*/
|
|
2527
2527
|
denied_actions?: Array<string> | null;
|
|
2528
2528
|
/**
|
|
2529
|
-
* Optional allowlist of `tool_context` keys forwarded to this tool as prefixed context headers. `null` or omitted forwards every key; `[]` forwards none. The server-pinned identity keys (`
|
|
2529
|
+
* Optional allowlist of `tool_context` keys forwarded to this tool as prefixed context headers. `null` or omitted forwards every key; `[]` forwards none. The server-pinned identity keys (`session_id`, `actor_id`, `actor_external_id`) are always forwarded, and a key consumed by a `{{context:<key>}}` token in this tool's own headers is substituted regardless of this list.
|
|
2530
2530
|
*/
|
|
2531
2531
|
context_keys?: Array<string> | null;
|
|
2532
2532
|
/**
|
|
@@ -3270,6 +3270,8 @@ type Formation = {
|
|
|
3270
3270
|
/**
|
|
3271
3271
|
* Why the formation is `failed` or `delete_failed`, in the same `{ code, message, meta }` shape as an error response. Null in every other status, and cleared by the next successful deploy. This is the reason a `2xx` deploy response can report `status: "failed"` without a second call to `list-formation-events`.
|
|
3272
3272
|
*
|
|
3273
|
+
* One case carries an error while the formation is `active`: `FORMATION_REPLACE_CLEANUP_FAILED`, when a deploy replaced a resource and the superseded one could not be deleted. The desired state is realised, so the deploy succeeded — but the old resource is still live, and `meta.failures` names it. It stays on the formation as pending cleanup and is retried on the next deploy or teardown, which clears the error once it is gone.
|
|
3274
|
+
*
|
|
3273
3275
|
*/
|
|
3274
3276
|
error?: FormationError | null;
|
|
3275
3277
|
/**
|
|
@@ -3340,7 +3342,7 @@ type UnauthorizedFormationAction = {
|
|
|
3340
3342
|
*/
|
|
3341
3343
|
type FormationError = {
|
|
3342
3344
|
/**
|
|
3343
|
-
* The failing operation's error code (`VALIDATION_FAILED`, `RESOURCE_NOT_FOUND`, `FORMATION_DELETE_FAILED`, …), or `UNKNOWN` when the underlying failure carried no code.
|
|
3345
|
+
* The failing operation's error code (`VALIDATION_FAILED`, `RESOURCE_NOT_FOUND`, `FORMATION_DELETE_FAILED`, `FORMATION_REPLACE_CLEANUP_FAILED`, …), or `UNKNOWN` when the underlying failure carried no code.
|
|
3344
3346
|
*/
|
|
3345
3347
|
code: string;
|
|
3346
3348
|
/**
|
|
@@ -3348,7 +3350,7 @@ type FormationError = {
|
|
|
3348
3350
|
*/
|
|
3349
3351
|
message: string;
|
|
3350
3352
|
/**
|
|
3351
|
-
* Context for the failure. A failed apply names the resource that broke it (`logical_id`, `resource_type`); a failed teardown lists every blocker under `failures
|
|
3353
|
+
* Context for the failure. A failed apply names the resource that broke it (`logical_id`, `resource_type`); a failed teardown lists every blocker under `failures`, and so does a succeeded deploy that could not dispose of a replaced resource — there each entry adds the `physical_resource_id` still live.
|
|
3352
3354
|
*/
|
|
3353
3355
|
meta?: {
|
|
3354
3356
|
[key: string]: unknown;
|
|
@@ -4412,7 +4414,7 @@ type OrchestrationNode = {
|
|
|
4412
4414
|
*/
|
|
4413
4415
|
parallelism?: number;
|
|
4414
4416
|
/**
|
|
4415
|
-
* For loop and sub_orchestration nodes — allowlist of the run's `tool_context` keys the child run inherits. When `null` (the default), the child inherits the parent's whole bag — the behavior of every graph authored before this field existed. When set, only the listed keys are handed down, so a run holding a broad credential can delegate one step to a shared sub-graph without passing on what that sub-graph does not need; `[]` hands down nothing. Matching is case-insensitive, since an entry names a key that becomes an HTTP header name; an entry outside that grammar is rejected at write time with `INVALID_TOOL_CONTEXT_KEY`. The server-derived identity keys (`
|
|
4417
|
+
* For loop and sub_orchestration nodes — allowlist of the run's `tool_context` keys the child run inherits. When `null` (the default), the child inherits the parent's whole bag — the behavior of every graph authored before this field existed. When set, only the listed keys are handed down, so a run holding a broad credential can delegate one step to a shared sub-graph without passing on what that sub-graph does not need; `[]` hands down nothing. Matching is case-insensitive, since an entry names a key that becomes an HTTP header name; an entry outside that grammar is rejected at write time with `INVALID_TOOL_CONTEXT_KEY`. The server-derived identity keys (`session_id`, `actor_id`, `actor_external_id`) are unaffected — they are re-derived per generation in the child regardless of this list. Ignored for other node types.
|
|
4416
4418
|
*/
|
|
4417
4419
|
context_keys?: Array<string> | null;
|
|
4418
4420
|
/**
|
|
@@ -4702,6 +4704,10 @@ type OrchestrationRun = {
|
|
|
4702
4704
|
* The node within `parent_orchestration_run_id` that started this run. Null when `parent_orchestration_run_id` is null.
|
|
4703
4705
|
*/
|
|
4704
4706
|
parent_node_id?: string | null;
|
|
4707
|
+
/**
|
|
4708
|
+
* `loop` / `sub_orchestration` edges between this run and the run a caller started: `0` for a caller-started run, one more than its parent's for a child. Starting a child past the effective bound — the smaller of the deployment's `MAX_ORCHESTRATION_RUN_DEPTH` (default 10) and the project's `max_run_depth` — is refused with `ORCHESTRATION_RUN_DEPTH_LIMIT`, which fails the run that tried to descend. That bounds a graph whose `sub_orchestration` node names itself, directly or through a cycle of two graphs, which the intra-graph cycle check cannot see.
|
|
4709
|
+
*/
|
|
4710
|
+
run_depth?: number;
|
|
4705
4711
|
/**
|
|
4706
4712
|
* Terminal node artifact(s) when the run has succeeded.
|
|
4707
4713
|
*/
|
|
@@ -4843,7 +4849,7 @@ type StartRunRequest = {
|
|
|
4843
4849
|
*
|
|
4844
4850
|
* The bag is stored on the run and re-read on every step, so it survives an `awaiting_input` pause, a `sleeping` wait, a background worker drive and a crash redrive. A key that is not a valid HTTP header name, or two keys that map to the same header, are rejected with `400 INVALID_TOOL_CONTEXT_KEY` and no run is created.
|
|
4845
4851
|
*
|
|
4846
|
-
* The reserved identity keys (`
|
|
4852
|
+
* The reserved identity keys (`session_id`, `actor_id`, `actor_external_id`) are stripped at generation time — a caller cannot address them from here.
|
|
4847
4853
|
*/
|
|
4848
4854
|
tool_context?: {
|
|
4849
4855
|
[key: string]: string;
|
|
@@ -4914,9 +4920,13 @@ type ProjectRecord = {
|
|
|
4914
4920
|
*/
|
|
4915
4921
|
max_concurrent_runs?: number | null;
|
|
4916
4922
|
/**
|
|
4917
|
-
* Generations one continuation chain in this project may hold before the platform stops resuming it. `null` means no project ceiling (the default), leaving the deployment-wide one. The effective budget is the smallest of the deployment's ceiling, this one, and the agent's own `
|
|
4923
|
+
* Generations one continuation chain in this project may hold before the platform stops resuming it. `null` means no project ceiling (the default), leaving the deployment-wide one. The effective budget is the smallest of the deployment's ceiling, this one, and the agent's own `max_chain_generations` stop condition.
|
|
4918
4924
|
*/
|
|
4919
4925
|
max_chain_generations?: number | null;
|
|
4926
|
+
/**
|
|
4927
|
+
* `loop` / `sub_orchestration` nesting levels a run tree in this project may reach before the engine refuses to start the next child. `null` means no project bound (the default), leaving the deployment-wide one. The effective bound is the smaller of the two.
|
|
4928
|
+
*/
|
|
4929
|
+
max_run_depth?: number | null;
|
|
4920
4930
|
/**
|
|
4921
4931
|
* Model route inherited by consumers in this project that bind neither `model_route_id` nor `ai_provider_id`. `null` means no default, so every consumer must bind explicitly.
|
|
4922
4932
|
*/
|
|
@@ -5389,7 +5399,7 @@ type CreateTaskRequest = {
|
|
|
5389
5399
|
/**
|
|
5390
5400
|
* Key-value pairs forwarded as `X-Soat-Context-<key>` headers on every `http`, `mcp` and `builtin` tool call made by this task's automation dispatches — the agent generations a state's `on_enter` starts, and the agent nodes of any orchestration run it starts. The header name is `X-Soat-Context-` plus the key verbatim; no character is re-cased.
|
|
5391
5401
|
* Creation is the task's first move, so this is the bag the entry state's `on_enter` runs with. Each transition may replace it (see `TransitionTaskRequest.tool_context`).
|
|
5392
|
-
* The reserved identity keys (`
|
|
5402
|
+
* The reserved identity keys (`session_id`, `actor_id`, `actor_external_id`) are stripped in any casing and re-derived server-side, so a task-dispatched generation cannot forge them. A key outside the HTTP header-name grammar is rejected with `INVALID_TOOL_CONTEXT_KEY` (400).
|
|
5393
5403
|
* Write-only: the stored bag is never returned by any task read, and it is cleared when the task reaches a terminal state.
|
|
5394
5404
|
*/
|
|
5395
5405
|
tool_context?: {
|
|
@@ -5422,7 +5432,7 @@ type TransitionTaskRequest = {
|
|
|
5422
5432
|
/**
|
|
5423
5433
|
* Caller context for the automation dispatches the task makes from here on, forwarded as `X-Soat-Context-<key>` headers on their tool calls.
|
|
5424
5434
|
* Supplying it **replaces** the task's stored bag wholesale; omitting it keeps the current one, so the context follows whoever last moved the task and survives every move that does not speak about it — including an approval gate, a retry, and an automation hop. Send an empty object to clear it without closing the task.
|
|
5425
|
-
* The reserved identity keys (`
|
|
5435
|
+
* The reserved identity keys (`session_id`, `actor_id`, `actor_external_id`) are stripped in any casing and re-derived server-side. A key outside the HTTP header-name grammar is rejected with `INVALID_TOOL_CONTEXT_KEY` (400).
|
|
5426
5436
|
* Write-only: never returned by a task read, and cleared when the transition closes the task.
|
|
5427
5437
|
*/
|
|
5428
5438
|
tool_context?: {
|
|
@@ -5487,7 +5497,7 @@ type Tool = {
|
|
|
5487
5497
|
*/
|
|
5488
5498
|
denied_actions?: Array<string> | null;
|
|
5489
5499
|
/**
|
|
5490
|
-
* Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Soat-Context-<key>` by default). When `null`, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`
|
|
5500
|
+
* Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Soat-Context-<key>` by default). When `null`, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`session_id`, `actor_id`, `actor_external_id`) are always forwarded. A key consumed by a `{{context:<key>}}` token in this tool's own headers is substituted regardless of this list — the tool declared that header itself.
|
|
5491
5501
|
*/
|
|
5492
5502
|
context_keys?: Array<string> | null;
|
|
5493
5503
|
/**
|
|
@@ -5571,7 +5581,7 @@ type CreateToolRequest = {
|
|
|
5571
5581
|
*/
|
|
5572
5582
|
denied_actions?: Array<string>;
|
|
5573
5583
|
/**
|
|
5574
|
-
* Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Soat-Context-<key>` by default). When `null` or omitted, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`
|
|
5584
|
+
* Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Soat-Context-<key>` by default). When `null` or omitted, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`session_id`, `actor_id`, `actor_external_id`) are always forwarded. A key consumed by a `{{context:<key>}}` token in this tool's own headers is substituted regardless of this list — the tool declared that header itself.
|
|
5575
5585
|
*/
|
|
5576
5586
|
context_keys?: Array<string> | null;
|
|
5577
5587
|
/**
|
|
@@ -5637,7 +5647,7 @@ type UpdateToolRequest = {
|
|
|
5637
5647
|
*/
|
|
5638
5648
|
denied_actions?: Array<string> | null;
|
|
5639
5649
|
/**
|
|
5640
|
-
* Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Soat-Context-<key>` by default). When `null` or omitted, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`
|
|
5650
|
+
* Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Soat-Context-<key>` by default). When `null` or omitted, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`session_id`, `actor_id`, `actor_external_id`) are always forwarded. A key consumed by a `{{context:<key>}}` token in this tool's own headers is substituted regardless of this list — the tool declared that header itself.
|
|
5641
5651
|
*/
|
|
5642
5652
|
context_keys?: Array<string> | null;
|
|
5643
5653
|
/**
|
|
@@ -5680,7 +5690,7 @@ type CallToolRequest = {
|
|
|
5680
5690
|
};
|
|
5681
5691
|
/**
|
|
5682
5692
|
* Key/value context for this call, forwarded to the tool as `X-Soat-Context-<key>` request headers and resolving any `{{context:<key>}}` token in the tool's `execute.headers`, `mcp.headers` or `preset_parameters`. Narrowed by the tool's `context_keys` allowlist when it sets one.
|
|
5683
|
-
* This route has no session, so it stamps no server-derived identity: the reserved keys `
|
|
5693
|
+
* This route has no session, so it stamps no server-derived identity: the reserved keys `session_id`, `actor_id` and `actor_external_id` are dropped from this bag (in any casing) rather than forwarded, so a downstream tool can still trust that a context header naming one is server-derived. Every other key becomes an HTTP header name and must match that grammar, or the call fails with `INVALID_TOOL_CONTEXT_KEY`.
|
|
5684
5694
|
*
|
|
5685
5695
|
*/
|
|
5686
5696
|
tool_context?: {
|
|
@@ -7077,7 +7087,7 @@ type DeleteAgentErrors = {
|
|
|
7077
7087
|
*/
|
|
7078
7088
|
404: ErrorResponse;
|
|
7079
7089
|
/**
|
|
7080
|
-
* Agent has dependent generations or traces (pass `force=true` to delete anyway). `error.meta` carries `
|
|
7090
|
+
* Agent has dependent generations or traces (pass `force=true` to delete anyway). `error.meta` carries `generation_count` and `trace_count` so a caller can tell which one is nonzero.
|
|
7081
7091
|
*
|
|
7082
7092
|
*/
|
|
7083
7093
|
409: ErrorResponse;
|
|
@@ -10545,7 +10555,7 @@ type StartEvalRunData = {
|
|
|
10545
10555
|
*
|
|
10546
10556
|
* Stored on the run and re-read per item, since a queued run (the default) is driven by a worker with no request behind it. **Write-only**: no read of the run returns it, unlike `metadata` — a run is a report other people read, and a credential in it is not theirs to see. Cleared once the run reaches a terminal state.
|
|
10547
10557
|
*
|
|
10548
|
-
* An eval generation has no session, so the reserved keys `
|
|
10558
|
+
* An eval generation has no session, so the reserved keys `session_id`, `actor_id` and `actor_external_id` are dropped (in any casing) rather than forwarded. Every other key becomes an HTTP header name and must match that grammar, or the request is rejected with `400 INVALID_TOOL_CONTEXT_KEY` and no run is created.
|
|
10549
10559
|
*/
|
|
10550
10560
|
tool_context?: {
|
|
10551
10561
|
[key: string]: string;
|
|
@@ -14141,9 +14151,13 @@ type UpdateProjectData = {
|
|
|
14141
14151
|
*/
|
|
14142
14152
|
max_concurrent_runs?: number | null;
|
|
14143
14153
|
/**
|
|
14144
|
-
* Generations one continuation chain in this project may hold before the platform stops resuming it. `null` clears the project's ceiling, leaving the deployment-wide `MAX_CONTINUATION_CHAIN_GENERATIONS`; otherwise an integer >= 1. The effective budget is the smallest of the deployment's ceiling, this one, and the agent's own `
|
|
14154
|
+
* Generations one continuation chain in this project may hold before the platform stops resuming it. `null` clears the project's ceiling, leaving the deployment-wide `MAX_CONTINUATION_CHAIN_GENERATIONS`; otherwise an integer >= 1. The effective budget is the smallest of the deployment's ceiling, this one, and the agent's own `max_chain_generations` stop condition, so an agent author can be stricter than this number but never exceed it.
|
|
14145
14155
|
*/
|
|
14146
14156
|
max_chain_generations?: number | null;
|
|
14157
|
+
/**
|
|
14158
|
+
* `loop` / `sub_orchestration` nesting levels a run tree in this project may reach before the engine refuses to start the next child. `null` clears the project's bound, leaving the deployment-wide `MAX_ORCHESTRATION_RUN_DEPTH` (default 10); otherwise an integer >= 1. The effective bound is the smaller of the two, so this can only be stricter than the deployment's — which is what makes it a bound a graph author cannot opt out of. A refused child fails its parent run with `ORCHESTRATION_RUN_DEPTH_LIMIT`.
|
|
14159
|
+
*/
|
|
14160
|
+
max_run_depth?: number | null;
|
|
14147
14161
|
/**
|
|
14148
14162
|
* Model route inherited by consumers in this project that bind neither `model_route_id` nor `ai_provider_id`. The route must belong to this project (`400` otherwise). `null` clears the default, which is refused with `409` while any consumer inherits it — repointing it to another route is always allowed and immediately changes which targets those consumers use.
|
|
14149
14163
|
*/
|
|
@@ -17488,7 +17502,7 @@ declare class AiProviders {
|
|
|
17488
17502
|
/**
|
|
17489
17503
|
* Upsert per-provider price overrides
|
|
17490
17504
|
*
|
|
17491
|
-
* Upserts price overrides for this AI provider instance, keyed on (model, effective_from). The provider slug is taken from the AI provider itself, so only the model, rates, and effective_from are supplied. Authorized by the caller's access to the provider's project. `effective_from` must be in the future — past prices are immutable, so ship
|
|
17505
|
+
* Upserts price overrides for this AI provider instance, keyed on (model, effective_from). The provider slug is taken from the AI provider itself, so only the model, rates, and effective_from are supplied. Authorized by the caller's access to the provider's project. `effective_from` must be in the future once the (model, component) has a price row — past prices are immutable, so corrections ship as new future-dated rows. A first price for a (model, component) nothing prices yet may be dated now or earlier, so a new provider is never live and unpriced.
|
|
17492
17506
|
*
|
|
17493
17507
|
*/
|
|
17494
17508
|
static updateAiProviderPrices<ThrowOnError extends boolean = false>(options: Options<UpdateAiProviderPricesData, ThrowOnError>): RequestResult<UpdateAiProviderPricesResponses, UpdateAiProviderPricesErrors, ThrowOnError>;
|
|
@@ -18142,6 +18156,8 @@ declare class Formations {
|
|
|
18142
18156
|
*
|
|
18143
18157
|
* 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.
|
|
18144
18158
|
*
|
|
18159
|
+
* A deploy that replaced a resource and could not delete the superseded one answers `status: "active"` with `error.code: "FORMATION_REPLACE_CLEANUP_FAILED"` — the desired state is realised, and `error.meta.failures` names every resource still live. The next deploy retries the disposal.
|
|
18160
|
+
*
|
|
18145
18161
|
*/
|
|
18146
18162
|
static updateFormation<ThrowOnError extends boolean = false>(options: Options<UpdateFormationData, ThrowOnError>): RequestResult<UpdateFormationResponses, UpdateFormationErrors, ThrowOnError>;
|
|
18147
18163
|
/**
|
|
@@ -18573,7 +18589,7 @@ declare class Projects {
|
|
|
18573
18589
|
/**
|
|
18574
18590
|
* Update a project
|
|
18575
18591
|
*
|
|
18576
|
-
* 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 continuation-chain ceiling (`max_chain_generations`), 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.
|
|
18592
|
+
* 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 continuation-chain ceiling (`max_chain_generations`), its orchestration nesting bound (`max_run_depth`), 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.
|
|
18577
18593
|
*/
|
|
18578
18594
|
static updateProject<ThrowOnError extends boolean = false>(options: Options<UpdateProjectData, ThrowOnError>): RequestResult<UpdateProjectResponses, UpdateProjectErrors, ThrowOnError>;
|
|
18579
18595
|
/**
|
|
@@ -18586,7 +18602,7 @@ declare class Projects {
|
|
|
18586
18602
|
/**
|
|
18587
18603
|
* Upsert a project's price rows
|
|
18588
18604
|
*
|
|
18589
|
-
* Upserts project + provider-slug price rows, keyed on (provider, model, effective_from). A row covers all of the project's instances of that provider slug. Authorized by the caller's access to the project. `effective_from` must be in the future — past prices are immutable, so ship
|
|
18605
|
+
* Upserts project + provider-slug price rows, keyed on (provider, model, effective_from). A row covers all of the project's instances of that provider slug. Authorized by the caller's access to the project. `effective_from` must be in the future once the (provider, model, component) is priced — past prices are immutable, so corrections ship as new future-dated rows. A first price, with no row for the project or the global default, may be dated now or earlier.
|
|
18590
18606
|
*
|
|
18591
18607
|
*/
|
|
18592
18608
|
static updateProjectPrices<ThrowOnError extends boolean = false>(options: Options<UpdateProjectPricesData, ThrowOnError>): RequestResult<UpdateProjectPricesResponses, UpdateProjectPricesErrors, ThrowOnError>;
|
|
@@ -18978,7 +18994,7 @@ declare class Usage {
|
|
|
18978
18994
|
/**
|
|
18979
18995
|
* Upsert price-book rows
|
|
18980
18996
|
*
|
|
18981
|
-
* Upserts price rows keyed on (provider, model, effective_from). Admin only. `effective_from` must be in the future — past prices are immutable so recorded costs stay explainable; ship corrections as new future-dated rows.
|
|
18997
|
+
* Upserts price rows keyed on (provider, model, effective_from). Admin only. `effective_from` must be in the future once the (provider, model, component) is priced — past prices are immutable so recorded costs stay explainable; ship corrections as new future-dated rows. A first price, with no row in this scope or any broader one, may be dated now or earlier.
|
|
18982
18998
|
*
|
|
18983
18999
|
*/
|
|
18984
19000
|
static upsertPriceBook<ThrowOnError extends boolean = false>(options: Options<UpsertPriceBookData, ThrowOnError>): RequestResult<UpsertPriceBookResponses, UpsertPriceBookErrors, ThrowOnError>;
|
package/dist/index.d.mts
CHANGED
|
@@ -462,11 +462,11 @@ type Agent = {
|
|
|
462
462
|
*/
|
|
463
463
|
max_steps?: number | null;
|
|
464
464
|
/**
|
|
465
|
-
* Tool choice strategy. Accepts a string (`"auto"`, `"required"`) or an object (`{ "type": "tool", "tool_name": "my_tool" }`). A forcing value (`"required"` or the object form) forbids a final assistant message on every step of every turn, including a resumed or continued one, so it requires a `
|
|
465
|
+
* Tool choice strategy. Accepts a string (`"auto"`, `"required"`) or an object (`{ "type": "tool", "tool_name": "my_tool" }`). A forcing value (`"required"` or the object form) forbids a final assistant message on every step of every turn, including a resumed or continued one, so it requires a `has_tool_call` entry in `stop_conditions` — otherwise the write is refused with `FORCED_TOOL_CHOICE_CANNOT_STOP`.
|
|
466
466
|
*/
|
|
467
467
|
tool_choice?: unknown;
|
|
468
468
|
/**
|
|
469
|
-
* Conditions that end the agent's work early, on top of `max_steps` — turn-scoped (`
|
|
469
|
+
* Conditions that end the agent's work early, on top of `max_steps` — turn-scoped (`has_tool_call`) or chain-scoped (`max_chain_generations`). See the create request body for the accepted shapes.
|
|
470
470
|
*/
|
|
471
471
|
stop_conditions?: Array<{
|
|
472
472
|
[key: string]: unknown;
|
|
@@ -682,17 +682,17 @@ type CreateAgentRequest = {
|
|
|
682
682
|
tool_bindings?: Array<ToolBinding>;
|
|
683
683
|
max_steps?: number;
|
|
684
684
|
/**
|
|
685
|
-
* Tool choice strategy. Accepts a string (`"auto"`, `"required"`) or an object (`{ "type": "tool", "tool_name": "my_tool" }`). A forcing value (`"required"` or the object form) forbids a final assistant message on every step of every turn, including a resumed or continued one, so it requires a `
|
|
685
|
+
* Tool choice strategy. Accepts a string (`"auto"`, `"required"`) or an object (`{ "type": "tool", "tool_name": "my_tool" }`). A forcing value (`"required"` or the object form) forbids a final assistant message on every step of every turn, including a resumed or continued one, so it requires a `has_tool_call` entry in `stop_conditions` — otherwise the write is refused with `FORCED_TOOL_CHOICE_CANNOT_STOP`.
|
|
686
686
|
*/
|
|
687
687
|
tool_choice?: unknown;
|
|
688
688
|
/**
|
|
689
689
|
* Conditions that end the agent's work early, on top of `max_steps`. Two scopes:
|
|
690
690
|
*
|
|
691
|
-
* `{"type": "
|
|
691
|
+
* `{"type": "has_tool_call", "tool_name": "<resolved tool name>"}` ends the **turn** after the step that calls the named tool. It narrows when the loop ends — it never lets it run past `max_steps`.
|
|
692
692
|
*
|
|
693
|
-
* `{"type": "
|
|
693
|
+
* `{"type": "max_chain_generations", "max_generations": <n>}` bounds the **continuation chain** instead: once the chain has spawned that many generations, further resumptions stop with `chain_limit` rather than extending it. It never shortens a turn. The effective ceiling is the smaller of this and the deployment's `MAX_CONTINUATION_CHAIN_GENERATIONS`, so an agent can be stricter than the platform but never looser.
|
|
694
694
|
*
|
|
695
|
-
* An unknown `type`, a `
|
|
695
|
+
* An unknown `type`, a `has_tool_call` without a `tool_name`, a `max_chain_generations` whose `max_generations` is not a positive integer, or a non-object entry is rejected with 400.
|
|
696
696
|
*/
|
|
697
697
|
stop_conditions?: Array<{
|
|
698
698
|
[key: string]: unknown;
|
|
@@ -787,17 +787,17 @@ type UpdateAgentRequest = {
|
|
|
787
787
|
tool_bindings?: Array<ToolBinding> | null;
|
|
788
788
|
max_steps?: number | null;
|
|
789
789
|
/**
|
|
790
|
-
* Tool choice strategy. Accepts a string (`"auto"`, `"required"`) or an object (`{ "type": "tool", "tool_name": "my_tool" }`). A forcing value (`"required"` or the object form) forbids a final assistant message on every step of every turn, including a resumed or continued one, so it requires a `
|
|
790
|
+
* Tool choice strategy. Accepts a string (`"auto"`, `"required"`) or an object (`{ "type": "tool", "tool_name": "my_tool" }`). A forcing value (`"required"` or the object form) forbids a final assistant message on every step of every turn, including a resumed or continued one, so it requires a `has_tool_call` entry in `stop_conditions` — otherwise the write is refused with `FORCED_TOOL_CHOICE_CANNOT_STOP`.
|
|
791
791
|
*/
|
|
792
792
|
tool_choice?: unknown;
|
|
793
793
|
/**
|
|
794
794
|
* Conditions that end the agent's work early, on top of `max_steps`. Two scopes:
|
|
795
795
|
*
|
|
796
|
-
* `{"type": "
|
|
796
|
+
* `{"type": "has_tool_call", "tool_name": "<resolved tool name>"}` ends the **turn** after the step that calls the named tool. It narrows when the loop ends — it never lets it run past `max_steps`.
|
|
797
797
|
*
|
|
798
|
-
* `{"type": "
|
|
798
|
+
* `{"type": "max_chain_generations", "max_generations": <n>}` bounds the **continuation chain** instead: once the chain has spawned that many generations, further resumptions stop with `chain_limit` rather than extending it. It never shortens a turn. The effective ceiling is the smaller of this and the deployment's `MAX_CONTINUATION_CHAIN_GENERATIONS`, so an agent can be stricter than the platform but never looser.
|
|
799
799
|
*
|
|
800
|
-
* An unknown `type`, a `
|
|
800
|
+
* An unknown `type`, a `has_tool_call` without a `tool_name`, a `max_chain_generations` whose `max_generations` is not a positive integer, or a non-object entry is rejected with 400.
|
|
801
801
|
*/
|
|
802
802
|
stop_conditions?: Array<{
|
|
803
803
|
[key: string]: unknown;
|
|
@@ -2249,19 +2249,19 @@ type AgentResourceProperties = {
|
|
|
2249
2249
|
*/
|
|
2250
2250
|
tool_choice?: unknown;
|
|
2251
2251
|
/**
|
|
2252
|
-
* Conditions that stop the agent's work early — turn-scoped (`
|
|
2252
|
+
* Conditions that stop the agent's work early — turn-scoped (`has_tool_call`) or chain-scoped (`max_chain_generations`).
|
|
2253
2253
|
*/
|
|
2254
2254
|
stop_conditions?: Array<{
|
|
2255
2255
|
/**
|
|
2256
|
-
* Condition type — `
|
|
2256
|
+
* Condition type — `has_tool_call` or `max_chain_generations`
|
|
2257
2257
|
*/
|
|
2258
2258
|
type?: string;
|
|
2259
2259
|
/**
|
|
2260
|
-
* Tool name to match when type is `
|
|
2260
|
+
* Tool name to match when type is `has_tool_call`
|
|
2261
2261
|
*/
|
|
2262
2262
|
tool_name?: string | null;
|
|
2263
2263
|
/**
|
|
2264
|
-
* Generations the continuation chain may reach when type is `
|
|
2264
|
+
* Generations the continuation chain may reach when type is `max_chain_generations`
|
|
2265
2265
|
*/
|
|
2266
2266
|
max_generations?: number | null;
|
|
2267
2267
|
}> | null;
|
|
@@ -2526,7 +2526,7 @@ type ToolResourceProperties = {
|
|
|
2526
2526
|
*/
|
|
2527
2527
|
denied_actions?: Array<string> | null;
|
|
2528
2528
|
/**
|
|
2529
|
-
* Optional allowlist of `tool_context` keys forwarded to this tool as prefixed context headers. `null` or omitted forwards every key; `[]` forwards none. The server-pinned identity keys (`
|
|
2529
|
+
* Optional allowlist of `tool_context` keys forwarded to this tool as prefixed context headers. `null` or omitted forwards every key; `[]` forwards none. The server-pinned identity keys (`session_id`, `actor_id`, `actor_external_id`) are always forwarded, and a key consumed by a `{{context:<key>}}` token in this tool's own headers is substituted regardless of this list.
|
|
2530
2530
|
*/
|
|
2531
2531
|
context_keys?: Array<string> | null;
|
|
2532
2532
|
/**
|
|
@@ -3270,6 +3270,8 @@ type Formation = {
|
|
|
3270
3270
|
/**
|
|
3271
3271
|
* Why the formation is `failed` or `delete_failed`, in the same `{ code, message, meta }` shape as an error response. Null in every other status, and cleared by the next successful deploy. This is the reason a `2xx` deploy response can report `status: "failed"` without a second call to `list-formation-events`.
|
|
3272
3272
|
*
|
|
3273
|
+
* One case carries an error while the formation is `active`: `FORMATION_REPLACE_CLEANUP_FAILED`, when a deploy replaced a resource and the superseded one could not be deleted. The desired state is realised, so the deploy succeeded — but the old resource is still live, and `meta.failures` names it. It stays on the formation as pending cleanup and is retried on the next deploy or teardown, which clears the error once it is gone.
|
|
3274
|
+
*
|
|
3273
3275
|
*/
|
|
3274
3276
|
error?: FormationError | null;
|
|
3275
3277
|
/**
|
|
@@ -3340,7 +3342,7 @@ type UnauthorizedFormationAction = {
|
|
|
3340
3342
|
*/
|
|
3341
3343
|
type FormationError = {
|
|
3342
3344
|
/**
|
|
3343
|
-
* The failing operation's error code (`VALIDATION_FAILED`, `RESOURCE_NOT_FOUND`, `FORMATION_DELETE_FAILED`, …), or `UNKNOWN` when the underlying failure carried no code.
|
|
3345
|
+
* The failing operation's error code (`VALIDATION_FAILED`, `RESOURCE_NOT_FOUND`, `FORMATION_DELETE_FAILED`, `FORMATION_REPLACE_CLEANUP_FAILED`, …), or `UNKNOWN` when the underlying failure carried no code.
|
|
3344
3346
|
*/
|
|
3345
3347
|
code: string;
|
|
3346
3348
|
/**
|
|
@@ -3348,7 +3350,7 @@ type FormationError = {
|
|
|
3348
3350
|
*/
|
|
3349
3351
|
message: string;
|
|
3350
3352
|
/**
|
|
3351
|
-
* Context for the failure. A failed apply names the resource that broke it (`logical_id`, `resource_type`); a failed teardown lists every blocker under `failures
|
|
3353
|
+
* Context for the failure. A failed apply names the resource that broke it (`logical_id`, `resource_type`); a failed teardown lists every blocker under `failures`, and so does a succeeded deploy that could not dispose of a replaced resource — there each entry adds the `physical_resource_id` still live.
|
|
3352
3354
|
*/
|
|
3353
3355
|
meta?: {
|
|
3354
3356
|
[key: string]: unknown;
|
|
@@ -4412,7 +4414,7 @@ type OrchestrationNode = {
|
|
|
4412
4414
|
*/
|
|
4413
4415
|
parallelism?: number;
|
|
4414
4416
|
/**
|
|
4415
|
-
* For loop and sub_orchestration nodes — allowlist of the run's `tool_context` keys the child run inherits. When `null` (the default), the child inherits the parent's whole bag — the behavior of every graph authored before this field existed. When set, only the listed keys are handed down, so a run holding a broad credential can delegate one step to a shared sub-graph without passing on what that sub-graph does not need; `[]` hands down nothing. Matching is case-insensitive, since an entry names a key that becomes an HTTP header name; an entry outside that grammar is rejected at write time with `INVALID_TOOL_CONTEXT_KEY`. The server-derived identity keys (`
|
|
4417
|
+
* For loop and sub_orchestration nodes — allowlist of the run's `tool_context` keys the child run inherits. When `null` (the default), the child inherits the parent's whole bag — the behavior of every graph authored before this field existed. When set, only the listed keys are handed down, so a run holding a broad credential can delegate one step to a shared sub-graph without passing on what that sub-graph does not need; `[]` hands down nothing. Matching is case-insensitive, since an entry names a key that becomes an HTTP header name; an entry outside that grammar is rejected at write time with `INVALID_TOOL_CONTEXT_KEY`. The server-derived identity keys (`session_id`, `actor_id`, `actor_external_id`) are unaffected — they are re-derived per generation in the child regardless of this list. Ignored for other node types.
|
|
4416
4418
|
*/
|
|
4417
4419
|
context_keys?: Array<string> | null;
|
|
4418
4420
|
/**
|
|
@@ -4702,6 +4704,10 @@ type OrchestrationRun = {
|
|
|
4702
4704
|
* The node within `parent_orchestration_run_id` that started this run. Null when `parent_orchestration_run_id` is null.
|
|
4703
4705
|
*/
|
|
4704
4706
|
parent_node_id?: string | null;
|
|
4707
|
+
/**
|
|
4708
|
+
* `loop` / `sub_orchestration` edges between this run and the run a caller started: `0` for a caller-started run, one more than its parent's for a child. Starting a child past the effective bound — the smaller of the deployment's `MAX_ORCHESTRATION_RUN_DEPTH` (default 10) and the project's `max_run_depth` — is refused with `ORCHESTRATION_RUN_DEPTH_LIMIT`, which fails the run that tried to descend. That bounds a graph whose `sub_orchestration` node names itself, directly or through a cycle of two graphs, which the intra-graph cycle check cannot see.
|
|
4709
|
+
*/
|
|
4710
|
+
run_depth?: number;
|
|
4705
4711
|
/**
|
|
4706
4712
|
* Terminal node artifact(s) when the run has succeeded.
|
|
4707
4713
|
*/
|
|
@@ -4843,7 +4849,7 @@ type StartRunRequest = {
|
|
|
4843
4849
|
*
|
|
4844
4850
|
* The bag is stored on the run and re-read on every step, so it survives an `awaiting_input` pause, a `sleeping` wait, a background worker drive and a crash redrive. A key that is not a valid HTTP header name, or two keys that map to the same header, are rejected with `400 INVALID_TOOL_CONTEXT_KEY` and no run is created.
|
|
4845
4851
|
*
|
|
4846
|
-
* The reserved identity keys (`
|
|
4852
|
+
* The reserved identity keys (`session_id`, `actor_id`, `actor_external_id`) are stripped at generation time — a caller cannot address them from here.
|
|
4847
4853
|
*/
|
|
4848
4854
|
tool_context?: {
|
|
4849
4855
|
[key: string]: string;
|
|
@@ -4914,9 +4920,13 @@ type ProjectRecord = {
|
|
|
4914
4920
|
*/
|
|
4915
4921
|
max_concurrent_runs?: number | null;
|
|
4916
4922
|
/**
|
|
4917
|
-
* Generations one continuation chain in this project may hold before the platform stops resuming it. `null` means no project ceiling (the default), leaving the deployment-wide one. The effective budget is the smallest of the deployment's ceiling, this one, and the agent's own `
|
|
4923
|
+
* Generations one continuation chain in this project may hold before the platform stops resuming it. `null` means no project ceiling (the default), leaving the deployment-wide one. The effective budget is the smallest of the deployment's ceiling, this one, and the agent's own `max_chain_generations` stop condition.
|
|
4918
4924
|
*/
|
|
4919
4925
|
max_chain_generations?: number | null;
|
|
4926
|
+
/**
|
|
4927
|
+
* `loop` / `sub_orchestration` nesting levels a run tree in this project may reach before the engine refuses to start the next child. `null` means no project bound (the default), leaving the deployment-wide one. The effective bound is the smaller of the two.
|
|
4928
|
+
*/
|
|
4929
|
+
max_run_depth?: number | null;
|
|
4920
4930
|
/**
|
|
4921
4931
|
* Model route inherited by consumers in this project that bind neither `model_route_id` nor `ai_provider_id`. `null` means no default, so every consumer must bind explicitly.
|
|
4922
4932
|
*/
|
|
@@ -5389,7 +5399,7 @@ type CreateTaskRequest = {
|
|
|
5389
5399
|
/**
|
|
5390
5400
|
* Key-value pairs forwarded as `X-Soat-Context-<key>` headers on every `http`, `mcp` and `builtin` tool call made by this task's automation dispatches — the agent generations a state's `on_enter` starts, and the agent nodes of any orchestration run it starts. The header name is `X-Soat-Context-` plus the key verbatim; no character is re-cased.
|
|
5391
5401
|
* Creation is the task's first move, so this is the bag the entry state's `on_enter` runs with. Each transition may replace it (see `TransitionTaskRequest.tool_context`).
|
|
5392
|
-
* The reserved identity keys (`
|
|
5402
|
+
* The reserved identity keys (`session_id`, `actor_id`, `actor_external_id`) are stripped in any casing and re-derived server-side, so a task-dispatched generation cannot forge them. A key outside the HTTP header-name grammar is rejected with `INVALID_TOOL_CONTEXT_KEY` (400).
|
|
5393
5403
|
* Write-only: the stored bag is never returned by any task read, and it is cleared when the task reaches a terminal state.
|
|
5394
5404
|
*/
|
|
5395
5405
|
tool_context?: {
|
|
@@ -5422,7 +5432,7 @@ type TransitionTaskRequest = {
|
|
|
5422
5432
|
/**
|
|
5423
5433
|
* Caller context for the automation dispatches the task makes from here on, forwarded as `X-Soat-Context-<key>` headers on their tool calls.
|
|
5424
5434
|
* Supplying it **replaces** the task's stored bag wholesale; omitting it keeps the current one, so the context follows whoever last moved the task and survives every move that does not speak about it — including an approval gate, a retry, and an automation hop. Send an empty object to clear it without closing the task.
|
|
5425
|
-
* The reserved identity keys (`
|
|
5435
|
+
* The reserved identity keys (`session_id`, `actor_id`, `actor_external_id`) are stripped in any casing and re-derived server-side. A key outside the HTTP header-name grammar is rejected with `INVALID_TOOL_CONTEXT_KEY` (400).
|
|
5426
5436
|
* Write-only: never returned by a task read, and cleared when the transition closes the task.
|
|
5427
5437
|
*/
|
|
5428
5438
|
tool_context?: {
|
|
@@ -5487,7 +5497,7 @@ type Tool = {
|
|
|
5487
5497
|
*/
|
|
5488
5498
|
denied_actions?: Array<string> | null;
|
|
5489
5499
|
/**
|
|
5490
|
-
* Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Soat-Context-<key>` by default). When `null`, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`
|
|
5500
|
+
* Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Soat-Context-<key>` by default). When `null`, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`session_id`, `actor_id`, `actor_external_id`) are always forwarded. A key consumed by a `{{context:<key>}}` token in this tool's own headers is substituted regardless of this list — the tool declared that header itself.
|
|
5491
5501
|
*/
|
|
5492
5502
|
context_keys?: Array<string> | null;
|
|
5493
5503
|
/**
|
|
@@ -5571,7 +5581,7 @@ type CreateToolRequest = {
|
|
|
5571
5581
|
*/
|
|
5572
5582
|
denied_actions?: Array<string>;
|
|
5573
5583
|
/**
|
|
5574
|
-
* Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Soat-Context-<key>` by default). When `null` or omitted, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`
|
|
5584
|
+
* Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Soat-Context-<key>` by default). When `null` or omitted, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`session_id`, `actor_id`, `actor_external_id`) are always forwarded. A key consumed by a `{{context:<key>}}` token in this tool's own headers is substituted regardless of this list — the tool declared that header itself.
|
|
5575
5585
|
*/
|
|
5576
5586
|
context_keys?: Array<string> | null;
|
|
5577
5587
|
/**
|
|
@@ -5637,7 +5647,7 @@ type UpdateToolRequest = {
|
|
|
5637
5647
|
*/
|
|
5638
5648
|
denied_actions?: Array<string> | null;
|
|
5639
5649
|
/**
|
|
5640
|
-
* Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Soat-Context-<key>` by default). When `null` or omitted, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`
|
|
5650
|
+
* Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Soat-Context-<key>` by default). When `null` or omitted, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`session_id`, `actor_id`, `actor_external_id`) are always forwarded. A key consumed by a `{{context:<key>}}` token in this tool's own headers is substituted regardless of this list — the tool declared that header itself.
|
|
5641
5651
|
*/
|
|
5642
5652
|
context_keys?: Array<string> | null;
|
|
5643
5653
|
/**
|
|
@@ -5680,7 +5690,7 @@ type CallToolRequest = {
|
|
|
5680
5690
|
};
|
|
5681
5691
|
/**
|
|
5682
5692
|
* Key/value context for this call, forwarded to the tool as `X-Soat-Context-<key>` request headers and resolving any `{{context:<key>}}` token in the tool's `execute.headers`, `mcp.headers` or `preset_parameters`. Narrowed by the tool's `context_keys` allowlist when it sets one.
|
|
5683
|
-
* This route has no session, so it stamps no server-derived identity: the reserved keys `
|
|
5693
|
+
* This route has no session, so it stamps no server-derived identity: the reserved keys `session_id`, `actor_id` and `actor_external_id` are dropped from this bag (in any casing) rather than forwarded, so a downstream tool can still trust that a context header naming one is server-derived. Every other key becomes an HTTP header name and must match that grammar, or the call fails with `INVALID_TOOL_CONTEXT_KEY`.
|
|
5684
5694
|
*
|
|
5685
5695
|
*/
|
|
5686
5696
|
tool_context?: {
|
|
@@ -7077,7 +7087,7 @@ type DeleteAgentErrors = {
|
|
|
7077
7087
|
*/
|
|
7078
7088
|
404: ErrorResponse;
|
|
7079
7089
|
/**
|
|
7080
|
-
* Agent has dependent generations or traces (pass `force=true` to delete anyway). `error.meta` carries `
|
|
7090
|
+
* Agent has dependent generations or traces (pass `force=true` to delete anyway). `error.meta` carries `generation_count` and `trace_count` so a caller can tell which one is nonzero.
|
|
7081
7091
|
*
|
|
7082
7092
|
*/
|
|
7083
7093
|
409: ErrorResponse;
|
|
@@ -10545,7 +10555,7 @@ type StartEvalRunData = {
|
|
|
10545
10555
|
*
|
|
10546
10556
|
* Stored on the run and re-read per item, since a queued run (the default) is driven by a worker with no request behind it. **Write-only**: no read of the run returns it, unlike `metadata` — a run is a report other people read, and a credential in it is not theirs to see. Cleared once the run reaches a terminal state.
|
|
10547
10557
|
*
|
|
10548
|
-
* An eval generation has no session, so the reserved keys `
|
|
10558
|
+
* An eval generation has no session, so the reserved keys `session_id`, `actor_id` and `actor_external_id` are dropped (in any casing) rather than forwarded. Every other key becomes an HTTP header name and must match that grammar, or the request is rejected with `400 INVALID_TOOL_CONTEXT_KEY` and no run is created.
|
|
10549
10559
|
*/
|
|
10550
10560
|
tool_context?: {
|
|
10551
10561
|
[key: string]: string;
|
|
@@ -14141,9 +14151,13 @@ type UpdateProjectData = {
|
|
|
14141
14151
|
*/
|
|
14142
14152
|
max_concurrent_runs?: number | null;
|
|
14143
14153
|
/**
|
|
14144
|
-
* Generations one continuation chain in this project may hold before the platform stops resuming it. `null` clears the project's ceiling, leaving the deployment-wide `MAX_CONTINUATION_CHAIN_GENERATIONS`; otherwise an integer >= 1. The effective budget is the smallest of the deployment's ceiling, this one, and the agent's own `
|
|
14154
|
+
* Generations one continuation chain in this project may hold before the platform stops resuming it. `null` clears the project's ceiling, leaving the deployment-wide `MAX_CONTINUATION_CHAIN_GENERATIONS`; otherwise an integer >= 1. The effective budget is the smallest of the deployment's ceiling, this one, and the agent's own `max_chain_generations` stop condition, so an agent author can be stricter than this number but never exceed it.
|
|
14145
14155
|
*/
|
|
14146
14156
|
max_chain_generations?: number | null;
|
|
14157
|
+
/**
|
|
14158
|
+
* `loop` / `sub_orchestration` nesting levels a run tree in this project may reach before the engine refuses to start the next child. `null` clears the project's bound, leaving the deployment-wide `MAX_ORCHESTRATION_RUN_DEPTH` (default 10); otherwise an integer >= 1. The effective bound is the smaller of the two, so this can only be stricter than the deployment's — which is what makes it a bound a graph author cannot opt out of. A refused child fails its parent run with `ORCHESTRATION_RUN_DEPTH_LIMIT`.
|
|
14159
|
+
*/
|
|
14160
|
+
max_run_depth?: number | null;
|
|
14147
14161
|
/**
|
|
14148
14162
|
* Model route inherited by consumers in this project that bind neither `model_route_id` nor `ai_provider_id`. The route must belong to this project (`400` otherwise). `null` clears the default, which is refused with `409` while any consumer inherits it — repointing it to another route is always allowed and immediately changes which targets those consumers use.
|
|
14149
14163
|
*/
|
|
@@ -17488,7 +17502,7 @@ declare class AiProviders {
|
|
|
17488
17502
|
/**
|
|
17489
17503
|
* Upsert per-provider price overrides
|
|
17490
17504
|
*
|
|
17491
|
-
* Upserts price overrides for this AI provider instance, keyed on (model, effective_from). The provider slug is taken from the AI provider itself, so only the model, rates, and effective_from are supplied. Authorized by the caller's access to the provider's project. `effective_from` must be in the future — past prices are immutable, so ship
|
|
17505
|
+
* Upserts price overrides for this AI provider instance, keyed on (model, effective_from). The provider slug is taken from the AI provider itself, so only the model, rates, and effective_from are supplied. Authorized by the caller's access to the provider's project. `effective_from` must be in the future once the (model, component) has a price row — past prices are immutable, so corrections ship as new future-dated rows. A first price for a (model, component) nothing prices yet may be dated now or earlier, so a new provider is never live and unpriced.
|
|
17492
17506
|
*
|
|
17493
17507
|
*/
|
|
17494
17508
|
static updateAiProviderPrices<ThrowOnError extends boolean = false>(options: Options<UpdateAiProviderPricesData, ThrowOnError>): RequestResult<UpdateAiProviderPricesResponses, UpdateAiProviderPricesErrors, ThrowOnError>;
|
|
@@ -18142,6 +18156,8 @@ declare class Formations {
|
|
|
18142
18156
|
*
|
|
18143
18157
|
* 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.
|
|
18144
18158
|
*
|
|
18159
|
+
* A deploy that replaced a resource and could not delete the superseded one answers `status: "active"` with `error.code: "FORMATION_REPLACE_CLEANUP_FAILED"` — the desired state is realised, and `error.meta.failures` names every resource still live. The next deploy retries the disposal.
|
|
18160
|
+
*
|
|
18145
18161
|
*/
|
|
18146
18162
|
static updateFormation<ThrowOnError extends boolean = false>(options: Options<UpdateFormationData, ThrowOnError>): RequestResult<UpdateFormationResponses, UpdateFormationErrors, ThrowOnError>;
|
|
18147
18163
|
/**
|
|
@@ -18573,7 +18589,7 @@ declare class Projects {
|
|
|
18573
18589
|
/**
|
|
18574
18590
|
* Update a project
|
|
18575
18591
|
*
|
|
18576
|
-
* 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 continuation-chain ceiling (`max_chain_generations`), 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.
|
|
18592
|
+
* 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 continuation-chain ceiling (`max_chain_generations`), its orchestration nesting bound (`max_run_depth`), 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.
|
|
18577
18593
|
*/
|
|
18578
18594
|
static updateProject<ThrowOnError extends boolean = false>(options: Options<UpdateProjectData, ThrowOnError>): RequestResult<UpdateProjectResponses, UpdateProjectErrors, ThrowOnError>;
|
|
18579
18595
|
/**
|
|
@@ -18586,7 +18602,7 @@ declare class Projects {
|
|
|
18586
18602
|
/**
|
|
18587
18603
|
* Upsert a project's price rows
|
|
18588
18604
|
*
|
|
18589
|
-
* Upserts project + provider-slug price rows, keyed on (provider, model, effective_from). A row covers all of the project's instances of that provider slug. Authorized by the caller's access to the project. `effective_from` must be in the future — past prices are immutable, so ship
|
|
18605
|
+
* Upserts project + provider-slug price rows, keyed on (provider, model, effective_from). A row covers all of the project's instances of that provider slug. Authorized by the caller's access to the project. `effective_from` must be in the future once the (provider, model, component) is priced — past prices are immutable, so corrections ship as new future-dated rows. A first price, with no row for the project or the global default, may be dated now or earlier.
|
|
18590
18606
|
*
|
|
18591
18607
|
*/
|
|
18592
18608
|
static updateProjectPrices<ThrowOnError extends boolean = false>(options: Options<UpdateProjectPricesData, ThrowOnError>): RequestResult<UpdateProjectPricesResponses, UpdateProjectPricesErrors, ThrowOnError>;
|
|
@@ -18978,7 +18994,7 @@ declare class Usage {
|
|
|
18978
18994
|
/**
|
|
18979
18995
|
* Upsert price-book rows
|
|
18980
18996
|
*
|
|
18981
|
-
* Upserts price rows keyed on (provider, model, effective_from). Admin only. `effective_from` must be in the future — past prices are immutable so recorded costs stay explainable; ship corrections as new future-dated rows.
|
|
18997
|
+
* Upserts price rows keyed on (provider, model, effective_from). Admin only. `effective_from` must be in the future once the (provider, model, component) is priced — past prices are immutable so recorded costs stay explainable; ship corrections as new future-dated rows. A first price, with no row in this scope or any broader one, may be dated now or earlier.
|
|
18982
18998
|
*
|
|
18983
18999
|
*/
|
|
18984
19000
|
static upsertPriceBook<ThrowOnError extends boolean = false>(options: Options<UpsertPriceBookData, ThrowOnError>): RequestResult<UpsertPriceBookResponses, UpsertPriceBookErrors, ThrowOnError>;
|
package/dist/index.mjs
CHANGED
|
@@ -1043,7 +1043,7 @@ var AiProviders = class {
|
|
|
1043
1043
|
/**
|
|
1044
1044
|
* Upsert per-provider price overrides
|
|
1045
1045
|
*
|
|
1046
|
-
* Upserts price overrides for this AI provider instance, keyed on (model, effective_from). The provider slug is taken from the AI provider itself, so only the model, rates, and effective_from are supplied. Authorized by the caller's access to the provider's project. `effective_from` must be in the future — past prices are immutable, so ship
|
|
1046
|
+
* Upserts price overrides for this AI provider instance, keyed on (model, effective_from). The provider slug is taken from the AI provider itself, so only the model, rates, and effective_from are supplied. Authorized by the caller's access to the provider's project. `effective_from` must be in the future once the (model, component) has a price row — past prices are immutable, so corrections ship as new future-dated rows. A first price for a (model, component) nothing prices yet may be dated now or earlier, so a new provider is never live and unpriced.
|
|
1047
1047
|
*
|
|
1048
1048
|
*/
|
|
1049
1049
|
static updateAiProviderPrices(options) {
|
|
@@ -2316,6 +2316,8 @@ var Formations = class {
|
|
|
2316
2316
|
*
|
|
2317
2317
|
* 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.
|
|
2318
2318
|
*
|
|
2319
|
+
* A deploy that replaced a resource and could not delete the superseded one answers `status: "active"` with `error.code: "FORMATION_REPLACE_CLEANUP_FAILED"` — the desired state is realised, and `error.meta.failures` names every resource still live. The next deploy retries the disposal.
|
|
2320
|
+
*
|
|
2319
2321
|
*/
|
|
2320
2322
|
static updateFormation(options) {
|
|
2321
2323
|
return (options.client ?? client).put({
|
|
@@ -3161,7 +3163,7 @@ var Projects = class {
|
|
|
3161
3163
|
/**
|
|
3162
3164
|
* Update a project
|
|
3163
3165
|
*
|
|
3164
|
-
* 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 continuation-chain ceiling (`max_chain_generations`), 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.
|
|
3166
|
+
* 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 continuation-chain ceiling (`max_chain_generations`), its orchestration nesting bound (`max_run_depth`), 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.
|
|
3165
3167
|
*/
|
|
3166
3168
|
static updateProject(options) {
|
|
3167
3169
|
return (options.client ?? client).patch({
|
|
@@ -3188,7 +3190,7 @@ var Projects = class {
|
|
|
3188
3190
|
/**
|
|
3189
3191
|
* Upsert a project's price rows
|
|
3190
3192
|
*
|
|
3191
|
-
* Upserts project + provider-slug price rows, keyed on (provider, model, effective_from). A row covers all of the project's instances of that provider slug. Authorized by the caller's access to the project. `effective_from` must be in the future — past prices are immutable, so ship
|
|
3193
|
+
* Upserts project + provider-slug price rows, keyed on (provider, model, effective_from). A row covers all of the project's instances of that provider slug. Authorized by the caller's access to the project. `effective_from` must be in the future once the (provider, model, component) is priced — past prices are immutable, so corrections ship as new future-dated rows. A first price, with no row for the project or the global default, may be dated now or earlier.
|
|
3192
3194
|
*
|
|
3193
3195
|
*/
|
|
3194
3196
|
static updateProjectPrices(options) {
|
|
@@ -3962,7 +3964,7 @@ var Usage = class {
|
|
|
3962
3964
|
/**
|
|
3963
3965
|
* Upsert price-book rows
|
|
3964
3966
|
*
|
|
3965
|
-
* Upserts price rows keyed on (provider, model, effective_from). Admin only. `effective_from` must be in the future — past prices are immutable so recorded costs stay explainable; ship corrections as new future-dated rows.
|
|
3967
|
+
* Upserts price rows keyed on (provider, model, effective_from). Admin only. `effective_from` must be in the future once the (provider, model, component) is priced — past prices are immutable so recorded costs stay explainable; ship corrections as new future-dated rows. A first price, with no row in this scope or any broader one, may be dated now or earlier.
|
|
3966
3968
|
*
|
|
3967
3969
|
*/
|
|
3968
3970
|
static upsertPriceBook(options) {
|