@artblocks/abx-cli 0.1.0-alpha.70 → 0.1.0-alpha.71
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/CHANGELOG.md +6 -0
- package/dist/creator-agent.d.ts +12 -3
- package/dist/creator-agent.d.ts.map +1 -1
- package/dist/creator-agent.js +184 -27
- package/dist/creator-agent.js.map +1 -1
- package/dist/creator-keyring.d.ts +26 -0
- package/dist/creator-keyring.d.ts.map +1 -0
- package/dist/creator-keyring.js +57 -0
- package/dist/creator-keyring.js.map +1 -0
- package/dist/creator-signer.d.ts +3 -3
- package/dist/creator-signer.d.ts.map +1 -1
- package/dist/creator-signer.js +55 -13
- package/dist/creator-signer.js.map +1 -1
- package/package.json +5 -4
- package/skill/SKILL.md +1 -1
- package/skill/reference/services.md +11 -5
- package/skill/reference/setup.md +6 -4
package/CHANGELOG.md
CHANGED
package/dist/creator-agent.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CreatorAuthorizationStore } from './creator-keyring.js';
|
|
1
2
|
export declare class CreatorAuthorizationError extends Error {
|
|
2
3
|
readonly code: string;
|
|
3
4
|
constructor(code: string);
|
|
@@ -12,21 +13,29 @@ export interface AuthorizedCreatorWallet {
|
|
|
12
13
|
address: string;
|
|
13
14
|
chainType: string;
|
|
14
15
|
}
|
|
15
|
-
/**
|
|
16
|
+
/** Privy device grant client. Refresh credentials may be retained in a native OS credential store;
|
|
17
|
+
* decrypted request-signing keys remain memory-only and die with this instance. */
|
|
16
18
|
export declare class CreatorAgentAuthorization {
|
|
17
19
|
#private;
|
|
18
20
|
constructor(options: {
|
|
19
21
|
appId: string;
|
|
20
22
|
fetchImpl?: typeof fetch;
|
|
23
|
+
now?: () => number;
|
|
24
|
+
store?: CreatorAuthorizationStore;
|
|
25
|
+
onPersistenceError?: () => void;
|
|
21
26
|
});
|
|
22
27
|
start(): Promise<CreatorDeviceAuthorization>;
|
|
23
28
|
wait(): Promise<AuthorizedCreatorWallet[]>;
|
|
29
|
+
/** Resume a prior Privy grant. Returns null when no usable credential remains. */
|
|
30
|
+
restore(): Promise<AuthorizedCreatorWallet[] | null>;
|
|
31
|
+
/** Persist a newly approved grant after the caller verifies that Privy returned the expected wallet. */
|
|
32
|
+
remember(): Promise<void>;
|
|
24
33
|
sign(input: {
|
|
25
34
|
walletId: string;
|
|
26
35
|
body: Record<string, unknown>;
|
|
27
36
|
idempotencyKey: string;
|
|
28
37
|
requestExpiry: string;
|
|
29
|
-
}): {
|
|
38
|
+
}): Promise<{
|
|
30
39
|
url: string;
|
|
31
40
|
headers: {
|
|
32
41
|
'privy-authorization-signature': string;
|
|
@@ -34,7 +43,7 @@ export declare class CreatorAgentAuthorization {
|
|
|
34
43
|
'privy-idempotency-key': string;
|
|
35
44
|
'privy-request-expiry': string;
|
|
36
45
|
};
|
|
37
|
-
}
|
|
46
|
+
}>;
|
|
38
47
|
dispose(): void;
|
|
39
48
|
}
|
|
40
49
|
//# sourceMappingURL=creator-agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator-agent.d.ts","sourceRoot":"","sources":["../src/creator-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"creator-agent.d.ts","sourceRoot":"","sources":["../src/creator-agent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,yBAAyB,EAA6B,MAAM,sBAAsB,CAAC;AAchG,qBAAa,yBAA0B,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAIlC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAwCD;mFACmF;AACnF,qBAAa,yBAAyB;;gBAexB,OAAO,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;QACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,yBAAyB,CAAC;QAClC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;KACjC;IAgDK,KAAK,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAiB5C,IAAI,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAwBhD,kFAAkF;IAC5E,OAAO,IAAI,OAAO,CAAC,uBAAuB,EAAE,GAAG,IAAI,CAAC;IAqB1D,wGAAwG;IAClG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA2HzB,IAAI,CAAC,KAAK,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAC;;;;;;;;;IA6BlH,OAAO,IAAI,IAAI;CAOhB"}
|
package/dist/creator-agent.js
CHANGED
|
@@ -4,6 +4,14 @@ import { generateAuthorizationSignature } from '@privy-io/node';
|
|
|
4
4
|
const OAUTH = 'https://auth.privy.io/api/oauth/v2';
|
|
5
5
|
const WALLET_API = 'https://api.privy.io/v1/wallets';
|
|
6
6
|
const DEVICE_GRANT = 'urn:ietf:params:oauth:grant-type:device_code';
|
|
7
|
+
const PROVIDER_ERRORS = new Set([
|
|
8
|
+
'access_denied',
|
|
9
|
+
'authorization_pending',
|
|
10
|
+
'device_auth_not_enabled',
|
|
11
|
+
'expired_token',
|
|
12
|
+
'invalid_grant',
|
|
13
|
+
'slow_down',
|
|
14
|
+
]);
|
|
7
15
|
export class CreatorAuthorizationError extends Error {
|
|
8
16
|
code;
|
|
9
17
|
constructor(code) {
|
|
@@ -49,20 +57,30 @@ function base64(value) {
|
|
|
49
57
|
throw new CreatorAuthorizationError('invalid_response');
|
|
50
58
|
return new Uint8Array(Buffer.from(encoded, 'base64'));
|
|
51
59
|
}
|
|
52
|
-
/**
|
|
60
|
+
/** Privy device grant client. Refresh credentials may be retained in a native OS credential store;
|
|
61
|
+
* decrypted request-signing keys remain memory-only and die with this instance. */
|
|
53
62
|
export class CreatorAgentAuthorization {
|
|
54
63
|
#appId;
|
|
55
64
|
#fetch;
|
|
65
|
+
#now;
|
|
66
|
+
#store;
|
|
67
|
+
#onPersistenceError;
|
|
56
68
|
#device;
|
|
57
|
-
#
|
|
69
|
+
#tokens;
|
|
58
70
|
#authorizationKey;
|
|
59
71
|
#keyExpiresAt = 0;
|
|
60
72
|
#wallets = [];
|
|
73
|
+
#persist = false;
|
|
74
|
+
#refreshing;
|
|
75
|
+
#authenticating;
|
|
61
76
|
constructor(options) {
|
|
62
77
|
if (!/^[A-Za-z0-9_-]{1,200}$/.test(options.appId))
|
|
63
78
|
throw new CreatorAuthorizationError('invalid_app_id');
|
|
64
79
|
this.#appId = options.appId;
|
|
65
80
|
this.#fetch = options.fetchImpl ?? fetch;
|
|
81
|
+
this.#now = options.now ?? Date.now;
|
|
82
|
+
this.#store = options.store;
|
|
83
|
+
this.#onPersistenceError = options.onPersistenceError;
|
|
66
84
|
}
|
|
67
85
|
async #request(path, body, token) {
|
|
68
86
|
try {
|
|
@@ -88,13 +106,29 @@ export class CreatorAgentAuthorization {
|
|
|
88
106
|
throw new CreatorAuthorizationError('request_failed');
|
|
89
107
|
}
|
|
90
108
|
}
|
|
109
|
+
#providerError(response, data) {
|
|
110
|
+
if (data.error === 'Device authorization is not enabled for this app') {
|
|
111
|
+
return new CreatorAuthorizationError('device_auth_not_enabled');
|
|
112
|
+
}
|
|
113
|
+
const code = typeof data.error === 'string' && PROVIDER_ERRORS.has(data.error) ? data.error : 'provider_error';
|
|
114
|
+
return new CreatorAuthorizationError(code);
|
|
115
|
+
}
|
|
116
|
+
#parseTokens(data, startedAt) {
|
|
117
|
+
if (data.token_type !== 'Bearer')
|
|
118
|
+
throw new CreatorAuthorizationError('invalid_response');
|
|
119
|
+
return {
|
|
120
|
+
accessToken: string(data.access_token),
|
|
121
|
+
refreshToken: string(data.refresh_token),
|
|
122
|
+
expiresAt: startedAt + seconds(data.expires_in),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
91
125
|
async start() {
|
|
92
126
|
if (this.#device)
|
|
93
127
|
throw new CreatorAuthorizationError('already_started');
|
|
94
128
|
const { response, data } = await this.#request('device_authorization', {});
|
|
95
129
|
if (!response.ok)
|
|
96
|
-
throw
|
|
97
|
-
const expiresAt =
|
|
130
|
+
throw this.#providerError(response, data);
|
|
131
|
+
const expiresAt = this.#now() + seconds(data.expires_in);
|
|
98
132
|
this.#device = {
|
|
99
133
|
code: string(data.device_code),
|
|
100
134
|
expiresAt,
|
|
@@ -111,43 +145,161 @@ export class CreatorAgentAuthorization {
|
|
|
111
145
|
if (!device)
|
|
112
146
|
throw new CreatorAuthorizationError('not_started');
|
|
113
147
|
for (;;) {
|
|
114
|
-
const remaining = device.expiresAt -
|
|
148
|
+
const remaining = device.expiresAt - this.#now();
|
|
115
149
|
if (remaining <= 0)
|
|
116
|
-
throw new CreatorAuthorizationError('
|
|
150
|
+
throw new CreatorAuthorizationError('expired_token');
|
|
117
151
|
await new Promise((resolve) => setTimeout(resolve, Math.min(device.interval, remaining)));
|
|
152
|
+
const startedAt = this.#now();
|
|
118
153
|
const { response, data } = await this.#request('token', { grant_type: DEVICE_GRANT, device_code: device.code });
|
|
119
154
|
if (response.ok) {
|
|
120
|
-
this.#
|
|
155
|
+
this.#tokens = this.#parseTokens(data, startedAt);
|
|
121
156
|
await this.#authenticate();
|
|
122
157
|
this.#device = undefined;
|
|
123
158
|
return this.#wallets.map((wallet) => ({ ...wallet }));
|
|
124
159
|
}
|
|
125
|
-
const
|
|
126
|
-
if (response.status === 400 && (code === 'authorization_pending' || code === 'slow_down')) {
|
|
127
|
-
if (code === 'slow_down')
|
|
160
|
+
const error = this.#providerError(response, data);
|
|
161
|
+
if (response.status === 400 && (error.code === 'authorization_pending' || error.code === 'slow_down')) {
|
|
162
|
+
if (error.code === 'slow_down')
|
|
128
163
|
device.interval += 5_000;
|
|
129
164
|
continue;
|
|
130
165
|
}
|
|
131
|
-
throw
|
|
166
|
+
throw error;
|
|
132
167
|
}
|
|
133
168
|
}
|
|
134
|
-
|
|
135
|
-
|
|
169
|
+
/** Resume a prior Privy grant. Returns null when no usable credential remains. */
|
|
170
|
+
async restore() {
|
|
171
|
+
if (!this.#store)
|
|
172
|
+
return null;
|
|
173
|
+
const stored = await this.#store.load();
|
|
174
|
+
if (!stored)
|
|
175
|
+
return null;
|
|
176
|
+
this.#tokens = stored;
|
|
177
|
+
this.#persist = true;
|
|
178
|
+
try {
|
|
179
|
+
await this.#authenticate();
|
|
180
|
+
return this.#wallets.map((wallet) => ({ ...wallet }));
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
if (error instanceof CreatorAuthorizationError &&
|
|
184
|
+
['access_denied', 'expired_token', 'invalid_grant', 'login_required'].includes(error.code)) {
|
|
185
|
+
await this.#clearStored();
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/** Persist a newly approved grant after the caller verifies that Privy returned the expected wallet. */
|
|
192
|
+
async remember() {
|
|
193
|
+
if (!this.#store || !this.#tokens)
|
|
194
|
+
return;
|
|
195
|
+
await this.#store.save(this.#tokens);
|
|
196
|
+
this.#persist = true;
|
|
197
|
+
}
|
|
198
|
+
async #saveRotatedTokens() {
|
|
199
|
+
if (!this.#persist || !this.#store || !this.#tokens)
|
|
200
|
+
return;
|
|
201
|
+
try {
|
|
202
|
+
await this.#store.save(this.#tokens);
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
this.#persist = false;
|
|
206
|
+
this.#onPersistenceError?.();
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
async #clearStored() {
|
|
210
|
+
this.#tokens = undefined;
|
|
211
|
+
this.#authorizationKey = undefined;
|
|
212
|
+
this.#keyExpiresAt = 0;
|
|
213
|
+
this.#wallets = [];
|
|
214
|
+
this.#persist = false;
|
|
215
|
+
if (!this.#store)
|
|
216
|
+
return;
|
|
217
|
+
try {
|
|
218
|
+
await this.#store.clear();
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
this.#onPersistenceError?.();
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
async #refresh() {
|
|
225
|
+
if (this.#refreshing)
|
|
226
|
+
return this.#refreshing;
|
|
227
|
+
if (!this.#tokens)
|
|
228
|
+
throw new CreatorAuthorizationError('login_required');
|
|
229
|
+
const previous = this.#tokens;
|
|
230
|
+
const refreshToken = this.#tokens.refreshToken;
|
|
231
|
+
this.#refreshing = (async () => {
|
|
232
|
+
this.#tokens = undefined;
|
|
233
|
+
this.#authorizationKey = undefined;
|
|
234
|
+
this.#keyExpiresAt = 0;
|
|
235
|
+
this.#wallets = [];
|
|
236
|
+
const startedAt = this.#now();
|
|
237
|
+
try {
|
|
238
|
+
const { response, data } = await this.#request('token', { grant_type: 'refresh_token', refresh_token: refreshToken });
|
|
239
|
+
if (!response.ok)
|
|
240
|
+
throw this.#providerError(response, data);
|
|
241
|
+
this.#tokens = this.#parseTokens(data, startedAt);
|
|
242
|
+
await this.#saveRotatedTokens();
|
|
243
|
+
}
|
|
244
|
+
catch (error) {
|
|
245
|
+
if (error instanceof CreatorAuthorizationError &&
|
|
246
|
+
['access_denied', 'expired_token', 'invalid_grant'].includes(error.code)) {
|
|
247
|
+
await this.#clearStored();
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
// Preserve the last durable grant after a transient failure. If Privy accepted an
|
|
251
|
+
// ambiguous refresh, the next attempt will return a definitive invalid-grant response.
|
|
252
|
+
this.#tokens = previous;
|
|
253
|
+
}
|
|
254
|
+
throw error;
|
|
255
|
+
}
|
|
256
|
+
})().finally(() => {
|
|
257
|
+
this.#refreshing = undefined;
|
|
258
|
+
});
|
|
259
|
+
return this.#refreshing;
|
|
260
|
+
}
|
|
261
|
+
async #accessToken() {
|
|
262
|
+
if (this.#refreshing)
|
|
263
|
+
await this.#refreshing;
|
|
264
|
+
if (!this.#tokens)
|
|
136
265
|
throw new CreatorAuthorizationError('login_required');
|
|
266
|
+
if (this.#tokens.expiresAt <= this.#now() + 30_000)
|
|
267
|
+
await this.#refresh();
|
|
268
|
+
if (!this.#tokens || this.#tokens.expiresAt <= this.#now())
|
|
269
|
+
throw new CreatorAuthorizationError('login_required');
|
|
270
|
+
return this.#tokens.accessToken;
|
|
271
|
+
}
|
|
272
|
+
async #authenticate() {
|
|
273
|
+
if (this.#authenticating)
|
|
274
|
+
return this.#authenticating;
|
|
275
|
+
if (this.#authorizationKey && this.#keyExpiresAt > this.#now() + 5_000)
|
|
276
|
+
return;
|
|
277
|
+
this.#authenticating = this.#exchangeKey().finally(() => {
|
|
278
|
+
this.#authenticating = undefined;
|
|
279
|
+
});
|
|
280
|
+
return this.#authenticating;
|
|
281
|
+
}
|
|
282
|
+
async #exchangeKey() {
|
|
137
283
|
try {
|
|
138
284
|
const suite = new CipherSuite({ kem: new DhkemP256HkdfSha256(), kdf: new HkdfSha256(), aead: new Chacha20Poly1305() });
|
|
139
285
|
const pair = await suite.kem.generateKeyPair();
|
|
140
286
|
const publicKey = await globalThis.crypto.subtle.exportKey('spki', pair.publicKey);
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
287
|
+
const body = { encryption_type: 'HPKE', recipient_public_key: Buffer.from(publicKey).toString('base64') };
|
|
288
|
+
let result = await this.#request('wallets/authenticate', body, await this.#accessToken());
|
|
289
|
+
if (result.response.status === 401) {
|
|
290
|
+
await this.#refresh();
|
|
291
|
+
result = await this.#request('wallets/authenticate', body, await this.#accessToken());
|
|
292
|
+
}
|
|
293
|
+
if (!result.response.ok)
|
|
294
|
+
throw this.#providerError(result.response, result.data);
|
|
295
|
+
const encrypted = object(result.data.encrypted_authorization_key);
|
|
296
|
+
const expiresAt = typeof result.data.expires_at === 'number' ? result.data.expires_at : Date.parse(string(result.data.expires_at));
|
|
297
|
+
if (!Number.isFinite(expiresAt) || expiresAt <= this.#now() + 5_000) {
|
|
147
298
|
throw new CreatorAuthorizationError('expired_signing_key');
|
|
148
|
-
|
|
299
|
+
}
|
|
300
|
+
if (!Array.isArray(result.data.wallets))
|
|
149
301
|
throw new CreatorAuthorizationError('invalid_response');
|
|
150
|
-
const wallets = data.wallets.map((value) => {
|
|
302
|
+
const wallets = result.data.wallets.map((value) => {
|
|
151
303
|
const wallet = object(value);
|
|
152
304
|
return { id: string(wallet.id), address: string(wallet.address), chainType: string(wallet.chain_type) };
|
|
153
305
|
});
|
|
@@ -161,27 +313,31 @@ export class CreatorAgentAuthorization {
|
|
|
161
313
|
finally {
|
|
162
314
|
bytes.fill(0);
|
|
163
315
|
}
|
|
164
|
-
this.#accessToken = undefined;
|
|
165
316
|
}
|
|
166
317
|
catch (error) {
|
|
318
|
+
this.#authorizationKey = undefined;
|
|
319
|
+
this.#keyExpiresAt = 0;
|
|
320
|
+
this.#wallets = [];
|
|
167
321
|
if (error instanceof CreatorAuthorizationError)
|
|
168
322
|
throw error;
|
|
169
323
|
throw new CreatorAuthorizationError('key_exchange_failed');
|
|
170
324
|
}
|
|
171
325
|
}
|
|
172
|
-
sign(input) {
|
|
173
|
-
if (!this.#authorizationKey || this.#keyExpiresAt <= Date.now())
|
|
174
|
-
throw new CreatorAuthorizationError('authorization_expired');
|
|
326
|
+
async sign(input) {
|
|
175
327
|
if (!/^[A-Za-z0-9_-]{1,200}$/.test(input.walletId) || !/^[A-Za-z0-9_-]{1,200}$/.test(input.idempotencyKey)) {
|
|
176
328
|
throw new CreatorAuthorizationError('invalid_request');
|
|
177
329
|
}
|
|
178
330
|
if (input.body.method !== 'eth_sendTransaction')
|
|
179
331
|
throw new CreatorAuthorizationError('unsupported_method');
|
|
332
|
+
await this.#authenticate();
|
|
333
|
+
if (!this.#authorizationKey || this.#keyExpiresAt <= this.#now()) {
|
|
334
|
+
throw new CreatorAuthorizationError('authorization_expired');
|
|
335
|
+
}
|
|
180
336
|
if (!this.#wallets.some((wallet) => wallet.id === input.walletId && wallet.chainType === 'ethereum')) {
|
|
181
337
|
throw new CreatorAuthorizationError('wallet_not_authorized');
|
|
182
338
|
}
|
|
183
339
|
const expiry = Number(input.requestExpiry);
|
|
184
|
-
if (!Number.isSafeInteger(expiry) || expiry <=
|
|
340
|
+
if (!Number.isSafeInteger(expiry) || expiry <= this.#now() || expiry > this.#now() + 60_000 || expiry > this.#keyExpiresAt) {
|
|
185
341
|
throw new CreatorAuthorizationError('invalid_request_expiry');
|
|
186
342
|
}
|
|
187
343
|
const url = `${WALLET_API}/${encodeURIComponent(input.walletId)}/rpc`;
|
|
@@ -198,8 +354,9 @@ export class CreatorAgentAuthorization {
|
|
|
198
354
|
}
|
|
199
355
|
dispose() {
|
|
200
356
|
this.#device = undefined;
|
|
201
|
-
this.#
|
|
357
|
+
this.#tokens = undefined;
|
|
202
358
|
this.#authorizationKey = undefined;
|
|
359
|
+
this.#keyExpiresAt = 0;
|
|
203
360
|
this.#wallets = [];
|
|
204
361
|
}
|
|
205
362
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator-agent.js","sourceRoot":"","sources":["../src/creator-agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"creator-agent.js","sourceRoot":"","sources":["../src/creator-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AACxE,OAAO,EAAC,8BAA8B,EAAC,MAAM,gBAAgB,CAAC;AAG9D,MAAM,KAAK,GAAG,oCAAoC,CAAC;AACnD,MAAM,UAAU,GAAG,iCAAiC,CAAC;AACrD,MAAM,YAAY,GAAG,8CAA8C,CAAC;AACpE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,eAAe;IACf,uBAAuB;IACvB,yBAAyB;IACzB,eAAe;IACf,eAAe;IACf,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAC7B;IAArB,YAAqB,IAAY;QAC/B,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;QAD5B,SAAI,GAAJ,IAAI,CAAQ;QAE/B,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAcD,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;IACzH,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM;QAAE,MAAM,IAAI,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;IAC1H,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,yBAAyB,CAAC,0BAA0B,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC;IAChH,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC;QACpH,MAAM,IAAI,yBAAyB,CAAC,0BAA0B,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;QACzF,MAAM,IAAI,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,GAAG,KAAK,CAAC;AACvB,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;IACrG,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;mFACmF;AACnF,MAAM,OAAO,yBAAyB;IAC3B,MAAM,CAAS;IACf,MAAM,CAAe;IACrB,IAAI,CAAe;IACnB,MAAM,CAA6B;IACnC,mBAAmB,CAAc;IAC1C,OAAO,CAAuD;IAC9D,OAAO,CAA8B;IACrC,iBAAiB,CAAU;IAC3B,aAAa,GAAG,CAAC,CAAC;IAClB,QAAQ,GAA8B,EAAE,CAAC;IACzC,QAAQ,GAAG,KAAK,CAAC;IACjB,WAAW,CAAiB;IAC5B,eAAe,CAAiB;IAEhC,YAAY,OAMX;QACC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;QACzG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAAY,EAAE,KAAc;QACvD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,EAAE;gBACrD,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;gBACnC,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,cAAc,EAAE,IAAI,CAAC,MAAM;oBAC3B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,kBAAkB,EAAE,aAAa,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxF;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;gBAAE,MAAM,IAAI,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;YAClF,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,yBAAyB;gBAAE,MAAM,KAAK,CAAC;YAC5D,MAAM,IAAI,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,cAAc,CAAC,QAAkB,EAAE,IAA6B;QAC9D,IAAI,IAAI,CAAC,KAAK,KAAK,kDAAkD,EAAE,CAAC;YACtE,OAAO,IAAI,yBAAyB,CAAC,yBAAyB,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAC/G,OAAO,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,IAA6B,EAAE,SAAiB;QAC3D,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ;YAAE,MAAM,IAAI,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;QAC1F,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;YACtC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;YACxC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;SAChD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;QACzE,MAAM,EAAC,QAAQ,EAAE,IAAI,EAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAC9B,SAAS;YACT,QAAQ,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;SACvE,CAAC;QACF,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YAChC,eAAe,EAAE,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAC,uBAAuB,EAAE,eAAe,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACtH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,yBAAyB,CAAC,aAAa,CAAC,CAAC;QAChE,SAAS,CAAC;YACR,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,SAAS,IAAI,CAAC;gBAAE,MAAM,IAAI,yBAAyB,CAAC,eAAe,CAAC,CAAC;YACzE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1F,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,EAAC,QAAQ,EAAE,IAAI,EAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAC,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,EAAC,CAAC,CAAC;YAC5G,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAClD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;gBACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,MAAM,EAAC,CAAC,CAAC,CAAC;YACtD,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,uBAAuB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;gBACtG,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;oBAAE,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;gBACzD,SAAS;YACX,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,MAAM,EAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,KAAK,YAAY,yBAAyB;gBAC1C,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAC1F,CAAC;gBACD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,wGAAwG;IACxG,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC5D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACzB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,EAAC,QAAQ,EAAE,IAAI,EAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAC,CAAC,CAAC;gBAClH,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC5D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAClD,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAClC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IACE,KAAK,YAAY,yBAAyB;oBAC1C,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EACxE,CAAC;oBACD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,kFAAkF;oBAClF,uFAAuF;oBACvF,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;gBAC1B,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM;YAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1E,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;QAClH,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC,eAAe,CAAC;QACtD,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK;YAAE,OAAO;QAC/E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACtD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,EAAC,GAAG,EAAE,IAAI,mBAAmB,EAAE,EAAE,GAAG,EAAE,IAAI,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,gBAAgB,EAAE,EAAC,CAAC,CAAC;YACrH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACnF,MAAM,IAAI,GAAG,EAAC,eAAe,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAC,CAAC;YACxG,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAC1F,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtB,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YACxF,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACjF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAClE,MAAM,SAAS,GACb,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACnH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;gBACpE,MAAM,IAAI,yBAAyB,CAAC,qBAAqB,CAAC,CAAC;YAC7D,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;YACjG,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,EAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAC,CAAC;YACxG,CAAC,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAAC,EAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC;YAC/H,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC;gBACH,IAAI,CAAC,iBAAiB,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/E,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;gBAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YAC1B,CAAC;oBAAS,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,IAAI,KAAK,YAAY,yBAAyB;gBAAE,MAAM,KAAK,CAAC;YAC5D,MAAM,IAAI,yBAAyB,CAAC,qBAAqB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAuG;QAChH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3G,MAAM,IAAI,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,qBAAqB;YAAE,MAAM,IAAI,yBAAyB,CAAC,oBAAoB,CAAC,CAAC;QAC3G,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC,EAAE,CAAC;YACrG,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3H,MAAM,IAAI,yBAAyB,CAAC,wBAAwB,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,UAAU,IAAI,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtE,MAAM,OAAO,GAAG;YACd,cAAc,EAAE,IAAI,CAAC,MAAM;YAC3B,uBAAuB,EAAE,KAAK,CAAC,cAAc;YAC7C,sBAAsB,EAAE,KAAK,CAAC,aAAa;SAC5C,CAAC;QACF,MAAM,SAAS,GAAG,8BAA8B,CAAC;YAC/C,uBAAuB,EAAE,IAAI,CAAC,iBAAiB;YAC/C,KAAK,EAAE,EAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAC;SACpE,CAAC,CAAC;QACH,OAAO,EAAC,GAAG,EAAE,OAAO,EAAE,EAAC,GAAG,OAAO,EAAE,+BAA+B,EAAE,SAAS,EAAC,EAAC,CAAC;IAClF,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface StoredCreatorAuthorization {
|
|
2
|
+
accessToken: string;
|
|
3
|
+
refreshToken: string;
|
|
4
|
+
expiresAt: number;
|
|
5
|
+
}
|
|
6
|
+
export interface CreatorAuthorizationStore {
|
|
7
|
+
load(): Promise<StoredCreatorAuthorization | null>;
|
|
8
|
+
save(tokens: StoredCreatorAuthorization): Promise<void>;
|
|
9
|
+
clear(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
interface KeyringEntry {
|
|
12
|
+
getPassword(signal?: AbortSignal): Promise<string | undefined>;
|
|
13
|
+
setPassword(value: string, signal?: AbortSignal): Promise<void>;
|
|
14
|
+
deleteCredential(signal?: AbortSignal): Promise<boolean>;
|
|
15
|
+
}
|
|
16
|
+
/** Native per-user credential storage: Keychain on macOS, Credential Manager on Windows, and
|
|
17
|
+
* Secret Service/keyutils on Linux. The refresh credential is never written to project files. */
|
|
18
|
+
export declare class CreatorKeyringStore implements CreatorAuthorizationStore {
|
|
19
|
+
#private;
|
|
20
|
+
constructor(appId: string, walletAddress: string, entry?: KeyringEntry);
|
|
21
|
+
load(): Promise<StoredCreatorAuthorization | null>;
|
|
22
|
+
save(tokens: StoredCreatorAuthorization): Promise<void>;
|
|
23
|
+
clear(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=creator-keyring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creator-keyring.d.ts","sourceRoot":"","sources":["../src/creator-keyring.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,IAAI,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,UAAU,YAAY;IACpB,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AA6BD;iGACiG;AACjG,qBAAa,mBAAoB,YAAW,yBAAyB;;gBAGvD,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY;IAKhE,IAAI,IAAI,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC;IAWlD,IAAI,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { AsyncEntry } from '@napi-rs/keyring';
|
|
3
|
+
const SERVICE = 'io.abx.cli.creator-wallet';
|
|
4
|
+
const timeout = () => AbortSignal.timeout(15_000);
|
|
5
|
+
function secret(value) {
|
|
6
|
+
if (typeof value !== 'string' || !value || value.length > 16_384)
|
|
7
|
+
throw new Error('invalid_creator_authorization');
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
function decode(raw) {
|
|
11
|
+
let value;
|
|
12
|
+
try {
|
|
13
|
+
value = JSON.parse(raw);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
throw new Error('invalid_creator_authorization');
|
|
17
|
+
}
|
|
18
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
19
|
+
throw new Error('invalid_creator_authorization');
|
|
20
|
+
const row = value;
|
|
21
|
+
if (row.version !== 1 || !Number.isSafeInteger(row.expiresAt) || Number(row.expiresAt) <= 0) {
|
|
22
|
+
throw new Error('invalid_creator_authorization');
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
accessToken: secret(row.accessToken),
|
|
26
|
+
refreshToken: secret(row.refreshToken),
|
|
27
|
+
expiresAt: Number(row.expiresAt),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/** Native per-user credential storage: Keychain on macOS, Credential Manager on Windows, and
|
|
31
|
+
* Secret Service/keyutils on Linux. The refresh credential is never written to project files. */
|
|
32
|
+
export class CreatorKeyringStore {
|
|
33
|
+
#entry;
|
|
34
|
+
constructor(appId, walletAddress, entry) {
|
|
35
|
+
const identity = createHash('sha256').update(`${appId}:${walletAddress.toLowerCase()}`).digest('hex');
|
|
36
|
+
this.#entry = entry ?? new AsyncEntry(SERVICE, identity);
|
|
37
|
+
}
|
|
38
|
+
async load() {
|
|
39
|
+
const raw = await this.#entry.getPassword(timeout());
|
|
40
|
+
if (raw === undefined)
|
|
41
|
+
return null;
|
|
42
|
+
try {
|
|
43
|
+
return decode(raw);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
await this.#entry.deleteCredential(timeout());
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async save(tokens) {
|
|
51
|
+
await this.#entry.setPassword(JSON.stringify({ version: 1, ...tokens }), timeout());
|
|
52
|
+
}
|
|
53
|
+
async clear() {
|
|
54
|
+
await this.#entry.deleteCredential(timeout());
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=creator-keyring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creator-keyring.js","sourceRoot":"","sources":["../src/creator-keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAoB5C,MAAM,OAAO,GAAG,2BAA2B,CAAC;AAC5C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAElD,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,GAAW;IACzB,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAClH,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5F,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QACpC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;KACjC,CAAC;AACJ,CAAC;AAED;iGACiG;AACjG,MAAM,OAAO,mBAAmB;IACrB,MAAM,CAAe;IAE9B,YAAY,KAAa,EAAE,aAAqB,EAAE,KAAoB;QACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,IAAI,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtG,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAkC;QAC3C,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,GAAG,MAAM,EAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;CACF"}
|
package/dist/creator-signer.d.ts
CHANGED
|
@@ -44,9 +44,9 @@ export declare function assertSponsoredPreparedTx(tx: PreparedTx, chainId: numbe
|
|
|
44
44
|
* services catalog and do not need to know a deployment hostname. */
|
|
45
45
|
export declare function creatorApiUrl(chainId: number, env?: NodeJS.ProcessEnv): Promise<string>;
|
|
46
46
|
/**
|
|
47
|
-
* Open
|
|
48
|
-
*
|
|
49
|
-
*
|
|
47
|
+
* Open a creator authorization session. Privy's rotating grant is retained in the user's native OS
|
|
48
|
+
* credential store and reused across CLI invocations. The decrypted request-signing key remains
|
|
49
|
+
* memory-only and every exact transaction is still prepared, signed, and reconciled independently.
|
|
50
50
|
*/
|
|
51
51
|
export declare function openSponsoredSession(chainKey: string): Promise<SponsoredSession>;
|
|
52
52
|
//# sourceMappingURL=creator-signer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator-signer.d.ts","sourceRoot":"","sources":["../src/creator-signer.ts"],"names":[],"mappings":"AAEA,OAAO,EAWL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"creator-signer.d.ts","sourceRoot":"","sources":["../src/creator-signer.ts"],"names":[],"mappings":"AAEA,OAAO,EAWL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,MAAM,CAAC;AAS7C;;8CAE8C;AAC9C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,kGAAkG;AAClG,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE9D;AAaD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAM,GAChE,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;oCAEoC;AACpC,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAM,GACrF,OAAO,CAAC,OAAO,CAAC,CA2BlB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChD,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;oDAEoD;AACpD,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,EAAE,IAAI,UAAU,GAAG;IAAC,EAAE,EAAE,OAAO,CAAA;CAAC,CAY1C;AAmBD;;qEAEqE;AACrE,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAW1G;AAmBD;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmItF"}
|
package/dist/creator-signer.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { spawn } from 'node:child_process';
|
|
3
3
|
import { AbxServiceClient, CREATOR_WALLET_INTERFACE, CreatorApiClient, makePublicClient, pinGas, resolveChain, resolveServiceInterfaceEndpoint, sleep, TxRevertedError, waitForCodeAt, } from '@artblocks/abx-sdk';
|
|
4
|
-
import { CreatorAgentAuthorization } from './creator-agent.js';
|
|
4
|
+
import { CreatorAgentAuthorization, CreatorAuthorizationError } from './creator-agent.js';
|
|
5
|
+
import { CreatorKeyringStore } from './creator-keyring.js';
|
|
6
|
+
import { warn } from './output.js';
|
|
5
7
|
import { ABX_SERVICES_URL } from './remote.js';
|
|
6
8
|
const SPONSORABLE_BASE_CHAINS = new Set([8_453, 84_532]);
|
|
9
|
+
const CREATOR_GRANTS_URL = 'https://services.abx.io/authorize';
|
|
7
10
|
/** Preserve the exact RPC estimate across the JSON service boundary. This is a serialization
|
|
8
11
|
* guard, not a sponsorship-policy ceiling; real EVM transaction limits are many orders of
|
|
9
12
|
* magnitude below Number.MAX_SAFE_INTEGER. */
|
|
@@ -124,9 +127,9 @@ function openBrowser(url) {
|
|
|
124
127
|
}
|
|
125
128
|
}
|
|
126
129
|
/**
|
|
127
|
-
* Open
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
+
* Open a creator authorization session. Privy's rotating grant is retained in the user's native OS
|
|
131
|
+
* credential store and reused across CLI invocations. The decrypted request-signing key remains
|
|
132
|
+
* memory-only and every exact transaction is still prepared, signed, and reconciled independently.
|
|
130
133
|
*/
|
|
131
134
|
export async function openSponsoredSession(chainKey) {
|
|
132
135
|
const chain = resolveChain(chainKey);
|
|
@@ -143,18 +146,57 @@ export async function openSponsoredSession(chainKey) {
|
|
|
143
146
|
if (!account.capabilities.sponsorship || !account.capabilities.sponsoredChains.includes(chain.id)) {
|
|
144
147
|
throw new Error(`ABX gas sponsorship is not enabled for ${chain.name} on this account.`);
|
|
145
148
|
}
|
|
146
|
-
|
|
149
|
+
let persistenceWarningShown = false;
|
|
150
|
+
const persistenceWarning = () => {
|
|
151
|
+
if (persistenceWarningShown)
|
|
152
|
+
return;
|
|
153
|
+
persistenceWarningShown = true;
|
|
154
|
+
warn('Could not use the OS credential store. This authorization works for the current command only.');
|
|
155
|
+
};
|
|
156
|
+
const store = new CreatorKeyringStore(wallet.providerAppId, wallet.address);
|
|
157
|
+
let authorization = new CreatorAgentAuthorization({
|
|
158
|
+
appId: wallet.providerAppId,
|
|
159
|
+
store,
|
|
160
|
+
onPersistenceError: persistenceWarning,
|
|
161
|
+
});
|
|
147
162
|
try {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
163
|
+
let canPersist = true;
|
|
164
|
+
let newlyApproved = false;
|
|
165
|
+
let wallets;
|
|
166
|
+
try {
|
|
167
|
+
wallets = await authorization.restore();
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
if (error instanceof CreatorAuthorizationError)
|
|
171
|
+
throw error;
|
|
172
|
+
persistenceWarning();
|
|
173
|
+
canPersist = false;
|
|
174
|
+
authorization.dispose();
|
|
175
|
+
authorization = new CreatorAgentAuthorization({ appId: wallet.providerAppId });
|
|
176
|
+
wallets = null;
|
|
177
|
+
}
|
|
178
|
+
if (!wallets) {
|
|
179
|
+
newlyApproved = true;
|
|
180
|
+
const device = await authorization.start();
|
|
181
|
+
const verificationUrl = device.verificationUriComplete ?? device.verificationUri;
|
|
182
|
+
console.log(`\n Authorize this agent to use your ABX creator wallet:`);
|
|
183
|
+
console.log(` ${verificationUrl}`);
|
|
184
|
+
console.log(` Code: ${device.userCode}\n`);
|
|
185
|
+
openBrowser(verificationUrl);
|
|
186
|
+
wallets = await authorization.wait();
|
|
187
|
+
}
|
|
155
188
|
const authorized = wallets.find((candidate) => candidate.chainType === 'ethereum' && candidate.address.toLowerCase() === wallet.address.toLowerCase());
|
|
156
189
|
if (!authorized)
|
|
157
190
|
throw new Error(`Privy authorized a different wallet; expected ${wallet.address}.`);
|
|
191
|
+
if (newlyApproved && canPersist) {
|
|
192
|
+
try {
|
|
193
|
+
await authorization.remember();
|
|
194
|
+
console.log(` Agent access saved in your OS credential store. Manage or revoke it at ${CREATOR_GRANTS_URL}.\n`);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
persistenceWarning();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
158
200
|
const publicClient = makePublicClient({ chainKey });
|
|
159
201
|
let closed = false;
|
|
160
202
|
return {
|
|
@@ -181,7 +223,7 @@ export async function openSponsoredSession(chainKey) {
|
|
|
181
223
|
data: tx.data,
|
|
182
224
|
gasLimit: sponsoredGasLimit(gas),
|
|
183
225
|
});
|
|
184
|
-
const signed = authorization.sign({
|
|
226
|
+
const signed = await authorization.sign({
|
|
185
227
|
walletId: prepared.signingRequest.walletId,
|
|
186
228
|
body: prepared.signingRequest.body,
|
|
187
229
|
idempotencyKey: prepared.signingRequest.idempotencyKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator-signer.js","sourceRoot":"","sources":["../src/creator-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AACvC,OAAO,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAC;AACzC,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,+BAA+B,EAC/B,KAAK,EACL,eAAe,EACf,aAAa,GAId,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,yBAAyB,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"creator-signer.js","sourceRoot":"","sources":["../src/creator-signer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@artblocks/abx-cli",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.71",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Command-line interface for deploying, operating, indexing, and serving ABX projects.",
|
|
6
6
|
"type": "module",
|
|
@@ -40,12 +40,13 @@
|
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@hpke/chacha20poly1305": "1.8.0",
|
|
42
42
|
"@hpke/core": "1.9.0",
|
|
43
|
+
"@napi-rs/keyring": "2.0.0",
|
|
43
44
|
"@privy-io/node": "0.34.0",
|
|
44
45
|
"viem": "^2.56.5",
|
|
45
|
-
"@artblocks/abx-sdk": "0.1.0-alpha.49",
|
|
46
46
|
"@artblocks/abx-indexer": "0.1.0-alpha.50",
|
|
47
|
-
"@artblocks/abx-
|
|
48
|
-
"@artblocks/abx-storage": "0.1.0-alpha.49"
|
|
47
|
+
"@artblocks/abx-sdk": "0.1.0-alpha.49",
|
|
48
|
+
"@artblocks/abx-storage": "0.1.0-alpha.49",
|
|
49
|
+
"@artblocks/abx-token-api": "0.1.0-alpha.52"
|
|
49
50
|
},
|
|
50
51
|
"optionalDependencies": {
|
|
51
52
|
"@artblocks/abx-effects": "0.1.0-alpha.49"
|
package/skill/SKILL.md
CHANGED
|
@@ -9,7 +9,7 @@ description: >-
|
|
|
9
9
|
change an ABX collection, or to determine whether ABX supports a mechanic.
|
|
10
10
|
compatibility: Drives @artblocks/abx-cli on Node 22.13+. Co-versioned with the CLI; install or refresh with `abx skill install`.
|
|
11
11
|
metadata:
|
|
12
|
-
version: "0.1.0-alpha.
|
|
12
|
+
version: "0.1.0-alpha.71"
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
# ABX
|
|
@@ -87,10 +87,15 @@ resolver and verify the resulting public surfaces as described in [hosting.md](h
|
|
|
87
87
|
|
|
88
88
|
An account with a verified email can use one persistent ABX creator wallet. The
|
|
89
89
|
`ABX_SERVICES_API_KEY` identifies the account but cannot sign. `--sponsor` discovers the provider's
|
|
90
|
-
`abx-creator-wallet/v1` endpoint
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
`abx-creator-wallet/v1` endpoint and provisions or reuses the wallet. The first sponsored command
|
|
91
|
+
asks the human to match one code and approve a Privy agent grant. The CLI keeps the rotating grant in
|
|
92
|
+
the operating system's credential store and reuses it for up to 30 days, unless the creator revokes
|
|
93
|
+
it first. The request-signing key remains memory-only. A reused grant removes another browser step; it does
|
|
94
|
+
not remove the dry run, transaction summary, or production confirmation.
|
|
95
|
+
|
|
96
|
+
The approval is authority for the agent to use the creator wallet, not approval of one displayed
|
|
97
|
+
transaction. Review each exact network and transaction plan in the terminal. The creator can inspect
|
|
98
|
+
and revoke active grants at `https://services.abx.io/authorize`.
|
|
94
99
|
|
|
95
100
|
Treat the live descriptor and account capabilities as the authority for sponsored networks. The
|
|
96
101
|
public [network table](https://docs.abx.io/docs/reference/deployments) is the human-readable summary,
|
|
@@ -103,7 +108,8 @@ the paired testnet and repeat the production warning before confirmation. Before
|
|
|
103
108
|
3. run the same command with `--dry-run --json`;
|
|
104
109
|
4. summarize the network, creator-wallet address, transaction group, zero value, permanent choices,
|
|
105
110
|
and any experimental or beta status;
|
|
106
|
-
5.
|
|
111
|
+
5. repeat with `--sponsor`; if no usable grant exists, give the human the verified URL and code and
|
|
112
|
+
resume the same command after approval.
|
|
107
113
|
|
|
108
114
|
The lane accepts zero-value calls and receipt-dependent staged content groups up to the live network
|
|
109
115
|
and provider policy. ABX does not impose an additional per-transaction gas ceiling. Use
|
package/skill/reference/setup.md
CHANGED
|
@@ -213,7 +213,9 @@ human confirmation authorizes execution.
|
|
|
213
213
|
9. Confirm the plan and only then execute.
|
|
214
214
|
|
|
215
215
|
For an eligible first-party account, `--sponsor` replaces local key and faucet setup with an
|
|
216
|
-
account-bound creator wallet
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
216
|
+
account-bound creator wallet. The first use opens a Privy agent grant; later commands reuse that
|
|
217
|
+
grant for up to 30 days, unless the creator revokes it first. Do not ask for another browser approval when the
|
|
218
|
+
CLI resumes an existing grant. Use sponsorship only when the live descriptor and account
|
|
219
|
+
capabilities advertise the active chain. Test the exact flow on the reported paired testnet before
|
|
220
|
+
production. Read [services.md](services.md) before using it. Sponsorship is zero-value and never a
|
|
221
|
+
reason to skip the dry run or transaction summary.
|