@astrasyncai/verification-gateway 5.8.0 → 5.10.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.
Files changed (106) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/express.d.mts +1 -1
  3. package/dist/adapters/express.d.ts +1 -1
  4. package/dist/adapters/express.js +56 -7
  5. package/dist/adapters/express.js.map +1 -1
  6. package/dist/adapters/express.mjs +56 -7
  7. package/dist/adapters/express.mjs.map +1 -1
  8. package/dist/adapters/mcp.d.mts +1 -1
  9. package/dist/adapters/mcp.d.ts +1 -1
  10. package/dist/adapters/mcp.js +20 -2
  11. package/dist/adapters/mcp.js.map +1 -1
  12. package/dist/adapters/mcp.mjs +20 -2
  13. package/dist/adapters/mcp.mjs.map +1 -1
  14. package/dist/adapters/nextjs.d.mts +1 -1
  15. package/dist/adapters/nextjs.d.ts +1 -1
  16. package/dist/adapters/nextjs.js +56 -7
  17. package/dist/adapters/nextjs.js.map +1 -1
  18. package/dist/adapters/nextjs.mjs +56 -7
  19. package/dist/adapters/nextjs.mjs.map +1 -1
  20. package/dist/adapters/sdk.d.mts +1 -1
  21. package/dist/adapters/sdk.d.ts +1 -1
  22. package/dist/adapters/sdk.js +20 -2
  23. package/dist/adapters/sdk.js.map +1 -1
  24. package/dist/adapters/sdk.mjs +20 -2
  25. package/dist/adapters/sdk.mjs.map +1 -1
  26. package/dist/agent/index.js +1 -1
  27. package/dist/agent/index.js.map +1 -1
  28. package/dist/agent/index.mjs +1 -1
  29. package/dist/agent/index.mjs.map +1 -1
  30. package/dist/bin/astrasync-claude-hook.js +32 -6
  31. package/dist/bin/astrasync-codex-hook.js +32 -6
  32. package/dist/bin/astrasync-guard.js +32 -6
  33. package/dist/bin/astrasync.js +33 -6
  34. package/dist/browser/background.js +32 -6
  35. package/dist/browser/background.js.map +1 -1
  36. package/dist/browser/background.mjs +32 -6
  37. package/dist/browser/background.mjs.map +1 -1
  38. package/dist/cli/index.js +12 -4
  39. package/dist/cli/index.js.map +1 -1
  40. package/dist/cli/index.mjs +12 -4
  41. package/dist/cli/index.mjs.map +1 -1
  42. package/dist/codex/index.js +32 -6
  43. package/dist/codex/index.js.map +1 -1
  44. package/dist/codex/index.mjs +32 -6
  45. package/dist/codex/index.mjs.map +1 -1
  46. package/dist/cursor/extension.js +32 -6
  47. package/dist/cursor/extension.js.map +1 -1
  48. package/dist/cursor/extension.mjs +32 -6
  49. package/dist/cursor/extension.mjs.map +1 -1
  50. package/dist/edge-config.d.mts +24 -1
  51. package/dist/edge-config.d.ts +24 -1
  52. package/dist/edge-config.js +13 -5
  53. package/dist/edge-config.js.map +1 -1
  54. package/dist/edge-config.mjs +13 -5
  55. package/dist/edge-config.mjs.map +1 -1
  56. package/dist/edge-core/index.d.mts +14 -6
  57. package/dist/edge-core/index.d.ts +14 -6
  58. package/dist/edge-core/index.js +129 -17
  59. package/dist/edge-core/index.js.map +1 -1
  60. package/dist/edge-core/index.mjs +129 -17
  61. package/dist/edge-core/index.mjs.map +1 -1
  62. package/dist/gateway/gateway.js +32 -6
  63. package/dist/gateway/gateway.js.map +1 -1
  64. package/dist/gateway/gateway.mjs +32 -6
  65. package/dist/gateway/gateway.mjs.map +1 -1
  66. package/dist/git-trigger/git-hooks.d.mts +1 -1
  67. package/dist/git-trigger/git-hooks.d.ts +1 -1
  68. package/dist/index.d.mts +73 -6
  69. package/dist/index.d.ts +73 -6
  70. package/dist/index.js +66 -7
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.mjs +64 -7
  73. package/dist/index.mjs.map +1 -1
  74. package/dist/metadata-capture.d.mts +18 -1
  75. package/dist/metadata-capture.d.ts +18 -1
  76. package/dist/metadata-capture.js +10 -0
  77. package/dist/metadata-capture.js.map +1 -1
  78. package/dist/metadata-capture.mjs +8 -0
  79. package/dist/metadata-capture.mjs.map +1 -1
  80. package/dist/platform-signatures.d.mts +1 -1
  81. package/dist/platform-signatures.d.ts +1 -1
  82. package/dist/platform-signatures.js +24 -1
  83. package/dist/platform-signatures.js.map +1 -1
  84. package/dist/platform-signatures.mjs +24 -1
  85. package/dist/platform-signatures.mjs.map +1 -1
  86. package/dist/registration/index.js +1 -1
  87. package/dist/registration/index.js.map +1 -1
  88. package/dist/registration/index.mjs +1 -1
  89. package/dist/registration/index.mjs.map +1 -1
  90. package/dist/transport/index.js +1 -1
  91. package/dist/transport/index.js.map +1 -1
  92. package/dist/transport/index.mjs +1 -1
  93. package/dist/transport/index.mjs.map +1 -1
  94. package/dist/{types-BK_pRNSs.d.mts → types-CTmUpNpS.d.mts} +25 -2
  95. package/dist/{types-BK_pRNSs.d.ts → types-CTmUpNpS.d.ts} +25 -2
  96. package/dist/{types-CwY5IY-0.d.ts → types-CtFXmDzm.d.ts} +17 -2
  97. package/dist/{types-BCmHFdkJ.d.mts → types-DQrn_kei.d.mts} +17 -2
  98. package/dist/ui/index.d.mts +1 -1
  99. package/dist/ui/index.d.ts +1 -1
  100. package/dist/verify.d.mts +13 -1
  101. package/dist/verify.d.ts +13 -1
  102. package/dist/verify.js +20 -2
  103. package/dist/verify.js.map +1 -1
  104. package/dist/verify.mjs +20 -2
  105. package/dist/verify.mjs.map +1 -1
  106. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
- import { T as TokenGuidance, b as CounterpartyType } from '../types-BCmHFdkJ.mjs';
1
+ import { T as TokenGuidance, b as CounterpartyType } from '../types-DQrn_kei.mjs';
2
2
  import '../metadata-capture.mjs';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { T as TokenGuidance, b as CounterpartyType } from '../types-CwY5IY-0.js';
1
+ import { T as TokenGuidance, b as CounterpartyType } from '../types-CtFXmDzm.js';
2
2
  import '../metadata-capture.js';
3
3
 
4
4
  /**
package/dist/index.d.mts CHANGED
@@ -82,6 +82,14 @@ interface ObservedMetadata {
82
82
  * by the edge path, which sees the raw query string.
83
83
  */
84
84
  queryKeys?: string[];
85
+ /**
86
+ * Query-string VALUES for parameter names the endpoint owner explicitly
87
+ * allow-listed (`EdgeConfig.queryValueAllowlist`, seeded `utm_*` — VI
88
+ * uplift Part 4). The default remains NO value capture; this exists so
89
+ * campaign attribution (utm_source/medium/campaign) can be reported
90
+ * without widening the privacy stance. Bounded 16 entries × 256 chars.
91
+ */
92
+ queryParams?: Record<string, string>;
85
93
  /**
86
94
  * Version of the capture semantics this object was produced under — see
87
95
  * {@link CAPTURE_SCHEMA_VERSION}. Optional for backward compatibility with
@@ -104,6 +112,15 @@ interface SanitizeHeadersResult {
104
112
  declare const MAX_HEADERS = 64;
105
113
  declare const MAX_HEADER_VALUE_BYTES = 1024;
106
114
  declare const MAX_TOTAL_BYTES: number;
115
+ /**
116
+ * `X-Astra-Source` declared-source protocol (VI uplift Part 2). The header is
117
+ * SELF-ASSERTED and spoofable — it buys attribution, never trust: it is never
118
+ * read by any access decision and never conflated with fingerprint-matched
119
+ * (`platformVendor`) or ASTRA-verified evidence. One shared validator so the
120
+ * edge, backend, and bridge accept byte-identical values.
121
+ */
122
+ declare const DECLARED_SOURCE_MAX = 64;
123
+ declare function normalizeDeclaredSource(value: string | undefined | null): string | undefined;
107
124
  /**
108
125
  * Extract the safe key-format prefix from a credential header value. Strips a
109
126
  * leading `Bearer ` / `Basic ` scheme, then returns the longest known prefix
@@ -337,8 +354,8 @@ interface VerifiedAgent {
337
354
  trustScore: number;
338
355
  /** Trust level tier */
339
356
  trustLevel: TrustLevel;
340
- /** Whether agent is blockchain-verified */
341
- blockchainVerified: boolean;
357
+ /** Whether the agent's identity record is anchored on-chain (5.9.0: was `blockchainVerified`) */
358
+ blockchainAnchored: boolean;
342
359
  /** Agent status */
343
360
  status: 'active' | 'inactive' | 'suspended' | 'migrating' | 'terminated' | 'retired';
344
361
  }
@@ -767,6 +784,21 @@ interface CallerMetadata {
767
784
  forwardedFor?: string;
768
785
  /** Published agent card URL, if the agent advertised one (future: from agent headers). */
769
786
  agentCardUrl?: string;
787
+ /**
788
+ * Transport marker for the hop that relayed this call (e.g.
789
+ * `mcp-bridge/<version>`, or an `astrasync-sdk/<v>` UA demoted out of the
790
+ * userAgent slot). Attribution only — never the caller's UA and never a
791
+ * trust signal; kept outside the self-traffic filter so relayed buyer
792
+ * traffic stays merchant-visible.
793
+ */
794
+ via?: string;
795
+ /**
796
+ * Self-declared platform from the `X-Astra-Source` header (VI uplift
797
+ * Part 2), normalised via `normalizeDeclaredSource`. Spoofable by design —
798
+ * surfaces as the distinct "declared · unverified" evidence class, never
799
+ * as fingerprint/verified evidence, and never enters an access decision.
800
+ */
801
+ declaredSource?: string;
770
802
  /**
771
803
  * The full sanitised view of the agent's inbound request headers + connection
772
804
  * signals (maximal metadata capture: every signal legitimately visible on
@@ -1499,6 +1531,18 @@ declare function reportUnregisteredAttempt(config: GatewayConfig, data: {
1499
1531
  userAgent?: string;
1500
1532
  requestPath?: string;
1501
1533
  requestMethod?: string;
1534
+ /**
1535
+ * VI uplift Part 3 — attempt-chain handle (`att_<32hex>`, from the
1536
+ * X-Astra-Attempt-Id header or an `?astra_attempt=` deep link). Joins
1537
+ * the beacon into the agent's research chain. Attribution only.
1538
+ */
1539
+ attemptId?: string;
1540
+ /** First-class referer (traffic-source reporting). */
1541
+ referer?: string;
1542
+ /** The caller's Accept header (surface-classifier input). */
1543
+ accept?: string;
1544
+ /** Self-declared platform from X-Astra-Source (attribution, never trust). */
1545
+ declaredSource?: string;
1502
1546
  /**
1503
1547
  * 3.9.0 — edge-adapter evidence fields, persisted into the
1504
1548
  * event's eventData by the backend: `protocol` = detected transport/
@@ -4525,6 +4569,15 @@ interface EdgePathRule {
4525
4569
  mode?: EdgeMode;
4526
4570
  /** Override the top-level depth for this path. */
4527
4571
  depth?: EdgeVerificationDepth;
4572
+ /**
4573
+ * Per-path beacon sampling opt-DOWN (VI uplift 1.2). The default is full
4574
+ * capture; put a fractional rate on explicitly high-volume/low-value paths
4575
+ * (static mirrors, health checks) instead of sampling commerce traffic.
4576
+ */
4577
+ sampling?: {
4578
+ /** Fraction (0..1) of anonymous-bot requests that emit a beacon. */
4579
+ anonymousBeaconRate: number;
4580
+ };
4528
4581
  }
4529
4582
  interface EdgeConfig {
4530
4583
  /** Shape version — bump on breaking changes. */
@@ -4539,6 +4592,15 @@ interface EdgeConfig {
4539
4592
  /** Fraction (0..1) of anonymous-bot requests that emit a beacon. */
4540
4593
  anonymousBeaconRate: number;
4541
4594
  };
4595
+ /**
4596
+ * Query-string parameter names whose VALUES may be captured into
4597
+ * `observedMetadata.queryParams` (VI uplift Part 4 — campaign/UTM
4598
+ * attribution). Lowercase exact names or a single trailing-`*` glob
4599
+ * (`utm_*`); ≤16 entries × ≤64 chars. ABSENT by default — the privacy
4600
+ * stance (query values dropped at capture) is unchanged unless the
4601
+ * endpoint owner explicitly configures this.
4602
+ */
4603
+ queryValueAllowlist?: string[];
4542
4604
  /**
4543
4605
  * 4.5.0: the EFFECTIVE failure posture is derived from the effective
4544
4606
  * mode — fail posture follows success posture. Observe fails open
@@ -4557,6 +4619,11 @@ interface EdgeConfig {
4557
4619
  * The safe default: observe-only, classification depth, nothing enforced.
4558
4620
  * Served by the backend when an endpoint has never been configured, and
4559
4621
  * used by `getEdgeConfig` whenever no config can be fetched.
4622
+ *
4623
+ * Beacon rate 1.0 (VI uplift 1.2): every anonymous hit beacons by default —
4624
+ * a sampled denominator understates anonymous traffic in every dashboard
4625
+ * tile and no toggle can reveal the dropped rows. Sampling is a deliberate
4626
+ * per-path opt-down (`EdgePathRule.sampling`) for static/high-volume paths.
4560
4627
  */
4561
4628
  declare const DEFAULT_EDGE_CONFIG: EdgeConfig;
4562
4629
  /** Structural guard for configs arriving over the wire. */
@@ -4621,7 +4688,7 @@ declare function _resetEdgeConfigCache(): void;
4621
4688
  * Pure regex — no Node built-ins, edge-safe. Detection is regex-only for
4622
4689
  * v2.9 — TLS fingerprinting / behavioural signatures are deferred.
4623
4690
  */
4624
- type PlatformAgentVendor = 'claude' | 'chatgpt' | 'gemini' | 'cursor' | 'goose' | 'perplexity' | 'chatgpt-atlas' | 'perplexity-comet' | 'astrasync-sdk' | 'unknown';
4691
+ type PlatformAgentVendor = 'claude' | 'chatgpt' | 'gemini' | 'cursor' | 'goose' | 'perplexity' | 'chatgpt-atlas' | 'perplexity-comet' | 'astrasync-bridge' | 'astrasync-sdk' | 'unknown';
4625
4692
  interface PlatformFingerprint {
4626
4693
  vendor: PlatformAgentVendor;
4627
4694
  /** A stable identifier used as the orphan-agent dedup key. */
@@ -4765,7 +4832,7 @@ declare function detectRuntime(userAgent: string | undefined | null): string | u
4765
4832
  * silently (never throwing), so this is a no-op there — which is correct:
4766
4833
  * in a browser the page's real UA is the honest identity.
4767
4834
  */
4768
- declare const SDK_USER_AGENT = "astrasync-sdk/5.8.0";
4835
+ declare const SDK_USER_AGENT = "astrasync-sdk/5.10.0";
4769
4836
  declare const sdkFetch: typeof fetch;
4770
4837
 
4771
4838
  /**
@@ -4786,6 +4853,6 @@ declare const sdkFetch: typeof fetch;
4786
4853
  * is fine — bumping both in the release-ceremony commit keeps them
4787
4854
  * lockstep.
4788
4855
  */
4789
- declare const SDK_VERSION = "5.8.0";
4856
+ declare const SDK_VERSION = "5.10.0";
4790
4857
 
4791
- export { AgentClient, type AgentCredentials, type AgentProtocol, type AgentRecord, AstraSync, type AstraSyncConfig, type AstraSyncCredentials, AstraSyncError, type AttemptOutcome, type AttemptReport, AuthenticationError, type BuildGuidanceParams, CAPTURE_SCHEMA_VERSION, type CallerMetadata, ChallengeHandler, type CommerceArtifactsPayload, type CommerceContext, type CommercePipelineInput, type CommerceShieldProps, type ConsiderationItem, type ConsiderationSet, type CounterpartyType, DEFAULT_EDGE_CONFIG, type DynamicPlatformFingerprint, type EdgeConfig, type EdgeMode, type EdgePathRule, type EdgeVerificationDepth, type EnhancedVerificationResult, type ExpressMiddlewareOptions, type FetchEdgeConfigResult, type FetchEdgeConfigSuccess, type FiatSettlementBinding, type FrameworkConfig, type FulfilmentInfo, type GatewayConfig, type GuidanceEnvelope, type GuidanceInfo, type HealthResponse, KYDRequiredError, MAX_HEADERS, MAX_HEADER_VALUE_BYTES, MAX_TOTAL_BYTES, MCP_VERIFIED_HOP_HEADER, MCP_VERIFIED_HOP_MAX_AGE_MS, type McpMiddlewareOptions, type MerchantSettlementToken, type ModelConfig, type NextJsMiddlewareOptions, type ObservedMetadata, type PDLSSConfig$1 as PDLSSConfig, type PDLSSDuration, type PDLSSInfo, type PDLSSLimits, type PDLSSPurpose, type PDLSSScope, type PDLSSSelfInstantiation, PLATFORM_AGENT_SIGNATURES, type PendingRegistrationResponse, type PlatformAgentVendor, type PlatformDetectionInput, type PlatformFingerprint, type PlatformSignatureDef, type PollRegistrationResult, type ProtocolTransport, RUNTIME_SIGNATURES, type RegisterOptions, type RegisterResult, RegistrationDeniedError, RegistrationExpiredError, type RegistrationResponse, RegistrationTimeoutError, type RouteAccessConfig, type RuntimeChallengeResult, type RuntimeSignature, type SDKOptions, SDK_USER_AGENT, type SanitizeHeadersResult, type SettlementArtifact, type SettlementArtifactBinding, type SettlementArtifactBindingBase, type SettlementDecision, type SettlementOutcomeInfo, type SettlementRequest, type StablecoinSettlementBinding, type StepUpApprovalInfo, type StepUpApprovalStatus, type StepUpOutcome, TRUST_LEVEL_RANGES, type TokenGuidance, type ToolGate, type ToolGateConfig, type TrustLevel, SDK_VERSION as VERSION, type VerificationInterstitialProps, type VerificationRequest, type VerificationResult, type VerifiedAgent, type VerifiedDeveloper, type VerifiedHopMarker, type VerifiedOrganization, type VerifyOptions, type VerifyResponse, type WaitForApprovalOptions, type WellKnownAgenticCommerce, _resetEdgeConfigCache, index as agent, authorizeSettlement, awaitStepUpApproval, buildGuidance, buildSdkObservedMetadata, clearCache, createMcpMiddleware, degradeToObserve, deriveConnectionFromHeaders, detectPlatformFingerprint, detectRuntime, express, extractApiKeyFormat, extractCredentials, extractMcpCredentials, extractPlatformHeaders, fetchEdgeConfig, fetchRoutes, getCachedWellKnownUrls, getEdgeConfig, getTrustLevel, getWellKnownUrls, hasCredentials, isEdgeConfig, isVerifiedHopValidFor, matchEdgePathRule, matchPlatformSignature, nextjs, parseVerifiedHop, pollStepUpStatus, prefetchWellKnown, quickVerify, recordDecision, reportAttempt, reportUnregisteredAttempt, sanitizeHeaders, sdk, sdkFetch, serializeVerifiedHop, setMcpMeta, index$1 as transport, verify };
4858
+ export { AgentClient, type AgentCredentials, type AgentProtocol, type AgentRecord, AstraSync, type AstraSyncConfig, type AstraSyncCredentials, AstraSyncError, type AttemptOutcome, type AttemptReport, AuthenticationError, type BuildGuidanceParams, CAPTURE_SCHEMA_VERSION, type CallerMetadata, ChallengeHandler, type CommerceArtifactsPayload, type CommerceContext, type CommercePipelineInput, type CommerceShieldProps, type ConsiderationItem, type ConsiderationSet, type CounterpartyType, DECLARED_SOURCE_MAX, DEFAULT_EDGE_CONFIG, type DynamicPlatformFingerprint, type EdgeConfig, type EdgeMode, type EdgePathRule, type EdgeVerificationDepth, type EnhancedVerificationResult, type ExpressMiddlewareOptions, type FetchEdgeConfigResult, type FetchEdgeConfigSuccess, type FiatSettlementBinding, type FrameworkConfig, type FulfilmentInfo, type GatewayConfig, type GuidanceEnvelope, type GuidanceInfo, type HealthResponse, KYDRequiredError, MAX_HEADERS, MAX_HEADER_VALUE_BYTES, MAX_TOTAL_BYTES, MCP_VERIFIED_HOP_HEADER, MCP_VERIFIED_HOP_MAX_AGE_MS, type McpMiddlewareOptions, type MerchantSettlementToken, type ModelConfig, type NextJsMiddlewareOptions, type ObservedMetadata, type PDLSSConfig$1 as PDLSSConfig, type PDLSSDuration, type PDLSSInfo, type PDLSSLimits, type PDLSSPurpose, type PDLSSScope, type PDLSSSelfInstantiation, PLATFORM_AGENT_SIGNATURES, type PendingRegistrationResponse, type PlatformAgentVendor, type PlatformDetectionInput, type PlatformFingerprint, type PlatformSignatureDef, type PollRegistrationResult, type ProtocolTransport, RUNTIME_SIGNATURES, type RegisterOptions, type RegisterResult, RegistrationDeniedError, RegistrationExpiredError, type RegistrationResponse, RegistrationTimeoutError, type RouteAccessConfig, type RuntimeChallengeResult, type RuntimeSignature, type SDKOptions, SDK_USER_AGENT, type SanitizeHeadersResult, type SettlementArtifact, type SettlementArtifactBinding, type SettlementArtifactBindingBase, type SettlementDecision, type SettlementOutcomeInfo, type SettlementRequest, type StablecoinSettlementBinding, type StepUpApprovalInfo, type StepUpApprovalStatus, type StepUpOutcome, TRUST_LEVEL_RANGES, type TokenGuidance, type ToolGate, type ToolGateConfig, type TrustLevel, SDK_VERSION as VERSION, type VerificationInterstitialProps, type VerificationRequest, type VerificationResult, type VerifiedAgent, type VerifiedDeveloper, type VerifiedHopMarker, type VerifiedOrganization, type VerifyOptions, type VerifyResponse, type WaitForApprovalOptions, type WellKnownAgenticCommerce, _resetEdgeConfigCache, index as agent, authorizeSettlement, awaitStepUpApproval, buildGuidance, buildSdkObservedMetadata, clearCache, createMcpMiddleware, degradeToObserve, deriveConnectionFromHeaders, detectPlatformFingerprint, detectRuntime, express, extractApiKeyFormat, extractCredentials, extractMcpCredentials, extractPlatformHeaders, fetchEdgeConfig, fetchRoutes, getCachedWellKnownUrls, getEdgeConfig, getTrustLevel, getWellKnownUrls, hasCredentials, isEdgeConfig, isVerifiedHopValidFor, matchEdgePathRule, matchPlatformSignature, nextjs, normalizeDeclaredSource, parseVerifiedHop, pollStepUpStatus, prefetchWellKnown, quickVerify, recordDecision, reportAttempt, reportUnregisteredAttempt, sanitizeHeaders, sdk, sdkFetch, serializeVerifiedHop, setMcpMeta, index$1 as transport, verify };
package/dist/index.d.ts CHANGED
@@ -82,6 +82,14 @@ interface ObservedMetadata {
82
82
  * by the edge path, which sees the raw query string.
83
83
  */
84
84
  queryKeys?: string[];
85
+ /**
86
+ * Query-string VALUES for parameter names the endpoint owner explicitly
87
+ * allow-listed (`EdgeConfig.queryValueAllowlist`, seeded `utm_*` — VI
88
+ * uplift Part 4). The default remains NO value capture; this exists so
89
+ * campaign attribution (utm_source/medium/campaign) can be reported
90
+ * without widening the privacy stance. Bounded 16 entries × 256 chars.
91
+ */
92
+ queryParams?: Record<string, string>;
85
93
  /**
86
94
  * Version of the capture semantics this object was produced under — see
87
95
  * {@link CAPTURE_SCHEMA_VERSION}. Optional for backward compatibility with
@@ -104,6 +112,15 @@ interface SanitizeHeadersResult {
104
112
  declare const MAX_HEADERS = 64;
105
113
  declare const MAX_HEADER_VALUE_BYTES = 1024;
106
114
  declare const MAX_TOTAL_BYTES: number;
115
+ /**
116
+ * `X-Astra-Source` declared-source protocol (VI uplift Part 2). The header is
117
+ * SELF-ASSERTED and spoofable — it buys attribution, never trust: it is never
118
+ * read by any access decision and never conflated with fingerprint-matched
119
+ * (`platformVendor`) or ASTRA-verified evidence. One shared validator so the
120
+ * edge, backend, and bridge accept byte-identical values.
121
+ */
122
+ declare const DECLARED_SOURCE_MAX = 64;
123
+ declare function normalizeDeclaredSource(value: string | undefined | null): string | undefined;
107
124
  /**
108
125
  * Extract the safe key-format prefix from a credential header value. Strips a
109
126
  * leading `Bearer ` / `Basic ` scheme, then returns the longest known prefix
@@ -337,8 +354,8 @@ interface VerifiedAgent {
337
354
  trustScore: number;
338
355
  /** Trust level tier */
339
356
  trustLevel: TrustLevel;
340
- /** Whether agent is blockchain-verified */
341
- blockchainVerified: boolean;
357
+ /** Whether the agent's identity record is anchored on-chain (5.9.0: was `blockchainVerified`) */
358
+ blockchainAnchored: boolean;
342
359
  /** Agent status */
343
360
  status: 'active' | 'inactive' | 'suspended' | 'migrating' | 'terminated' | 'retired';
344
361
  }
@@ -767,6 +784,21 @@ interface CallerMetadata {
767
784
  forwardedFor?: string;
768
785
  /** Published agent card URL, if the agent advertised one (future: from agent headers). */
769
786
  agentCardUrl?: string;
787
+ /**
788
+ * Transport marker for the hop that relayed this call (e.g.
789
+ * `mcp-bridge/<version>`, or an `astrasync-sdk/<v>` UA demoted out of the
790
+ * userAgent slot). Attribution only — never the caller's UA and never a
791
+ * trust signal; kept outside the self-traffic filter so relayed buyer
792
+ * traffic stays merchant-visible.
793
+ */
794
+ via?: string;
795
+ /**
796
+ * Self-declared platform from the `X-Astra-Source` header (VI uplift
797
+ * Part 2), normalised via `normalizeDeclaredSource`. Spoofable by design —
798
+ * surfaces as the distinct "declared · unverified" evidence class, never
799
+ * as fingerprint/verified evidence, and never enters an access decision.
800
+ */
801
+ declaredSource?: string;
770
802
  /**
771
803
  * The full sanitised view of the agent's inbound request headers + connection
772
804
  * signals (maximal metadata capture: every signal legitimately visible on
@@ -1499,6 +1531,18 @@ declare function reportUnregisteredAttempt(config: GatewayConfig, data: {
1499
1531
  userAgent?: string;
1500
1532
  requestPath?: string;
1501
1533
  requestMethod?: string;
1534
+ /**
1535
+ * VI uplift Part 3 — attempt-chain handle (`att_<32hex>`, from the
1536
+ * X-Astra-Attempt-Id header or an `?astra_attempt=` deep link). Joins
1537
+ * the beacon into the agent's research chain. Attribution only.
1538
+ */
1539
+ attemptId?: string;
1540
+ /** First-class referer (traffic-source reporting). */
1541
+ referer?: string;
1542
+ /** The caller's Accept header (surface-classifier input). */
1543
+ accept?: string;
1544
+ /** Self-declared platform from X-Astra-Source (attribution, never trust). */
1545
+ declaredSource?: string;
1502
1546
  /**
1503
1547
  * 3.9.0 — edge-adapter evidence fields, persisted into the
1504
1548
  * event's eventData by the backend: `protocol` = detected transport/
@@ -4525,6 +4569,15 @@ interface EdgePathRule {
4525
4569
  mode?: EdgeMode;
4526
4570
  /** Override the top-level depth for this path. */
4527
4571
  depth?: EdgeVerificationDepth;
4572
+ /**
4573
+ * Per-path beacon sampling opt-DOWN (VI uplift 1.2). The default is full
4574
+ * capture; put a fractional rate on explicitly high-volume/low-value paths
4575
+ * (static mirrors, health checks) instead of sampling commerce traffic.
4576
+ */
4577
+ sampling?: {
4578
+ /** Fraction (0..1) of anonymous-bot requests that emit a beacon. */
4579
+ anonymousBeaconRate: number;
4580
+ };
4528
4581
  }
4529
4582
  interface EdgeConfig {
4530
4583
  /** Shape version — bump on breaking changes. */
@@ -4539,6 +4592,15 @@ interface EdgeConfig {
4539
4592
  /** Fraction (0..1) of anonymous-bot requests that emit a beacon. */
4540
4593
  anonymousBeaconRate: number;
4541
4594
  };
4595
+ /**
4596
+ * Query-string parameter names whose VALUES may be captured into
4597
+ * `observedMetadata.queryParams` (VI uplift Part 4 — campaign/UTM
4598
+ * attribution). Lowercase exact names or a single trailing-`*` glob
4599
+ * (`utm_*`); ≤16 entries × ≤64 chars. ABSENT by default — the privacy
4600
+ * stance (query values dropped at capture) is unchanged unless the
4601
+ * endpoint owner explicitly configures this.
4602
+ */
4603
+ queryValueAllowlist?: string[];
4542
4604
  /**
4543
4605
  * 4.5.0: the EFFECTIVE failure posture is derived from the effective
4544
4606
  * mode — fail posture follows success posture. Observe fails open
@@ -4557,6 +4619,11 @@ interface EdgeConfig {
4557
4619
  * The safe default: observe-only, classification depth, nothing enforced.
4558
4620
  * Served by the backend when an endpoint has never been configured, and
4559
4621
  * used by `getEdgeConfig` whenever no config can be fetched.
4622
+ *
4623
+ * Beacon rate 1.0 (VI uplift 1.2): every anonymous hit beacons by default —
4624
+ * a sampled denominator understates anonymous traffic in every dashboard
4625
+ * tile and no toggle can reveal the dropped rows. Sampling is a deliberate
4626
+ * per-path opt-down (`EdgePathRule.sampling`) for static/high-volume paths.
4560
4627
  */
4561
4628
  declare const DEFAULT_EDGE_CONFIG: EdgeConfig;
4562
4629
  /** Structural guard for configs arriving over the wire. */
@@ -4621,7 +4688,7 @@ declare function _resetEdgeConfigCache(): void;
4621
4688
  * Pure regex — no Node built-ins, edge-safe. Detection is regex-only for
4622
4689
  * v2.9 — TLS fingerprinting / behavioural signatures are deferred.
4623
4690
  */
4624
- type PlatformAgentVendor = 'claude' | 'chatgpt' | 'gemini' | 'cursor' | 'goose' | 'perplexity' | 'chatgpt-atlas' | 'perplexity-comet' | 'astrasync-sdk' | 'unknown';
4691
+ type PlatformAgentVendor = 'claude' | 'chatgpt' | 'gemini' | 'cursor' | 'goose' | 'perplexity' | 'chatgpt-atlas' | 'perplexity-comet' | 'astrasync-bridge' | 'astrasync-sdk' | 'unknown';
4625
4692
  interface PlatformFingerprint {
4626
4693
  vendor: PlatformAgentVendor;
4627
4694
  /** A stable identifier used as the orphan-agent dedup key. */
@@ -4765,7 +4832,7 @@ declare function detectRuntime(userAgent: string | undefined | null): string | u
4765
4832
  * silently (never throwing), so this is a no-op there — which is correct:
4766
4833
  * in a browser the page's real UA is the honest identity.
4767
4834
  */
4768
- declare const SDK_USER_AGENT = "astrasync-sdk/5.8.0";
4835
+ declare const SDK_USER_AGENT = "astrasync-sdk/5.10.0";
4769
4836
  declare const sdkFetch: typeof fetch;
4770
4837
 
4771
4838
  /**
@@ -4786,6 +4853,6 @@ declare const sdkFetch: typeof fetch;
4786
4853
  * is fine — bumping both in the release-ceremony commit keeps them
4787
4854
  * lockstep.
4788
4855
  */
4789
- declare const SDK_VERSION = "5.8.0";
4856
+ declare const SDK_VERSION = "5.10.0";
4790
4857
 
4791
- export { AgentClient, type AgentCredentials, type AgentProtocol, type AgentRecord, AstraSync, type AstraSyncConfig, type AstraSyncCredentials, AstraSyncError, type AttemptOutcome, type AttemptReport, AuthenticationError, type BuildGuidanceParams, CAPTURE_SCHEMA_VERSION, type CallerMetadata, ChallengeHandler, type CommerceArtifactsPayload, type CommerceContext, type CommercePipelineInput, type CommerceShieldProps, type ConsiderationItem, type ConsiderationSet, type CounterpartyType, DEFAULT_EDGE_CONFIG, type DynamicPlatformFingerprint, type EdgeConfig, type EdgeMode, type EdgePathRule, type EdgeVerificationDepth, type EnhancedVerificationResult, type ExpressMiddlewareOptions, type FetchEdgeConfigResult, type FetchEdgeConfigSuccess, type FiatSettlementBinding, type FrameworkConfig, type FulfilmentInfo, type GatewayConfig, type GuidanceEnvelope, type GuidanceInfo, type HealthResponse, KYDRequiredError, MAX_HEADERS, MAX_HEADER_VALUE_BYTES, MAX_TOTAL_BYTES, MCP_VERIFIED_HOP_HEADER, MCP_VERIFIED_HOP_MAX_AGE_MS, type McpMiddlewareOptions, type MerchantSettlementToken, type ModelConfig, type NextJsMiddlewareOptions, type ObservedMetadata, type PDLSSConfig$1 as PDLSSConfig, type PDLSSDuration, type PDLSSInfo, type PDLSSLimits, type PDLSSPurpose, type PDLSSScope, type PDLSSSelfInstantiation, PLATFORM_AGENT_SIGNATURES, type PendingRegistrationResponse, type PlatformAgentVendor, type PlatformDetectionInput, type PlatformFingerprint, type PlatformSignatureDef, type PollRegistrationResult, type ProtocolTransport, RUNTIME_SIGNATURES, type RegisterOptions, type RegisterResult, RegistrationDeniedError, RegistrationExpiredError, type RegistrationResponse, RegistrationTimeoutError, type RouteAccessConfig, type RuntimeChallengeResult, type RuntimeSignature, type SDKOptions, SDK_USER_AGENT, type SanitizeHeadersResult, type SettlementArtifact, type SettlementArtifactBinding, type SettlementArtifactBindingBase, type SettlementDecision, type SettlementOutcomeInfo, type SettlementRequest, type StablecoinSettlementBinding, type StepUpApprovalInfo, type StepUpApprovalStatus, type StepUpOutcome, TRUST_LEVEL_RANGES, type TokenGuidance, type ToolGate, type ToolGateConfig, type TrustLevel, SDK_VERSION as VERSION, type VerificationInterstitialProps, type VerificationRequest, type VerificationResult, type VerifiedAgent, type VerifiedDeveloper, type VerifiedHopMarker, type VerifiedOrganization, type VerifyOptions, type VerifyResponse, type WaitForApprovalOptions, type WellKnownAgenticCommerce, _resetEdgeConfigCache, index as agent, authorizeSettlement, awaitStepUpApproval, buildGuidance, buildSdkObservedMetadata, clearCache, createMcpMiddleware, degradeToObserve, deriveConnectionFromHeaders, detectPlatformFingerprint, detectRuntime, express, extractApiKeyFormat, extractCredentials, extractMcpCredentials, extractPlatformHeaders, fetchEdgeConfig, fetchRoutes, getCachedWellKnownUrls, getEdgeConfig, getTrustLevel, getWellKnownUrls, hasCredentials, isEdgeConfig, isVerifiedHopValidFor, matchEdgePathRule, matchPlatformSignature, nextjs, parseVerifiedHop, pollStepUpStatus, prefetchWellKnown, quickVerify, recordDecision, reportAttempt, reportUnregisteredAttempt, sanitizeHeaders, sdk, sdkFetch, serializeVerifiedHop, setMcpMeta, index$1 as transport, verify };
4858
+ export { AgentClient, type AgentCredentials, type AgentProtocol, type AgentRecord, AstraSync, type AstraSyncConfig, type AstraSyncCredentials, AstraSyncError, type AttemptOutcome, type AttemptReport, AuthenticationError, type BuildGuidanceParams, CAPTURE_SCHEMA_VERSION, type CallerMetadata, ChallengeHandler, type CommerceArtifactsPayload, type CommerceContext, type CommercePipelineInput, type CommerceShieldProps, type ConsiderationItem, type ConsiderationSet, type CounterpartyType, DECLARED_SOURCE_MAX, DEFAULT_EDGE_CONFIG, type DynamicPlatformFingerprint, type EdgeConfig, type EdgeMode, type EdgePathRule, type EdgeVerificationDepth, type EnhancedVerificationResult, type ExpressMiddlewareOptions, type FetchEdgeConfigResult, type FetchEdgeConfigSuccess, type FiatSettlementBinding, type FrameworkConfig, type FulfilmentInfo, type GatewayConfig, type GuidanceEnvelope, type GuidanceInfo, type HealthResponse, KYDRequiredError, MAX_HEADERS, MAX_HEADER_VALUE_BYTES, MAX_TOTAL_BYTES, MCP_VERIFIED_HOP_HEADER, MCP_VERIFIED_HOP_MAX_AGE_MS, type McpMiddlewareOptions, type MerchantSettlementToken, type ModelConfig, type NextJsMiddlewareOptions, type ObservedMetadata, type PDLSSConfig$1 as PDLSSConfig, type PDLSSDuration, type PDLSSInfo, type PDLSSLimits, type PDLSSPurpose, type PDLSSScope, type PDLSSSelfInstantiation, PLATFORM_AGENT_SIGNATURES, type PendingRegistrationResponse, type PlatformAgentVendor, type PlatformDetectionInput, type PlatformFingerprint, type PlatformSignatureDef, type PollRegistrationResult, type ProtocolTransport, RUNTIME_SIGNATURES, type RegisterOptions, type RegisterResult, RegistrationDeniedError, RegistrationExpiredError, type RegistrationResponse, RegistrationTimeoutError, type RouteAccessConfig, type RuntimeChallengeResult, type RuntimeSignature, type SDKOptions, SDK_USER_AGENT, type SanitizeHeadersResult, type SettlementArtifact, type SettlementArtifactBinding, type SettlementArtifactBindingBase, type SettlementDecision, type SettlementOutcomeInfo, type SettlementRequest, type StablecoinSettlementBinding, type StepUpApprovalInfo, type StepUpApprovalStatus, type StepUpOutcome, TRUST_LEVEL_RANGES, type TokenGuidance, type ToolGate, type ToolGateConfig, type TrustLevel, SDK_VERSION as VERSION, type VerificationInterstitialProps, type VerificationRequest, type VerificationResult, type VerifiedAgent, type VerifiedDeveloper, type VerifiedHopMarker, type VerifiedOrganization, type VerifyOptions, type VerifyResponse, type WaitForApprovalOptions, type WellKnownAgenticCommerce, _resetEdgeConfigCache, index as agent, authorizeSettlement, awaitStepUpApproval, buildGuidance, buildSdkObservedMetadata, clearCache, createMcpMiddleware, degradeToObserve, deriveConnectionFromHeaders, detectPlatformFingerprint, detectRuntime, express, extractApiKeyFormat, extractCredentials, extractMcpCredentials, extractPlatformHeaders, fetchEdgeConfig, fetchRoutes, getCachedWellKnownUrls, getEdgeConfig, getTrustLevel, getWellKnownUrls, hasCredentials, isEdgeConfig, isVerifiedHopValidFor, matchEdgePathRule, matchPlatformSignature, nextjs, normalizeDeclaredSource, parseVerifiedHop, pollStepUpStatus, prefetchWellKnown, quickVerify, recordDecision, reportAttempt, reportUnregisteredAttempt, sanitizeHeaders, sdk, sdkFetch, serializeVerifiedHop, setMcpMeta, index$1 as transport, verify };
package/dist/index.js CHANGED
@@ -36,6 +36,7 @@ __export(src_exports, {
36
36
  AuthenticationError: () => AuthenticationError,
37
37
  CAPTURE_SCHEMA_VERSION: () => CAPTURE_SCHEMA_VERSION,
38
38
  ChallengeHandler: () => ChallengeHandler,
39
+ DECLARED_SOURCE_MAX: () => DECLARED_SOURCE_MAX,
39
40
  DEFAULT_EDGE_CONFIG: () => DEFAULT_EDGE_CONFIG,
40
41
  KYDRequiredError: () => KYDRequiredError,
41
42
  MAX_HEADERS: () => MAX_HEADERS,
@@ -80,6 +81,7 @@ __export(src_exports, {
80
81
  matchEdgePathRule: () => matchEdgePathRule,
81
82
  matchPlatformSignature: () => matchPlatformSignature,
82
83
  nextjs: () => nextjs_exports,
84
+ normalizeDeclaredSource: () => normalizeDeclaredSource,
83
85
  parseVerifiedHop: () => parseVerifiedHop,
84
86
  pollStepUpStatus: () => pollStepUpStatus,
85
87
  prefetchWellKnown: () => prefetchWellKnown,
@@ -112,7 +114,7 @@ function getTrustLevel(score) {
112
114
  }
113
115
 
114
116
  // src/version.ts
115
- var SDK_VERSION = "5.8.0";
117
+ var SDK_VERSION = "5.10.0";
116
118
 
117
119
  // src/http.ts
118
120
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -523,6 +525,24 @@ async function callVerifyAccessAPI(config, request) {
523
525
  }
524
526
  };
525
527
  }
528
+ if (response.status === 400 && data?.error === "INVALID_AGENT_ID") {
529
+ const message = typeof data?.message === "string" ? data.message : "Agent identifier must be a canonical ASTRA-* id.";
530
+ return {
531
+ success: true,
532
+ attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
533
+ access: {
534
+ allowed: false,
535
+ reason: "invalid_agent_id",
536
+ failures: [
537
+ {
538
+ dimension: "identity.invalid_agent_id",
539
+ message,
540
+ guidance: typeof data?.guidance === "string" ? data.guidance : "Present your canonical ASTRA-* id (discover it via GET /api/agents/request-registration/{requestId} after owner approval)."
541
+ }
542
+ ]
543
+ }
544
+ };
545
+ }
526
546
  if (!response.ok) {
527
547
  if (response.status === 401) {
528
548
  return {
@@ -662,7 +682,7 @@ async function verify(config, request, options) {
662
682
  name: apiResponse.agent.name,
663
683
  trustScore: apiResponse.agent.trustScore,
664
684
  trustLevel: getTrustLevel(apiResponse.agent.trustScore),
665
- blockchainVerified: apiResponse.agent.blockchainStatus === "verified",
685
+ blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
666
686
  status: apiResponse.agent.agentStatus
667
687
  } : void 0;
668
688
  const developer = apiResponse.developer ? {
@@ -1246,6 +1266,12 @@ var KEY_FORMAT_PREFIXES = [
1246
1266
  var MAX_HEADERS = 64;
1247
1267
  var MAX_HEADER_VALUE_BYTES = 1024;
1248
1268
  var MAX_TOTAL_BYTES = 16 * 1024;
1269
+ var DECLARED_SOURCE_MAX = 64;
1270
+ var DECLARED_SOURCE_PATTERN = /^[a-z0-9][a-z0-9 ._/-]{0,63}$/;
1271
+ function normalizeDeclaredSource(value) {
1272
+ const trimmed = value?.trim().slice(0, DECLARED_SOURCE_MAX).toLowerCase();
1273
+ return trimmed && DECLARED_SOURCE_PATTERN.test(trimmed) ? trimmed : void 0;
1274
+ }
1249
1275
  function byteLength(s) {
1250
1276
  let bytes = 0;
1251
1277
  for (let i = 0; i < s.length; i++) {
@@ -1425,11 +1451,16 @@ var DEFAULT_EDGE_CONFIG = Object.freeze({
1425
1451
  mode: "observe",
1426
1452
  depth: "classify",
1427
1453
  pathRules: [],
1428
- sampling: Object.freeze({ anonymousBeaconRate: 0.1 }),
1454
+ sampling: Object.freeze({ anonymousBeaconRate: 1 }),
1429
1455
  failurePosture: "open"
1430
1456
  });
1431
1457
  var EDGE_MODES = ["observe", "enforce"];
1432
1458
  var EDGE_DEPTHS = ["classify", "authenticate", "authorize"];
1459
+ function isSamplingShape(value) {
1460
+ if (typeof value !== "object" || value === null) return false;
1461
+ const rate = value.anonymousBeaconRate;
1462
+ return typeof rate === "number" && rate >= 0 && rate <= 1;
1463
+ }
1433
1464
  function isEdgeConfig(value) {
1434
1465
  if (typeof value !== "object" || value === null) return false;
1435
1466
  const v = value;
@@ -1443,10 +1474,13 @@ function isEdgeConfig(value) {
1443
1474
  if (typeof r.pattern !== "string" || r.pattern.length === 0) return false;
1444
1475
  if (r.mode !== void 0 && !EDGE_MODES.includes(r.mode)) return false;
1445
1476
  if (r.depth !== void 0 && !EDGE_DEPTHS.includes(r.depth)) return false;
1477
+ if (r.sampling !== void 0 && !isSamplingShape(r.sampling)) return false;
1446
1478
  }
1447
- const sampling = v.sampling;
1448
- if (typeof sampling !== "object" || sampling === null || typeof sampling.anonymousBeaconRate !== "number" || sampling.anonymousBeaconRate < 0 || sampling.anonymousBeaconRate > 1) {
1449
- return false;
1479
+ if (!isSamplingShape(v.sampling)) return false;
1480
+ if (v.queryValueAllowlist !== void 0) {
1481
+ if (!Array.isArray(v.queryValueAllowlist) || v.queryValueAllowlist.length > 16 || !v.queryValueAllowlist.every((e) => typeof e === "string" && e.length > 0 && e.length <= 64)) {
1482
+ return false;
1483
+ }
1450
1484
  }
1451
1485
  return v.failurePosture === "open";
1452
1486
  }
@@ -1562,7 +1596,20 @@ var PLATFORM_AGENT_SIGNATURES = [
1562
1596
  {
1563
1597
  vendor: "gemini",
1564
1598
  displayName: "Google Gemini",
1565
- uaPatterns: [/gemini/i, /google-gemini/i, /bard/i],
1599
+ uaPatterns: [
1600
+ /gemini/i,
1601
+ /google-gemini/i,
1602
+ /bard/i,
1603
+ // Google's AI/agent fetcher tokens (VI uplift 1.3). These are the
1604
+ // AI-training/agent crawlers, NOT the Search crawler — googlebot IP
1605
+ // ranges attribute Search and are deliberately absent from
1606
+ // vendor-ip-ranges. Anchored tokens: none appears in stock browser
1607
+ // UAs, and `-` counts as a \b boundary so GoogleOther-Image/-Video
1608
+ // match too.
1609
+ /\bGoogle-Extended\b/i,
1610
+ /\bGoogleOther\b/i,
1611
+ /\bGoogle-CloudVertexBot\b/i
1612
+ ],
1566
1613
  agentCardPatterns: [/gemini\.google\.com/i, /ai\.google\.dev/i],
1567
1614
  apiKeyFormatPatterns: [/^aiza/i],
1568
1615
  headerPatterns: [/^x-goog-user-project/i, /^x-goog-api-client/i]
@@ -1608,6 +1655,16 @@ var PLATFORM_AGENT_SIGNATURES = [
1608
1655
  uaPatterns: [/\bcomet\/\d/i],
1609
1656
  headerPatterns: [/^sec-ch-ua: .*comet/i]
1610
1657
  },
1658
+ // The MCP bridge's own catalog fetches (VI uplift 1.5). Deliberately a
1659
+ // DISTINCT UA from `astrasync-sdk/`: bridge fetches are buyer-agent
1660
+ // traffic merchants should see (identified · unregistered), so this
1661
+ // vendor is kept OUT of the self-traffic filter and the edge's SELF
1662
+ // short-circuit.
1663
+ {
1664
+ vendor: "astrasync-bridge",
1665
+ displayName: "AstraSync MCP bridge (buyer-agent catalog fetch)",
1666
+ uaPatterns: [/^astrasync-bridge\//i]
1667
+ },
1611
1668
  // Our own SDK self-identifies (sdkFetch stamps this UA) — first-party
1612
1669
  // traffic must never pollute the unknown/anonymous pool it exists to audit.
1613
1670
  {
@@ -6625,6 +6682,7 @@ function detectRuntime(userAgent) {
6625
6682
  AuthenticationError,
6626
6683
  CAPTURE_SCHEMA_VERSION,
6627
6684
  ChallengeHandler,
6685
+ DECLARED_SOURCE_MAX,
6628
6686
  DEFAULT_EDGE_CONFIG,
6629
6687
  KYDRequiredError,
6630
6688
  MAX_HEADERS,
@@ -6669,6 +6727,7 @@ function detectRuntime(userAgent) {
6669
6727
  matchEdgePathRule,
6670
6728
  matchPlatformSignature,
6671
6729
  nextjs,
6730
+ normalizeDeclaredSource,
6672
6731
  parseVerifiedHop,
6673
6732
  pollStepUpStatus,
6674
6733
  prefetchWellKnown,