run402-mcp 3.3.3 → 3.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +9 -9
- package/dist/index.js.map +1 -1
- package/dist/tools/jobs.d.ts +2 -2
- package/dist/tools/jobs.d.ts.map +1 -1
- package/dist/tools/jobs.js +2 -4
- package/dist/tools/jobs.js.map +1 -1
- package/dist/tools/orgs.d.ts.map +1 -1
- package/dist/tools/orgs.js +22 -6
- package/dist/tools/orgs.js.map +1 -1
- package/dist/tools/transfers.d.ts +9 -5
- package/dist/tools/transfers.d.ts.map +1 -1
- package/dist/tools/transfers.js +66 -11
- package/dist/tools/transfers.js.map +1 -1
- package/package.json +1 -1
- package/sdk/README.md +10 -1
- package/sdk/dist/namespaces/admin.d.ts +3 -3
- package/sdk/dist/namespaces/admin.js +3 -3
- package/sdk/dist/namespaces/functions.d.ts.map +1 -1
- package/sdk/dist/namespaces/functions.js +6 -2
- package/sdk/dist/namespaces/functions.js.map +1 -1
- package/sdk/dist/namespaces/jobs.d.ts +5 -2
- package/sdk/dist/namespaces/jobs.d.ts.map +1 -1
- package/sdk/dist/namespaces/jobs.js.map +1 -1
- package/sdk/dist/namespaces/operator.d.ts +3 -3
- package/sdk/dist/namespaces/operator.d.ts.map +1 -1
- package/sdk/dist/namespaces/org.d.ts +6 -4
- package/sdk/dist/namespaces/org.d.ts.map +1 -1
- package/sdk/dist/namespaces/org.js +6 -4
- package/sdk/dist/namespaces/org.js.map +1 -1
- package/sdk/dist/namespaces/org.types.d.ts +11 -4
- package/sdk/dist/namespaces/org.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/transfers.d.ts +85 -22
- package/sdk/dist/namespaces/transfers.d.ts.map +1 -1
- package/sdk/dist/namespaces/transfers.js +56 -41
- package/sdk/dist/namespaces/transfers.js.map +1 -1
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `transfers` namespace — the unified project-transfer noun (v1.93
|
|
2
|
+
* `transfers` namespace — the unified project-transfer noun (v1.93+;
|
|
3
|
+
* owned-org recipient shape v1.96+).
|
|
3
4
|
*
|
|
4
5
|
* Exposed as `r.admin.transfers.*`. Project transfer is ONE capability,
|
|
5
6
|
* body-discriminated by recipient kind: a wallet recipient (`toWallet`, SIWX
|
|
6
|
-
* bilateral signing)
|
|
7
|
-
*
|
|
8
|
-
* `/
|
|
7
|
+
* bilateral signing), an email recipient (`toEmail`, the recipient claims into
|
|
8
|
+
* an org), or an owned org recipient (`toOrgId`, same-actor org move). All ride
|
|
9
|
+
* the same `/transfers` surface — there is no separate `/handoffs` noun (the
|
|
10
|
+
* gateway removed it in `unify-project-transfer-surface`).
|
|
9
11
|
*
|
|
10
12
|
* Gateway endpoints:
|
|
11
|
-
* POST /projects/v1/:project_id/transfers — initiate; body { to_wallet } XOR { to_email }
|
|
12
|
-
* GET /agent/v1/transfers/incoming — inbox (
|
|
13
|
-
* GET /agent/v1/transfers/outgoing — outbox (
|
|
13
|
+
* POST /projects/v1/:project_id/transfers — initiate; body { to_wallet } XOR { to_email } XOR { to_org_id }
|
|
14
|
+
* GET /agent/v1/transfers/incoming — inbox (pending kinds, unioned)
|
|
15
|
+
* GET /agent/v1/transfers/outgoing — outbox (pending kinds, unioned)
|
|
14
16
|
* GET /agent/v1/transfers/:transfer_id — preview (kind-agnostic)
|
|
15
17
|
* POST /agent/v1/transfers/:transfer_id/accept — WALLET completion (recipient SIWX-signs)
|
|
16
18
|
* POST /agent/v1/transfers/:transfer_id/claim — EMAIL completion (recipient claims into an org)
|
|
@@ -29,7 +31,7 @@ export type TransferBillingPolicy = "migrate";
|
|
|
29
31
|
export type TransferStatus = "pending" | "accepted" | "cancelled" | "expired";
|
|
30
32
|
export type TransferCancelledBy = "from_wallet" | "to_wallet" | "system";
|
|
31
33
|
/** Which kind of recipient a transfer row is addressed to. */
|
|
32
|
-
export type RecipientKind = "wallet" | "email";
|
|
34
|
+
export type RecipientKind = "wallet" | "email" | "org";
|
|
33
35
|
/** Initiate a transfer addressed to a wallet (two-party SIWX completion via `accept`). */
|
|
34
36
|
export interface InitiateWalletTransferInput {
|
|
35
37
|
/** Project id to transfer. Caller must currently own/admin it (gateway re-checks against fresh DB, not cache). */
|
|
@@ -38,6 +40,8 @@ export interface InitiateWalletTransferInput {
|
|
|
38
40
|
toWallet: string;
|
|
39
41
|
/** Mutually exclusive with {@link InitiateWalletTransferInput.toWallet}; not allowed on the wallet path. */
|
|
40
42
|
toEmail?: never;
|
|
43
|
+
/** Mutually exclusive with {@link InitiateWalletTransferInput.toWallet}; not allowed on the wallet path. */
|
|
44
|
+
toOrgId?: never;
|
|
41
45
|
/**
|
|
42
46
|
* Billing policy. Defaults to `"migrate"`. Phase 1A only supports
|
|
43
47
|
* `"migrate"`; future phases may add `"inherit"` as a separate spec.
|
|
@@ -58,6 +62,8 @@ export interface InitiateEmailTransferInput {
|
|
|
58
62
|
toEmail: string;
|
|
59
63
|
/** Mutually exclusive with {@link InitiateEmailTransferInput.toEmail}; not allowed on the email path. */
|
|
60
64
|
toWallet?: never;
|
|
65
|
+
/** Mutually exclusive with {@link InitiateEmailTransferInput.toEmail}; not allowed on the email path. */
|
|
66
|
+
toOrgId?: never;
|
|
61
67
|
/** Optional note shown to the recipient (HTML-escaped server-side). */
|
|
62
68
|
message?: string;
|
|
63
69
|
/**
|
|
@@ -76,8 +82,30 @@ export interface InitiateEmailTransferInput {
|
|
|
76
82
|
/** KySigned record id is wallet-path only; not allowed on the email path. */
|
|
77
83
|
kysignedRecordId?: never;
|
|
78
84
|
}
|
|
79
|
-
/**
|
|
80
|
-
export
|
|
85
|
+
/** Initiate an immediate move to an organization the caller already owns. */
|
|
86
|
+
export interface InitiateOrgTransferInput {
|
|
87
|
+
/** Project id to transfer. Caller must be an active owner of the source org. */
|
|
88
|
+
projectId: string;
|
|
89
|
+
/**
|
|
90
|
+
* Destination organization id. The first gateway release is same-actor only:
|
|
91
|
+
* caller must be an active owner of both source and destination orgs.
|
|
92
|
+
*/
|
|
93
|
+
toOrgId: string;
|
|
94
|
+
/** Mutually exclusive with {@link InitiateOrgTransferInput.toOrgId}; not allowed on the org path. */
|
|
95
|
+
toWallet?: never;
|
|
96
|
+
/** Mutually exclusive with {@link InitiateOrgTransferInput.toOrgId}; not allowed on the org path. */
|
|
97
|
+
toEmail?: never;
|
|
98
|
+
/** Optional free-text note recorded with the transfer audit row. */
|
|
99
|
+
message?: string;
|
|
100
|
+
/** Billing policy is wallet-path only; not allowed on the org path. */
|
|
101
|
+
billingPolicy?: never;
|
|
102
|
+
/** KySigned record id is wallet-path only; not allowed on the org path. */
|
|
103
|
+
kysignedRecordId?: never;
|
|
104
|
+
/** Retention is an email-only opt-in; not allowed on the org path. */
|
|
105
|
+
retainCollaborator?: never;
|
|
106
|
+
}
|
|
107
|
+
/** Inputs to `r.admin.transfers.initiate(...)` — wallet XOR email XOR org. */
|
|
108
|
+
export type InitiateTransferInput = InitiateWalletTransferInput | InitiateEmailTransferInput | InitiateOrgTransferInput;
|
|
81
109
|
/** Result of a wallet-addressed `initiate`. */
|
|
82
110
|
export interface InitiateTransferResult {
|
|
83
111
|
transfer_id: string;
|
|
@@ -100,6 +128,29 @@ export interface InitiateEmailTransferResult {
|
|
|
100
128
|
to_email: string;
|
|
101
129
|
expires_at: string;
|
|
102
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Result of an owned-org `initiate`. Same-actor org moves complete
|
|
133
|
+
* synchronously in the first gateway release and return project keys so the
|
|
134
|
+
* caller can continue operating the project without a follow-up fetch.
|
|
135
|
+
*/
|
|
136
|
+
export interface InitiateOrgTransferResult {
|
|
137
|
+
status: "accepted";
|
|
138
|
+
project_id: string;
|
|
139
|
+
to_organization_id: string;
|
|
140
|
+
/** Echo of the requested org id when a gateway chooses the shorter wire key. */
|
|
141
|
+
to_org_id?: string;
|
|
142
|
+
/** Present when the gateway materializes an audit transfer row. */
|
|
143
|
+
transfer_id?: string;
|
|
144
|
+
/** Present when the gateway returns the completion timestamp inline. */
|
|
145
|
+
completed_at?: string;
|
|
146
|
+
anon_key: string;
|
|
147
|
+
service_key: string;
|
|
148
|
+
secrets_rotation_advised?: true;
|
|
149
|
+
secret_names_inherited?: string[];
|
|
150
|
+
secrets_count_inherited?: number;
|
|
151
|
+
github_repo_note?: string;
|
|
152
|
+
[key: string]: unknown;
|
|
153
|
+
}
|
|
103
154
|
export interface AcceptTransferResult {
|
|
104
155
|
project_id: string;
|
|
105
156
|
from_wallet: string;
|
|
@@ -126,9 +177,10 @@ export interface CancelTransferResult {
|
|
|
126
177
|
}
|
|
127
178
|
/**
|
|
128
179
|
* Summary row used in `/agent/v1/transfers/incoming` and `/outgoing`. The list
|
|
129
|
-
* is kind-agnostic: `recipient_kind` discriminates wallet
|
|
130
|
-
* rows carry `from_wallet`/`to_wallet`; email rows carry
|
|
131
|
-
* `from_organization_id
|
|
180
|
+
* is kind-agnostic: `recipient_kind` discriminates wallet, email, and future
|
|
181
|
+
* org rows. Wallet rows carry `from_wallet`/`to_wallet`; email rows carry
|
|
182
|
+
* `to_email` + `from_organization_id`; future org rows carry `to_org_id` /
|
|
183
|
+
* `to_organization_id`.
|
|
132
184
|
*/
|
|
133
185
|
export interface TransferSummary {
|
|
134
186
|
transfer_id: string;
|
|
@@ -152,6 +204,10 @@ export interface TransferSummary {
|
|
|
152
204
|
to_email?: string;
|
|
153
205
|
/** Email rows only. */
|
|
154
206
|
from_organization_id?: string | null;
|
|
207
|
+
/** Org rows only (future non-same-actor org transfers). */
|
|
208
|
+
to_org_id?: string;
|
|
209
|
+
/** Org rows only (canonical gateway field when present). */
|
|
210
|
+
to_organization_id?: string;
|
|
155
211
|
}
|
|
156
212
|
export interface ListTransfersOptions {
|
|
157
213
|
/** Page size; defaults to 50 on the gateway. */
|
|
@@ -220,7 +276,8 @@ export interface RetainCollaboratorPreview {
|
|
|
220
276
|
}
|
|
221
277
|
/**
|
|
222
278
|
* Kind-agnostic preview document. Wallet-identity fields are `null` on email
|
|
223
|
-
* rows; `to_email` and `retain_collaborator` are populated on email
|
|
279
|
+
* and org rows; `to_email` and `retain_collaborator` are populated on email
|
|
280
|
+
* rows, while org rows carry `to_org_id` / `to_organization_id` when returned.
|
|
224
281
|
*/
|
|
225
282
|
export interface ProjectTransferPreview {
|
|
226
283
|
transfer_id: string;
|
|
@@ -234,6 +291,10 @@ export interface ProjectTransferPreview {
|
|
|
234
291
|
to_wallet_display: string | null;
|
|
235
292
|
/** Email rows only. */
|
|
236
293
|
to_email?: string;
|
|
294
|
+
/** Org rows only (future non-same-actor org transfers). */
|
|
295
|
+
to_org_id?: string;
|
|
296
|
+
/** Org rows only (canonical gateway field when present). */
|
|
297
|
+
to_organization_id?: string;
|
|
237
298
|
billing_policy: TransferBillingPolicy;
|
|
238
299
|
message: string | null;
|
|
239
300
|
initiated_at: string;
|
|
@@ -290,14 +351,16 @@ export declare class Transfers {
|
|
|
290
351
|
private readonly client;
|
|
291
352
|
constructor(client: Client);
|
|
292
353
|
/**
|
|
293
|
-
* Initiate a project transfer — addressed to a wallet (`toWallet`)
|
|
294
|
-
* (`toEmail`), exactly one. Caller must
|
|
295
|
-
* (gateway re-reads owner from DB, not cache).
|
|
296
|
-
*
|
|
297
|
-
*
|
|
354
|
+
* Initiate a project transfer — addressed to a wallet (`toWallet`), an email
|
|
355
|
+
* (`toEmail`), OR an owned org (`toOrgId`), exactly one. Caller must
|
|
356
|
+
* currently own/admin `projectId` (gateway re-reads owner from DB, not cache).
|
|
357
|
+
* Wallet/email recipients create a `pending` row with a 72h expiry and freeze
|
|
358
|
+
* owner-side mutations until accepted/claimed/cancelled/expired. The first
|
|
359
|
+
* org-recipient gateway release is same-actor only and completes immediately.
|
|
298
360
|
*/
|
|
299
361
|
initiate(input: InitiateWalletTransferInput): Promise<InitiateTransferResult>;
|
|
300
362
|
initiate(input: InitiateEmailTransferInput): Promise<InitiateEmailTransferResult>;
|
|
363
|
+
initiate(input: InitiateOrgTransferInput): Promise<InitiateOrgTransferResult>;
|
|
301
364
|
/**
|
|
302
365
|
* Fetch the preview document for a pending or terminal transfer of either
|
|
303
366
|
* kind. The caller must be a party to it (wallet signer, addressed-email
|
|
@@ -326,15 +389,15 @@ export declare class Transfers {
|
|
|
326
389
|
*/
|
|
327
390
|
claim(transferId: string, opts?: ClaimTransferInput): Promise<ClaimTransferResult>;
|
|
328
391
|
/**
|
|
329
|
-
* Cancel a pending transfer of
|
|
392
|
+
* Cancel a pending transfer of any kind. The caller must be authorized for
|
|
330
393
|
* the row's kind (a wallet signer, or an owner/admin of the offering org /
|
|
331
394
|
* the addressed-email principal). Already-processed transfers return 409
|
|
332
395
|
* `TRANSFER_ALREADY_PROCESSED`.
|
|
333
396
|
*/
|
|
334
397
|
cancel(transferId: string, reason?: string): Promise<CancelTransferResult>;
|
|
335
|
-
/** Pending transfers OFFERED TO the caller —
|
|
398
|
+
/** Pending transfers OFFERED TO the caller — wallet/email/future org rows, unioned. */
|
|
336
399
|
listIncoming(opts?: ListTransfersOptions): Promise<ListTransfersResult>;
|
|
337
|
-
/** Pending transfers INITIATED BY the caller —
|
|
400
|
+
/** Pending transfers INITIATED BY the caller — wallet/email/future org rows, unioned. */
|
|
338
401
|
listOutgoing(opts?: ListTransfersOptions): Promise<ListTransfersResult>;
|
|
339
402
|
}
|
|
340
403
|
//# sourceMappingURL=transfers.d.ts.map
|
|
@@ -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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"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `transfers` namespace — the unified project-transfer noun (v1.93
|
|
2
|
+
* `transfers` namespace — the unified project-transfer noun (v1.93+;
|
|
3
|
+
* owned-org recipient shape v1.96+).
|
|
3
4
|
*
|
|
4
5
|
* Exposed as `r.admin.transfers.*`. Project transfer is ONE capability,
|
|
5
6
|
* body-discriminated by recipient kind: a wallet recipient (`toWallet`, SIWX
|
|
6
|
-
* bilateral signing)
|
|
7
|
-
*
|
|
8
|
-
* `/
|
|
7
|
+
* bilateral signing), an email recipient (`toEmail`, the recipient claims into
|
|
8
|
+
* an org), or an owned org recipient (`toOrgId`, same-actor org move). All ride
|
|
9
|
+
* the same `/transfers` surface — there is no separate `/handoffs` noun (the
|
|
10
|
+
* gateway removed it in `unify-project-transfer-surface`).
|
|
9
11
|
*
|
|
10
12
|
* Gateway endpoints:
|
|
11
|
-
* POST /projects/v1/:project_id/transfers — initiate; body { to_wallet } XOR { to_email }
|
|
12
|
-
* GET /agent/v1/transfers/incoming — inbox (
|
|
13
|
-
* GET /agent/v1/transfers/outgoing — outbox (
|
|
13
|
+
* POST /projects/v1/:project_id/transfers — initiate; body { to_wallet } XOR { to_email } XOR { to_org_id }
|
|
14
|
+
* GET /agent/v1/transfers/incoming — inbox (pending kinds, unioned)
|
|
15
|
+
* GET /agent/v1/transfers/outgoing — outbox (pending kinds, unioned)
|
|
14
16
|
* GET /agent/v1/transfers/:transfer_id — preview (kind-agnostic)
|
|
15
17
|
* POST /agent/v1/transfers/:transfer_id/accept — WALLET completion (recipient SIWX-signs)
|
|
16
18
|
* POST /agent/v1/transfers/:transfer_id/claim — EMAIL completion (recipient claims into an org)
|
|
@@ -33,13 +35,33 @@ export class Transfers {
|
|
|
33
35
|
async initiate(input) {
|
|
34
36
|
const toWallet = "toWallet" in input ? input.toWallet : undefined;
|
|
35
37
|
const toEmail = "toEmail" in input ? input.toEmail : undefined;
|
|
38
|
+
const toOrgId = "toOrgId" in input ? input.toOrgId : undefined;
|
|
36
39
|
const hasWallet = typeof toWallet === "string" && toWallet.length > 0;
|
|
37
40
|
const hasEmail = typeof toEmail === "string" && toEmail.length > 0;
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
const hasOrg = typeof toOrgId === "string" && toOrgId.length > 0;
|
|
42
|
+
const recipientCount = Number(hasWallet) + Number(hasEmail) + Number(hasOrg);
|
|
43
|
+
if (recipientCount !== 1) {
|
|
44
|
+
throw new LocalError("Provide exactly one of toWallet, toEmail, or toOrgId.", "initiating project transfer", { code: "VALIDATION_ERROR", details: { fields: ["toWallet", "toEmail", "toOrgId"] } });
|
|
40
45
|
}
|
|
41
46
|
const path = `/projects/v1/${encodeURIComponent(input.projectId)}/transfers`;
|
|
47
|
+
if (hasOrg) {
|
|
48
|
+
rejectDefinedField(input, "billingPolicy", "org");
|
|
49
|
+
rejectDefinedField(input, "kysignedRecordId", "org");
|
|
50
|
+
rejectDefinedField(input, "retainCollaborator", "org");
|
|
51
|
+
const body = { to_org_id: toOrgId };
|
|
52
|
+
if (input.message !== undefined)
|
|
53
|
+
body.message = input.message;
|
|
54
|
+
const result = await this.client.request(path, {
|
|
55
|
+
method: "POST",
|
|
56
|
+
body,
|
|
57
|
+
context: "initiating project transfer",
|
|
58
|
+
});
|
|
59
|
+
await persistProjectKeys(this.client, result);
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
42
62
|
if (hasEmail) {
|
|
63
|
+
rejectDefinedField(input, "billingPolicy", "email");
|
|
64
|
+
rejectDefinedField(input, "kysignedRecordId", "email");
|
|
43
65
|
const body = { to_email: toEmail };
|
|
44
66
|
if (input.message !== undefined)
|
|
45
67
|
body.message = input.message;
|
|
@@ -53,6 +75,7 @@ export class Transfers {
|
|
|
53
75
|
});
|
|
54
76
|
}
|
|
55
77
|
const w = input;
|
|
78
|
+
rejectDefinedField(w, "retainCollaborator", "wallet");
|
|
56
79
|
const body = { to_wallet: toWallet };
|
|
57
80
|
if (w.billingPolicy !== undefined)
|
|
58
81
|
body.billing_policy = w.billingPolicy;
|
|
@@ -89,20 +112,7 @@ export class Transfers {
|
|
|
89
112
|
body: {},
|
|
90
113
|
context: "accepting project transfer",
|
|
91
114
|
});
|
|
92
|
-
|
|
93
|
-
// project immediately, mirroring `projects.provision`.
|
|
94
|
-
if (result.anon_key && result.service_key) {
|
|
95
|
-
const creds = this.client.credentials;
|
|
96
|
-
if (creds.saveProject) {
|
|
97
|
-
await creds.saveProject(result.project_id, {
|
|
98
|
-
anon_key: result.anon_key,
|
|
99
|
-
service_key: result.service_key,
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
if (creds.setActiveProject) {
|
|
103
|
-
await creds.setActiveProject(result.project_id);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
115
|
+
await persistProjectKeys(this.client, result);
|
|
106
116
|
return result;
|
|
107
117
|
}
|
|
108
118
|
/**
|
|
@@ -123,25 +133,11 @@ export class Transfers {
|
|
|
123
133
|
body.accept_retained_collaborator = opts.acceptRetainedCollaborator;
|
|
124
134
|
}
|
|
125
135
|
const result = await this.client.request(`/agent/v1/transfers/${encodeURIComponent(transferId)}/claim`, { method: "POST", body, context: "claiming project transfer" });
|
|
126
|
-
|
|
127
|
-
// immediately, mirroring `accept`. Keys are returned only after the
|
|
128
|
-
// ownership flip commits, to the authorized claimant.
|
|
129
|
-
if (result.anon_key && result.service_key) {
|
|
130
|
-
const creds = this.client.credentials;
|
|
131
|
-
if (creds.saveProject) {
|
|
132
|
-
await creds.saveProject(result.project_id, {
|
|
133
|
-
anon_key: result.anon_key,
|
|
134
|
-
service_key: result.service_key,
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
if (creds.setActiveProject) {
|
|
138
|
-
await creds.setActiveProject(result.project_id);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
136
|
+
await persistProjectKeys(this.client, result);
|
|
141
137
|
return result;
|
|
142
138
|
}
|
|
143
139
|
/**
|
|
144
|
-
* Cancel a pending transfer of
|
|
140
|
+
* Cancel a pending transfer of any kind. The caller must be authorized for
|
|
145
141
|
* the row's kind (a wallet signer, or an owner/admin of the offering org /
|
|
146
142
|
* the addressed-email principal). Already-processed transfers return 409
|
|
147
143
|
* `TRANSFER_ALREADY_PROCESSED`.
|
|
@@ -156,7 +152,7 @@ export class Transfers {
|
|
|
156
152
|
context: "cancelling project transfer",
|
|
157
153
|
});
|
|
158
154
|
}
|
|
159
|
-
/** Pending transfers OFFERED TO the caller —
|
|
155
|
+
/** Pending transfers OFFERED TO the caller — wallet/email/future org rows, unioned. */
|
|
160
156
|
async listIncoming(opts = {}) {
|
|
161
157
|
const q = buildPagination(opts);
|
|
162
158
|
const path = q ? `/agent/v1/transfers/incoming?${q}` : "/agent/v1/transfers/incoming";
|
|
@@ -164,7 +160,7 @@ export class Transfers {
|
|
|
164
160
|
context: "listing incoming transfers",
|
|
165
161
|
});
|
|
166
162
|
}
|
|
167
|
-
/** Pending transfers INITIATED BY the caller —
|
|
163
|
+
/** Pending transfers INITIATED BY the caller — wallet/email/future org rows, unioned. */
|
|
168
164
|
async listOutgoing(opts = {}) {
|
|
169
165
|
const q = buildPagination(opts);
|
|
170
166
|
const path = q ? `/agent/v1/transfers/outgoing?${q}` : "/agent/v1/transfers/outgoing";
|
|
@@ -173,6 +169,25 @@ export class Transfers {
|
|
|
173
169
|
});
|
|
174
170
|
}
|
|
175
171
|
}
|
|
172
|
+
async function persistProjectKeys(client, result) {
|
|
173
|
+
if (result.project_id && result.anon_key && result.service_key) {
|
|
174
|
+
const creds = client.credentials;
|
|
175
|
+
if (creds.saveProject) {
|
|
176
|
+
await creds.saveProject(result.project_id, {
|
|
177
|
+
anon_key: result.anon_key,
|
|
178
|
+
service_key: result.service_key,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
if (creds.setActiveProject) {
|
|
182
|
+
await creds.setActiveProject(result.project_id);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function rejectDefinedField(input, field, recipient) {
|
|
187
|
+
if (input[field] !== undefined) {
|
|
188
|
+
throw new LocalError(`${field} is not supported for ${recipient}-addressed project transfers.`, "initiating project transfer", { code: "VALIDATION_ERROR", details: { field, recipient } });
|
|
189
|
+
}
|
|
190
|
+
}
|
|
176
191
|
function buildPagination(opts) {
|
|
177
192
|
const parts = [];
|
|
178
193
|
if (opts.limit !== undefined)
|
|
@@ -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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"}
|