run402 2.19.1 → 2.21.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.
@@ -0,0 +1,199 @@
1
+ /**
2
+ * `transfers` namespace — two-party SIWX-signed project transfer (v1.59).
3
+ *
4
+ * Exposed as `r.admin.transfers.*`. Phase 1A surface: initiate (owner-only),
5
+ * preview, accept (recipient), cancel (either party), and incoming/outgoing
6
+ * inboxes. The handoff is atomic at accept time: ownership flips, CI
7
+ * bindings are revoked, secret names carry over (values are NOT visible to
8
+ * the recipient before accept), and the project is decorated with a
9
+ * persistent `secrets_rotation_advised` advisory.
10
+ *
11
+ * Gateway endpoints:
12
+ * POST /projects/v1/:project_id/transfers — A initiates
13
+ * GET /agent/v1/transfers/incoming — B's inbox
14
+ * GET /agent/v1/transfers/outgoing — A's outbox
15
+ * GET /agent/v1/transfers/:transfer_id — preview (either party)
16
+ * POST /agent/v1/transfers/:transfer_id/accept — B accepts
17
+ * POST /agent/v1/transfers/:transfer_id/cancel — either party cancels
18
+ *
19
+ * Owner-side mutations against a project with a pending transfer return
20
+ * 409 `PROJECT_HAS_PENDING_TRANSFER`. The SDK kernel surfaces that as
21
+ * {@link TransferFreezeError} so agents can guide the user to cancel.
22
+ */
23
+ import type { Client } from "../kernel.js";
24
+ /** Phase 1A only supports the `migrate` policy — B's wallet must already be on a billing account, and the project moves into it. */
25
+ export type TransferBillingPolicy = "migrate";
26
+ export type TransferStatus = "pending" | "accepted" | "cancelled" | "expired";
27
+ export type TransferCancelledBy = "from_wallet" | "to_wallet" | "system";
28
+ /** Inputs to `r.admin.transfers.initiate(...)`. */
29
+ export interface InitiateTransferInput {
30
+ /** Project id to transfer. Caller must currently own it (gateway re-checks against fresh DB, not cache). */
31
+ projectId: string;
32
+ /** Recipient wallet (any case — gateway lowercases). Must differ from the current owner. */
33
+ toWallet: string;
34
+ /**
35
+ * Billing policy. Defaults to `"migrate"`. Phase 1A only supports
36
+ * `"migrate"`; future phases may add `"inherit"` as a separate spec.
37
+ */
38
+ billingPolicy?: TransferBillingPolicy;
39
+ /** Optional free-text note shown to the recipient in the preview + emails (HTML-escaped server-side). */
40
+ message?: string;
41
+ /** Optional KySigned record id (Phase 1A: informational only, stored verbatim, not verified). */
42
+ kysignedRecordId?: string;
43
+ }
44
+ export interface InitiateTransferResult {
45
+ transfer_id: string;
46
+ expires_at: string;
47
+ project_summary: {
48
+ project_id: string;
49
+ project_name: string | null;
50
+ billing_policy: TransferBillingPolicy;
51
+ from_wallet: string;
52
+ to_wallet: string;
53
+ };
54
+ your_unused_lease_days: number;
55
+ lease_refundable: false;
56
+ terms_sha256: string;
57
+ }
58
+ export interface AcceptTransferResult {
59
+ project_id: string;
60
+ from_wallet: string;
61
+ to_wallet: string;
62
+ new_billing_account_id: string | null;
63
+ completed_at: string;
64
+ secrets_rotation_advised: true;
65
+ /** Names of secrets that carried over with the project. Values are never returned. */
66
+ secret_names_inherited: string[];
67
+ secrets_count_inherited: number;
68
+ /** Verbatim reminder that GitHub repo ownership is NOT part of the transfer. */
69
+ github_repo_note: string;
70
+ }
71
+ export interface CancelTransferResult {
72
+ transfer_id: string;
73
+ status: "cancelled";
74
+ cancelled_by: TransferCancelledBy;
75
+ cancellation_reason: string | null;
76
+ cancelled_at: string;
77
+ }
78
+ /** Summary row used in `/agent/v1/transfers/incoming` and `/outgoing`. */
79
+ export interface TransferSummary {
80
+ transfer_id: string;
81
+ project_id: string;
82
+ project_name_snapshot: string | null;
83
+ from_wallet: string;
84
+ to_wallet: string;
85
+ billing_policy: TransferBillingPolicy;
86
+ message: string | null;
87
+ initiated_at: string;
88
+ expires_at: string;
89
+ kysigned_record_id: string | null;
90
+ /** API path for the full preview document. */
91
+ preview_path: string;
92
+ }
93
+ export interface ListTransfersOptions {
94
+ /** Page size; defaults to 50 on the gateway. */
95
+ limit?: number;
96
+ offset?: number;
97
+ }
98
+ export interface CustomDomainPreview {
99
+ hostname: string;
100
+ status: string | null;
101
+ }
102
+ export interface SubdomainPreview {
103
+ name: string;
104
+ status: string | null;
105
+ }
106
+ export interface FunctionPreview {
107
+ name: string;
108
+ runtime: string | null;
109
+ timeout_ms: number | null;
110
+ memory_mb: number | null;
111
+ scheduled: boolean;
112
+ }
113
+ export interface MailboxSummary {
114
+ count: number;
115
+ slugs_truncated: string[];
116
+ }
117
+ export interface CiBindingPreview {
118
+ id: string;
119
+ github_repository: string | null;
120
+ github_subject_pattern: string;
121
+ created_at: string;
122
+ }
123
+ export interface ContractWalletPreview {
124
+ /** Always an empty array in Phase 1A. Reserved for future project-scoped KMS wallets. */
125
+ address: string;
126
+ chain: string;
127
+ }
128
+ export interface BillingImplications {
129
+ from_billing_account_id: string | null;
130
+ target_billing_account_id: string | null;
131
+ tier: string | null;
132
+ secrets_count: number;
133
+ functions_count: number;
134
+ custom_domains_count: number;
135
+ }
136
+ export interface ProjectTransferPreview {
137
+ transfer_id: string;
138
+ project_id: string;
139
+ project_name_snapshot: string | null;
140
+ status: TransferStatus;
141
+ from_wallet: string;
142
+ from_wallet_display: string;
143
+ to_wallet: string;
144
+ to_wallet_display: string;
145
+ billing_policy: TransferBillingPolicy;
146
+ message: string | null;
147
+ initiated_at: string;
148
+ expires_at: string;
149
+ kysigned_record_id: string | null;
150
+ terms_sha256: string;
151
+ custom_domains: CustomDomainPreview[];
152
+ subdomains: SubdomainPreview[];
153
+ functions: FunctionPreview[];
154
+ /** Secret NAMES only — values are never returned. */
155
+ secret_names: string[];
156
+ mailbox_summary: MailboxSummary;
157
+ ci_bindings_to_be_revoked: CiBindingPreview[];
158
+ contract_wallets: ContractWalletPreview[];
159
+ github_repo_note: string;
160
+ billing_implications: BillingImplications;
161
+ }
162
+ export declare class Transfers {
163
+ private readonly client;
164
+ constructor(client: Client);
165
+ /**
166
+ * Initiate a two-party project transfer. Caller must currently own
167
+ * `projectId` (gateway re-reads owner from DB, not cache). Creates a
168
+ * `pending` row with a 72h expiry and freezes owner-side mutations on
169
+ * the project until the transfer is accepted, cancelled, or expires.
170
+ */
171
+ initiate(input: InitiateTransferInput): Promise<InitiateTransferResult>;
172
+ /**
173
+ * Fetch the preview document for a pending or terminal transfer. The
174
+ * caller must be either the `from_wallet` or the `to_wallet`; other
175
+ * wallets receive 403. Preview lists secret NAMES (not values), custom
176
+ * domains, functions, CI bindings that will be revoked at accept, and
177
+ * the billing implications.
178
+ */
179
+ preview(transferId: string): Promise<ProjectTransferPreview>;
180
+ /**
181
+ * Accept an incoming transfer. The caller's wallet must equal the
182
+ * transfer's `to_wallet`. The accept transaction atomically flips
183
+ * ownership, revokes A's CI bindings on the project, enqueues
184
+ * notifications to both parties, and stamps the persistent
185
+ * `secrets_rotation_advised` advisory on the project.
186
+ */
187
+ accept(transferId: string): Promise<AcceptTransferResult>;
188
+ /**
189
+ * Cancel a pending transfer. The caller must be either the `from_wallet`
190
+ * or the `to_wallet`. Already-accepted/cancelled/expired transfers
191
+ * return 409 `TRANSFER_ALREADY_PROCESSED`.
192
+ */
193
+ cancel(transferId: string, reason?: string): Promise<CancelTransferResult>;
194
+ /** Pending transfers OFFERED TO the authenticated wallet. */
195
+ listIncoming(opts?: ListTransfersOptions): Promise<TransferSummary[]>;
196
+ /** Pending transfers INITIATED BY the authenticated wallet. */
197
+ listOutgoing(opts?: ListTransfersOptions): Promise<TransferSummary[]>;
198
+ }
199
+ //# sourceMappingURL=transfers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfers.d.ts","sourceRoot":"","sources":["../../src/namespaces/transfers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,oIAAoI;AACpI,MAAM,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE9C,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAE9E,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEzE,mDAAmD;AACnD,MAAM,WAAW,qBAAqB;IACpC,4GAA4G;IAC5G,SAAS,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,yGAAyG;IACzG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,cAAc,EAAE,qBAAqB,CAAC;QACtC,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,KAAK,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB,EAAE,IAAI,CAAC;IAC/B,sFAAsF;IACtF,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,gFAAgF;IAChF,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,mBAAmB,CAAC;IAClC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,qBAAqB,CAAC;IACtC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,yFAAyF;IACzF,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,qBAAqB,CAAC;IACtC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,qDAAqD;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,cAAc,CAAC;IAChC,yBAAyB,EAAE,gBAAgB,EAAE,CAAC;IAC9C,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,mBAAmB,CAAC;CAC3C;AAID,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C;;;;;OAKG;IACG,QAAQ,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAe7E;;;;;;OAMG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOlE;;;;;;OAMG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAW/D;;;;OAIG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAahF,6DAA6D;IACvD,YAAY,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAS/E,+DAA+D;IACzD,YAAY,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAQhF"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * `transfers` namespace — two-party SIWX-signed project transfer (v1.59).
3
+ *
4
+ * Exposed as `r.admin.transfers.*`. Phase 1A surface: initiate (owner-only),
5
+ * preview, accept (recipient), cancel (either party), and incoming/outgoing
6
+ * inboxes. The handoff is atomic at accept time: ownership flips, CI
7
+ * bindings are revoked, secret names carry over (values are NOT visible to
8
+ * the recipient before accept), and the project is decorated with a
9
+ * persistent `secrets_rotation_advised` advisory.
10
+ *
11
+ * Gateway endpoints:
12
+ * POST /projects/v1/:project_id/transfers — A initiates
13
+ * GET /agent/v1/transfers/incoming — B's inbox
14
+ * GET /agent/v1/transfers/outgoing — A's outbox
15
+ * GET /agent/v1/transfers/:transfer_id — preview (either party)
16
+ * POST /agent/v1/transfers/:transfer_id/accept — B accepts
17
+ * POST /agent/v1/transfers/:transfer_id/cancel — either party cancels
18
+ *
19
+ * Owner-side mutations against a project with a pending transfer return
20
+ * 409 `PROJECT_HAS_PENDING_TRANSFER`. The SDK kernel surfaces that as
21
+ * {@link TransferFreezeError} so agents can guide the user to cancel.
22
+ */
23
+ // ─── Class ───────────────────────────────────────────────────────────────────
24
+ export class Transfers {
25
+ client;
26
+ constructor(client) {
27
+ this.client = client;
28
+ }
29
+ /**
30
+ * Initiate a two-party project transfer. Caller must currently own
31
+ * `projectId` (gateway re-reads owner from DB, not cache). Creates a
32
+ * `pending` row with a 72h expiry and freezes owner-side mutations on
33
+ * the project until the transfer is accepted, cancelled, or expires.
34
+ */
35
+ async initiate(input) {
36
+ const body = { to_wallet: input.toWallet };
37
+ if (input.billingPolicy !== undefined)
38
+ body.billing_policy = input.billingPolicy;
39
+ if (input.message !== undefined)
40
+ body.message = input.message;
41
+ if (input.kysignedRecordId !== undefined)
42
+ body.kysigned_record_id = input.kysignedRecordId;
43
+ return this.client.request(`/projects/v1/${encodeURIComponent(input.projectId)}/transfers`, {
44
+ method: "POST",
45
+ body,
46
+ context: "initiating project transfer",
47
+ });
48
+ }
49
+ /**
50
+ * Fetch the preview document for a pending or terminal transfer. The
51
+ * caller must be either the `from_wallet` or the `to_wallet`; other
52
+ * wallets receive 403. Preview lists secret NAMES (not values), custom
53
+ * domains, functions, CI bindings that will be revoked at accept, and
54
+ * the billing implications.
55
+ */
56
+ async preview(transferId) {
57
+ return this.client.request(`/agent/v1/transfers/${encodeURIComponent(transferId)}`, { context: "previewing project transfer" });
58
+ }
59
+ /**
60
+ * Accept an incoming transfer. The caller's wallet must equal the
61
+ * transfer's `to_wallet`. The accept transaction atomically flips
62
+ * ownership, revokes A's CI bindings on the project, enqueues
63
+ * notifications to both parties, and stamps the persistent
64
+ * `secrets_rotation_advised` advisory on the project.
65
+ */
66
+ async accept(transferId) {
67
+ return this.client.request(`/agent/v1/transfers/${encodeURIComponent(transferId)}/accept`, {
68
+ method: "POST",
69
+ body: {},
70
+ context: "accepting project transfer",
71
+ });
72
+ }
73
+ /**
74
+ * Cancel a pending transfer. The caller must be either the `from_wallet`
75
+ * or the `to_wallet`. Already-accepted/cancelled/expired transfers
76
+ * return 409 `TRANSFER_ALREADY_PROCESSED`.
77
+ */
78
+ async cancel(transferId, reason) {
79
+ const body = {};
80
+ if (reason !== undefined)
81
+ body.reason = reason;
82
+ return this.client.request(`/agent/v1/transfers/${encodeURIComponent(transferId)}/cancel`, {
83
+ method: "POST",
84
+ body,
85
+ context: "cancelling project transfer",
86
+ });
87
+ }
88
+ /** Pending transfers OFFERED TO the authenticated wallet. */
89
+ async listIncoming(opts = {}) {
90
+ const q = buildPagination(opts);
91
+ const path = q ? `/agent/v1/transfers/incoming?${q}` : "/agent/v1/transfers/incoming";
92
+ const res = await this.client.request(path, {
93
+ context: "listing incoming transfers",
94
+ });
95
+ return res.transfers;
96
+ }
97
+ /** Pending transfers INITIATED BY the authenticated wallet. */
98
+ async listOutgoing(opts = {}) {
99
+ const q = buildPagination(opts);
100
+ const path = q ? `/agent/v1/transfers/outgoing?${q}` : "/agent/v1/transfers/outgoing";
101
+ const res = await this.client.request(path, {
102
+ context: "listing outgoing transfers",
103
+ });
104
+ return res.transfers;
105
+ }
106
+ }
107
+ function buildPagination(opts) {
108
+ const parts = [];
109
+ if (opts.limit !== undefined)
110
+ parts.push(`limit=${encodeURIComponent(String(opts.limit))}`);
111
+ if (opts.offset !== undefined)
112
+ parts.push(`offset=${encodeURIComponent(String(opts.offset))}`);
113
+ return parts.join("&");
114
+ }
115
+ //# sourceMappingURL=transfers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfers.js","sourceRoot":"","sources":["../../src/namespaces/transfers.ts"],"names":[],"mappings":"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"}