@naturali/cli 0.209.1 → 0.209.3

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.
Files changed (2) hide show
  1. package/dist/index.mjs +23 -25
  2. package/package.json +2 -2
package/dist/index.mjs CHANGED
@@ -17,7 +17,7 @@ var __exportAll = (all, no_symbols) => {
17
17
  };
18
18
  //#endregion
19
19
  //#region package.json
20
- var version = "0.209.1";
20
+ var version = "0.209.3";
21
21
  //#endregion
22
22
  //#region ../sdk/src/generated/core/bodySerializer.gen.ts
23
23
  const serializeFormDataPair = (data, key, value) => {
@@ -2645,10 +2645,7 @@ var Embeddings = class {
2645
2645
  * Provide `input` for a single text or `inputs` for a batch. At least one is required.
2646
2646
  * Returns `embedding` when `input` is used, and `embeddings` when `inputs` is used.
2647
2647
  *
2648
- * `project_id` names the project the call's token usage is metered against, so
2649
- * embedding spend reaches the usage rollup and the project's `cost_usd` / `tokens`
2650
- * quotas. A project-scoped credential supplies its own project; a call that names
2651
- * none and is bound to none is `400 VALIDATION_FAILED`.
2648
+ * The call's token usage is metered against the project in the path, so embedding spend reaches the usage rollup and the project's `cost_usd` / `tokens` quotas. A body `project_id` is ignored.
2652
2649
  *
2653
2650
  */
2654
2651
  static createEmbeddings(options) {
@@ -3699,7 +3696,7 @@ var Listings = class {
3699
3696
  * Update a listing
3700
3697
  *
3701
3698
  * Change the title or description, or pause and resume the listing.
3702
- * `state: suspended` stops the listing for every installing project at once; their installs are kept. `state: listed` resumes a listing you suspended, provided naturali had listed it; nobody reinstalls. A listing naturali suspended cannot be resumed here, and an invalid move answers `409 invalid_listing_state`.
3699
+ * `state: suspended` stops a `listed` listing for every installing project at once; their installs are kept. `state: listed` resumes a listing you suspended, provided naturali had listed it; nobody reinstalls. A listing naturali suspended cannot be resumed here, and an invalid move answers `409 invalid_listing_state`.
3703
3700
  *
3704
3701
  */
3705
3702
  static updateListing(options) {
@@ -6365,6 +6362,7 @@ var Webhooks = class {
6365
6362
  *
6366
6363
  * Queue the same event at the same endpoint again — the recovery path for a delivery that failed, or one your receiver dropped. This is the `…:redeliver` action; the path segment is `{delivery_id}:redeliver`.
6367
6364
  * A **new** delivery is created and returned; the original record is left untouched, because its attempt history is the evidence you redelivered on. The event's `id` is carried over unchanged, so a receiver deduping on the event sees the same event twice while one deduping on `X-Naturali-Delivery` sees a distinct delivery.
6365
+ * An inactive webhook is refused with `409 webhook_inactive`.
6368
6366
  *
6369
6367
  */
6370
6368
  static redeliverWebhookDelivery(options) {
@@ -8594,7 +8592,7 @@ const routes = {
8594
8592
  },
8595
8593
  {
8596
8594
  "name": "version_label",
8597
- "description": "Optional tag for the config version this write archives (e.g. `initial`). Annotates the version only — it is not stored on the agent and is not part of the config, so labelling a change is never itself a change.",
8595
+ "description": "Optional tag for the config version this write creates (e.g. `initial`). Annotates the version only — it is not stored on the agent and is not part of the config, so labelling a change is never itself a change.",
8598
8596
  "required": false,
8599
8597
  "type": "string",
8600
8598
  "in": "body"
@@ -8820,7 +8818,7 @@ const routes = {
8820
8818
  },
8821
8819
  {
8822
8820
  "name": "version_label",
8823
- "description": "Optional tag for the config version this write archives (e.g. `pre-tone-change`). Annotates the version only — it is not stored on the agent and is not part of the config, so labelling a change is never itself a change. Ignored when the write changes nothing, since no version is created.",
8821
+ "description": "Optional tag for the config version this write creates (e.g. `tone-change`). Annotates the version only — it is not stored on the agent and is not part of the config, so labelling a change is never itself a change. Ignored when the write changes nothing, since no version is created.",
8824
8822
  "required": false,
8825
8823
  "type": "string",
8826
8824
  "in": "body"
@@ -9029,7 +9027,7 @@ const routes = {
9029
9027
  },
9030
9028
  {
9031
9029
  "name": "version_label",
9032
- "description": "Optional tag for the config version this write archives (e.g. `pre-tone-change`). Annotates the version only — it is not stored on the agent and is not part of the config, so labelling a change is never itself a change. Ignored when the write changes nothing, since no version is created.",
9030
+ "description": "Optional tag for the config version this write creates (e.g. `tone-change`). Annotates the version only — it is not stored on the agent and is not part of the config, so labelling a change is never itself a change. Ignored when the write changes nothing, since no version is created.",
9033
9031
  "required": false,
9034
9032
  "type": "string",
9035
9033
  "in": "body"
@@ -10126,7 +10124,7 @@ const routes = {
10126
10124
  },
10127
10125
  {
10128
10126
  "name": "arguments",
10129
- "description": "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.",
10127
+ "description": "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. Refused on an item with no `proposed_action`.",
10130
10128
  "required": false,
10131
10129
  "type": "object",
10132
10130
  "in": "body"
@@ -12332,7 +12330,7 @@ const routes = {
12332
12330
  },
12333
12331
  {
12334
12332
  "name": "version_label",
12335
- "description": "Optional tag for the version this write archives. Ignored when the write changes no question, since no version is archived.",
12333
+ "description": "Optional tag for the version this write creates. Ignored when the write changes no question, since no version is archived.",
12336
12334
  "required": false,
12337
12335
  "type": "string",
12338
12336
  "in": "body"
@@ -12792,7 +12790,7 @@ const routes = {
12792
12790
  },
12793
12791
  {
12794
12792
  "name": "filename",
12795
- "description": "",
12793
+ "description": "Download name. Defaults to the leaf of `path`.",
12796
12794
  "required": false,
12797
12795
  "type": "string",
12798
12796
  "in": "body"
@@ -13250,7 +13248,7 @@ const routes = {
13250
13248
  },
13251
13249
  {
13252
13250
  "name": "version_label",
13253
- "description": "Optional tag for the tombstone version this write archives.",
13251
+ "description": "Optional tag for the tombstone version this write creates.",
13254
13252
  "required": false,
13255
13253
  "type": "string",
13256
13254
  "in": "body"
@@ -13552,7 +13550,7 @@ const routes = {
13552
13550
  "create-embeddings": {
13553
13551
  serviceClass: "Embeddings",
13554
13552
  operationId: "createEmbeddings",
13555
- description: "Generates embedding vectors for one or more text inputs using the server's configured embedding model. Provide `input` for a single text or `inputs` for a batch. At least one is required. Returns `embedding` when `input` is used, and `embeddings` when `inputs` is used. `project_id` names the project the call's token usage is metered against, so embedding spend reaches the usage rollup and the project's `cost_usd` / `tokens` quotas. A project-scoped credential supplies its own project; a call that names none and is bound to none is `400 VALIDATION_FAILED`.",
13553
+ description: "Generates embedding vectors for one or more text inputs using the server's configured embedding model. Provide `input` for a single text or `inputs` for a batch. At least one is required. Returns `embedding` when `input` is used, and `embeddings` when `inputs` is used. The call's token usage is metered against the project in the path, so embedding spend reaches the usage rollup and the project's `cost_usd` / `tokens` quotas. A body `project_id` is ignored.",
13556
13554
  moduleDocsUrl: "https://naturali.ai/docs/modules/embeddings",
13557
13555
  httpMethod: "post",
13558
13556
  pathParams: ["project_id"],
@@ -13569,7 +13567,7 @@ const routes = {
13569
13567
  },
13570
13568
  {
13571
13569
  "name": "input",
13572
- "description": "Single text to embed.",
13570
+ "description": "Single text to embed. An empty string is `400 VALIDATION_FAILED`.",
13573
13571
  "required": false,
13574
13572
  "type": "string",
13575
13573
  "in": "body"
@@ -15637,7 +15635,7 @@ const routes = {
15637
15635
  },
15638
15636
  {
15639
15637
  "name": "version_label",
15640
- "description": "Optional tag for the config version this write archives (e.g. `initial`). Annotates the version only — it is not stored on the guardrail and is not part of the config, so labelling a change is never itself a change.",
15638
+ "description": "Optional tag for the config version this write creates (e.g. `initial`). Annotates the version only — it is not stored on the guardrail and is not part of the config, so labelling a change is never itself a change.",
15641
15639
  "required": false,
15642
15640
  "type": "string",
15643
15641
  "in": "body"
@@ -15737,7 +15735,7 @@ const routes = {
15737
15735
  },
15738
15736
  {
15739
15737
  "name": "version_label",
15740
- "description": "Optional tag for the config version this write archives (e.g. `pre-tightening`). Annotates the version only — it is not stored on the guardrail and is not part of the config, so labelling a change is never itself a change. Ignored when the write changes no policy, since no version is created.",
15738
+ "description": "Optional tag for the config version this write creates (e.g. `tightened`). Annotates the version only — it is not stored on the guardrail and is not part of the config, so labelling a change is never itself a change. Ignored when the write changes no policy, since no version is created.",
15741
15739
  "required": false,
15742
15740
  "type": "string",
15743
15741
  "in": "body"
@@ -16608,7 +16606,7 @@ const routes = {
16608
16606
  "update-listing": {
16609
16607
  serviceClass: "Listings",
16610
16608
  operationId: "updateListing",
16611
- description: "Change the title or description, or pause and resume the listing. `state: suspended` stops the listing for every installing project at once; their installs are kept. `state: listed` resumes a listing you suspended, provided naturali had listed it; nobody reinstalls. A listing naturali suspended cannot be resumed here, and an invalid move answers `409 invalid_listing_state`.",
16609
+ description: "Change the title or description, or pause and resume the listing. `state: suspended` stops a `listed` listing for every installing project at once; their installs are kept. `state: listed` resumes a listing you suspended, provided naturali had listed it; nobody reinstalls. A listing naturali suspended cannot be resumed here, and an invalid move answers `409 invalid_listing_state`.",
16612
16610
  moduleDocsUrl: "https://naturali.ai/docs/modules/listings",
16613
16611
  httpMethod: "patch",
16614
16612
  pathParams: ["project_id", "listing_id"],
@@ -18719,7 +18717,7 @@ const routes = {
18719
18717
  },
18720
18718
  {
18721
18719
  "name": "version_label",
18722
- "description": "Optional tag for the version this write archives, e.g. `pre-rewire`. Ignored when the write changes no graph field, since no version is archived.",
18720
+ "description": "Optional tag for the version this write creates, e.g. `rewired`. Ignored when the write changes no graph field, since no version is archived.",
18723
18721
  "required": false,
18724
18722
  "type": "string",
18725
18723
  "in": "body"
@@ -19402,7 +19400,7 @@ const routes = {
19402
19400
  },
19403
19401
  {
19404
19402
  "name": "version_label",
19405
- "description": "Optional tag for the version this write archives. Ignored when the write changes no definition, since no version is archived.",
19403
+ "description": "Optional tag for the version this write creates. Ignored when the write changes no definition, since no version is archived.",
19406
19404
  "required": false,
19407
19405
  "type": "string",
19408
19406
  "in": "body"
@@ -22914,7 +22912,7 @@ const routes = {
22914
22912
  },
22915
22913
  {
22916
22914
  "name": "execute",
22917
- "description": "Execution config for http tools. Supported fields: `url` (required), `method` (default `POST`), `headers`, `body_mode` and `response_mode`. The `url` may contain `{paramName}` placeholders (e.g. `/users/{userId}`) that are replaced at call time with the corresponding tool argument value (URL-encoded). Arguments consumed as path parameters are excluded from the query string and request body. `body_mode` is `json` (default) or `multipart`. In `multipart` mode the merged tool arguments are sent as a `multipart/form-data` body: scalar fields become plain form fields and a field shaped like `{ content_type, filename, data_base64 }` is decoded from base64 and attached as a file part (the hardcoded `Content-Type: application/json` is dropped so `fetch` sets the multipart boundary itself). `response_mode` is `json` (default: the body parsed as JSON, else returned as text) or `base64`, which returns a 2xx body as `{ content_type, filename, data_base64 }` — the same file shape `multipart` accepts, so a pipeline step can relay a downloaded file. `filename` comes from `Content-Disposition` and is omitted when the target names none; a body over `TOOL_RESPONSE_MAX_BYTES` is `502 TOOL_RESPONSE_TOO_LARGE`.\n\n`auth` adds a computed request credential, for targets whose `Authorization` value cannot be expressed as a static header. Supported `auth.type` values:\n\n- `aws_sigv4` — signs the request with AWS Signature Version 4. Requires `region`, `service`, `access_key_id` and `secret_access_key`; `session_token` is optional (temporary credentials). Incompatible with `body_mode: multipart`, whose body bytes are not known at signing time.\n- `gcp_service_account` — mints a Google OAuth 2.0 access token from a signed service account assertion and sends it as a bearer token. Requires `credentials` (the service account key file JSON, as a string) and `scopes` (a non-empty array). Tokens are cached per service account and scope set until shortly before they expire.\n\nCredential 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.\n\nA credential slot takes a reference, never a literal: a literal `secret_access_key`, `session_token` or `credentials` under `auth`, a literal credential-named `headers` value (`Authorization`, `Cookie`, or a name containing `api-key`/`token`/`secret`/`password`), or a `url` carrying a password or a literal credential-named query parameter (those names, plus `key` and `sig`/`signature`) is refused with `400 LITERAL_CREDENTIAL`, `meta.paths` naming each one. A stored literal reads back as `{\"no_echo\": true}` (a `url` holding one is masked whole), 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.\n\n`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-Naturali-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.\n",
22915
+ "description": "Execution config for http tools. An `http` tool without a non-empty `url` is `400 VALIDATION_FAILED`, on create and on an update that would leave it without one. Supported fields: `url` (required), `method` (default `POST`), `headers`, `body_mode` and `response_mode`. The `url` may contain `{paramName}` placeholders (e.g. `/users/{userId}`) that are replaced at call time with the corresponding tool argument value (URL-encoded). Arguments consumed as path parameters are excluded from the query string and request body. `body_mode` is `json` (default) or `multipart`. In `multipart` mode the merged tool arguments are sent as a `multipart/form-data` body: scalar fields become plain form fields and a field shaped like `{ content_type, filename, data_base64 }` is decoded from base64 and attached as a file part (the hardcoded `Content-Type: application/json` is dropped so `fetch` sets the multipart boundary itself). `response_mode` is `json` (default: the body parsed as JSON, else returned as text) or `base64`, which returns a 2xx body as `{ content_type, filename, data_base64 }` — the same file shape `multipart` accepts, so a pipeline step can relay a downloaded file. `filename` comes from `Content-Disposition` and is omitted when the target names none; a body over `TOOL_RESPONSE_MAX_BYTES` is `502 TOOL_RESPONSE_TOO_LARGE`.\n\n`auth` adds a computed request credential, for targets whose `Authorization` value cannot be expressed as a static header. Supported `auth.type` values:\n\n- `aws_sigv4` — signs the request with AWS Signature Version 4. Requires `region`, `service`, `access_key_id` and `secret_access_key`; `session_token` is optional (temporary credentials). Incompatible with `body_mode: multipart`, whose body bytes are not known at signing time.\n- `gcp_service_account` — mints a Google OAuth 2.0 access token from a signed service account assertion and sends it as a bearer token. Requires `credentials` (the service account key file JSON, as a string) and `scopes` (a non-empty array). Tokens are cached per service account and scope set until shortly before they expire.\n\nCredential 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.\n\nA credential slot takes a reference, never a literal: a literal `secret_access_key`, `session_token` or `credentials` under `auth`, a literal credential-named `headers` value (`Authorization`, `Cookie`, or a name containing `api-key`/`token`/`secret`/`password`), or a `url` carrying a password or a literal credential-named query parameter (those names, plus `key` and `sig`/`signature`) is refused with `400 LITERAL_CREDENTIAL`, `meta.paths` naming each one. A stored literal reads back as `{\"no_echo\": true}` (a `url` holding one is masked whole), 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.\n\n`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-Naturali-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.\n",
22918
22916
  "required": false,
22919
22917
  "type": "object",
22920
22918
  "in": "body"
@@ -23056,7 +23054,7 @@ const routes = {
23056
23054
  },
23057
23055
  {
23058
23056
  "name": "execute",
23059
- "description": "Execution config for http tools. Supported fields: `url` (required), `method` (default `POST`), `headers`, `body_mode` and `response_mode`. The `url` may contain `{paramName}` placeholders (e.g. `/users/{userId}`) that are replaced at call time with the corresponding tool argument value (URL-encoded). Arguments consumed as path parameters are excluded from the query string and request body. `body_mode` is `json` (default) or `multipart`. In `multipart` mode the merged tool arguments are sent as a `multipart/form-data` body: scalar fields become plain form fields and a field shaped like `{ content_type, filename, data_base64 }` is decoded from base64 and attached as a file part (the hardcoded `Content-Type: application/json` is dropped so `fetch` sets the multipart boundary itself). `response_mode` is `json` (default: the body parsed as JSON, else returned as text) or `base64`, which returns a 2xx body as `{ content_type, filename, data_base64 }` — the same file shape `multipart` accepts, so a pipeline step can relay a downloaded file. `filename` comes from `Content-Disposition` and is omitted when the target names none; a body over `TOOL_RESPONSE_MAX_BYTES` is `502 TOOL_RESPONSE_TOO_LARGE`.\n\n`auth` adds a computed request credential, for targets whose `Authorization` value cannot be expressed as a static header. Supported `auth.type` values:\n\n- `aws_sigv4` — signs the request with AWS Signature Version 4. Requires `region`, `service`, `access_key_id` and `secret_access_key`; `session_token` is optional (temporary credentials). Incompatible with `body_mode: multipart`, whose body bytes are not known at signing time.\n- `gcp_service_account` — mints a Google OAuth 2.0 access token from a signed service account assertion and sends it as a bearer token. Requires `credentials` (the service account key file JSON, as a string) and `scopes` (a non-empty array). Tokens are cached per service account and scope set until shortly before they expire.\n\nCredential 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.\n\nA credential slot takes a reference, never a literal: a literal `secret_access_key`, `session_token` or `credentials` under `auth`, a literal credential-named `headers` value (`Authorization`, `Cookie`, or a name containing `api-key`/`token`/`secret`/`password`), or a `url` carrying a password or a literal credential-named query parameter (those names, plus `key` and `sig`/`signature`) is refused with `400 LITERAL_CREDENTIAL`, `meta.paths` naming each one. A stored literal reads back as `{\"no_echo\": true}` (a `url` holding one is masked whole), 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.\n\n`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-Naturali-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.\n",
23057
+ "description": "Execution config for http tools. An `http` tool without a non-empty `url` is `400 VALIDATION_FAILED`, on create and on an update that would leave it without one. Supported fields: `url` (required), `method` (default `POST`), `headers`, `body_mode` and `response_mode`. The `url` may contain `{paramName}` placeholders (e.g. `/users/{userId}`) that are replaced at call time with the corresponding tool argument value (URL-encoded). Arguments consumed as path parameters are excluded from the query string and request body. `body_mode` is `json` (default) or `multipart`. In `multipart` mode the merged tool arguments are sent as a `multipart/form-data` body: scalar fields become plain form fields and a field shaped like `{ content_type, filename, data_base64 }` is decoded from base64 and attached as a file part (the hardcoded `Content-Type: application/json` is dropped so `fetch` sets the multipart boundary itself). `response_mode` is `json` (default: the body parsed as JSON, else returned as text) or `base64`, which returns a 2xx body as `{ content_type, filename, data_base64 }` — the same file shape `multipart` accepts, so a pipeline step can relay a downloaded file. `filename` comes from `Content-Disposition` and is omitted when the target names none; a body over `TOOL_RESPONSE_MAX_BYTES` is `502 TOOL_RESPONSE_TOO_LARGE`.\n\n`auth` adds a computed request credential, for targets whose `Authorization` value cannot be expressed as a static header. Supported `auth.type` values:\n\n- `aws_sigv4` — signs the request with AWS Signature Version 4. Requires `region`, `service`, `access_key_id` and `secret_access_key`; `session_token` is optional (temporary credentials). Incompatible with `body_mode: multipart`, whose body bytes are not known at signing time.\n- `gcp_service_account` — mints a Google OAuth 2.0 access token from a signed service account assertion and sends it as a bearer token. Requires `credentials` (the service account key file JSON, as a string) and `scopes` (a non-empty array). Tokens are cached per service account and scope set until shortly before they expire.\n\nCredential 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.\n\nA credential slot takes a reference, never a literal: a literal `secret_access_key`, `session_token` or `credentials` under `auth`, a literal credential-named `headers` value (`Authorization`, `Cookie`, or a name containing `api-key`/`token`/`secret`/`password`), or a `url` carrying a password or a literal credential-named query parameter (those names, plus `key` and `sig`/`signature`) is refused with `400 LITERAL_CREDENTIAL`, `meta.paths` naming each one. A stored literal reads back as `{\"no_echo\": true}` (a `url` holding one is masked whole), 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.\n\n`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-Naturali-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.\n",
23060
23058
  "required": false,
23061
23059
  "type": "object",
23062
23060
  "in": "body"
@@ -24217,7 +24215,7 @@ const routes = {
24217
24215
  },
24218
24216
  {
24219
24217
  "name": "url",
24220
- "description": "An `https://` endpoint (`http://` is accepted for localhost, so a tunnel works in development).\n",
24218
+ "description": "An `https://` endpoint on a public internet host. A host that is, or resolves to, a loopback, private or link-local address is refused, here and again at each delivery; redirects are not followed.\n",
24221
24219
  "required": true,
24222
24220
  "type": "string",
24223
24221
  "in": "body"
@@ -24474,7 +24472,7 @@ const routes = {
24474
24472
  "redeliver-webhook-delivery": {
24475
24473
  serviceClass: "Webhooks",
24476
24474
  operationId: "redeliverWebhookDelivery",
24477
- description: "Queue the same event at the same endpoint again — the recovery path for a delivery that failed, or one your receiver dropped. This is the `…:redeliver` action; the path segment is `{delivery_id}:redeliver`. A **new** delivery is created and returned; the original record is left untouched, because its attempt history is the evidence you redelivered on. The event's `id` is carried over unchanged, so a receiver deduping on the event sees the same event twice while one deduping on `X-Naturali-Delivery` sees a distinct delivery.",
24475
+ description: "Queue the same event at the same endpoint again — the recovery path for a delivery that failed, or one your receiver dropped. This is the `…:redeliver` action; the path segment is `{delivery_id}:redeliver`. A **new** delivery is created and returned; the original record is left untouched, because its attempt history is the evidence you redelivered on. The event's `id` is carried over unchanged, so a receiver deduping on the event sees the same event twice while one deduping on `X-Naturali-Delivery` sees a distinct delivery. An inactive webhook is refused with `409 webhook_inactive`.",
24478
24476
  moduleDocsUrl: "https://naturali.ai/docs/modules/webhooks",
24479
24477
  httpMethod: "post",
24480
24478
  pathParams: ["project_id", "delivery_id"],
@@ -24684,7 +24682,7 @@ const routes = {
24684
24682
  },
24685
24683
  {
24686
24684
  "name": "version_label",
24687
- "description": "Optional tag for the version this write archives, e.g. `pre-rewire`. Ignored when the write changes no definition field, since no version is archived.",
24685
+ "description": "Optional tag for the version this write creates, e.g. `rewired`. Ignored when the write changes no definition field, since no version is archived.",
24688
24686
  "required": false,
24689
24687
  "type": "string",
24690
24688
  "in": "body"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naturali/cli",
3
- "version": "0.209.1",
3
+ "version": "0.209.3",
4
4
  "description": "Command-line interface for the naturali.ai API, generated from its OpenAPI specs",
5
5
  "keywords": [
6
6
  "naturali",
@@ -31,7 +31,7 @@
31
31
  "yaml": "^2.9.1"
32
32
  },
33
33
  "devDependencies": {
34
- "@naturali/sdk": "0.209.1",
34
+ "@naturali/sdk": "0.209.3",
35
35
  "@ttoss/openapi-codegen": "^0.10.0",
36
36
  "@types/node": "^26.5.1",
37
37
  "tsdown": "^0.23.0",