@astrasyncai/verification-gateway 5.3.0 → 5.4.1
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/adapter-interface/interface.d.mts +2 -3
- package/dist/adapter-interface/interface.d.ts +2 -3
- package/dist/adapters/express.d.mts +63 -4
- package/dist/adapters/express.d.ts +63 -4
- package/dist/adapters/express.js +9 -2
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +9 -2
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/mcp.d.mts +396 -4
- package/dist/adapters/mcp.d.ts +396 -4
- package/dist/adapters/mcp.js +9 -2
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +9 -2
- package/dist/adapters/mcp.mjs.map +1 -1
- package/dist/adapters/nextjs.d.mts +22 -4
- package/dist/adapters/nextjs.d.ts +22 -4
- package/dist/adapters/nextjs.js +9 -2
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +9 -2
- package/dist/adapters/nextjs.mjs.map +1 -1
- package/dist/adapters/sdk.d.mts +157 -3
- package/dist/adapters/sdk.d.ts +157 -3
- package/dist/adapters/sdk.js +62 -3
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +62 -3
- package/dist/adapters/sdk.mjs.map +1 -1
- package/dist/agent/index.d.mts +224 -3
- package/dist/agent/index.d.ts +224 -3
- 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 +9 -2
- package/dist/bin/astrasync-codex-hook.js +9 -2
- package/dist/bin/astrasync-guard.js +9 -2
- package/dist/bin/astrasync.js +9 -2
- package/dist/browser/background.js +9 -2
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +9 -2
- package/dist/browser/background.mjs.map +1 -1
- package/dist/browser/browser-adapter.d.mts +1 -5
- package/dist/browser/browser-adapter.d.ts +1 -5
- package/dist/claude-code/claude-code-adapter.d.mts +1 -5
- package/dist/claude-code/claude-code-adapter.d.ts +1 -5
- package/dist/cli/index.d.mts +1 -5
- package/dist/cli/index.d.ts +1 -5
- 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.d.mts +1 -5
- package/dist/codex/index.d.ts +1 -5
- package/dist/codex/index.js +9 -2
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +9 -2
- package/dist/codex/index.mjs.map +1 -1
- package/dist/cursor/cursor-adapter.d.mts +1 -5
- package/dist/cursor/cursor-adapter.d.ts +1 -5
- package/dist/cursor/extension.d.mts +1 -5
- package/dist/cursor/extension.d.ts +1 -5
- package/dist/cursor/extension.js +9 -2
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +9 -2
- package/dist/cursor/extension.mjs.map +1 -1
- package/dist/edge-config.d.mts +1 -1
- package/dist/edge-config.d.ts +1 -1
- package/dist/edge-config.js +1 -1
- package/dist/edge-config.js.map +1 -1
- package/dist/edge-config.mjs +1 -1
- package/dist/edge-config.mjs.map +1 -1
- package/dist/edge-core/index.d.mts +1 -1
- package/dist/edge-core/index.d.ts +1 -1
- package/dist/edge-core/index.js +9 -2
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +9 -2
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/gateway/gateway.d.mts +2 -3
- package/dist/gateway/gateway.d.ts +2 -3
- package/dist/gateway/gateway.js +9 -2
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +9 -2
- package/dist/gateway/gateway.mjs.map +1 -1
- package/dist/git-trigger/git-hooks.d.mts +253 -3
- package/dist/git-trigger/git-hooks.d.ts +253 -3
- package/dist/index.d.mts +4500 -42
- package/dist/index.d.ts +4500 -42
- package/dist/index.js +62 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +62 -3
- package/dist/index.mjs.map +1 -1
- package/dist/interface-q1WrMsB1.d.mts +365 -0
- package/dist/interface-q1WrMsB1.d.ts +365 -0
- package/dist/local-evaluator/evaluator.d.mts +2 -3
- package/dist/local-evaluator/evaluator.d.ts +2 -3
- package/dist/registration/index.js +1 -1
- package/dist/registration/index.js.map +1 -1
- package/dist/registration/index.mjs +1 -1
- package/dist/registration/index.mjs.map +1 -1
- package/dist/transport/index.d.mts +1324 -4
- package/dist/transport/index.d.ts +1324 -4
- package/dist/transport/index.js +1 -1
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/index.mjs +1 -1
- package/dist/transport/index.mjs.map +1 -1
- package/dist/{types-C1s1z0VD.d.ts → types-BRz2U0Pn.d.ts} +2 -2
- package/dist/types-BfILnheI.d.mts +189 -0
- package/dist/types-BfILnheI.d.ts +189 -0
- package/dist/{types-1urxLCZv.d.mts → types-CfBpm3w5.d.mts} +2 -2
- package/dist/types-D28h1384.d.ts +763 -0
- package/dist/types-DJMU5g7Z.d.mts +763 -0
- package/dist/{types-CA1ZhoaJ.d.ts → types-W-A326w3.d.mts} +52 -212
- package/dist/{types-eSqHyFFH.d.mts → types-W-A326w3.d.ts} +52 -212
- package/dist/ui/index.d.mts +1 -2
- package/dist/ui/index.d.ts +1 -2
- package/dist/verify.d.mts +1 -1
- package/dist/verify.d.ts +1 -1
- package/dist/verify.js +9 -2
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +9 -2
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/express-DHEz_6Rh.d.ts +0 -69
- package/dist/express-PLYlCd5k.d.mts +0 -69
- package/dist/index-BnrhTsp7.d.ts +0 -1469
- package/dist/index-CdF7L5E0.d.ts +0 -248
- package/dist/index-D6HQmsVV.d.mts +0 -248
- package/dist/index-zD5AaJsO.d.mts +0 -1469
- package/dist/mcp-BuKgYZsC.d.ts +0 -397
- package/dist/mcp-DDcGHRjo.d.mts +0 -397
- package/dist/nextjs-CX9X9okw.d.ts +0 -28
- package/dist/nextjs-w60J62Wj.d.mts +0 -28
- package/dist/sdk-DbY7-3PJ.d.mts +0 -142
- package/dist/sdk-uzuKDTRU.d.ts +0 -142
|
@@ -1,4 +1,54 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The captured, sanitised view of an inbound agent's request metadata. Attached
|
|
3
|
+
* to verify-access / beacon payloads as `callerMetadata.observedMetadata`.
|
|
4
|
+
*/
|
|
5
|
+
interface ObservedMetadata {
|
|
6
|
+
/** Header name → value, secrets removed, verbatim otherwise. */
|
|
7
|
+
headers: Record<string, string>;
|
|
8
|
+
/**
|
|
9
|
+
* Safe key-format prefix of a credential header (e.g. `sk-ant-api03`,
|
|
10
|
+
* `sk-proj`, `AIza`) — a platform signal, NEVER the secret. Absent if no
|
|
11
|
+
* credential header was present or none matched a known format.
|
|
12
|
+
*/
|
|
13
|
+
apiKeyFormat?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The subset of `headers` that are known platform-signal headers
|
|
16
|
+
* (`openai-organization`, `x-goog-user-project`, `anthropic-version`, …),
|
|
17
|
+
* pulled out for convenient detection + display. Values are the same
|
|
18
|
+
* sanitised strings as in `headers`.
|
|
19
|
+
*/
|
|
20
|
+
platformHeaders?: Record<string, string>;
|
|
21
|
+
/**
|
|
22
|
+
* Connection-layer signals (IP, ASN, country, TLS version, HTTP version,
|
|
23
|
+
* device class, TLS fingerprint). Edge adapters populate this from the
|
|
24
|
+
* platform's native connection surface — the authoritative source. SDK
|
|
25
|
+
* adapters populate it as a fallback via {@link deriveConnectionFromHeaders}
|
|
26
|
+
* when a CDN in front of the merchant injected the equivalent headers;
|
|
27
|
+
* absent when neither source had anything.
|
|
28
|
+
*/
|
|
29
|
+
connection?: Record<string, string>;
|
|
30
|
+
/**
|
|
31
|
+
* Number of cookie pairs the caller sent. The `cookie` header VALUE is a
|
|
32
|
+
* secret and is always dropped; the COUNT is a client-shape signal
|
|
33
|
+
* (browsers carry cookies, most automation carries none) that would
|
|
34
|
+
* otherwise be unobservable downstream. Absent when no cookie header
|
|
35
|
+
* arrived.
|
|
36
|
+
*/
|
|
37
|
+
cookieCount?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Query-string parameter NAMES (deduped, lowercased) — values are NEVER
|
|
40
|
+
* captured (they routinely carry OAuth codes, tokens, and PII, and no
|
|
41
|
+
* deny-list is complete). Names alone fingerprint client shape. Populated
|
|
42
|
+
* by the edge path, which sees the raw query string.
|
|
43
|
+
*/
|
|
44
|
+
queryKeys?: string[];
|
|
45
|
+
/**
|
|
46
|
+
* Version of the capture semantics this object was produced under — see
|
|
47
|
+
* {@link CAPTURE_SCHEMA_VERSION}. Optional for backward compatibility with
|
|
48
|
+
* metadata captured before the field existed.
|
|
49
|
+
*/
|
|
50
|
+
schemaVersion?: number;
|
|
51
|
+
}
|
|
2
52
|
|
|
3
53
|
/**
|
|
4
54
|
* AstraSync Universal Verification Gateway Types
|
|
@@ -228,62 +278,6 @@ interface AppliedPolicy {
|
|
|
228
278
|
boundaryName: string;
|
|
229
279
|
policyVersion: string;
|
|
230
280
|
}
|
|
231
|
-
/**
|
|
232
|
-
* Structured "why" of a verification decision the merchant receives.
|
|
233
|
-
*
|
|
234
|
-
* Tells the merchant whether the agent ID was verified, whether the runtime
|
|
235
|
-
* challenge succeeded, whether the request was within PDLSS, and the agent's
|
|
236
|
-
* actual dynamic trust score — without exposing thresholds, scope lists, or
|
|
237
|
-
* other-tenant counterparty membership.
|
|
238
|
-
*
|
|
239
|
-
* `attestations` is empty unless the calling endpoint's access policy
|
|
240
|
-
* declared `required_attestations`. Each attestation carries a blockchain
|
|
241
|
-
* proof reference (or, in the future, a full ZKP) so the merchant can verify
|
|
242
|
-
* the underlying claim without seeing the raw underlying data (e.g. the
|
|
243
|
-
* Persona/ConnectID transaction).
|
|
244
|
-
*/
|
|
245
|
-
interface VerificationContext {
|
|
246
|
-
idVerified: boolean;
|
|
247
|
-
runtimeChallenge: {
|
|
248
|
-
status: 'passed' | 'skipped' | 'failed' | 'timeout' | 'not_supported';
|
|
249
|
-
checkedAt: string | null;
|
|
250
|
-
};
|
|
251
|
-
pdlssCheck: {
|
|
252
|
-
/** Outcome only — no thresholds disclosed. */
|
|
253
|
-
result: 'within' | 'exceeded' | 'denied' | 'not_evaluated';
|
|
254
|
-
/** Category-level only. */
|
|
255
|
-
purpose: 'approved' | 'denied';
|
|
256
|
-
scope: 'approved' | 'denied';
|
|
257
|
-
};
|
|
258
|
-
/** Live composite score at decision time (not the stale snapshot column). */
|
|
259
|
-
dynamicTrustScore: number;
|
|
260
|
-
attestations: Attestation[];
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Attestation returned in `VerificationContext.attestations`.
|
|
264
|
-
*
|
|
265
|
-
* `proofType: 'reference'` (interim) means `proof` is a blockchain txn hash
|
|
266
|
-
* the merchant CAN verify against on-chain records but doesn't HAVE to.
|
|
267
|
-
* `proofType: 'zkp'` (future) means `proof` is a zero-knowledge proof.
|
|
268
|
-
* Wire shape is forward-compatible — clients reading 'reference' today won't
|
|
269
|
-
* break when it becomes 'zkp'.
|
|
270
|
-
*/
|
|
271
|
-
interface Attestation {
|
|
272
|
-
/** Attestation kind (e.g. `verified_human_party`). */
|
|
273
|
-
type: string;
|
|
274
|
-
status: 'passed' | 'failed';
|
|
275
|
-
/**
|
|
276
|
-
* ISO-8601 timestamp of the underlying check (when KYC/IDV/AML actually ran).
|
|
277
|
-
* Merchants compare this against their `maxAgeDays` requirement on the
|
|
278
|
-
* endpoint to enforce per-attestation freshness. Distinct from `validUntil`:
|
|
279
|
-
* `checkedAt` is when the data was sourced; `validUntil` is when the issuer
|
|
280
|
-
* stops vouching for it.
|
|
281
|
-
*/
|
|
282
|
-
checkedAt: string;
|
|
283
|
-
validUntil?: string;
|
|
284
|
-
proofType: 'reference' | 'zkp';
|
|
285
|
-
proof: string;
|
|
286
|
-
}
|
|
287
281
|
/**
|
|
288
282
|
* Guidance information for unverified agents
|
|
289
283
|
*/
|
|
@@ -687,42 +681,6 @@ interface ConsiderationSet {
|
|
|
687
681
|
/** True when `items` was truncated to the cap. */
|
|
688
682
|
truncated?: boolean;
|
|
689
683
|
}
|
|
690
|
-
/**
|
|
691
|
-
* Terminal (or notable) outcome of an attempt chain, reported post-hoc via
|
|
692
|
-
* `reportAttempt`. Mirrors the backend's `attemptReportSchema.outcome` 1:1.
|
|
693
|
-
*/
|
|
694
|
-
interface AttemptOutcome {
|
|
695
|
-
kind: 'settled' | 'blocked_step_up' | 'failed' | 'high_value_action';
|
|
696
|
-
/** Dotted ACTION-axis token for the failure class, e.g. `commerce.catalog.sku_not_found` (≤128 chars). */
|
|
697
|
-
dimension?: string;
|
|
698
|
-
/** Human-readable detail (≤512 chars). */
|
|
699
|
-
reason?: string;
|
|
700
|
-
/** For `high_value_action`: the non-payment conversion type. */
|
|
701
|
-
actionType?: 'lead' | 'signup' | 'application' | 'enquiry';
|
|
702
|
-
/** Value in MAJOR units (settled amount / estimated action value), non-negative. */
|
|
703
|
-
value?: number;
|
|
704
|
-
/** ISO-4217 or settlement-asset code (3–6 alphanumeric chars). */
|
|
705
|
-
currency?: string;
|
|
706
|
-
/** Settlement rail / mandate type, e.g. `ap2.payment_mandate` (≤64 chars). */
|
|
707
|
-
rail?: string;
|
|
708
|
-
}
|
|
709
|
-
/**
|
|
710
|
-
* Body for `POST /agents/verify-access/attempt-report`:
|
|
711
|
-
* post-hoc consideration/outcome data for an attempt chain that a
|
|
712
|
-
* verify-access call couldn't carry (e.g. the catalog was served from a local
|
|
713
|
-
* cache, or the deny happened transport-side). Must carry `considerationSet`
|
|
714
|
-
* and/or `outcome`.
|
|
715
|
-
*/
|
|
716
|
-
interface AttemptReport {
|
|
717
|
-
/** Attempt-chain handle — `att_` + 32 lowercase hex. */
|
|
718
|
-
attemptId: string;
|
|
719
|
-
/** Merchant/endpoint the attempt targeted; falls back to `config.counterpartyId`. */
|
|
720
|
-
counterpartyId?: string;
|
|
721
|
-
/** Canonical ASTRA-* id of the acting agent, when known. */
|
|
722
|
-
agentId?: string;
|
|
723
|
-
considerationSet?: ConsiderationSet;
|
|
724
|
-
outcome?: AttemptOutcome;
|
|
725
|
-
}
|
|
726
684
|
/**
|
|
727
685
|
* Raw commerce-protocol artifacts as verify-access accepts them (backend
|
|
728
686
|
* `validation.ts` → `commerceArtifacts`). All optional; send what was
|
|
@@ -788,51 +746,6 @@ interface CommerceArtifactsPayload {
|
|
|
788
746
|
secret: string;
|
|
789
747
|
};
|
|
790
748
|
}
|
|
791
|
-
/**
|
|
792
|
-
* Route-specific access configuration
|
|
793
|
-
*/
|
|
794
|
-
interface RouteAccessConfig {
|
|
795
|
-
/** Route pattern (supports wildcards) */
|
|
796
|
-
pattern: string;
|
|
797
|
-
/** HTTP method (or * for all) */
|
|
798
|
-
method: string | '*';
|
|
799
|
-
/**
|
|
800
|
-
* Pass this route through unenforced (observe). The middleware skips gating
|
|
801
|
-
* on the server decision; with `evaluateAlwaysIfCredentialed` set it still
|
|
802
|
-
* calls verify-access for the audit trail and populates `req.agentVerification`.
|
|
803
|
-
* Replaces the old `minAccessLevel: 'none'` sentinel (SDK 5.0.0).
|
|
804
|
-
*/
|
|
805
|
-
observe?: boolean;
|
|
806
|
-
/** Minimum trust score required (optional) */
|
|
807
|
-
minTrustScore?: number;
|
|
808
|
-
/** Required purposes (optional, agent must declare one of these) */
|
|
809
|
-
requiredPurposes?: string[];
|
|
810
|
-
/** Counterparty-defined PDLSS maximums — agent requests exceeding these are rejected before calling AstraSync */
|
|
811
|
-
/** Maximum session duration in seconds the counterparty will allow */
|
|
812
|
-
maxDuration?: number;
|
|
813
|
-
/** Whitelist of allowed purposes — agent's declared purpose must be in this list */
|
|
814
|
-
allowedPurposes?: string[];
|
|
815
|
-
/** Whitelist of allowed jurisdictions */
|
|
816
|
-
allowedJurisdictions?: string[];
|
|
817
|
-
/** Maximum transaction value for this route */
|
|
818
|
-
maxTransactionValue?: number;
|
|
819
|
-
/**
|
|
820
|
-
* Backend-evaluator strict mode: when true AND
|
|
821
|
-
* `allowedPurposes` is non-empty, verify-access denies requests arriving
|
|
822
|
-
* WITHOUT a purpose. Configured in the dashboard; passed through here.
|
|
823
|
-
*/
|
|
824
|
-
requirePurpose?: boolean;
|
|
825
|
-
/**
|
|
826
|
-
* SEND-mapping — not an allow-list: the PDLSS tokens the
|
|
827
|
-
* middleware STAMPS on verify-access calls matching this route, replacing
|
|
828
|
-
* the generic `data`/`data.*` method-table fallback. `purpose` = bare
|
|
829
|
-
* category noun (`shopping`, `trading`); `action` = dotted verb
|
|
830
|
-
* (`shopping.search`, `trading.execute`). Authoritative over agent-supplied
|
|
831
|
-
* headers — the dashboard is merchant policy, the way MCP toolGates are.
|
|
832
|
-
*/
|
|
833
|
-
purpose?: string;
|
|
834
|
-
action?: string;
|
|
835
|
-
}
|
|
836
749
|
/**
|
|
837
750
|
* Express middleware options.
|
|
838
751
|
*
|
|
@@ -1001,73 +914,6 @@ interface SDKOptions extends GatewayConfig {
|
|
|
1001
914
|
backoffMs: number;
|
|
1002
915
|
};
|
|
1003
916
|
}
|
|
1004
|
-
/**
|
|
1005
|
-
* Token guidance returned from verify-access.
|
|
1006
|
-
*
|
|
1007
|
-
* `recommendedRateLimit` carries `requestsPerMinute` and `currency` only.
|
|
1008
|
-
* `maxTransactionValue` was removed in v2.2.4 — it leaked the agent's
|
|
1009
|
-
* spending headroom to the merchant, which is a price-discrimination signal
|
|
1010
|
-
* (a merchant could see the agent's autonomous threshold and price the
|
|
1011
|
-
* transaction just under it to capture surplus). The agent's SDK receives
|
|
1012
|
-
* its own limits separately for client-side budgeting; the merchant's
|
|
1013
|
-
* decision doesn't need amount info.
|
|
1014
|
-
*/
|
|
1015
|
-
interface TokenGuidance {
|
|
1016
|
-
recommendedScopes: string[];
|
|
1017
|
-
recommendedTtlSeconds: number;
|
|
1018
|
-
recommendedRateLimit?: {
|
|
1019
|
-
requestsPerMinute: number;
|
|
1020
|
-
currency?: string;
|
|
1021
|
-
};
|
|
1022
|
-
jurisdictionConstraints?: string[];
|
|
1023
|
-
delegationAllowed: boolean;
|
|
1024
|
-
maxDelegationDepth?: number;
|
|
1025
|
-
safetyDefaults: {
|
|
1026
|
-
writePrivilegesRequested: boolean;
|
|
1027
|
-
shortLivedTokenRecommended: boolean;
|
|
1028
|
-
scopeConvention: 'astrasync-canonical';
|
|
1029
|
-
};
|
|
1030
|
-
}
|
|
1031
|
-
/**
|
|
1032
|
-
* Runtime challenge result
|
|
1033
|
-
*/
|
|
1034
|
-
interface RuntimeChallengeResult {
|
|
1035
|
-
status: 'passed' | 'failed' | 'skipped' | 'timeout' | 'not_supported';
|
|
1036
|
-
challengeId?: string;
|
|
1037
|
-
challengeSentAt?: string;
|
|
1038
|
-
responseReceivedAt?: string;
|
|
1039
|
-
latencyMs?: number;
|
|
1040
|
-
reason?: string;
|
|
1041
|
-
}
|
|
1042
|
-
/**
|
|
1043
|
-
* Enhanced verification result (extends existing VerificationResult).
|
|
1044
|
-
*
|
|
1045
|
-
* - `appliedPolicy`: surfaces the boundary name + policy version that drove
|
|
1046
|
-
* the decision (no UUIDs).
|
|
1047
|
-
* - `verificationContext`: structured "why" for the merchant — see
|
|
1048
|
-
* `VerificationContext` for the full shape.
|
|
1049
|
-
*/
|
|
1050
|
-
interface EnhancedVerificationResult extends VerificationResult {
|
|
1051
|
-
sessionId?: string;
|
|
1052
|
-
runtimeChallenge?: RuntimeChallengeResult;
|
|
1053
|
-
tokenGuidance?: TokenGuidance;
|
|
1054
|
-
appliedPolicy?: AppliedPolicy;
|
|
1055
|
-
verificationContext?: VerificationContext;
|
|
1056
|
-
recommendation?: 'grant' | 'deny' | 'step_up_required' | 'audit';
|
|
1057
|
-
recommendationReasons?: string[];
|
|
1058
|
-
/**
|
|
1059
|
-
* v2.3.8: when an endpoint's `unverifiedAgentPolicy` is `'audit'`, the
|
|
1060
|
-
* server returns the warning header to relay to the merchant's response.
|
|
1061
|
-
* The Express + MCP middleware lift this into `res.setHeader(name, value)`
|
|
1062
|
-
* before calling `next()`. Distinct vocabulary from the PDLSS-scope
|
|
1063
|
-
* outbound `unverifiedCounterpartyPolicy: 'warn'` so raw JSON config can't
|
|
1064
|
-
* conflate the two.
|
|
1065
|
-
*/
|
|
1066
|
-
warningHeader?: {
|
|
1067
|
-
name: string;
|
|
1068
|
-
value: string;
|
|
1069
|
-
};
|
|
1070
|
-
}
|
|
1071
917
|
/**
|
|
1072
918
|
* Cross-protocol credential config
|
|
1073
919
|
*/
|
|
@@ -1088,10 +934,6 @@ interface AstraSyncCredentials {
|
|
|
1088
934
|
};
|
|
1089
935
|
};
|
|
1090
936
|
}
|
|
1091
|
-
/**
|
|
1092
|
-
* Protocol transport type
|
|
1093
|
-
*/
|
|
1094
|
-
type ProtocolTransport = 'http' | 'a2a' | 'mcp';
|
|
1095
937
|
/**
|
|
1096
938
|
* Verification interstitial UI props (the React overlay shown to unverified
|
|
1097
939
|
* agents; user-visible title stays "AstraSync Agent Verification").
|
|
@@ -1116,7 +958,5 @@ interface VerificationInterstitialProps {
|
|
|
1116
958
|
/** Custom styles */
|
|
1117
959
|
className?: string;
|
|
1118
960
|
}
|
|
1119
|
-
/** @deprecated Renamed VerificationInterstitialProps in 4.1.0; alias removed next major. */
|
|
1120
|
-
type CommerceShieldProps = VerificationInterstitialProps;
|
|
1121
961
|
|
|
1122
|
-
export type {
|
|
962
|
+
export type { AgentCredentials as A, ExpressMiddlewareOptions as E, GatewayConfig as G, NextJsMiddlewareOptions as N, SDKOptions as S, TrustLevel as T, VerificationInterstitialProps as V, AstraSyncCredentials as a, GuidanceInfo as b, VerificationRequest as c, VerificationResult as d };
|
|
@@ -1,4 +1,54 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The captured, sanitised view of an inbound agent's request metadata. Attached
|
|
3
|
+
* to verify-access / beacon payloads as `callerMetadata.observedMetadata`.
|
|
4
|
+
*/
|
|
5
|
+
interface ObservedMetadata {
|
|
6
|
+
/** Header name → value, secrets removed, verbatim otherwise. */
|
|
7
|
+
headers: Record<string, string>;
|
|
8
|
+
/**
|
|
9
|
+
* Safe key-format prefix of a credential header (e.g. `sk-ant-api03`,
|
|
10
|
+
* `sk-proj`, `AIza`) — a platform signal, NEVER the secret. Absent if no
|
|
11
|
+
* credential header was present or none matched a known format.
|
|
12
|
+
*/
|
|
13
|
+
apiKeyFormat?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The subset of `headers` that are known platform-signal headers
|
|
16
|
+
* (`openai-organization`, `x-goog-user-project`, `anthropic-version`, …),
|
|
17
|
+
* pulled out for convenient detection + display. Values are the same
|
|
18
|
+
* sanitised strings as in `headers`.
|
|
19
|
+
*/
|
|
20
|
+
platformHeaders?: Record<string, string>;
|
|
21
|
+
/**
|
|
22
|
+
* Connection-layer signals (IP, ASN, country, TLS version, HTTP version,
|
|
23
|
+
* device class, TLS fingerprint). Edge adapters populate this from the
|
|
24
|
+
* platform's native connection surface — the authoritative source. SDK
|
|
25
|
+
* adapters populate it as a fallback via {@link deriveConnectionFromHeaders}
|
|
26
|
+
* when a CDN in front of the merchant injected the equivalent headers;
|
|
27
|
+
* absent when neither source had anything.
|
|
28
|
+
*/
|
|
29
|
+
connection?: Record<string, string>;
|
|
30
|
+
/**
|
|
31
|
+
* Number of cookie pairs the caller sent. The `cookie` header VALUE is a
|
|
32
|
+
* secret and is always dropped; the COUNT is a client-shape signal
|
|
33
|
+
* (browsers carry cookies, most automation carries none) that would
|
|
34
|
+
* otherwise be unobservable downstream. Absent when no cookie header
|
|
35
|
+
* arrived.
|
|
36
|
+
*/
|
|
37
|
+
cookieCount?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Query-string parameter NAMES (deduped, lowercased) — values are NEVER
|
|
40
|
+
* captured (they routinely carry OAuth codes, tokens, and PII, and no
|
|
41
|
+
* deny-list is complete). Names alone fingerprint client shape. Populated
|
|
42
|
+
* by the edge path, which sees the raw query string.
|
|
43
|
+
*/
|
|
44
|
+
queryKeys?: string[];
|
|
45
|
+
/**
|
|
46
|
+
* Version of the capture semantics this object was produced under — see
|
|
47
|
+
* {@link CAPTURE_SCHEMA_VERSION}. Optional for backward compatibility with
|
|
48
|
+
* metadata captured before the field existed.
|
|
49
|
+
*/
|
|
50
|
+
schemaVersion?: number;
|
|
51
|
+
}
|
|
2
52
|
|
|
3
53
|
/**
|
|
4
54
|
* AstraSync Universal Verification Gateway Types
|
|
@@ -228,62 +278,6 @@ interface AppliedPolicy {
|
|
|
228
278
|
boundaryName: string;
|
|
229
279
|
policyVersion: string;
|
|
230
280
|
}
|
|
231
|
-
/**
|
|
232
|
-
* Structured "why" of a verification decision the merchant receives.
|
|
233
|
-
*
|
|
234
|
-
* Tells the merchant whether the agent ID was verified, whether the runtime
|
|
235
|
-
* challenge succeeded, whether the request was within PDLSS, and the agent's
|
|
236
|
-
* actual dynamic trust score — without exposing thresholds, scope lists, or
|
|
237
|
-
* other-tenant counterparty membership.
|
|
238
|
-
*
|
|
239
|
-
* `attestations` is empty unless the calling endpoint's access policy
|
|
240
|
-
* declared `required_attestations`. Each attestation carries a blockchain
|
|
241
|
-
* proof reference (or, in the future, a full ZKP) so the merchant can verify
|
|
242
|
-
* the underlying claim without seeing the raw underlying data (e.g. the
|
|
243
|
-
* Persona/ConnectID transaction).
|
|
244
|
-
*/
|
|
245
|
-
interface VerificationContext {
|
|
246
|
-
idVerified: boolean;
|
|
247
|
-
runtimeChallenge: {
|
|
248
|
-
status: 'passed' | 'skipped' | 'failed' | 'timeout' | 'not_supported';
|
|
249
|
-
checkedAt: string | null;
|
|
250
|
-
};
|
|
251
|
-
pdlssCheck: {
|
|
252
|
-
/** Outcome only — no thresholds disclosed. */
|
|
253
|
-
result: 'within' | 'exceeded' | 'denied' | 'not_evaluated';
|
|
254
|
-
/** Category-level only. */
|
|
255
|
-
purpose: 'approved' | 'denied';
|
|
256
|
-
scope: 'approved' | 'denied';
|
|
257
|
-
};
|
|
258
|
-
/** Live composite score at decision time (not the stale snapshot column). */
|
|
259
|
-
dynamicTrustScore: number;
|
|
260
|
-
attestations: Attestation[];
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Attestation returned in `VerificationContext.attestations`.
|
|
264
|
-
*
|
|
265
|
-
* `proofType: 'reference'` (interim) means `proof` is a blockchain txn hash
|
|
266
|
-
* the merchant CAN verify against on-chain records but doesn't HAVE to.
|
|
267
|
-
* `proofType: 'zkp'` (future) means `proof` is a zero-knowledge proof.
|
|
268
|
-
* Wire shape is forward-compatible — clients reading 'reference' today won't
|
|
269
|
-
* break when it becomes 'zkp'.
|
|
270
|
-
*/
|
|
271
|
-
interface Attestation {
|
|
272
|
-
/** Attestation kind (e.g. `verified_human_party`). */
|
|
273
|
-
type: string;
|
|
274
|
-
status: 'passed' | 'failed';
|
|
275
|
-
/**
|
|
276
|
-
* ISO-8601 timestamp of the underlying check (when KYC/IDV/AML actually ran).
|
|
277
|
-
* Merchants compare this against their `maxAgeDays` requirement on the
|
|
278
|
-
* endpoint to enforce per-attestation freshness. Distinct from `validUntil`:
|
|
279
|
-
* `checkedAt` is when the data was sourced; `validUntil` is when the issuer
|
|
280
|
-
* stops vouching for it.
|
|
281
|
-
*/
|
|
282
|
-
checkedAt: string;
|
|
283
|
-
validUntil?: string;
|
|
284
|
-
proofType: 'reference' | 'zkp';
|
|
285
|
-
proof: string;
|
|
286
|
-
}
|
|
287
281
|
/**
|
|
288
282
|
* Guidance information for unverified agents
|
|
289
283
|
*/
|
|
@@ -687,42 +681,6 @@ interface ConsiderationSet {
|
|
|
687
681
|
/** True when `items` was truncated to the cap. */
|
|
688
682
|
truncated?: boolean;
|
|
689
683
|
}
|
|
690
|
-
/**
|
|
691
|
-
* Terminal (or notable) outcome of an attempt chain, reported post-hoc via
|
|
692
|
-
* `reportAttempt`. Mirrors the backend's `attemptReportSchema.outcome` 1:1.
|
|
693
|
-
*/
|
|
694
|
-
interface AttemptOutcome {
|
|
695
|
-
kind: 'settled' | 'blocked_step_up' | 'failed' | 'high_value_action';
|
|
696
|
-
/** Dotted ACTION-axis token for the failure class, e.g. `commerce.catalog.sku_not_found` (≤128 chars). */
|
|
697
|
-
dimension?: string;
|
|
698
|
-
/** Human-readable detail (≤512 chars). */
|
|
699
|
-
reason?: string;
|
|
700
|
-
/** For `high_value_action`: the non-payment conversion type. */
|
|
701
|
-
actionType?: 'lead' | 'signup' | 'application' | 'enquiry';
|
|
702
|
-
/** Value in MAJOR units (settled amount / estimated action value), non-negative. */
|
|
703
|
-
value?: number;
|
|
704
|
-
/** ISO-4217 or settlement-asset code (3–6 alphanumeric chars). */
|
|
705
|
-
currency?: string;
|
|
706
|
-
/** Settlement rail / mandate type, e.g. `ap2.payment_mandate` (≤64 chars). */
|
|
707
|
-
rail?: string;
|
|
708
|
-
}
|
|
709
|
-
/**
|
|
710
|
-
* Body for `POST /agents/verify-access/attempt-report`:
|
|
711
|
-
* post-hoc consideration/outcome data for an attempt chain that a
|
|
712
|
-
* verify-access call couldn't carry (e.g. the catalog was served from a local
|
|
713
|
-
* cache, or the deny happened transport-side). Must carry `considerationSet`
|
|
714
|
-
* and/or `outcome`.
|
|
715
|
-
*/
|
|
716
|
-
interface AttemptReport {
|
|
717
|
-
/** Attempt-chain handle — `att_` + 32 lowercase hex. */
|
|
718
|
-
attemptId: string;
|
|
719
|
-
/** Merchant/endpoint the attempt targeted; falls back to `config.counterpartyId`. */
|
|
720
|
-
counterpartyId?: string;
|
|
721
|
-
/** Canonical ASTRA-* id of the acting agent, when known. */
|
|
722
|
-
agentId?: string;
|
|
723
|
-
considerationSet?: ConsiderationSet;
|
|
724
|
-
outcome?: AttemptOutcome;
|
|
725
|
-
}
|
|
726
684
|
/**
|
|
727
685
|
* Raw commerce-protocol artifacts as verify-access accepts them (backend
|
|
728
686
|
* `validation.ts` → `commerceArtifacts`). All optional; send what was
|
|
@@ -788,51 +746,6 @@ interface CommerceArtifactsPayload {
|
|
|
788
746
|
secret: string;
|
|
789
747
|
};
|
|
790
748
|
}
|
|
791
|
-
/**
|
|
792
|
-
* Route-specific access configuration
|
|
793
|
-
*/
|
|
794
|
-
interface RouteAccessConfig {
|
|
795
|
-
/** Route pattern (supports wildcards) */
|
|
796
|
-
pattern: string;
|
|
797
|
-
/** HTTP method (or * for all) */
|
|
798
|
-
method: string | '*';
|
|
799
|
-
/**
|
|
800
|
-
* Pass this route through unenforced (observe). The middleware skips gating
|
|
801
|
-
* on the server decision; with `evaluateAlwaysIfCredentialed` set it still
|
|
802
|
-
* calls verify-access for the audit trail and populates `req.agentVerification`.
|
|
803
|
-
* Replaces the old `minAccessLevel: 'none'` sentinel (SDK 5.0.0).
|
|
804
|
-
*/
|
|
805
|
-
observe?: boolean;
|
|
806
|
-
/** Minimum trust score required (optional) */
|
|
807
|
-
minTrustScore?: number;
|
|
808
|
-
/** Required purposes (optional, agent must declare one of these) */
|
|
809
|
-
requiredPurposes?: string[];
|
|
810
|
-
/** Counterparty-defined PDLSS maximums — agent requests exceeding these are rejected before calling AstraSync */
|
|
811
|
-
/** Maximum session duration in seconds the counterparty will allow */
|
|
812
|
-
maxDuration?: number;
|
|
813
|
-
/** Whitelist of allowed purposes — agent's declared purpose must be in this list */
|
|
814
|
-
allowedPurposes?: string[];
|
|
815
|
-
/** Whitelist of allowed jurisdictions */
|
|
816
|
-
allowedJurisdictions?: string[];
|
|
817
|
-
/** Maximum transaction value for this route */
|
|
818
|
-
maxTransactionValue?: number;
|
|
819
|
-
/**
|
|
820
|
-
* Backend-evaluator strict mode: when true AND
|
|
821
|
-
* `allowedPurposes` is non-empty, verify-access denies requests arriving
|
|
822
|
-
* WITHOUT a purpose. Configured in the dashboard; passed through here.
|
|
823
|
-
*/
|
|
824
|
-
requirePurpose?: boolean;
|
|
825
|
-
/**
|
|
826
|
-
* SEND-mapping — not an allow-list: the PDLSS tokens the
|
|
827
|
-
* middleware STAMPS on verify-access calls matching this route, replacing
|
|
828
|
-
* the generic `data`/`data.*` method-table fallback. `purpose` = bare
|
|
829
|
-
* category noun (`shopping`, `trading`); `action` = dotted verb
|
|
830
|
-
* (`shopping.search`, `trading.execute`). Authoritative over agent-supplied
|
|
831
|
-
* headers — the dashboard is merchant policy, the way MCP toolGates are.
|
|
832
|
-
*/
|
|
833
|
-
purpose?: string;
|
|
834
|
-
action?: string;
|
|
835
|
-
}
|
|
836
749
|
/**
|
|
837
750
|
* Express middleware options.
|
|
838
751
|
*
|
|
@@ -1001,73 +914,6 @@ interface SDKOptions extends GatewayConfig {
|
|
|
1001
914
|
backoffMs: number;
|
|
1002
915
|
};
|
|
1003
916
|
}
|
|
1004
|
-
/**
|
|
1005
|
-
* Token guidance returned from verify-access.
|
|
1006
|
-
*
|
|
1007
|
-
* `recommendedRateLimit` carries `requestsPerMinute` and `currency` only.
|
|
1008
|
-
* `maxTransactionValue` was removed in v2.2.4 — it leaked the agent's
|
|
1009
|
-
* spending headroom to the merchant, which is a price-discrimination signal
|
|
1010
|
-
* (a merchant could see the agent's autonomous threshold and price the
|
|
1011
|
-
* transaction just under it to capture surplus). The agent's SDK receives
|
|
1012
|
-
* its own limits separately for client-side budgeting; the merchant's
|
|
1013
|
-
* decision doesn't need amount info.
|
|
1014
|
-
*/
|
|
1015
|
-
interface TokenGuidance {
|
|
1016
|
-
recommendedScopes: string[];
|
|
1017
|
-
recommendedTtlSeconds: number;
|
|
1018
|
-
recommendedRateLimit?: {
|
|
1019
|
-
requestsPerMinute: number;
|
|
1020
|
-
currency?: string;
|
|
1021
|
-
};
|
|
1022
|
-
jurisdictionConstraints?: string[];
|
|
1023
|
-
delegationAllowed: boolean;
|
|
1024
|
-
maxDelegationDepth?: number;
|
|
1025
|
-
safetyDefaults: {
|
|
1026
|
-
writePrivilegesRequested: boolean;
|
|
1027
|
-
shortLivedTokenRecommended: boolean;
|
|
1028
|
-
scopeConvention: 'astrasync-canonical';
|
|
1029
|
-
};
|
|
1030
|
-
}
|
|
1031
|
-
/**
|
|
1032
|
-
* Runtime challenge result
|
|
1033
|
-
*/
|
|
1034
|
-
interface RuntimeChallengeResult {
|
|
1035
|
-
status: 'passed' | 'failed' | 'skipped' | 'timeout' | 'not_supported';
|
|
1036
|
-
challengeId?: string;
|
|
1037
|
-
challengeSentAt?: string;
|
|
1038
|
-
responseReceivedAt?: string;
|
|
1039
|
-
latencyMs?: number;
|
|
1040
|
-
reason?: string;
|
|
1041
|
-
}
|
|
1042
|
-
/**
|
|
1043
|
-
* Enhanced verification result (extends existing VerificationResult).
|
|
1044
|
-
*
|
|
1045
|
-
* - `appliedPolicy`: surfaces the boundary name + policy version that drove
|
|
1046
|
-
* the decision (no UUIDs).
|
|
1047
|
-
* - `verificationContext`: structured "why" for the merchant — see
|
|
1048
|
-
* `VerificationContext` for the full shape.
|
|
1049
|
-
*/
|
|
1050
|
-
interface EnhancedVerificationResult extends VerificationResult {
|
|
1051
|
-
sessionId?: string;
|
|
1052
|
-
runtimeChallenge?: RuntimeChallengeResult;
|
|
1053
|
-
tokenGuidance?: TokenGuidance;
|
|
1054
|
-
appliedPolicy?: AppliedPolicy;
|
|
1055
|
-
verificationContext?: VerificationContext;
|
|
1056
|
-
recommendation?: 'grant' | 'deny' | 'step_up_required' | 'audit';
|
|
1057
|
-
recommendationReasons?: string[];
|
|
1058
|
-
/**
|
|
1059
|
-
* v2.3.8: when an endpoint's `unverifiedAgentPolicy` is `'audit'`, the
|
|
1060
|
-
* server returns the warning header to relay to the merchant's response.
|
|
1061
|
-
* The Express + MCP middleware lift this into `res.setHeader(name, value)`
|
|
1062
|
-
* before calling `next()`. Distinct vocabulary from the PDLSS-scope
|
|
1063
|
-
* outbound `unverifiedCounterpartyPolicy: 'warn'` so raw JSON config can't
|
|
1064
|
-
* conflate the two.
|
|
1065
|
-
*/
|
|
1066
|
-
warningHeader?: {
|
|
1067
|
-
name: string;
|
|
1068
|
-
value: string;
|
|
1069
|
-
};
|
|
1070
|
-
}
|
|
1071
917
|
/**
|
|
1072
918
|
* Cross-protocol credential config
|
|
1073
919
|
*/
|
|
@@ -1088,10 +934,6 @@ interface AstraSyncCredentials {
|
|
|
1088
934
|
};
|
|
1089
935
|
};
|
|
1090
936
|
}
|
|
1091
|
-
/**
|
|
1092
|
-
* Protocol transport type
|
|
1093
|
-
*/
|
|
1094
|
-
type ProtocolTransport = 'http' | 'a2a' | 'mcp';
|
|
1095
937
|
/**
|
|
1096
938
|
* Verification interstitial UI props (the React overlay shown to unverified
|
|
1097
939
|
* agents; user-visible title stays "AstraSync Agent Verification").
|
|
@@ -1116,7 +958,5 @@ interface VerificationInterstitialProps {
|
|
|
1116
958
|
/** Custom styles */
|
|
1117
959
|
className?: string;
|
|
1118
960
|
}
|
|
1119
|
-
/** @deprecated Renamed VerificationInterstitialProps in 4.1.0; alias removed next major. */
|
|
1120
|
-
type CommerceShieldProps = VerificationInterstitialProps;
|
|
1121
961
|
|
|
1122
|
-
export type {
|
|
962
|
+
export type { AgentCredentials as A, ExpressMiddlewareOptions as E, GatewayConfig as G, NextJsMiddlewareOptions as N, SDKOptions as S, TrustLevel as T, VerificationInterstitialProps as V, AstraSyncCredentials as a, GuidanceInfo as b, VerificationRequest as c, VerificationResult as d };
|
package/dist/ui/index.d.mts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { V as VerificationInterstitialProps,
|
|
2
|
-
import '../metadata-capture.mjs';
|
|
1
|
+
import { V as VerificationInterstitialProps, d as VerificationResult, A as AgentCredentials, b as GuidanceInfo, T as TrustLevel } from '../types-W-A326w3.mjs';
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* AstraSync Verification Interstitial Component
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { V as VerificationInterstitialProps,
|
|
2
|
-
import '../metadata-capture.js';
|
|
1
|
+
import { V as VerificationInterstitialProps, d as VerificationResult, A as AgentCredentials, b as GuidanceInfo, T as TrustLevel } from '../types-W-A326w3.js';
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* AstraSync Verification Interstitial Component
|
package/dist/verify.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { A as AgentCredentials, G as GatewayConfig, a as AttemptReport, V as VerificationRequest, c as VerificationResult } from './types-DJMU5g7Z.mjs';
|
|
2
2
|
import { ObservedMetadata } from './metadata-capture.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
package/dist/verify.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { A as AgentCredentials, G as GatewayConfig, a as AttemptReport, V as VerificationRequest, c as VerificationResult } from './types-D28h1384.js';
|
|
2
2
|
import { ObservedMetadata } from './metadata-capture.js';
|
|
3
3
|
|
|
4
4
|
/**
|
package/dist/verify.js
CHANGED
|
@@ -36,7 +36,7 @@ __export(verify_exports, {
|
|
|
36
36
|
module.exports = __toCommonJS(verify_exports);
|
|
37
37
|
|
|
38
38
|
// src/version.ts
|
|
39
|
-
var SDK_VERSION = "5.
|
|
39
|
+
var SDK_VERSION = "5.4.1";
|
|
40
40
|
|
|
41
41
|
// src/http.ts
|
|
42
42
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -176,7 +176,14 @@ function getCacheKey(request, counterpartyId) {
|
|
|
176
176
|
request.callerMetadata?.sourceIp || "",
|
|
177
177
|
request.callerMetadata?.userAgent || "",
|
|
178
178
|
request.callerMetadata?.forwardedFor || "",
|
|
179
|
-
request.callerMetadata?.agentCardUrl || ""
|
|
179
|
+
request.callerMetadata?.agentCardUrl || "",
|
|
180
|
+
// UAT2 Bug B (5.4.1): the commerce phase and cart identity DO affect the
|
|
181
|
+
// backend verdict — the confirm leg is the ONLY leg that may execute
|
|
182
|
+
// first-party settlement. Without these, a confirm within the cache TTL of
|
|
183
|
+
// its start_checkout quote was served the cached quote-leg grant (no
|
|
184
|
+
// settlementOutcome) and never reached the backend. Same F-A1-07 bug class.
|
|
185
|
+
request.commercePhase || "",
|
|
186
|
+
request.checkoutSessionId || ""
|
|
180
187
|
].join("|");
|
|
181
188
|
}
|
|
182
189
|
function getCachedResult(request, counterpartyId) {
|