@naturali/cli 0.38.1 → 0.40.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.
Files changed (2) hide show
  1. package/dist/index.mjs +57 -43
  2. package/package.json +2 -2
package/dist/index.mjs CHANGED
@@ -14,7 +14,7 @@ var __exportAll = (all, no_symbols) => {
14
14
  };
15
15
  //#endregion
16
16
  //#region package.json
17
- var version = "0.38.1";
17
+ var version = "0.40.0";
18
18
  //#endregion
19
19
  //#region ../sdk/src/generated/core/bodySerializer.gen.ts
20
20
  const jsonBodySerializer = { bodySerializer: (body) => JSON.stringify(body, (_key, value) => typeof value === "bigint" ? value.toString() : value) };
@@ -651,7 +651,7 @@ var Agents = class {
651
651
  /**
652
652
  * Delete an agent
653
653
  *
654
- * Deletes the backing SOAT agent. Returns 409 if the agent still has dependent generations or traces — pass `force=true` to delete those along with the agent (destructive and irreversible).
654
+ * Deletes the backing runtime agent. Returns 409 if the agent still has dependent generations or traces — pass `force=true` to delete those along with the agent (destructive and irreversible).
655
655
  *
656
656
  */
657
657
  static deleteAgent(options) {
@@ -672,7 +672,7 @@ var Agents = class {
672
672
  /**
673
673
  * Update an agent
674
674
  *
675
- * Change the bound provider, name, model, instructions, sampling/step config, attached tools (tool_ids/tool_choice), or the naturali-side status. At least one field is required.
675
+ * Change the bound provider, name, model, instructions, sampling/step config, attached tools (tool_ids/tool_choice), the structured-output schema (output_schema), or the naturali-side status. At least one field is required.
676
676
  *
677
677
  */
678
678
  static updateAgent(options) {
@@ -1024,7 +1024,7 @@ var Channels = class {
1024
1024
  /**
1025
1025
  * List the channel's conversations
1026
1026
  *
1027
- * A cursor page of the channel's conversations, newest first. A conversation is one contact's dialogue on the channel — the continuity anchor that resumes the same SOAT session instead of starting fresh per message — so this is the read path for who has talked to the channel and which actor/session their dialogue resolved to.
1027
+ * A cursor page of the channel's conversations, newest first. A conversation is one contact's dialogue on the channel — the continuity anchor that resumes the same runtime session instead of starting fresh per message — so this is the read path for who has talked to the channel and which actor/session their dialogue resolved to.
1028
1028
  * Conversations are created by the inbound path (the WhatsApp webhook, the Discord gateway worker) when a real message arrives; there is no way to create one directly.
1029
1029
  *
1030
1030
  */
@@ -1046,7 +1046,7 @@ var Channels = class {
1046
1046
  /**
1047
1047
  * Read a conversation's transcript
1048
1048
  *
1049
- * The conversation's messages, oldest first. naturali stores no message bodies — the dialogue lives in the SOAT session the conversation maps to, so this reads through to SOAT. Pagination is `limit`/`offset` rather than an opaque cursor because the upstream is offset-based over a stable `position` ordering.
1049
+ * The conversation's messages, oldest first. naturali stores no message bodies — the dialogue lives in the runtime session the conversation maps to, so this reads through to the runtime. Pagination is `limit`/`offset` rather than an opaque cursor because the upstream is offset-based over a stable `position` ordering.
1050
1050
  *
1051
1051
  */
1052
1052
  static listChannelConversationMessages(options) {
@@ -1074,7 +1074,7 @@ var Contacts = class {
1074
1074
  * Create a contact
1075
1075
  *
1076
1076
  * Record a contact the customer already knows about, optionally with the identifiers it is expected to arrive at.
1077
- * Optional by design — the inbound path creates contacts on its own. This is for the embedder who has a user in their own system and wants naturali to agree about who that is before the first message, which is what makes `external_id` (and, through it, a session's `tool_context`) useful. No SOAT actor is created here; the contact gets one on first need.
1077
+ * Optional by design — the inbound path creates contacts on its own. This is for the embedder who has a user in their own system and wants naturali to agree about who that is before the first message, which is what makes `external_id` (and, through it, a session's `tool_context`) useful. No runtime actor is created here; the contact gets one on first need.
1078
1078
  *
1079
1079
  */
1080
1080
  static createContact(options) {
@@ -1090,7 +1090,7 @@ var Contacts = class {
1090
1090
  /**
1091
1091
  * Erase a contact
1092
1092
  *
1093
- * **Erasure (C4/LGPD).** Not a soft delete and not reversible: the contact's sessions — with their messages and media — its SOAT actor, its memory container and every identifier it was reachable at are removed, along with the merge records that reference it.
1093
+ * **Erasure (C4/LGPD).** Not a soft delete and not reversible: the contact's sessions — with their messages and media — its runtime actor, its memory container and every identifier it was reachable at are removed, along with the merge records that reference it.
1094
1094
  * The upstream deletes happen first, so a failure there aborts before the local pointers are dropped and a retry can still find what is left. A contact that was merged into another cannot be erased directly: its data lives with the survivor, so erase that one.
1095
1095
  *
1096
1096
  */
@@ -1169,7 +1169,7 @@ var Contacts = class {
1169
1169
  * Merge another contact into this one
1170
1170
  *
1171
1171
  * Fold `source_contact_id` into this contact — "same human, two identifiers" (C4).
1172
- * What moves: every identity and every conversation, so the survivor's history is the union of both. What is *shared* rather than moved: agent memory — SOAT hangs it off the actor, so the source's actor is re-pointed at the survivor's memory container and both keep answering with one recollection. Existing sessions keep working, which is the point of not rewriting them.
1172
+ * What moves: every identity and every conversation, so the survivor's history is the union of both. What is *shared* rather than moved: agent memory — the runtime hangs it off the actor, so the source's actor is re-pointed at the survivor's memory container and both keep answering with one recollection. Existing sessions keep working, which is the point of not rewriting them.
1173
1173
  * The source is not deleted: it stays as a tombstone pointing at the survivor, and the returned merge record lists exactly what moved, so the merge can be audited and reverted.
1174
1174
  *
1175
1175
  */
@@ -1225,7 +1225,7 @@ var Generations = class {
1225
1225
  /**
1226
1226
  * Run an agent generation
1227
1227
  *
1228
- * Sends messages to the agent, resolves its tools, and runs the model loop. Returns the final text when `status` is `completed` (plus `object` when the agent has an output schema), or the pending `tool_calls` when `status` is `requires_action`. With `stream: true` the response is a Server-Sent Events stream (Content-Type text/event-stream) proxied from SOAT instead of a single JSON body.
1228
+ * Sends messages to the agent, resolves its tools, and runs the model loop. Returns the final text when `status` is `completed` (plus `object` when the agent has an output schema), or the pending `tool_calls` when `status` is `requires_action`. With `stream: true` the response is a Server-Sent Events stream (Content-Type text/event-stream) proxied from the runtime instead of a single JSON body.
1229
1229
  *
1230
1230
  */
1231
1231
  static createGeneration(options) {
@@ -1254,7 +1254,7 @@ var Generations = class {
1254
1254
  /**
1255
1255
  * Get a generation's cost
1256
1256
  *
1257
- * What this one generation cost, and the tokens it was charged on — the billing-grade receipt SOAT froze at write time, per model line item.
1257
+ * What this one generation cost, and the tokens it was charged on — the billing-grade receipt the runtime froze at write time, per model line item.
1258
1258
  * This is the per-generation grain that `GET /v1/projects/{project_id}/usage` cannot express: that meter buckets a whole project by model, agent, run, day or meter type, and a run can hold more than one generation. Use this to price a single turn, and the project meter to roll spend up.
1259
1259
  * `cost_usd` is `null` when nothing was priced — never that the work was free. Only naturali-managed providers are priced; a BYOK generation runs on your own provider account, so it carries no LLM cost here (its tokens are still reported).
1260
1260
  * A generation belonging to another project responds `404`, not `403`.
@@ -1460,7 +1460,7 @@ var Projects = class {
1460
1460
  /**
1461
1461
  * Delete a project
1462
1462
  *
1463
- * Permanently deletes the project and its backing SOAT project. Fails with 409 if the SOAT project still has dependent resources — remove them first, or pass `force=true` to delete the project and all its dependents (agents, providers, tools, sessions, generations, traces). Forcing is destructive and irreversible.
1463
+ * Permanently deletes the project and its backing runtime project. Fails with 409 if the runtime project still has dependent resources — remove them first, or pass `force=true` to delete the project and all its dependents (agents, providers, tools, sessions, generations, traces). Forcing is destructive and irreversible.
1464
1464
  *
1465
1465
  */
1466
1466
  static deleteProject(options) {
@@ -1496,7 +1496,7 @@ var Projects = class {
1496
1496
  /**
1497
1497
  * Get per-project usage
1498
1498
  *
1499
- * The per-project meter — the re-billing view (A11/C12/P3). Aggregates the project's usage over an optional [from, to] window, bucketed by a single dimension. Costs are the billing-grade cost_usd SOAT freezes at write time; null means nothing in the bucket was priced (never that it was free). Only managed providers are priced (on SOAT), so cost reflects managed usage; BYOK usage carries no LLM cost.
1499
+ * The per-project meter — the re-billing view (A11/C12/P3). Aggregates the project's usage over an optional [from, to] window, bucketed by a single dimension. Costs are the billing-grade cost_usd the runtime freezes at write time; null means nothing in the bucket was priced (never that it was free). Only managed providers are priced (on the runtime), so cost reflects managed usage; BYOK usage carries no LLM cost.
1500
1500
  *
1501
1501
  */
1502
1502
  static getProjectUsage(options) {
@@ -1521,7 +1521,7 @@ var Providers = class {
1521
1521
  /**
1522
1522
  * Register a provider (managed or BYOK)
1523
1523
  *
1524
- * Register a managed provider (naturali-keyed, priced on SOAT) or a BYOK provider (your credentials, stored write-only and never priced). See ProviderCreate for the fields each mode takes.
1524
+ * Register a managed provider (naturali-keyed, priced on the runtime) or a BYOK provider (your credentials, stored write-only and never priced). See ProviderCreate for the fields each mode takes.
1525
1525
  *
1526
1526
  */
1527
1527
  static createProvider(options) {
@@ -1537,7 +1537,7 @@ var Providers = class {
1537
1537
  /**
1538
1538
  * Delete a provider
1539
1539
  *
1540
- * Deletes the backing SOAT ai_provider and its secret. Returns 409 if the provider is still referenced by live resources (agents) — detach those first. `force=true` clears only soft dependents (price overrides, usage history); live references always block deletion.
1540
+ * Deletes the backing provider record on the runtime and its secret. Returns 409 if the provider is still referenced by live resources (agents) — detach those first. `force=true` clears only soft dependents (price overrides, usage history); live references always block deletion.
1541
1541
  *
1542
1542
  */
1543
1543
  static deleteProvider(options) {
@@ -1576,7 +1576,7 @@ var Sessions = class {
1576
1576
  /**
1577
1577
  * Open a session
1578
1578
  *
1579
- * Opens a durable session against the agent. The session accumulates messages and is resumable by id; its lifecycle (open / closed / expired) and configuration live in the backing SOAT session.
1579
+ * Opens a durable session against the agent. The session accumulates messages and is resumable by id; its lifecycle (open / closed / expired) and configuration live in the backing runtime session.
1580
1580
  *
1581
1581
  */
1582
1582
  static createSession(options) {
@@ -1592,7 +1592,7 @@ var Sessions = class {
1592
1592
  /**
1593
1593
  * Get a session
1594
1594
  *
1595
- * Returns the session's current state — status, activity timestamps and configuration — read live from the backing SOAT session, so a resumed session reflects everything that has happened since it was opened.
1595
+ * Returns the session's current state — status, activity timestamps and configuration — read live from the backing runtime session, so a resumed session reflects everything that has happened since it was opened.
1596
1596
  *
1597
1597
  */
1598
1598
  static getSession(options) {
@@ -1765,7 +1765,7 @@ var Tools = class {
1765
1765
  /**
1766
1766
  * Delete a tool
1767
1767
  *
1768
- * Deletes the backing SOAT tool. Returns 409 if the tool is still attached to an agent (detach it first).
1768
+ * Deletes the backing runtime tool. Returns 409 if the tool is still attached to an agent (detach it first).
1769
1769
  *
1770
1770
  */
1771
1771
  static deleteTool(options) {
@@ -2387,7 +2387,7 @@ const routes = {
2387
2387
  },
2388
2388
  {
2389
2389
  "name": "model",
2390
- "description": "Model string SOAT sends (see /v1/models soat_model). Defaults to the provider's default model.",
2390
+ "description": "Model string the runtime sends (see /v1/models provider_model). Defaults to the provider's default model.",
2391
2391
  "required": false,
2392
2392
  "type": "string",
2393
2393
  "in": "body"
@@ -2433,6 +2433,13 @@ const routes = {
2433
2433
  "required": false,
2434
2434
  "type": "string",
2435
2435
  "in": "body"
2436
+ },
2437
+ {
2438
+ "name": "output_schema",
2439
+ "description": "JSON Schema describing the structured object the model must return. When set, a non-streaming generation is constrained to it and the parsed value comes back as `object` on the generation result. Omit (the default) to leave the output unconstrained. Streaming generations are unaffected.\n",
2440
+ "required": false,
2441
+ "type": "object",
2442
+ "in": "body"
2436
2443
  }
2437
2444
  ]
2438
2445
  },
@@ -2461,7 +2468,7 @@ const routes = {
2461
2468
  "update-agent": {
2462
2469
  serviceClass: "Agents",
2463
2470
  operationId: "updateAgent",
2464
- description: "Change the bound provider, name, model, instructions, sampling/step config, attached tools (tool_ids/tool_choice), or the naturali-side status. At least one field is required.",
2471
+ description: "Change the bound provider, name, model, instructions, sampling/step config, attached tools (tool_ids/tool_choice), the structured-output schema (output_schema), or the naturali-side status. At least one field is required.",
2465
2472
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/agents",
2466
2473
  httpMethod: "patch",
2467
2474
  pathParams: ["project_id", "agent_id"],
@@ -2544,6 +2551,13 @@ const routes = {
2544
2551
  "type": "string",
2545
2552
  "in": "body"
2546
2553
  },
2554
+ {
2555
+ "name": "output_schema",
2556
+ "description": "Replace the agent's structured-output schema. An object constrains non-streaming generations to it; `null` clears it and leaves the output unconstrained.\n",
2557
+ "required": false,
2558
+ "type": "object",
2559
+ "in": "body"
2560
+ },
2547
2561
  {
2548
2562
  "name": "status",
2549
2563
  "description": "",
@@ -2556,7 +2570,7 @@ const routes = {
2556
2570
  "delete-agent": {
2557
2571
  serviceClass: "Agents",
2558
2572
  operationId: "deleteAgent",
2559
- description: "Deletes the backing SOAT agent. Returns 409 if the agent still has dependent generations or traces — pass `force=true` to delete those along with the agent (destructive and irreversible).",
2573
+ description: "Deletes the backing runtime agent. Returns 409 if the agent still has dependent generations or traces — pass `force=true` to delete those along with the agent (destructive and irreversible).",
2560
2574
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/agents",
2561
2575
  httpMethod: "delete",
2562
2576
  pathParams: ["project_id", "agent_id"],
@@ -3325,7 +3339,7 @@ const routes = {
3325
3339
  "list-channel-conversations": {
3326
3340
  serviceClass: "Channels",
3327
3341
  operationId: "listChannelConversations",
3328
- description: "A cursor page of the channel's conversations, newest first. A conversation is one contact's dialogue on the channel — the continuity anchor that resumes the same SOAT session instead of starting fresh per message — so this is the read path for who has talked to the channel and which actor/session their dialogue resolved to. Conversations are created by the inbound path (the WhatsApp webhook, the Discord gateway worker) when a real message arrives; there is no way to create one directly.",
3342
+ description: "A cursor page of the channel's conversations, newest first. A conversation is one contact's dialogue on the channel — the continuity anchor that resumes the same runtime session instead of starting fresh per message — so this is the read path for who has talked to the channel and which actor/session their dialogue resolved to. Conversations are created by the inbound path (the WhatsApp webhook, the Discord gateway worker) when a real message arrives; there is no way to create one directly.",
3329
3343
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/channels",
3330
3344
  httpMethod: "get",
3331
3345
  pathParams: ["project_id", "channel_id"],
@@ -3419,7 +3433,7 @@ const routes = {
3419
3433
  "list-channel-conversation-messages": {
3420
3434
  serviceClass: "Channels",
3421
3435
  operationId: "listChannelConversationMessages",
3422
- description: "The conversation's messages, oldest first. naturali stores no message bodies — the dialogue lives in the SOAT session the conversation maps to, so this reads through to SOAT. Pagination is `limit`/`offset` rather than an opaque cursor because the upstream is offset-based over a stable `position` ordering.",
3436
+ description: "The conversation's messages, oldest first. naturali stores no message bodies — the dialogue lives in the runtime session the conversation maps to, so this reads through to the runtime. Pagination is `limit`/`offset` rather than an opaque cursor because the upstream is offset-based over a stable `position` ordering.",
3423
3437
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/channels",
3424
3438
  httpMethod: "get",
3425
3439
  pathParams: [
@@ -3536,7 +3550,7 @@ const routes = {
3536
3550
  "create-contact": {
3537
3551
  serviceClass: "Contacts",
3538
3552
  operationId: "createContact",
3539
- description: "Record a contact the customer already knows about, optionally with the identifiers it is expected to arrive at. Optional by design — the inbound path creates contacts on its own. This is for the embedder who has a user in their own system and wants naturali to agree about who that is before the first message, which is what makes `external_id` (and, through it, a session's `tool_context`) useful. No SOAT actor is created here; the contact gets one on first need.",
3553
+ description: "Record a contact the customer already knows about, optionally with the identifiers it is expected to arrive at. Optional by design — the inbound path creates contacts on its own. This is for the embedder who has a user in their own system and wants naturali to agree about who that is before the first message, which is what makes `external_id` (and, through it, a session's `tool_context`) useful. No runtime actor is created here; the contact gets one on first need.",
3540
3554
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/contacts",
3541
3555
  httpMethod: "post",
3542
3556
  pathParams: ["project_id"],
@@ -3650,7 +3664,7 @@ const routes = {
3650
3664
  "delete-contact": {
3651
3665
  serviceClass: "Contacts",
3652
3666
  operationId: "deleteContact",
3653
- description: "**Erasure (C4/LGPD).** Not a soft delete and not reversible: the contact's sessions — with their messages and media — its SOAT actor, its memory container and every identifier it was reachable at are removed, along with the merge records that reference it. The upstream deletes happen first, so a failure there aborts before the local pointers are dropped and a retry can still find what is left. A contact that was merged into another cannot be erased directly: its data lives with the survivor, so erase that one.",
3667
+ description: "**Erasure (C4/LGPD).** Not a soft delete and not reversible: the contact's sessions — with their messages and media — its runtime actor, its memory container and every identifier it was reachable at are removed, along with the merge records that reference it. The upstream deletes happen first, so a failure there aborts before the local pointers are dropped and a retry can still find what is left. A contact that was merged into another cannot be erased directly: its data lives with the survivor, so erase that one.",
3654
3668
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/contacts",
3655
3669
  httpMethod: "delete",
3656
3670
  pathParams: ["project_id", "contact_id"],
@@ -3776,7 +3790,7 @@ const routes = {
3776
3790
  "merge-contact": {
3777
3791
  serviceClass: "Contacts",
3778
3792
  operationId: "mergeContact",
3779
- description: "Fold `source_contact_id` into this contact — \"same human, two identifiers\" (C4). What moves: every identity and every conversation, so the survivor's history is the union of both. What is *shared* rather than moved: agent memory — SOAT hangs it off the actor, so the source's actor is re-pointed at the survivor's memory container and both keep answering with one recollection. Existing sessions keep working, which is the point of not rewriting them. The source is not deleted: it stays as a tombstone pointing at the survivor, and the returned merge record lists exactly what moved, so the merge can be audited and reverted.",
3793
+ description: "Fold `source_contact_id` into this contact — \"same human, two identifiers\" (C4). What moves: every identity and every conversation, so the survivor's history is the union of both. What is *shared* rather than moved: agent memory — the runtime hangs it off the actor, so the source's actor is re-pointed at the survivor's memory container and both keep answering with one recollection. Existing sessions keep working, which is the point of not rewriting them. The source is not deleted: it stays as a tombstone pointing at the survivor, and the returned merge record lists exactly what moved, so the merge can be audited and reverted.",
3780
3794
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/contacts",
3781
3795
  httpMethod: "post",
3782
3796
  pathParams: ["project_id", "contact_id"],
@@ -3916,7 +3930,7 @@ const routes = {
3916
3930
  "create-generation": {
3917
3931
  serviceClass: "Generations",
3918
3932
  operationId: "createGeneration",
3919
- description: "Sends messages to the agent, resolves its tools, and runs the model loop. Returns the final text when `status` is `completed` (plus `object` when the agent has an output schema), or the pending `tool_calls` when `status` is `requires_action`. With `stream: true` the response is a Server-Sent Events stream (Content-Type text/event-stream) proxied from SOAT instead of a single JSON body.",
3933
+ description: "Sends messages to the agent, resolves its tools, and runs the model loop. Returns the final text when `status` is `completed` (plus `object` when the agent has an output schema), or the pending `tool_calls` when `status` is `requires_action`. With `stream: true` the response is a Server-Sent Events stream (Content-Type text/event-stream) proxied from the runtime instead of a single JSON body.",
3920
3934
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/generations",
3921
3935
  httpMethod: "post",
3922
3936
  pathParams: ["project_id", "agent_id"],
@@ -3998,7 +4012,7 @@ const routes = {
3998
4012
  "get-generation-usage": {
3999
4013
  serviceClass: "Generations",
4000
4014
  operationId: "getGenerationUsage",
4001
- description: "What this one generation cost, and the tokens it was charged on — the billing-grade receipt SOAT froze at write time, per model line item. This is the per-generation grain that `GET /v1/projects/{project_id}/usage` cannot express: that meter buckets a whole project by model, agent, run, day or meter type, and a run can hold more than one generation. Use this to price a single turn, and the project meter to roll spend up. `cost_usd` is `null` when nothing was priced — never that the work was free. Only naturali-managed providers are priced; a BYOK generation runs on your own provider account, so it carries no LLM cost here (its tokens are still reported). A generation belonging to another project responds `404`, not `403`.",
4015
+ description: "What this one generation cost, and the tokens it was charged on — the billing-grade receipt the runtime froze at write time, per model line item. This is the per-generation grain that `GET /v1/projects/{project_id}/usage` cannot express: that meter buckets a whole project by model, agent, run, day or meter type, and a run can hold more than one generation. Use this to price a single turn, and the project meter to roll spend up. `cost_usd` is `null` when nothing was priced — never that the work was free. Only naturali-managed providers are priced; a BYOK generation runs on your own provider account, so it carries no LLM cost here (its tokens are still reported). A generation belonging to another project responds `404`, not `403`.",
4002
4016
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/generations",
4003
4017
  httpMethod: "get",
4004
4018
  pathParams: ["project_id", "generation_id"],
@@ -4324,7 +4338,7 @@ const routes = {
4324
4338
  },
4325
4339
  {
4326
4340
  "name": "document_id",
4327
- "description": "Knowledge document public ID (doc_ prefix) — the SOAT document id.",
4341
+ "description": "Knowledge document public ID (doc_ prefix) — the runtime document id.",
4328
4342
  "required": true,
4329
4343
  "type": "string",
4330
4344
  "in": "path"
@@ -4360,7 +4374,7 @@ const routes = {
4360
4374
  },
4361
4375
  {
4362
4376
  "name": "document_id",
4363
- "description": "Knowledge document public ID (doc_ prefix) — the SOAT document id.",
4377
+ "description": "Knowledge document public ID (doc_ prefix) — the runtime document id.",
4364
4378
  "required": true,
4365
4379
  "type": "string",
4366
4380
  "in": "path"
@@ -4396,7 +4410,7 @@ const routes = {
4396
4410
  },
4397
4411
  {
4398
4412
  "name": "document_id",
4399
- "description": "Knowledge document public ID (doc_ prefix) — the SOAT document id.",
4413
+ "description": "Knowledge document public ID (doc_ prefix) — the runtime document id.",
4400
4414
  "required": true,
4401
4415
  "type": "string",
4402
4416
  "in": "path"
@@ -4443,7 +4457,7 @@ const routes = {
4443
4457
  },
4444
4458
  {
4445
4459
  "name": "provider",
4446
- "description": "Filter by the SOAT provider slug that serves the model.",
4460
+ "description": "Filter by the provider slug that serves the model.",
4447
4461
  "required": false,
4448
4462
  "type": "string",
4449
4463
  "in": "query"
@@ -4576,7 +4590,7 @@ const routes = {
4576
4590
  "delete-project": {
4577
4591
  serviceClass: "Projects",
4578
4592
  operationId: "deleteProject",
4579
- description: "Permanently deletes the project and its backing SOAT project. Fails with 409 if the SOAT project still has dependent resources — remove them first, or pass `force=true` to delete the project and all its dependents (agents, providers, tools, sessions, generations, traces). Forcing is destructive and irreversible.",
4593
+ description: "Permanently deletes the project and its backing runtime project. Fails with 409 if the runtime project still has dependent resources — remove them first, or pass `force=true` to delete the project and all its dependents (agents, providers, tools, sessions, generations, traces). Forcing is destructive and irreversible.",
4580
4594
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/projects",
4581
4595
  httpMethod: "delete",
4582
4596
  pathParams: ["project_id"],
@@ -4598,7 +4612,7 @@ const routes = {
4598
4612
  "get-project-usage": {
4599
4613
  serviceClass: "Projects",
4600
4614
  operationId: "getProjectUsage",
4601
- description: "The per-project meter — the re-billing view (A11/C12/P3). Aggregates the project's usage over an optional [from, to] window, bucketed by a single dimension. Costs are the billing-grade cost_usd SOAT freezes at write time; null means nothing in the bucket was priced (never that it was free). Only managed providers are priced (on SOAT), so cost reflects managed usage; BYOK usage carries no LLM cost.",
4615
+ description: "The per-project meter — the re-billing view (A11/C12/P3). Aggregates the project's usage over an optional [from, to] window, bucketed by a single dimension. Costs are the billing-grade cost_usd the runtime freezes at write time; null means nothing in the bucket was priced (never that it was free). Only managed providers are priced (on the runtime), so cost reflects managed usage; BYOK usage carries no LLM cost.",
4602
4616
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/projects",
4603
4617
  httpMethod: "get",
4604
4618
  pathParams: ["project_id"],
@@ -4673,7 +4687,7 @@ const routes = {
4673
4687
  "create-provider": {
4674
4688
  serviceClass: "Providers",
4675
4689
  operationId: "createProvider",
4676
- description: "Register a managed provider (naturali-keyed, priced on SOAT) or a BYOK provider (your credentials, stored write-only and never priced). See ProviderCreate for the fields each mode takes.",
4690
+ description: "Register a managed provider (naturali-keyed, priced on the runtime) or a BYOK provider (your credentials, stored write-only and never priced). See ProviderCreate for the fields each mode takes.",
4677
4691
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/providers",
4678
4692
  httpMethod: "post",
4679
4693
  pathParams: ["project_id"],
@@ -4702,14 +4716,14 @@ const routes = {
4702
4716
  },
4703
4717
  {
4704
4718
  "name": "provider",
4705
- "description": "BYOK only — the SOAT provider slug.",
4719
+ "description": "BYOK only — the provider slug.",
4706
4720
  "required": false,
4707
4721
  "type": "string",
4708
4722
  "in": "body"
4709
4723
  },
4710
4724
  {
4711
4725
  "name": "default_model",
4712
- "description": "BYOK only — model string SOAT sends (see /v1/models soat_model).",
4726
+ "description": "BYOK only — model string the runtime sends (see /v1/models provider_model).",
4713
4727
  "required": false,
4714
4728
  "type": "string",
4715
4729
  "in": "body"
@@ -4822,7 +4836,7 @@ const routes = {
4822
4836
  "delete-provider": {
4823
4837
  serviceClass: "Providers",
4824
4838
  operationId: "deleteProvider",
4825
- description: "Deletes the backing SOAT ai_provider and its secret. Returns 409 if the provider is still referenced by live resources (agents) — detach those first. `force=true` clears only soft dependents (price overrides, usage history); live references always block deletion.",
4839
+ description: "Deletes the backing provider record on the runtime and its secret. Returns 409 if the provider is still referenced by live resources (agents) — detach those first. `force=true` clears only soft dependents (price overrides, usage history); live references always block deletion.",
4826
4840
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/providers",
4827
4841
  httpMethod: "delete",
4828
4842
  pathParams: ["project_id", "provider_id"],
@@ -4844,7 +4858,7 @@ const routes = {
4844
4858
  },
4845
4859
  {
4846
4860
  "name": "force",
4847
- "description": "When true, also clear the provider's soft dependents (price overrides, usage history) in SOAT. Live references (agents) always block deletion.\n",
4861
+ "description": "When true, also clear the provider's soft dependents (price overrides, usage history) on the runtime. Live references (agents) always block deletion.\n",
4848
4862
  "required": false,
4849
4863
  "type": "boolean",
4850
4864
  "in": "query"
@@ -4854,7 +4868,7 @@ const routes = {
4854
4868
  "create-session": {
4855
4869
  serviceClass: "Sessions",
4856
4870
  operationId: "createSession",
4857
- description: "Opens a durable session against the agent. The session accumulates messages and is resumable by id; its lifecycle (open / closed / expired) and configuration live in the backing SOAT session.",
4871
+ description: "Opens a durable session against the agent. The session accumulates messages and is resumable by id; its lifecycle (open / closed / expired) and configuration live in the backing runtime session.",
4858
4872
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/sessions",
4859
4873
  httpMethod: "post",
4860
4874
  pathParams: ["project_id", "agent_id"],
@@ -4883,14 +4897,14 @@ const routes = {
4883
4897
  },
4884
4898
  {
4885
4899
  "name": "contact_id",
4886
- "description": "The contact the session is for (Contacts API, §6). naturali resolves it to the contact's SOAT actor — minting one on first need — so a web or in-app session gets the same continuity, memory and history a channel conversation gets, instead of a throwaway identity per session. When the contact has an `external_id` it rides along in `tool_context` as `actor_external_id`, so the customer's own HTTP tools receive the user reference they already key on; an explicit `tool_context` entry still wins. Mutually exclusive with `actor_id`.\n",
4900
+ "description": "The contact the session is for (Contacts API, §6). naturali resolves it to the contact's runtime actor — minting one on first need — so a web or in-app session gets the same continuity, memory and history a channel conversation gets, instead of a throwaway identity per session. When the contact has an `external_id` it rides along in `tool_context` as `actor_external_id`, so the customer's own HTTP tools receive the user reference they already key on; an explicit `tool_context` entry still wins. Mutually exclusive with `actor_id`.\n",
4887
4901
  "required": false,
4888
4902
  "type": "string",
4889
4903
  "in": "body"
4890
4904
  },
4891
4905
  {
4892
4906
  "name": "actor_id",
4893
- "description": "Public ID of an existing actor to attach as the user actor. A SOAT id showing through the public contract; prefer `contact_id`. Mutually exclusive with it.\n",
4907
+ "description": "Public ID of an existing actor to attach as the user actor. A runtime id showing through the public contract; prefer `contact_id`. Mutually exclusive with it.\n",
4894
4908
  "required": false,
4895
4909
  "type": "string",
4896
4910
  "in": "body"
@@ -4928,7 +4942,7 @@ const routes = {
4928
4942
  "get-session": {
4929
4943
  serviceClass: "Sessions",
4930
4944
  operationId: "getSession",
4931
- description: "Returns the session's current state — status, activity timestamps and configuration — read live from the backing SOAT session, so a resumed session reflects everything that has happened since it was opened.",
4945
+ description: "Returns the session's current state — status, activity timestamps and configuration — read live from the backing runtime session, so a resumed session reflects everything that has happened since it was opened.",
4932
4946
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/sessions",
4933
4947
  httpMethod: "get",
4934
4948
  pathParams: [
@@ -5579,7 +5593,7 @@ const routes = {
5579
5593
  "delete-tool": {
5580
5594
  serviceClass: "Tools",
5581
5595
  operationId: "deleteTool",
5582
- description: "Deletes the backing SOAT tool. Returns 409 if the tool is still attached to an agent (detach it first).",
5596
+ description: "Deletes the backing runtime tool. Returns 409 if the tool is still attached to an agent (detach it first).",
5583
5597
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/tools",
5584
5598
  httpMethod: "delete",
5585
5599
  pathParams: ["project_id", "tool_id"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naturali/cli",
3
- "version": "0.38.1",
3
+ "version": "0.40.0",
4
4
  "description": "Command-line interface for the naturali.ai API, generated from its OpenAPI specs",
5
5
  "type": "module",
6
6
  "bin": {
@@ -30,7 +30,7 @@
30
30
  "tsx": "^4.23.1",
31
31
  "typescript": "~6.0.3",
32
32
  "vitest": "^4.1.10",
33
- "@naturali/sdk": "0.38.1"
33
+ "@naturali/sdk": "0.40.0"
34
34
  },
35
35
  "scripts": {
36
36
  "generate": "tsx scripts/generate.ts",