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