@soat/sdk 0.42.0 → 0.44.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
@@ -960,7 +960,14 @@ var AiProviders = class {
960
960
  /**
961
961
  * Create an AI provider
962
962
  *
963
- * Creates a new LLM provider configuration
963
+ * Creates a new LLM provider configuration.
964
+ *
965
+ * A `bedrock` or `vertex` record must carry a credential of its own — a
966
+ * linked `secret_id`, or an `apiKey` in `config`. Without one the provider
967
+ * SDK signs with the server's own credentials (the AWS default credential
968
+ * chain, Google Application Default Credentials), which is refused with
969
+ * `400 VALIDATION_FAILED` unless the deployment allows it.
970
+ *
964
971
  */
965
972
  static createAiProvider(options) {
966
973
  return (options.client ?? client).post({
@@ -1018,7 +1025,7 @@ var AiProviders = class {
1018
1025
  * Asks the provider which models it can run, using this provider record's own credentials and configuration, and returns provider-native model ids — the same strings `default_model` and an agent's `model` carry.
1019
1026
  * Which models are reachable is a property of the credential, not of the provider type: a Vertex provider sees only the publisher models its Google Cloud project and location serve, and a Bedrock provider only the foundation models enabled in its region. Reading the list is how a caller avoids pinning a model that fails at generation time.
1020
1027
  * Not every provider type can answer. `azure` lists deployments an operator named rather than models, and `ollama` lists whatever was pulled onto that host, so both return `400 MODEL_LISTING_UNSUPPORTED`.
1021
- * Listing resolves credentials the same way generation does, so a record that can generate can list. The API-key types (`openai`, `groq`, `xai`, `gateway`, `custom`, `anthropic`, `google`) use the record's linked secret and cannot list without one. `bedrock` and `vertex` use the linked secret when there is one — IAM keys or a Bedrock API key, a Google service-account key and otherwise fall back to the server environment (the AWS default credential chain, Google Application Default Credentials), so a record with no `secret_id` can still list.
1028
+ * Listing resolves credentials the same way generation does, so a record that can generate can list. The API-key types (`openai`, `groq`, `xai`, `gateway`, `custom`, `anthropic`, `google`) use the record's linked secret and cannot list without one. `bedrock` and `vertex` use the linked secret — IAM keys or a Bedrock API key, a Google service-account key. A record with no `secret_id` would fall back to the server's own credentials (the AWS default credential chain, Google Application Default Credentials); it can list only on a deployment that allows a record to use them, and returns `400 AI_PROVIDER_MISCONFIGURED` otherwise.
1022
1029
  * A Vertex record needs no `config.project` when its secret is a service-account key, since the key file names its own project. A Vertex record in express mode (API key) cannot list at all: the publisher-model listing rejects API keys and needs a credential that asserts a principal, so it returns `400 MODEL_LISTING_UNSUPPORTED`.
1023
1030
  * The Vertex answer is the publisher catalogue the record's `config.location` region serves. The project behind the credential is billed and quota'd for the call but does not filter the result, so a listed model may still be unavailable to that project at generation time.
1024
1031
  *
@@ -2969,7 +2976,7 @@ var Orchestrations = class {
2969
2976
  /**
2970
2977
  * List orchestration runs
2971
2978
  *
2972
- * Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, or by whether the run has a parent at all.
2979
+ * Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, by status, or by whether the run has a parent at all.
2973
2980
  *
2974
2981
  * Note when aggregating: a run's `usage` covers its whole subtree, so summing it over a list that contains both a parent and its children counts the children more than once. Pass `nested=false` to sum over runs a caller started.
2975
2982
  */
@@ -3244,7 +3251,9 @@ var Quotas = class {
3244
3251
  /**
3245
3252
  * Create a quota
3246
3253
  *
3247
- * Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A duplicate quota (same project, scope, scope_ref, metric, window) is rejected with 409.
3254
+ * Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`; `storage_bytes` is valid for `scope: project` only. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A `cost_usd` quota may name one `meter_type` to cap; omitting it caps every priced meter. A duplicate quota (same project, scope, scope_ref, metric, window, meter_type) is rejected with 409.
3255
+ *
3256
+ * `storage_bytes` caps a stored total rather than a windowed one, so it takes `window: current` and every other metric refuses that value (400 either way). It is enforced at the corpus write paths — file upload and create, document create, document ingest and re-ingest, memory-entry create — with `409 QUOTA_STORAGE_EXCEEDED` and no `Retry-After`, since no window reset clears a footprint.
3248
3257
  */
3249
3258
  static createQuota(options) {
3250
3259
  return (options.client ?? client).post({
@@ -3551,7 +3560,7 @@ var Tasks = class {
3551
3560
  /**
3552
3561
  * List tasks
3553
3562
  *
3554
- * Lists tasks (the board query). Filter by workflow, state, status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.
3563
+ * Lists tasks (the board query). Filter by workflow, state, status, automation status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.
3555
3564
  */
3556
3565
  static listTasks(options) {
3557
3566
  return (options?.client ?? client).get({
package/dist/index.d.cts CHANGED
@@ -3099,7 +3099,7 @@ type WorkflowResourceProperties = {
3099
3099
  } | null;
3100
3100
  };
3101
3101
  /**
3102
- * Creates a quota — a project-scoped cap that blocks (`enforce`) or reports (`monitor`) when a windowed aggregate is exceeded. `requests` quotas are enforced by the request middleware; `tokens`/`cost_usd` quotas at the pre-generation check. Mirrors the quotas REST contract; `scope`, `metric`, and `window` are immutable after creation (only `limit`, `mode`, and `on_unpriced` update).
3102
+ * Creates a quota — a project-scoped cap that blocks (`enforce`) or reports (`monitor`) when a windowed aggregate is exceeded. `requests` quotas are enforced by the request middleware; `tokens`/`cost_usd` quotas at the pre-generation check. Mirrors the quotas REST contract; `scope`, `metric`, `window`, and `meter_type` are immutable after creation (only `limit`, `mode`, and `on_unpriced` update).
3103
3103
  */
3104
3104
  type QuotaResourceProperties = {
3105
3105
  /**
@@ -3113,13 +3113,13 @@ type QuotaResourceProperties = {
3113
3113
  /**
3114
3114
  * The metric being capped
3115
3115
  */
3116
- metric: 'requests' | 'tokens' | 'cost_usd';
3116
+ metric: 'requests' | 'tokens' | 'cost_usd' | 'storage_bytes';
3117
3117
  /**
3118
- * The window over which the metric is aggregated
3118
+ * The window over which the metric is aggregated. storage_bytes caps a stored total rather than a windowed one, so it takes current and refuses every other value; current is refused for every other metric.
3119
3119
  */
3120
- window: 'rolling_1m' | 'rolling_1h' | 'rolling_24h' | 'calendar_month';
3120
+ window: 'rolling_1m' | 'rolling_1h' | 'rolling_24h' | 'calendar_month' | 'current';
3121
3121
  /**
3122
- * The cap. Positive integer for requests/tokens; fractional allowed for cost_usd.
3122
+ * The cap. Positive integer for requests/tokens/storage_bytes (bytes); fractional allowed for cost_usd.
3123
3123
  */
3124
3124
  limit: number;
3125
3125
  /**
@@ -3130,6 +3130,10 @@ type QuotaResourceProperties = {
3130
3130
  * Only for metric cost_usd. What an enforce quota does over a pricing blackout — block (the default) refuses generations with 409 QUOTA_UNENFORCEABLE, allow accepts the unmeasurable spend. See the quotas REST contract.
3131
3131
  */
3132
3132
  on_unpriced?: 'block' | 'allow';
3133
+ /**
3134
+ * Only for metric cost_usd. The meter this cap answers for; omit it and the cap sums every priced meter. See the quotas REST contract.
3135
+ */
3136
+ meter_type?: 'llm_tokens' | 'compute_execution' | 'api_request' | 'storage';
3133
3137
  };
3134
3138
  /**
3135
3139
  * Creates a guardrail — an action-class document (`class`/`guard`) that gates tool-call autonomy. Attach it to a tool or agent via that resource's `guardrail_ids` (a `{ "ref": … }` to this resource in the same template resolves to its physical id at deploy time). Mirrors the guardrails REST contract; `class`/`default_class`/`guard`/`escalate` are flattened here from the REST API's single `document` object.
@@ -5041,16 +5045,23 @@ type Quota = {
5041
5045
  * Public id of the api key / agent / actor the quota applies to. For `api_key` and `agent` scope, NULL means all entities of that scope type in the project. For `actor` scope, NULL means one budget *per* actor rather than a pooled total across all actors.
5042
5046
  */
5043
5047
  scope_ref?: string | null;
5044
- metric?: 'requests' | 'tokens' | 'cost_usd';
5045
- window?: 'rolling_1m' | 'rolling_1h' | 'rolling_24h' | 'calendar_month';
5048
+ metric?: 'requests' | 'tokens' | 'cost_usd' | 'storage_bytes';
5049
+ /**
5050
+ * The window the metric is aggregated over; `current` on storage_bytes, which caps a stored total and never resets.
5051
+ */
5052
+ window?: 'rolling_1m' | 'rolling_1h' | 'rolling_24h' | 'calendar_month' | 'current';
5046
5053
  limit?: number;
5047
5054
  mode?: 'enforce' | 'monitor';
5055
+ /**
5056
+ * The meter a cost_usd cap answers for. Null is every priced meter, which is what a quota created without one carries.
5057
+ */
5058
+ meter_type?: 'llm_tokens' | 'compute_execution' | 'api_request' | 'storage' | null;
5048
5059
  /**
5049
5060
  * Pricing posture of a cost_usd quota over an unpriced blackout — block refuses generations, allow lets them through (the quota_unpriced exception is filed either way, and for a partly priced window, which no posture refuses). Null for metrics with no pricing dependency.
5050
5061
  */
5051
5062
  on_unpriced?: 'block' | 'allow' | null;
5052
5063
  /**
5053
- * Current fixed-window usage for the requests metric. Null for token/cost quotas (which aggregate the usage meter at check time rather than keeping a counter) and in list responses.
5064
+ * Current fixed-window usage for the requests metric. Null for token/cost quotas (which aggregate the usage meter at check time rather than keeping a counter), null for storage_bytes (a stored total has no window and no counter — read the footprint from the storage meter), and null in list responses.
5054
5065
  */
5055
5066
  current_usage?: {
5056
5067
  window_key?: string;
@@ -7635,7 +7646,7 @@ type CreateAiProviderData = {
7635
7646
  */
7636
7647
  default_model: string;
7637
7648
  /**
7638
- * Secret ID containing API credentials
7649
+ * Secret ID containing API credentials. Required for `bedrock` and `vertex` unless `config.apiKey` carries one.
7639
7650
  */
7640
7651
  secret_id?: string;
7641
7652
  /**
@@ -9395,6 +9406,10 @@ type CreateDocumentErrors = {
9395
9406
  * Forbidden
9396
9407
  */
9397
9408
  403: ErrorResponse;
9409
+ /**
9410
+ * 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.
9411
+ */
9412
+ 409: ErrorResponse;
9398
9413
  };
9399
9414
  type CreateDocumentError = CreateDocumentErrors[keyof CreateDocumentErrors];
9400
9415
  type CreateDocumentResponses = {
@@ -9460,7 +9475,7 @@ type IngestDocumentErrors = {
9460
9475
  */
9461
9476
  403: ErrorResponse;
9462
9477
  /**
9463
- * The file already backs a Document (a file can only be ingested once). Use `POST /documents/{document_id}/ingest` to re-process the existing document, or upload a new copy of the file to ingest it separately.
9478
+ * The file already backs a Document (a file can only be ingested once use `POST /documents/{document_id}/ingest` to re-process the existing document, or upload a new copy of the file to ingest it separately), or the project's `storage_bytes` quota is exceeded (`QUOTA_STORAGE_EXCEEDED`; delete stored content or raise the quota — no `Retry-After` is sent, since no window reset clears a stored total).
9464
9479
  */
9465
9480
  409: ErrorResponse;
9466
9481
  /**
@@ -9679,6 +9694,10 @@ type ReingestDocumentErrors = {
9679
9694
  * Document not found
9680
9695
  */
9681
9696
  404: ErrorResponse;
9697
+ /**
9698
+ * 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.
9699
+ */
9700
+ 409: ErrorResponse;
9682
9701
  /**
9683
9702
  * The file is too large to re-ingest synchronously (`?wait=true`). Retry in background mode.
9684
9703
  */
@@ -10188,6 +10207,10 @@ type CreateDatasetItemErrors = {
10188
10207
  * Dataset not found
10189
10208
  */
10190
10209
  404: unknown;
10210
+ /**
10211
+ * The project's `storage_bytes` quota is exceeded (`QUOTA_STORAGE_EXCEEDED`). A fixture is a corpus write like a document, so it is bounded by the same cap; delete stored content or raise the quota — no `Retry-After` is sent, since no window reset clears a stored total.
10212
+ */
10213
+ 409: unknown;
10191
10214
  };
10192
10215
  type CreateDatasetItemResponses = {
10193
10216
  /**
@@ -10240,7 +10263,7 @@ type CreateDatasetItemFromGenerationErrors = {
10240
10263
  */
10241
10264
  404: unknown;
10242
10265
  /**
10243
- * The generation has not completed, or its content was never stored or has been purged
10266
+ * The generation has not completed, its content was never stored or has been purged, or the project's `storage_bytes` quota is exceeded (`QUOTA_STORAGE_EXCEEDED`; delete stored content or raise the quota — no `Retry-After` is sent, since no window reset clears a stored total)
10244
10267
  */
10245
10268
  409: unknown;
10246
10269
  };
@@ -11028,6 +11051,10 @@ type CreateFileData = {
11028
11051
  url: '/api/v1/files';
11029
11052
  };
11030
11053
  type CreateFileErrors = {
11054
+ /**
11055
+ * 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.
11056
+ */
11057
+ 409: ErrorResponse;
11031
11058
  /**
11032
11059
  * Internal server error
11033
11060
  */
@@ -11081,6 +11108,10 @@ type UploadFileErrors = {
11081
11108
  * Insufficient permissions
11082
11109
  */
11083
11110
  403: ErrorResponse;
11111
+ /**
11112
+ * 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
+ */
11114
+ 409: ErrorResponse;
11084
11115
  };
11085
11116
  type UploadFileError = UploadFileErrors[keyof UploadFileErrors];
11086
11117
  type UploadFileResponses = {
@@ -11109,6 +11140,10 @@ type UploadFileBase64Errors = {
11109
11140
  * Insufficient permissions
11110
11141
  */
11111
11142
  403: ErrorResponse;
11143
+ /**
11144
+ * 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.
11145
+ */
11146
+ 409: ErrorResponse;
11112
11147
  };
11113
11148
  type UploadFileBase64Error = UploadFileBase64Errors[keyof UploadFileBase64Errors];
11114
11149
  type UploadFileBase64Responses = {
@@ -11167,7 +11202,7 @@ type UploadFileWithTokenErrors = {
11167
11202
  */
11168
11203
  404: ErrorResponse;
11169
11204
  /**
11170
- * Upload token already used
11205
+ * Upload token already used, or the project's `storage_bytes` quota is exceeded (`QUOTA_STORAGE_EXCEEDED`)
11171
11206
  */
11172
11207
  409: ErrorResponse;
11173
11208
  /**
@@ -12966,6 +13001,10 @@ type CreateMemoryEntryErrors = {
12966
13001
  * Memory not found
12967
13002
  */
12968
13003
  404: unknown;
13004
+ /**
13005
+ * 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.
13006
+ */
13007
+ 409: unknown;
12969
13008
  /**
12970
13009
  * Internal server error
12971
13010
  */
@@ -13675,6 +13714,12 @@ type ListOrchestrationRunsData = {
13675
13714
  * Contradicting `parent_orchestration_run_id` with `nested=false` is a `400`; any value other than `true` or `false` is a `400`.
13676
13715
  */
13677
13716
  nested?: boolean;
13717
+ /**
13718
+ * Filter by run status. Repeat the parameter to OR values — `status=queued&status=running&status=sleeping&status=awaiting_input` is the set still driving, which is how a caller finds live work without paging every run the project ever started.
13719
+ *
13720
+ * There is no `non_terminal` shorthand on purpose: which statuses count as live is the caller's policy. A value outside the enum, empty string included, is a `400`.
13721
+ */
13722
+ status?: Array<'queued' | 'running' | 'sleeping' | 'awaiting_input' | 'succeeded' | 'failed' | 'cancelled' | 'expired'>;
13678
13723
  /**
13679
13724
  * Maximum number of results to return
13680
13725
  */
@@ -14442,13 +14487,13 @@ type CreateQuotaData = {
14442
14487
  /**
14443
14488
  * The metric being capped
14444
14489
  */
14445
- metric: 'requests' | 'tokens' | 'cost_usd';
14490
+ metric: 'requests' | 'tokens' | 'cost_usd' | 'storage_bytes';
14446
14491
  /**
14447
- * The window over which the metric is aggregated
14492
+ * The window over which the metric is aggregated. `current` is the only accepted value for storage_bytes (a stored total is not aggregated over time) and is refused for every other metric.
14448
14493
  */
14449
- window: 'rolling_1m' | 'rolling_1h' | 'rolling_24h' | 'calendar_month';
14494
+ window: 'rolling_1m' | 'rolling_1h' | 'rolling_24h' | 'calendar_month' | 'current';
14450
14495
  /**
14451
- * The cap. Must be a positive integer for requests/tokens; fractional values are allowed for cost_usd.
14496
+ * The cap. Must be a positive integer for requests/tokens/storage_bytes (bytes); fractional values are allowed for cost_usd.
14452
14497
  */
14453
14498
  limit: number;
14454
14499
  /**
@@ -14459,6 +14504,10 @@ type CreateQuotaData = {
14459
14504
  * Only for metric cost_usd (400 on any other metric). What an enforce quota does when the current window is a pricing blackout — several metered llm_tokens events, none of them priced, so the aggregate is 0 however much was actually spent. Platform meters such as compute_execution are read for the aggregate but never for this verdict. block (the default) refuses new generations with 409 QUOTA_UNENFORCEABLE until pricing is configured; allow accepts the unmeasurable spend explicitly. Either way a quota_unpriced exception is filed. monitor-mode quotas never block regardless. A partly priced window is not a blackout: no posture refuses it, it is enforced on its priced total, and it files the same exception.
14460
14505
  */
14461
14506
  on_unpriced?: 'block' | 'allow';
14507
+ /**
14508
+ * Only for metric cost_usd (400 on any other metric). The meter this cap answers for. Omit it and the cap sums every priced meter, which is the existing behaviour; name one and only that meter's cost counts, so an AI spend cap is not consumed by platform meters the operator prices (and vice versa). Part of the quota's identity, so two meter scopes can share a scope/metric/window and neither conflicts with an unscoped cap. Immutable after creation — replace the quota to change it.
14509
+ */
14510
+ meter_type?: 'llm_tokens' | 'compute_execution' | 'api_request' | 'storage';
14462
14511
  };
14463
14512
  path?: never;
14464
14513
  query?: never;
@@ -15334,6 +15383,12 @@ type ListTasksData = {
15334
15383
  workflow_id?: string;
15335
15384
  state?: string;
15336
15385
  status?: 'open' | 'closed';
15386
+ /**
15387
+ * Filter by the current state's dispatch status. Repeat the parameter to OR values. `none` selects the tasks whose `automation_status` is `null` — the ones that never entered a state with an automation. It is a value a task really holds, so it is a value of the filter too; the parameter's own absence already means "every task".
15388
+ *
15389
+ * A value outside the enum, empty string included, is a `400`.
15390
+ */
15391
+ automation_status?: Array<'running' | 'completed' | 'failed' | 'unrouted' | 'paused' | 'none'>;
15337
15392
  assignee?: string;
15338
15393
  /**
15339
15394
  * Maximum number of results to return
@@ -17635,7 +17690,14 @@ declare class AiProviders {
17635
17690
  /**
17636
17691
  * Create an AI provider
17637
17692
  *
17638
- * Creates a new LLM provider configuration
17693
+ * Creates a new LLM provider configuration.
17694
+ *
17695
+ * A `bedrock` or `vertex` record must carry a credential of its own — a
17696
+ * linked `secret_id`, or an `apiKey` in `config`. Without one the provider
17697
+ * SDK signs with the server's own credentials (the AWS default credential
17698
+ * chain, Google Application Default Credentials), which is refused with
17699
+ * `400 VALIDATION_FAILED` unless the deployment allows it.
17700
+ *
17639
17701
  */
17640
17702
  static createAiProvider<ThrowOnError extends boolean = false>(options: Options<CreateAiProviderData, ThrowOnError>): RequestResult<CreateAiProviderResponses, CreateAiProviderErrors, ThrowOnError>;
17641
17703
  /**
@@ -17665,7 +17727,7 @@ declare class AiProviders {
17665
17727
  * Asks the provider which models it can run, using this provider record's own credentials and configuration, and returns provider-native model ids — the same strings `default_model` and an agent's `model` carry.
17666
17728
  * Which models are reachable is a property of the credential, not of the provider type: a Vertex provider sees only the publisher models its Google Cloud project and location serve, and a Bedrock provider only the foundation models enabled in its region. Reading the list is how a caller avoids pinning a model that fails at generation time.
17667
17729
  * Not every provider type can answer. `azure` lists deployments an operator named rather than models, and `ollama` lists whatever was pulled onto that host, so both return `400 MODEL_LISTING_UNSUPPORTED`.
17668
- * Listing resolves credentials the same way generation does, so a record that can generate can list. The API-key types (`openai`, `groq`, `xai`, `gateway`, `custom`, `anthropic`, `google`) use the record's linked secret and cannot list without one. `bedrock` and `vertex` use the linked secret when there is one — IAM keys or a Bedrock API key, a Google service-account key and otherwise fall back to the server environment (the AWS default credential chain, Google Application Default Credentials), so a record with no `secret_id` can still list.
17730
+ * Listing resolves credentials the same way generation does, so a record that can generate can list. The API-key types (`openai`, `groq`, `xai`, `gateway`, `custom`, `anthropic`, `google`) use the record's linked secret and cannot list without one. `bedrock` and `vertex` use the linked secret — IAM keys or a Bedrock API key, a Google service-account key. A record with no `secret_id` would fall back to the server's own credentials (the AWS default credential chain, Google Application Default Credentials); it can list only on a deployment that allows a record to use them, and returns `400 AI_PROVIDER_MISCONFIGURED` otherwise.
17669
17731
  * A Vertex record needs no `config.project` when its secret is a service-account key, since the key file names its own project. A Vertex record in express mode (API key) cannot list at all: the publisher-model listing rejects API keys and needs a credential that asserts a principal, so it returns `400 MODEL_LISTING_UNSUPPORTED`.
17670
17732
  * The Vertex answer is the publisher catalogue the record's `config.location` region serves. The project behind the credential is billed and quota'd for the call but does not filter the result, so a listed model may still be unavailable to that project at generation time.
17671
17733
  *
@@ -18672,7 +18734,7 @@ declare class Orchestrations {
18672
18734
  /**
18673
18735
  * List orchestration runs
18674
18736
  *
18675
- * Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, or by whether the run has a parent at all.
18737
+ * Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, by status, or by whether the run has a parent at all.
18676
18738
  *
18677
18739
  * Note when aggregating: a run's `usage` covers its whole subtree, so summing it over a list that contains both a parent and its children counts the children more than once. Pass `nested=false` to sum over runs a caller started.
18678
18740
  */
@@ -18811,7 +18873,9 @@ declare class Quotas {
18811
18873
  /**
18812
18874
  * Create a quota
18813
18875
  *
18814
- * Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A duplicate quota (same project, scope, scope_ref, metric, window) is rejected with 409.
18876
+ * Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`; `storage_bytes` is valid for `scope: project` only. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A `cost_usd` quota may name one `meter_type` to cap; omitting it caps every priced meter. A duplicate quota (same project, scope, scope_ref, metric, window, meter_type) is rejected with 409.
18877
+ *
18878
+ * `storage_bytes` caps a stored total rather than a windowed one, so it takes `window: current` and every other metric refuses that value (400 either way). It is enforced at the corpus write paths — file upload and create, document create, document ingest and re-ingest, memory-entry create — with `409 QUOTA_STORAGE_EXCEEDED` and no `Retry-After`, since no window reset clears a footprint.
18815
18879
  */
18816
18880
  static createQuota<ThrowOnError extends boolean = false>(options: Options<CreateQuotaData, ThrowOnError>): RequestResult<CreateQuotaResponses, CreateQuotaErrors, ThrowOnError>;
18817
18881
  /**
@@ -18960,7 +19024,7 @@ declare class Tasks {
18960
19024
  /**
18961
19025
  * List tasks
18962
19026
  *
18963
- * Lists tasks (the board query). Filter by workflow, state, status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.
19027
+ * Lists tasks (the board query). Filter by workflow, state, status, automation status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.
18964
19028
  */
18965
19029
  static listTasks<ThrowOnError extends boolean = false>(options?: Options<ListTasksData, ThrowOnError>): RequestResult<ListTasksResponses, ListTasksErrors, ThrowOnError>;
18966
19030
  /**
package/dist/index.d.mts CHANGED
@@ -3099,7 +3099,7 @@ type WorkflowResourceProperties = {
3099
3099
  } | null;
3100
3100
  };
3101
3101
  /**
3102
- * Creates a quota — a project-scoped cap that blocks (`enforce`) or reports (`monitor`) when a windowed aggregate is exceeded. `requests` quotas are enforced by the request middleware; `tokens`/`cost_usd` quotas at the pre-generation check. Mirrors the quotas REST contract; `scope`, `metric`, and `window` are immutable after creation (only `limit`, `mode`, and `on_unpriced` update).
3102
+ * Creates a quota — a project-scoped cap that blocks (`enforce`) or reports (`monitor`) when a windowed aggregate is exceeded. `requests` quotas are enforced by the request middleware; `tokens`/`cost_usd` quotas at the pre-generation check. Mirrors the quotas REST contract; `scope`, `metric`, `window`, and `meter_type` are immutable after creation (only `limit`, `mode`, and `on_unpriced` update).
3103
3103
  */
3104
3104
  type QuotaResourceProperties = {
3105
3105
  /**
@@ -3113,13 +3113,13 @@ type QuotaResourceProperties = {
3113
3113
  /**
3114
3114
  * The metric being capped
3115
3115
  */
3116
- metric: 'requests' | 'tokens' | 'cost_usd';
3116
+ metric: 'requests' | 'tokens' | 'cost_usd' | 'storage_bytes';
3117
3117
  /**
3118
- * The window over which the metric is aggregated
3118
+ * The window over which the metric is aggregated. storage_bytes caps a stored total rather than a windowed one, so it takes current and refuses every other value; current is refused for every other metric.
3119
3119
  */
3120
- window: 'rolling_1m' | 'rolling_1h' | 'rolling_24h' | 'calendar_month';
3120
+ window: 'rolling_1m' | 'rolling_1h' | 'rolling_24h' | 'calendar_month' | 'current';
3121
3121
  /**
3122
- * The cap. Positive integer for requests/tokens; fractional allowed for cost_usd.
3122
+ * The cap. Positive integer for requests/tokens/storage_bytes (bytes); fractional allowed for cost_usd.
3123
3123
  */
3124
3124
  limit: number;
3125
3125
  /**
@@ -3130,6 +3130,10 @@ type QuotaResourceProperties = {
3130
3130
  * Only for metric cost_usd. What an enforce quota does over a pricing blackout — block (the default) refuses generations with 409 QUOTA_UNENFORCEABLE, allow accepts the unmeasurable spend. See the quotas REST contract.
3131
3131
  */
3132
3132
  on_unpriced?: 'block' | 'allow';
3133
+ /**
3134
+ * Only for metric cost_usd. The meter this cap answers for; omit it and the cap sums every priced meter. See the quotas REST contract.
3135
+ */
3136
+ meter_type?: 'llm_tokens' | 'compute_execution' | 'api_request' | 'storage';
3133
3137
  };
3134
3138
  /**
3135
3139
  * Creates a guardrail — an action-class document (`class`/`guard`) that gates tool-call autonomy. Attach it to a tool or agent via that resource's `guardrail_ids` (a `{ "ref": … }` to this resource in the same template resolves to its physical id at deploy time). Mirrors the guardrails REST contract; `class`/`default_class`/`guard`/`escalate` are flattened here from the REST API's single `document` object.
@@ -5041,16 +5045,23 @@ type Quota = {
5041
5045
  * Public id of the api key / agent / actor the quota applies to. For `api_key` and `agent` scope, NULL means all entities of that scope type in the project. For `actor` scope, NULL means one budget *per* actor rather than a pooled total across all actors.
5042
5046
  */
5043
5047
  scope_ref?: string | null;
5044
- metric?: 'requests' | 'tokens' | 'cost_usd';
5045
- window?: 'rolling_1m' | 'rolling_1h' | 'rolling_24h' | 'calendar_month';
5048
+ metric?: 'requests' | 'tokens' | 'cost_usd' | 'storage_bytes';
5049
+ /**
5050
+ * The window the metric is aggregated over; `current` on storage_bytes, which caps a stored total and never resets.
5051
+ */
5052
+ window?: 'rolling_1m' | 'rolling_1h' | 'rolling_24h' | 'calendar_month' | 'current';
5046
5053
  limit?: number;
5047
5054
  mode?: 'enforce' | 'monitor';
5055
+ /**
5056
+ * The meter a cost_usd cap answers for. Null is every priced meter, which is what a quota created without one carries.
5057
+ */
5058
+ meter_type?: 'llm_tokens' | 'compute_execution' | 'api_request' | 'storage' | null;
5048
5059
  /**
5049
5060
  * Pricing posture of a cost_usd quota over an unpriced blackout — block refuses generations, allow lets them through (the quota_unpriced exception is filed either way, and for a partly priced window, which no posture refuses). Null for metrics with no pricing dependency.
5050
5061
  */
5051
5062
  on_unpriced?: 'block' | 'allow' | null;
5052
5063
  /**
5053
- * Current fixed-window usage for the requests metric. Null for token/cost quotas (which aggregate the usage meter at check time rather than keeping a counter) and in list responses.
5064
+ * Current fixed-window usage for the requests metric. Null for token/cost quotas (which aggregate the usage meter at check time rather than keeping a counter), null for storage_bytes (a stored total has no window and no counter — read the footprint from the storage meter), and null in list responses.
5054
5065
  */
5055
5066
  current_usage?: {
5056
5067
  window_key?: string;
@@ -7635,7 +7646,7 @@ type CreateAiProviderData = {
7635
7646
  */
7636
7647
  default_model: string;
7637
7648
  /**
7638
- * Secret ID containing API credentials
7649
+ * Secret ID containing API credentials. Required for `bedrock` and `vertex` unless `config.apiKey` carries one.
7639
7650
  */
7640
7651
  secret_id?: string;
7641
7652
  /**
@@ -9395,6 +9406,10 @@ type CreateDocumentErrors = {
9395
9406
  * Forbidden
9396
9407
  */
9397
9408
  403: ErrorResponse;
9409
+ /**
9410
+ * 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.
9411
+ */
9412
+ 409: ErrorResponse;
9398
9413
  };
9399
9414
  type CreateDocumentError = CreateDocumentErrors[keyof CreateDocumentErrors];
9400
9415
  type CreateDocumentResponses = {
@@ -9460,7 +9475,7 @@ type IngestDocumentErrors = {
9460
9475
  */
9461
9476
  403: ErrorResponse;
9462
9477
  /**
9463
- * The file already backs a Document (a file can only be ingested once). Use `POST /documents/{document_id}/ingest` to re-process the existing document, or upload a new copy of the file to ingest it separately.
9478
+ * The file already backs a Document (a file can only be ingested once use `POST /documents/{document_id}/ingest` to re-process the existing document, or upload a new copy of the file to ingest it separately), or the project's `storage_bytes` quota is exceeded (`QUOTA_STORAGE_EXCEEDED`; delete stored content or raise the quota — no `Retry-After` is sent, since no window reset clears a stored total).
9464
9479
  */
9465
9480
  409: ErrorResponse;
9466
9481
  /**
@@ -9679,6 +9694,10 @@ type ReingestDocumentErrors = {
9679
9694
  * Document not found
9680
9695
  */
9681
9696
  404: ErrorResponse;
9697
+ /**
9698
+ * 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.
9699
+ */
9700
+ 409: ErrorResponse;
9682
9701
  /**
9683
9702
  * The file is too large to re-ingest synchronously (`?wait=true`). Retry in background mode.
9684
9703
  */
@@ -10188,6 +10207,10 @@ type CreateDatasetItemErrors = {
10188
10207
  * Dataset not found
10189
10208
  */
10190
10209
  404: unknown;
10210
+ /**
10211
+ * The project's `storage_bytes` quota is exceeded (`QUOTA_STORAGE_EXCEEDED`). A fixture is a corpus write like a document, so it is bounded by the same cap; delete stored content or raise the quota — no `Retry-After` is sent, since no window reset clears a stored total.
10212
+ */
10213
+ 409: unknown;
10191
10214
  };
10192
10215
  type CreateDatasetItemResponses = {
10193
10216
  /**
@@ -10240,7 +10263,7 @@ type CreateDatasetItemFromGenerationErrors = {
10240
10263
  */
10241
10264
  404: unknown;
10242
10265
  /**
10243
- * The generation has not completed, or its content was never stored or has been purged
10266
+ * The generation has not completed, its content was never stored or has been purged, or the project's `storage_bytes` quota is exceeded (`QUOTA_STORAGE_EXCEEDED`; delete stored content or raise the quota — no `Retry-After` is sent, since no window reset clears a stored total)
10244
10267
  */
10245
10268
  409: unknown;
10246
10269
  };
@@ -11028,6 +11051,10 @@ type CreateFileData = {
11028
11051
  url: '/api/v1/files';
11029
11052
  };
11030
11053
  type CreateFileErrors = {
11054
+ /**
11055
+ * 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.
11056
+ */
11057
+ 409: ErrorResponse;
11031
11058
  /**
11032
11059
  * Internal server error
11033
11060
  */
@@ -11081,6 +11108,10 @@ type UploadFileErrors = {
11081
11108
  * Insufficient permissions
11082
11109
  */
11083
11110
  403: ErrorResponse;
11111
+ /**
11112
+ * 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
+ */
11114
+ 409: ErrorResponse;
11084
11115
  };
11085
11116
  type UploadFileError = UploadFileErrors[keyof UploadFileErrors];
11086
11117
  type UploadFileResponses = {
@@ -11109,6 +11140,10 @@ type UploadFileBase64Errors = {
11109
11140
  * Insufficient permissions
11110
11141
  */
11111
11142
  403: ErrorResponse;
11143
+ /**
11144
+ * 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.
11145
+ */
11146
+ 409: ErrorResponse;
11112
11147
  };
11113
11148
  type UploadFileBase64Error = UploadFileBase64Errors[keyof UploadFileBase64Errors];
11114
11149
  type UploadFileBase64Responses = {
@@ -11167,7 +11202,7 @@ type UploadFileWithTokenErrors = {
11167
11202
  */
11168
11203
  404: ErrorResponse;
11169
11204
  /**
11170
- * Upload token already used
11205
+ * Upload token already used, or the project's `storage_bytes` quota is exceeded (`QUOTA_STORAGE_EXCEEDED`)
11171
11206
  */
11172
11207
  409: ErrorResponse;
11173
11208
  /**
@@ -12966,6 +13001,10 @@ type CreateMemoryEntryErrors = {
12966
13001
  * Memory not found
12967
13002
  */
12968
13003
  404: unknown;
13004
+ /**
13005
+ * 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.
13006
+ */
13007
+ 409: unknown;
12969
13008
  /**
12970
13009
  * Internal server error
12971
13010
  */
@@ -13675,6 +13714,12 @@ type ListOrchestrationRunsData = {
13675
13714
  * Contradicting `parent_orchestration_run_id` with `nested=false` is a `400`; any value other than `true` or `false` is a `400`.
13676
13715
  */
13677
13716
  nested?: boolean;
13717
+ /**
13718
+ * Filter by run status. Repeat the parameter to OR values — `status=queued&status=running&status=sleeping&status=awaiting_input` is the set still driving, which is how a caller finds live work without paging every run the project ever started.
13719
+ *
13720
+ * There is no `non_terminal` shorthand on purpose: which statuses count as live is the caller's policy. A value outside the enum, empty string included, is a `400`.
13721
+ */
13722
+ status?: Array<'queued' | 'running' | 'sleeping' | 'awaiting_input' | 'succeeded' | 'failed' | 'cancelled' | 'expired'>;
13678
13723
  /**
13679
13724
  * Maximum number of results to return
13680
13725
  */
@@ -14442,13 +14487,13 @@ type CreateQuotaData = {
14442
14487
  /**
14443
14488
  * The metric being capped
14444
14489
  */
14445
- metric: 'requests' | 'tokens' | 'cost_usd';
14490
+ metric: 'requests' | 'tokens' | 'cost_usd' | 'storage_bytes';
14446
14491
  /**
14447
- * The window over which the metric is aggregated
14492
+ * The window over which the metric is aggregated. `current` is the only accepted value for storage_bytes (a stored total is not aggregated over time) and is refused for every other metric.
14448
14493
  */
14449
- window: 'rolling_1m' | 'rolling_1h' | 'rolling_24h' | 'calendar_month';
14494
+ window: 'rolling_1m' | 'rolling_1h' | 'rolling_24h' | 'calendar_month' | 'current';
14450
14495
  /**
14451
- * The cap. Must be a positive integer for requests/tokens; fractional values are allowed for cost_usd.
14496
+ * The cap. Must be a positive integer for requests/tokens/storage_bytes (bytes); fractional values are allowed for cost_usd.
14452
14497
  */
14453
14498
  limit: number;
14454
14499
  /**
@@ -14459,6 +14504,10 @@ type CreateQuotaData = {
14459
14504
  * Only for metric cost_usd (400 on any other metric). What an enforce quota does when the current window is a pricing blackout — several metered llm_tokens events, none of them priced, so the aggregate is 0 however much was actually spent. Platform meters such as compute_execution are read for the aggregate but never for this verdict. block (the default) refuses new generations with 409 QUOTA_UNENFORCEABLE until pricing is configured; allow accepts the unmeasurable spend explicitly. Either way a quota_unpriced exception is filed. monitor-mode quotas never block regardless. A partly priced window is not a blackout: no posture refuses it, it is enforced on its priced total, and it files the same exception.
14460
14505
  */
14461
14506
  on_unpriced?: 'block' | 'allow';
14507
+ /**
14508
+ * Only for metric cost_usd (400 on any other metric). The meter this cap answers for. Omit it and the cap sums every priced meter, which is the existing behaviour; name one and only that meter's cost counts, so an AI spend cap is not consumed by platform meters the operator prices (and vice versa). Part of the quota's identity, so two meter scopes can share a scope/metric/window and neither conflicts with an unscoped cap. Immutable after creation — replace the quota to change it.
14509
+ */
14510
+ meter_type?: 'llm_tokens' | 'compute_execution' | 'api_request' | 'storage';
14462
14511
  };
14463
14512
  path?: never;
14464
14513
  query?: never;
@@ -15334,6 +15383,12 @@ type ListTasksData = {
15334
15383
  workflow_id?: string;
15335
15384
  state?: string;
15336
15385
  status?: 'open' | 'closed';
15386
+ /**
15387
+ * Filter by the current state's dispatch status. Repeat the parameter to OR values. `none` selects the tasks whose `automation_status` is `null` — the ones that never entered a state with an automation. It is a value a task really holds, so it is a value of the filter too; the parameter's own absence already means "every task".
15388
+ *
15389
+ * A value outside the enum, empty string included, is a `400`.
15390
+ */
15391
+ automation_status?: Array<'running' | 'completed' | 'failed' | 'unrouted' | 'paused' | 'none'>;
15337
15392
  assignee?: string;
15338
15393
  /**
15339
15394
  * Maximum number of results to return
@@ -17635,7 +17690,14 @@ declare class AiProviders {
17635
17690
  /**
17636
17691
  * Create an AI provider
17637
17692
  *
17638
- * Creates a new LLM provider configuration
17693
+ * Creates a new LLM provider configuration.
17694
+ *
17695
+ * A `bedrock` or `vertex` record must carry a credential of its own — a
17696
+ * linked `secret_id`, or an `apiKey` in `config`. Without one the provider
17697
+ * SDK signs with the server's own credentials (the AWS default credential
17698
+ * chain, Google Application Default Credentials), which is refused with
17699
+ * `400 VALIDATION_FAILED` unless the deployment allows it.
17700
+ *
17639
17701
  */
17640
17702
  static createAiProvider<ThrowOnError extends boolean = false>(options: Options<CreateAiProviderData, ThrowOnError>): RequestResult<CreateAiProviderResponses, CreateAiProviderErrors, ThrowOnError>;
17641
17703
  /**
@@ -17665,7 +17727,7 @@ declare class AiProviders {
17665
17727
  * Asks the provider which models it can run, using this provider record's own credentials and configuration, and returns provider-native model ids — the same strings `default_model` and an agent's `model` carry.
17666
17728
  * Which models are reachable is a property of the credential, not of the provider type: a Vertex provider sees only the publisher models its Google Cloud project and location serve, and a Bedrock provider only the foundation models enabled in its region. Reading the list is how a caller avoids pinning a model that fails at generation time.
17667
17729
  * Not every provider type can answer. `azure` lists deployments an operator named rather than models, and `ollama` lists whatever was pulled onto that host, so both return `400 MODEL_LISTING_UNSUPPORTED`.
17668
- * Listing resolves credentials the same way generation does, so a record that can generate can list. The API-key types (`openai`, `groq`, `xai`, `gateway`, `custom`, `anthropic`, `google`) use the record's linked secret and cannot list without one. `bedrock` and `vertex` use the linked secret when there is one — IAM keys or a Bedrock API key, a Google service-account key and otherwise fall back to the server environment (the AWS default credential chain, Google Application Default Credentials), so a record with no `secret_id` can still list.
17730
+ * Listing resolves credentials the same way generation does, so a record that can generate can list. The API-key types (`openai`, `groq`, `xai`, `gateway`, `custom`, `anthropic`, `google`) use the record's linked secret and cannot list without one. `bedrock` and `vertex` use the linked secret — IAM keys or a Bedrock API key, a Google service-account key. A record with no `secret_id` would fall back to the server's own credentials (the AWS default credential chain, Google Application Default Credentials); it can list only on a deployment that allows a record to use them, and returns `400 AI_PROVIDER_MISCONFIGURED` otherwise.
17669
17731
  * A Vertex record needs no `config.project` when its secret is a service-account key, since the key file names its own project. A Vertex record in express mode (API key) cannot list at all: the publisher-model listing rejects API keys and needs a credential that asserts a principal, so it returns `400 MODEL_LISTING_UNSUPPORTED`.
17670
17732
  * The Vertex answer is the publisher catalogue the record's `config.location` region serves. The project behind the credential is billed and quota'd for the call but does not filter the result, so a listed model may still be unavailable to that project at generation time.
17671
17733
  *
@@ -18672,7 +18734,7 @@ declare class Orchestrations {
18672
18734
  /**
18673
18735
  * List orchestration runs
18674
18736
  *
18675
- * Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, or by whether the run has a parent at all.
18737
+ * Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, by status, or by whether the run has a parent at all.
18676
18738
  *
18677
18739
  * Note when aggregating: a run's `usage` covers its whole subtree, so summing it over a list that contains both a parent and its children counts the children more than once. Pass `nested=false` to sum over runs a caller started.
18678
18740
  */
@@ -18811,7 +18873,9 @@ declare class Quotas {
18811
18873
  /**
18812
18874
  * Create a quota
18813
18875
  *
18814
- * Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A duplicate quota (same project, scope, scope_ref, metric, window) is rejected with 409.
18876
+ * Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`; `storage_bytes` is valid for `scope: project` only. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A `cost_usd` quota may name one `meter_type` to cap; omitting it caps every priced meter. A duplicate quota (same project, scope, scope_ref, metric, window, meter_type) is rejected with 409.
18877
+ *
18878
+ * `storage_bytes` caps a stored total rather than a windowed one, so it takes `window: current` and every other metric refuses that value (400 either way). It is enforced at the corpus write paths — file upload and create, document create, document ingest and re-ingest, memory-entry create — with `409 QUOTA_STORAGE_EXCEEDED` and no `Retry-After`, since no window reset clears a footprint.
18815
18879
  */
18816
18880
  static createQuota<ThrowOnError extends boolean = false>(options: Options<CreateQuotaData, ThrowOnError>): RequestResult<CreateQuotaResponses, CreateQuotaErrors, ThrowOnError>;
18817
18881
  /**
@@ -18960,7 +19024,7 @@ declare class Tasks {
18960
19024
  /**
18961
19025
  * List tasks
18962
19026
  *
18963
- * Lists tasks (the board query). Filter by workflow, state, status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.
19027
+ * Lists tasks (the board query). Filter by workflow, state, status, automation status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.
18964
19028
  */
18965
19029
  static listTasks<ThrowOnError extends boolean = false>(options?: Options<ListTasksData, ThrowOnError>): RequestResult<ListTasksResponses, ListTasksErrors, ThrowOnError>;
18966
19030
  /**
package/dist/index.mjs CHANGED
@@ -959,7 +959,14 @@ var AiProviders = class {
959
959
  /**
960
960
  * Create an AI provider
961
961
  *
962
- * Creates a new LLM provider configuration
962
+ * Creates a new LLM provider configuration.
963
+ *
964
+ * A `bedrock` or `vertex` record must carry a credential of its own — a
965
+ * linked `secret_id`, or an `apiKey` in `config`. Without one the provider
966
+ * SDK signs with the server's own credentials (the AWS default credential
967
+ * chain, Google Application Default Credentials), which is refused with
968
+ * `400 VALIDATION_FAILED` unless the deployment allows it.
969
+ *
963
970
  */
964
971
  static createAiProvider(options) {
965
972
  return (options.client ?? client).post({
@@ -1017,7 +1024,7 @@ var AiProviders = class {
1017
1024
  * Asks the provider which models it can run, using this provider record's own credentials and configuration, and returns provider-native model ids — the same strings `default_model` and an agent's `model` carry.
1018
1025
  * Which models are reachable is a property of the credential, not of the provider type: a Vertex provider sees only the publisher models its Google Cloud project and location serve, and a Bedrock provider only the foundation models enabled in its region. Reading the list is how a caller avoids pinning a model that fails at generation time.
1019
1026
  * Not every provider type can answer. `azure` lists deployments an operator named rather than models, and `ollama` lists whatever was pulled onto that host, so both return `400 MODEL_LISTING_UNSUPPORTED`.
1020
- * Listing resolves credentials the same way generation does, so a record that can generate can list. The API-key types (`openai`, `groq`, `xai`, `gateway`, `custom`, `anthropic`, `google`) use the record's linked secret and cannot list without one. `bedrock` and `vertex` use the linked secret when there is one — IAM keys or a Bedrock API key, a Google service-account key and otherwise fall back to the server environment (the AWS default credential chain, Google Application Default Credentials), so a record with no `secret_id` can still list.
1027
+ * Listing resolves credentials the same way generation does, so a record that can generate can list. The API-key types (`openai`, `groq`, `xai`, `gateway`, `custom`, `anthropic`, `google`) use the record's linked secret and cannot list without one. `bedrock` and `vertex` use the linked secret — IAM keys or a Bedrock API key, a Google service-account key. A record with no `secret_id` would fall back to the server's own credentials (the AWS default credential chain, Google Application Default Credentials); it can list only on a deployment that allows a record to use them, and returns `400 AI_PROVIDER_MISCONFIGURED` otherwise.
1021
1028
  * A Vertex record needs no `config.project` when its secret is a service-account key, since the key file names its own project. A Vertex record in express mode (API key) cannot list at all: the publisher-model listing rejects API keys and needs a credential that asserts a principal, so it returns `400 MODEL_LISTING_UNSUPPORTED`.
1022
1029
  * The Vertex answer is the publisher catalogue the record's `config.location` region serves. The project behind the credential is billed and quota'd for the call but does not filter the result, so a listed model may still be unavailable to that project at generation time.
1023
1030
  *
@@ -2968,7 +2975,7 @@ var Orchestrations = class {
2968
2975
  /**
2969
2976
  * List orchestration runs
2970
2977
  *
2971
- * Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, or by whether the run has a parent at all.
2978
+ * Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, by status, or by whether the run has a parent at all.
2972
2979
  *
2973
2980
  * Note when aggregating: a run's `usage` covers its whole subtree, so summing it over a list that contains both a parent and its children counts the children more than once. Pass `nested=false` to sum over runs a caller started.
2974
2981
  */
@@ -3243,7 +3250,9 @@ var Quotas = class {
3243
3250
  /**
3244
3251
  * Create a quota
3245
3252
  *
3246
- * Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A duplicate quota (same project, scope, scope_ref, metric, window) is rejected with 409.
3253
+ * Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`; `storage_bytes` is valid for `scope: project` only. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A `cost_usd` quota may name one `meter_type` to cap; omitting it caps every priced meter. A duplicate quota (same project, scope, scope_ref, metric, window, meter_type) is rejected with 409.
3254
+ *
3255
+ * `storage_bytes` caps a stored total rather than a windowed one, so it takes `window: current` and every other metric refuses that value (400 either way). It is enforced at the corpus write paths — file upload and create, document create, document ingest and re-ingest, memory-entry create — with `409 QUOTA_STORAGE_EXCEEDED` and no `Retry-After`, since no window reset clears a footprint.
3247
3256
  */
3248
3257
  static createQuota(options) {
3249
3258
  return (options.client ?? client).post({
@@ -3550,7 +3559,7 @@ var Tasks = class {
3550
3559
  /**
3551
3560
  * List tasks
3552
3561
  *
3553
- * Lists tasks (the board query). Filter by workflow, state, status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.
3562
+ * Lists tasks (the board query). Filter by workflow, state, status, automation status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.
3554
3563
  */
3555
3564
  static listTasks(options) {
3556
3565
  return (options?.client ?? client).get({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soat/sdk",
3
- "version": "0.42.0",
3
+ "version": "0.44.0",
4
4
  "description": "TypeScript SDK for SOAT — open-source infrastructure for production-ready AI agents.",
5
5
  "keywords": [
6
6
  "ai-agents",