@astrasyncai/verification-gateway 5.14.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 +477 -240
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +477 -240
- 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 +460 -239
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +460 -239
- 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 +55 -11
- package/dist/bin/astrasync-codex-hook.js +55 -11
- package/dist/bin/astrasync-guard.js +55 -11
- package/dist/bin/astrasync.js +288 -33
- package/dist/browser/background.js +50 -6
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +60 -6
- 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 +55 -11
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +65 -11
- package/dist/codex/index.mjs.map +1 -1
- package/dist/cursor/extension.js +55 -11
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +65 -11
- 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 +11 -2
- package/dist/edge-core/index.d.ts +11 -2
- package/dist/edge-core/index.js +93 -10
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +91 -10
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/gateway/gateway.js +50 -6
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +60 -6
- 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 +5116 -2612
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5063 -2614
- 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
|
@@ -3752,7 +3752,7 @@ function getTrustLevel(score) {
|
|
|
3752
3752
|
}
|
|
3753
3753
|
|
|
3754
3754
|
// src/version.ts
|
|
3755
|
-
var SDK_VERSION = "5.
|
|
3755
|
+
var SDK_VERSION = "5.15.0";
|
|
3756
3756
|
|
|
3757
3757
|
// src/http.ts
|
|
3758
3758
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -4071,6 +4071,7 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4071
4071
|
if (requestData.invocationProtocol) body.invocationProtocol = requestData.invocationProtocol;
|
|
4072
4072
|
if (requestData.commercePhase) body.commercePhase = requestData.commercePhase;
|
|
4073
4073
|
if (requestData.checkoutSessionId) body.checkoutSessionId = requestData.checkoutSessionId;
|
|
4074
|
+
if (requestData.checkoutJwt) body.checkoutJwt = requestData.checkoutJwt;
|
|
4074
4075
|
if (requestData.checkoutItems) body.checkoutItems = requestData.checkoutItems;
|
|
4075
4076
|
if (requestData.buyerEmail) body.buyerEmail = requestData.buyerEmail;
|
|
4076
4077
|
if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
|
|
@@ -4221,7 +4222,8 @@ async function verify(config, request, options) {
|
|
|
4221
4222
|
"[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."
|
|
4222
4223
|
);
|
|
4223
4224
|
}
|
|
4224
|
-
|
|
4225
|
+
const uncacheable = Boolean(request.commerceArtifacts);
|
|
4226
|
+
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
|
|
4225
4227
|
const cached = getCachedResult(request, mergedConfig.counterpartyId);
|
|
4226
4228
|
if (cached) {
|
|
4227
4229
|
if (mergedConfig.debug) {
|
|
@@ -4302,7 +4304,10 @@ async function verify(config, request, options) {
|
|
|
4302
4304
|
// MERCHANT caller only (bridge callers strip it before the agent plane).
|
|
4303
4305
|
settlementToken: apiResponse.settlementToken,
|
|
4304
4306
|
// 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
|
|
4305
|
-
fulfilment: apiResponse.fulfilment
|
|
4307
|
+
fulfilment: apiResponse.fulfilment,
|
|
4308
|
+
mandates: apiResponse.mandates,
|
|
4309
|
+
kyaToken: apiResponse.kyaToken,
|
|
4310
|
+
aep: apiResponse.aep
|
|
4306
4311
|
};
|
|
4307
4312
|
return result2;
|
|
4308
4313
|
}
|
|
@@ -4312,7 +4317,10 @@ async function verify(config, request, options) {
|
|
|
4312
4317
|
trustScore: apiResponse.agent.trustScore,
|
|
4313
4318
|
trustLevel: getTrustLevel(apiResponse.agent.trustScore),
|
|
4314
4319
|
blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
|
|
4315
|
-
status: apiResponse.agent.agentStatus
|
|
4320
|
+
status: apiResponse.agent.agentStatus,
|
|
4321
|
+
...apiResponse.agent.protocolIdentities && {
|
|
4322
|
+
protocolIdentities: apiResponse.agent.protocolIdentities
|
|
4323
|
+
}
|
|
4316
4324
|
} : void 0;
|
|
4317
4325
|
const developer = apiResponse.developer ? {
|
|
4318
4326
|
astradId: apiResponse.developer.kyaOwnerId,
|
|
@@ -4363,7 +4371,11 @@ async function verify(config, request, options) {
|
|
|
4363
4371
|
settlementOutcome: apiResponse.settlementOutcome,
|
|
4364
4372
|
settlementToken: apiResponse.settlementToken,
|
|
4365
4373
|
// 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
|
|
4366
|
-
fulfilment: apiResponse.fulfilment
|
|
4374
|
+
fulfilment: apiResponse.fulfilment,
|
|
4375
|
+
// 5.15.0: merchant-lane AP2 mandates + KYAPay identity token.
|
|
4376
|
+
mandates: apiResponse.mandates,
|
|
4377
|
+
kyaToken: apiResponse.kyaToken,
|
|
4378
|
+
aep: apiResponse.aep
|
|
4367
4379
|
};
|
|
4368
4380
|
if (result.recommendation === "deny") {
|
|
4369
4381
|
result.policyAllowed = false;
|
|
@@ -4383,7 +4395,9 @@ async function verify(config, request, options) {
|
|
|
4383
4395
|
}
|
|
4384
4396
|
const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
|
|
4385
4397
|
if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
|
|
4386
|
-
|
|
4398
|
+
if (!uncacheable) {
|
|
4399
|
+
cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
|
|
4400
|
+
}
|
|
4387
4401
|
}
|
|
4388
4402
|
return result;
|
|
4389
4403
|
}
|
|
@@ -4394,6 +4408,9 @@ var FALLBACK_MAX_WAIT_MS = 5 * 60 * 1e3;
|
|
|
4394
4408
|
// src/metadata-capture.ts
|
|
4395
4409
|
var MAX_TOTAL_BYTES = 16 * 1024;
|
|
4396
4410
|
|
|
4411
|
+
// src/adapters/commerce-detect.ts
|
|
4412
|
+
var MAX_BODY_BYTES = 64 * 1024;
|
|
4413
|
+
|
|
4397
4414
|
// src/edge-config.ts
|
|
4398
4415
|
var DEFAULT_EDGE_CONFIG = Object.freeze({
|
|
4399
4416
|
version: 1,
|
|
@@ -4703,6 +4720,33 @@ var import_node_crypto4 = require("crypto");
|
|
|
4703
4720
|
// src/transport/registry/visa.ts
|
|
4704
4721
|
var import_jose = require("jose");
|
|
4705
4722
|
|
|
4723
|
+
// src/ucp/profile.ts
|
|
4724
|
+
var UCP_VERSION = "2026-08-25";
|
|
4725
|
+
var SPEC = `https://ucp.dev/${UCP_VERSION}/specification`;
|
|
4726
|
+
var SCHEMAS = `https://ucp.dev/${UCP_VERSION}/schemas`;
|
|
4727
|
+
|
|
4728
|
+
// src/ucp/signatures.ts
|
|
4729
|
+
var import_http_message_signatures3 = require("http-message-signatures");
|
|
4730
|
+
|
|
4731
|
+
// src/http-signatures/sign.ts
|
|
4732
|
+
var import_http_message_signatures2 = require("http-message-signatures");
|
|
4733
|
+
|
|
4734
|
+
// src/ucp/checkout-kit.ts
|
|
4735
|
+
var import_jose3 = require("jose");
|
|
4736
|
+
|
|
4737
|
+
// src/mandates/sd-jwt.ts
|
|
4738
|
+
var import_jose2 = require("jose");
|
|
4739
|
+
|
|
4740
|
+
// src/idempotency/index.ts
|
|
4741
|
+
var DEFAULT_IDEMPOTENCY_TTL_MS = 24 * 60 * 60 * 1e3;
|
|
4742
|
+
|
|
4743
|
+
// src/payments/kyapay.ts
|
|
4744
|
+
var import_jose4 = require("jose");
|
|
4745
|
+
|
|
4746
|
+
// src/aep/core.ts
|
|
4747
|
+
var ED25519_PKCS8_PREFIX = Buffer.from("302e020100300506032b657004220420", "hex");
|
|
4748
|
+
var ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
|
|
4749
|
+
|
|
4706
4750
|
// src/gateway/modes/online.ts
|
|
4707
4751
|
function toGatewayConfig(config) {
|
|
4708
4752
|
return {
|
|
@@ -5693,7 +5737,7 @@ async function sendHeartbeat(enrolment, request, timeoutMs = 1500) {
|
|
|
5693
5737
|
|
|
5694
5738
|
// src/fleet/policy-verify.ts
|
|
5695
5739
|
var import_crypto = require("crypto");
|
|
5696
|
-
var
|
|
5740
|
+
var import_jose5 = require("jose");
|
|
5697
5741
|
|
|
5698
5742
|
// src/fleet/types.ts
|
|
5699
5743
|
var FLEET_POLICY_TYP = "fleet-policy+jwt";
|
|
@@ -5742,8 +5786,8 @@ async function verifyFleetPolicy(jws, jwks, options) {
|
|
|
5742
5786
|
let payloadBytes;
|
|
5743
5787
|
let header;
|
|
5744
5788
|
try {
|
|
5745
|
-
const keySet = (0,
|
|
5746
|
-
const result = await (0,
|
|
5789
|
+
const keySet = (0, import_jose5.createLocalJWKSet)(jwks);
|
|
5790
|
+
const result = await (0, import_jose5.compactVerify)(jws, keySet, { algorithms: ["ES256"] });
|
|
5747
5791
|
payloadBytes = result.payload;
|
|
5748
5792
|
header = result.protectedHeader;
|
|
5749
5793
|
} catch (err) {
|
|
@@ -5789,9 +5833,9 @@ async function resolveFleetJwks(pinned, chain, ownerId) {
|
|
|
5789
5833
|
let lastSeq = 0;
|
|
5790
5834
|
for (const link of chain) {
|
|
5791
5835
|
try {
|
|
5792
|
-
const { payload, protectedHeader } = await (0,
|
|
5836
|
+
const { payload, protectedHeader } = await (0, import_jose5.compactVerify)(
|
|
5793
5837
|
link,
|
|
5794
|
-
(0,
|
|
5838
|
+
(0, import_jose5.createLocalJWKSet)(trusted),
|
|
5795
5839
|
{ algorithms: ["ES256"] }
|
|
5796
5840
|
);
|
|
5797
5841
|
if (protectedHeader.typ !== FLEET_KEYS_TYP) continue;
|
|
@@ -3751,7 +3751,7 @@ function getTrustLevel(score) {
|
|
|
3751
3751
|
}
|
|
3752
3752
|
|
|
3753
3753
|
// src/version.ts
|
|
3754
|
-
var SDK_VERSION = "5.
|
|
3754
|
+
var SDK_VERSION = "5.15.0";
|
|
3755
3755
|
|
|
3756
3756
|
// src/http.ts
|
|
3757
3757
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -4070,6 +4070,7 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4070
4070
|
if (requestData.invocationProtocol) body.invocationProtocol = requestData.invocationProtocol;
|
|
4071
4071
|
if (requestData.commercePhase) body.commercePhase = requestData.commercePhase;
|
|
4072
4072
|
if (requestData.checkoutSessionId) body.checkoutSessionId = requestData.checkoutSessionId;
|
|
4073
|
+
if (requestData.checkoutJwt) body.checkoutJwt = requestData.checkoutJwt;
|
|
4073
4074
|
if (requestData.checkoutItems) body.checkoutItems = requestData.checkoutItems;
|
|
4074
4075
|
if (requestData.buyerEmail) body.buyerEmail = requestData.buyerEmail;
|
|
4075
4076
|
if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
|
|
@@ -4220,7 +4221,8 @@ async function verify(config, request, options) {
|
|
|
4220
4221
|
"[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."
|
|
4221
4222
|
);
|
|
4222
4223
|
}
|
|
4223
|
-
|
|
4224
|
+
const uncacheable = Boolean(request.commerceArtifacts);
|
|
4225
|
+
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
|
|
4224
4226
|
const cached = getCachedResult(request, mergedConfig.counterpartyId);
|
|
4225
4227
|
if (cached) {
|
|
4226
4228
|
if (mergedConfig.debug) {
|
|
@@ -4301,7 +4303,10 @@ async function verify(config, request, options) {
|
|
|
4301
4303
|
// MERCHANT caller only (bridge callers strip it before the agent plane).
|
|
4302
4304
|
settlementToken: apiResponse.settlementToken,
|
|
4303
4305
|
// 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
|
|
4304
|
-
fulfilment: apiResponse.fulfilment
|
|
4306
|
+
fulfilment: apiResponse.fulfilment,
|
|
4307
|
+
mandates: apiResponse.mandates,
|
|
4308
|
+
kyaToken: apiResponse.kyaToken,
|
|
4309
|
+
aep: apiResponse.aep
|
|
4305
4310
|
};
|
|
4306
4311
|
return result2;
|
|
4307
4312
|
}
|
|
@@ -4311,7 +4316,10 @@ async function verify(config, request, options) {
|
|
|
4311
4316
|
trustScore: apiResponse.agent.trustScore,
|
|
4312
4317
|
trustLevel: getTrustLevel(apiResponse.agent.trustScore),
|
|
4313
4318
|
blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
|
|
4314
|
-
status: apiResponse.agent.agentStatus
|
|
4319
|
+
status: apiResponse.agent.agentStatus,
|
|
4320
|
+
...apiResponse.agent.protocolIdentities && {
|
|
4321
|
+
protocolIdentities: apiResponse.agent.protocolIdentities
|
|
4322
|
+
}
|
|
4315
4323
|
} : void 0;
|
|
4316
4324
|
const developer = apiResponse.developer ? {
|
|
4317
4325
|
astradId: apiResponse.developer.kyaOwnerId,
|
|
@@ -4362,7 +4370,11 @@ async function verify(config, request, options) {
|
|
|
4362
4370
|
settlementOutcome: apiResponse.settlementOutcome,
|
|
4363
4371
|
settlementToken: apiResponse.settlementToken,
|
|
4364
4372
|
// 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
|
|
4365
|
-
fulfilment: apiResponse.fulfilment
|
|
4373
|
+
fulfilment: apiResponse.fulfilment,
|
|
4374
|
+
// 5.15.0: merchant-lane AP2 mandates + KYAPay identity token.
|
|
4375
|
+
mandates: apiResponse.mandates,
|
|
4376
|
+
kyaToken: apiResponse.kyaToken,
|
|
4377
|
+
aep: apiResponse.aep
|
|
4366
4378
|
};
|
|
4367
4379
|
if (result.recommendation === "deny") {
|
|
4368
4380
|
result.policyAllowed = false;
|
|
@@ -4382,7 +4394,9 @@ async function verify(config, request, options) {
|
|
|
4382
4394
|
}
|
|
4383
4395
|
const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
|
|
4384
4396
|
if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
|
|
4385
|
-
|
|
4397
|
+
if (!uncacheable) {
|
|
4398
|
+
cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
|
|
4399
|
+
}
|
|
4386
4400
|
}
|
|
4387
4401
|
return result;
|
|
4388
4402
|
}
|
|
@@ -4393,6 +4407,9 @@ var FALLBACK_MAX_WAIT_MS = 5 * 60 * 1e3;
|
|
|
4393
4407
|
// src/metadata-capture.ts
|
|
4394
4408
|
var MAX_TOTAL_BYTES = 16 * 1024;
|
|
4395
4409
|
|
|
4410
|
+
// src/adapters/commerce-detect.ts
|
|
4411
|
+
var MAX_BODY_BYTES = 64 * 1024;
|
|
4412
|
+
|
|
4396
4413
|
// src/edge-config.ts
|
|
4397
4414
|
var DEFAULT_EDGE_CONFIG = Object.freeze({
|
|
4398
4415
|
version: 1,
|
|
@@ -4702,6 +4719,33 @@ var import_node_crypto4 = require("crypto");
|
|
|
4702
4719
|
// src/transport/registry/visa.ts
|
|
4703
4720
|
var import_jose = require("jose");
|
|
4704
4721
|
|
|
4722
|
+
// src/ucp/profile.ts
|
|
4723
|
+
var UCP_VERSION = "2026-08-25";
|
|
4724
|
+
var SPEC = `https://ucp.dev/${UCP_VERSION}/specification`;
|
|
4725
|
+
var SCHEMAS = `https://ucp.dev/${UCP_VERSION}/schemas`;
|
|
4726
|
+
|
|
4727
|
+
// src/ucp/signatures.ts
|
|
4728
|
+
var import_http_message_signatures3 = require("http-message-signatures");
|
|
4729
|
+
|
|
4730
|
+
// src/http-signatures/sign.ts
|
|
4731
|
+
var import_http_message_signatures2 = require("http-message-signatures");
|
|
4732
|
+
|
|
4733
|
+
// src/ucp/checkout-kit.ts
|
|
4734
|
+
var import_jose3 = require("jose");
|
|
4735
|
+
|
|
4736
|
+
// src/mandates/sd-jwt.ts
|
|
4737
|
+
var import_jose2 = require("jose");
|
|
4738
|
+
|
|
4739
|
+
// src/idempotency/index.ts
|
|
4740
|
+
var DEFAULT_IDEMPOTENCY_TTL_MS = 24 * 60 * 60 * 1e3;
|
|
4741
|
+
|
|
4742
|
+
// src/payments/kyapay.ts
|
|
4743
|
+
var import_jose4 = require("jose");
|
|
4744
|
+
|
|
4745
|
+
// src/aep/core.ts
|
|
4746
|
+
var ED25519_PKCS8_PREFIX = Buffer.from("302e020100300506032b657004220420", "hex");
|
|
4747
|
+
var ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
|
|
4748
|
+
|
|
4705
4749
|
// src/gateway/modes/online.ts
|
|
4706
4750
|
function toGatewayConfig(config) {
|
|
4707
4751
|
return {
|
|
@@ -5439,7 +5483,7 @@ async function sendHeartbeat(enrolment, request, timeoutMs = 1500) {
|
|
|
5439
5483
|
|
|
5440
5484
|
// src/fleet/policy-verify.ts
|
|
5441
5485
|
var import_crypto = require("crypto");
|
|
5442
|
-
var
|
|
5486
|
+
var import_jose5 = require("jose");
|
|
5443
5487
|
|
|
5444
5488
|
// src/fleet/types.ts
|
|
5445
5489
|
var FLEET_POLICY_TYP = "fleet-policy+jwt";
|
|
@@ -5488,8 +5532,8 @@ async function verifyFleetPolicy(jws, jwks, options) {
|
|
|
5488
5532
|
let payloadBytes;
|
|
5489
5533
|
let header;
|
|
5490
5534
|
try {
|
|
5491
|
-
const keySet = (0,
|
|
5492
|
-
const result = await (0,
|
|
5535
|
+
const keySet = (0, import_jose5.createLocalJWKSet)(jwks);
|
|
5536
|
+
const result = await (0, import_jose5.compactVerify)(jws, keySet, { algorithms: ["ES256"] });
|
|
5493
5537
|
payloadBytes = result.payload;
|
|
5494
5538
|
header = result.protectedHeader;
|
|
5495
5539
|
} catch (err) {
|
|
@@ -5535,9 +5579,9 @@ async function resolveFleetJwks(pinned, chain, ownerId) {
|
|
|
5535
5579
|
let lastSeq = 0;
|
|
5536
5580
|
for (const link of chain) {
|
|
5537
5581
|
try {
|
|
5538
|
-
const { payload, protectedHeader } = await (0,
|
|
5582
|
+
const { payload, protectedHeader } = await (0, import_jose5.compactVerify)(
|
|
5539
5583
|
link,
|
|
5540
|
-
(0,
|
|
5584
|
+
(0, import_jose5.createLocalJWKSet)(trusted),
|
|
5541
5585
|
{ algorithms: ["ES256"] }
|
|
5542
5586
|
);
|
|
5543
5587
|
if (protectedHeader.typ !== FLEET_KEYS_TYP) continue;
|
|
@@ -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,
|
|
@@ -5568,6 +5585,33 @@ var import_node_crypto4 = require("crypto");
|
|
|
5568
5585
|
// src/transport/registry/visa.ts
|
|
5569
5586
|
var import_jose = require("jose");
|
|
5570
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
|
+
|
|
5571
5615
|
// src/gateway/modes/online.ts
|
|
5572
5616
|
function toGatewayConfig(config) {
|
|
5573
5617
|
return {
|
|
@@ -6595,7 +6639,7 @@ function writeState(paths, state) {
|
|
|
6595
6639
|
|
|
6596
6640
|
// src/fleet/policy-verify.ts
|
|
6597
6641
|
var import_crypto = require("crypto");
|
|
6598
|
-
var
|
|
6642
|
+
var import_jose5 = require("jose");
|
|
6599
6643
|
|
|
6600
6644
|
// src/fleet/types.ts
|
|
6601
6645
|
var FLEET_POLICY_TYP = "fleet-policy+jwt";
|
|
@@ -6644,8 +6688,8 @@ async function verifyFleetPolicy(jws, jwks, options) {
|
|
|
6644
6688
|
let payloadBytes;
|
|
6645
6689
|
let header;
|
|
6646
6690
|
try {
|
|
6647
|
-
const keySet = (0,
|
|
6648
|
-
const result = await (0,
|
|
6691
|
+
const keySet = (0, import_jose5.createLocalJWKSet)(jwks);
|
|
6692
|
+
const result = await (0, import_jose5.compactVerify)(jws, keySet, { algorithms: ["ES256"] });
|
|
6649
6693
|
payloadBytes = result.payload;
|
|
6650
6694
|
header = result.protectedHeader;
|
|
6651
6695
|
} catch (err) {
|
|
@@ -6691,9 +6735,9 @@ async function resolveFleetJwks(pinned, chain, ownerId) {
|
|
|
6691
6735
|
let lastSeq = 0;
|
|
6692
6736
|
for (const link of chain) {
|
|
6693
6737
|
try {
|
|
6694
|
-
const { payload, protectedHeader } = await (0,
|
|
6738
|
+
const { payload, protectedHeader } = await (0, import_jose5.compactVerify)(
|
|
6695
6739
|
link,
|
|
6696
|
-
(0,
|
|
6740
|
+
(0, import_jose5.createLocalJWKSet)(trusted),
|
|
6697
6741
|
{ algorithms: ["ES256"] }
|
|
6698
6742
|
);
|
|
6699
6743
|
if (protectedHeader.typ !== FLEET_KEYS_TYP) continue;
|