@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
package/dist/codex/index.js
CHANGED
|
@@ -4036,7 +4036,7 @@ function getTrustLevel(score) {
|
|
|
4036
4036
|
}
|
|
4037
4037
|
|
|
4038
4038
|
// src/version.ts
|
|
4039
|
-
var SDK_VERSION = "5.
|
|
4039
|
+
var SDK_VERSION = "5.15.0";
|
|
4040
4040
|
|
|
4041
4041
|
// src/http.ts
|
|
4042
4042
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -4355,6 +4355,7 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4355
4355
|
if (requestData.invocationProtocol) body.invocationProtocol = requestData.invocationProtocol;
|
|
4356
4356
|
if (requestData.commercePhase) body.commercePhase = requestData.commercePhase;
|
|
4357
4357
|
if (requestData.checkoutSessionId) body.checkoutSessionId = requestData.checkoutSessionId;
|
|
4358
|
+
if (requestData.checkoutJwt) body.checkoutJwt = requestData.checkoutJwt;
|
|
4358
4359
|
if (requestData.checkoutItems) body.checkoutItems = requestData.checkoutItems;
|
|
4359
4360
|
if (requestData.buyerEmail) body.buyerEmail = requestData.buyerEmail;
|
|
4360
4361
|
if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
|
|
@@ -4505,7 +4506,8 @@ async function verify(config, request, options) {
|
|
|
4505
4506
|
"[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."
|
|
4506
4507
|
);
|
|
4507
4508
|
}
|
|
4508
|
-
|
|
4509
|
+
const uncacheable = Boolean(request.commerceArtifacts);
|
|
4510
|
+
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
|
|
4509
4511
|
const cached = getCachedResult(request, mergedConfig.counterpartyId);
|
|
4510
4512
|
if (cached) {
|
|
4511
4513
|
if (mergedConfig.debug) {
|
|
@@ -4586,7 +4588,10 @@ async function verify(config, request, options) {
|
|
|
4586
4588
|
// MERCHANT caller only (bridge callers strip it before the agent plane).
|
|
4587
4589
|
settlementToken: apiResponse.settlementToken,
|
|
4588
4590
|
// 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
|
|
4589
|
-
fulfilment: apiResponse.fulfilment
|
|
4591
|
+
fulfilment: apiResponse.fulfilment,
|
|
4592
|
+
mandates: apiResponse.mandates,
|
|
4593
|
+
kyaToken: apiResponse.kyaToken,
|
|
4594
|
+
aep: apiResponse.aep
|
|
4590
4595
|
};
|
|
4591
4596
|
return result2;
|
|
4592
4597
|
}
|
|
@@ -4596,7 +4601,10 @@ async function verify(config, request, options) {
|
|
|
4596
4601
|
trustScore: apiResponse.agent.trustScore,
|
|
4597
4602
|
trustLevel: getTrustLevel(apiResponse.agent.trustScore),
|
|
4598
4603
|
blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
|
|
4599
|
-
status: apiResponse.agent.agentStatus
|
|
4604
|
+
status: apiResponse.agent.agentStatus,
|
|
4605
|
+
...apiResponse.agent.protocolIdentities && {
|
|
4606
|
+
protocolIdentities: apiResponse.agent.protocolIdentities
|
|
4607
|
+
}
|
|
4600
4608
|
} : void 0;
|
|
4601
4609
|
const developer = apiResponse.developer ? {
|
|
4602
4610
|
astradId: apiResponse.developer.kyaOwnerId,
|
|
@@ -4647,7 +4655,11 @@ async function verify(config, request, options) {
|
|
|
4647
4655
|
settlementOutcome: apiResponse.settlementOutcome,
|
|
4648
4656
|
settlementToken: apiResponse.settlementToken,
|
|
4649
4657
|
// 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
|
|
4650
|
-
fulfilment: apiResponse.fulfilment
|
|
4658
|
+
fulfilment: apiResponse.fulfilment,
|
|
4659
|
+
// 5.15.0: merchant-lane AP2 mandates + KYAPay identity token.
|
|
4660
|
+
mandates: apiResponse.mandates,
|
|
4661
|
+
kyaToken: apiResponse.kyaToken,
|
|
4662
|
+
aep: apiResponse.aep
|
|
4651
4663
|
};
|
|
4652
4664
|
if (result.recommendation === "deny") {
|
|
4653
4665
|
result.policyAllowed = false;
|
|
@@ -4667,7 +4679,9 @@ async function verify(config, request, options) {
|
|
|
4667
4679
|
}
|
|
4668
4680
|
const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
|
|
4669
4681
|
if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
|
|
4670
|
-
|
|
4682
|
+
if (!uncacheable) {
|
|
4683
|
+
cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
|
|
4684
|
+
}
|
|
4671
4685
|
}
|
|
4672
4686
|
return result;
|
|
4673
4687
|
}
|
|
@@ -4678,6 +4692,9 @@ var FALLBACK_MAX_WAIT_MS = 5 * 60 * 1e3;
|
|
|
4678
4692
|
// src/metadata-capture.ts
|
|
4679
4693
|
var MAX_TOTAL_BYTES = 16 * 1024;
|
|
4680
4694
|
|
|
4695
|
+
// src/adapters/commerce-detect.ts
|
|
4696
|
+
var MAX_BODY_BYTES = 64 * 1024;
|
|
4697
|
+
|
|
4681
4698
|
// src/edge-config.ts
|
|
4682
4699
|
var DEFAULT_EDGE_CONFIG = Object.freeze({
|
|
4683
4700
|
version: 1,
|
|
@@ -4706,6 +4723,11 @@ async function withBudget(promise, ms) {
|
|
|
4706
4723
|
if (timer) clearTimeout(timer);
|
|
4707
4724
|
}
|
|
4708
4725
|
}
|
|
4726
|
+
var CONTAINER_ID = (() => {
|
|
4727
|
+
const c = globalThis.crypto;
|
|
4728
|
+
if (c?.randomUUID) return c.randomUUID();
|
|
4729
|
+
return `c-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 12)}`;
|
|
4730
|
+
})();
|
|
4709
4731
|
var destKeyOf = (d) => `${d.apiBaseUrl}\0${d.apiKey ?? ""}\0${d.counterparty}\0${d.adapter ?? ""}`;
|
|
4710
4732
|
var BeaconBuffer = class {
|
|
4711
4733
|
constructor(options = {}) {
|
|
@@ -4713,6 +4735,7 @@ var BeaconBuffer = class {
|
|
|
4713
4735
|
this.droppedSinceLast = 0;
|
|
4714
4736
|
this.droppedTotal = 0;
|
|
4715
4737
|
this.deliveredTotal = 0;
|
|
4738
|
+
this.enqueuedTotal = 0;
|
|
4716
4739
|
this.backoffUntil = 0;
|
|
4717
4740
|
this.collapse = /* @__PURE__ */ new Map();
|
|
4718
4741
|
/** Keys the backend answered 401 for — later batches go unauthenticated. */
|
|
@@ -4725,13 +4748,16 @@ var BeaconBuffer = class {
|
|
|
4725
4748
|
collapseMaxKeys: options.collapseMaxKeys ?? 1e3,
|
|
4726
4749
|
requestTimeoutMs: options.requestTimeoutMs ?? 1e4,
|
|
4727
4750
|
retryBackoffMs: options.retryBackoffMs ?? 1e3,
|
|
4751
|
+
holdRepeats: options.holdRepeats ?? false,
|
|
4752
|
+
containerId: options.containerId ?? CONTAINER_ID,
|
|
4728
4753
|
now: options.now ?? Date.now
|
|
4729
4754
|
};
|
|
4730
4755
|
}
|
|
4731
4756
|
/**
|
|
4732
4757
|
* Queue one beacon. With a `collapseKey`, a repeat inside the window is
|
|
4733
|
-
* merged into
|
|
4734
|
-
*
|
|
4758
|
+
* merged into this key's item while that item is still queued (not yet in
|
|
4759
|
+
* flight). Once it has left, the repeat becomes a new item, sendable on
|
|
4760
|
+
* this flush — nothing waits for a later invocation (round 27.6).
|
|
4735
4761
|
*/
|
|
4736
4762
|
enqueue(dest, item, collapseKey) {
|
|
4737
4763
|
const now = this.opts.now();
|
|
@@ -4744,12 +4770,15 @@ var BeaconBuffer = class {
|
|
|
4744
4770
|
return;
|
|
4745
4771
|
}
|
|
4746
4772
|
}
|
|
4747
|
-
|
|
4748
|
-
|
|
4749
|
-
|
|
4750
|
-
|
|
4751
|
-
|
|
4752
|
-
|
|
4773
|
+
if (this.opts.holdRepeats) {
|
|
4774
|
+
entry.held = this.push(
|
|
4775
|
+
dest,
|
|
4776
|
+
{ ...item, repeatCount: 1 },
|
|
4777
|
+
entry.firstSeenAt + this.opts.collapseWindowMs
|
|
4778
|
+
);
|
|
4779
|
+
return;
|
|
4780
|
+
}
|
|
4781
|
+
entry.first = this.push(dest, { ...item, repeatCount: 1 }, now);
|
|
4753
4782
|
return;
|
|
4754
4783
|
}
|
|
4755
4784
|
this.collapse.delete(collapseKey);
|
|
@@ -4785,6 +4814,7 @@ var BeaconBuffer = class {
|
|
|
4785
4814
|
droppedSinceLast: this.droppedSinceLast,
|
|
4786
4815
|
droppedTotal: this.droppedTotal,
|
|
4787
4816
|
deliveredTotal: this.deliveredTotal,
|
|
4817
|
+
enqueuedTotal: this.enqueuedTotal,
|
|
4788
4818
|
flushing: this.inFlight !== void 0
|
|
4789
4819
|
};
|
|
4790
4820
|
}
|
|
@@ -4799,6 +4829,7 @@ var BeaconBuffer = class {
|
|
|
4799
4829
|
inFlight: false
|
|
4800
4830
|
};
|
|
4801
4831
|
this.queue.push(entry);
|
|
4832
|
+
this.enqueuedTotal += 1;
|
|
4802
4833
|
return entry;
|
|
4803
4834
|
}
|
|
4804
4835
|
dropOldest() {
|
|
@@ -4844,7 +4875,11 @@ var BeaconBuffer = class {
|
|
|
4844
4875
|
droppedSinceLast: reportedDropped,
|
|
4845
4876
|
queueDepth: this.queue.length,
|
|
4846
4877
|
adapter: dest.adapter ?? "edge-core",
|
|
4847
|
-
version: SDK_VERSION
|
|
4878
|
+
version: SDK_VERSION,
|
|
4879
|
+
containerId: this.opts.containerId,
|
|
4880
|
+
enqueuedTotal: this.enqueuedTotal,
|
|
4881
|
+
deliveredTotal: this.deliveredTotal,
|
|
4882
|
+
droppedTotal: this.droppedTotal
|
|
4848
4883
|
};
|
|
4849
4884
|
const controller = typeof AbortController !== "undefined" ? new AbortController() : void 0;
|
|
4850
4885
|
const response = await withBudget(
|
|
@@ -4969,6 +5004,33 @@ var import_node_crypto4 = require("crypto");
|
|
|
4969
5004
|
// src/transport/registry/visa.ts
|
|
4970
5005
|
var import_jose = require("jose");
|
|
4971
5006
|
|
|
5007
|
+
// src/ucp/profile.ts
|
|
5008
|
+
var UCP_VERSION = "2026-08-25";
|
|
5009
|
+
var SPEC = `https://ucp.dev/${UCP_VERSION}/specification`;
|
|
5010
|
+
var SCHEMAS = `https://ucp.dev/${UCP_VERSION}/schemas`;
|
|
5011
|
+
|
|
5012
|
+
// src/ucp/signatures.ts
|
|
5013
|
+
var import_http_message_signatures3 = require("http-message-signatures");
|
|
5014
|
+
|
|
5015
|
+
// src/http-signatures/sign.ts
|
|
5016
|
+
var import_http_message_signatures2 = require("http-message-signatures");
|
|
5017
|
+
|
|
5018
|
+
// src/ucp/checkout-kit.ts
|
|
5019
|
+
var import_jose3 = require("jose");
|
|
5020
|
+
|
|
5021
|
+
// src/mandates/sd-jwt.ts
|
|
5022
|
+
var import_jose2 = require("jose");
|
|
5023
|
+
|
|
5024
|
+
// src/idempotency/index.ts
|
|
5025
|
+
var DEFAULT_IDEMPOTENCY_TTL_MS = 24 * 60 * 60 * 1e3;
|
|
5026
|
+
|
|
5027
|
+
// src/payments/kyapay.ts
|
|
5028
|
+
var import_jose4 = require("jose");
|
|
5029
|
+
|
|
5030
|
+
// src/aep/core.ts
|
|
5031
|
+
var ED25519_PKCS8_PREFIX = Buffer.from("302e020100300506032b657004220420", "hex");
|
|
5032
|
+
var ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
|
|
5033
|
+
|
|
4972
5034
|
// src/gateway/modes/online.ts
|
|
4973
5035
|
function toGatewayConfig(config) {
|
|
4974
5036
|
return {
|
|
@@ -5706,7 +5768,7 @@ async function sendHeartbeat(enrolment, request, timeoutMs = 1500) {
|
|
|
5706
5768
|
|
|
5707
5769
|
// src/fleet/policy-verify.ts
|
|
5708
5770
|
var import_crypto = require("crypto");
|
|
5709
|
-
var
|
|
5771
|
+
var import_jose5 = require("jose");
|
|
5710
5772
|
|
|
5711
5773
|
// src/fleet/types.ts
|
|
5712
5774
|
var FLEET_POLICY_TYP = "fleet-policy+jwt";
|
|
@@ -5755,8 +5817,8 @@ async function verifyFleetPolicy(jws, jwks, options) {
|
|
|
5755
5817
|
let payloadBytes;
|
|
5756
5818
|
let header;
|
|
5757
5819
|
try {
|
|
5758
|
-
const keySet = (0,
|
|
5759
|
-
const result = await (0,
|
|
5820
|
+
const keySet = (0, import_jose5.createLocalJWKSet)(jwks);
|
|
5821
|
+
const result = await (0, import_jose5.compactVerify)(jws, keySet, { algorithms: ["ES256"] });
|
|
5760
5822
|
payloadBytes = result.payload;
|
|
5761
5823
|
header = result.protectedHeader;
|
|
5762
5824
|
} catch (err) {
|
|
@@ -5802,9 +5864,9 @@ async function resolveFleetJwks(pinned, chain, ownerId) {
|
|
|
5802
5864
|
let lastSeq = 0;
|
|
5803
5865
|
for (const link of chain) {
|
|
5804
5866
|
try {
|
|
5805
|
-
const { payload, protectedHeader } = await (0,
|
|
5867
|
+
const { payload, protectedHeader } = await (0, import_jose5.compactVerify)(
|
|
5806
5868
|
link,
|
|
5807
|
-
(0,
|
|
5869
|
+
(0, import_jose5.createLocalJWKSet)(trusted),
|
|
5808
5870
|
{ algorithms: ["ES256"] }
|
|
5809
5871
|
);
|
|
5810
5872
|
if (protectedHeader.typ !== FLEET_KEYS_TYP) continue;
|