@naturali/cli 0.133.3 → 0.135.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 +39 -10
  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.133.3";
20
+ var version = "0.135.0";
21
21
  //#endregion
22
22
  //#region ../sdk/src/generated/core/bodySerializer.gen.ts
23
23
  const serializeFormDataPair = (data, key, value) => {
@@ -1492,7 +1492,7 @@ var ApiKeys = class {
1492
1492
  * Create an API key
1493
1493
  *
1494
1494
  * Creates an API key. When `project_id` is set the key is scoped to that project (the default and recommended stance); omit it for an account-scoped key. `capabilities` narrows what the key may do; when omitted the key inherits the creator's capabilities. The raw `key` (nat_sk_…) is returned only in this response.
1495
- * A project-scoped key requires the `admin` role in that project: the key is a standing credential for everything the project can do, so handing one out is an administrative act rather than something a read-only `member` can do for themselves. An account-scoped key requires a credential that is not itself confined to one project.
1495
+ * A project-scoped key requires membership of that project. The key carries no role of its own — every request it makes resolves its holder's membership again — so it can never reach past what its minter already had. An account-scoped key requires a credential that is not itself confined to one project.
1496
1496
  * A connected app cannot create keys at all: a grant is revocable and a key is not, so a key minted under a grant would still work after the app was disconnected. Reading and revoking keys stay available.
1497
1497
  *
1498
1498
  */
@@ -3745,8 +3745,9 @@ var Projects = class {
3745
3745
  /**
3746
3746
  * Update a project
3747
3747
  *
3748
- * Rename or archive a project, and/or change its content-retention settings (`trace_content_retention_days`, `trace_content_mode`). Archiving is reversible; resources are retained.
3749
- * Requires the `admin` role in the project (an `owner` has it too).
3748
+ * Rename or archive a project, and/or change its content-retention settings (`trace_content_retention_days`, `trace_content_mode`), its execution ceilings (`max_concurrent_runs`, `max_chain_generations`, `max_orchestration_run_depth`) and its priced-model gate (`require_priced_model`). Archiving is reversible; resources are retained.
3749
+ * Requires the `admin` role in the project (an `owner` has it too). These are the terms every member works under, which is why setting them sits above the role that works under them.
3750
+ * The ceilings and the priced-model gate are uncapped by plan: each one only ever narrows what the project may spend, so setting one takes on a restriction rather than claiming an entitlement. On the three ceilings `null` clears the project's own bound and omission leaves it alone — they are different instructions.
3750
3751
  * The two retention controls answer different questions. The window bounds how long content *stays* — a daily sweep purges anything past it, leaving auditable skeletons behind. `trace_content_mode: none` means content is never *written*, which is the stronger guarantee: it cannot be missed by a sweep or survive in a backup.
3751
3752
  *
3752
3753
  * Your plan sets the longest window you may keep content for. A wider one — `null` included, which keeps content indefinitely — responds `403` with `plan_limit_reached`, whose `details` carry the `plan` and the `limit` in days. Anything shorter is always allowed. Moving to a plan with a shorter window takes effect at the end of the billing cycle, and content already stored is then purged by age like everything else.
@@ -3765,7 +3766,7 @@ var Projects = class {
3765
3766
  /**
3766
3767
  * List project members
3767
3768
  *
3768
- * Lists who may act in the project, and with what role. Readable by every member, including a read-only `member`: who else is in the project is not a privileged fact, and hiding it makes "why can that person see my agents?" unanswerable.
3769
+ * Lists who may act in the project, and with what role. Readable by every member, whatever their role: who else is in the project is not a privileged fact, and hiding it makes "why can that person see my agents?" unanswerable.
3769
3770
  * Somebody invited who has never signed in is listed too, with status `pending` — the invitation is already a grant, so hiding it until they arrive would hide access that exists.
3770
3771
  *
3771
3772
  */
@@ -3802,7 +3803,7 @@ var Projects = class {
3802
3803
  *
3803
3804
  * Removes a member, or leaves the project yourself.
3804
3805
  *
3805
- * **Anyone may remove themselves**, whatever their role: a colleague who no longer wants access should not have to ask for it, and leaving takes nothing from anybody else. Removing *somebody else* needs authority — an `owner` may remove anyone, an `admin` may remove a read-only `member` and not another `admin`.
3806
+ * **Anyone may remove themselves**, whatever their role: a colleague who no longer wants access should not have to ask for it, and leaving takes nothing from anybody else. Removing *somebody else* needs authority — an `owner` may remove anyone, an `admin` may remove a `member` and not another `admin`.
3806
3807
  *
3807
3808
  * The owner's own row is refused: a project with no owner is unreachable, and the row names who pays.
3808
3809
  *
@@ -7869,7 +7870,7 @@ const routes = {
7869
7870
  "create-api-key": {
7870
7871
  serviceClass: "APIKeys",
7871
7872
  operationId: "createApiKey",
7872
- description: "Creates an API key. When `project_id` is set the key is scoped to that project (the default and recommended stance); omit it for an account-scoped key. `capabilities` narrows what the key may do; when omitted the key inherits the creator's capabilities. The raw `key` (nat_sk_…) is returned only in this response. A project-scoped key requires the `admin` role in that project: the key is a standing credential for everything the project can do, so handing one out is an administrative act rather than something a read-only `member` can do for themselves. An account-scoped key requires a credential that is not itself confined to one project. A connected app cannot create keys at all: a grant is revocable and a key is not, so a key minted under a grant would still work after the app was disconnected. Reading and revoking keys stay available.",
7873
+ description: "Creates an API key. When `project_id` is set the key is scoped to that project (the default and recommended stance); omit it for an account-scoped key. `capabilities` narrows what the key may do; when omitted the key inherits the creator's capabilities. The raw `key` (nat_sk_…) is returned only in this response. A project-scoped key requires membership of that project. The key carries no role of its own — every request it makes resolves its holder's membership again — so it can never reach past what its minter already had. An account-scoped key requires a credential that is not itself confined to one project. A connected app cannot create keys at all: a grant is revocable and a key is not, so a key minted under a grant would still work after the app was disconnected. Reading and revoking keys stay available.",
7873
7874
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/api-keys",
7874
7875
  httpMethod: "post",
7875
7876
  pathParams: [],
@@ -15054,7 +15055,7 @@ const routes = {
15054
15055
  "update-project": {
15055
15056
  serviceClass: "Projects",
15056
15057
  operationId: "updateProject",
15057
- description: "Rename or archive a project, and/or change its content-retention settings (`trace_content_retention_days`, `trace_content_mode`). Archiving is reversible; resources are retained. Requires the `admin` role in the project (an `owner` has it too). The two retention controls answer different questions. The window bounds how long content *stays* — a daily sweep purges anything past it, leaving auditable skeletons behind. `trace_content_mode: none` means content is never *written*, which is the stronger guarantee: it cannot be missed by a sweep or survive in a backup. Your plan sets the longest window you may keep content for. A wider one — `null` included, which keeps content indefinitely — responds `403` with `plan_limit_reached`, whose `details` carry the `plan` and the `limit` in days. Anything shorter is always allowed. Moving to a plan with a shorter window takes effect at the end of the billing cycle, and content already stored is then purged by age like everything else.",
15058
+ description: "Rename or archive a project, and/or change its content-retention settings (`trace_content_retention_days`, `trace_content_mode`), its execution ceilings (`max_concurrent_runs`, `max_chain_generations`, `max_orchestration_run_depth`) and its priced-model gate (`require_priced_model`). Archiving is reversible; resources are retained. Requires the `admin` role in the project (an `owner` has it too). These are the terms every member works under, which is why setting them sits above the role that works under them. The ceilings and the priced-model gate are uncapped by plan: each one only ever narrows what the project may spend, so setting one takes on a restriction rather than claiming an entitlement. On the three ceilings `null` clears the project's own bound and omission leaves it alone — they are different instructions. The two retention controls answer different questions. The window bounds how long content *stays* — a daily sweep purges anything past it, leaving auditable skeletons behind. `trace_content_mode: none` means content is never *written*, which is the stronger guarantee: it cannot be missed by a sweep or survive in a backup. Your plan sets the longest window you may keep content for. A wider one — `null` included, which keeps content indefinitely — responds `403` with `plan_limit_reached`, whose `details` carry the `plan` and the `limit` in days. Anything shorter is always allowed. Moving to a plan with a shorter window takes effect at the end of the billing cycle, and content already stored is then purged by age like everything else.",
15058
15059
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/projects",
15059
15060
  httpMethod: "patch",
15060
15061
  pathParams: ["project_id"],
@@ -15096,6 +15097,34 @@ const routes = {
15096
15097
  "required": false,
15097
15098
  "type": "string",
15098
15099
  "in": "body"
15100
+ },
15101
+ {
15102
+ "name": "max_concurrent_runs",
15103
+ "description": "Orchestration runs driven at once. Send `null` to lift the limit. Omitting the field leaves it unchanged.\n",
15104
+ "required": false,
15105
+ "type": "integer",
15106
+ "in": "body"
15107
+ },
15108
+ {
15109
+ "name": "max_chain_generations",
15110
+ "description": "Generations one continuation chain may hold. Send `null` to drop back to the platform-wide ceiling. Omitting the field leaves it unchanged.\n",
15111
+ "required": false,
15112
+ "type": "integer",
15113
+ "in": "body"
15114
+ },
15115
+ {
15116
+ "name": "max_orchestration_run_depth",
15117
+ "description": "Nesting levels a run tree may reach. Send `null` to drop back to the platform-wide bound. Omitting the field leaves it unchanged.\n",
15118
+ "required": false,
15119
+ "type": "integer",
15120
+ "in": "body"
15121
+ },
15122
+ {
15123
+ "name": "require_priced_model",
15124
+ "description": "Refuse a generation whose model carries no price, before the provider is called. Uncapped by plan — it only ever narrows what the project may spend.\n",
15125
+ "required": false,
15126
+ "type": "boolean",
15127
+ "in": "body"
15099
15128
  }
15100
15129
  ]
15101
15130
  },
@@ -15126,7 +15155,7 @@ const routes = {
15126
15155
  "list-project-members": {
15127
15156
  serviceClass: "Projects",
15128
15157
  operationId: "listProjectMembers",
15129
- description: "Lists who may act in the project, and with what role. Readable by every member, including a read-only `member`: who else is in the project is not a privileged fact, and hiding it makes \"why can that person see my agents?\" unanswerable. Somebody invited who has never signed in is listed too, with status `pending` — the invitation is already a grant, so hiding it until they arrive would hide access that exists.",
15158
+ description: "Lists who may act in the project, and with what role. Readable by every member, whatever their role: who else is in the project is not a privileged fact, and hiding it makes \"why can that person see my agents?\" unanswerable. Somebody invited who has never signed in is listed too, with status `pending` — the invitation is already a grant, so hiding it until they arrive would hide access that exists.",
15130
15159
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/projects",
15131
15160
  httpMethod: "get",
15132
15161
  pathParams: ["project_id"],
@@ -15212,7 +15241,7 @@ const routes = {
15212
15241
  "remove-project-member": {
15213
15242
  serviceClass: "Projects",
15214
15243
  operationId: "removeProjectMember",
15215
- description: "Removes a member, or leaves the project yourself. **Anyone may remove themselves**, whatever their role: a colleague who no longer wants access should not have to ask for it, and leaving takes nothing from anybody else. Removing *somebody else* needs authority — an `owner` may remove anyone, an `admin` may remove a read-only `member` and not another `admin`. The owner's own row is refused: a project with no owner is unreachable, and the row names who pays.",
15244
+ description: "Removes a member, or leaves the project yourself. **Anyone may remove themselves**, whatever their role: a colleague who no longer wants access should not have to ask for it, and leaving takes nothing from anybody else. Removing *somebody else* needs authority — an `owner` may remove anyone, an `admin` may remove a `member` and not another `admin`. The owner's own row is refused: a project with no owner is unreachable, and the row names who pays.",
15216
15245
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/projects",
15217
15246
  httpMethod: "delete",
15218
15247
  pathParams: ["project_id", "member_id"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naturali/cli",
3
- "version": "0.133.3",
3
+ "version": "0.135.0",
4
4
  "description": "Command-line interface for the naturali.ai API, generated from its OpenAPI specs",
5
5
  "type": "module",
6
6
  "bin": {
@@ -25,7 +25,7 @@
25
25
  "yaml": "^2.9.1"
26
26
  },
27
27
  "devDependencies": {
28
- "@naturali/sdk": "0.133.3",
28
+ "@naturali/sdk": "0.135.0",
29
29
  "@ttoss/openapi-codegen": "^0.3.1",
30
30
  "@types/node": "^26.5.1",
31
31
  "tsdown": "^0.23.0",