@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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @artblocks/abx-cli
2
2
 
3
+ ## 0.1.0-alpha.71
4
+
5
+ ### Patch Changes
6
+
7
+ - 0a9ed51: Reuse Privy creator-wallet grants across sponsored CLI commands through the native operating-system credential store.
8
+
3
9
  ## 0.1.0-alpha.70
4
10
 
5
11
  ### Patch Changes
@@ -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
- /** Ephemeral Privy device session. Tokens and the decrypted signing key never leave this instance. */
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":"AAQA,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,sGAAsG;AACtG,qBAAa,yBAAyB;;gBASxB,OAAO,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;KAAC;IA4BxD,KAAK,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAiB5C,IAAI,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;IA2DhD,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;;;;;;;;;IA0B5G,OAAO,IAAI,IAAI;CAMhB"}
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"}
@@ -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
- /** Ephemeral Privy device session. Tokens and the decrypted signing key never leave this instance. */
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
- #accessToken;
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 new CreatorAuthorizationError('device_authorization_failed');
97
- const expiresAt = Date.now() + seconds(data.expires_in);
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 - Date.now();
148
+ const remaining = device.expiresAt - this.#now();
115
149
  if (remaining <= 0)
116
- throw new CreatorAuthorizationError('expired');
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.#accessToken = string(data.access_token);
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 code = typeof data.error === 'string' ? data.error : '';
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 new CreatorAuthorizationError(code === 'access_denied' ? 'access_denied' : 'provider_error');
166
+ throw error;
132
167
  }
133
168
  }
134
- async #authenticate() {
135
- if (!this.#accessToken)
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 { response, data } = await this.#request('wallets/authenticate', { encryption_type: 'HPKE', recipient_public_key: Buffer.from(publicKey).toString('base64') }, this.#accessToken);
142
- if (!response.ok)
143
- throw new CreatorAuthorizationError('wallet_authentication_failed');
144
- const encrypted = object(data.encrypted_authorization_key);
145
- const expiresAt = typeof data.expires_at === 'number' ? data.expires_at : Date.parse(string(data.expires_at));
146
- if (!Number.isFinite(expiresAt) || expiresAt <= Date.now() + 5_000)
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
- if (!Array.isArray(data.wallets))
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 <= Date.now() || expiry > Date.now() + 60_000 || expiry > this.#keyExpiresAt) {
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.#accessToken = undefined;
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":"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"}
@@ -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"}
@@ -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 one short-lived creator authorization session. The human authorizes the agent once; every
48
- * exact transaction in this CLI invocation is then signed by that same ephemeral grant. Neither the
49
- * OAuth token nor the decrypted authorization key is written to disk or returned to callers.
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;AAM7C;;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,CAgGtF"}
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"}
@@ -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 one short-lived creator authorization session. The human authorizes the agent once; every
128
- * exact transaction in this CLI invocation is then signed by that same ephemeral grant. Neither the
129
- * OAuth token nor the decrypted authorization key is written to disk or returned to callers.
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
- const authorization = new CreatorAgentAuthorization({ appId: wallet.providerAppId });
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
- const device = await authorization.start();
149
- const verificationUrl = device.verificationUriComplete ?? device.verificationUri;
150
- console.log(`\n Authorize this agent once for the transaction group:`);
151
- console.log(` ${verificationUrl}`);
152
- console.log(` Code: ${device.userCode}\n`);
153
- openBrowser(verificationUrl);
154
- const wallets = await authorization.wait();
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;AAC7D,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAEzD;;8CAE8C;AAC9C,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,gCAAgC,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,8BAA8B,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,8BAA8B,CAAC,QAAgB,EAAE,GAAsB;IAC9E,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,4LAA4L,CAC7L,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAgB,EAChB,UAA+D,EAAE;IAEjE,OAAO,sBAAsB,CAAC,QAAQ,EAAE,EAAC,GAAG,OAAO,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;oCAEoC;AACpC,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB,EAChB,UAAoF,EAAE;IAEtF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrC,8BAA8B,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAqB,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAAC;QAC/B,OAAO,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC;QAC3C,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;IACH,IAAI,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IAClC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,SAAS;YACf,CAAC,CAAC,oEAAoE;YACtE,CAAC,CAAC,wGAAwG;gBACxG,0GAA0G,CAC/G,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QAClG,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,CAAC,IAAI,mBAAmB,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAChC,CAAC;AAaD;;oDAEoD;AACpD,MAAM,UAAU,yBAAyB,CACvC,EAAc,EACd,OAAe;IAEf,IAAI,EAAE,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,4CAA4C,EAAE,CAAC,OAAO,cAAc,OAAO,GAAG,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,sHAAsH,CACvH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC;IAChH,IACE,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,MAAM;QACb,MAAM,CAAC,IAAI;QACX,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,EACzE,CAAC;QACD,MAAM,IAAI,KAAK,CACb,qHAAqH,CACtH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;qEAEqE;AACrE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,MAAyB,OAAO,CAAC,GAAG;IACvF,IAAI,GAAG,CAAC,oBAAoB;QAAE,OAAO,oBAAoB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,MAAM,IAAI,gBAAgB,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC3G,MAAM,QAAQ,GAAG,+BAA+B,CAAC,gBAAgB,EAAE,UAAU,EAAE,wBAAwB,CAAC,CAAC;IACzG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,+GAA+G,CAAC,CAAC;IACnI,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,yDAAyD,OAAO,sCAAsC,CAAC,CAAC;IAC1H,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO;IAC3B,IAAI,CAAC;QACH,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAC3B,CAAC,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAC;YAC7B,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;gBAC5B,CAAC,CAAC,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,6BAA6B,EAAE,GAAG,CAAC,EAAC;gBAChE,CAAC,CAAC,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAC,CAAC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;QACnF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IACzD,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IAE9F,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAAC,EAAC,OAAO,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QAClG,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,CAAC,IAAI,mBAAmB,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,yBAAyB,CAAC,EAAC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAC,CAAC,CAAC;IACnF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3C,MAAM,eAAe,GAAG,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,eAAe,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,KAAK,eAAe,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC5C,WAAW,CAAC,eAAe,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAC7B,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,UAAU,IAAI,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CACtH,CAAC;QACF,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;QAErG,MAAM,YAAY,GAAG,gBAAgB,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC;QAClD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,CAAC,IAAI,CAAC,EAAc;gBACvB,IAAI,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAC5E,yBAAyB,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxC,IAAI,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE;oBAAE,MAAM,aAAa,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE;oBACrC,IAAI,EAAE,MAAM,CAAC,OAAO;oBACpB,EAAE,EAAE,EAAE,CAAC,EAAE;oBACT,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,KAAK,EAAE,EAAE,CAAC,KAAK;oBACf,QAAQ,EAAE,EAAE,CAAC,QAAQ;iBACtB,CAAC,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,UAAU,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC7D,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;oBACjC,WAAW;oBACX,OAAO,EAAE,KAAK,CAAC,EAAE;oBACjB,EAAE,EAAE,EAAE,CAAC,EAAE;oBACT,KAAK,EAAE,EAAE,CAAC,KAAK;oBACf,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC;iBACjC,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC;oBAChC,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ;oBAC1C,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI;oBAClC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,cAAc;oBACtD,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,aAAa;iBACrD,CAAC,CAAC;gBACH,IAAI,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE;oBAC5C,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,aAAa;oBACpD,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,MAAM;iBACP,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;gBACtC,OACE,SAAS,CAAC,KAAK,KAAK,UAAU;oBAC9B,SAAS,CAAC,KAAK,KAAK,YAAY;oBAChC,SAAS,CAAC,KAAK,KAAK,SAAS;oBAC7B,SAAS,CAAC,KAAK,KAAK,SAAS,EAC7B,CAAC;oBACD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;wBAC3B,MAAM,IAAI,KAAK,CACb,uBAAuB,WAAW,wHAAwH,CAC3J,CAAC;oBACJ,CAAC;oBACD,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;oBACnB,SAAS,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gBAClD,CAAC;gBACD,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;oBAClE,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,UAAU,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACzH,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAC,IAAI,EAAE,SAAS,CAAC,eAAe,EAAC,CAAC,CAAC;gBAChG,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;oBAAE,MAAM,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;gBAC9F,OAAO,EAAC,MAAM,EAAE,SAAS,CAAC,eAAe,EAAE,OAAO,EAAC,CAAC;YACtD,CAAC;YACD,KAAK;gBACH,MAAM,GAAG,IAAI,CAAC;gBACd,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1B,CAAC;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,aAAa,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,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.70",
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-token-api": "0.1.0-alpha.52",
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.70"
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, provisions or reuses the wallet, starts a Privy device authorization,
91
- and asks the human to match one code before an agent may
92
- sign the exact transaction group. Tokens and signing material stay in memory for that command and
93
- are discarded afterward.
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. after approval, repeat with `--sponsor`.
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
@@ -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 and one short-lived authorization per transaction group. Use it only
217
- when the live descriptor and account capabilities advertise the active chain. Test the exact flow on
218
- the reported paired testnet before production. Read [services.md](services.md) before using it.
219
- Sponsorship is zero-value and never a reason to skip the dry run or transaction summary.
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.