@naturali/cli 0.209.3 → 0.209.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +49 -47
- 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.
|
|
20
|
+
var version = "0.209.5";
|
|
21
21
|
//#endregion
|
|
22
22
|
//#region ../sdk/src/generated/core/bodySerializer.gen.ts
|
|
23
23
|
const serializeFormDataPair = (data, key, value) => {
|
|
@@ -807,6 +807,8 @@ var Channels = class {
|
|
|
807
807
|
*
|
|
808
808
|
* `actor_id` binds an actor of this project, so the address speaks as the same actor your own sessions use. A changed actor deletes the address's conversations and their sessions — a session's actor is fixed — and the next message opens a fresh one; the actor naturali created for the address is deleted with them. An actor you bind is never deleted here.
|
|
809
809
|
*
|
|
810
|
+
* An identifier no channel kind produces is `400`.
|
|
811
|
+
*
|
|
810
812
|
*/
|
|
811
813
|
static setAddress(options) {
|
|
812
814
|
return (options.client ?? client).put({
|
|
@@ -913,7 +915,7 @@ var Channels = class {
|
|
|
913
915
|
/**
|
|
914
916
|
* Read the whole route table
|
|
915
917
|
*
|
|
916
|
-
* Every route across every channel in the project, one read — the table is small by construction
|
|
918
|
+
* Every route across every channel in the project, one read — the table is small by construction, so this is unpaginated.
|
|
917
919
|
*
|
|
918
920
|
*/
|
|
919
921
|
static listProjectChannelRoutes(options) {
|
|
@@ -937,7 +939,7 @@ var Channels = class {
|
|
|
937
939
|
* Connect a channel
|
|
938
940
|
*
|
|
939
941
|
* Connect a channel. The required fields depend on `channel`; no credential is ever returned.
|
|
940
|
-
* **Discord** (`channel: discord`) — supply `application_id` and `bot_token`, plus the `modes` selecting which Gateway flows to serve (direct messages, and/or @mention-opens-a-thread). The token is checked with Discord first: `400 invalid_bot_token` when Discord rejects it, `400 application_mismatch` when it belongs to another application. Returns `501` when
|
|
942
|
+
* **Discord** (`channel: discord`) — supply `application_id` and `bot_token`, plus the `modes` selecting which Gateway flows to serve (direct messages, and/or @mention-opens-a-thread). The token is checked with Discord first: `400 invalid_bot_token` when Discord rejects it, `400 application_mismatch` when it belongs to another application. Returns `501` when this deployment does not enable Discord channels.
|
|
941
943
|
* **WhatsApp** (default) — one of two credential paths, both filling the same write-only secret:
|
|
942
944
|
* * **BYOT** (`credential_source: byot`, default) — supply
|
|
943
945
|
* `phone_number_id` and `access_token` from your own Meta app.
|
|
@@ -1508,7 +1510,7 @@ var AiProviders = class {
|
|
|
1508
1510
|
*
|
|
1509
1511
|
* Deletes an AI provider configuration.
|
|
1510
1512
|
*
|
|
1511
|
-
* Live references —
|
|
1513
|
+
* Live references — agents and model routes whose targets name this provider — always block deletion with `409 AI_PROVIDER_HAS_DEPENDENTS`; `force` does not override them, so delete or repoint those resources first. Soft dependents — price overrides and usage/generation records — also block with `409` unless `force=true`, which deletes the provider's price overrides and unlinks its usage history, preserving those rows: each usage event keeps the provider's id as its `ai_provider_id`. The `409` body's `error.meta` reports the counts, a sample of offending IDs, and a `forcible` flag that is `true` when a `force=true` retry would succeed.
|
|
1512
1514
|
*
|
|
1513
1515
|
*/
|
|
1514
1516
|
static deleteAiProvider(options) {
|
|
@@ -1970,7 +1972,7 @@ var Auth = class {
|
|
|
1970
1972
|
/**
|
|
1971
1973
|
* Refresh a session
|
|
1972
1974
|
*
|
|
1973
|
-
* Exchanges a valid refresh token for a new access JWT and a rotated refresh token, taken from the body or from the `refresh_token` cookie set at sign-in — a browser sends an empty body and the cookie carries the credential. Refresh tokens are single-use; presenting a previously-rotated token is treated as reuse and revokes the whole session family
|
|
1975
|
+
* Exchanges a valid refresh token for a new access JWT and a rotated refresh token, taken from the body or from the `refresh_token` cookie set at sign-in — a browser sends an empty body and the cookie carries the credential. Refresh tokens are single-use; presenting a previously-rotated token is treated as reuse and revokes the whole session family, except within a few seconds of the rotation, where it is treated as two tabs racing on one cookie and rotated again.
|
|
1974
1976
|
*
|
|
1975
1977
|
*/
|
|
1976
1978
|
static refreshSession(options) {
|
|
@@ -4300,8 +4302,8 @@ var Orchestrations = class {
|
|
|
4300
4302
|
/**
|
|
4301
4303
|
* Get orchestration queue stats
|
|
4302
4304
|
*
|
|
4303
|
-
* 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. The per-project breakdown is listed by `GET /v1/projects/{project_id}/orchestrations/queue/stats/projects`.
|
|
4304
|
-
* Every figure is scoped to what the caller may see. A project-scoped caller gets `queue_depth` and `claimed_tasks` summed over their own 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.
|
|
4305
|
+
* 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. The per-project breakdown is listed by `GET /v1/projects/{project_id}/orchestrations/queue/stats/projects`.
|
|
4306
|
+
* Every figure is scoped to what the caller may see. A project-scoped caller gets `queue_depth` and `claimed_tasks` summed over their own 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.
|
|
4305
4307
|
*
|
|
4306
4308
|
*/
|
|
4307
4309
|
static getQueueStats(options) {
|
|
@@ -4322,7 +4324,7 @@ var Orchestrations = class {
|
|
|
4322
4324
|
/**
|
|
4323
4325
|
* List the projects with queued orchestration work
|
|
4324
4326
|
*
|
|
4325
|
-
* One row per project with any queued or claimed task, ordered by project ID: the per-project breakdown of `GET /v1/projects/{project_id}/orchestrations/queue/stats`. A project-scoped caller sees its own projects only.
|
|
4327
|
+
* One row per project with any queued or claimed task, ordered by project ID: the per-project breakdown of `GET /v1/projects/{project_id}/orchestrations/queue/stats`. A project-scoped caller sees its own projects only.
|
|
4326
4328
|
*
|
|
4327
4329
|
*/
|
|
4328
4330
|
static listQueueStatsProjects(options) {
|
|
@@ -5891,7 +5893,7 @@ var Triggers = class {
|
|
|
5891
5893
|
/**
|
|
5892
5894
|
* Update a trigger
|
|
5893
5895
|
*
|
|
5894
|
-
* Updates an existing trigger's configuration. The type is immutable. Changing `target_type` or `target_id` re-checks the
|
|
5896
|
+
* Updates an existing trigger's configuration. The type is immutable. Changing `target_type` or `target_id` re-checks that the caller may start 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.
|
|
5895
5897
|
*
|
|
5896
5898
|
*/
|
|
5897
5899
|
static updateTrigger(options) {
|
|
@@ -7883,7 +7885,7 @@ const routes = {
|
|
|
7883
7885
|
"set-address": {
|
|
7884
7886
|
serviceClass: "Channels",
|
|
7885
7887
|
operationId: "setAddress",
|
|
7886
|
-
description: "Upserts the address with its `action`, the actor it speaks as, or both; a field left out is left alone. `action: null` forgets the exception and defers back to the route table; any other `action` requires the same fields a route or channel default would (`agent_id` for `agent`, `text` for `message`). `actor_id` binds an actor of this project, so the address speaks as the same actor your own sessions use. A changed actor deletes the address's conversations and their sessions — a session's actor is fixed — and the next message opens a fresh one; the actor naturali created for the address is deleted with them. An actor you bind is never deleted here.",
|
|
7888
|
+
description: "Upserts the address with its `action`, the actor it speaks as, or both; a field left out is left alone. `action: null` forgets the exception and defers back to the route table; any other `action` requires the same fields a route or channel default would (`agent_id` for `agent`, `text` for `message`). `actor_id` binds an actor of this project, so the address speaks as the same actor your own sessions use. A changed actor deletes the address's conversations and their sessions — a session's actor is fixed — and the next message opens a fresh one; the actor naturali created for the address is deleted with them. An actor you bind is never deleted here. An identifier no channel kind produces is `400`.",
|
|
7887
7889
|
moduleDocsUrl: "https://naturali.ai/docs/modules/addresses",
|
|
7888
7890
|
httpMethod: "put",
|
|
7889
7891
|
pathParams: ["project_id", "identifier"],
|
|
@@ -8032,7 +8034,7 @@ const routes = {
|
|
|
8032
8034
|
serviceClass: "Admin",
|
|
8033
8035
|
operationId: "listUsers",
|
|
8034
8036
|
description: "A cursor page of every account, newest first, each with the plan it is on and the balance of its credit ledger. Needs the `admin` role. `email` narrows the page to one account. It matches the whole address case-insensitively and takes no wildcards: an operator looking for `Ana@Acme.com` finds a row stored as `ana@acme.com`, and there is no substring search across customers' addresses. An account with no subscription reads as `free` with a balance of `0`: the absence of a row is the free plan, and the least-privileged rung is also what any unresolvable lookup should answer.",
|
|
8035
|
-
moduleDocsUrl: "https://naturali.ai/docs
|
|
8037
|
+
moduleDocsUrl: "https://naturali.ai/docs",
|
|
8036
8038
|
httpMethod: "get",
|
|
8037
8039
|
pathParams: [],
|
|
8038
8040
|
queryParams: [
|
|
@@ -8070,7 +8072,7 @@ const routes = {
|
|
|
8070
8072
|
serviceClass: "Admin",
|
|
8071
8073
|
operationId: "setUserRoles",
|
|
8072
8074
|
description: "Replaces the platform roles of any user. Needs the `admin` role, and each role that changes needs the caller to hold the role that grants it (today `admin` grants `admin`). Values outside the catalog are rejected with a 400, and a caller cannot remove their own `admin` role.",
|
|
8073
|
-
moduleDocsUrl: "https://naturali.ai/docs
|
|
8075
|
+
moduleDocsUrl: "https://naturali.ai/docs",
|
|
8074
8076
|
httpMethod: "put",
|
|
8075
8077
|
pathParams: ["user_id"],
|
|
8076
8078
|
queryParams: [],
|
|
@@ -8094,7 +8096,7 @@ const routes = {
|
|
|
8094
8096
|
serviceClass: "Admin",
|
|
8095
8097
|
operationId: "listUserPlanHistory",
|
|
8096
8098
|
description: "A cursor page of the account's plan history, newest first, and the rung it is on now. Needs the `admin` role. The history is append-only, so this is the record of who put the account where and why — nothing edits or removes a line. `plan` at the top level is the same value every entitlement check resolves, so one response answers both \"what plan is this?\" and \"how did it get there?\".",
|
|
8097
|
-
moduleDocsUrl: "https://naturali.ai/docs
|
|
8099
|
+
moduleDocsUrl: "https://naturali.ai/docs",
|
|
8098
8100
|
httpMethod: "get",
|
|
8099
8101
|
pathParams: ["user_id"],
|
|
8100
8102
|
queryParams: ["limit", "cursor"],
|
|
@@ -8128,7 +8130,7 @@ const routes = {
|
|
|
8128
8130
|
serviceClass: "Admin",
|
|
8129
8131
|
operationId: "grantUserPlan",
|
|
8130
8132
|
description: "Puts the account on a rung of the infra ladder. Needs the `admin` role. `PUT` because an account is on exactly one rung at a time, but the change is **recorded rather than overwritten**: the plan history is append-only and the newest line is the account's plan. Setting the rung it already holds still writes a line — a re-confirmation is an act worth a record, and the `reason` given with it would otherwise have nowhere to go. Read the history back with `GET` on this path. An upgrade takes effect at once. A downgrade is the same call with a lower rung and takes effect when the month turns: until then `plan` stays the rung held and `next_plan` names the new one. At the turn, active channels past the new rung's allowance are disabled, oldest first; an upgrade re-enables them. A rung whose content-retention window a contract sets — `enterprise` — **requires `retention_days`**, since nothing else can answer what that window is and an unanswered one bounds nothing. Every other rung sets its own and refuses the field.",
|
|
8131
|
-
moduleDocsUrl: "https://naturali.ai/docs
|
|
8133
|
+
moduleDocsUrl: "https://naturali.ai/docs",
|
|
8132
8134
|
httpMethod: "put",
|
|
8133
8135
|
pathParams: ["user_id"],
|
|
8134
8136
|
queryParams: [],
|
|
@@ -8169,7 +8171,7 @@ const routes = {
|
|
|
8169
8171
|
serviceClass: "Admin",
|
|
8170
8172
|
operationId: "listUserCredits",
|
|
8171
8173
|
description: "A cursor page of the account's credit lines, newest first, with the balance they sum to. Needs the `admin` role — including for the account's own owner, who reads their own balance at `GET /v1/users/me/billing` rather than here. That answers what is left; this is the line-by-line record behind it. What an operator reads it for is writing a correction: the line that was wrong stays on the record, so it has to be legible before it can be compensated for.",
|
|
8172
|
-
moduleDocsUrl: "https://naturali.ai/docs
|
|
8174
|
+
moduleDocsUrl: "https://naturali.ai/docs",
|
|
8173
8175
|
httpMethod: "get",
|
|
8174
8176
|
pathParams: ["user_id"],
|
|
8175
8177
|
queryParams: [
|
|
@@ -8214,7 +8216,7 @@ const routes = {
|
|
|
8214
8216
|
serviceClass: "Admin",
|
|
8215
8217
|
operationId: "grantUserCredit",
|
|
8216
8218
|
description: "Writes one line to the account's credit ledger and answers with the balance it produced. Needs the `admin` role. The ledger is append-only and the balance is its sum — there is no balance to set and no line to edit or delete. A mistake is corrected by writing a **negative** `amount_usd`, which leaves the wrong line on the record beside the one that compensates for it. `kind` is required. Money received and credit given away report differently — one is revenue, the other customer-acquisition cost — so the line says which it is rather than defaulting to one of them. The balance this moves is not yet a ceiling anything enforces; turning it into one is a separate mechanism.",
|
|
8217
|
-
moduleDocsUrl: "https://naturali.ai/docs
|
|
8219
|
+
moduleDocsUrl: "https://naturali.ai/docs",
|
|
8218
8220
|
httpMethod: "post",
|
|
8219
8221
|
pathParams: ["user_id"],
|
|
8220
8222
|
queryParams: [],
|
|
@@ -8255,7 +8257,7 @@ const routes = {
|
|
|
8255
8257
|
serviceClass: "Admin",
|
|
8256
8258
|
operationId: "getUserUsage",
|
|
8257
8259
|
description: "The same answer `GET /v1/users/me/usage` gives the account itself: runs, indexed storage and the plan-capped counts, per project and against the rung. Needs the `admin` role.",
|
|
8258
|
-
moduleDocsUrl: "https://naturali.ai/docs
|
|
8260
|
+
moduleDocsUrl: "https://naturali.ai/docs",
|
|
8259
8261
|
httpMethod: "get",
|
|
8260
8262
|
pathParams: ["user_id"],
|
|
8261
8263
|
queryParams: [],
|
|
@@ -8273,7 +8275,7 @@ const routes = {
|
|
|
8273
8275
|
serviceClass: "Admin",
|
|
8274
8276
|
operationId: "getAdminPriceBook",
|
|
8275
8277
|
description: "The upstream runtime's global default prices — the rows carrying neither a provider nor a project, which is all the upstream listing returns, so no tenant's own rates appear here. These are a cost basis, not a tariff: what a customer pays is the plan they bought plus the multiplier in PRICING.md section 3, applied when spend is reconciled. This is the read behind the storage-rate assertion at boot and the pinned embedding rate.",
|
|
8276
|
-
moduleDocsUrl: "https://naturali.ai/docs
|
|
8278
|
+
moduleDocsUrl: "https://naturali.ai/docs",
|
|
8277
8279
|
httpMethod: "get",
|
|
8278
8280
|
pathParams: [],
|
|
8279
8281
|
queryParams: [],
|
|
@@ -8285,7 +8287,7 @@ const routes = {
|
|
|
8285
8287
|
serviceClass: "Admin",
|
|
8286
8288
|
operationId: "listUserStatements",
|
|
8287
8289
|
description: "The same statements the account reads at `GET /v1/users/me/statements`, for an operator to bill from. Needs the `admin` role.",
|
|
8288
|
-
moduleDocsUrl: "https://naturali.ai/docs
|
|
8290
|
+
moduleDocsUrl: "https://naturali.ai/docs",
|
|
8289
8291
|
httpMethod: "get",
|
|
8290
8292
|
pathParams: ["user_id"],
|
|
8291
8293
|
queryParams: ["limit", "cursor"],
|
|
@@ -8319,7 +8321,7 @@ const routes = {
|
|
|
8319
8321
|
serviceClass: "Admin",
|
|
8320
8322
|
operationId: "listAdminListings",
|
|
8321
8323
|
description: "Every listing in one state, newest first — `in_review` by default, the queue an operator works through.",
|
|
8322
|
-
moduleDocsUrl: "https://naturali.ai/docs
|
|
8324
|
+
moduleDocsUrl: "https://naturali.ai/docs",
|
|
8323
8325
|
httpMethod: "get",
|
|
8324
8326
|
pathParams: [],
|
|
8325
8327
|
queryParams: [
|
|
@@ -8357,7 +8359,7 @@ const routes = {
|
|
|
8357
8359
|
serviceClass: "Admin",
|
|
8358
8360
|
operationId: "setAdminListingState",
|
|
8359
8361
|
description: "List a listing in review or one that is suspended, send one in review back to `draft`, or suspend any listing. A listing an operator suspends cannot be resumed by its publisher. An invalid move answers `409 invalid_listing_state`.",
|
|
8360
|
-
moduleDocsUrl: "https://naturali.ai/docs
|
|
8362
|
+
moduleDocsUrl: "https://naturali.ai/docs",
|
|
8361
8363
|
httpMethod: "put",
|
|
8362
8364
|
pathParams: ["listing_id"],
|
|
8363
8365
|
queryParams: [],
|
|
@@ -9664,7 +9666,7 @@ const routes = {
|
|
|
9664
9666
|
"delete-ai-provider": {
|
|
9665
9667
|
serviceClass: "AIProviders",
|
|
9666
9668
|
operationId: "deleteAiProvider",
|
|
9667
|
-
description: "Deletes an AI provider configuration. Live references —
|
|
9669
|
+
description: "Deletes an AI provider configuration. Live references — agents and model routes whose targets name this provider — always block deletion with `409 AI_PROVIDER_HAS_DEPENDENTS`; `force` does not override them, so delete or repoint those resources first. Soft dependents — price overrides and usage/generation records — also block with `409` unless `force=true`, which deletes the provider's price overrides and unlinks its usage history, preserving those rows: each usage event keeps the provider's id as its `ai_provider_id`. The `409` body's `error.meta` reports the counts, a sample of offending IDs, and a `forcible` flag that is `true` when a `force=true` retry would succeed.",
|
|
9668
9670
|
moduleDocsUrl: "https://naturali.ai/docs/modules/ai-providers",
|
|
9669
9671
|
httpMethod: "delete",
|
|
9670
9672
|
pathParams: ["project_id", "ai_provider_id"],
|
|
@@ -9688,7 +9690,7 @@ const routes = {
|
|
|
9688
9690
|
},
|
|
9689
9691
|
{
|
|
9690
9692
|
"name": "force",
|
|
9691
|
-
"description": "When `true`, delete the provider's price overrides and unlink its usage history so a provider with only soft dependents can be removed. Has no effect on live references (
|
|
9693
|
+
"description": "When `true`, delete the provider's price overrides and unlink its usage history so a provider with only soft dependents can be removed. Has no effect on live references (agents, model routes), which always block deletion.\n",
|
|
9692
9694
|
"required": false,
|
|
9693
9695
|
"type": "boolean",
|
|
9694
9696
|
"in": "query"
|
|
@@ -10124,7 +10126,7 @@ const routes = {
|
|
|
10124
10126
|
},
|
|
10125
10127
|
{
|
|
10126
10128
|
"name": "arguments",
|
|
10127
|
-
"description": "Edited arguments to execute instead of the proposed ones. Editing composes a new call
|
|
10129
|
+
"description": "Edited arguments to execute instead of the proposed ones. Editing composes a new call to the tool. Refused on an item with no `proposed_action`.",
|
|
10128
10130
|
"required": false,
|
|
10129
10131
|
"type": "object",
|
|
10130
10132
|
"in": "body"
|
|
@@ -10638,7 +10640,7 @@ const routes = {
|
|
|
10638
10640
|
"refresh-session": {
|
|
10639
10641
|
serviceClass: "Auth",
|
|
10640
10642
|
operationId: "refreshSession",
|
|
10641
|
-
description: "Exchanges a valid refresh token for a new access JWT and a rotated refresh token, taken from the body or from the `refresh_token` cookie set at sign-in — a browser sends an empty body and the cookie carries the credential. Refresh tokens are single-use; presenting a previously-rotated token is treated as reuse and revokes the whole session family
|
|
10643
|
+
description: "Exchanges a valid refresh token for a new access JWT and a rotated refresh token, taken from the body or from the `refresh_token` cookie set at sign-in — a browser sends an empty body and the cookie carries the credential. Refresh tokens are single-use; presenting a previously-rotated token is treated as reuse and revokes the whole session family, except within a few seconds of the rotation, where it is treated as two tabs racing on one cookie and rotated again.",
|
|
10642
10644
|
moduleDocsUrl: "https://naturali.ai/docs/modules/auth",
|
|
10643
10645
|
httpMethod: "post",
|
|
10644
10646
|
pathParams: [],
|
|
@@ -11091,7 +11093,7 @@ const routes = {
|
|
|
11091
11093
|
"list-project-channel-routes": {
|
|
11092
11094
|
serviceClass: "Channels",
|
|
11093
11095
|
operationId: "listProjectChannelRoutes",
|
|
11094
|
-
description: "Every route across every channel in the project, one read — the table is small by construction
|
|
11096
|
+
description: "Every route across every channel in the project, one read — the table is small by construction, so this is unpaginated.",
|
|
11095
11097
|
moduleDocsUrl: "https://naturali.ai/docs/modules/channel-routes",
|
|
11096
11098
|
httpMethod: "get",
|
|
11097
11099
|
pathParams: ["project_id"],
|
|
@@ -11143,7 +11145,7 @@ const routes = {
|
|
|
11143
11145
|
"create-channel": {
|
|
11144
11146
|
serviceClass: "Channels",
|
|
11145
11147
|
operationId: "createChannel",
|
|
11146
|
-
description: "Connect a channel. The required fields depend on `channel`; no credential is ever returned. **Discord** (`channel: discord`) — supply `application_id` and `bot_token`, plus the `modes` selecting which Gateway flows to serve (direct messages, and/or @mention-opens-a-thread). The token is checked with Discord first: `400 invalid_bot_token` when Discord rejects it, `400 application_mismatch` when it belongs to another application. Returns `501` when
|
|
11148
|
+
description: "Connect a channel. The required fields depend on `channel`; no credential is ever returned. **Discord** (`channel: discord`) — supply `application_id` and `bot_token`, plus the `modes` selecting which Gateway flows to serve (direct messages, and/or @mention-opens-a-thread). The token is checked with Discord first: `400 invalid_bot_token` when Discord rejects it, `400 application_mismatch` when it belongs to another application. Returns `501` when this deployment does not enable Discord channels. **WhatsApp** (default) — one of two credential paths, both filling the same write-only secret: * **BYOT** (`credential_source: byot`, default) — supply `phone_number_id` and `access_token` from your own Meta app. * **Embedded signup** (`credential_source: embedded_signup`) — supply `code` and `waba_id` from the Meta popup; naturali exchanges the `code` for the token, subscribes its app to the WABA and registers the number for sending when it is not yet, so the customer never hands over a token. Returns `501` on deployments where Meta App credentials are not configured. The project's plan limits how many channels it may hold. At the limit this responds `403` with `plan_limit_reached`, whose `details` carry the `plan` and the `limit`, before any credential is acquired. Only `active` channels count, so disabling one frees allowance without deleting it.",
|
|
11147
11149
|
moduleDocsUrl: "https://naturali.ai/docs/modules/channels",
|
|
11148
11150
|
httpMethod: "post",
|
|
11149
11151
|
pathParams: ["project_id"],
|
|
@@ -11209,7 +11211,7 @@ const routes = {
|
|
|
11209
11211
|
},
|
|
11210
11212
|
{
|
|
11211
11213
|
"name": "code",
|
|
11212
|
-
"description": "Required for `embedded_signup`. The short-lived authorization code from the Meta popup; naturali exchanges it for the access token server-side. Never stored or returned
|
|
11214
|
+
"description": "Required for `embedded_signup`. The short-lived authorization code from the Meta popup; naturali exchanges it for the access token server-side. Never stored or returned. A code Meta rejects (malformed, expired or already used) is `400 invalid_signup_code`.\n",
|
|
11213
11215
|
"required": false,
|
|
11214
11216
|
"type": "string",
|
|
11215
11217
|
"in": "body"
|
|
@@ -16232,7 +16234,7 @@ const routes = {
|
|
|
16232
16234
|
serviceClass: "Installs",
|
|
16233
16235
|
operationId: "listInstalls",
|
|
16234
16236
|
description: "The listings the project installed, newest first.",
|
|
16235
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16237
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16236
16238
|
httpMethod: "get",
|
|
16237
16239
|
pathParams: ["project_id"],
|
|
16238
16240
|
queryParams: ["limit", "cursor"],
|
|
@@ -16266,7 +16268,7 @@ const routes = {
|
|
|
16266
16268
|
serviceClass: "Installs",
|
|
16267
16269
|
operationId: "createInstall",
|
|
16268
16270
|
description: "Install a listing by its id. A listed entry, a draft and a listing in review all install; a suspended one answers `409 listing_suspended`. Installing again answers the existing install. After the publisher removed this project's access, installing answers `403 install_blocked`.",
|
|
16269
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16271
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16270
16272
|
httpMethod: "post",
|
|
16271
16273
|
pathParams: ["project_id"],
|
|
16272
16274
|
queryParams: [],
|
|
@@ -16290,7 +16292,7 @@ const routes = {
|
|
|
16290
16292
|
serviceClass: "Installs",
|
|
16291
16293
|
operationId: "getInstall",
|
|
16292
16294
|
description: "One of the project's installs.",
|
|
16293
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16295
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16294
16296
|
httpMethod: "get",
|
|
16295
16297
|
pathParams: ["project_id", "install_id"],
|
|
16296
16298
|
queryParams: [],
|
|
@@ -16314,7 +16316,7 @@ const routes = {
|
|
|
16314
16316
|
serviceClass: "Installs",
|
|
16315
16317
|
operationId: "deleteInstall",
|
|
16316
16318
|
description: "Remove the install. While the project's agents, ingestion rules or other resources still name the installed resource, this answers `409 install_in_use` with them in `details.references`; `force=true` uninstalls anyway and those resources stop reaching it. A `blocked` install, and the install managed conversion uses, answer `403`.",
|
|
16317
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16319
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16318
16320
|
httpMethod: "delete",
|
|
16319
16321
|
pathParams: ["project_id", "install_id"],
|
|
16320
16322
|
queryParams: ["force"],
|
|
@@ -16378,14 +16380,14 @@ const routes = {
|
|
|
16378
16380
|
},
|
|
16379
16381
|
{
|
|
16380
16382
|
"name": "rrf_k",
|
|
16381
|
-
"description": "The `k` in the reciprocal rank fusion term `1 / (k + rank)`, which sets how steeply a result's contribution decays with its position in each ranked list. A smaller value weights the very top of each list more heavily. Defaults to
|
|
16383
|
+
"description": "The `k` in the reciprocal rank fusion term `1 / (k + rank)`, which sets how steeply a result's contribution decays with its position in each ranked list. A smaller value weights the very top of each list more heavily. Defaults to 60. Only applies when `query` is provided.",
|
|
16382
16384
|
"required": false,
|
|
16383
16385
|
"type": "integer",
|
|
16384
16386
|
"in": "body"
|
|
16385
16387
|
},
|
|
16386
16388
|
{
|
|
16387
16389
|
"name": "recency_half_life_days",
|
|
16388
|
-
"description": "Half-life, in days, of a recency decay applied to **memory store** results after fusion: a result's `score` is multiplied by `2 ^ (-age_in_days / recency_half_life_days)`, where age is measured from its `updated_at`. Document results are never decayed. `0
|
|
16390
|
+
"description": "Half-life, in days, of a recency decay applied to **memory store** results after fusion: a result's `score` is multiplied by `2 ^ (-age_in_days / recency_half_life_days)`, where age is measured from its `updated_at`. Document results are never decayed. `0`, the default, disables the blend entirely. Accepts fractions (`0.5` is twelve hours). How many ranks a given half-life costs depends on `rrf_k`. Only applies when `query` is provided. **No value is known to be safe in general**: every half-life measured against the reference corpus that lifted recency-sensitive queries also cost relevance-sensitive ones, which is why this ships disabled. Measure against your own corpus before setting it.",
|
|
16389
16391
|
"required": false,
|
|
16390
16392
|
"type": "number",
|
|
16391
16393
|
"in": "body"
|
|
@@ -16452,7 +16454,7 @@ const routes = {
|
|
|
16452
16454
|
serviceClass: "Listings",
|
|
16453
16455
|
operationId: "listPublicListings",
|
|
16454
16456
|
description: "Every listed entry, newest first. `interface` is what an installing project sees of the resource, read live from the publisher.",
|
|
16455
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16457
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16456
16458
|
httpMethod: "get",
|
|
16457
16459
|
pathParams: [],
|
|
16458
16460
|
queryParams: ["limit", "cursor"],
|
|
@@ -16476,7 +16478,7 @@ const routes = {
|
|
|
16476
16478
|
serviceClass: "Listings",
|
|
16477
16479
|
operationId: "getPublicListing",
|
|
16478
16480
|
description: "One listed entry. A listing that is not listed answers `404`.",
|
|
16479
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16481
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16480
16482
|
httpMethod: "get",
|
|
16481
16483
|
pathParams: ["listing_id"],
|
|
16482
16484
|
queryParams: [],
|
|
@@ -16494,7 +16496,7 @@ const routes = {
|
|
|
16494
16496
|
serviceClass: "Listings",
|
|
16495
16497
|
operationId: "listListings",
|
|
16496
16498
|
description: "The listings the project publishes, newest first.",
|
|
16497
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16499
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16498
16500
|
httpMethod: "get",
|
|
16499
16501
|
pathParams: ["project_id"],
|
|
16500
16502
|
queryParams: ["limit", "cursor"],
|
|
@@ -16528,7 +16530,7 @@ const routes = {
|
|
|
16528
16530
|
serviceClass: "Listings",
|
|
16529
16531
|
operationId: "createListing",
|
|
16530
16532
|
description: "Publish one of the project's tools or agents as a `draft`. Any project member may publish. An agent on a naturali model whose model has no price answers `503 model_not_priced`. A resource that does not exist in the project answers `400 resource_not_found`, and one that already has a listing `409 listing_exists`.",
|
|
16531
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16533
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16532
16534
|
httpMethod: "post",
|
|
16533
16535
|
pathParams: ["project_id"],
|
|
16534
16536
|
queryParams: [],
|
|
@@ -16583,7 +16585,7 @@ const routes = {
|
|
|
16583
16585
|
serviceClass: "Listings",
|
|
16584
16586
|
operationId: "getListing",
|
|
16585
16587
|
description: "One of the project's listings.",
|
|
16586
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16588
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16587
16589
|
httpMethod: "get",
|
|
16588
16590
|
pathParams: ["project_id", "listing_id"],
|
|
16589
16591
|
queryParams: [],
|
|
@@ -16607,7 +16609,7 @@ const routes = {
|
|
|
16607
16609
|
serviceClass: "Listings",
|
|
16608
16610
|
operationId: "updateListing",
|
|
16609
16611
|
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`.",
|
|
16610
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16612
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16611
16613
|
httpMethod: "patch",
|
|
16612
16614
|
pathParams: ["project_id", "listing_id"],
|
|
16613
16615
|
queryParams: [],
|
|
@@ -16662,7 +16664,7 @@ const routes = {
|
|
|
16662
16664
|
serviceClass: "Listings",
|
|
16663
16665
|
operationId: "deleteListing",
|
|
16664
16666
|
description: "Remove a listing and stop sharing its resource. Refused with `409 listing_has_installs` while any project holds an install, in any state: remove each one first, which takes two deletes of `/installs/{install_id}` for an `active` or `suspended` install. The listing's price stops applying from the next minute, and a later listing of the same resource starts from no price. The tool or agent itself is not touched.",
|
|
16665
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16667
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16666
16668
|
httpMethod: "delete",
|
|
16667
16669
|
pathParams: ["project_id", "listing_id"],
|
|
16668
16670
|
queryParams: [],
|
|
@@ -16686,7 +16688,7 @@ const routes = {
|
|
|
16686
16688
|
serviceClass: "Listings",
|
|
16687
16689
|
operationId: "submitListing",
|
|
16688
16690
|
description: "Move a `draft` listing to `in_review`. naturali lists it in the marketplace or sends it back to `draft`. Any other state answers `409 invalid_listing_state`.",
|
|
16689
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16691
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16690
16692
|
httpMethod: "post",
|
|
16691
16693
|
pathParams: ["project_id", "listing_id"],
|
|
16692
16694
|
queryParams: [],
|
|
@@ -16710,7 +16712,7 @@ const routes = {
|
|
|
16710
16712
|
serviceClass: "Listings",
|
|
16711
16713
|
operationId: "listListingInstalls",
|
|
16712
16714
|
description: "Each project that installed the listing, with its usage this billing cycle as last sampled. Never the content of a call.",
|
|
16713
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16715
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16714
16716
|
httpMethod: "get",
|
|
16715
16717
|
pathParams: ["project_id", "listing_id"],
|
|
16716
16718
|
queryParams: ["limit", "cursor"],
|
|
@@ -16751,7 +16753,7 @@ const routes = {
|
|
|
16751
16753
|
serviceClass: "Listings",
|
|
16752
16754
|
operationId: "deleteListingInstall",
|
|
16753
16755
|
description: "Cut one installing project off. An `active` or `suspended` install becomes `blocked`, and that project cannot install the listing again. Deleting a `blocked` install removes it, which lets that project install again.",
|
|
16754
|
-
moduleDocsUrl: "https://naturali.ai/docs/modules/
|
|
16756
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/marketplace",
|
|
16755
16757
|
httpMethod: "delete",
|
|
16756
16758
|
pathParams: [
|
|
16757
16759
|
"project_id",
|
|
@@ -18561,7 +18563,7 @@ const routes = {
|
|
|
18561
18563
|
"get-queue-stats": {
|
|
18562
18564
|
serviceClass: "Orchestrations",
|
|
18563
18565
|
operationId: "getQueueStats",
|
|
18564
|
-
description: "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. The per-project breakdown is listed by `GET /v1/projects/{project_id}/orchestrations/queue/stats/projects`.
|
|
18566
|
+
description: "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. The per-project breakdown is listed by `GET /v1/projects/{project_id}/orchestrations/queue/stats/projects`. Every figure is scoped to what the caller may see. A project-scoped caller gets `queue_depth` and `claimed_tasks` summed over their own 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.",
|
|
18565
18567
|
moduleDocsUrl: "https://naturali.ai/docs/modules/orchestrations",
|
|
18566
18568
|
httpMethod: "get",
|
|
18567
18569
|
pathParams: ["project_id"],
|
|
@@ -18579,7 +18581,7 @@ const routes = {
|
|
|
18579
18581
|
"list-queue-stats-projects": {
|
|
18580
18582
|
serviceClass: "Orchestrations",
|
|
18581
18583
|
operationId: "listQueueStatsProjects",
|
|
18582
|
-
description: "One row per project with any queued or claimed task, ordered by project ID: the per-project breakdown of `GET /v1/projects/{project_id}/orchestrations/queue/stats`. A project-scoped caller sees its own projects only.
|
|
18584
|
+
description: "One row per project with any queued or claimed task, ordered by project ID: the per-project breakdown of `GET /v1/projects/{project_id}/orchestrations/queue/stats`. A project-scoped caller sees its own projects only.",
|
|
18583
18585
|
moduleDocsUrl: "https://naturali.ai/docs/modules/orchestrations",
|
|
18584
18586
|
httpMethod: "get",
|
|
18585
18587
|
pathParams: ["project_id"],
|
|
@@ -23534,7 +23536,7 @@ const routes = {
|
|
|
23534
23536
|
"update-trigger": {
|
|
23535
23537
|
serviceClass: "Triggers",
|
|
23536
23538
|
operationId: "updateTrigger",
|
|
23537
|
-
description: "Updates an existing trigger's configuration. The type is immutable. Changing `target_type` or `target_id` re-checks the
|
|
23539
|
+
description: "Updates an existing trigger's configuration. The type is immutable. Changing `target_type` or `target_id` re-checks that the caller may start 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.",
|
|
23538
23540
|
moduleDocsUrl: "https://naturali.ai/docs/modules/triggers",
|
|
23539
23541
|
httpMethod: "patch",
|
|
23540
23542
|
pathParams: ["project_id", "trigger_id"],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@naturali/cli",
|
|
3
|
-
"version": "0.209.
|
|
3
|
+
"version": "0.209.5",
|
|
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.
|
|
34
|
+
"@naturali/sdk": "0.209.5",
|
|
35
35
|
"@ttoss/openapi-codegen": "^0.10.0",
|
|
36
36
|
"@types/node": "^26.5.1",
|
|
37
37
|
"tsdown": "^0.23.0",
|