@soat/sdk 0.44.0 → 0.45.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 CHANGED
@@ -1069,7 +1069,11 @@ var ApiKeys = class {
1069
1069
  /**
1070
1070
  * List API keys
1071
1071
  *
1072
- * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - Project-scoped credential (API key or OAuth token): returns only API keys scoped to that project.
1072
+ * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - Project-scoped credential (API key or OAuth token): returns the caller's own
1073
+ * keys scoped to that project, or every key scoped to it when the credential
1074
+ * holds `api-keys:ListApiKeys` on the project. Confinement to a project is not
1075
+ * authority over it, and a key's metadata names its owner, prefix and attached
1076
+ * policies.
1073
1077
  *
1074
1078
  */
1075
1079
  static listApiKeys(options) {
@@ -2881,7 +2885,8 @@ var Orchestrations = class {
2881
2885
  /**
2882
2886
  * Get orchestration queue stats
2883
2887
  *
2884
- * Returns a point-in-time snapshot of the orchestration run queue: how many tasks are waiting to be claimed (`queue_depth`), how many are currently claimed with a valid lease (`claimed_tasks`), the age of the oldest waiting task, recent claim-latency percentiles over a rolling in-process window, and a per-project breakdown. Intended for admin/operator policies; guarded by `orchestrations:GetQueueStats`. A project-scoped caller sees only their own projects under `per_project`.
2888
+ * Returns a point-in-time snapshot of the orchestration run queue: how many tasks are waiting to be claimed (`queue_depth`), how many are currently claimed with a valid lease (`claimed_tasks`), the age of the oldest waiting task, recent claim-latency percentiles over a rolling in-process window, and a per-project breakdown. Intended for admin/operator policies; guarded by `orchestrations:GetQueueStats`.
2889
+ * Every figure is scoped to what the caller may see. A project-scoped caller gets `per_project` for their own projects only, `queue_depth` and `claimed_tasks` summed over those same projects, and `null` for `oldest_queued_age_seconds` and the `claim_latency_ms` percentiles — both describe the whole deployment and cannot be narrowed, so they are withheld rather than approximated. An unrestricted caller (the action granted on every project) gets the deployment-wide figures.
2885
2890
  *
2886
2891
  */
2887
2892
  static getQueueStats(options) {
@@ -3747,6 +3752,7 @@ var Tools = class {
3747
3752
  * Directly invokes a tool and returns its output. Supported for `http`, `builtin`, `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.
3748
3753
  * For `builtin` and `mcp` tools the `action` field is required and identifies which action (SOAT) or tool name (MCP) to invoke. For `http` tools `action` is ignored. When a `builtin` or `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.
3749
3754
  * `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.
3755
+ * Guardrails attached to the tool or to its project adjudicate the call before dispatch, composing project + tool scope. A call this route cannot await a decision on — class C (human sign-off), class D, or a class-B tripwire — is refused with `422 TOOL_DISPATCH_FAILED`, whose `meta` carries the `tool_id` and the `outcome`. A `pipeline` tool is adjudicated before its first step runs, and every step is adjudicated as the call of that tool it is.
3750
3756
  *
3751
3757
  */
3752
3758
  static callTool(options) {
@@ -3864,7 +3870,8 @@ var Triggers = class {
3864
3870
  /**
3865
3871
  * Update a trigger
3866
3872
  *
3867
- * Updates an existing trigger's configuration. The type is immutable.
3873
+ * Updates an existing trigger's configuration. The type is immutable. Changing `target_type` or `target_id` re-checks the target-start action (`orchestrations:StartRun`, `agents:CreateAgentGeneration` or `tools:CallTool`) against the resulting target, because a firing runs with the trigger creator's authority rather than the updater's. A caller who could not start the new target is answered `403` and the trigger keeps the target it had.
3874
+ *
3868
3875
  */
3869
3876
  static updateTrigger(options) {
3870
3877
  return (options.client ?? client).patch({
package/dist/index.d.cts CHANGED
@@ -340,7 +340,7 @@ type ActivityEntry = {
340
340
  /**
341
341
  * How the entry was produced
342
342
  */
343
- kind?: 'action_executed' | 'approval_resolved' | 'exception_created' | 'schedule_fired';
343
+ kind?: 'action_executed' | 'approval_created' | 'approval_resolved' | 'exception_created' | 'schedule_fired';
344
344
  severity?: 'info' | 'warning' | 'critical';
345
345
  /**
346
346
  * One-line, human-readable description
@@ -2172,7 +2172,7 @@ type FormationTemplate = {
2172
2172
  [key: string]: ResourceDeclaration;
2173
2173
  };
2174
2174
  /**
2175
- * Map of output names to values. Values may use `{ "ref": "logicalId" }` to reference physical IDs of created resources, or `{ "param": "ParamName" }` and `{ "sub": "text ${ParamName}" }` to embed parameter values.
2175
+ * Map of output names to values. Values may use `{ "ref": "logicalId" }` to reference physical IDs of created resources, or `{ "param": "ParamName" }` and `{ "sub": "text ${ParamName}" }` to embed parameter values. `{ "ref_attr": "LogicalId.attribute" }` resolves a named attribute of a created resource, except one carrying credential material — a trigger's or webhook's `secret` is refused with 400 VALIDATION_FAILED, since a formation is readable by anyone holding `formations:GetFormation`. Read those from the resource's own secret route instead.
2176
2176
  *
2177
2177
  */
2178
2178
  outputs?: {
@@ -3239,9 +3239,14 @@ type Formation = {
3239
3239
  * Human-readable formation name
3240
3240
  */
3241
3241
  name?: string;
3242
+ /**
3243
+ * The template as deployed. Credential-bearing properties — a `secret` resource's `value`, and any property a custom resource type declares `write_only` — read back as `{ "no_echo": true }` rather than the value that was supplied.
3244
+ *
3245
+ */
3242
3246
  template?: FormationTemplate;
3243
3247
  /**
3244
- * Resolved output values after stack deployment
3248
+ * Resolved output values after stack deployment. An output that resolved a credential attribute on a formation deployed before those were refused is omitted.
3249
+ *
3245
3250
  */
3246
3251
  outputs?: {
3247
3252
  [key: string]: string;
@@ -4281,19 +4286,19 @@ type QueueStats = {
4281
4286
  */
4282
4287
  driver?: 'postgres' | 'sqs';
4283
4288
  /**
4284
- * Tasks waiting to be claimed now (unclaimed and past their `available_at`). Backoff-delayed tasks are excluded.
4289
+ * Tasks waiting to be claimed now (unclaimed and past their `available_at`). Backoff-delayed tasks are excluded. Summed over the caller's own projects when the caller is project-scoped.
4285
4290
  */
4286
4291
  queue_depth?: number;
4287
4292
  /**
4288
- * Tasks currently claimed with a valid (unexpired) lease.
4293
+ * Tasks currently claimed with a valid (unexpired) lease. Summed over the caller's own projects when the caller is project-scoped.
4289
4294
  */
4290
4295
  claimed_tasks?: number;
4291
4296
  /**
4292
- * Age in seconds of the oldest claimable-now task, or `null` when none are waiting.
4297
+ * Age in seconds of the oldest claimable-now task, or `null` when none are waiting. Also `null` for a project-scoped caller: the figure is deployment-wide.
4293
4298
  */
4294
4299
  oldest_queued_age_seconds?: number | null;
4295
4300
  /**
4296
- * Claim-latency percentiles (time from a task becoming available to being claimed) over a rolling in-process window. `p50`/`p95` are `null` when no claim happened in the window.
4301
+ * Claim-latency percentiles (time from a task becoming available to being claimed) over a rolling in-process window. `p50`/`p95` are `null` when no claim happened in the window, and for a project-scoped caller: the window is deployment-wide.
4297
4302
  */
4298
4303
  claim_latency_ms?: {
4299
4304
  p50?: number | null;
@@ -5526,6 +5531,8 @@ type Tool = {
5526
5531
  *
5527
5532
  * Credential fields accept `{{secret:...}}` references and should use them — a tool is readable by anyone who can `GET /tools`, and the stored reference is what is echoed back, never the resolved value.
5528
5533
  *
5534
+ * A credential written as a **literal** is stored and still sent on every call, but it is masked on every read: `secret_access_key`, `session_token` and `credentials` under `auth`, and any credential-named `headers` value (`Authorization`, `Cookie`, or a name containing `api-key`/`token`/`secret`/`password`), come back as `{"no_echo": true}`. The mask is an object rather than a string so a read-edit-write round trip fails the schema check instead of writing the placeholder in as the credential. A value carrying a `{{secret:...}}` reference is the wiring, not the credential, and stays readable.
5535
+ *
5529
5536
  * `headers` values additionally accept `{{context:<key>}}` references, resolved per call from the caller's `tool_context`, so a per-user credential can be placed in the real header the target expects (`Authorization: Bearer {{context:ocaToken}}`) instead of only in a prefixed context header. Valid **only** inside `headers` — a context value is caller-supplied, so it may not steer the `url` — and a key missing from the `tool_context` at call time fails the tool call with `MISSING_TOOL_CONTEXT_KEY` rather than sending an empty credential. See the Tool Context reference.
5530
5537
  *
5531
5538
  */
@@ -5533,7 +5540,7 @@ type Tool = {
5533
5540
  [key: string]: unknown;
5534
5541
  } | null;
5535
5542
  /**
5536
- * MCP server config (`url`, `headers`). `headers` values accept `{{secret:...}}` and `{{context:<key>}}` references, resolved right before the outbound MCP request; `url` accepts `{{secret:...}}` only.
5543
+ * MCP server config (`url`, `headers`). `headers` values accept `{{secret:...}}` and `{{context:<key>}}` references, resolved right before the outbound MCP request; `url` accepts `{{secret:...}}` only. A literal credential in `headers` is masked on read, exactly as in `execute`.
5537
5544
  */
5538
5545
  mcp?: {
5539
5546
  [key: string]: unknown;
@@ -5610,6 +5617,8 @@ type CreateToolRequest = {
5610
5617
  *
5611
5618
  * Credential fields accept `{{secret:...}}` references and should use them — a tool is readable by anyone who can `GET /tools`, and the stored reference is what is echoed back, never the resolved value.
5612
5619
  *
5620
+ * A credential written as a **literal** is stored and still sent on every call, but it is masked on every read: `secret_access_key`, `session_token` and `credentials` under `auth`, and any credential-named `headers` value (`Authorization`, `Cookie`, or a name containing `api-key`/`token`/`secret`/`password`), come back as `{"no_echo": true}`. The mask is an object rather than a string so a read-edit-write round trip fails the schema check instead of writing the placeholder in as the credential. A value carrying a `{{secret:...}}` reference is the wiring, not the credential, and stays readable.
5621
+ *
5613
5622
  * `headers` values additionally accept `{{context:<key>}}` references, resolved per call from the caller's `tool_context`, so a per-user credential can be placed in the real header the target expects (`Authorization: Bearer {{context:ocaToken}}`) instead of only in an `X-Soat-Context-<key>` header. Valid **only** inside `headers` — a context value is caller-supplied, so it may not steer the `url` — and a key missing from the `tool_context` at call time fails the tool call with `MISSING_TOOL_CONTEXT_KEY` rather than sending an empty credential. See the Tool Context reference.
5614
5623
  *
5615
5624
  */
@@ -5617,7 +5626,7 @@ type CreateToolRequest = {
5617
5626
  [key: string]: unknown;
5618
5627
  };
5619
5628
  /**
5620
- * MCP server config (`url`, `headers`). `headers` values accept `{{secret:...}}` and `{{context:<key>}}` references, resolved right before the outbound MCP request; `url` accepts `{{secret:...}}` only.
5629
+ * MCP server config (`url`, `headers`). `headers` values accept `{{secret:...}}` and `{{context:<key>}}` references, resolved right before the outbound MCP request; `url` accepts `{{secret:...}}` only. A literal credential in `headers` is masked on read, exactly as in `execute`.
5621
5630
  */
5622
5631
  mcp?: {
5623
5632
  [key: string]: unknown;
@@ -5676,6 +5685,8 @@ type UpdateToolRequest = {
5676
5685
  *
5677
5686
  * Credential fields accept `{{secret:...}}` references and should use them — a tool is readable by anyone who can `GET /tools`, and the stored reference is what is echoed back, never the resolved value.
5678
5687
  *
5688
+ * A credential written as a **literal** is stored and still sent on every call, but it is masked on every read: `secret_access_key`, `session_token` and `credentials` under `auth`, and any credential-named `headers` value (`Authorization`, `Cookie`, or a name containing `api-key`/`token`/`secret`/`password`), come back as `{"no_echo": true}`. The mask is an object rather than a string so a read-edit-write round trip fails the schema check instead of writing the placeholder in as the credential. A value carrying a `{{secret:...}}` reference is the wiring, not the credential, and stays readable.
5689
+ *
5679
5690
  * `headers` values additionally accept `{{context:<key>}}` references, resolved per call from the caller's `tool_context`, so a per-user credential can be placed in the real header the target expects (`Authorization: Bearer {{context:ocaToken}}`) instead of only in an `X-Soat-Context-<key>` header. Valid **only** inside `headers` — a context value is caller-supplied, so it may not steer the `url` — and a key missing from the `tool_context` at call time fails the tool call with `MISSING_TOOL_CONTEXT_KEY` rather than sending an empty credential. See the Tool Context reference.
5680
5691
  *
5681
5692
  */
@@ -5683,7 +5694,7 @@ type UpdateToolRequest = {
5683
5694
  [key: string]: unknown;
5684
5695
  } | null;
5685
5696
  /**
5686
- * MCP server config (`url`, `headers`). `headers` values accept `{{secret:...}}` and `{{context:<key>}}` references, resolved right before the outbound MCP request; `url` accepts `{{secret:...}}` only.
5697
+ * MCP server config (`url`, `headers`). `headers` values accept `{{secret:...}}` and `{{context:<key>}}` references, resolved right before the outbound MCP request; `url` accepts `{{secret:...}}` only. A literal credential in `headers` is masked on read, exactly as in `execute`.
5687
5698
  */
5688
5699
  mcp?: {
5689
5700
  [key: string]: unknown;
@@ -6662,7 +6673,7 @@ type ListActivityData = {
6662
6673
  /**
6663
6674
  * Filter by activity kind
6664
6675
  */
6665
- kind?: 'action_executed' | 'approval_resolved' | 'exception_created' | 'schedule_fired';
6676
+ kind?: 'action_executed' | 'approval_created' | 'approval_resolved' | 'exception_created' | 'schedule_fired';
6666
6677
  /**
6667
6678
  * Filter by severity
6668
6679
  */
@@ -8279,7 +8290,7 @@ type GetApprovalResponse = GetApprovalResponses[keyof GetApprovalResponses];
8279
8290
  type ApproveApprovalData = {
8280
8291
  body?: {
8281
8292
  /**
8282
- * Edited arguments to execute instead of the proposed ones
8293
+ * Edited arguments to execute instead of the proposed ones. Editing composes a new call, so it additionally requires permission to make that call: `tools:CallTool` on the tool, and for a `builtin` proposal the action's own IAM action.
8283
8294
  */
8284
8295
  arguments?: {
8285
8296
  [key: string]: unknown;
@@ -8296,7 +8307,7 @@ type ApproveApprovalData = {
8296
8307
  };
8297
8308
  type ApproveApprovalErrors = {
8298
8309
  /**
8299
- * Edited arguments are not a JSON object
8310
+ * Edited arguments are not a JSON object, or do not satisfy the tool's parameters schema
8300
8311
  */
8301
8312
  400: unknown;
8302
8313
  /**
@@ -8304,7 +8315,7 @@ type ApproveApprovalErrors = {
8304
8315
  */
8305
8316
  401: unknown;
8306
8317
  /**
8307
- * Forbidden
8318
+ * Forbidden — including an edit by a caller who may resolve the item but not make the call it proposes
8308
8319
  */
8309
8320
  403: unknown;
8310
8321
  /**
@@ -9887,7 +9898,7 @@ type CreateEmbeddingsData = {
9887
9898
  */
9888
9899
  input?: string;
9889
9900
  /**
9890
- * Batch of texts to embed.
9901
+ * Batch of texts to embed. At most 256 per request — each input is one call to the embedding model, so a larger batch is refused (`VALIDATION_FAILED`) rather than queued. Split it across requests.
9891
9902
  */
9892
9903
  inputs?: Array<string>;
9893
9904
  };
@@ -11112,6 +11123,10 @@ type UploadFileErrors = {
11112
11123
  * The project's `storage_bytes` quota is exceeded (`QUOTA_STORAGE_EXCEEDED`). Delete stored content, or raise the quota — no window reset clears a stored total, so no `Retry-After` is sent.
11113
11124
  */
11114
11125
  409: ErrorResponse;
11126
+ /**
11127
+ * The upload is over this deployment's byte ceiling (`UPLOAD_TOO_LARGE`; `FILE_UPLOAD_MAX_BYTES`, 25 MB by default). The request is refused while the body is still streaming, so nothing was stored.
11128
+ */
11129
+ 413: ErrorResponse;
11115
11130
  };
11116
11131
  type UploadFileError = UploadFileErrors[keyof UploadFileErrors];
11117
11132
  type UploadFileResponses = {
@@ -11209,6 +11224,10 @@ type UploadFileWithTokenErrors = {
11209
11224
  * Upload token expired
11210
11225
  */
11211
11226
  410: ErrorResponse;
11227
+ /**
11228
+ * The upload is over this deployment's byte ceiling (`UPLOAD_TOO_LARGE`; `FILE_UPLOAD_MAX_BYTES`, 25 MB by default). The request is refused while the body is still streaming, so nothing was stored.
11229
+ */
11230
+ 413: ErrorResponse;
11212
11231
  };
11213
11232
  type UploadFileWithTokenError = UploadFileWithTokenErrors[keyof UploadFileWithTokenErrors];
11214
11233
  type UploadFileWithTokenResponses = {
@@ -12421,7 +12440,7 @@ type CreateIngestionRuleData = {
12421
12440
  */
12422
12441
  project_id?: string;
12423
12442
  /**
12424
- * MIME type glob matched against a file's content_type
12443
+ * MIME type glob matched against a file's content_type. At most 4 wildcards and 255 characters — a MIME glob needs one on each side of the slash at most.
12425
12444
  */
12426
12445
  content_type_glob: string;
12427
12446
  /**
@@ -12568,6 +12587,9 @@ type GetIngestionRuleResponses = {
12568
12587
  type GetIngestionRuleResponse = GetIngestionRuleResponses[keyof GetIngestionRuleResponses];
12569
12588
  type UpdateIngestionRuleData = {
12570
12589
  body: {
12590
+ /**
12591
+ * MIME type glob matched against a file's content_type. At most 4 wildcards and 255 characters.
12592
+ */
12571
12593
  content_type_glob?: string;
12572
12594
  tool_id?: string | null;
12573
12595
  agent_id?: string | null;
@@ -12640,7 +12662,7 @@ type SearchKnowledgeData = {
12640
12662
  */
12641
12663
  min_score?: number;
12642
12664
  /**
12643
- * Maximum number of results to return (default 10)
12665
+ * Maximum number of results to return (default 10). A value above 100 is clamped to 100 — the ceiling bounds the vector scan this one request performs, so a larger `limit` returns everything there is up to that many rows rather than being refused.
12644
12666
  */
12645
12667
  limit?: number;
12646
12668
  /**
@@ -17752,7 +17774,11 @@ declare class ApiKeys {
17752
17774
  /**
17753
17775
  * List API keys
17754
17776
  *
17755
- * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - Project-scoped credential (API key or OAuth token): returns only API keys scoped to that project.
17777
+ * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - Project-scoped credential (API key or OAuth token): returns the caller's own
17778
+ * keys scoped to that project, or every key scoped to it when the credential
17779
+ * holds `api-keys:ListApiKeys` on the project. Confinement to a project is not
17780
+ * authority over it, and a key's metadata names its owner, prefix and attached
17781
+ * policies.
17756
17782
  *
17757
17783
  */
17758
17784
  static listApiKeys<ThrowOnError extends boolean = false>(options?: Options<ListApiKeysData, ThrowOnError>): RequestResult<ListApiKeysResponses, ListApiKeysErrors, ThrowOnError>;
@@ -18686,7 +18712,8 @@ declare class Orchestrations {
18686
18712
  /**
18687
18713
  * Get orchestration queue stats
18688
18714
  *
18689
- * Returns a point-in-time snapshot of the orchestration run queue: how many tasks are waiting to be claimed (`queue_depth`), how many are currently claimed with a valid lease (`claimed_tasks`), the age of the oldest waiting task, recent claim-latency percentiles over a rolling in-process window, and a per-project breakdown. Intended for admin/operator policies; guarded by `orchestrations:GetQueueStats`. A project-scoped caller sees only their own projects under `per_project`.
18715
+ * Returns a point-in-time snapshot of the orchestration run queue: how many tasks are waiting to be claimed (`queue_depth`), how many are currently claimed with a valid lease (`claimed_tasks`), the age of the oldest waiting task, recent claim-latency percentiles over a rolling in-process window, and a per-project breakdown. Intended for admin/operator policies; guarded by `orchestrations:GetQueueStats`.
18716
+ * Every figure is scoped to what the caller may see. A project-scoped caller gets `per_project` for their own projects only, `queue_depth` and `claimed_tasks` summed over those same projects, and `null` for `oldest_queued_age_seconds` and the `claim_latency_ms` percentiles — both describe the whole deployment and cannot be narrowed, so they are withheld rather than approximated. An unrestricted caller (the action granted on every project) gets the deployment-wide figures.
18690
18717
  *
18691
18718
  */
18692
18719
  static getQueueStats<ThrowOnError extends boolean = false>(options?: Options<GetQueueStatsData, ThrowOnError>): RequestResult<GetQueueStatsResponses, GetQueueStatsErrors, ThrowOnError>;
@@ -19117,6 +19144,7 @@ declare class Tools {
19117
19144
  * Directly invokes a tool and returns its output. Supported for `http`, `builtin`, `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.
19118
19145
  * For `builtin` and `mcp` tools the `action` field is required and identifies which action (SOAT) or tool name (MCP) to invoke. For `http` tools `action` is ignored. When a `builtin` or `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.
19119
19146
  * `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.
19147
+ * Guardrails attached to the tool or to its project adjudicate the call before dispatch, composing project + tool scope. A call this route cannot await a decision on — class C (human sign-off), class D, or a class-B tripwire — is refused with `422 TOOL_DISPATCH_FAILED`, whose `meta` carries the `tool_id` and the `outcome`. A `pipeline` tool is adjudicated before its first step runs, and every step is adjudicated as the call of that tool it is.
19120
19148
  *
19121
19149
  */
19122
19150
  static callTool<ThrowOnError extends boolean = false>(options: Options<CallToolData, ThrowOnError>): RequestResult<CallToolResponses, CallToolErrors, ThrowOnError>;
@@ -19181,7 +19209,8 @@ declare class Triggers {
19181
19209
  /**
19182
19210
  * Update a trigger
19183
19211
  *
19184
- * Updates an existing trigger's configuration. The type is immutable.
19212
+ * Updates an existing trigger's configuration. The type is immutable. Changing `target_type` or `target_id` re-checks the target-start action (`orchestrations:StartRun`, `agents:CreateAgentGeneration` or `tools:CallTool`) against the resulting target, because a firing runs with the trigger creator's authority rather than the updater's. A caller who could not start the new target is answered `403` and the trigger keeps the target it had.
19213
+ *
19185
19214
  */
19186
19215
  static updateTrigger<ThrowOnError extends boolean = false>(options: Options<UpdateTriggerData, ThrowOnError>): RequestResult<UpdateTriggerResponses, UpdateTriggerErrors, ThrowOnError>;
19187
19216
  /**
package/dist/index.d.mts CHANGED
@@ -340,7 +340,7 @@ type ActivityEntry = {
340
340
  /**
341
341
  * How the entry was produced
342
342
  */
343
- kind?: 'action_executed' | 'approval_resolved' | 'exception_created' | 'schedule_fired';
343
+ kind?: 'action_executed' | 'approval_created' | 'approval_resolved' | 'exception_created' | 'schedule_fired';
344
344
  severity?: 'info' | 'warning' | 'critical';
345
345
  /**
346
346
  * One-line, human-readable description
@@ -2172,7 +2172,7 @@ type FormationTemplate = {
2172
2172
  [key: string]: ResourceDeclaration;
2173
2173
  };
2174
2174
  /**
2175
- * Map of output names to values. Values may use `{ "ref": "logicalId" }` to reference physical IDs of created resources, or `{ "param": "ParamName" }` and `{ "sub": "text ${ParamName}" }` to embed parameter values.
2175
+ * Map of output names to values. Values may use `{ "ref": "logicalId" }` to reference physical IDs of created resources, or `{ "param": "ParamName" }` and `{ "sub": "text ${ParamName}" }` to embed parameter values. `{ "ref_attr": "LogicalId.attribute" }` resolves a named attribute of a created resource, except one carrying credential material — a trigger's or webhook's `secret` is refused with 400 VALIDATION_FAILED, since a formation is readable by anyone holding `formations:GetFormation`. Read those from the resource's own secret route instead.
2176
2176
  *
2177
2177
  */
2178
2178
  outputs?: {
@@ -3239,9 +3239,14 @@ type Formation = {
3239
3239
  * Human-readable formation name
3240
3240
  */
3241
3241
  name?: string;
3242
+ /**
3243
+ * The template as deployed. Credential-bearing properties — a `secret` resource's `value`, and any property a custom resource type declares `write_only` — read back as `{ "no_echo": true }` rather than the value that was supplied.
3244
+ *
3245
+ */
3242
3246
  template?: FormationTemplate;
3243
3247
  /**
3244
- * Resolved output values after stack deployment
3248
+ * Resolved output values after stack deployment. An output that resolved a credential attribute on a formation deployed before those were refused is omitted.
3249
+ *
3245
3250
  */
3246
3251
  outputs?: {
3247
3252
  [key: string]: string;
@@ -4281,19 +4286,19 @@ type QueueStats = {
4281
4286
  */
4282
4287
  driver?: 'postgres' | 'sqs';
4283
4288
  /**
4284
- * Tasks waiting to be claimed now (unclaimed and past their `available_at`). Backoff-delayed tasks are excluded.
4289
+ * Tasks waiting to be claimed now (unclaimed and past their `available_at`). Backoff-delayed tasks are excluded. Summed over the caller's own projects when the caller is project-scoped.
4285
4290
  */
4286
4291
  queue_depth?: number;
4287
4292
  /**
4288
- * Tasks currently claimed with a valid (unexpired) lease.
4293
+ * Tasks currently claimed with a valid (unexpired) lease. Summed over the caller's own projects when the caller is project-scoped.
4289
4294
  */
4290
4295
  claimed_tasks?: number;
4291
4296
  /**
4292
- * Age in seconds of the oldest claimable-now task, or `null` when none are waiting.
4297
+ * Age in seconds of the oldest claimable-now task, or `null` when none are waiting. Also `null` for a project-scoped caller: the figure is deployment-wide.
4293
4298
  */
4294
4299
  oldest_queued_age_seconds?: number | null;
4295
4300
  /**
4296
- * Claim-latency percentiles (time from a task becoming available to being claimed) over a rolling in-process window. `p50`/`p95` are `null` when no claim happened in the window.
4301
+ * Claim-latency percentiles (time from a task becoming available to being claimed) over a rolling in-process window. `p50`/`p95` are `null` when no claim happened in the window, and for a project-scoped caller: the window is deployment-wide.
4297
4302
  */
4298
4303
  claim_latency_ms?: {
4299
4304
  p50?: number | null;
@@ -5526,6 +5531,8 @@ type Tool = {
5526
5531
  *
5527
5532
  * Credential fields accept `{{secret:...}}` references and should use them — a tool is readable by anyone who can `GET /tools`, and the stored reference is what is echoed back, never the resolved value.
5528
5533
  *
5534
+ * A credential written as a **literal** is stored and still sent on every call, but it is masked on every read: `secret_access_key`, `session_token` and `credentials` under `auth`, and any credential-named `headers` value (`Authorization`, `Cookie`, or a name containing `api-key`/`token`/`secret`/`password`), come back as `{"no_echo": true}`. The mask is an object rather than a string so a read-edit-write round trip fails the schema check instead of writing the placeholder in as the credential. A value carrying a `{{secret:...}}` reference is the wiring, not the credential, and stays readable.
5535
+ *
5529
5536
  * `headers` values additionally accept `{{context:<key>}}` references, resolved per call from the caller's `tool_context`, so a per-user credential can be placed in the real header the target expects (`Authorization: Bearer {{context:ocaToken}}`) instead of only in a prefixed context header. Valid **only** inside `headers` — a context value is caller-supplied, so it may not steer the `url` — and a key missing from the `tool_context` at call time fails the tool call with `MISSING_TOOL_CONTEXT_KEY` rather than sending an empty credential. See the Tool Context reference.
5530
5537
  *
5531
5538
  */
@@ -5533,7 +5540,7 @@ type Tool = {
5533
5540
  [key: string]: unknown;
5534
5541
  } | null;
5535
5542
  /**
5536
- * MCP server config (`url`, `headers`). `headers` values accept `{{secret:...}}` and `{{context:<key>}}` references, resolved right before the outbound MCP request; `url` accepts `{{secret:...}}` only.
5543
+ * MCP server config (`url`, `headers`). `headers` values accept `{{secret:...}}` and `{{context:<key>}}` references, resolved right before the outbound MCP request; `url` accepts `{{secret:...}}` only. A literal credential in `headers` is masked on read, exactly as in `execute`.
5537
5544
  */
5538
5545
  mcp?: {
5539
5546
  [key: string]: unknown;
@@ -5610,6 +5617,8 @@ type CreateToolRequest = {
5610
5617
  *
5611
5618
  * Credential fields accept `{{secret:...}}` references and should use them — a tool is readable by anyone who can `GET /tools`, and the stored reference is what is echoed back, never the resolved value.
5612
5619
  *
5620
+ * A credential written as a **literal** is stored and still sent on every call, but it is masked on every read: `secret_access_key`, `session_token` and `credentials` under `auth`, and any credential-named `headers` value (`Authorization`, `Cookie`, or a name containing `api-key`/`token`/`secret`/`password`), come back as `{"no_echo": true}`. The mask is an object rather than a string so a read-edit-write round trip fails the schema check instead of writing the placeholder in as the credential. A value carrying a `{{secret:...}}` reference is the wiring, not the credential, and stays readable.
5621
+ *
5613
5622
  * `headers` values additionally accept `{{context:<key>}}` references, resolved per call from the caller's `tool_context`, so a per-user credential can be placed in the real header the target expects (`Authorization: Bearer {{context:ocaToken}}`) instead of only in an `X-Soat-Context-<key>` header. Valid **only** inside `headers` — a context value is caller-supplied, so it may not steer the `url` — and a key missing from the `tool_context` at call time fails the tool call with `MISSING_TOOL_CONTEXT_KEY` rather than sending an empty credential. See the Tool Context reference.
5614
5623
  *
5615
5624
  */
@@ -5617,7 +5626,7 @@ type CreateToolRequest = {
5617
5626
  [key: string]: unknown;
5618
5627
  };
5619
5628
  /**
5620
- * MCP server config (`url`, `headers`). `headers` values accept `{{secret:...}}` and `{{context:<key>}}` references, resolved right before the outbound MCP request; `url` accepts `{{secret:...}}` only.
5629
+ * MCP server config (`url`, `headers`). `headers` values accept `{{secret:...}}` and `{{context:<key>}}` references, resolved right before the outbound MCP request; `url` accepts `{{secret:...}}` only. A literal credential in `headers` is masked on read, exactly as in `execute`.
5621
5630
  */
5622
5631
  mcp?: {
5623
5632
  [key: string]: unknown;
@@ -5676,6 +5685,8 @@ type UpdateToolRequest = {
5676
5685
  *
5677
5686
  * Credential fields accept `{{secret:...}}` references and should use them — a tool is readable by anyone who can `GET /tools`, and the stored reference is what is echoed back, never the resolved value.
5678
5687
  *
5688
+ * A credential written as a **literal** is stored and still sent on every call, but it is masked on every read: `secret_access_key`, `session_token` and `credentials` under `auth`, and any credential-named `headers` value (`Authorization`, `Cookie`, or a name containing `api-key`/`token`/`secret`/`password`), come back as `{"no_echo": true}`. The mask is an object rather than a string so a read-edit-write round trip fails the schema check instead of writing the placeholder in as the credential. A value carrying a `{{secret:...}}` reference is the wiring, not the credential, and stays readable.
5689
+ *
5679
5690
  * `headers` values additionally accept `{{context:<key>}}` references, resolved per call from the caller's `tool_context`, so a per-user credential can be placed in the real header the target expects (`Authorization: Bearer {{context:ocaToken}}`) instead of only in an `X-Soat-Context-<key>` header. Valid **only** inside `headers` — a context value is caller-supplied, so it may not steer the `url` — and a key missing from the `tool_context` at call time fails the tool call with `MISSING_TOOL_CONTEXT_KEY` rather than sending an empty credential. See the Tool Context reference.
5680
5691
  *
5681
5692
  */
@@ -5683,7 +5694,7 @@ type UpdateToolRequest = {
5683
5694
  [key: string]: unknown;
5684
5695
  } | null;
5685
5696
  /**
5686
- * MCP server config (`url`, `headers`). `headers` values accept `{{secret:...}}` and `{{context:<key>}}` references, resolved right before the outbound MCP request; `url` accepts `{{secret:...}}` only.
5697
+ * MCP server config (`url`, `headers`). `headers` values accept `{{secret:...}}` and `{{context:<key>}}` references, resolved right before the outbound MCP request; `url` accepts `{{secret:...}}` only. A literal credential in `headers` is masked on read, exactly as in `execute`.
5687
5698
  */
5688
5699
  mcp?: {
5689
5700
  [key: string]: unknown;
@@ -6662,7 +6673,7 @@ type ListActivityData = {
6662
6673
  /**
6663
6674
  * Filter by activity kind
6664
6675
  */
6665
- kind?: 'action_executed' | 'approval_resolved' | 'exception_created' | 'schedule_fired';
6676
+ kind?: 'action_executed' | 'approval_created' | 'approval_resolved' | 'exception_created' | 'schedule_fired';
6666
6677
  /**
6667
6678
  * Filter by severity
6668
6679
  */
@@ -8279,7 +8290,7 @@ type GetApprovalResponse = GetApprovalResponses[keyof GetApprovalResponses];
8279
8290
  type ApproveApprovalData = {
8280
8291
  body?: {
8281
8292
  /**
8282
- * Edited arguments to execute instead of the proposed ones
8293
+ * Edited arguments to execute instead of the proposed ones. Editing composes a new call, so it additionally requires permission to make that call: `tools:CallTool` on the tool, and for a `builtin` proposal the action's own IAM action.
8283
8294
  */
8284
8295
  arguments?: {
8285
8296
  [key: string]: unknown;
@@ -8296,7 +8307,7 @@ type ApproveApprovalData = {
8296
8307
  };
8297
8308
  type ApproveApprovalErrors = {
8298
8309
  /**
8299
- * Edited arguments are not a JSON object
8310
+ * Edited arguments are not a JSON object, or do not satisfy the tool's parameters schema
8300
8311
  */
8301
8312
  400: unknown;
8302
8313
  /**
@@ -8304,7 +8315,7 @@ type ApproveApprovalErrors = {
8304
8315
  */
8305
8316
  401: unknown;
8306
8317
  /**
8307
- * Forbidden
8318
+ * Forbidden — including an edit by a caller who may resolve the item but not make the call it proposes
8308
8319
  */
8309
8320
  403: unknown;
8310
8321
  /**
@@ -9887,7 +9898,7 @@ type CreateEmbeddingsData = {
9887
9898
  */
9888
9899
  input?: string;
9889
9900
  /**
9890
- * Batch of texts to embed.
9901
+ * Batch of texts to embed. At most 256 per request — each input is one call to the embedding model, so a larger batch is refused (`VALIDATION_FAILED`) rather than queued. Split it across requests.
9891
9902
  */
9892
9903
  inputs?: Array<string>;
9893
9904
  };
@@ -11112,6 +11123,10 @@ type UploadFileErrors = {
11112
11123
  * The project's `storage_bytes` quota is exceeded (`QUOTA_STORAGE_EXCEEDED`). Delete stored content, or raise the quota — no window reset clears a stored total, so no `Retry-After` is sent.
11113
11124
  */
11114
11125
  409: ErrorResponse;
11126
+ /**
11127
+ * The upload is over this deployment's byte ceiling (`UPLOAD_TOO_LARGE`; `FILE_UPLOAD_MAX_BYTES`, 25 MB by default). The request is refused while the body is still streaming, so nothing was stored.
11128
+ */
11129
+ 413: ErrorResponse;
11115
11130
  };
11116
11131
  type UploadFileError = UploadFileErrors[keyof UploadFileErrors];
11117
11132
  type UploadFileResponses = {
@@ -11209,6 +11224,10 @@ type UploadFileWithTokenErrors = {
11209
11224
  * Upload token expired
11210
11225
  */
11211
11226
  410: ErrorResponse;
11227
+ /**
11228
+ * The upload is over this deployment's byte ceiling (`UPLOAD_TOO_LARGE`; `FILE_UPLOAD_MAX_BYTES`, 25 MB by default). The request is refused while the body is still streaming, so nothing was stored.
11229
+ */
11230
+ 413: ErrorResponse;
11212
11231
  };
11213
11232
  type UploadFileWithTokenError = UploadFileWithTokenErrors[keyof UploadFileWithTokenErrors];
11214
11233
  type UploadFileWithTokenResponses = {
@@ -12421,7 +12440,7 @@ type CreateIngestionRuleData = {
12421
12440
  */
12422
12441
  project_id?: string;
12423
12442
  /**
12424
- * MIME type glob matched against a file's content_type
12443
+ * MIME type glob matched against a file's content_type. At most 4 wildcards and 255 characters — a MIME glob needs one on each side of the slash at most.
12425
12444
  */
12426
12445
  content_type_glob: string;
12427
12446
  /**
@@ -12568,6 +12587,9 @@ type GetIngestionRuleResponses = {
12568
12587
  type GetIngestionRuleResponse = GetIngestionRuleResponses[keyof GetIngestionRuleResponses];
12569
12588
  type UpdateIngestionRuleData = {
12570
12589
  body: {
12590
+ /**
12591
+ * MIME type glob matched against a file's content_type. At most 4 wildcards and 255 characters.
12592
+ */
12571
12593
  content_type_glob?: string;
12572
12594
  tool_id?: string | null;
12573
12595
  agent_id?: string | null;
@@ -12640,7 +12662,7 @@ type SearchKnowledgeData = {
12640
12662
  */
12641
12663
  min_score?: number;
12642
12664
  /**
12643
- * Maximum number of results to return (default 10)
12665
+ * Maximum number of results to return (default 10). A value above 100 is clamped to 100 — the ceiling bounds the vector scan this one request performs, so a larger `limit` returns everything there is up to that many rows rather than being refused.
12644
12666
  */
12645
12667
  limit?: number;
12646
12668
  /**
@@ -17752,7 +17774,11 @@ declare class ApiKeys {
17752
17774
  /**
17753
17775
  * List API keys
17754
17776
  *
17755
- * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - Project-scoped credential (API key or OAuth token): returns only API keys scoped to that project.
17777
+ * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - Project-scoped credential (API key or OAuth token): returns the caller's own
17778
+ * keys scoped to that project, or every key scoped to it when the credential
17779
+ * holds `api-keys:ListApiKeys` on the project. Confinement to a project is not
17780
+ * authority over it, and a key's metadata names its owner, prefix and attached
17781
+ * policies.
17756
17782
  *
17757
17783
  */
17758
17784
  static listApiKeys<ThrowOnError extends boolean = false>(options?: Options<ListApiKeysData, ThrowOnError>): RequestResult<ListApiKeysResponses, ListApiKeysErrors, ThrowOnError>;
@@ -18686,7 +18712,8 @@ declare class Orchestrations {
18686
18712
  /**
18687
18713
  * Get orchestration queue stats
18688
18714
  *
18689
- * Returns a point-in-time snapshot of the orchestration run queue: how many tasks are waiting to be claimed (`queue_depth`), how many are currently claimed with a valid lease (`claimed_tasks`), the age of the oldest waiting task, recent claim-latency percentiles over a rolling in-process window, and a per-project breakdown. Intended for admin/operator policies; guarded by `orchestrations:GetQueueStats`. A project-scoped caller sees only their own projects under `per_project`.
18715
+ * Returns a point-in-time snapshot of the orchestration run queue: how many tasks are waiting to be claimed (`queue_depth`), how many are currently claimed with a valid lease (`claimed_tasks`), the age of the oldest waiting task, recent claim-latency percentiles over a rolling in-process window, and a per-project breakdown. Intended for admin/operator policies; guarded by `orchestrations:GetQueueStats`.
18716
+ * Every figure is scoped to what the caller may see. A project-scoped caller gets `per_project` for their own projects only, `queue_depth` and `claimed_tasks` summed over those same projects, and `null` for `oldest_queued_age_seconds` and the `claim_latency_ms` percentiles — both describe the whole deployment and cannot be narrowed, so they are withheld rather than approximated. An unrestricted caller (the action granted on every project) gets the deployment-wide figures.
18690
18717
  *
18691
18718
  */
18692
18719
  static getQueueStats<ThrowOnError extends boolean = false>(options?: Options<GetQueueStatsData, ThrowOnError>): RequestResult<GetQueueStatsResponses, GetQueueStatsErrors, ThrowOnError>;
@@ -19117,6 +19144,7 @@ declare class Tools {
19117
19144
  * Directly invokes a tool and returns its output. Supported for `http`, `builtin`, `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.
19118
19145
  * For `builtin` and `mcp` tools the `action` field is required and identifies which action (SOAT) or tool name (MCP) to invoke. For `http` tools `action` is ignored. When a `builtin` or `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.
19119
19146
  * `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.
19147
+ * Guardrails attached to the tool or to its project adjudicate the call before dispatch, composing project + tool scope. A call this route cannot await a decision on — class C (human sign-off), class D, or a class-B tripwire — is refused with `422 TOOL_DISPATCH_FAILED`, whose `meta` carries the `tool_id` and the `outcome`. A `pipeline` tool is adjudicated before its first step runs, and every step is adjudicated as the call of that tool it is.
19120
19148
  *
19121
19149
  */
19122
19150
  static callTool<ThrowOnError extends boolean = false>(options: Options<CallToolData, ThrowOnError>): RequestResult<CallToolResponses, CallToolErrors, ThrowOnError>;
@@ -19181,7 +19209,8 @@ declare class Triggers {
19181
19209
  /**
19182
19210
  * Update a trigger
19183
19211
  *
19184
- * Updates an existing trigger's configuration. The type is immutable.
19212
+ * Updates an existing trigger's configuration. The type is immutable. Changing `target_type` or `target_id` re-checks the target-start action (`orchestrations:StartRun`, `agents:CreateAgentGeneration` or `tools:CallTool`) against the resulting target, because a firing runs with the trigger creator's authority rather than the updater's. A caller who could not start the new target is answered `403` and the trigger keeps the target it had.
19213
+ *
19185
19214
  */
19186
19215
  static updateTrigger<ThrowOnError extends boolean = false>(options: Options<UpdateTriggerData, ThrowOnError>): RequestResult<UpdateTriggerResponses, UpdateTriggerErrors, ThrowOnError>;
19187
19216
  /**
package/dist/index.mjs CHANGED
@@ -1068,7 +1068,11 @@ var ApiKeys = class {
1068
1068
  /**
1069
1069
  * List API keys
1070
1070
  *
1071
- * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - Project-scoped credential (API key or OAuth token): returns only API keys scoped to that project.
1071
+ * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - Project-scoped credential (API key or OAuth token): returns the caller's own
1072
+ * keys scoped to that project, or every key scoped to it when the credential
1073
+ * holds `api-keys:ListApiKeys` on the project. Confinement to a project is not
1074
+ * authority over it, and a key's metadata names its owner, prefix and attached
1075
+ * policies.
1072
1076
  *
1073
1077
  */
1074
1078
  static listApiKeys(options) {
@@ -2880,7 +2884,8 @@ var Orchestrations = class {
2880
2884
  /**
2881
2885
  * Get orchestration queue stats
2882
2886
  *
2883
- * Returns a point-in-time snapshot of the orchestration run queue: how many tasks are waiting to be claimed (`queue_depth`), how many are currently claimed with a valid lease (`claimed_tasks`), the age of the oldest waiting task, recent claim-latency percentiles over a rolling in-process window, and a per-project breakdown. Intended for admin/operator policies; guarded by `orchestrations:GetQueueStats`. A project-scoped caller sees only their own projects under `per_project`.
2887
+ * Returns a point-in-time snapshot of the orchestration run queue: how many tasks are waiting to be claimed (`queue_depth`), how many are currently claimed with a valid lease (`claimed_tasks`), the age of the oldest waiting task, recent claim-latency percentiles over a rolling in-process window, and a per-project breakdown. Intended for admin/operator policies; guarded by `orchestrations:GetQueueStats`.
2888
+ * Every figure is scoped to what the caller may see. A project-scoped caller gets `per_project` for their own projects only, `queue_depth` and `claimed_tasks` summed over those same projects, and `null` for `oldest_queued_age_seconds` and the `claim_latency_ms` percentiles — both describe the whole deployment and cannot be narrowed, so they are withheld rather than approximated. An unrestricted caller (the action granted on every project) gets the deployment-wide figures.
2884
2889
  *
2885
2890
  */
2886
2891
  static getQueueStats(options) {
@@ -3746,6 +3751,7 @@ var Tools = class {
3746
3751
  * Directly invokes a tool and returns its output. Supported for `http`, `builtin`, `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.
3747
3752
  * For `builtin` and `mcp` tools the `action` field is required and identifies which action (SOAT) or tool name (MCP) to invoke. For `http` tools `action` is ignored. When a `builtin` or `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.
3748
3753
  * `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.
3754
+ * Guardrails attached to the tool or to its project adjudicate the call before dispatch, composing project + tool scope. A call this route cannot await a decision on — class C (human sign-off), class D, or a class-B tripwire — is refused with `422 TOOL_DISPATCH_FAILED`, whose `meta` carries the `tool_id` and the `outcome`. A `pipeline` tool is adjudicated before its first step runs, and every step is adjudicated as the call of that tool it is.
3749
3755
  *
3750
3756
  */
3751
3757
  static callTool(options) {
@@ -3863,7 +3869,8 @@ var Triggers = class {
3863
3869
  /**
3864
3870
  * Update a trigger
3865
3871
  *
3866
- * Updates an existing trigger's configuration. The type is immutable.
3872
+ * Updates an existing trigger's configuration. The type is immutable. Changing `target_type` or `target_id` re-checks the target-start action (`orchestrations:StartRun`, `agents:CreateAgentGeneration` or `tools:CallTool`) against the resulting target, because a firing runs with the trigger creator's authority rather than the updater's. A caller who could not start the new target is answered `403` and the trigger keeps the target it had.
3873
+ *
3867
3874
  */
3868
3875
  static updateTrigger(options) {
3869
3876
  return (options.client ?? client).patch({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soat/sdk",
3
- "version": "0.44.0",
3
+ "version": "0.45.0",
4
4
  "description": "TypeScript SDK for SOAT — open-source infrastructure for production-ready AI agents.",
5
5
  "keywords": [
6
6
  "ai-agents",