@astrasyncai/verification-gateway 5.13.0 → 5.15.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/README.md +27 -17
- package/dist/adapters/express.d.mts +1 -1
- package/dist/adapters/express.d.ts +1 -1
- package/dist/adapters/express.js +504 -249
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +504 -249
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/mcp.d.mts +1 -1
- package/dist/adapters/mcp.d.ts +1 -1
- package/dist/adapters/mcp.js +20 -6
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +20 -6
- package/dist/adapters/mcp.mjs.map +1 -1
- package/dist/adapters/nextjs.d.mts +1 -1
- package/dist/adapters/nextjs.d.ts +1 -1
- package/dist/adapters/nextjs.js +487 -248
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +487 -248
- package/dist/adapters/nextjs.mjs.map +1 -1
- package/dist/adapters/sdk.d.mts +18 -10
- package/dist/adapters/sdk.d.ts +18 -10
- package/dist/adapters/sdk.js +80 -23
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +80 -23
- package/dist/adapters/sdk.mjs.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/index.mjs +1 -1
- package/dist/agent/index.mjs.map +1 -1
- package/dist/bin/astrasync-claude-hook.js +82 -20
- package/dist/bin/astrasync-codex-hook.js +82 -20
- package/dist/bin/astrasync-guard.js +82 -20
- package/dist/bin/astrasync.js +316 -43
- package/dist/browser/background.js +77 -15
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +87 -15
- package/dist/browser/background.mjs.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +1 -1
- package/dist/cli/index.mjs.map +1 -1
- package/dist/codex/index.js +82 -20
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +92 -20
- package/dist/codex/index.mjs.map +1 -1
- package/dist/cursor/extension.js +82 -20
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +92 -20
- package/dist/cursor/extension.mjs.map +1 -1
- package/dist/edge-config.d.mts +31 -2
- package/dist/edge-config.d.ts +31 -2
- package/dist/edge-config.js +35 -5
- package/dist/edge-config.js.map +1 -1
- package/dist/edge-config.mjs +32 -4
- package/dist/edge-config.mjs.map +1 -1
- package/dist/edge-core/index.d.mts +43 -6
- package/dist/edge-core/index.d.ts +43 -6
- package/dist/edge-core/index.js +120 -19
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +118 -19
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/gateway/gateway.js +77 -15
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +87 -15
- package/dist/gateway/gateway.mjs.map +1 -1
- package/dist/git-trigger/git-hooks.d.mts +1 -1
- package/dist/git-trigger/git-hooks.d.ts +1 -1
- package/dist/index.d.mts +1314 -34
- package/dist/index.d.ts +1314 -34
- package/dist/index.js +5143 -2621
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5090 -2623
- package/dist/index.mjs.map +1 -1
- package/dist/registration/index.d.mts +28 -2
- package/dist/registration/index.d.ts +28 -2
- package/dist/registration/index.js +18 -3
- package/dist/registration/index.js.map +1 -1
- package/dist/registration/index.mjs +15 -2
- package/dist/registration/index.mjs.map +1 -1
- package/dist/transport/index.d.mts +7 -5
- package/dist/transport/index.d.ts +7 -5
- package/dist/transport/index.js +61 -5
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/index.mjs +67 -11
- package/dist/transport/index.mjs.map +1 -1
- package/dist/{types-C_b4QTyO.d.ts → types-DtJjlW4O.d.ts} +104 -10
- package/dist/{types-BCkwBA84.d.mts → types-Dxf9DBpr.d.mts} +106 -12
- package/dist/{types-BCkwBA84.d.ts → types-Dxf9DBpr.d.ts} +106 -12
- package/dist/{types-DlshIIR-.d.mts → types-Eg6VoBNH.d.mts} +104 -10
- package/dist/ui/index.d.mts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/verify.d.mts +1 -1
- package/dist/verify.d.ts +1 -1
- package/dist/verify.js +20 -6
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +20 -6
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -3713,7 +3713,7 @@ Policy saved to ${outputPath}`);
|
|
|
3713
3713
|
};
|
|
3714
3714
|
|
|
3715
3715
|
// src/version.ts
|
|
3716
|
-
var SDK_VERSION = "5.
|
|
3716
|
+
var SDK_VERSION = "5.15.0";
|
|
3717
3717
|
|
|
3718
3718
|
// src/http.ts
|
|
3719
3719
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -4936,6 +4936,7 @@ async function callVerifyAccessAPI(config, request2) {
|
|
|
4936
4936
|
if (requestData.invocationProtocol) body.invocationProtocol = requestData.invocationProtocol;
|
|
4937
4937
|
if (requestData.commercePhase) body.commercePhase = requestData.commercePhase;
|
|
4938
4938
|
if (requestData.checkoutSessionId) body.checkoutSessionId = requestData.checkoutSessionId;
|
|
4939
|
+
if (requestData.checkoutJwt) body.checkoutJwt = requestData.checkoutJwt;
|
|
4939
4940
|
if (requestData.checkoutItems) body.checkoutItems = requestData.checkoutItems;
|
|
4940
4941
|
if (requestData.buyerEmail) body.buyerEmail = requestData.buyerEmail;
|
|
4941
4942
|
if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
|
|
@@ -5086,7 +5087,8 @@ async function verify(config, request2, options) {
|
|
|
5086
5087
|
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access decisions (verified ID + runtime challenge + PDLSS + trust score). To gate access to an endpoint, configure the endpoint's trust_score_requirement server-side."
|
|
5087
5088
|
);
|
|
5088
5089
|
}
|
|
5089
|
-
|
|
5090
|
+
const uncacheable = Boolean(request2.commerceArtifacts);
|
|
5091
|
+
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
|
|
5090
5092
|
const cached = getCachedResult(request2, mergedConfig.counterpartyId);
|
|
5091
5093
|
if (cached) {
|
|
5092
5094
|
if (mergedConfig.debug) {
|
|
@@ -5167,7 +5169,10 @@ async function verify(config, request2, options) {
|
|
|
5167
5169
|
// MERCHANT caller only (bridge callers strip it before the agent plane).
|
|
5168
5170
|
settlementToken: apiResponse.settlementToken,
|
|
5169
5171
|
// 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
|
|
5170
|
-
fulfilment: apiResponse.fulfilment
|
|
5172
|
+
fulfilment: apiResponse.fulfilment,
|
|
5173
|
+
mandates: apiResponse.mandates,
|
|
5174
|
+
kyaToken: apiResponse.kyaToken,
|
|
5175
|
+
aep: apiResponse.aep
|
|
5171
5176
|
};
|
|
5172
5177
|
return result2;
|
|
5173
5178
|
}
|
|
@@ -5177,7 +5182,10 @@ async function verify(config, request2, options) {
|
|
|
5177
5182
|
trustScore: apiResponse.agent.trustScore,
|
|
5178
5183
|
trustLevel: getTrustLevel(apiResponse.agent.trustScore),
|
|
5179
5184
|
blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
|
|
5180
|
-
status: apiResponse.agent.agentStatus
|
|
5185
|
+
status: apiResponse.agent.agentStatus,
|
|
5186
|
+
...apiResponse.agent.protocolIdentities && {
|
|
5187
|
+
protocolIdentities: apiResponse.agent.protocolIdentities
|
|
5188
|
+
}
|
|
5181
5189
|
} : void 0;
|
|
5182
5190
|
const developer = apiResponse.developer ? {
|
|
5183
5191
|
astradId: apiResponse.developer.kyaOwnerId,
|
|
@@ -5228,7 +5236,11 @@ async function verify(config, request2, options) {
|
|
|
5228
5236
|
settlementOutcome: apiResponse.settlementOutcome,
|
|
5229
5237
|
settlementToken: apiResponse.settlementToken,
|
|
5230
5238
|
// 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
|
|
5231
|
-
fulfilment: apiResponse.fulfilment
|
|
5239
|
+
fulfilment: apiResponse.fulfilment,
|
|
5240
|
+
// 5.15.0: merchant-lane AP2 mandates + KYAPay identity token.
|
|
5241
|
+
mandates: apiResponse.mandates,
|
|
5242
|
+
kyaToken: apiResponse.kyaToken,
|
|
5243
|
+
aep: apiResponse.aep
|
|
5232
5244
|
};
|
|
5233
5245
|
if (result.recommendation === "deny") {
|
|
5234
5246
|
result.policyAllowed = false;
|
|
@@ -5248,7 +5260,9 @@ async function verify(config, request2, options) {
|
|
|
5248
5260
|
}
|
|
5249
5261
|
const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
|
|
5250
5262
|
if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
|
|
5251
|
-
|
|
5263
|
+
if (!uncacheable) {
|
|
5264
|
+
cacheResult(request2, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
|
|
5265
|
+
}
|
|
5252
5266
|
}
|
|
5253
5267
|
return result;
|
|
5254
5268
|
}
|
|
@@ -5259,6 +5273,9 @@ var FALLBACK_MAX_WAIT_MS = 5 * 60 * 1e3;
|
|
|
5259
5273
|
// src/metadata-capture.ts
|
|
5260
5274
|
var MAX_TOTAL_BYTES = 16 * 1024;
|
|
5261
5275
|
|
|
5276
|
+
// src/adapters/commerce-detect.ts
|
|
5277
|
+
var MAX_BODY_BYTES = 64 * 1024;
|
|
5278
|
+
|
|
5262
5279
|
// src/edge-config.ts
|
|
5263
5280
|
var DEFAULT_EDGE_CONFIG = Object.freeze({
|
|
5264
5281
|
version: 1,
|
|
@@ -5287,6 +5304,11 @@ async function withBudget(promise, ms) {
|
|
|
5287
5304
|
if (timer) clearTimeout(timer);
|
|
5288
5305
|
}
|
|
5289
5306
|
}
|
|
5307
|
+
var CONTAINER_ID = (() => {
|
|
5308
|
+
const c = globalThis.crypto;
|
|
5309
|
+
if (c?.randomUUID) return c.randomUUID();
|
|
5310
|
+
return `c-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 12)}`;
|
|
5311
|
+
})();
|
|
5290
5312
|
var destKeyOf = (d) => `${d.apiBaseUrl}\0${d.apiKey ?? ""}\0${d.counterparty}\0${d.adapter ?? ""}`;
|
|
5291
5313
|
var BeaconBuffer = class {
|
|
5292
5314
|
constructor(options = {}) {
|
|
@@ -5294,6 +5316,7 @@ var BeaconBuffer = class {
|
|
|
5294
5316
|
this.droppedSinceLast = 0;
|
|
5295
5317
|
this.droppedTotal = 0;
|
|
5296
5318
|
this.deliveredTotal = 0;
|
|
5319
|
+
this.enqueuedTotal = 0;
|
|
5297
5320
|
this.backoffUntil = 0;
|
|
5298
5321
|
this.collapse = /* @__PURE__ */ new Map();
|
|
5299
5322
|
/** Keys the backend answered 401 for — later batches go unauthenticated. */
|
|
@@ -5306,13 +5329,16 @@ var BeaconBuffer = class {
|
|
|
5306
5329
|
collapseMaxKeys: options.collapseMaxKeys ?? 1e3,
|
|
5307
5330
|
requestTimeoutMs: options.requestTimeoutMs ?? 1e4,
|
|
5308
5331
|
retryBackoffMs: options.retryBackoffMs ?? 1e3,
|
|
5332
|
+
holdRepeats: options.holdRepeats ?? false,
|
|
5333
|
+
containerId: options.containerId ?? CONTAINER_ID,
|
|
5309
5334
|
now: options.now ?? Date.now
|
|
5310
5335
|
};
|
|
5311
5336
|
}
|
|
5312
5337
|
/**
|
|
5313
5338
|
* Queue one beacon. With a `collapseKey`, a repeat inside the window is
|
|
5314
|
-
* merged into
|
|
5315
|
-
*
|
|
5339
|
+
* merged into this key's item while that item is still queued (not yet in
|
|
5340
|
+
* flight). Once it has left, the repeat becomes a new item, sendable on
|
|
5341
|
+
* this flush — nothing waits for a later invocation (round 27.6).
|
|
5316
5342
|
*/
|
|
5317
5343
|
enqueue(dest, item, collapseKey) {
|
|
5318
5344
|
const now = this.opts.now();
|
|
@@ -5325,12 +5351,15 @@ var BeaconBuffer = class {
|
|
|
5325
5351
|
return;
|
|
5326
5352
|
}
|
|
5327
5353
|
}
|
|
5328
|
-
|
|
5329
|
-
|
|
5330
|
-
|
|
5331
|
-
|
|
5332
|
-
|
|
5333
|
-
|
|
5354
|
+
if (this.opts.holdRepeats) {
|
|
5355
|
+
entry.held = this.push(
|
|
5356
|
+
dest,
|
|
5357
|
+
{ ...item, repeatCount: 1 },
|
|
5358
|
+
entry.firstSeenAt + this.opts.collapseWindowMs
|
|
5359
|
+
);
|
|
5360
|
+
return;
|
|
5361
|
+
}
|
|
5362
|
+
entry.first = this.push(dest, { ...item, repeatCount: 1 }, now);
|
|
5334
5363
|
return;
|
|
5335
5364
|
}
|
|
5336
5365
|
this.collapse.delete(collapseKey);
|
|
@@ -5366,6 +5395,7 @@ var BeaconBuffer = class {
|
|
|
5366
5395
|
droppedSinceLast: this.droppedSinceLast,
|
|
5367
5396
|
droppedTotal: this.droppedTotal,
|
|
5368
5397
|
deliveredTotal: this.deliveredTotal,
|
|
5398
|
+
enqueuedTotal: this.enqueuedTotal,
|
|
5369
5399
|
flushing: this.inFlight !== void 0
|
|
5370
5400
|
};
|
|
5371
5401
|
}
|
|
@@ -5380,6 +5410,7 @@ var BeaconBuffer = class {
|
|
|
5380
5410
|
inFlight: false
|
|
5381
5411
|
};
|
|
5382
5412
|
this.queue.push(entry);
|
|
5413
|
+
this.enqueuedTotal += 1;
|
|
5383
5414
|
return entry;
|
|
5384
5415
|
}
|
|
5385
5416
|
dropOldest() {
|
|
@@ -5425,7 +5456,11 @@ var BeaconBuffer = class {
|
|
|
5425
5456
|
droppedSinceLast: reportedDropped,
|
|
5426
5457
|
queueDepth: this.queue.length,
|
|
5427
5458
|
adapter: dest.adapter ?? "edge-core",
|
|
5428
|
-
version: SDK_VERSION
|
|
5459
|
+
version: SDK_VERSION,
|
|
5460
|
+
containerId: this.opts.containerId,
|
|
5461
|
+
enqueuedTotal: this.enqueuedTotal,
|
|
5462
|
+
deliveredTotal: this.deliveredTotal,
|
|
5463
|
+
droppedTotal: this.droppedTotal
|
|
5429
5464
|
};
|
|
5430
5465
|
const controller = typeof AbortController !== "undefined" ? new AbortController() : void 0;
|
|
5431
5466
|
const response = await withBudget(
|
|
@@ -5550,6 +5585,33 @@ var import_node_crypto4 = require("crypto");
|
|
|
5550
5585
|
// src/transport/registry/visa.ts
|
|
5551
5586
|
var import_jose = require("jose");
|
|
5552
5587
|
|
|
5588
|
+
// src/ucp/profile.ts
|
|
5589
|
+
var UCP_VERSION = "2026-08-25";
|
|
5590
|
+
var SPEC = `https://ucp.dev/${UCP_VERSION}/specification`;
|
|
5591
|
+
var SCHEMAS = `https://ucp.dev/${UCP_VERSION}/schemas`;
|
|
5592
|
+
|
|
5593
|
+
// src/ucp/signatures.ts
|
|
5594
|
+
var import_http_message_signatures3 = require("http-message-signatures");
|
|
5595
|
+
|
|
5596
|
+
// src/http-signatures/sign.ts
|
|
5597
|
+
var import_http_message_signatures2 = require("http-message-signatures");
|
|
5598
|
+
|
|
5599
|
+
// src/ucp/checkout-kit.ts
|
|
5600
|
+
var import_jose3 = require("jose");
|
|
5601
|
+
|
|
5602
|
+
// src/mandates/sd-jwt.ts
|
|
5603
|
+
var import_jose2 = require("jose");
|
|
5604
|
+
|
|
5605
|
+
// src/idempotency/index.ts
|
|
5606
|
+
var DEFAULT_IDEMPOTENCY_TTL_MS = 24 * 60 * 60 * 1e3;
|
|
5607
|
+
|
|
5608
|
+
// src/payments/kyapay.ts
|
|
5609
|
+
var import_jose4 = require("jose");
|
|
5610
|
+
|
|
5611
|
+
// src/aep/core.ts
|
|
5612
|
+
var ED25519_PKCS8_PREFIX = Buffer.from("302e020100300506032b657004220420", "hex");
|
|
5613
|
+
var ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
|
|
5614
|
+
|
|
5553
5615
|
// src/gateway/modes/online.ts
|
|
5554
5616
|
function toGatewayConfig(config) {
|
|
5555
5617
|
return {
|
|
@@ -6577,7 +6639,7 @@ function writeState(paths, state) {
|
|
|
6577
6639
|
|
|
6578
6640
|
// src/fleet/policy-verify.ts
|
|
6579
6641
|
var import_crypto = require("crypto");
|
|
6580
|
-
var
|
|
6642
|
+
var import_jose5 = require("jose");
|
|
6581
6643
|
|
|
6582
6644
|
// src/fleet/types.ts
|
|
6583
6645
|
var FLEET_POLICY_TYP = "fleet-policy+jwt";
|
|
@@ -6626,8 +6688,8 @@ async function verifyFleetPolicy(jws, jwks, options) {
|
|
|
6626
6688
|
let payloadBytes;
|
|
6627
6689
|
let header;
|
|
6628
6690
|
try {
|
|
6629
|
-
const keySet = (0,
|
|
6630
|
-
const result = await (0,
|
|
6691
|
+
const keySet = (0, import_jose5.createLocalJWKSet)(jwks);
|
|
6692
|
+
const result = await (0, import_jose5.compactVerify)(jws, keySet, { algorithms: ["ES256"] });
|
|
6631
6693
|
payloadBytes = result.payload;
|
|
6632
6694
|
header = result.protectedHeader;
|
|
6633
6695
|
} catch (err) {
|
|
@@ -6673,9 +6735,9 @@ async function resolveFleetJwks(pinned, chain, ownerId) {
|
|
|
6673
6735
|
let lastSeq = 0;
|
|
6674
6736
|
for (const link of chain) {
|
|
6675
6737
|
try {
|
|
6676
|
-
const { payload, protectedHeader } = await (0,
|
|
6738
|
+
const { payload, protectedHeader } = await (0, import_jose5.compactVerify)(
|
|
6677
6739
|
link,
|
|
6678
|
-
(0,
|
|
6740
|
+
(0, import_jose5.createLocalJWKSet)(trusted),
|
|
6679
6741
|
{ algorithms: ["ES256"] }
|
|
6680
6742
|
);
|
|
6681
6743
|
if (protectedHeader.typ !== FLEET_KEYS_TYP) continue;
|