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.
- package/dist/cjs/index.d.ts +373 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +574 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/integrations.d.ts +232 -0
- package/dist/cjs/integrations.d.ts.map +1 -0
- package/dist/cjs/integrations.js +368 -0
- package/dist/cjs/integrations.js.map +1 -0
- package/dist/cjs/middleware.d.ts +159 -0
- package/dist/cjs/middleware.d.ts.map +1 -0
- package/dist/cjs/middleware.js +207 -0
- package/dist/cjs/middleware.js.map +1 -0
- package/dist/cjs/passport.d.ts +109 -0
- package/dist/cjs/passport.d.ts.map +1 -0
- package/dist/cjs/passport.js +158 -0
- package/dist/cjs/passport.js.map +1 -0
- package/dist/cjs/swarm.d.ts +78 -0
- package/dist/cjs/swarm.d.ts.map +1 -0
- package/dist/cjs/swarm.js +125 -0
- package/dist/cjs/swarm.js.map +1 -0
- package/dist/esm/index.d.ts +373 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +562 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/integrations.d.ts +232 -0
- package/dist/esm/integrations.d.ts.map +1 -0
- package/dist/esm/integrations.js +358 -0
- package/dist/esm/integrations.js.map +1 -0
- package/dist/esm/middleware.d.ts +159 -0
- package/dist/esm/middleware.d.ts.map +1 -0
- package/dist/esm/middleware.js +201 -0
- package/dist/esm/middleware.js.map +1 -0
- package/dist/esm/passport.d.ts +109 -0
- package/dist/esm/passport.d.ts.map +1 -0
- package/dist/esm/passport.js +151 -0
- package/dist/esm/passport.js.map +1 -0
- package/dist/esm/swarm.d.ts +78 -0
- package/dist/esm/swarm.d.ts.map +1 -0
- package/dist/esm/swarm.js +120 -0
- package/dist/esm/swarm.js.map +1 -0
- 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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"}
|