a1-ai 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/cjs/index.d.ts +373 -0
  2. package/dist/cjs/index.d.ts.map +1 -0
  3. package/dist/cjs/index.js +574 -0
  4. package/dist/cjs/index.js.map +1 -0
  5. package/dist/cjs/integrations.d.ts +232 -0
  6. package/dist/cjs/integrations.d.ts.map +1 -0
  7. package/dist/cjs/integrations.js +368 -0
  8. package/dist/cjs/integrations.js.map +1 -0
  9. package/dist/cjs/middleware.d.ts +159 -0
  10. package/dist/cjs/middleware.d.ts.map +1 -0
  11. package/dist/cjs/middleware.js +207 -0
  12. package/dist/cjs/middleware.js.map +1 -0
  13. package/dist/cjs/passport.d.ts +109 -0
  14. package/dist/cjs/passport.d.ts.map +1 -0
  15. package/dist/cjs/passport.js +158 -0
  16. package/dist/cjs/passport.js.map +1 -0
  17. package/dist/cjs/swarm.d.ts +78 -0
  18. package/dist/cjs/swarm.d.ts.map +1 -0
  19. package/dist/cjs/swarm.js +125 -0
  20. package/dist/cjs/swarm.js.map +1 -0
  21. package/dist/esm/index.d.ts +373 -0
  22. package/dist/esm/index.d.ts.map +1 -0
  23. package/dist/esm/index.js +562 -0
  24. package/dist/esm/index.js.map +1 -0
  25. package/dist/esm/integrations.d.ts +232 -0
  26. package/dist/esm/integrations.d.ts.map +1 -0
  27. package/dist/esm/integrations.js +358 -0
  28. package/dist/esm/integrations.js.map +1 -0
  29. package/dist/esm/middleware.d.ts +159 -0
  30. package/dist/esm/middleware.d.ts.map +1 -0
  31. package/dist/esm/middleware.js +201 -0
  32. package/dist/esm/middleware.js.map +1 -0
  33. package/dist/esm/passport.d.ts +109 -0
  34. package/dist/esm/passport.d.ts.map +1 -0
  35. package/dist/esm/passport.js +151 -0
  36. package/dist/esm/passport.js.map +1 -0
  37. package/dist/esm/swarm.d.ts +78 -0
  38. package/dist/esm/swarm.d.ts.map +1 -0
  39. package/dist/esm/swarm.js +120 -0
  40. package/dist/esm/swarm.js.map +1 -0
  41. package/package.json +112 -0
@@ -0,0 +1,562 @@
1
+ /**
2
+ * a1 — TypeScript/Node.js client for the a1 AI agent
3
+ * authorization protocol.
4
+ *
5
+ * Wraps the a1-gateway REST API. No Rust toolchain required.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { A1Client } from "a1";
10
+ *
11
+ * const client = new A1Client("http://localhost:8080");
12
+ *
13
+ * const result = await client.authorize({
14
+ * chain: signedChain,
15
+ * intentName: "trade.equity",
16
+ * intentParams: { symbol: "AAPL" },
17
+ * executorPkHex: "...",
18
+ * });
19
+ * ```
20
+ */
21
+ function obj(raw, ctx) {
22
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw))
23
+ throw new Error(`${ctx}: expected object, got ${typeof raw}`);
24
+ return raw;
25
+ }
26
+ function str(raw, ctx) {
27
+ if (typeof raw !== "string")
28
+ throw new Error(`${ctx}: expected string`);
29
+ return raw;
30
+ }
31
+ function num(raw, ctx) {
32
+ if (typeof raw !== "number")
33
+ throw new Error(`${ctx}: expected number`);
34
+ return raw;
35
+ }
36
+ function bool(raw, ctx) {
37
+ if (typeof raw !== "boolean")
38
+ throw new Error(`${ctx}: expected boolean`);
39
+ return raw;
40
+ }
41
+ function arr(raw, ctx, item) {
42
+ if (!Array.isArray(raw))
43
+ throw new Error(`${ctx}: expected array`);
44
+ return raw.map((v, i) => item(v, `${ctx}[${i}]`));
45
+ }
46
+ function optStr(raw, _ctx) {
47
+ return typeof raw === "string" ? raw : undefined;
48
+ }
49
+ function optBool(raw, _ctx) {
50
+ return typeof raw === "boolean" ? raw : undefined;
51
+ }
52
+ // ── Validators ────────────────────────────────────────────────────────────────
53
+ const WellKnownConfigSchema = (raw) => {
54
+ const o = obj(raw, "WellKnownConfig");
55
+ return {
56
+ issuer: str(o["issuer"], "issuer"),
57
+ gateway_signing_pk_hex: str(o["gateway_signing_pk_hex"], "gateway_signing_pk_hex"),
58
+ gateway_did: optStr(o["gateway_did"], "gateway_did") ?? "",
59
+ authorization_endpoint: str(o["authorization_endpoint"], "authorization_endpoint"),
60
+ batch_authorize_endpoint: str(o["batch_authorize_endpoint"], "batch_authorize_endpoint"),
61
+ passport_authorize_endpoint: optStr(o["passport_authorize_endpoint"], "passport_authorize_endpoint") ?? "",
62
+ cert_issuance_endpoint: str(o["cert_issuance_endpoint"], "cert_issuance_endpoint"),
63
+ cert_revoke_endpoint: str(o["cert_revoke_endpoint"], "cert_revoke_endpoint"),
64
+ cert_revoke_batch_endpoint: str(o["cert_revoke_batch_endpoint"], "cert_revoke_batch_endpoint"),
65
+ token_verify_endpoint: str(o["token_verify_endpoint"], "token_verify_endpoint"),
66
+ crl_endpoint: optStr(o["crl_endpoint"], "crl_endpoint") ?? "",
67
+ did_resolve_endpoint: optStr(o["did_resolve_endpoint"], "did_resolve_endpoint") ?? "",
68
+ did_gateway_endpoint: optStr(o["did_gateway_endpoint"], "did_gateway_endpoint") ?? "",
69
+ vc_issue_endpoint: optStr(o["vc_issue_endpoint"], "vc_issue_endpoint") ?? "",
70
+ vc_verify_endpoint: optStr(o["vc_verify_endpoint"], "vc_verify_endpoint") ?? "",
71
+ anchor_endpoint: optStr(o["anchor_endpoint"], "anchor_endpoint") ?? "",
72
+ negotiate_endpoint: optStr(o["negotiate_endpoint"], "negotiate_endpoint") ?? "",
73
+ jwt_exchange_endpoint: optStr(o["jwt_exchange_endpoint"], "jwt_exchange_endpoint") ?? "",
74
+ webhook_status_endpoint: optStr(o["webhook_status_endpoint"], "webhook_status_endpoint") ?? "",
75
+ tenant_info_endpoint: optStr(o["tenant_info_endpoint"], "tenant_info_endpoint") ?? "",
76
+ a1_version: str(o["a1_version"], "a1_version"),
77
+ protocol_enforcer: optStr(o["protocol_enforcer"], "protocol_enforcer") ?? "dyolo_v2.8.0",
78
+ supported_algorithms: arr(o["supported_algorithms"], "supported_algorithms", (v, c) => str(v, c)),
79
+ supported_features: Array.isArray(o["supported_features"]) ? arr(o["supported_features"], "supported_features", (v, c) => str(v, c)) : [],
80
+ supported_networks: Array.isArray(o["supported_networks"]) ? arr(o["supported_networks"], "supported_networks", (v, c) => str(v, c)) : [],
81
+ jwt_exchange_enabled: optBool(o["jwt_exchange_enabled"], "jwt_exchange_enabled") ?? false,
82
+ webhook_enabled: optBool(o["webhook_enabled"], "webhook_enabled") ?? false,
83
+ multi_tenant_enabled: optBool(o["multi_tenant_enabled"], "multi_tenant_enabled") ?? false,
84
+ };
85
+ };
86
+ const IssueCertRawResultSchema = (raw) => {
87
+ const o = obj(raw, "IssueCertResult");
88
+ return {
89
+ fingerprint_hex: str(o["fingerprint_hex"], "fingerprint_hex"),
90
+ scope_root_hex: str(o["scope_root_hex"], "scope_root_hex"),
91
+ };
92
+ };
93
+ const RevokeBatchRawResultSchema = (raw) => {
94
+ const o = obj(raw, "RevokeBatchResult");
95
+ return {
96
+ revoked_count: num(o["revoked_count"], "revoked_count"),
97
+ failed: arr(o["failed"], "failed", (v, c) => str(v, c)),
98
+ };
99
+ };
100
+ const CertStatusSchema = (raw) => {
101
+ const o = obj(raw, "CertStatus");
102
+ return {
103
+ fingerprint: str(o["fingerprint"], "fingerprint"),
104
+ revoked: bool(o["revoked"], "revoked"),
105
+ };
106
+ };
107
+ const VerifiedTokenSchema = (raw) => {
108
+ const o = obj(raw, "VerifiedToken");
109
+ const r = obj(o["receipt"], "receipt");
110
+ return {
111
+ receipt: {
112
+ chain_depth: num(r["chain_depth"], "receipt.chain_depth"),
113
+ verified_scope_root: str(r["verified_scope_root"], "receipt.verified_scope_root"),
114
+ intent: str(r["intent"], "receipt.intent"),
115
+ verified_at_unix: num(r["verified_at_unix"], "receipt.verified_at_unix"),
116
+ chain_fingerprint: str(r["chain_fingerprint"], "receipt.chain_fingerprint"),
117
+ },
118
+ mac: str(o["mac"], "mac"),
119
+ };
120
+ };
121
+ const AuthorizeRawResultSchema = (raw) => {
122
+ const o = obj(raw, "AuthorizeResult");
123
+ const result = {
124
+ authorized: bool(o["authorized"], "authorized"),
125
+ chain_depth: num(o["chain_depth"], "chain_depth"),
126
+ chain_fingerprint: str(o["chain_fingerprint"], "chain_fingerprint"),
127
+ verified_at_unix: num(o["verified_at_unix"], "verified_at_unix"),
128
+ };
129
+ if (o["token"] !== undefined && o["token"] !== null) {
130
+ result.token = VerifiedTokenSchema(o["token"]);
131
+ }
132
+ return result;
133
+ };
134
+ const BatchItemRawSchema = (raw) => {
135
+ const o = obj(raw, "BatchItem");
136
+ return {
137
+ intent_name: str(o["intent_name"], "intent_name"),
138
+ authorized: bool(o["authorized"], "authorized"),
139
+ chain_fingerprint: optStr(o["chain_fingerprint"], "chain_fingerprint"),
140
+ error: optStr(o["error"], "error"),
141
+ error_code: optStr(o["error_code"], "error_code"),
142
+ };
143
+ };
144
+ const BatchAuthorizeRawResultSchema = (raw) => {
145
+ const o = obj(raw, "BatchAuthorizeResult");
146
+ return {
147
+ all_authorized: bool(o["all_authorized"], "all_authorized"),
148
+ authorized_count: num(o["authorized_count"], "authorized_count"),
149
+ total_count: num(o["total_count"], "total_count"),
150
+ results: arr(o["results"], "results", (v, c) => BatchItemRawSchema(v)),
151
+ };
152
+ };
153
+ const VerifyTokenRawResultSchema = (raw) => {
154
+ const o = obj(raw, "VerifyTokenResult");
155
+ return {
156
+ valid: bool(o["valid"], "valid"),
157
+ chain_depth: num(o["chain_depth"], "chain_depth"),
158
+ chain_fingerprint: str(o["chain_fingerprint"], "chain_fingerprint"),
159
+ verified_at_unix: num(o["verified_at_unix"], "verified_at_unix"),
160
+ };
161
+ };
162
+ const HealthRawResultSchema = (raw) => {
163
+ const o = obj(raw, "HealthResult");
164
+ return {
165
+ status: str(o["status"], "status"),
166
+ signing_pk_hex: optStr(o["signing_pk_hex"], "signing_pk_hex"),
167
+ version: str(o["version"], "version"),
168
+ };
169
+ };
170
+ const EmptyResponseSchema = (raw) => {
171
+ return obj(raw, "EmptyResponse");
172
+ };
173
+ export class A1Error extends Error {
174
+ code;
175
+ status;
176
+ constructor(message, code, status) {
177
+ super(message);
178
+ this.name = "A1Error";
179
+ this.code = code;
180
+ this.status = status;
181
+ }
182
+ }
183
+ // ── A1Client ─────────────────────────────────────────────────────────────────
184
+ export class A1Client {
185
+ base;
186
+ timeoutMs;
187
+ extraHeaders;
188
+ retry;
189
+ // Minimal Circuit Breaker state
190
+ cbFailureCount = 0;
191
+ cbLastFailureTime = 0;
192
+ CB_THRESHOLD = 5;
193
+ CB_RESET_TIMEOUT_MS = 30_000;
194
+ constructor(baseUrl, opts = {}) {
195
+ this.base = baseUrl.replace(/\/$/, "");
196
+ this.timeoutMs = opts.timeoutMs ?? 10_000;
197
+ this.extraHeaders = opts.headers ?? {};
198
+ this.retry = {
199
+ maxRetries: opts.retry?.maxRetries ?? 3,
200
+ initialDelayMs: opts.retry?.initialDelayMs ?? 500,
201
+ backoffFactor: opts.retry?.backoffFactor ?? 2,
202
+ };
203
+ }
204
+ /** Fetch the gateway's OIDC-style discovery document. */
205
+ async wellKnown() {
206
+ return this.get("/.well-known/a1-configuration", WellKnownConfigSchema);
207
+ }
208
+ /** Issue a delegation certificate from the gateway's signing key. */
209
+ async issueCert(opts) {
210
+ const body = {
211
+ delegate_pk_hex: opts.delegatePkHex,
212
+ intents: opts.intents,
213
+ ...(opts.ttlSeconds !== undefined ? { ttl_seconds: opts.ttlSeconds } : {}),
214
+ ...(opts.maxDepth !== undefined ? { max_depth: opts.maxDepth } : {}),
215
+ ...(opts.extensions ? { extensions: opts.extensions } : {}),
216
+ };
217
+ const raw = await this.post("/v1/cert/issue", IssueCertRawResultSchema, body);
218
+ return {
219
+ fingerprintHex: raw.fingerprint_hex,
220
+ scopeRootHex: raw.scope_root_hex,
221
+ };
222
+ }
223
+ /** Revoke a single certificate by its fingerprint. */
224
+ async revokeCert(fingerprintHex) {
225
+ await this.post("/v1/cert/revoke", EmptyResponseSchema, { fingerprint_hex: fingerprintHex });
226
+ }
227
+ /** Revoke multiple certificates in a single round-trip. */
228
+ async revokeCertsBatch(fingerprints) {
229
+ const raw = await this.post("/v1/cert/revoke-batch", RevokeBatchRawResultSchema, { fingerprints });
230
+ return { revokedCount: raw.revoked_count, failed: raw.failed };
231
+ }
232
+ /** Inspect the revocation status of a certificate. */
233
+ async inspectCert(fingerprintHex) {
234
+ return this.get(`/v1/cert/${encodeURIComponent(fingerprintHex)}`, CertStatusSchema);
235
+ }
236
+ /** Authorize a single agent intent against a delegation chain. */
237
+ async authorize(opts) {
238
+ const body = {
239
+ chain: opts.chain,
240
+ intent_name: opts.intentName,
241
+ executor_pk_hex: opts.executorPkHex,
242
+ ...(opts.intentParams ? { intent_params: opts.intentParams } : {}),
243
+ ...(opts.returnToken !== undefined ? { return_token: opts.returnToken } : {}),
244
+ ...(opts.requestId ? { request_id: opts.requestId } : {}),
245
+ };
246
+ const raw = await this.post("/v1/authorize", AuthorizeRawResultSchema, body);
247
+ return {
248
+ authorized: raw.authorized,
249
+ chainDepth: raw.chain_depth,
250
+ chainFingerprint: raw.chain_fingerprint,
251
+ verifiedAtUnix: raw.verified_at_unix,
252
+ token: raw.token,
253
+ };
254
+ }
255
+ /**
256
+ * Authorize multiple intents atomically against a single delegation chain.
257
+ *
258
+ * If any intent fails verification, no nonces are consumed and the full
259
+ * batch is rejected. Check `allAuthorized` before acting on results.
260
+ */
261
+ async authorizeBatch(opts) {
262
+ const body = {
263
+ chain: opts.chain,
264
+ executor_pk_hex: opts.executorPkHex,
265
+ intents: opts.intents.map((i) => ({
266
+ name: i.name,
267
+ ...(i.params ? { params: i.params } : {}),
268
+ })),
269
+ };
270
+ const raw = await this.post("/v1/authorize/batch", BatchAuthorizeRawResultSchema, body);
271
+ return {
272
+ allAuthorized: raw.all_authorized,
273
+ authorizedCount: raw.authorized_count,
274
+ totalCount: raw.total_count,
275
+ results: raw.results.map((r) => ({
276
+ intentName: r.intent_name,
277
+ authorized: r.authorized,
278
+ chainFingerprint: r.chain_fingerprint,
279
+ error: r.error,
280
+ errorCode: r.error_code,
281
+ })),
282
+ };
283
+ }
284
+ /** Verify the HMAC on a VerifiedToken issued by a previous authorize call. */
285
+ async verifyToken(opts) {
286
+ const raw = await this.post("/v1/token/verify", VerifyTokenRawResultSchema, opts.token);
287
+ return {
288
+ valid: raw.valid,
289
+ chainDepth: raw.chain_depth,
290
+ chainFingerprint: raw.chain_fingerprint,
291
+ verifiedAtUnix: raw.verified_at_unix,
292
+ };
293
+ }
294
+ /** Health check — returns the gateway's signing public key and version. */
295
+ async health() {
296
+ const raw = await this.get("/health", HealthRawResultSchema);
297
+ return {
298
+ status: raw.status,
299
+ signing_pk_hex: raw.signing_pk_hex ?? "",
300
+ version: raw.version,
301
+ };
302
+ }
303
+ // ── DID + Verifiable Credentials ──────────────────────────────────────────
304
+ /** Resolve a W3C DID Document from an Ed25519 public key (hex). */
305
+ async resolveDid(pkHex) {
306
+ return this.get(`/v1/did/${pkHex}`, (v) => v);
307
+ }
308
+ /** Return the W3C DID Document for the gateway's own signing identity. */
309
+ async gatewayDid() {
310
+ return this.get("/v1/did/gateway", (v) => v);
311
+ }
312
+ /**
313
+ * Issue a W3C Verifiable Credential asserting an agent's authorized capabilities.
314
+ * Requires `Authorization: Bearer <A1_ADMIN_SECRET>` header.
315
+ */
316
+ async issueVc(opts) {
317
+ const body = {
318
+ subject_pk_hex: opts.subjectPkHex,
319
+ passport_namespace: opts.passportNamespace,
320
+ capabilities: opts.capabilities,
321
+ ttl_seconds: opts.ttlSeconds ?? 86400,
322
+ };
323
+ if (opts.chainFingerprintHex)
324
+ body["chain_fingerprint_hex"] = opts.chainFingerprintHex;
325
+ return this.post("/v1/vc/issue", (v) => v, body);
326
+ }
327
+ /**
328
+ * Verify a W3C Verifiable Credential. Works for any `did:a1:` issuer.
329
+ */
330
+ async verifyVc(credential) {
331
+ return this.post("/v1/vc/verify", (v) => v, { credential });
332
+ }
333
+ // ── On-chain anchoring ────────────────────────────────────────────────────
334
+ /**
335
+ * Prepare on-chain anchor calldata for a ZK chain commitment.
336
+ *
337
+ * Returns ABI-encoded EVM calldata or Solana instruction data.
338
+ * Submit via ethers.js, viem, web3.py, or `a1 anchor <receipt.json>`.
339
+ *
340
+ * ```typescript
341
+ * const anchor = await client.anchorReceipt({
342
+ * commitment: authorizeResult.commitment,
343
+ * passportDid: "did:a1:...",
344
+ * network: "ethereum",
345
+ * });
346
+ *
347
+ * // Submit with viem:
348
+ * await walletClient.sendTransaction({
349
+ * to: A1_ANCHOR_CONTRACT,
350
+ * data: `0x${anchor.evm_calldata}`,
351
+ * });
352
+ * ```
353
+ */
354
+ async anchorReceipt(opts) {
355
+ return this.post("/v1/anchor", (v) => v, {
356
+ commitment: opts.commitment,
357
+ passport_did: opts.passportDid,
358
+ network: opts.network ?? "ethereum",
359
+ });
360
+ }
361
+ // ── Agent negotiation ─────────────────────────────────────────────────────
362
+ /**
363
+ * Request a delegation certificate from this gateway (AIP negotiation protocol).
364
+ *
365
+ * Builds and signs a `CapabilityRequest`, sends it to `/v1/negotiate`,
366
+ * and returns the `NegotiationResult` with a ready-to-use cert.
367
+ *
368
+ * ```typescript
369
+ * const result = await client.negotiateDelegation({
370
+ * requesterSigningKeyHex: myPrivateKeyHex,
371
+ * requestedCapabilities: ["trade.equity"],
372
+ * intentName: "trade.equity",
373
+ * ttlSeconds: 3600,
374
+ * });
375
+ * // result.cert is ready to push onto a DyoloChain
376
+ * ```
377
+ */
378
+ async negotiateDelegation(opts) {
379
+ const { requesterSigningKeyHex, requestedCapabilities, intentName, ttlSeconds = 3600 } = opts;
380
+ const skBytes = hexToBytes(requesterSigningKeyHex);
381
+ const { sign, getPublicKey } = await import("@noble/ed25519");
382
+ const pkBytes = await getPublicKey(skBytes);
383
+ const pkHex = bytesToHex(pkBytes);
384
+ const requesterDid = `did:a1:${pkHex}`;
385
+ const nonce = crypto.getRandomValues(new Uint8Array(16));
386
+ const nonceHex = bytesToHex(nonce);
387
+ const timestamp = Math.floor(Date.now() / 1000);
388
+ const msgBytes = buildRequestSignable(requesterDid, nonce, timestamp, ttlSeconds, intentName, requestedCapabilities);
389
+ const sigBytes = await sign(msgBytes, skBytes);
390
+ const sigHex = bytesToHex(sigBytes);
391
+ return this.post("/v1/negotiate", (v) => v, {
392
+ requester_did: requesterDid,
393
+ requester_pk_hex: pkHex,
394
+ requested_capabilities: requestedCapabilities,
395
+ intent_name: intentName,
396
+ ttl_secs: ttlSeconds,
397
+ nonce: nonceHex,
398
+ timestamp_unix: timestamp,
399
+ signature: sigHex,
400
+ });
401
+ }
402
+ // ── Private helpers ──────────────────────────────────────────────────────
403
+ async post(path, schema, body) {
404
+ return this.request("POST", path, schema, body);
405
+ }
406
+ async get(path, schema) {
407
+ return this.request("GET", path, schema, undefined);
408
+ }
409
+ async request(method, path, schema, body) {
410
+ let attempt = 0;
411
+ while (true) {
412
+ // Circuit Breaker Check
413
+ if (this.cbFailureCount >= this.CB_THRESHOLD) {
414
+ if (Date.now() - this.cbLastFailureTime < this.CB_RESET_TIMEOUT_MS) {
415
+ throw new A1Error("Circuit breaker is open", "CIRCUIT_BREAKER_OPEN", 503);
416
+ }
417
+ this.cbFailureCount = 0; // Attempt half-open reset
418
+ }
419
+ const controller = new AbortController();
420
+ const timer = setTimeout(() => controller.abort(), this.timeoutMs);
421
+ try {
422
+ const response = await fetch(`${this.base}${path}`, {
423
+ method,
424
+ headers: {
425
+ "Content-Type": "application/json",
426
+ Accept: "application/json",
427
+ ...this.extraHeaders,
428
+ },
429
+ signal: controller.signal,
430
+ ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
431
+ });
432
+ const text = await response.text();
433
+ let parsed;
434
+ try {
435
+ parsed = text ? JSON.parse(text) : {};
436
+ }
437
+ catch {
438
+ throw new A1Error(`Gateway returned non-JSON response (status ${response.status})`);
439
+ }
440
+ if (!response.ok) {
441
+ const obj = parsed;
442
+ const error = new A1Error(String(obj.error ?? `HTTP ${response.status}`), typeof obj.error_code === "string" ? obj.error_code : undefined, response.status);
443
+ const isTransient = [429, 502, 503, 504].includes(response.status);
444
+ // Update circuit breaker BEFORE retry logic for critical overload status codes
445
+ if (isTransient) {
446
+ this.recordFailure();
447
+ // Fail fast if the breaker trips *during* the retry loop
448
+ if (this.cbFailureCount >= this.CB_THRESHOLD) {
449
+ throw new A1Error("Circuit breaker tripped during retry loop", "CIRCUIT_BREAKER_OPEN", 503);
450
+ }
451
+ }
452
+ // Retry on transient status codes IF circuit breaker isn't tripped
453
+ if (attempt < this.retry.maxRetries && isTransient) {
454
+ attempt++;
455
+ const delay = this.retry.initialDelayMs * Math.pow(this.retry.backoffFactor, attempt - 1);
456
+ await new Promise(r => setTimeout(r, delay));
457
+ continue;
458
+ }
459
+ // We only record failure for network/server errors, not normal 400/403 rejections
460
+ if (!isTransient && response.status >= 500) {
461
+ this.recordFailure();
462
+ }
463
+ throw error;
464
+ }
465
+ this.cbFailureCount = 0; // Reset on success
466
+ try {
467
+ return schema(parsed);
468
+ }
469
+ catch (validationErr) {
470
+ throw new A1Error(`Gateway response failed validation: ${validationErr.message}`, "SCHEMA_VALIDATION_ERROR");
471
+ }
472
+ }
473
+ catch (err) {
474
+ if (err instanceof Error && err.name === "AbortError") {
475
+ this.recordFailure();
476
+ throw new A1Error(`Request timed out after ${this.timeoutMs}ms`, "TIMEOUT", 408);
477
+ }
478
+ if (attempt < this.retry.maxRetries) {
479
+ attempt++;
480
+ const delay = this.retry.initialDelayMs * Math.pow(this.retry.backoffFactor, attempt - 1);
481
+ await new Promise(r => setTimeout(r, delay));
482
+ continue;
483
+ }
484
+ this.recordFailure();
485
+ if (err instanceof A1Error)
486
+ throw err;
487
+ throw new A1Error(`Network error: ${err.message}`);
488
+ }
489
+ finally {
490
+ clearTimeout(timer);
491
+ }
492
+ }
493
+ }
494
+ recordFailure() {
495
+ this.cbFailureCount++;
496
+ this.cbLastFailureTime = Date.now();
497
+ }
498
+ }
499
+ export default A1Client;
500
+ // ── Negotiate helpers (used by negotiateDelegation) ───────────────────────────
501
+ function hexToBytes(hex) {
502
+ const clean = hex.startsWith("0x") ? hex.slice(2) : hex;
503
+ const arr = new Uint8Array(clean.length / 2);
504
+ for (let i = 0; i < arr.length; i++) {
505
+ arr[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16);
506
+ }
507
+ return arr;
508
+ }
509
+ function bytesToHex(bytes) {
510
+ return Array.from(bytes).map(b => b.toString(16).padStart(2, "0")).join("");
511
+ }
512
+ function writeU64LE(n, buf, offset) {
513
+ const lo = n >>> 0;
514
+ const hi = Math.floor(n / 0x100000000) >>> 0;
515
+ buf[offset] = lo & 0xFF;
516
+ buf[offset + 1] = (lo >>> 8) & 0xFF;
517
+ buf[offset + 2] = (lo >>> 16) & 0xFF;
518
+ buf[offset + 3] = (lo >>> 24) & 0xFF;
519
+ buf[offset + 4] = hi & 0xFF;
520
+ buf[offset + 5] = (hi >>> 8) & 0xFF;
521
+ buf[offset + 6] = (hi >>> 16) & 0xFF;
522
+ buf[offset + 7] = (hi >>> 24) & 0xFF;
523
+ }
524
+ function buildRequestSignable(requesterDid, nonce, timestamp, ttl, intentName, caps) {
525
+ const enc = new TextEncoder();
526
+ const didBytes = enc.encode(requesterDid);
527
+ const intentBytes = enc.encode(intentName);
528
+ const capBuffers = caps.map(c => enc.encode(c));
529
+ const totalLen = 8 + didBytes.length +
530
+ 16 +
531
+ 8 + 8 +
532
+ 8 + intentBytes.length +
533
+ 8 + capBuffers.reduce((a, b) => a + 8 + b.length, 0);
534
+ const buf = new Uint8Array(totalLen);
535
+ let pos = 0;
536
+ writeU64LE(didBytes.length, buf, pos);
537
+ pos += 8;
538
+ buf.set(didBytes, pos);
539
+ pos += didBytes.length;
540
+ buf.set(nonce, pos);
541
+ pos += 16;
542
+ writeU64LE(timestamp, buf, pos);
543
+ pos += 8;
544
+ writeU64LE(ttl, buf, pos);
545
+ pos += 8;
546
+ writeU64LE(intentBytes.length, buf, pos);
547
+ pos += 8;
548
+ buf.set(intentBytes, pos);
549
+ pos += intentBytes.length;
550
+ writeU64LE(caps.length, buf, pos);
551
+ pos += 8;
552
+ for (const cb of capBuffers) {
553
+ writeU64LE(cb.length, buf, pos);
554
+ pos += 8;
555
+ buf.set(cb, pos);
556
+ pos += cb.length;
557
+ }
558
+ return buf;
559
+ }
560
+ export { PassportClient, PassportError, withA1Passport, PassportGuard } from "./passport.js";
561
+ export { A1Middleware, exchangeJwt, verifyWebhookSignature } from "./middleware.js";
562
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}