@naturali/cli 0.192.0 → 0.193.1
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 +153 -7
- 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.
|
|
20
|
+
var version = "0.193.1";
|
|
21
21
|
//#endregion
|
|
22
22
|
//#region ../sdk/src/generated/core/bodySerializer.gen.ts
|
|
23
23
|
const serializeFormDataPair = (data, key, value) => {
|
|
@@ -4646,7 +4646,7 @@ var Projects = class {
|
|
|
4646
4646
|
*
|
|
4647
4647
|
* **The address does not need an account.** Inviting one that has none creates it unverified and records the membership beside it, so the invitee is already a member with status `pending`. Their first sign-in code — which they request themselves, from the link in the invitation — is what makes them `active`. There is no separate acceptance step and no invitation to expire: the address is the credential, and the invitation reached it.
|
|
4648
4648
|
*
|
|
4649
|
-
* An `owner` may grant `admin` or `member`; an `admin` may grant `member` only, so administration cannot hand out its own authority. `role: owner` is refused — that is the billing owner, and
|
|
4649
|
+
* An `owner` may grant `admin` or `member`; an `admin` may grant `member` only, so administration cannot hand out its own authority. `role: owner` is refused — that is the billing owner, and ownership moves only through a transfer the new owner accepts (`PUT /v1/projects/{project_id}/transfer`).
|
|
4650
4650
|
*
|
|
4651
4651
|
* The invitation email is a courtesy, not the grant: if it cannot be sent the membership still stands, and the response still says `pending`. Requires an account-wide credential — a project-scoped key cannot grant access that would outlive its own revocation.
|
|
4652
4652
|
*
|
|
@@ -4668,7 +4668,7 @@ var Projects = class {
|
|
|
4668
4668
|
*
|
|
4669
4669
|
* **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`.
|
|
4670
4670
|
*
|
|
4671
|
-
* The owner's own row is refused: a project with no owner is unreachable, and the row names who pays.
|
|
4671
|
+
* The owner's own row is refused: a project with no owner is unreachable, and the row names who pays. Removing the member a transfer is pending to withdraws the transfer.
|
|
4672
4672
|
*
|
|
4673
4673
|
*/
|
|
4674
4674
|
static removeProjectMember(options) {
|
|
@@ -4682,7 +4682,7 @@ var Projects = class {
|
|
|
4682
4682
|
*
|
|
4683
4683
|
* Moves a member between `admin` and `member`. The project `owner` only: promoting somebody to `admin` hands them every write in the project, and an `admin` who could do that could erase the difference between the two roles for themselves.
|
|
4684
4684
|
*
|
|
4685
|
-
* The owner's own row is refused in either direction — it names who pays, so changing it is a transfer rather than a role change.
|
|
4685
|
+
* The owner's own row is refused in either direction — it names who pays, so changing it is a transfer (`PUT /v1/projects/{project_id}/transfer`) rather than a role change.
|
|
4686
4686
|
*
|
|
4687
4687
|
*/
|
|
4688
4688
|
static updateProjectMember(options) {
|
|
@@ -4696,6 +4696,74 @@ var Projects = class {
|
|
|
4696
4696
|
});
|
|
4697
4697
|
}
|
|
4698
4698
|
/**
|
|
4699
|
+
* Withdraw or decline a project transfer
|
|
4700
|
+
*
|
|
4701
|
+
* The owner withdraws the pending transfer, or its recipient declines it. Requires an account-wide credential.
|
|
4702
|
+
*
|
|
4703
|
+
*/
|
|
4704
|
+
static cancelProjectTransfer(options) {
|
|
4705
|
+
return (options.client ?? client).delete({
|
|
4706
|
+
url: "/v1/projects/{project_id}/transfer",
|
|
4707
|
+
...options
|
|
4708
|
+
});
|
|
4709
|
+
}
|
|
4710
|
+
/**
|
|
4711
|
+
* Get the pending project transfer
|
|
4712
|
+
*
|
|
4713
|
+
* The transfer the owner has proposed and its recipient has not yet accepted or declined. Readable by every member.
|
|
4714
|
+
*
|
|
4715
|
+
*/
|
|
4716
|
+
static getProjectTransfer(options) {
|
|
4717
|
+
return (options.client ?? client).get({
|
|
4718
|
+
url: "/v1/projects/{project_id}/transfer",
|
|
4719
|
+
...options
|
|
4720
|
+
});
|
|
4721
|
+
}
|
|
4722
|
+
/**
|
|
4723
|
+
* Propose a project transfer
|
|
4724
|
+
*
|
|
4725
|
+
* Proposes an existing member as the project's next owner — the account it is billed to. Nothing changes until that member accepts with `POST /v1/projects/{project_id}/transfer/accept`; a proposal already pending is replaced. The recipient is emailed.
|
|
4726
|
+
*
|
|
4727
|
+
* Requires the `owner` role and an account-wide credential; refused to a connected app.
|
|
4728
|
+
*
|
|
4729
|
+
*/
|
|
4730
|
+
static proposeProjectTransfer(options) {
|
|
4731
|
+
return (options.client ?? client).put({
|
|
4732
|
+
security: [{
|
|
4733
|
+
key: "bearerAuth",
|
|
4734
|
+
scheme: "bearer",
|
|
4735
|
+
type: "http"
|
|
4736
|
+
}],
|
|
4737
|
+
url: "/v1/projects/{project_id}/transfer",
|
|
4738
|
+
...options,
|
|
4739
|
+
headers: {
|
|
4740
|
+
"Content-Type": "application/json",
|
|
4741
|
+
...options.headers
|
|
4742
|
+
}
|
|
4743
|
+
});
|
|
4744
|
+
}
|
|
4745
|
+
/**
|
|
4746
|
+
* Accept a project transfer
|
|
4747
|
+
*
|
|
4748
|
+
* Makes the caller — the member the transfer names — the project's owner.
|
|
4749
|
+
*
|
|
4750
|
+
* Usage up to this moment is settled on the previous owner's credit; from here on the project's usage is billed to the caller, and its runs count against the caller's allowance. The project counts toward the caller's plan limits at once: its active channels and triggers, and on Free the project itself. A transfer the caller's plan cannot hold is refused with `403 plan_limit_reached`, and the project's retention window is brought within the caller's plan.
|
|
4751
|
+
*
|
|
4752
|
+
* The previous owner stays in the project as an `admin`. Stops recorded against the project's spend move to the caller. Refused to a connected app.
|
|
4753
|
+
*
|
|
4754
|
+
*/
|
|
4755
|
+
static acceptProjectTransfer(options) {
|
|
4756
|
+
return (options.client ?? client).post({
|
|
4757
|
+
security: [{
|
|
4758
|
+
key: "bearerAuth",
|
|
4759
|
+
scheme: "bearer",
|
|
4760
|
+
type: "http"
|
|
4761
|
+
}],
|
|
4762
|
+
url: "/v1/projects/{project_id}/transfer/accept",
|
|
4763
|
+
...options
|
|
4764
|
+
});
|
|
4765
|
+
}
|
|
4766
|
+
/**
|
|
4699
4767
|
* Get per-project usage
|
|
4700
4768
|
*
|
|
4701
4769
|
* 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.
|
|
@@ -18761,7 +18829,7 @@ const routes = {
|
|
|
18761
18829
|
"add-project-member": {
|
|
18762
18830
|
serviceClass: "Projects",
|
|
18763
18831
|
operationId: "addProjectMember",
|
|
18764
|
-
description: "Adds a colleague to the project by email address. Free and uncapped on every plan: a member adds no run, no channel, no trigger and no byte, so every cost they cause is already billed through the project's owner. Members are counted nowhere. **The address does not need an account.** Inviting one that has none creates it unverified and records the membership beside it, so the invitee is already a member with status `pending`. Their first sign-in code — which they request themselves, from the link in the invitation — is what makes them `active`. There is no separate acceptance step and no invitation to expire: the address is the credential, and the invitation reached it. An `owner` may grant `admin` or `member`; an `admin` may grant `member` only, so administration cannot hand out its own authority. `role: owner` is refused — that is the billing owner, and
|
|
18832
|
+
description: "Adds a colleague to the project by email address. Free and uncapped on every plan: a member adds no run, no channel, no trigger and no byte, so every cost they cause is already billed through the project's owner. Members are counted nowhere. **The address does not need an account.** Inviting one that has none creates it unverified and records the membership beside it, so the invitee is already a member with status `pending`. Their first sign-in code — which they request themselves, from the link in the invitation — is what makes them `active`. There is no separate acceptance step and no invitation to expire: the address is the credential, and the invitation reached it. An `owner` may grant `admin` or `member`; an `admin` may grant `member` only, so administration cannot hand out its own authority. `role: owner` is refused — that is the billing owner, and ownership moves only through a transfer the new owner accepts (`PUT /v1/projects/{project_id}/transfer`). The invitation email is a courtesy, not the grant: if it cannot be sent the membership still stands, and the response still says `pending`. Requires an account-wide credential — a project-scoped key cannot grant access that would outlive its own revocation.",
|
|
18765
18833
|
moduleDocsUrl: "https://naturali.ai/docs/modules/projects",
|
|
18766
18834
|
httpMethod: "post",
|
|
18767
18835
|
pathParams: ["project_id"],
|
|
@@ -18795,7 +18863,7 @@ const routes = {
|
|
|
18795
18863
|
"update-project-member": {
|
|
18796
18864
|
serviceClass: "Projects",
|
|
18797
18865
|
operationId: "updateProjectMember",
|
|
18798
|
-
description: "Moves a member between `admin` and `member`. The project `owner` only: promoting somebody to `admin` hands them every write in the project, and an `admin` who could do that could erase the difference between the two roles for themselves. The owner's own row is refused in either direction — it names who pays, so changing it is a transfer rather than a role change.",
|
|
18866
|
+
description: "Moves a member between `admin` and `member`. The project `owner` only: promoting somebody to `admin` hands them every write in the project, and an `admin` who could do that could erase the difference between the two roles for themselves. The owner's own row is refused in either direction — it names who pays, so changing it is a transfer (`PUT /v1/projects/{project_id}/transfer`) rather than a role change.",
|
|
18799
18867
|
moduleDocsUrl: "https://naturali.ai/docs/modules/projects",
|
|
18800
18868
|
httpMethod: "patch",
|
|
18801
18869
|
pathParams: ["project_id", "member_id"],
|
|
@@ -18829,7 +18897,7 @@ const routes = {
|
|
|
18829
18897
|
"remove-project-member": {
|
|
18830
18898
|
serviceClass: "Projects",
|
|
18831
18899
|
operationId: "removeProjectMember",
|
|
18832
|
-
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.",
|
|
18900
|
+
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. Removing the member a transfer is pending to withdraws the transfer.",
|
|
18833
18901
|
moduleDocsUrl: "https://naturali.ai/docs/modules/projects",
|
|
18834
18902
|
httpMethod: "delete",
|
|
18835
18903
|
pathParams: ["project_id", "member_id"],
|
|
@@ -18850,6 +18918,84 @@ const routes = {
|
|
|
18850
18918
|
"in": "path"
|
|
18851
18919
|
}]
|
|
18852
18920
|
},
|
|
18921
|
+
"get-project-transfer": {
|
|
18922
|
+
serviceClass: "Projects",
|
|
18923
|
+
operationId: "getProjectTransfer",
|
|
18924
|
+
description: "The transfer the owner has proposed and its recipient has not yet accepted or declined. Readable by every member.",
|
|
18925
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/projects",
|
|
18926
|
+
httpMethod: "get",
|
|
18927
|
+
pathParams: ["project_id"],
|
|
18928
|
+
queryParams: [],
|
|
18929
|
+
headerParams: [],
|
|
18930
|
+
cookieParams: [],
|
|
18931
|
+
flags: [{
|
|
18932
|
+
"name": "project_id",
|
|
18933
|
+
"description": "Project public ID (proj_ prefix).",
|
|
18934
|
+
"required": true,
|
|
18935
|
+
"type": "string",
|
|
18936
|
+
"in": "path"
|
|
18937
|
+
}]
|
|
18938
|
+
},
|
|
18939
|
+
"propose-project-transfer": {
|
|
18940
|
+
serviceClass: "Projects",
|
|
18941
|
+
operationId: "proposeProjectTransfer",
|
|
18942
|
+
description: "Proposes an existing member as the project's next owner — the account it is billed to. Nothing changes until that member accepts with `POST /v1/projects/{project_id}/transfer/accept`; a proposal already pending is replaced. The recipient is emailed. Requires the `owner` role and an account-wide credential; refused to a connected app.",
|
|
18943
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/projects",
|
|
18944
|
+
httpMethod: "put",
|
|
18945
|
+
pathParams: ["project_id"],
|
|
18946
|
+
queryParams: [],
|
|
18947
|
+
headerParams: [],
|
|
18948
|
+
cookieParams: [],
|
|
18949
|
+
flags: [{
|
|
18950
|
+
"name": "project_id",
|
|
18951
|
+
"description": "Project public ID (proj_ prefix).",
|
|
18952
|
+
"required": true,
|
|
18953
|
+
"type": "string",
|
|
18954
|
+
"in": "path"
|
|
18955
|
+
}, {
|
|
18956
|
+
"name": "member_id",
|
|
18957
|
+
"description": "The membership ID (`pmem_` prefix) of the proposed owner.",
|
|
18958
|
+
"required": true,
|
|
18959
|
+
"type": "string",
|
|
18960
|
+
"in": "body"
|
|
18961
|
+
}]
|
|
18962
|
+
},
|
|
18963
|
+
"cancel-project-transfer": {
|
|
18964
|
+
serviceClass: "Projects",
|
|
18965
|
+
operationId: "cancelProjectTransfer",
|
|
18966
|
+
description: "The owner withdraws the pending transfer, or its recipient declines it. Requires an account-wide credential.",
|
|
18967
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/projects",
|
|
18968
|
+
httpMethod: "delete",
|
|
18969
|
+
pathParams: ["project_id"],
|
|
18970
|
+
queryParams: [],
|
|
18971
|
+
headerParams: [],
|
|
18972
|
+
cookieParams: [],
|
|
18973
|
+
flags: [{
|
|
18974
|
+
"name": "project_id",
|
|
18975
|
+
"description": "Project public ID (proj_ prefix).",
|
|
18976
|
+
"required": true,
|
|
18977
|
+
"type": "string",
|
|
18978
|
+
"in": "path"
|
|
18979
|
+
}]
|
|
18980
|
+
},
|
|
18981
|
+
"accept-project-transfer": {
|
|
18982
|
+
serviceClass: "Projects",
|
|
18983
|
+
operationId: "acceptProjectTransfer",
|
|
18984
|
+
description: "Makes the caller — the member the transfer names — the project's owner. Usage up to this moment is settled on the previous owner's credit; from here on the project's usage is billed to the caller, and its runs count against the caller's allowance. The project counts toward the caller's plan limits at once: its active channels and triggers, and on Free the project itself. A transfer the caller's plan cannot hold is refused with `403 plan_limit_reached`, and the project's retention window is brought within the caller's plan. The previous owner stays in the project as an `admin`. Stops recorded against the project's spend move to the caller. Refused to a connected app.",
|
|
18985
|
+
moduleDocsUrl: "https://naturali.ai/docs/modules/projects",
|
|
18986
|
+
httpMethod: "post",
|
|
18987
|
+
pathParams: ["project_id"],
|
|
18988
|
+
queryParams: [],
|
|
18989
|
+
headerParams: [],
|
|
18990
|
+
cookieParams: [],
|
|
18991
|
+
flags: [{
|
|
18992
|
+
"name": "project_id",
|
|
18993
|
+
"description": "Project public ID (proj_ prefix).",
|
|
18994
|
+
"required": true,
|
|
18995
|
+
"type": "string",
|
|
18996
|
+
"in": "path"
|
|
18997
|
+
}]
|
|
18998
|
+
},
|
|
18853
18999
|
"get-project-usage": {
|
|
18854
19000
|
serviceClass: "Projects",
|
|
18855
19001
|
operationId: "getProjectUsage",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@naturali/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.193.1",
|
|
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.
|
|
34
|
+
"@naturali/sdk": "0.193.1",
|
|
35
35
|
"@ttoss/openapi-codegen": "^0.5.0",
|
|
36
36
|
"@types/node": "^26.5.1",
|
|
37
37
|
"tsdown": "^0.23.0",
|