@run402/sdk 4.93.2 → 4.95.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.
- package/README.md +40 -38
- package/core-dist/config.d.ts +16 -2
- package/core-dist/config.js +52 -18
- package/core-dist/control-plane-session.d.ts +29 -14
- package/core-dist/control-plane-session.js +31 -6
- package/core-dist/keystore.js +7 -7
- package/core-dist/profiles.d.ts +3 -3
- package/core-dist/profiles.js +9 -7
- package/core-dist/{allowance-auth.d.ts → wallet-auth.d.ts} +6 -6
- package/core-dist/{allowance-auth.js → wallet-auth.js} +15 -15
- package/core-dist/wallet.d.ts +22 -0
- package/core-dist/{allowance.js → wallet.js} +20 -20
- package/core-dist/{write-auth-session.d.ts → write-approvals.d.ts} +28 -26
- package/core-dist/{write-auth-session.js → write-approvals.js} +19 -19
- package/dist/actions.d.ts +4 -4
- package/dist/actions.d.ts.map +1 -1
- package/dist/app-up.d.ts +2 -2
- package/dist/app-up.d.ts.map +1 -1
- package/dist/config.d.ts +1 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/control-plane-credentials.d.ts +8 -8
- package/dist/control-plane-credentials.js +7 -7
- package/dist/credentials.d.ts +20 -20
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +1 -1
- package/dist/errors.d.ts +26 -28
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +35 -38
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +29 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -17
- package/dist/index.js.map +1 -1
- package/dist/kernel.d.ts +1 -1
- package/dist/kernel.d.ts.map +1 -1
- package/dist/kernel.js +10 -9
- package/dist/kernel.js.map +1 -1
- package/dist/namespaces/admin.d.ts +52 -121
- package/dist/namespaces/admin.d.ts.map +1 -1
- package/dist/namespaces/admin.js +41 -45
- package/dist/namespaces/admin.js.map +1 -1
- package/dist/namespaces/agent.d.ts +2 -2
- package/dist/namespaces/agent.d.ts.map +1 -1
- package/dist/namespaces/agent.js +2 -2
- package/dist/namespaces/agent.js.map +1 -1
- package/dist/namespaces/ai.d.ts +2 -2
- package/dist/namespaces/ai.js +3 -3
- package/dist/namespaces/ai.js.map +1 -1
- package/dist/namespaces/assets.js +1 -1
- package/dist/namespaces/assets.js.map +1 -1
- package/dist/namespaces/billing.d.ts +6 -3
- package/dist/namespaces/billing.d.ts.map +1 -1
- package/dist/namespaces/billing.js.map +1 -1
- package/dist/namespaces/buzz-notifications.types.d.ts +1 -1
- package/dist/namespaces/buzz.d.ts +2 -2
- package/dist/namespaces/buzz.d.ts.map +1 -1
- package/dist/namespaces/buzz.js +2 -2
- package/dist/namespaces/buzz.js.map +1 -1
- package/dist/namespaces/buzz.types.d.ts +2 -2
- package/dist/namespaces/buzz.types.d.ts.map +1 -1
- package/dist/namespaces/ci.js +3 -3
- package/dist/namespaces/ci.js.map +1 -1
- package/dist/namespaces/credentials.types.d.ts +1 -1
- package/dist/namespaces/deploy.d.ts +1 -1
- package/dist/namespaces/deploy.d.ts.map +1 -1
- package/dist/namespaces/deploy.js +31 -32
- package/dist/namespaces/deploy.js.map +1 -1
- package/dist/namespaces/deploy.types.d.ts +6 -6
- package/dist/namespaces/deploy.types.d.ts.map +1 -1
- package/dist/namespaces/domains.d.ts +10 -2
- package/dist/namespaces/domains.d.ts.map +1 -1
- package/dist/namespaces/domains.js +10 -5
- package/dist/namespaces/domains.js.map +1 -1
- package/dist/namespaces/errors.js +1 -1
- package/dist/namespaces/escalations.d.ts +1 -1
- package/dist/namespaces/escalations.js +1 -1
- package/dist/namespaces/escalations.types.d.ts +2 -2
- package/dist/namespaces/escalations.types.d.ts.map +1 -1
- package/dist/namespaces/events.types.d.ts +1 -1
- package/dist/namespaces/functions.d.ts +1 -1
- package/dist/namespaces/functions.js +2 -2
- package/dist/namespaces/functions.js.map +1 -1
- package/dist/namespaces/gitvault.crypto.d.ts +1 -1
- package/dist/namespaces/gitvault.d.ts +26 -26
- package/dist/namespaces/gitvault.d.ts.map +1 -1
- package/dist/namespaces/gitvault.js +113 -113
- package/dist/namespaces/gitvault.js.map +1 -1
- package/dist/namespaces/me.d.ts +120 -0
- package/dist/namespaces/me.d.ts.map +1 -0
- package/dist/namespaces/me.js +34 -0
- package/dist/namespaces/me.js.map +1 -0
- package/dist/namespaces/org.d.ts +108 -6
- package/dist/namespaces/org.d.ts.map +1 -1
- package/dist/namespaces/org.js +63 -7
- package/dist/namespaces/org.js.map +1 -1
- package/dist/namespaces/org.types.d.ts +29 -9
- package/dist/namespaces/org.types.d.ts.map +1 -1
- package/dist/namespaces/pay.js +3 -3
- package/dist/namespaces/pay.js.map +1 -1
- package/dist/namespaces/projects.d.ts +9 -9
- package/dist/namespaces/projects.js +15 -15
- package/dist/namespaces/projects.js.map +1 -1
- package/dist/namespaces/projects.types.d.ts +28 -12
- package/dist/namespaces/projects.types.d.ts.map +1 -1
- package/dist/namespaces/rooms.d.ts +7 -7
- package/dist/namespaces/rooms.js +17 -17
- package/dist/namespaces/rooms.js.map +1 -1
- package/dist/namespaces/rooms.types.d.ts +9 -9
- package/dist/namespaces/rooms.types.d.ts.map +1 -1
- package/dist/namespaces/service.d.ts +1 -1
- package/dist/namespaces/service.js +1 -1
- package/dist/namespaces/{operator-session.d.ts → session.d.ts} +135 -51
- package/dist/namespaces/session.d.ts.map +1 -0
- package/dist/namespaces/{operator-session.js → session.js} +118 -30
- package/dist/namespaces/session.js.map +1 -0
- package/dist/namespaces/subdomains.d.ts +5 -5
- package/dist/namespaces/subdomains.d.ts.map +1 -1
- package/dist/namespaces/subdomains.js +6 -6
- package/dist/namespaces/subdomains.js.map +1 -1
- package/dist/namespaces/tier.d.ts +44 -21
- package/dist/namespaces/tier.d.ts.map +1 -1
- package/dist/namespaces/tier.js +7 -7
- package/dist/namespaces/tier.js.map +1 -1
- package/dist/namespaces/transfers.d.ts +119 -85
- package/dist/namespaces/transfers.d.ts.map +1 -1
- package/dist/namespaces/transfers.js +31 -38
- package/dist/namespaces/transfers.js.map +1 -1
- package/dist/namespaces/vouchers.d.ts +9 -10
- package/dist/namespaces/vouchers.d.ts.map +1 -1
- package/dist/namespaces/vouchers.js +4 -5
- package/dist/namespaces/vouchers.js.map +1 -1
- package/dist/namespaces/wallets.d.ts +72 -3
- package/dist/namespaces/wallets.d.ts.map +1 -1
- package/dist/namespaces/wallets.js +141 -3
- package/dist/namespaces/wallets.js.map +1 -1
- package/dist/namespaces/write-approval.d.ts +101 -0
- package/dist/namespaces/write-approval.d.ts.map +1 -0
- package/dist/namespaces/write-approval.js +62 -0
- package/dist/namespaces/write-approval.js.map +1 -0
- package/dist/node/actions-node.d.ts +3 -3
- package/dist/node/actions-node.d.ts.map +1 -1
- package/dist/node/actions-node.js +44 -44
- package/dist/node/actions-node.js.map +1 -1
- package/dist/node/assets-node.js +6 -6
- package/dist/node/assets-node.js.map +1 -1
- package/dist/node/{bearer-claim-key.d.ts → bearer-redeem-key.d.ts} +12 -12
- package/dist/node/bearer-redeem-key.d.ts.map +1 -0
- package/dist/node/{bearer-claim-key.js → bearer-redeem-key.js} +21 -21
- package/dist/node/bearer-redeem-key.js.map +1 -0
- package/dist/node/ci.d.ts +1 -1
- package/dist/node/ci.d.ts.map +1 -1
- package/dist/node/ci.js +6 -6
- package/dist/node/ci.js.map +1 -1
- package/dist/node/credentials.d.ts +18 -17
- package/dist/node/credentials.d.ts.map +1 -1
- package/dist/node/credentials.js +29 -28
- package/dist/node/credentials.js.map +1 -1
- package/dist/node/deploy-manifest.d.ts +3 -5
- package/dist/node/deploy-manifest.d.ts.map +1 -1
- package/dist/node/deploy-manifest.js +3 -12
- package/dist/node/deploy-manifest.js.map +1 -1
- package/dist/node/funding-recovery.d.ts +1 -1
- package/dist/node/funding-recovery.d.ts.map +1 -1
- package/dist/node/funding-recovery.js +1 -1
- package/dist/node/funding-recovery.js.map +1 -1
- package/dist/node/gitvault-apply.d.ts +1 -1
- package/dist/node/gitvault-apply.d.ts.map +1 -1
- package/dist/node/gitvault-apply.js +1 -1
- package/dist/node/gitvault-apply.js.map +1 -1
- package/dist/node/gitvault-handoff.d.ts +22 -22
- package/dist/node/gitvault-handoff.d.ts.map +1 -1
- package/dist/node/gitvault-handoff.js +45 -45
- package/dist/node/gitvault-handoff.js.map +1 -1
- package/dist/node/gitvault-prewarm.js +7 -7
- package/dist/node/gitvault-prewarm.js.map +1 -1
- package/dist/node/gitvault-restore.d.ts +1 -1
- package/dist/node/gitvault-restore.js +1 -1
- package/dist/node/index.d.ts +16 -16
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +15 -15
- package/dist/node/index.js.map +1 -1
- package/dist/node/manifest-export.js +2 -2
- package/dist/node/manifest-export.js.map +1 -1
- package/dist/node/org-adopt.d.ts +49 -0
- package/dist/node/org-adopt.d.ts.map +1 -0
- package/dist/node/org-adopt.js +77 -0
- package/dist/node/org-adopt.js.map +1 -0
- package/dist/node/paid-fetch.d.ts +7 -7
- package/dist/node/paid-fetch.d.ts.map +1 -1
- package/dist/node/paid-fetch.js +54 -54
- package/dist/node/paid-fetch.js.map +1 -1
- package/dist/node/preflight.d.ts +1 -1
- package/dist/node/preflight.d.ts.map +1 -1
- package/dist/node/preflight.js +1 -1
- package/dist/node/preflight.js.map +1 -1
- package/dist/node/sites-node.js +1 -1
- package/dist/node/sites-node.js.map +1 -1
- package/dist/node/source-scan.d.ts +1 -1
- package/dist/node/source-scan.js +2 -2
- package/dist/node/source-scan.js.map +1 -1
- package/dist/scoped.d.ts +11 -11
- package/dist/scoped.d.ts.map +1 -1
- package/dist/scoped.js +5 -5
- package/dist/scoped.js.map +1 -1
- package/package.json +1 -1
- package/core-dist/allowance.d.ts +0 -22
- package/core-dist/operator-session.d.ts +0 -80
- package/core-dist/operator-session.js +0 -154
- package/dist/namespaces/allowance.d.ts +0 -79
- package/dist/namespaces/allowance.d.ts.map +0 -1
- package/dist/namespaces/allowance.js +0 -149
- package/dist/namespaces/allowance.js.map +0 -1
- package/dist/namespaces/operator-session.d.ts.map +0 -1
- package/dist/namespaces/operator-session.js.map +0 -1
- package/dist/namespaces/operator.d.ts +0 -359
- package/dist/namespaces/operator.d.ts.map +0 -1
- package/dist/namespaces/operator.js +0 -272
- package/dist/namespaces/operator.js.map +0 -1
- package/dist/node/bearer-claim-key.d.ts.map +0 -1
- package/dist/node/bearer-claim-key.js.map +0 -1
- package/dist/node/operator-claim.d.ts +0 -49
- package/dist/node/operator-claim.d.ts.map +0 -1
- package/dist/node/operator-claim.js +0 -77
- package/dist/node/operator-claim.js.map +0 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Exposed as `r.admin.transfers.*`. Project transfer is ONE capability,
|
|
6
6
|
* body-discriminated by recipient kind: a wallet recipient (`toWallet`, SIWX
|
|
7
|
-
* bilateral signing), an email recipient (`toEmail`, the recipient
|
|
7
|
+
* bilateral signing), an email recipient (`toEmail`, the recipient accepts into
|
|
8
8
|
* an org), or an owned org recipient (`toOrgId`, same-actor org move). All ride
|
|
9
9
|
* the same `/transfers` surface — there is no separate `/handoffs` noun (the
|
|
10
10
|
* gateway removed it in `unify-project-transfer-surface`).
|
|
@@ -14,16 +14,19 @@
|
|
|
14
14
|
* GET /agent/v1/transfers/incoming — inbox (pending kinds, unioned)
|
|
15
15
|
* GET /agent/v1/transfers/outgoing — outbox (pending kinds, unioned)
|
|
16
16
|
* GET /agent/v1/transfers/:transfer_id — preview (kind-agnostic)
|
|
17
|
-
* POST /agent/v1/transfers/:transfer_id/accept —
|
|
18
|
-
*
|
|
17
|
+
* POST /agent/v1/transfers/:transfer_id/accept — the ONE completion; the row's recipient kind
|
|
18
|
+
* picks the credential (wallet: to_wallet's SIWX;
|
|
19
|
+
* email: a principal whose verified email matches,
|
|
20
|
+
* body { org_id?, accept_retained_member? })
|
|
19
21
|
* POST /agent/v1/transfers/:transfer_id/cancel — cancel (kind-agnostic)
|
|
20
22
|
*
|
|
21
23
|
* Owner-side mutations against a project with a pending transfer return
|
|
22
24
|
* 409 `PROJECT_HAS_PENDING_TRANSFER`. The SDK kernel surfaces that as
|
|
23
|
-
* {@link TransferFreezeError} so agents can guide the user to cancel.
|
|
24
|
-
* the wrong
|
|
25
|
-
* 409 `WRONG_COMPLETION_FOR_TRANSFER_KIND`; the
|
|
26
|
-
*
|
|
25
|
+
* {@link TransferFreezeError} so agents can guide the user to cancel. Accepting
|
|
26
|
+
* with the wrong credential for a row's kind (e.g. a wallet signature on an
|
|
27
|
+
* email-addressed row) returns 409 `WRONG_COMPLETION_FOR_TRANSFER_KIND`; the
|
|
28
|
+
* thrown error exposes an `accept_transfer` next action naming the credential
|
|
29
|
+
* the row needs, on the SAME `transfer_id`.
|
|
27
30
|
*/
|
|
28
31
|
import type { OperationActorSnapshot, PrincipalRepresentation } from "./identity-links.types.js";
|
|
29
32
|
import type { Client } from "../kernel.js";
|
|
@@ -58,13 +61,13 @@ export interface InitiateWalletTransferInput {
|
|
|
58
61
|
/** Optional KySigned record id (Phase 1A: informational only, stored verbatim, not verified). */
|
|
59
62
|
kysignedRecordId?: string;
|
|
60
63
|
/** Retention is an email-only opt-in; not allowed on the wallet path. */
|
|
61
|
-
|
|
64
|
+
retainMember?: never;
|
|
62
65
|
}
|
|
63
|
-
/** Initiate a transfer addressed to an email (the recipient
|
|
66
|
+
/** Initiate a transfer addressed to an email (the recipient accepts into an org via `accept`). */
|
|
64
67
|
export interface InitiateEmailTransferInput {
|
|
65
68
|
/** Project id to transfer. Caller must currently own/admin it. */
|
|
66
69
|
projectId: string;
|
|
67
|
-
/** Recipient email;
|
|
70
|
+
/** Recipient email; accepted by a principal whose verified email matches. */
|
|
68
71
|
toEmail: string;
|
|
69
72
|
/** Mutually exclusive with {@link InitiateEmailTransferInput.toEmail}; not allowed on the email path. */
|
|
70
73
|
toWallet?: never;
|
|
@@ -76,11 +79,11 @@ export interface InitiateEmailTransferInput {
|
|
|
76
79
|
* Opt in (v1.91) to retaining a `developer` membership in the recipient's org
|
|
77
80
|
* after the transfer completes. Only `role: "developer"` is accepted, and the
|
|
78
81
|
* subject is always the initiating owner (you can only retain yourself). The
|
|
79
|
-
* recipient must explicitly accept it at
|
|
80
|
-
* {@link
|
|
82
|
+
* recipient must explicitly accept it at accept time (see
|
|
83
|
+
* {@link AcceptTransferOptions.acceptRetainedMember}); omitting this is a
|
|
81
84
|
* full severance, the default.
|
|
82
85
|
*/
|
|
83
|
-
|
|
86
|
+
retainMember?: {
|
|
84
87
|
role: "developer";
|
|
85
88
|
} | null;
|
|
86
89
|
/** Billing policy is wallet-path only; not allowed on the email path. */
|
|
@@ -108,7 +111,7 @@ export interface InitiateOrgTransferInput {
|
|
|
108
111
|
/** KySigned record id is wallet-path only; not allowed on the org path. */
|
|
109
112
|
kysignedRecordId?: never;
|
|
110
113
|
/** Retention is an email-only opt-in; not allowed on the org path. */
|
|
111
|
-
|
|
114
|
+
retainMember?: never;
|
|
112
115
|
}
|
|
113
116
|
/** Inputs to `r.admin.transfers.initiate(...)` — wallet XOR email XOR org. */
|
|
114
117
|
export type InitiateTransferInput = InitiateWalletTransferInput | InitiateEmailTransferInput | InitiateOrgTransferInput;
|
|
@@ -127,7 +130,7 @@ export interface InitiateTransferResult {
|
|
|
127
130
|
lease_refundable: false;
|
|
128
131
|
terms_sha256: string;
|
|
129
132
|
}
|
|
130
|
-
/** Result of an email-addressed `initiate`. The recipient completes via `
|
|
133
|
+
/** Result of an email-addressed `initiate`. The recipient completes via `accept`. */
|
|
131
134
|
export interface InitiateEmailTransferResult {
|
|
132
135
|
status: "ok";
|
|
133
136
|
transfer_id: string;
|
|
@@ -142,9 +145,10 @@ export interface InitiateEmailTransferResult {
|
|
|
142
145
|
export interface InitiateOrgTransferResult {
|
|
143
146
|
status: "accepted";
|
|
144
147
|
project_id: string;
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
+
/** The org the project left. */
|
|
149
|
+
from_org_id: string;
|
|
150
|
+
/** The org that now owns the project. */
|
|
151
|
+
to_org_id: string;
|
|
148
152
|
/** Present when the gateway materializes an audit transfer row. */
|
|
149
153
|
transfer_id?: string;
|
|
150
154
|
/** Present when the gateway returns the completion timestamp inline. */
|
|
@@ -157,11 +161,12 @@ export interface InitiateOrgTransferResult {
|
|
|
157
161
|
github_repo_note?: string;
|
|
158
162
|
[key: string]: unknown;
|
|
159
163
|
}
|
|
160
|
-
|
|
164
|
+
/** Result of accepting a WALLET-addressed transfer. */
|
|
165
|
+
export interface AcceptWalletTransferResult {
|
|
161
166
|
project_id: string;
|
|
162
167
|
from_wallet: string;
|
|
163
168
|
to_wallet: string;
|
|
164
|
-
|
|
169
|
+
new_org_id: string | null;
|
|
165
170
|
completed_at: string;
|
|
166
171
|
/** New owner's project anon key (stateless JWT). The SDK persists it on accept. */
|
|
167
172
|
anon_key: string;
|
|
@@ -174,6 +179,32 @@ export interface AcceptTransferResult {
|
|
|
174
179
|
/** Verbatim reminder that GitHub repo ownership is NOT part of the transfer. */
|
|
175
180
|
github_repo_note: string;
|
|
176
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* Result of accepting an EMAIL-addressed transfer. Symmetric with the wallet
|
|
184
|
+
* result: the completion returns the new owner's project keys
|
|
185
|
+
* (`project-transfer-accept-credentials`), and `accept` persists them to the
|
|
186
|
+
* keystore so the new owner can operate the project immediately.
|
|
187
|
+
*/
|
|
188
|
+
export interface AcceptEmailTransferResult {
|
|
189
|
+
status: "accepted";
|
|
190
|
+
project_id: string;
|
|
191
|
+
to_org_id: string;
|
|
192
|
+
created_new_org: boolean;
|
|
193
|
+
/**
|
|
194
|
+
* The sender's principal id retained as a `developer` of the new org, or
|
|
195
|
+
* `null` when no membership was retained (declined, not offered, or no-op).
|
|
196
|
+
*/
|
|
197
|
+
retained_member_principal_id: string | null;
|
|
198
|
+
/** Present when the gateway reports the credential rotation it performed. */
|
|
199
|
+
credentials_revoked?: boolean;
|
|
200
|
+
credentials_issued?: boolean;
|
|
201
|
+
/** New owner's project anon key (stateless `project_id`-derived JWT). `accept` persists it. */
|
|
202
|
+
anon_key: string;
|
|
203
|
+
/** New owner's project service key (stateless `project_id`-derived JWT). Full project access; persisted on accept. */
|
|
204
|
+
service_key: string;
|
|
205
|
+
}
|
|
206
|
+
/** Result of {@link Transfers.accept} — the row's recipient kind decides which shape comes back. */
|
|
207
|
+
export type AcceptTransferResult = AcceptWalletTransferResult | AcceptEmailTransferResult;
|
|
177
208
|
export interface CancelTransferResult {
|
|
178
209
|
transfer_id: string;
|
|
179
210
|
status: "cancelled";
|
|
@@ -185,8 +216,7 @@ export interface CancelTransferResult {
|
|
|
185
216
|
* Summary row used in `/agent/v1/transfers/incoming` and `/outgoing`. The list
|
|
186
217
|
* is kind-agnostic: `recipient_kind` discriminates wallet, email, and future
|
|
187
218
|
* org rows. Wallet rows carry `from_wallet`/`to_wallet`; email rows carry
|
|
188
|
-
* `to_email` + `
|
|
189
|
-
* `to_organization_id`.
|
|
219
|
+
* `to_email` + `from_org_id`; future org rows carry `to_org_id`.
|
|
190
220
|
*/
|
|
191
221
|
export interface TransferSummary {
|
|
192
222
|
transfer_id: string;
|
|
@@ -209,11 +239,9 @@ export interface TransferSummary {
|
|
|
209
239
|
/** Email rows only. */
|
|
210
240
|
to_email?: string;
|
|
211
241
|
/** Email rows only. */
|
|
212
|
-
|
|
242
|
+
from_org_id?: string | null;
|
|
213
243
|
/** Org rows only (future non-same-actor org transfers). */
|
|
214
244
|
to_org_id?: string;
|
|
215
|
-
/** Org rows only (canonical gateway field when present). */
|
|
216
|
-
to_organization_id?: string;
|
|
217
245
|
initiated_by?: OperationActorSnapshot | null;
|
|
218
246
|
source_organization?: {
|
|
219
247
|
org_id: string;
|
|
@@ -264,21 +292,54 @@ export interface SignerPreview {
|
|
|
264
292
|
address: string;
|
|
265
293
|
chain: string;
|
|
266
294
|
}
|
|
295
|
+
/** One priced route the recipient org must be able to receive payouts for. */
|
|
296
|
+
export interface PricedTransferRouteSummary {
|
|
297
|
+
pattern: string;
|
|
298
|
+
methods: string[] | null;
|
|
299
|
+
target_function: string | null;
|
|
300
|
+
amount_usd_micros: number;
|
|
301
|
+
networks: string[];
|
|
302
|
+
pay_to: "org_default_payout";
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Whether the receiving org can take the project's priced-route payouts.
|
|
306
|
+
* `required` / `ambiguous` block acceptance with `RECIPIENT_PAYOUT_WALLET_REQUIRED`,
|
|
307
|
+
* whose details repeat `recipient_org_id` and `next_actions`.
|
|
308
|
+
*/
|
|
309
|
+
export interface RecipientPricedRoutePayoutCheck {
|
|
310
|
+
required: boolean;
|
|
311
|
+
status: "not_required" | "ready" | "recipient_org_unknown" | "required" | "ambiguous";
|
|
312
|
+
code: string | null;
|
|
313
|
+
project_id: string;
|
|
314
|
+
current_release_id: string | null;
|
|
315
|
+
recipient_org_id: string | null;
|
|
316
|
+
priced_routes: PricedTransferRouteSummary[];
|
|
317
|
+
resolved_wallet_address: string | null;
|
|
318
|
+
payout_failure_code: string | null;
|
|
319
|
+
message: string | null;
|
|
320
|
+
next_actions: Array<{
|
|
321
|
+
type: string;
|
|
322
|
+
method: string;
|
|
323
|
+
path: string;
|
|
324
|
+
auth: string;
|
|
325
|
+
why: string;
|
|
326
|
+
}>;
|
|
327
|
+
}
|
|
267
328
|
export interface BillingImplications {
|
|
268
|
-
|
|
269
|
-
|
|
329
|
+
from_org_id: string | null;
|
|
330
|
+
target_org_id: string | null;
|
|
270
331
|
tier: string | null;
|
|
271
332
|
secrets_count: number;
|
|
272
333
|
functions_count: number;
|
|
273
334
|
custom_domains_count: number;
|
|
274
335
|
}
|
|
275
336
|
/**
|
|
276
|
-
* The sender-retained-membership offer block on an email transfer preview
|
|
277
|
-
*
|
|
278
|
-
*
|
|
279
|
-
* (`"
|
|
337
|
+
* The sender-retained-membership offer block on an email transfer preview,
|
|
338
|
+
* or `null` when the sender requested no retention. `accept_field` names the
|
|
339
|
+
* accept body field the recipient sets to accept
|
|
340
|
+
* (`"accept_retained_member"`).
|
|
280
341
|
*/
|
|
281
|
-
export interface
|
|
342
|
+
export interface RetainMemberPreview {
|
|
282
343
|
principal_id: string;
|
|
283
344
|
role: "developer";
|
|
284
345
|
sender_label: string;
|
|
@@ -289,8 +350,8 @@ export interface RetainCollaboratorPreview {
|
|
|
289
350
|
}
|
|
290
351
|
/**
|
|
291
352
|
* Kind-agnostic preview document. Wallet-identity fields are `null` on email
|
|
292
|
-
* and org rows; `to_email` and `
|
|
293
|
-
* rows, while org rows carry `to_org_id`
|
|
353
|
+
* and org rows; `to_email` and `retain_member` are populated on email
|
|
354
|
+
* rows, while org rows carry `to_org_id` when returned.
|
|
294
355
|
*/
|
|
295
356
|
export interface ProjectTransferPreview {
|
|
296
357
|
transfer_id: string;
|
|
@@ -306,8 +367,6 @@ export interface ProjectTransferPreview {
|
|
|
306
367
|
to_email?: string;
|
|
307
368
|
/** Org rows only (future non-same-actor org transfers). */
|
|
308
369
|
to_org_id?: string;
|
|
309
|
-
/** Org rows only (canonical gateway field when present). */
|
|
310
|
-
to_organization_id?: string;
|
|
311
370
|
billing_policy: TransferBillingPolicy;
|
|
312
371
|
message: string | null;
|
|
313
372
|
initiated_at: string;
|
|
@@ -324,8 +383,10 @@ export interface ProjectTransferPreview {
|
|
|
324
383
|
signers: SignerPreview[];
|
|
325
384
|
github_repo_note: string;
|
|
326
385
|
billing_implications: BillingImplications;
|
|
327
|
-
/**
|
|
328
|
-
|
|
386
|
+
/** Whether the receiving org can take priced-route payouts after the transfer. */
|
|
387
|
+
priced_route_payout?: RecipientPricedRoutePayoutCheck;
|
|
388
|
+
/** Sender-retained-membership offer (email rows), or `null` when none was requested. */
|
|
389
|
+
retain_member?: RetainMemberPreview | null;
|
|
329
390
|
initiated_by?: OperationActorSnapshot | null;
|
|
330
391
|
source_organization?: {
|
|
331
392
|
org_id: string;
|
|
@@ -335,38 +396,16 @@ export interface ProjectTransferPreview {
|
|
|
335
396
|
} | null;
|
|
336
397
|
recipient_principal?: PrincipalRepresentation | null;
|
|
337
398
|
}
|
|
338
|
-
/**
|
|
339
|
-
export interface
|
|
340
|
-
/** Org
|
|
341
|
-
|
|
342
|
-
/**
|
|
343
|
-
* Accept the sender's v1.91 retained-`developer`-membership offer (see the
|
|
344
|
-
* preview's `retain_collaborator` block). Only an explicit `true`
|
|
345
|
-
* materializes the membership in the new org; omitting it (the default) is a
|
|
346
|
-
* full severance.
|
|
347
|
-
*/
|
|
348
|
-
acceptRetainedCollaborator?: boolean;
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* Result of {@link Transfers.claim}. Symmetric with wallet {@link Transfers.accept}:
|
|
352
|
-
* the email completion returns the new owner's project keys
|
|
353
|
-
* (`project-transfer-claim-credentials`), and `claim` persists them to the
|
|
354
|
-
* keystore so the claimant can operate the project immediately.
|
|
355
|
-
*/
|
|
356
|
-
export interface ClaimTransferResult {
|
|
357
|
-
status: "accepted";
|
|
358
|
-
project_id: string;
|
|
359
|
-
to_organization_id: string;
|
|
360
|
-
created_new_org: boolean;
|
|
399
|
+
/** Options to {@link Transfers.accept}; both fields apply to EMAIL-addressed rows only. */
|
|
400
|
+
export interface AcceptTransferOptions {
|
|
401
|
+
/** Org to receive the project. Omit to create a brand-new wallet-less org. */
|
|
402
|
+
orgId?: string;
|
|
361
403
|
/**
|
|
362
|
-
*
|
|
363
|
-
*
|
|
404
|
+
* Accept the sender's retained-`developer`-membership offer (see the
|
|
405
|
+
* preview's `retain_member` block). Only an explicit `true` materializes the
|
|
406
|
+
* membership in the new org; omitting it (the default) is a full severance.
|
|
364
407
|
*/
|
|
365
|
-
|
|
366
|
-
/** New owner's project anon key (stateless `project_id`-derived JWT). `claim` persists it. */
|
|
367
|
-
anon_key: string;
|
|
368
|
-
/** New owner's project service key (stateless `project_id`-derived JWT). Full project access; persisted on claim. */
|
|
369
|
-
service_key: string;
|
|
408
|
+
acceptRetainedMember?: boolean;
|
|
370
409
|
}
|
|
371
410
|
export declare class Transfers {
|
|
372
411
|
private readonly client;
|
|
@@ -376,7 +415,7 @@ export declare class Transfers {
|
|
|
376
415
|
* (`toEmail`), OR an owned org (`toOrgId`), exactly one. Caller must
|
|
377
416
|
* currently own/admin `projectId` (gateway re-reads owner from DB, not cache).
|
|
378
417
|
* Wallet/email recipients create a `pending` row with a 72h expiry and freeze
|
|
379
|
-
* owner-side mutations until accepted/
|
|
418
|
+
* owner-side mutations until accepted/cancelled/expired. The first
|
|
380
419
|
* org-recipient gateway release is same-actor only and completes immediately.
|
|
381
420
|
*/
|
|
382
421
|
initiate(input: InitiateWalletTransferInput): Promise<InitiateTransferResult>;
|
|
@@ -388,26 +427,21 @@ export declare class Transfers {
|
|
|
388
427
|
* principal, or offering-org member); other callers receive 403. Preview
|
|
389
428
|
* lists secret NAMES (not values), custom domains, functions, CI bindings
|
|
390
429
|
* that will be revoked at completion, the billing implications, and — on
|
|
391
|
-
* email rows — the `
|
|
430
|
+
* email rows — the `retain_member` offer.
|
|
392
431
|
*/
|
|
393
432
|
preview(transferId: string): Promise<ProjectTransferPreview>;
|
|
394
433
|
/**
|
|
395
|
-
* Accept an incoming
|
|
396
|
-
*
|
|
397
|
-
*
|
|
398
|
-
*
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
*
|
|
403
|
-
*
|
|
404
|
-
* of {@link Transfers.accept}) and returns the new owner's project keys, which
|
|
405
|
-
* `claim` persists to the keystore — symmetric with `accept` — so the claimant can operate the
|
|
406
|
-
* project immediately. Note the claim auth model is principal-based (a
|
|
407
|
-
* control-plane session or a verified-email SIWX match), so — unlike `accept`
|
|
408
|
-
* — a wallet is not assumed to be present.
|
|
434
|
+
* Accept an incoming transfer — the ONE completion, whatever the row's
|
|
435
|
+
* address. A wallet-addressed row is accepted by the `to_wallet`'s SIWX
|
|
436
|
+
* signature; an email-addressed row by a principal (sign-in session or
|
|
437
|
+
* SIWX) whose verified email matches, into an org it owns (`orgId`) or,
|
|
438
|
+
* omitted, a newly created wallet-less org. Both paths run the same atomic
|
|
439
|
+
* transaction: ownership flip, grant/CI revoke, notification enqueue, the
|
|
440
|
+
* persistent `secrets_rotation_advised` advisory, and an audit row. Both
|
|
441
|
+
* return the new owner's project keys, which `accept` persists to the
|
|
442
|
+
* keystore so the new owner can operate the project immediately.
|
|
409
443
|
*/
|
|
410
|
-
|
|
444
|
+
accept(transferId: string, opts?: AcceptTransferOptions): Promise<AcceptTransferResult>;
|
|
411
445
|
/**
|
|
412
446
|
* Cancel a pending transfer of any kind. The caller must be authorized for
|
|
413
447
|
* the row's kind (a wallet signer, or an owner/admin of the offering org /
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfers.d.ts","sourceRoot":"","sources":["../../src/namespaces/transfers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"transfers.d.ts","sourceRoot":"","sources":["../../src/namespaces/transfers.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Exposed as `r.admin.transfers.*`. Project transfer is ONE capability,
|
|
6
6
|
* body-discriminated by recipient kind: a wallet recipient (`toWallet`, SIWX
|
|
7
|
-
* bilateral signing), an email recipient (`toEmail`, the recipient
|
|
7
|
+
* bilateral signing), an email recipient (`toEmail`, the recipient accepts into
|
|
8
8
|
* an org), or an owned org recipient (`toOrgId`, same-actor org move). All ride
|
|
9
9
|
* the same `/transfers` surface — there is no separate `/handoffs` noun (the
|
|
10
10
|
* gateway removed it in `unify-project-transfer-surface`).
|
|
@@ -14,16 +14,19 @@
|
|
|
14
14
|
* GET /agent/v1/transfers/incoming — inbox (pending kinds, unioned)
|
|
15
15
|
* GET /agent/v1/transfers/outgoing — outbox (pending kinds, unioned)
|
|
16
16
|
* GET /agent/v1/transfers/:transfer_id — preview (kind-agnostic)
|
|
17
|
-
* POST /agent/v1/transfers/:transfer_id/accept —
|
|
18
|
-
*
|
|
17
|
+
* POST /agent/v1/transfers/:transfer_id/accept — the ONE completion; the row's recipient kind
|
|
18
|
+
* picks the credential (wallet: to_wallet's SIWX;
|
|
19
|
+
* email: a principal whose verified email matches,
|
|
20
|
+
* body { org_id?, accept_retained_member? })
|
|
19
21
|
* POST /agent/v1/transfers/:transfer_id/cancel — cancel (kind-agnostic)
|
|
20
22
|
*
|
|
21
23
|
* Owner-side mutations against a project with a pending transfer return
|
|
22
24
|
* 409 `PROJECT_HAS_PENDING_TRANSFER`. The SDK kernel surfaces that as
|
|
23
|
-
* {@link TransferFreezeError} so agents can guide the user to cancel.
|
|
24
|
-
* the wrong
|
|
25
|
-
* 409 `WRONG_COMPLETION_FOR_TRANSFER_KIND`; the
|
|
26
|
-
*
|
|
25
|
+
* {@link TransferFreezeError} so agents can guide the user to cancel. Accepting
|
|
26
|
+
* with the wrong credential for a row's kind (e.g. a wallet signature on an
|
|
27
|
+
* email-addressed row) returns 409 `WRONG_COMPLETION_FOR_TRANSFER_KIND`; the
|
|
28
|
+
* thrown error exposes an `accept_transfer` next action naming the credential
|
|
29
|
+
* the row needs, on the SAME `transfer_id`.
|
|
27
30
|
*/
|
|
28
31
|
import { LocalError } from "../errors.js";
|
|
29
32
|
// ─── Class ───────────────────────────────────────────────────────────────────
|
|
@@ -47,7 +50,7 @@ export class Transfers {
|
|
|
47
50
|
if (hasOrg) {
|
|
48
51
|
rejectDefinedField(input, "billingPolicy", "org");
|
|
49
52
|
rejectDefinedField(input, "kysignedRecordId", "org");
|
|
50
|
-
rejectDefinedField(input, "
|
|
53
|
+
rejectDefinedField(input, "retainMember", "org");
|
|
51
54
|
const body = { to_org_id: toOrgId };
|
|
52
55
|
if (input.message !== undefined)
|
|
53
56
|
body.message = input.message;
|
|
@@ -65,9 +68,9 @@ export class Transfers {
|
|
|
65
68
|
const body = { to_email: toEmail };
|
|
66
69
|
if (input.message !== undefined)
|
|
67
70
|
body.message = input.message;
|
|
68
|
-
const retain = input.
|
|
71
|
+
const retain = input.retainMember;
|
|
69
72
|
if (retain !== undefined)
|
|
70
|
-
body.
|
|
73
|
+
body.retain_member = retain;
|
|
71
74
|
return this.client.request(path, {
|
|
72
75
|
method: "POST",
|
|
73
76
|
body,
|
|
@@ -75,7 +78,7 @@ export class Transfers {
|
|
|
75
78
|
});
|
|
76
79
|
}
|
|
77
80
|
const w = input;
|
|
78
|
-
rejectDefinedField(w, "
|
|
81
|
+
rejectDefinedField(w, "retainMember", "wallet");
|
|
79
82
|
const body = { to_wallet: toWallet };
|
|
80
83
|
if (w.billingPolicy !== undefined)
|
|
81
84
|
body.billing_policy = w.billingPolicy;
|
|
@@ -95,46 +98,36 @@ export class Transfers {
|
|
|
95
98
|
* principal, or offering-org member); other callers receive 403. Preview
|
|
96
99
|
* lists secret NAMES (not values), custom domains, functions, CI bindings
|
|
97
100
|
* that will be revoked at completion, the billing implications, and — on
|
|
98
|
-
* email rows — the `
|
|
101
|
+
* email rows — the `retain_member` offer.
|
|
99
102
|
*/
|
|
100
103
|
async preview(transferId) {
|
|
101
104
|
return this.client.request(`/agent/v1/transfers/${encodeURIComponent(transferId)}`, { context: "previewing project transfer" });
|
|
102
105
|
}
|
|
103
106
|
/**
|
|
104
|
-
* Accept an incoming
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
107
|
+
* Accept an incoming transfer — the ONE completion, whatever the row's
|
|
108
|
+
* address. A wallet-addressed row is accepted by the `to_wallet`'s SIWX
|
|
109
|
+
* signature; an email-addressed row by a principal (sign-in session or
|
|
110
|
+
* SIWX) whose verified email matches, into an org it owns (`orgId`) or,
|
|
111
|
+
* omitted, a newly created wallet-less org. Both paths run the same atomic
|
|
112
|
+
* transaction: ownership flip, grant/CI revoke, notification enqueue, the
|
|
113
|
+
* persistent `secrets_rotation_advised` advisory, and an audit row. Both
|
|
114
|
+
* return the new owner's project keys, which `accept` persists to the
|
|
115
|
+
* keystore so the new owner can operate the project immediately.
|
|
108
116
|
*/
|
|
109
|
-
async accept(transferId) {
|
|
117
|
+
async accept(transferId, opts = {}) {
|
|
118
|
+
const body = {};
|
|
119
|
+
if (opts.orgId !== undefined)
|
|
120
|
+
body.org_id = opts.orgId;
|
|
121
|
+
if (opts.acceptRetainedMember !== undefined)
|
|
122
|
+
body.accept_retained_member = opts.acceptRetainedMember;
|
|
110
123
|
const result = await this.client.request(`/agent/v1/transfers/${encodeURIComponent(transferId)}/accept`, {
|
|
111
124
|
method: "POST",
|
|
112
|
-
body
|
|
125
|
+
body,
|
|
113
126
|
context: "accepting project transfer",
|
|
114
127
|
});
|
|
115
128
|
await persistProjectKeys(this.client, result);
|
|
116
129
|
return result;
|
|
117
130
|
}
|
|
118
|
-
/**
|
|
119
|
-
* Claim an incoming EMAIL transfer into an org. Omit `organizationId` to claim
|
|
120
|
-
* into a brand-new org. The claim atomically flips ownership (the email analog
|
|
121
|
-
* of {@link Transfers.accept}) and returns the new owner's project keys, which
|
|
122
|
-
* `claim` persists to the keystore — symmetric with `accept` — so the claimant can operate the
|
|
123
|
-
* project immediately. Note the claim auth model is principal-based (a
|
|
124
|
-
* control-plane session or a verified-email SIWX match), so — unlike `accept`
|
|
125
|
-
* — a wallet is not assumed to be present.
|
|
126
|
-
*/
|
|
127
|
-
async claim(transferId, opts = {}) {
|
|
128
|
-
const body = {};
|
|
129
|
-
if (opts.organizationId !== undefined)
|
|
130
|
-
body.org_id = opts.organizationId;
|
|
131
|
-
if (opts.acceptRetainedCollaborator !== undefined) {
|
|
132
|
-
body.accept_retained_collaborator = opts.acceptRetainedCollaborator;
|
|
133
|
-
}
|
|
134
|
-
const result = await this.client.request(`/agent/v1/transfers/${encodeURIComponent(transferId)}/claim`, { method: "POST", body, context: "claiming project transfer" });
|
|
135
|
-
await persistProjectKeys(this.client, result);
|
|
136
|
-
return result;
|
|
137
|
-
}
|
|
138
131
|
/**
|
|
139
132
|
* Cancel a pending transfer of any kind. The caller must be authorized for
|
|
140
133
|
* the row's kind (a wallet signer, or an owner/admin of the offering org /
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfers.js","sourceRoot":"","sources":["../../src/namespaces/transfers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"transfers.js","sourceRoot":"","sources":["../../src/namespaces/transfers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `vouchers` namespace — redeem a promo code
|
|
2
|
+
* `vouchers` namespace — redeem a promo code into the organization's allowance.
|
|
3
3
|
*
|
|
4
|
-
* A promo code
|
|
5
|
-
*
|
|
6
|
-
* it with no on-chain payment.
|
|
4
|
+
* A promo code adds to your organization's allowance, which spends like any
|
|
5
|
+
* other allowance: a tier purchase settles from it with no on-chain payment.
|
|
7
6
|
*
|
|
8
7
|
* Two properties make this safe to call from anywhere in an agent's lifecycle:
|
|
9
8
|
*
|
|
@@ -11,7 +10,7 @@
|
|
|
11
10
|
* call a brand-new wallet makes (the organization is provisioned on demand),
|
|
12
11
|
* or long after `run402 init`. There is no init-before-redeem requirement.
|
|
13
12
|
* - **Retrying is safe.** A repeat by the same organization returns the ORIGINAL
|
|
14
|
-
* result with `already_redeemed: true` and never
|
|
13
|
+
* result with `already_redeemed: true` and never adds twice, so a call that
|
|
15
14
|
* times out client-side can simply be re-issued.
|
|
16
15
|
*
|
|
17
16
|
* This namespace is deliberately thin and semantically blind: it forwards an
|
|
@@ -22,7 +21,7 @@
|
|
|
22
21
|
import type { Client } from "../kernel.js";
|
|
23
22
|
/**
|
|
24
23
|
* A follow-up the gateway suggests after a redemption — most often buying the
|
|
25
|
-
* tier the new
|
|
24
|
+
* tier the new allowance now covers.
|
|
26
25
|
*/
|
|
27
26
|
export interface VoucherNextAction {
|
|
28
27
|
type: string;
|
|
@@ -35,20 +34,20 @@ export interface VoucherNextAction {
|
|
|
35
34
|
}
|
|
36
35
|
export interface RedeemVoucherResult {
|
|
37
36
|
voucher_id: string;
|
|
38
|
-
/**
|
|
37
|
+
/** Amount this voucher added to the allowance. */
|
|
39
38
|
amount_usd_micros: number;
|
|
40
|
-
/** The organization's
|
|
39
|
+
/** The organization's allowance AFTER the redemption. */
|
|
41
40
|
balance_usd_micros: number;
|
|
42
41
|
organization_id: string;
|
|
43
42
|
redeemed_at: string;
|
|
44
43
|
/**
|
|
45
44
|
* True when THIS organization had already redeemed this code. The original
|
|
46
|
-
* result is returned unchanged and
|
|
45
|
+
* result is returned unchanged and nothing was added twice — a replay is
|
|
47
46
|
* reported honestly rather than dressed up as a fresh redemption.
|
|
48
47
|
*/
|
|
49
48
|
already_redeemed: boolean;
|
|
50
49
|
/**
|
|
51
|
-
* The lifetime promo-
|
|
50
|
+
* The lifetime promo-allowance ceiling that applied: what this organization may
|
|
52
51
|
* ever redeem from THIS voucher's issuer, in total. A code from a different
|
|
53
52
|
* issuer (a launch voucher handed out by the platform) has its own ceiling.
|
|
54
53
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vouchers.d.ts","sourceRoot":"","sources":["../../src/namespaces/vouchers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"vouchers.d.ts","sourceRoot":"","sources":["../../src/namespaces/vouchers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yDAAyD;IACzD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,iCAAiC,EAAE,MAAM,CAAC;IAC1C,YAAY,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED,qBAAa,QAAQ;IAIP,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,+BAA+B;IAC/B,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;gBAEvC,MAAM,EAAE,MAAM;IAI3C;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAQzD"}
|