@astrasyncai/verification-gateway 4.6.0 → 5.0.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/dist/adapter-interface/interface.d.mts +2 -2
- package/dist/adapter-interface/interface.d.ts +2 -2
- package/dist/adapters/express.d.mts +2 -2
- package/dist/adapters/express.d.ts +2 -2
- package/dist/adapters/express.js +6 -33
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +6 -33
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/mcp.d.mts +2 -2
- package/dist/adapters/mcp.d.ts +2 -2
- package/dist/adapters/mcp.js +23 -65
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +22 -64
- package/dist/adapters/mcp.mjs.map +1 -1
- package/dist/adapters/nextjs.d.mts +2 -2
- package/dist/adapters/nextjs.d.ts +2 -2
- package/dist/adapters/nextjs.js +4 -30
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +4 -30
- package/dist/adapters/nextjs.mjs.map +1 -1
- package/dist/adapters/sdk.d.mts +2 -2
- package/dist/adapters/sdk.d.ts +2 -2
- package/dist/adapters/sdk.js +3 -124
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +3 -122
- package/dist/adapters/sdk.mjs.map +1 -1
- package/dist/agent/index.d.mts +2 -2
- package/dist/agent/index.d.ts +2 -2
- 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 +4 -29
- package/dist/bin/astrasync-codex-hook.js +4 -29
- package/dist/bin/astrasync-guard.js +4 -29
- package/dist/bin/astrasync.js +9 -34
- package/dist/browser/background.js +4 -29
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +4 -29
- package/dist/browser/background.mjs.map +1 -1
- package/dist/browser/browser-adapter.d.mts +2 -2
- package/dist/browser/browser-adapter.d.ts +2 -2
- package/dist/claude-code/claude-code-adapter.d.mts +2 -2
- package/dist/claude-code/claude-code-adapter.d.ts +2 -2
- package/dist/cli/index.d.mts +2 -2
- package/dist/cli/index.d.ts +2 -2
- 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 +2 -2
- package/dist/codex/index.d.ts +2 -2
- package/dist/codex/index.js +4 -29
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +4 -29
- package/dist/codex/index.mjs.map +1 -1
- package/dist/cursor/cursor-adapter.d.mts +2 -2
- package/dist/cursor/cursor-adapter.d.ts +2 -2
- package/dist/cursor/extension.d.mts +2 -2
- package/dist/cursor/extension.d.ts +2 -2
- package/dist/cursor/extension.js +4 -29
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +4 -29
- 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 -3
- package/dist/edge-core/index.d.ts +1 -3
- package/dist/edge-core/index.js +6 -33
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +6 -33
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/{express-D-8Ks2Uo.d.ts → express-B5lWuemA.d.ts} +1 -1
- package/dist/{express-DBtPKXOL.d.mts → express-Dm-snUuY.d.mts} +1 -1
- package/dist/gateway/gateway.d.mts +2 -2
- package/dist/gateway/gateway.d.ts +2 -2
- package/dist/gateway/gateway.js +4 -29
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +4 -29
- package/dist/gateway/gateway.mjs.map +1 -1
- package/dist/git-trigger/git-hooks.d.mts +2 -2
- package/dist/git-trigger/git-hooks.d.ts +2 -2
- package/dist/{index-kGCGWd5x.d.mts → index-B5k_vUmK.d.mts} +1 -1
- package/dist/{index-CUfmJ1Dq.d.mts → index-BOzM6xUq.d.mts} +1 -1
- package/dist/{index-BND3kQev.d.ts → index-dRfxUdFA.d.ts} +1 -1
- package/dist/{index-DlZORQsb.d.ts → index-y8xToocF.d.ts} +1 -1
- package/dist/index.d.mts +10 -10
- package/dist/index.d.ts +10 -10
- package/dist/index.js +25 -217
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +25 -210
- package/dist/index.mjs.map +1 -1
- package/dist/local-evaluator/evaluator.d.mts +2 -2
- package/dist/local-evaluator/evaluator.d.ts +2 -2
- package/dist/local-evaluator/evaluator.js.map +1 -1
- package/dist/local-evaluator/evaluator.mjs.map +1 -1
- package/dist/{mcp-ZRN4kY3b.d.mts → mcp-DgsyQiQq.d.mts} +53 -52
- package/dist/{mcp-DToTlwIn.d.ts → mcp-OosmAcKf.d.ts} +53 -52
- package/dist/{nextjs-C0KASOy_.d.mts → nextjs-B1sBdEav.d.mts} +1 -1
- package/dist/{nextjs-lwNvWYWT.d.ts → nextjs-DoRmhV_Z.d.ts} +1 -1
- 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/sdk-B83N3xKc.d.mts +142 -0
- package/dist/sdk-H_9BTNBS.d.ts +142 -0
- package/dist/transport/index.d.mts +2 -2
- package/dist/transport/index.d.ts +2 -2
- 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-CGPU7HLi.d.ts → types-BK2POWNc.d.ts} +15 -50
- package/dist/{types-Cx9hTpKI.d.mts → types-CJjZvPr9.d.mts} +15 -50
- package/dist/{types-DhhJxKIC.d.ts → types-CXf3q4kZ.d.ts} +1 -3
- package/dist/{types-CfSJLS4i.d.mts → types-DQmop7ZW.d.mts} +1 -3
- package/dist/ui/index.d.mts +2 -17
- package/dist/ui/index.d.ts +2 -17
- package/dist/ui/index.js +1 -43
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +1 -42
- package/dist/ui/index.mjs.map +1 -1
- package/dist/verify.d.mts +3 -4
- package/dist/verify.d.ts +3 -4
- package/dist/verify.js +3 -28
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +3 -28
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/sdk-B4aodEwj.d.ts +0 -215
- package/dist/sdk-B9dSwum7.d.mts +0 -215
|
@@ -10,37 +10,6 @@ import { ObservedMetadata } from './metadata-capture.js';
|
|
|
10
10
|
* Trust levels assigned to agents based on their composite trust score
|
|
11
11
|
*/
|
|
12
12
|
type TrustLevel = 'BRONZE' | 'SILVER' | 'GOLD' | 'PLATINUM';
|
|
13
|
-
/**
|
|
14
|
-
* Access levels granted based on verification result. Server is the single
|
|
15
|
-
* source of truth — these values are the resolved decision the server returns
|
|
16
|
-
* in `access.accessLevel`. SDK reads them verbatim (no client-side remap).
|
|
17
|
-
*
|
|
18
|
-
* For ANONYMOUS / unverified callers, the level is determined by the
|
|
19
|
-
* endpoint's `unverifiedAgentPolicy` per the verify-access canonical flow:
|
|
20
|
-
* - deny: `none` — caller is denied + advised to register
|
|
21
|
-
* - allow_partial: `restricted` — reduced/browse-only access + advised
|
|
22
|
-
* - allow_full: `standard` — unrestricted + advised to register for next time
|
|
23
|
-
* Every branch ALWAYS emits a verification event + queues a blockchain record.
|
|
24
|
-
*
|
|
25
|
-
* For VERIFIED callers, the level is resolved server-side from the
|
|
26
|
-
* agent's live trust score plus the endpoint's `trust_score_requirement`:
|
|
27
|
-
* - none: agent below endpoint gate (denied; access.allowed=false)
|
|
28
|
-
* - restricted: 0–19 trust score (registration-prompt only, no real capability)
|
|
29
|
-
* - read-only: 20–39 trust score (browse, no mutations)
|
|
30
|
-
* - standard: 40–69 trust score (PDLSS-scoped operations)
|
|
31
|
-
* - full: 70+ trust score (PDLSS-scoped, high-trust)
|
|
32
|
-
* - internal: same-org membership, regardless of score
|
|
33
|
-
*
|
|
34
|
-
* v2.3.9 renamed the `'guidance'` band → `'restricted'`. The old name
|
|
35
|
-
* collided with the `guidance: {registrationUrl, ...}` help-payload object
|
|
36
|
-
* on VerificationResult, and the collision let denied requests pass any
|
|
37
|
-
* route gated at `'guidance'` (`hasMinimumAccess('guidance', 'guidance')
|
|
38
|
-
* === true`). Banded vocabulary stays capability-noun (none / restricted /
|
|
39
|
-
* read-only / standard / full / internal); response-shape descriptors stay
|
|
40
|
-
* nouns (guidance, advisory). Adapters additionally short-circuit on
|
|
41
|
-
* `!result.identityVerified || !result.policyAllowed` as belt-and-braces.
|
|
42
|
-
*/
|
|
43
|
-
type AccessLevel = 'none' | 'restricted' | 'read-only' | 'standard' | 'full' | 'internal';
|
|
44
13
|
/**
|
|
45
14
|
* Types of counterparties that can integrate the gateway
|
|
46
15
|
*/
|
|
@@ -66,14 +35,12 @@ interface GatewayConfig {
|
|
|
66
35
|
apiBaseUrl: string;
|
|
67
36
|
/** API key for authenticating with AstraSync. */
|
|
68
37
|
apiKey?: string;
|
|
69
|
-
/** Default access level for unverified requests */
|
|
70
|
-
defaultAccessLevel?: AccessLevel;
|
|
71
38
|
/**
|
|
72
39
|
* @deprecated Removed in v2.3.0 — server is the single source of truth for
|
|
73
|
-
* access
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
40
|
+
* access decisions (verified ID + runtime challenge + PDLSS + trust score).
|
|
41
|
+
* Setting this no longer affects access decisions. If you need a higher gate
|
|
42
|
+
* for an endpoint, configure it server-side via the endpoint's
|
|
43
|
+
* `trust_score_requirement`.
|
|
77
44
|
*/
|
|
78
45
|
minTrustScore?: number;
|
|
79
46
|
/**
|
|
@@ -168,12 +135,11 @@ interface GatewayConfig {
|
|
|
168
135
|
dashboardUrl?: string;
|
|
169
136
|
/**
|
|
170
137
|
* When true, the middleware calls verify-access for any request that presents
|
|
171
|
-
* AstraSync credentials, even on routes /
|
|
172
|
-
*
|
|
173
|
-
* records the verification event for the audit trail. Enforcement
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
* behaviour.
|
|
138
|
+
* AstraSync credentials, even on `observe`-marked routes / tools that would
|
|
139
|
+
* otherwise pass through unevaluated. Populates `req.agentVerification` and
|
|
140
|
+
* records the verification event for the audit trail. Enforcement still
|
|
141
|
+
* respects the gate — an `observe` marker still passes through regardless of
|
|
142
|
+
* the server decision. Default false to preserve existing behaviour.
|
|
177
143
|
*
|
|
178
144
|
* Use this when a single endpoint serves both anonymous and verified
|
|
179
145
|
* traffic with different response shapes (e.g. anonymous catalog vs
|
|
@@ -428,8 +394,6 @@ interface VerificationResult {
|
|
|
428
394
|
* unverified caller's policy field is `false` by definition.
|
|
429
395
|
*/
|
|
430
396
|
policyAllowed: boolean;
|
|
431
|
-
/** Access level granted */
|
|
432
|
-
accessLevel: AccessLevel;
|
|
433
397
|
/** Verified agent info (if verified) */
|
|
434
398
|
agent?: VerifiedAgent;
|
|
435
399
|
/** Developer info (if available) */
|
|
@@ -773,10 +737,12 @@ interface RouteAccessConfig {
|
|
|
773
737
|
/** HTTP method (or * for all) */
|
|
774
738
|
method: string | '*';
|
|
775
739
|
/**
|
|
776
|
-
*
|
|
777
|
-
*
|
|
740
|
+
* Pass this route through unenforced (observe). The middleware skips gating
|
|
741
|
+
* on the server decision; with `evaluateAlwaysIfCredentialed` set it still
|
|
742
|
+
* calls verify-access for the audit trail and populates `req.agentVerification`.
|
|
743
|
+
* Replaces the old `minAccessLevel: 'none'` sentinel (SDK 5.0.0).
|
|
778
744
|
*/
|
|
779
|
-
|
|
745
|
+
observe?: boolean;
|
|
780
746
|
/** Minimum trust score required (optional) */
|
|
781
747
|
minTrustScore?: number;
|
|
782
748
|
/** Required purposes (optional, agent must declare one of these) */
|
|
@@ -952,7 +918,6 @@ interface NextJsMiddlewareOptions extends GatewayConfig {
|
|
|
952
918
|
title?: string;
|
|
953
919
|
message?: string;
|
|
954
920
|
allowGuestAccess?: boolean;
|
|
955
|
-
guestAccessLevel?: AccessLevel;
|
|
956
921
|
};
|
|
957
922
|
/** Enable runtime challenge for all verify-access calls (default: true) */
|
|
958
923
|
enableRuntimeChallenge?: boolean;
|
|
@@ -1094,4 +1059,4 @@ interface VerificationInterstitialProps {
|
|
|
1094
1059
|
/** @deprecated Renamed VerificationInterstitialProps in 4.1.0; alias removed next major. */
|
|
1095
1060
|
type CommerceShieldProps = VerificationInterstitialProps;
|
|
1096
1061
|
|
|
1097
|
-
export type { AccessFailure as A,
|
|
1062
|
+
export type { AccessFailure as A, CallerMetadata as C, EnhancedVerificationResult as E, FiatSettlementBinding as F, GatewayConfig as G, NextJsMiddlewareOptions as N, PDLSSInfo as P, RouteAccessConfig as R, SDKOptions as S, TokenGuidance as T, VerificationInterstitialProps as V, AgentCredentials as a, AstraSyncCredentials as b, AttemptOutcome as c, AttemptReport as d, CommerceArtifactsPayload as e, CommerceShieldProps as f, ConsiderationItem as g, ConsiderationSet as h, CounterpartyType as i, ExpressMiddlewareOptions as j, GuidanceInfo as k, ProtocolTransport as l, RuntimeChallengeResult as m, SettlementArtifact as n, SettlementArtifactBinding as o, SettlementArtifactBindingBase as p, StablecoinSettlementBinding as q, StepUpApprovalInfo as r, StepUpApprovalStatus as s, StepUpOutcome as t, TrustLevel as u, VerificationRequest as v, VerificationResult as w, VerifiedAgent as x, VerifiedDeveloper as y, VerifiedOrganization as z };
|
|
@@ -10,37 +10,6 @@ import { ObservedMetadata } from './metadata-capture.mjs';
|
|
|
10
10
|
* Trust levels assigned to agents based on their composite trust score
|
|
11
11
|
*/
|
|
12
12
|
type TrustLevel = 'BRONZE' | 'SILVER' | 'GOLD' | 'PLATINUM';
|
|
13
|
-
/**
|
|
14
|
-
* Access levels granted based on verification result. Server is the single
|
|
15
|
-
* source of truth — these values are the resolved decision the server returns
|
|
16
|
-
* in `access.accessLevel`. SDK reads them verbatim (no client-side remap).
|
|
17
|
-
*
|
|
18
|
-
* For ANONYMOUS / unverified callers, the level is determined by the
|
|
19
|
-
* endpoint's `unverifiedAgentPolicy` per the verify-access canonical flow:
|
|
20
|
-
* - deny: `none` — caller is denied + advised to register
|
|
21
|
-
* - allow_partial: `restricted` — reduced/browse-only access + advised
|
|
22
|
-
* - allow_full: `standard` — unrestricted + advised to register for next time
|
|
23
|
-
* Every branch ALWAYS emits a verification event + queues a blockchain record.
|
|
24
|
-
*
|
|
25
|
-
* For VERIFIED callers, the level is resolved server-side from the
|
|
26
|
-
* agent's live trust score plus the endpoint's `trust_score_requirement`:
|
|
27
|
-
* - none: agent below endpoint gate (denied; access.allowed=false)
|
|
28
|
-
* - restricted: 0–19 trust score (registration-prompt only, no real capability)
|
|
29
|
-
* - read-only: 20–39 trust score (browse, no mutations)
|
|
30
|
-
* - standard: 40–69 trust score (PDLSS-scoped operations)
|
|
31
|
-
* - full: 70+ trust score (PDLSS-scoped, high-trust)
|
|
32
|
-
* - internal: same-org membership, regardless of score
|
|
33
|
-
*
|
|
34
|
-
* v2.3.9 renamed the `'guidance'` band → `'restricted'`. The old name
|
|
35
|
-
* collided with the `guidance: {registrationUrl, ...}` help-payload object
|
|
36
|
-
* on VerificationResult, and the collision let denied requests pass any
|
|
37
|
-
* route gated at `'guidance'` (`hasMinimumAccess('guidance', 'guidance')
|
|
38
|
-
* === true`). Banded vocabulary stays capability-noun (none / restricted /
|
|
39
|
-
* read-only / standard / full / internal); response-shape descriptors stay
|
|
40
|
-
* nouns (guidance, advisory). Adapters additionally short-circuit on
|
|
41
|
-
* `!result.identityVerified || !result.policyAllowed` as belt-and-braces.
|
|
42
|
-
*/
|
|
43
|
-
type AccessLevel = 'none' | 'restricted' | 'read-only' | 'standard' | 'full' | 'internal';
|
|
44
13
|
/**
|
|
45
14
|
* Types of counterparties that can integrate the gateway
|
|
46
15
|
*/
|
|
@@ -66,14 +35,12 @@ interface GatewayConfig {
|
|
|
66
35
|
apiBaseUrl: string;
|
|
67
36
|
/** API key for authenticating with AstraSync. */
|
|
68
37
|
apiKey?: string;
|
|
69
|
-
/** Default access level for unverified requests */
|
|
70
|
-
defaultAccessLevel?: AccessLevel;
|
|
71
38
|
/**
|
|
72
39
|
* @deprecated Removed in v2.3.0 — server is the single source of truth for
|
|
73
|
-
* access
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
40
|
+
* access decisions (verified ID + runtime challenge + PDLSS + trust score).
|
|
41
|
+
* Setting this no longer affects access decisions. If you need a higher gate
|
|
42
|
+
* for an endpoint, configure it server-side via the endpoint's
|
|
43
|
+
* `trust_score_requirement`.
|
|
77
44
|
*/
|
|
78
45
|
minTrustScore?: number;
|
|
79
46
|
/**
|
|
@@ -168,12 +135,11 @@ interface GatewayConfig {
|
|
|
168
135
|
dashboardUrl?: string;
|
|
169
136
|
/**
|
|
170
137
|
* When true, the middleware calls verify-access for any request that presents
|
|
171
|
-
* AstraSync credentials, even on routes /
|
|
172
|
-
*
|
|
173
|
-
* records the verification event for the audit trail. Enforcement
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
* behaviour.
|
|
138
|
+
* AstraSync credentials, even on `observe`-marked routes / tools that would
|
|
139
|
+
* otherwise pass through unevaluated. Populates `req.agentVerification` and
|
|
140
|
+
* records the verification event for the audit trail. Enforcement still
|
|
141
|
+
* respects the gate — an `observe` marker still passes through regardless of
|
|
142
|
+
* the server decision. Default false to preserve existing behaviour.
|
|
177
143
|
*
|
|
178
144
|
* Use this when a single endpoint serves both anonymous and verified
|
|
179
145
|
* traffic with different response shapes (e.g. anonymous catalog vs
|
|
@@ -428,8 +394,6 @@ interface VerificationResult {
|
|
|
428
394
|
* unverified caller's policy field is `false` by definition.
|
|
429
395
|
*/
|
|
430
396
|
policyAllowed: boolean;
|
|
431
|
-
/** Access level granted */
|
|
432
|
-
accessLevel: AccessLevel;
|
|
433
397
|
/** Verified agent info (if verified) */
|
|
434
398
|
agent?: VerifiedAgent;
|
|
435
399
|
/** Developer info (if available) */
|
|
@@ -773,10 +737,12 @@ interface RouteAccessConfig {
|
|
|
773
737
|
/** HTTP method (or * for all) */
|
|
774
738
|
method: string | '*';
|
|
775
739
|
/**
|
|
776
|
-
*
|
|
777
|
-
*
|
|
740
|
+
* Pass this route through unenforced (observe). The middleware skips gating
|
|
741
|
+
* on the server decision; with `evaluateAlwaysIfCredentialed` set it still
|
|
742
|
+
* calls verify-access for the audit trail and populates `req.agentVerification`.
|
|
743
|
+
* Replaces the old `minAccessLevel: 'none'` sentinel (SDK 5.0.0).
|
|
778
744
|
*/
|
|
779
|
-
|
|
745
|
+
observe?: boolean;
|
|
780
746
|
/** Minimum trust score required (optional) */
|
|
781
747
|
minTrustScore?: number;
|
|
782
748
|
/** Required purposes (optional, agent must declare one of these) */
|
|
@@ -952,7 +918,6 @@ interface NextJsMiddlewareOptions extends GatewayConfig {
|
|
|
952
918
|
title?: string;
|
|
953
919
|
message?: string;
|
|
954
920
|
allowGuestAccess?: boolean;
|
|
955
|
-
guestAccessLevel?: AccessLevel;
|
|
956
921
|
};
|
|
957
922
|
/** Enable runtime challenge for all verify-access calls (default: true) */
|
|
958
923
|
enableRuntimeChallenge?: boolean;
|
|
@@ -1094,4 +1059,4 @@ interface VerificationInterstitialProps {
|
|
|
1094
1059
|
/** @deprecated Renamed VerificationInterstitialProps in 4.1.0; alias removed next major. */
|
|
1095
1060
|
type CommerceShieldProps = VerificationInterstitialProps;
|
|
1096
1061
|
|
|
1097
|
-
export type { AccessFailure as A,
|
|
1062
|
+
export type { AccessFailure as A, CallerMetadata as C, EnhancedVerificationResult as E, FiatSettlementBinding as F, GatewayConfig as G, NextJsMiddlewareOptions as N, PDLSSInfo as P, RouteAccessConfig as R, SDKOptions as S, TokenGuidance as T, VerificationInterstitialProps as V, AgentCredentials as a, AstraSyncCredentials as b, AttemptOutcome as c, AttemptReport as d, CommerceArtifactsPayload as e, CommerceShieldProps as f, ConsiderationItem as g, ConsiderationSet as h, CounterpartyType as i, ExpressMiddlewareOptions as j, GuidanceInfo as k, ProtocolTransport as l, RuntimeChallengeResult as m, SettlementArtifact as n, SettlementArtifactBinding as o, SettlementArtifactBindingBase as p, StablecoinSettlementBinding as q, StepUpApprovalInfo as r, StepUpApprovalStatus as s, StepUpOutcome as t, TrustLevel as u, VerificationRequest as v, VerificationResult as w, VerifiedAgent as x, VerifiedDeveloper as y, VerifiedOrganization as z };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as CounterpartyType, T as TokenGuidance } from './types-BK2POWNc.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* AstraSync Gateway - Types for gateway modes, local evaluation, and adapter interface.
|
|
@@ -38,8 +38,6 @@ interface AstraSyncGatewayConfig {
|
|
|
38
38
|
traceEnabled?: boolean;
|
|
39
39
|
/** Trace log directory (default: .astrasync/traces/) */
|
|
40
40
|
tracePath?: string;
|
|
41
|
-
/** Default access level for unverified requests */
|
|
42
|
-
defaultAccessLevel?: AccessLevel;
|
|
43
41
|
/** Minimum trust score for standard access (online/hybrid) */
|
|
44
42
|
minTrustScore?: number;
|
|
45
43
|
/** Minimum trust score for full access (online/hybrid) */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as CounterpartyType, T as TokenGuidance } from './types-CJjZvPr9.mjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* AstraSync Gateway - Types for gateway modes, local evaluation, and adapter interface.
|
|
@@ -38,8 +38,6 @@ interface AstraSyncGatewayConfig {
|
|
|
38
38
|
traceEnabled?: boolean;
|
|
39
39
|
/** Trace log directory (default: .astrasync/traces/) */
|
|
40
40
|
tracePath?: string;
|
|
41
|
-
/** Default access level for unverified requests */
|
|
42
|
-
defaultAccessLevel?: AccessLevel;
|
|
43
41
|
/** Minimum trust score for standard access (online/hybrid) */
|
|
44
42
|
minTrustScore?: number;
|
|
45
43
|
/** Minimum trust score for full access (online/hybrid) */
|
package/dist/ui/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { V as VerificationInterstitialProps,
|
|
1
|
+
import { V as VerificationInterstitialProps, w as VerificationResult, a as AgentCredentials, k as GuidanceInfo, u as TrustLevel } from '../types-CJjZvPr9.mjs';
|
|
2
2
|
import '../metadata-capture.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -110,17 +110,6 @@ interface TrustLevelBadgeProps {
|
|
|
110
110
|
/** Custom class name */
|
|
111
111
|
className?: string;
|
|
112
112
|
}
|
|
113
|
-
/**
|
|
114
|
-
* Access level indicator props
|
|
115
|
-
*/
|
|
116
|
-
interface AccessLevelIndicatorProps {
|
|
117
|
-
/** Current access level */
|
|
118
|
-
accessLevel: string;
|
|
119
|
-
/** Required access level */
|
|
120
|
-
requiredLevel?: string;
|
|
121
|
-
/** Custom class name */
|
|
122
|
-
className?: string;
|
|
123
|
-
}
|
|
124
113
|
/**
|
|
125
114
|
* Guidance card component
|
|
126
115
|
*/
|
|
@@ -129,10 +118,6 @@ declare function GuidanceCard({ guidance, title, compact, className, }: Guidance
|
|
|
129
118
|
* Trust level badge component
|
|
130
119
|
*/
|
|
131
120
|
declare function TrustLevelBadge({ level, score, size, className, }: TrustLevelBadgeProps): JSX.Element;
|
|
132
|
-
/**
|
|
133
|
-
* Access level indicator component
|
|
134
|
-
*/
|
|
135
|
-
declare function AccessLevelIndicator({ accessLevel, requiredLevel, className, }: AccessLevelIndicatorProps): JSX.Element;
|
|
136
121
|
/**
|
|
137
122
|
* Denial reasons list component
|
|
138
123
|
*/
|
|
@@ -142,4 +127,4 @@ interface DenialReasonsProps {
|
|
|
142
127
|
}
|
|
143
128
|
declare function DenialReasons({ reasons, className }: DenialReasonsProps): JSX.Element;
|
|
144
129
|
|
|
145
|
-
export {
|
|
130
|
+
export { VerificationInterstitial as CommerceShield, VerificationInterstitialProps as CommerceShieldProps, CredentialPrompt, type CredentialPromptProps, DenialReasons, type DenialReasonsProps, GuidanceCard, type GuidanceCardProps, TrustLevelBadge, type TrustLevelBadgeProps, VerificationInterstitial, VerificationInterstitialProps, useVerificationInterstitial as useCommerceShield, useCredentialPrompt, useVerificationInterstitial };
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { V as VerificationInterstitialProps,
|
|
1
|
+
import { V as VerificationInterstitialProps, w as VerificationResult, a as AgentCredentials, k as GuidanceInfo, u as TrustLevel } from '../types-BK2POWNc.js';
|
|
2
2
|
import '../metadata-capture.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -110,17 +110,6 @@ interface TrustLevelBadgeProps {
|
|
|
110
110
|
/** Custom class name */
|
|
111
111
|
className?: string;
|
|
112
112
|
}
|
|
113
|
-
/**
|
|
114
|
-
* Access level indicator props
|
|
115
|
-
*/
|
|
116
|
-
interface AccessLevelIndicatorProps {
|
|
117
|
-
/** Current access level */
|
|
118
|
-
accessLevel: string;
|
|
119
|
-
/** Required access level */
|
|
120
|
-
requiredLevel?: string;
|
|
121
|
-
/** Custom class name */
|
|
122
|
-
className?: string;
|
|
123
|
-
}
|
|
124
113
|
/**
|
|
125
114
|
* Guidance card component
|
|
126
115
|
*/
|
|
@@ -129,10 +118,6 @@ declare function GuidanceCard({ guidance, title, compact, className, }: Guidance
|
|
|
129
118
|
* Trust level badge component
|
|
130
119
|
*/
|
|
131
120
|
declare function TrustLevelBadge({ level, score, size, className, }: TrustLevelBadgeProps): JSX.Element;
|
|
132
|
-
/**
|
|
133
|
-
* Access level indicator component
|
|
134
|
-
*/
|
|
135
|
-
declare function AccessLevelIndicator({ accessLevel, requiredLevel, className, }: AccessLevelIndicatorProps): JSX.Element;
|
|
136
121
|
/**
|
|
137
122
|
* Denial reasons list component
|
|
138
123
|
*/
|
|
@@ -142,4 +127,4 @@ interface DenialReasonsProps {
|
|
|
142
127
|
}
|
|
143
128
|
declare function DenialReasons({ reasons, className }: DenialReasonsProps): JSX.Element;
|
|
144
129
|
|
|
145
|
-
export {
|
|
130
|
+
export { VerificationInterstitial as CommerceShield, VerificationInterstitialProps as CommerceShieldProps, CredentialPrompt, type CredentialPromptProps, DenialReasons, type DenialReasonsProps, GuidanceCard, type GuidanceCardProps, TrustLevelBadge, type TrustLevelBadgeProps, VerificationInterstitial, VerificationInterstitialProps, useVerificationInterstitial as useCommerceShield, useCredentialPrompt, useVerificationInterstitial };
|
package/dist/ui/index.js
CHANGED
|
@@ -30,7 +30,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/ui/index.ts
|
|
31
31
|
var ui_exports = {};
|
|
32
32
|
__export(ui_exports, {
|
|
33
|
-
AccessLevelIndicator: () => AccessLevelIndicator,
|
|
34
33
|
CommerceShield: () => VerificationInterstitial,
|
|
35
34
|
CredentialPrompt: () => CredentialPrompt,
|
|
36
35
|
DenialReasons: () => DenialReasons,
|
|
@@ -233,7 +232,7 @@ function useVerificationInterstitial(verificationResult) {
|
|
|
233
232
|
const [dismissed, setDismissed] = import_react.default.useState(false);
|
|
234
233
|
import_react.default.useEffect(() => {
|
|
235
234
|
if (verificationResult && !dismissed) {
|
|
236
|
-
const shouldShow = !verificationResult.identityVerified || !verificationResult.policyAllowed
|
|
235
|
+
const shouldShow = !verificationResult.identityVerified || !verificationResult.policyAllowed;
|
|
237
236
|
setVisible(shouldShow);
|
|
238
237
|
}
|
|
239
238
|
}, [verificationResult, dismissed]);
|
|
@@ -725,46 +724,6 @@ function TrustLevelBadge({
|
|
|
725
724
|
}
|
|
726
725
|
);
|
|
727
726
|
}
|
|
728
|
-
function AccessLevelIndicator({
|
|
729
|
-
accessLevel,
|
|
730
|
-
requiredLevel,
|
|
731
|
-
className
|
|
732
|
-
}) {
|
|
733
|
-
const getStatus = () => {
|
|
734
|
-
if (accessLevel === "none" || accessLevel === "restricted") {
|
|
735
|
-
return "denied";
|
|
736
|
-
}
|
|
737
|
-
if (requiredLevel) {
|
|
738
|
-
const levels = ["none", "restricted", "read-only", "standard", "full", "internal"];
|
|
739
|
-
const currentIndex = levels.indexOf(accessLevel);
|
|
740
|
-
const requiredIndex = levels.indexOf(requiredLevel);
|
|
741
|
-
if (currentIndex < requiredIndex) {
|
|
742
|
-
return "limited";
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
|
-
return "allowed";
|
|
746
|
-
};
|
|
747
|
-
const status = getStatus();
|
|
748
|
-
const statusColors = {
|
|
749
|
-
allowed: styles.indicatorAllowed,
|
|
750
|
-
denied: styles.indicatorDenied,
|
|
751
|
-
limited: styles.indicatorLimited
|
|
752
|
-
};
|
|
753
|
-
const statusLabels = {
|
|
754
|
-
allowed: "Access Granted",
|
|
755
|
-
denied: "Access Denied",
|
|
756
|
-
limited: "Limited Access"
|
|
757
|
-
};
|
|
758
|
-
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { style: styles.indicator, className, children: [
|
|
759
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { ...styles.indicatorDot, ...statusColors[status] } }),
|
|
760
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { children: statusLabels[status] }),
|
|
761
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { style: { color: "#94a3b8" }, children: [
|
|
762
|
-
"(",
|
|
763
|
-
accessLevel,
|
|
764
|
-
")"
|
|
765
|
-
] })
|
|
766
|
-
] });
|
|
767
|
-
}
|
|
768
727
|
function DenialReasons({ reasons, className }) {
|
|
769
728
|
if (reasons.length === 0) {
|
|
770
729
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {});
|
|
@@ -816,7 +775,6 @@ function DenialReasons({ reasons, className }) {
|
|
|
816
775
|
}
|
|
817
776
|
// Annotate the CommonJS export names for ESM import in node:
|
|
818
777
|
0 && (module.exports = {
|
|
819
|
-
AccessLevelIndicator,
|
|
820
778
|
CommerceShield,
|
|
821
779
|
CredentialPrompt,
|
|
822
780
|
DenialReasons,
|
package/dist/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/index.ts","../../src/ui/verification-interstitial.tsx","../../src/ui/credential-prompt.tsx","../../src/ui/guidance.tsx"],"sourcesContent":["/**\n * AstraSync Verification Gateway UI Components\n *\n * React components for displaying verification status and guidance.\n */\n\nexport { VerificationInterstitial, useVerificationInterstitial } from './verification-interstitial';\n/** @deprecated Renamed VerificationInterstitial in 4.1.0; alias removed next major. */\nexport { VerificationInterstitial as CommerceShield } from './verification-interstitial';\n/** @deprecated Renamed useVerificationInterstitial in 4.1.0; alias removed next major. */\nexport { useVerificationInterstitial as useCommerceShield } from './verification-interstitial';\nexport { CredentialPrompt, useCredentialPrompt } from './credential-prompt';\nexport { GuidanceCard, TrustLevelBadge, AccessLevelIndicator, DenialReasons } from './guidance';\n\nexport type { VerificationInterstitialProps } from '../types';\n/** @deprecated Renamed VerificationInterstitialProps in 4.1.0; alias removed next major. */\nexport type { VerificationInterstitialProps as CommerceShieldProps } from '../types';\nexport type { CredentialPromptProps } from './credential-prompt';\nexport type {\n GuidanceCardProps,\n TrustLevelBadgeProps,\n AccessLevelIndicatorProps,\n DenialReasonsProps,\n} from './guidance';\n","/**\n * AstraSync Verification Interstitial Component\n *\n * A React component that displays a verification overlay for unverified agents.\n * Shows guidance on how to register and get verified access.\n *\n * Renamed from `CommerceShield` in 4.1.0; the old names are re-exported as\n * deprecated aliases from `./index` until the next major.\n */\n\nimport React from 'react';\nimport type { VerificationInterstitialProps, VerificationResult } from '../types';\n\n/**\n * Default styles for the verification interstitial\n */\nconst defaultStyles = {\n overlay: {\n position: 'fixed' as const,\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(26, 26, 46, 0.95)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 9999,\n padding: '20px',\n },\n container: {\n backgroundColor: 'rgba(255, 255, 255, 0.95)',\n borderRadius: '16px',\n boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.5)',\n maxWidth: '480px',\n width: '100%',\n padding: '40px',\n textAlign: 'center' as const,\n },\n icon: {\n fontSize: '48px',\n marginBottom: '20px',\n },\n title: {\n fontSize: '24px',\n fontWeight: 700,\n color: '#1a1a2e',\n marginBottom: '16px',\n },\n message: {\n color: '#4a5568',\n lineHeight: 1.6,\n marginBottom: '24px',\n },\n stepsContainer: {\n textAlign: 'left' as const,\n backgroundColor: '#f7fafc',\n borderRadius: '8px',\n padding: '20px',\n marginBottom: '24px',\n },\n stepsTitle: {\n fontSize: '14px',\n fontWeight: 600,\n color: '#2d3748',\n marginBottom: '12px',\n },\n stepsList: {\n paddingLeft: '20px',\n color: '#4a5568',\n margin: 0,\n },\n stepItem: {\n marginBottom: '8px',\n },\n buttonsContainer: {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '12px',\n },\n buttonBase: {\n display: 'inline-block',\n padding: '14px 24px',\n borderRadius: '8px',\n fontWeight: 600,\n textDecoration: 'none',\n cursor: 'pointer',\n border: 'none',\n fontSize: '16px',\n transition: 'all 0.2s',\n },\n buttonPrimary: {\n background: 'linear-gradient(135deg, #6366f1 0%, #4f46e5 100%)',\n color: 'white',\n },\n buttonSecondary: {\n backgroundColor: '#e2e8f0',\n color: '#4a5568',\n },\n footer: {\n marginTop: '24px',\n fontSize: '14px',\n color: '#718096',\n },\n footerLink: {\n color: '#6366f1',\n textDecoration: 'none',\n },\n};\n\n/**\n * Verification interstitial overlay component. Shown to unverified agents\n * (the user-visible title remains \"AstraSync Agent Verification\").\n */\nexport function VerificationInterstitial({\n visible,\n result,\n onRegister,\n onGuestAccess,\n onDismiss,\n title = 'AstraSync Agent Verification',\n message,\n allowGuestAccess = true,\n className,\n}: VerificationInterstitialProps): JSX.Element | null {\n if (!visible) {\n return null;\n }\n\n const displayMessage =\n message ||\n result?.guidance?.message ||\n \"This site verifies AI agents before granting access. We noticed you're visiting without AstraSync credentials.\";\n\n const registrationUrl =\n result?.guidance?.registrationUrl || 'https://astrasync.ai/agents/register';\n const docsUrl = result?.guidance?.documentationUrl || 'https://astrasync.ai/docs/agent-access';\n\n const steps = result?.guidance?.steps || [\n 'Register at astrasync.ai/agents/register',\n 'Create and register your agent',\n 'Add your ASTRA-ID to request headers',\n 'Refresh this page',\n ];\n\n const handleRegisterClick = () => {\n if (onRegister) {\n onRegister();\n } else {\n window.location.href = registrationUrl;\n }\n };\n\n const handleGuestClick = () => {\n if (onGuestAccess) {\n onGuestAccess();\n } else if (onDismiss) {\n onDismiss();\n }\n };\n\n return (\n <div\n style={defaultStyles.overlay}\n className={className}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"verification-interstitial-title\"\n >\n <div style={defaultStyles.container}>\n <div style={defaultStyles.icon} aria-hidden=\"true\">\n 🛡️\n </div>\n\n <h1 id=\"verification-interstitial-title\" style={defaultStyles.title}>\n {title}\n </h1>\n\n <p style={defaultStyles.message}>{displayMessage}</p>\n\n <div style={defaultStyles.stepsContainer}>\n <h3 style={defaultStyles.stepsTitle}>To get verified access:</h3>\n <ol style={defaultStyles.stepsList}>\n {steps.map((step, index) => (\n <li key={index} style={defaultStyles.stepItem}>\n {step}\n </li>\n ))}\n </ol>\n </div>\n\n <div style={defaultStyles.buttonsContainer}>\n <button\n onClick={handleRegisterClick}\n style={{ ...defaultStyles.buttonBase, ...defaultStyles.buttonPrimary }}\n >\n Register Now\n </button>\n\n {allowGuestAccess && (\n <button\n onClick={handleGuestClick}\n style={{ ...defaultStyles.buttonBase, ...defaultStyles.buttonSecondary }}\n >\n Continue as Guest (Limited)\n </button>\n )}\n </div>\n\n <p style={defaultStyles.footer}>\n Learn more:{' '}\n <a\n href={docsUrl}\n style={defaultStyles.footerLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Agent Access Documentation\n </a>\n </p>\n </div>\n </div>\n );\n}\n\n/**\n * Hook to manage verification-interstitial visibility\n */\nexport function useVerificationInterstitial(verificationResult: VerificationResult | null) {\n const [visible, setVisible] = React.useState(false);\n const [dismissed, setDismissed] = React.useState(false);\n\n React.useEffect(() => {\n if (verificationResult && !dismissed) {\n // Show the interstitial if either axis failed (identity or policy)\n // or access level is 'none' or 'restricted'.\n const shouldShow =\n !verificationResult.identityVerified ||\n !verificationResult.policyAllowed ||\n verificationResult.accessLevel === 'none' ||\n verificationResult.accessLevel === 'restricted';\n\n setVisible(shouldShow);\n }\n }, [verificationResult, dismissed]);\n\n const dismiss = React.useCallback(() => {\n setDismissed(true);\n setVisible(false);\n }, []);\n\n const reset = React.useCallback(() => {\n setDismissed(false);\n }, []);\n\n return {\n visible,\n dismiss,\n reset,\n result: verificationResult,\n };\n}\n","/**\n * AstraSync Credential Prompt Component\n *\n * A React component for prompting users to enter their agent credentials.\n * Useful for single-page applications where agents may provide credentials interactively.\n */\n\nimport React, { useState, useCallback } from 'react';\nimport type { AgentCredentials } from '../types';\n\n/**\n * Credential prompt props\n */\nexport interface CredentialPromptProps {\n /** Whether the prompt is visible */\n visible: boolean;\n /** Callback when credentials are submitted */\n onSubmit: (credentials: AgentCredentials) => void;\n /** Callback when prompt is dismissed */\n onDismiss?: () => void;\n /** Title text */\n title?: string;\n /** Description text */\n description?: string;\n /** Whether to show API key input */\n showApiKey?: boolean;\n /** Whether to show JWT input */\n showJwt?: boolean;\n /** Loading state */\n loading?: boolean;\n /** Error message to display */\n error?: string;\n /** Custom class name */\n className?: string;\n}\n\n/**\n * Default styles for the credential prompt\n */\nconst defaultStyles = {\n overlay: {\n position: 'fixed' as const,\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 9999,\n padding: '20px',\n },\n container: {\n backgroundColor: 'white',\n borderRadius: '12px',\n boxShadow: '0 20px 40px rgba(0, 0, 0, 0.3)',\n maxWidth: '400px',\n width: '100%',\n padding: '32px',\n },\n title: {\n fontSize: '20px',\n fontWeight: 600,\n color: '#1a1a2e',\n marginBottom: '8px',\n },\n description: {\n fontSize: '14px',\n color: '#64748b',\n marginBottom: '24px',\n lineHeight: 1.5,\n },\n form: {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '16px',\n },\n inputGroup: {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '6px',\n },\n label: {\n fontSize: '14px',\n fontWeight: 500,\n color: '#374151',\n },\n input: {\n padding: '12px',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n fontSize: '14px',\n outline: 'none',\n transition: 'border-color 0.2s',\n },\n error: {\n backgroundColor: '#fef2f2',\n color: '#dc2626',\n padding: '12px',\n borderRadius: '8px',\n fontSize: '14px',\n marginBottom: '16px',\n },\n buttonContainer: {\n display: 'flex',\n gap: '12px',\n marginTop: '8px',\n },\n button: {\n flex: 1,\n padding: '12px 16px',\n borderRadius: '8px',\n fontWeight: 600,\n fontSize: '14px',\n cursor: 'pointer',\n transition: 'all 0.2s',\n border: 'none',\n },\n buttonPrimary: {\n backgroundColor: '#4f46e5',\n color: 'white',\n },\n buttonSecondary: {\n backgroundColor: '#f1f5f9',\n color: '#475569',\n },\n buttonDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n};\n\n/**\n * Credential prompt component\n */\nexport function CredentialPrompt({\n visible,\n onSubmit,\n onDismiss,\n title = 'Enter Agent Credentials',\n description = 'Provide your AstraSync agent credentials to verify your identity.',\n showApiKey = true,\n showJwt = false,\n loading = false,\n error,\n className,\n}: CredentialPromptProps): JSX.Element | null {\n const [astraId, setAstraId] = useState('');\n const [apiKey, setApiKey] = useState('');\n const [jwt, setJwt] = useState('');\n\n const handleSubmit = useCallback((e: React.FormEvent) => {\n e.preventDefault();\n\n const credentials: AgentCredentials = {};\n\n if (astraId.trim()) {\n credentials.astraId = astraId.trim();\n }\n if (apiKey.trim()) {\n credentials.apiKey = apiKey.trim();\n }\n if (jwt.trim()) {\n credentials.jwt = jwt.trim();\n }\n\n onSubmit(credentials);\n }, [astraId, apiKey, jwt, onSubmit]);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Escape' && onDismiss) {\n onDismiss();\n }\n }, [onDismiss]);\n\n if (!visible) {\n return null;\n }\n\n const isValid = astraId.trim() || apiKey.trim() || jwt.trim();\n\n return (\n <div\n style={defaultStyles.overlay}\n className={className}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"credential-prompt-title\"\n onKeyDown={handleKeyDown}\n >\n <div style={defaultStyles.container}>\n <h2 id=\"credential-prompt-title\" style={defaultStyles.title}>\n {title}\n </h2>\n\n <p style={defaultStyles.description}>\n {description}\n </p>\n\n {error && (\n <div style={defaultStyles.error} role=\"alert\">\n {error}\n </div>\n )}\n\n <form onSubmit={handleSubmit} style={defaultStyles.form}>\n <div style={defaultStyles.inputGroup}>\n <label htmlFor=\"astra-id\" style={defaultStyles.label}>\n ASTRA-ID\n </label>\n <input\n id=\"astra-id\"\n type=\"text\"\n value={astraId}\n onChange={(e) => setAstraId(e.target.value)}\n placeholder=\"ASTRA-xxx or ASTRAD-xxx\"\n style={defaultStyles.input}\n disabled={loading}\n />\n </div>\n\n {showApiKey && (\n <div style={defaultStyles.inputGroup}>\n <label htmlFor=\"api-key\" style={defaultStyles.label}>\n API Key (optional)\n </label>\n <input\n id=\"api-key\"\n type=\"password\"\n value={apiKey}\n onChange={(e) => setApiKey(e.target.value)}\n placeholder=\"Your API key\"\n style={defaultStyles.input}\n disabled={loading}\n />\n </div>\n )}\n\n {showJwt && (\n <div style={defaultStyles.inputGroup}>\n <label htmlFor=\"jwt\" style={defaultStyles.label}>\n JWT Token (optional)\n </label>\n <input\n id=\"jwt\"\n type=\"password\"\n value={jwt}\n onChange={(e) => setJwt(e.target.value)}\n placeholder=\"Your JWT token\"\n style={defaultStyles.input}\n disabled={loading}\n />\n </div>\n )}\n\n <div style={defaultStyles.buttonContainer}>\n {onDismiss && (\n <button\n type=\"button\"\n onClick={onDismiss}\n style={{ ...defaultStyles.button, ...defaultStyles.buttonSecondary }}\n disabled={loading}\n >\n Cancel\n </button>\n )}\n\n <button\n type=\"submit\"\n style={{\n ...defaultStyles.button,\n ...defaultStyles.buttonPrimary,\n ...((!isValid || loading) ? defaultStyles.buttonDisabled : {}),\n }}\n disabled={!isValid || loading}\n >\n {loading ? 'Verifying...' : 'Verify'}\n </button>\n </div>\n </form>\n </div>\n </div>\n );\n}\n\n/**\n * Hook to manage credential prompt state\n */\nexport function useCredentialPrompt() {\n const [visible, setVisible] = useState(false);\n const [credentials, setCredentials] = useState<AgentCredentials | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const show = useCallback(() => {\n setVisible(true);\n setError(null);\n }, []);\n\n const hide = useCallback(() => {\n setVisible(false);\n setError(null);\n setLoading(false);\n }, []);\n\n const submit = useCallback((creds: AgentCredentials) => {\n setCredentials(creds);\n setLoading(true);\n setError(null);\n }, []);\n\n const setSubmitError = useCallback((err: string) => {\n setError(err);\n setLoading(false);\n }, []);\n\n const complete = useCallback(() => {\n setVisible(false);\n setLoading(false);\n setError(null);\n }, []);\n\n return {\n visible,\n credentials,\n loading,\n error,\n show,\n hide,\n submit,\n setError: setSubmitError,\n complete,\n };\n}\n","/**\n * AstraSync Guidance Components\n *\n * React components for displaying guidance information to unverified agents.\n * Provides helpful information on how to register and get verified.\n */\n\nimport React from 'react';\nimport type { GuidanceInfo, TrustLevel } from '../types';\n\n/**\n * Guidance card props\n */\nexport interface GuidanceCardProps {\n /** Guidance information */\n guidance: GuidanceInfo;\n /** Card title */\n title?: string;\n /** Whether to show as compact inline */\n compact?: boolean;\n /** Custom class name */\n className?: string;\n}\n\n/**\n * Trust level badge props\n */\nexport interface TrustLevelBadgeProps {\n /** Trust level */\n level: TrustLevel;\n /** Trust score */\n score?: number;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Custom class name */\n className?: string;\n}\n\n/**\n * Access level indicator props\n */\nexport interface AccessLevelIndicatorProps {\n /** Current access level */\n accessLevel: string;\n /** Required access level */\n requiredLevel?: string;\n /** Custom class name */\n className?: string;\n}\n\n/**\n * Default styles\n */\nconst styles = {\n card: {\n backgroundColor: '#f8fafc',\n border: '1px solid #e2e8f0',\n borderRadius: '12px',\n padding: '24px',\n maxWidth: '480px',\n },\n cardCompact: {\n backgroundColor: '#fefce8',\n border: '1px solid #fef08a',\n borderRadius: '8px',\n padding: '16px',\n },\n cardTitle: {\n fontSize: '18px',\n fontWeight: 600,\n color: '#1e293b',\n marginBottom: '12px',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n cardMessage: {\n fontSize: '14px',\n color: '#475569',\n lineHeight: 1.6,\n marginBottom: '16px',\n },\n stepsList: {\n listStyle: 'none',\n padding: 0,\n margin: 0,\n },\n stepItem: {\n display: 'flex',\n alignItems: 'flex-start',\n gap: '12px',\n marginBottom: '12px',\n fontSize: '14px',\n color: '#334155',\n },\n stepNumber: {\n backgroundColor: '#e0e7ff',\n color: '#4338ca',\n width: '24px',\n height: '24px',\n borderRadius: '50%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '12px',\n fontWeight: 600,\n flexShrink: 0,\n },\n links: {\n display: 'flex',\n gap: '16px',\n marginTop: '16px',\n paddingTop: '16px',\n borderTop: '1px solid #e2e8f0',\n },\n link: {\n color: '#4f46e5',\n textDecoration: 'none',\n fontSize: '14px',\n fontWeight: 500,\n },\n badge: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n padding: '4px 8px',\n borderRadius: '9999px',\n fontWeight: 600,\n fontSize: '12px',\n },\n badgeSm: {\n padding: '2px 6px',\n fontSize: '10px',\n },\n badgeLg: {\n padding: '6px 12px',\n fontSize: '14px',\n },\n badgeBronze: {\n backgroundColor: '#fef3c7',\n color: '#92400e',\n },\n badgeSilver: {\n backgroundColor: '#e5e7eb',\n color: '#374151',\n },\n badgeGold: {\n backgroundColor: '#fef9c3',\n color: '#854d0e',\n },\n badgePlatinum: {\n backgroundColor: '#e0e7ff',\n color: '#3730a3',\n },\n indicator: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n fontSize: '14px',\n },\n indicatorDot: {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n },\n indicatorAllowed: {\n backgroundColor: '#22c55e',\n },\n indicatorDenied: {\n backgroundColor: '#ef4444',\n },\n indicatorLimited: {\n backgroundColor: '#f59e0b',\n },\n};\n\n/**\n * Guidance card component\n */\nexport function GuidanceCard({\n guidance,\n title = 'How to Get Verified',\n compact = false,\n className,\n}: GuidanceCardProps): JSX.Element {\n const cardStyle = compact ? styles.cardCompact : styles.card;\n\n return (\n <div style={cardStyle} className={className}>\n <h3 style={styles.cardTitle}>\n <span>💡</span>\n {title}\n </h3>\n\n <p style={styles.cardMessage}>{guidance.message}</p>\n\n {guidance.steps && guidance.steps.length > 0 && (\n <ol style={styles.stepsList}>\n {guidance.steps.map((step, index) => (\n <li key={index} style={styles.stepItem}>\n <span style={styles.stepNumber}>{index + 1}</span>\n <span>{step}</span>\n </li>\n ))}\n </ol>\n )}\n\n <div style={styles.links}>\n <a\n href={guidance.registrationUrl}\n style={styles.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Register →\n </a>\n <a\n href={guidance.documentationUrl}\n style={styles.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Documentation →\n </a>\n </div>\n </div>\n );\n}\n\n/**\n * Trust level badge component\n */\nexport function TrustLevelBadge({\n level,\n score,\n size = 'md',\n className,\n}: TrustLevelBadgeProps): JSX.Element {\n const levelColors = {\n BRONZE: styles.badgeBronze,\n SILVER: styles.badgeSilver,\n GOLD: styles.badgeGold,\n PLATINUM: styles.badgePlatinum,\n };\n\n const sizeStyles = {\n sm: styles.badgeSm,\n md: {},\n lg: styles.badgeLg,\n };\n\n const levelEmojis = {\n BRONZE: '🥉',\n SILVER: '🥈',\n GOLD: '🥇',\n PLATINUM: '💎',\n };\n\n return (\n <span\n style={{\n ...styles.badge,\n ...levelColors[level],\n ...sizeStyles[size],\n }}\n className={className}\n >\n <span>{levelEmojis[level]}</span>\n <span>{level}</span>\n {score !== undefined && <span>({score})</span>}\n </span>\n );\n}\n\n/**\n * Access level indicator component\n */\nexport function AccessLevelIndicator({\n accessLevel,\n requiredLevel,\n className,\n}: AccessLevelIndicatorProps): JSX.Element {\n const getStatus = () => {\n if (accessLevel === 'none' || accessLevel === 'restricted') {\n return 'denied';\n }\n if (requiredLevel) {\n const levels = ['none', 'restricted', 'read-only', 'standard', 'full', 'internal'];\n const currentIndex = levels.indexOf(accessLevel);\n const requiredIndex = levels.indexOf(requiredLevel);\n if (currentIndex < requiredIndex) {\n return 'limited';\n }\n }\n return 'allowed';\n };\n\n const status = getStatus();\n const statusColors = {\n allowed: styles.indicatorAllowed,\n denied: styles.indicatorDenied,\n limited: styles.indicatorLimited,\n };\n\n const statusLabels = {\n allowed: 'Access Granted',\n denied: 'Access Denied',\n limited: 'Limited Access',\n };\n\n return (\n <div style={styles.indicator} className={className}>\n <span style={{ ...styles.indicatorDot, ...statusColors[status] }} />\n <span>{statusLabels[status]}</span>\n <span style={{ color: '#94a3b8' }}>({accessLevel})</span>\n </div>\n );\n}\n\n/**\n * Denial reasons list component\n */\nexport interface DenialReasonsProps {\n reasons: string[];\n className?: string;\n}\n\nexport function DenialReasons({ reasons, className }: DenialReasonsProps): JSX.Element {\n if (reasons.length === 0) {\n return <></>;\n }\n\n return (\n <div\n style={{\n backgroundColor: '#fef2f2',\n border: '1px solid #fecaca',\n borderRadius: '8px',\n padding: '16px',\n }}\n className={className}\n >\n <h4\n style={{\n fontSize: '14px',\n fontWeight: 600,\n color: '#dc2626',\n marginBottom: '8px',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n }}\n >\n <span>⚠️</span>\n Access Denied\n </h4>\n <ul\n style={{\n margin: 0,\n paddingLeft: '20px',\n color: '#991b1b',\n fontSize: '14px',\n }}\n >\n {reasons.map((reason, index) => (\n <li key={index} style={{ marginBottom: '4px' }}>\n {reason}\n </li>\n ))}\n </ul>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACUA,mBAAkB;AAgKV;AA1JR,IAAM,gBAAgB;AAAA,EACpB,SAAS;AAAA,IACP,UAAU;AAAA,IACV,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,WAAW;AAAA,IACT,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,UAAU;AAAA,IACV,OAAO;AAAA,IACP,SAAS;AAAA,IACT,WAAW;AAAA,EACb;AAAA,EACA,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,cAAc;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACP,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,cAAc;AAAA,EAChB;AAAA,EACA,gBAAgB;AAAA,IACd,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,SAAS;AAAA,IACT,cAAc;AAAA,EAChB;AAAA,EACA,YAAY;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACT,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAAA,EACA,UAAU;AAAA,IACR,cAAc;AAAA,EAChB;AAAA,EACA,kBAAkB;AAAA,IAChB,SAAS;AAAA,IACT,eAAe;AAAA,IACf,KAAK;AAAA,EACP;AAAA,EACA,YAAY;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,IACT,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AAAA,EACA,eAAe;AAAA,IACb,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,iBAAiB;AAAA,IACf,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,QAAQ;AAAA,IACN,WAAW;AAAA,IACX,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,YAAY;AAAA,IACV,OAAO;AAAA,IACP,gBAAgB;AAAA,EAClB;AACF;AAMO,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,mBAAmB;AAAA,EACnB;AACF,GAAsD;AACpD,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,QAAM,iBACJ,WACA,QAAQ,UAAU,WAClB;AAEF,QAAM,kBACJ,QAAQ,UAAU,mBAAmB;AACvC,QAAM,UAAU,QAAQ,UAAU,oBAAoB;AAEtD,QAAM,QAAQ,QAAQ,UAAU,SAAS;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,sBAAsB,MAAM;AAChC,QAAI,YAAY;AACd,iBAAW;AAAA,IACb,OAAO;AACL,aAAO,SAAS,OAAO;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAM;AAC7B,QAAI,eAAe;AACjB,oBAAc;AAAA,IAChB,WAAW,WAAW;AACpB,gBAAU;AAAA,IACZ;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,cAAc;AAAA,MACrB;AAAA,MACA,MAAK;AAAA,MACL,cAAW;AAAA,MACX,mBAAgB;AAAA,MAEhB,uDAAC,SAAI,OAAO,cAAc,WACxB;AAAA,oDAAC,SAAI,OAAO,cAAc,MAAM,eAAY,QAAO,6BAEnD;AAAA,QAEA,4CAAC,QAAG,IAAG,mCAAkC,OAAO,cAAc,OAC3D,iBACH;AAAA,QAEA,4CAAC,OAAE,OAAO,cAAc,SAAU,0BAAe;AAAA,QAEjD,6CAAC,SAAI,OAAO,cAAc,gBACxB;AAAA,sDAAC,QAAG,OAAO,cAAc,YAAY,qCAAuB;AAAA,UAC5D,4CAAC,QAAG,OAAO,cAAc,WACtB,gBAAM,IAAI,CAAC,MAAM,UAChB,4CAAC,QAAe,OAAO,cAAc,UAClC,kBADM,KAET,CACD,GACH;AAAA,WACF;AAAA,QAEA,6CAAC,SAAI,OAAO,cAAc,kBACxB;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,OAAO,EAAE,GAAG,cAAc,YAAY,GAAG,cAAc,cAAc;AAAA,cACtE;AAAA;AAAA,UAED;AAAA,UAEC,oBACC;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,OAAO,EAAE,GAAG,cAAc,YAAY,GAAG,cAAc,gBAAgB;AAAA,cACxE;AAAA;AAAA,UAED;AAAA,WAEJ;AAAA,QAEA,6CAAC,OAAE,OAAO,cAAc,QAAQ;AAAA;AAAA,UAClB;AAAA,UACZ;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,OAAO,cAAc;AAAA,cACrB,QAAO;AAAA,cACP,KAAI;AAAA,cACL;AAAA;AAAA,UAED;AAAA,WACF;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;AAKO,SAAS,4BAA4B,oBAA+C;AACzF,QAAM,CAAC,SAAS,UAAU,IAAI,aAAAA,QAAM,SAAS,KAAK;AAClD,QAAM,CAAC,WAAW,YAAY,IAAI,aAAAA,QAAM,SAAS,KAAK;AAEtD,eAAAA,QAAM,UAAU,MAAM;AACpB,QAAI,sBAAsB,CAAC,WAAW;AAGpC,YAAM,aACJ,CAAC,mBAAmB,oBACpB,CAAC,mBAAmB,iBACpB,mBAAmB,gBAAgB,UACnC,mBAAmB,gBAAgB;AAErC,iBAAW,UAAU;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,oBAAoB,SAAS,CAAC;AAElC,QAAM,UAAU,aAAAA,QAAM,YAAY,MAAM;AACtC,iBAAa,IAAI;AACjB,eAAW,KAAK;AAAA,EAClB,GAAG,CAAC,CAAC;AAEL,QAAM,QAAQ,aAAAA,QAAM,YAAY,MAAM;AACpC,iBAAa,KAAK;AAAA,EACpB,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACV;AACF;;;AC9PA,IAAAC,gBAA6C;AAyLrC,IAAAC,sBAAA;AAzJR,IAAMC,iBAAgB;AAAA,EACpB,SAAS;AAAA,IACP,UAAU;AAAA,IACV,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,WAAW;AAAA,IACT,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,UAAU;AAAA,IACV,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,aAAa;AAAA,IACX,UAAU;AAAA,IACV,OAAO;AAAA,IACP,cAAc;AAAA,IACd,YAAY;AAAA,EACd;AAAA,EACA,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,eAAe;AAAA,IACf,KAAK;AAAA,EACP;AAAA,EACA,YAAY;AAAA,IACV,SAAS;AAAA,IACT,eAAe;AAAA,IACf,KAAK;AAAA,EACP;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,EACd;AAAA,EACA,OAAO;AAAA,IACL,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,cAAc;AAAA,IACd,UAAU;AAAA,IACV,cAAc;AAAA,EAChB;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,KAAK;AAAA,IACL,WAAW;AAAA,EACb;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,iBAAiB;AAAA,IACf,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,gBAAgB;AAAA,IACd,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AACF;AAKO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,aAAa;AAAA,EACb,UAAU;AAAA,EACV,UAAU;AAAA,EACV;AAAA,EACA;AACF,GAA8C;AAC5C,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAS,EAAE;AACzC,QAAM,CAAC,QAAQ,SAAS,QAAI,wBAAS,EAAE;AACvC,QAAM,CAAC,KAAK,MAAM,QAAI,wBAAS,EAAE;AAEjC,QAAM,mBAAe,2BAAY,CAAC,MAAuB;AACvD,MAAE,eAAe;AAEjB,UAAM,cAAgC,CAAC;AAEvC,QAAI,QAAQ,KAAK,GAAG;AAClB,kBAAY,UAAU,QAAQ,KAAK;AAAA,IACrC;AACA,QAAI,OAAO,KAAK,GAAG;AACjB,kBAAY,SAAS,OAAO,KAAK;AAAA,IACnC;AACA,QAAI,IAAI,KAAK,GAAG;AACd,kBAAY,MAAM,IAAI,KAAK;AAAA,IAC7B;AAEA,aAAS,WAAW;AAAA,EACtB,GAAG,CAAC,SAAS,QAAQ,KAAK,QAAQ,CAAC;AAEnC,QAAM,oBAAgB,2BAAY,CAAC,MAA2B;AAC5D,QAAI,EAAE,QAAQ,YAAY,WAAW;AACnC,gBAAU;AAAA,IACZ;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,QAAQ,KAAK,KAAK,OAAO,KAAK,KAAK,IAAI,KAAK;AAE5D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAOA,eAAc;AAAA,MACrB;AAAA,MACA,MAAK;AAAA,MACL,cAAW;AAAA,MACX,mBAAgB;AAAA,MAChB,WAAW;AAAA,MAEX,wDAAC,SAAI,OAAOA,eAAc,WACxB;AAAA,qDAAC,QAAG,IAAG,2BAA0B,OAAOA,eAAc,OACnD,iBACH;AAAA,QAEA,6CAAC,OAAE,OAAOA,eAAc,aACrB,uBACH;AAAA,QAEC,SACC,6CAAC,SAAI,OAAOA,eAAc,OAAO,MAAK,SACnC,iBACH;AAAA,QAGF,8CAAC,UAAK,UAAU,cAAc,OAAOA,eAAc,MACjD;AAAA,wDAAC,SAAI,OAAOA,eAAc,YACxB;AAAA,yDAAC,WAAM,SAAQ,YAAW,OAAOA,eAAc,OAAO,sBAEtD;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAG;AAAA,gBACH,MAAK;AAAA,gBACL,OAAO;AAAA,gBACP,UAAU,CAAC,MAAM,WAAW,EAAE,OAAO,KAAK;AAAA,gBAC1C,aAAY;AAAA,gBACZ,OAAOA,eAAc;AAAA,gBACrB,UAAU;AAAA;AAAA,YACZ;AAAA,aACF;AAAA,UAEC,cACC,8CAAC,SAAI,OAAOA,eAAc,YACxB;AAAA,yDAAC,WAAM,SAAQ,WAAU,OAAOA,eAAc,OAAO,gCAErD;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAG;AAAA,gBACH,MAAK;AAAA,gBACL,OAAO;AAAA,gBACP,UAAU,CAAC,MAAM,UAAU,EAAE,OAAO,KAAK;AAAA,gBACzC,aAAY;AAAA,gBACZ,OAAOA,eAAc;AAAA,gBACrB,UAAU;AAAA;AAAA,YACZ;AAAA,aACF;AAAA,UAGD,WACC,8CAAC,SAAI,OAAOA,eAAc,YACxB;AAAA,yDAAC,WAAM,SAAQ,OAAM,OAAOA,eAAc,OAAO,kCAEjD;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAG;AAAA,gBACH,MAAK;AAAA,gBACL,OAAO;AAAA,gBACP,UAAU,CAAC,MAAM,OAAO,EAAE,OAAO,KAAK;AAAA,gBACtC,aAAY;AAAA,gBACZ,OAAOA,eAAc;AAAA,gBACrB,UAAU;AAAA;AAAA,YACZ;AAAA,aACF;AAAA,UAGF,8CAAC,SAAI,OAAOA,eAAc,iBACvB;AAAA,yBACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS;AAAA,gBACT,OAAO,EAAE,GAAGA,eAAc,QAAQ,GAAGA,eAAc,gBAAgB;AAAA,gBACnE,UAAU;AAAA,gBACX;AAAA;AAAA,YAED;AAAA,YAGF;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAO;AAAA,kBACL,GAAGA,eAAc;AAAA,kBACjB,GAAGA,eAAc;AAAA,kBACjB,GAAK,CAAC,WAAW,UAAWA,eAAc,iBAAiB,CAAC;AAAA,gBAC9D;AAAA,gBACA,UAAU,CAAC,WAAW;AAAA,gBAErB,oBAAU,iBAAiB;AAAA;AAAA,YAC9B;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;AAKO,SAAS,sBAAsB;AACpC,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAS,KAAK;AAC5C,QAAM,CAAC,aAAa,cAAc,QAAI,wBAAkC,IAAI;AAC5E,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAwB,IAAI;AAEtD,QAAM,WAAO,2BAAY,MAAM;AAC7B,eAAW,IAAI;AACf,aAAS,IAAI;AAAA,EACf,GAAG,CAAC,CAAC;AAEL,QAAM,WAAO,2BAAY,MAAM;AAC7B,eAAW,KAAK;AAChB,aAAS,IAAI;AACb,eAAW,KAAK;AAAA,EAClB,GAAG,CAAC,CAAC;AAEL,QAAM,aAAS,2BAAY,CAAC,UAA4B;AACtD,mBAAe,KAAK;AACpB,eAAW,IAAI;AACf,aAAS,IAAI;AAAA,EACf,GAAG,CAAC,CAAC;AAEL,QAAM,qBAAiB,2BAAY,CAAC,QAAgB;AAClD,aAAS,GAAG;AACZ,eAAW,KAAK;AAAA,EAClB,GAAG,CAAC,CAAC;AAEL,QAAM,eAAW,2BAAY,MAAM;AACjC,eAAW,KAAK;AAChB,eAAW,KAAK;AAChB,aAAS,IAAI;AAAA,EACf,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,EACF;AACF;;;ACjJM,IAAAC,sBAAA;AAxIN,IAAM,SAAS;AAAA,EACb,MAAM;AAAA,IACJ,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AAAA,EACA,aAAa;AAAA,IACX,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,SAAS;AAAA,EACX;AAAA,EACA,WAAW;AAAA,IACT,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,cAAc;AAAA,IACd,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,KAAK;AAAA,EACP;AAAA,EACA,aAAa;AAAA,IACX,UAAU;AAAA,IACV,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,cAAc;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,UAAU;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,cAAc;AAAA,IACd,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,YAAY;AAAA,IACV,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,EACd;AAAA,EACA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,KAAK;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,EACb;AAAA,EACA,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AAAA,EACA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,SAAS;AAAA,IACT,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AAAA,EACA,aAAa;AAAA,IACX,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,aAAa;AAAA,IACX,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,WAAW;AAAA,IACT,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,eAAe;AAAA,IACb,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,WAAW;AAAA,IACT,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,UAAU;AAAA,EACZ;AAAA,EACA,cAAc;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB;AAAA,EACA,kBAAkB;AAAA,IAChB,iBAAiB;AAAA,EACnB;AAAA,EACA,iBAAiB;AAAA,IACf,iBAAiB;AAAA,EACnB;AAAA,EACA,kBAAkB;AAAA,IAChB,iBAAiB;AAAA,EACnB;AACF;AAKO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA,QAAQ;AAAA,EACR,UAAU;AAAA,EACV;AACF,GAAmC;AACjC,QAAM,YAAY,UAAU,OAAO,cAAc,OAAO;AAExD,SACE,8CAAC,SAAI,OAAO,WAAW,WACrB;AAAA,kDAAC,QAAG,OAAO,OAAO,WAChB;AAAA,mDAAC,UAAK,uBAAE;AAAA,MACP;AAAA,OACH;AAAA,IAEA,6CAAC,OAAE,OAAO,OAAO,aAAc,mBAAS,SAAQ;AAAA,IAE/C,SAAS,SAAS,SAAS,MAAM,SAAS,KACzC,6CAAC,QAAG,OAAO,OAAO,WACf,mBAAS,MAAM,IAAI,CAAC,MAAM,UACzB,8CAAC,QAAe,OAAO,OAAO,UAC5B;AAAA,mDAAC,UAAK,OAAO,OAAO,YAAa,kBAAQ,GAAE;AAAA,MAC3C,6CAAC,UAAM,gBAAK;AAAA,SAFL,KAGT,CACD,GACH;AAAA,IAGF,8CAAC,SAAI,OAAO,OAAO,OACjB;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,SAAS;AAAA,UACf,OAAO,OAAO;AAAA,UACd,QAAO;AAAA,UACP,KAAI;AAAA,UACL;AAAA;AAAA,MAED;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,SAAS;AAAA,UACf,OAAO,OAAO;AAAA,UACd,QAAO;AAAA,UACP,KAAI;AAAA,UACL;AAAA;AAAA,MAED;AAAA,OACF;AAAA,KACF;AAEJ;AAKO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AACF,GAAsC;AACpC,QAAM,cAAc;AAAA,IAClB,QAAQ,OAAO;AAAA,IACf,QAAQ,OAAO;AAAA,IACf,MAAM,OAAO;AAAA,IACb,UAAU,OAAO;AAAA,EACnB;AAEA,QAAM,aAAa;AAAA,IACjB,IAAI,OAAO;AAAA,IACX,IAAI,CAAC;AAAA,IACL,IAAI,OAAO;AAAA,EACb;AAEA,QAAM,cAAc;AAAA,IAClB,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,GAAG,OAAO;AAAA,QACV,GAAG,YAAY,KAAK;AAAA,QACpB,GAAG,WAAW,IAAI;AAAA,MACpB;AAAA,MACA;AAAA,MAEA;AAAA,qDAAC,UAAM,sBAAY,KAAK,GAAE;AAAA,QAC1B,6CAAC,UAAM,iBAAM;AAAA,QACZ,UAAU,UAAa,8CAAC,UAAK;AAAA;AAAA,UAAE;AAAA,UAAM;AAAA,WAAC;AAAA;AAAA;AAAA,EACzC;AAEJ;AAKO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AACF,GAA2C;AACzC,QAAM,YAAY,MAAM;AACtB,QAAI,gBAAgB,UAAU,gBAAgB,cAAc;AAC1D,aAAO;AAAA,IACT;AACA,QAAI,eAAe;AACjB,YAAM,SAAS,CAAC,QAAQ,cAAc,aAAa,YAAY,QAAQ,UAAU;AACjF,YAAM,eAAe,OAAO,QAAQ,WAAW;AAC/C,YAAM,gBAAgB,OAAO,QAAQ,aAAa;AAClD,UAAI,eAAe,eAAe;AAChC,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,UAAU;AACzB,QAAM,eAAe;AAAA,IACnB,SAAS,OAAO;AAAA,IAChB,QAAQ,OAAO;AAAA,IACf,SAAS,OAAO;AAAA,EAClB;AAEA,QAAM,eAAe;AAAA,IACnB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAEA,SACE,8CAAC,SAAI,OAAO,OAAO,WAAW,WAC5B;AAAA,iDAAC,UAAK,OAAO,EAAE,GAAG,OAAO,cAAc,GAAG,aAAa,MAAM,EAAE,GAAG;AAAA,IAClE,6CAAC,UAAM,uBAAa,MAAM,GAAE;AAAA,IAC5B,8CAAC,UAAK,OAAO,EAAE,OAAO,UAAU,GAAG;AAAA;AAAA,MAAE;AAAA,MAAY;AAAA,OAAC;AAAA,KACpD;AAEJ;AAUO,SAAS,cAAc,EAAE,SAAS,UAAU,GAAoC;AACrF,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO,6EAAE;AAAA,EACX;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,SAAS;AAAA,MACX;AAAA,MACA;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,cAAc;AAAA,cACd,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,KAAK;AAAA,YACP;AAAA,YAEA;AAAA,2DAAC,UAAK,0BAAE;AAAA,cAAO;AAAA;AAAA;AAAA,QAEjB;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,aAAa;AAAA,cACb,OAAO;AAAA,cACP,UAAU;AAAA,YACZ;AAAA,YAEC,kBAAQ,IAAI,CAAC,QAAQ,UACpB,6CAAC,QAAe,OAAO,EAAE,cAAc,MAAM,GAC1C,oBADM,KAET,CACD;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;","names":["React","import_react","import_jsx_runtime","defaultStyles","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../../src/ui/index.ts","../../src/ui/verification-interstitial.tsx","../../src/ui/credential-prompt.tsx","../../src/ui/guidance.tsx"],"sourcesContent":["/**\n * AstraSync Verification Gateway UI Components\n *\n * React components for displaying verification status and guidance.\n */\n\nexport { VerificationInterstitial, useVerificationInterstitial } from './verification-interstitial';\n/** @deprecated Renamed VerificationInterstitial in 4.1.0; alias removed next major. */\nexport { VerificationInterstitial as CommerceShield } from './verification-interstitial';\n/** @deprecated Renamed useVerificationInterstitial in 4.1.0; alias removed next major. */\nexport { useVerificationInterstitial as useCommerceShield } from './verification-interstitial';\nexport { CredentialPrompt, useCredentialPrompt } from './credential-prompt';\nexport { GuidanceCard, TrustLevelBadge, DenialReasons } from './guidance';\n\nexport type { VerificationInterstitialProps } from '../types';\n/** @deprecated Renamed VerificationInterstitialProps in 4.1.0; alias removed next major. */\nexport type { VerificationInterstitialProps as CommerceShieldProps } from '../types';\nexport type { CredentialPromptProps } from './credential-prompt';\nexport type { GuidanceCardProps, TrustLevelBadgeProps, DenialReasonsProps } from './guidance';\n","/**\n * AstraSync Verification Interstitial Component\n *\n * A React component that displays a verification overlay for unverified agents.\n * Shows guidance on how to register and get verified access.\n *\n * Renamed from `CommerceShield` in 4.1.0; the old names are re-exported as\n * deprecated aliases from `./index` until the next major.\n */\n\nimport React from 'react';\nimport type { VerificationInterstitialProps, VerificationResult } from '../types';\n\n/**\n * Default styles for the verification interstitial\n */\nconst defaultStyles = {\n overlay: {\n position: 'fixed' as const,\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(26, 26, 46, 0.95)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 9999,\n padding: '20px',\n },\n container: {\n backgroundColor: 'rgba(255, 255, 255, 0.95)',\n borderRadius: '16px',\n boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.5)',\n maxWidth: '480px',\n width: '100%',\n padding: '40px',\n textAlign: 'center' as const,\n },\n icon: {\n fontSize: '48px',\n marginBottom: '20px',\n },\n title: {\n fontSize: '24px',\n fontWeight: 700,\n color: '#1a1a2e',\n marginBottom: '16px',\n },\n message: {\n color: '#4a5568',\n lineHeight: 1.6,\n marginBottom: '24px',\n },\n stepsContainer: {\n textAlign: 'left' as const,\n backgroundColor: '#f7fafc',\n borderRadius: '8px',\n padding: '20px',\n marginBottom: '24px',\n },\n stepsTitle: {\n fontSize: '14px',\n fontWeight: 600,\n color: '#2d3748',\n marginBottom: '12px',\n },\n stepsList: {\n paddingLeft: '20px',\n color: '#4a5568',\n margin: 0,\n },\n stepItem: {\n marginBottom: '8px',\n },\n buttonsContainer: {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '12px',\n },\n buttonBase: {\n display: 'inline-block',\n padding: '14px 24px',\n borderRadius: '8px',\n fontWeight: 600,\n textDecoration: 'none',\n cursor: 'pointer',\n border: 'none',\n fontSize: '16px',\n transition: 'all 0.2s',\n },\n buttonPrimary: {\n background: 'linear-gradient(135deg, #6366f1 0%, #4f46e5 100%)',\n color: 'white',\n },\n buttonSecondary: {\n backgroundColor: '#e2e8f0',\n color: '#4a5568',\n },\n footer: {\n marginTop: '24px',\n fontSize: '14px',\n color: '#718096',\n },\n footerLink: {\n color: '#6366f1',\n textDecoration: 'none',\n },\n};\n\n/**\n * Verification interstitial overlay component. Shown to unverified agents\n * (the user-visible title remains \"AstraSync Agent Verification\").\n */\nexport function VerificationInterstitial({\n visible,\n result,\n onRegister,\n onGuestAccess,\n onDismiss,\n title = 'AstraSync Agent Verification',\n message,\n allowGuestAccess = true,\n className,\n}: VerificationInterstitialProps): JSX.Element | null {\n if (!visible) {\n return null;\n }\n\n const displayMessage =\n message ||\n result?.guidance?.message ||\n \"This site verifies AI agents before granting access. We noticed you're visiting without AstraSync credentials.\";\n\n const registrationUrl =\n result?.guidance?.registrationUrl || 'https://astrasync.ai/agents/register';\n const docsUrl = result?.guidance?.documentationUrl || 'https://astrasync.ai/docs/agent-access';\n\n const steps = result?.guidance?.steps || [\n 'Register at astrasync.ai/agents/register',\n 'Create and register your agent',\n 'Add your ASTRA-ID to request headers',\n 'Refresh this page',\n ];\n\n const handleRegisterClick = () => {\n if (onRegister) {\n onRegister();\n } else {\n window.location.href = registrationUrl;\n }\n };\n\n const handleGuestClick = () => {\n if (onGuestAccess) {\n onGuestAccess();\n } else if (onDismiss) {\n onDismiss();\n }\n };\n\n return (\n <div\n style={defaultStyles.overlay}\n className={className}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"verification-interstitial-title\"\n >\n <div style={defaultStyles.container}>\n <div style={defaultStyles.icon} aria-hidden=\"true\">\n 🛡️\n </div>\n\n <h1 id=\"verification-interstitial-title\" style={defaultStyles.title}>\n {title}\n </h1>\n\n <p style={defaultStyles.message}>{displayMessage}</p>\n\n <div style={defaultStyles.stepsContainer}>\n <h3 style={defaultStyles.stepsTitle}>To get verified access:</h3>\n <ol style={defaultStyles.stepsList}>\n {steps.map((step, index) => (\n <li key={index} style={defaultStyles.stepItem}>\n {step}\n </li>\n ))}\n </ol>\n </div>\n\n <div style={defaultStyles.buttonsContainer}>\n <button\n onClick={handleRegisterClick}\n style={{ ...defaultStyles.buttonBase, ...defaultStyles.buttonPrimary }}\n >\n Register Now\n </button>\n\n {allowGuestAccess && (\n <button\n onClick={handleGuestClick}\n style={{ ...defaultStyles.buttonBase, ...defaultStyles.buttonSecondary }}\n >\n Continue as Guest (Limited)\n </button>\n )}\n </div>\n\n <p style={defaultStyles.footer}>\n Learn more:{' '}\n <a\n href={docsUrl}\n style={defaultStyles.footerLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Agent Access Documentation\n </a>\n </p>\n </div>\n </div>\n );\n}\n\n/**\n * Hook to manage verification-interstitial visibility\n */\nexport function useVerificationInterstitial(verificationResult: VerificationResult | null) {\n const [visible, setVisible] = React.useState(false);\n const [dismissed, setDismissed] = React.useState(false);\n\n React.useEffect(() => {\n if (verificationResult && !dismissed) {\n // Show the interstitial if either axis failed (identity or policy).\n const shouldShow = !verificationResult.identityVerified || !verificationResult.policyAllowed;\n\n setVisible(shouldShow);\n }\n }, [verificationResult, dismissed]);\n\n const dismiss = React.useCallback(() => {\n setDismissed(true);\n setVisible(false);\n }, []);\n\n const reset = React.useCallback(() => {\n setDismissed(false);\n }, []);\n\n return {\n visible,\n dismiss,\n reset,\n result: verificationResult,\n };\n}\n","/**\n * AstraSync Credential Prompt Component\n *\n * A React component for prompting users to enter their agent credentials.\n * Useful for single-page applications where agents may provide credentials interactively.\n */\n\nimport React, { useState, useCallback } from 'react';\nimport type { AgentCredentials } from '../types';\n\n/**\n * Credential prompt props\n */\nexport interface CredentialPromptProps {\n /** Whether the prompt is visible */\n visible: boolean;\n /** Callback when credentials are submitted */\n onSubmit: (credentials: AgentCredentials) => void;\n /** Callback when prompt is dismissed */\n onDismiss?: () => void;\n /** Title text */\n title?: string;\n /** Description text */\n description?: string;\n /** Whether to show API key input */\n showApiKey?: boolean;\n /** Whether to show JWT input */\n showJwt?: boolean;\n /** Loading state */\n loading?: boolean;\n /** Error message to display */\n error?: string;\n /** Custom class name */\n className?: string;\n}\n\n/**\n * Default styles for the credential prompt\n */\nconst defaultStyles = {\n overlay: {\n position: 'fixed' as const,\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 9999,\n padding: '20px',\n },\n container: {\n backgroundColor: 'white',\n borderRadius: '12px',\n boxShadow: '0 20px 40px rgba(0, 0, 0, 0.3)',\n maxWidth: '400px',\n width: '100%',\n padding: '32px',\n },\n title: {\n fontSize: '20px',\n fontWeight: 600,\n color: '#1a1a2e',\n marginBottom: '8px',\n },\n description: {\n fontSize: '14px',\n color: '#64748b',\n marginBottom: '24px',\n lineHeight: 1.5,\n },\n form: {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '16px',\n },\n inputGroup: {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '6px',\n },\n label: {\n fontSize: '14px',\n fontWeight: 500,\n color: '#374151',\n },\n input: {\n padding: '12px',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n fontSize: '14px',\n outline: 'none',\n transition: 'border-color 0.2s',\n },\n error: {\n backgroundColor: '#fef2f2',\n color: '#dc2626',\n padding: '12px',\n borderRadius: '8px',\n fontSize: '14px',\n marginBottom: '16px',\n },\n buttonContainer: {\n display: 'flex',\n gap: '12px',\n marginTop: '8px',\n },\n button: {\n flex: 1,\n padding: '12px 16px',\n borderRadius: '8px',\n fontWeight: 600,\n fontSize: '14px',\n cursor: 'pointer',\n transition: 'all 0.2s',\n border: 'none',\n },\n buttonPrimary: {\n backgroundColor: '#4f46e5',\n color: 'white',\n },\n buttonSecondary: {\n backgroundColor: '#f1f5f9',\n color: '#475569',\n },\n buttonDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n};\n\n/**\n * Credential prompt component\n */\nexport function CredentialPrompt({\n visible,\n onSubmit,\n onDismiss,\n title = 'Enter Agent Credentials',\n description = 'Provide your AstraSync agent credentials to verify your identity.',\n showApiKey = true,\n showJwt = false,\n loading = false,\n error,\n className,\n}: CredentialPromptProps): JSX.Element | null {\n const [astraId, setAstraId] = useState('');\n const [apiKey, setApiKey] = useState('');\n const [jwt, setJwt] = useState('');\n\n const handleSubmit = useCallback((e: React.FormEvent) => {\n e.preventDefault();\n\n const credentials: AgentCredentials = {};\n\n if (astraId.trim()) {\n credentials.astraId = astraId.trim();\n }\n if (apiKey.trim()) {\n credentials.apiKey = apiKey.trim();\n }\n if (jwt.trim()) {\n credentials.jwt = jwt.trim();\n }\n\n onSubmit(credentials);\n }, [astraId, apiKey, jwt, onSubmit]);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Escape' && onDismiss) {\n onDismiss();\n }\n }, [onDismiss]);\n\n if (!visible) {\n return null;\n }\n\n const isValid = astraId.trim() || apiKey.trim() || jwt.trim();\n\n return (\n <div\n style={defaultStyles.overlay}\n className={className}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"credential-prompt-title\"\n onKeyDown={handleKeyDown}\n >\n <div style={defaultStyles.container}>\n <h2 id=\"credential-prompt-title\" style={defaultStyles.title}>\n {title}\n </h2>\n\n <p style={defaultStyles.description}>\n {description}\n </p>\n\n {error && (\n <div style={defaultStyles.error} role=\"alert\">\n {error}\n </div>\n )}\n\n <form onSubmit={handleSubmit} style={defaultStyles.form}>\n <div style={defaultStyles.inputGroup}>\n <label htmlFor=\"astra-id\" style={defaultStyles.label}>\n ASTRA-ID\n </label>\n <input\n id=\"astra-id\"\n type=\"text\"\n value={astraId}\n onChange={(e) => setAstraId(e.target.value)}\n placeholder=\"ASTRA-xxx or ASTRAD-xxx\"\n style={defaultStyles.input}\n disabled={loading}\n />\n </div>\n\n {showApiKey && (\n <div style={defaultStyles.inputGroup}>\n <label htmlFor=\"api-key\" style={defaultStyles.label}>\n API Key (optional)\n </label>\n <input\n id=\"api-key\"\n type=\"password\"\n value={apiKey}\n onChange={(e) => setApiKey(e.target.value)}\n placeholder=\"Your API key\"\n style={defaultStyles.input}\n disabled={loading}\n />\n </div>\n )}\n\n {showJwt && (\n <div style={defaultStyles.inputGroup}>\n <label htmlFor=\"jwt\" style={defaultStyles.label}>\n JWT Token (optional)\n </label>\n <input\n id=\"jwt\"\n type=\"password\"\n value={jwt}\n onChange={(e) => setJwt(e.target.value)}\n placeholder=\"Your JWT token\"\n style={defaultStyles.input}\n disabled={loading}\n />\n </div>\n )}\n\n <div style={defaultStyles.buttonContainer}>\n {onDismiss && (\n <button\n type=\"button\"\n onClick={onDismiss}\n style={{ ...defaultStyles.button, ...defaultStyles.buttonSecondary }}\n disabled={loading}\n >\n Cancel\n </button>\n )}\n\n <button\n type=\"submit\"\n style={{\n ...defaultStyles.button,\n ...defaultStyles.buttonPrimary,\n ...((!isValid || loading) ? defaultStyles.buttonDisabled : {}),\n }}\n disabled={!isValid || loading}\n >\n {loading ? 'Verifying...' : 'Verify'}\n </button>\n </div>\n </form>\n </div>\n </div>\n );\n}\n\n/**\n * Hook to manage credential prompt state\n */\nexport function useCredentialPrompt() {\n const [visible, setVisible] = useState(false);\n const [credentials, setCredentials] = useState<AgentCredentials | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const show = useCallback(() => {\n setVisible(true);\n setError(null);\n }, []);\n\n const hide = useCallback(() => {\n setVisible(false);\n setError(null);\n setLoading(false);\n }, []);\n\n const submit = useCallback((creds: AgentCredentials) => {\n setCredentials(creds);\n setLoading(true);\n setError(null);\n }, []);\n\n const setSubmitError = useCallback((err: string) => {\n setError(err);\n setLoading(false);\n }, []);\n\n const complete = useCallback(() => {\n setVisible(false);\n setLoading(false);\n setError(null);\n }, []);\n\n return {\n visible,\n credentials,\n loading,\n error,\n show,\n hide,\n submit,\n setError: setSubmitError,\n complete,\n };\n}\n","/**\n * AstraSync Guidance Components\n *\n * React components for displaying guidance information to unverified agents.\n * Provides helpful information on how to register and get verified.\n */\n\nimport React from 'react';\nimport type { GuidanceInfo, TrustLevel } from '../types';\n\n/**\n * Guidance card props\n */\nexport interface GuidanceCardProps {\n /** Guidance information */\n guidance: GuidanceInfo;\n /** Card title */\n title?: string;\n /** Whether to show as compact inline */\n compact?: boolean;\n /** Custom class name */\n className?: string;\n}\n\n/**\n * Trust level badge props\n */\nexport interface TrustLevelBadgeProps {\n /** Trust level */\n level: TrustLevel;\n /** Trust score */\n score?: number;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Custom class name */\n className?: string;\n}\n\n/**\n * Default styles\n */\nconst styles = {\n card: {\n backgroundColor: '#f8fafc',\n border: '1px solid #e2e8f0',\n borderRadius: '12px',\n padding: '24px',\n maxWidth: '480px',\n },\n cardCompact: {\n backgroundColor: '#fefce8',\n border: '1px solid #fef08a',\n borderRadius: '8px',\n padding: '16px',\n },\n cardTitle: {\n fontSize: '18px',\n fontWeight: 600,\n color: '#1e293b',\n marginBottom: '12px',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n cardMessage: {\n fontSize: '14px',\n color: '#475569',\n lineHeight: 1.6,\n marginBottom: '16px',\n },\n stepsList: {\n listStyle: 'none',\n padding: 0,\n margin: 0,\n },\n stepItem: {\n display: 'flex',\n alignItems: 'flex-start',\n gap: '12px',\n marginBottom: '12px',\n fontSize: '14px',\n color: '#334155',\n },\n stepNumber: {\n backgroundColor: '#e0e7ff',\n color: '#4338ca',\n width: '24px',\n height: '24px',\n borderRadius: '50%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '12px',\n fontWeight: 600,\n flexShrink: 0,\n },\n links: {\n display: 'flex',\n gap: '16px',\n marginTop: '16px',\n paddingTop: '16px',\n borderTop: '1px solid #e2e8f0',\n },\n link: {\n color: '#4f46e5',\n textDecoration: 'none',\n fontSize: '14px',\n fontWeight: 500,\n },\n badge: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n padding: '4px 8px',\n borderRadius: '9999px',\n fontWeight: 600,\n fontSize: '12px',\n },\n badgeSm: {\n padding: '2px 6px',\n fontSize: '10px',\n },\n badgeLg: {\n padding: '6px 12px',\n fontSize: '14px',\n },\n badgeBronze: {\n backgroundColor: '#fef3c7',\n color: '#92400e',\n },\n badgeSilver: {\n backgroundColor: '#e5e7eb',\n color: '#374151',\n },\n badgeGold: {\n backgroundColor: '#fef9c3',\n color: '#854d0e',\n },\n badgePlatinum: {\n backgroundColor: '#e0e7ff',\n color: '#3730a3',\n },\n indicator: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n fontSize: '14px',\n },\n indicatorDot: {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n },\n indicatorAllowed: {\n backgroundColor: '#22c55e',\n },\n indicatorDenied: {\n backgroundColor: '#ef4444',\n },\n indicatorLimited: {\n backgroundColor: '#f59e0b',\n },\n};\n\n/**\n * Guidance card component\n */\nexport function GuidanceCard({\n guidance,\n title = 'How to Get Verified',\n compact = false,\n className,\n}: GuidanceCardProps): JSX.Element {\n const cardStyle = compact ? styles.cardCompact : styles.card;\n\n return (\n <div style={cardStyle} className={className}>\n <h3 style={styles.cardTitle}>\n <span>💡</span>\n {title}\n </h3>\n\n <p style={styles.cardMessage}>{guidance.message}</p>\n\n {guidance.steps && guidance.steps.length > 0 && (\n <ol style={styles.stepsList}>\n {guidance.steps.map((step, index) => (\n <li key={index} style={styles.stepItem}>\n <span style={styles.stepNumber}>{index + 1}</span>\n <span>{step}</span>\n </li>\n ))}\n </ol>\n )}\n\n <div style={styles.links}>\n <a\n href={guidance.registrationUrl}\n style={styles.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Register →\n </a>\n <a\n href={guidance.documentationUrl}\n style={styles.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Documentation →\n </a>\n </div>\n </div>\n );\n}\n\n/**\n * Trust level badge component\n */\nexport function TrustLevelBadge({\n level,\n score,\n size = 'md',\n className,\n}: TrustLevelBadgeProps): JSX.Element {\n const levelColors = {\n BRONZE: styles.badgeBronze,\n SILVER: styles.badgeSilver,\n GOLD: styles.badgeGold,\n PLATINUM: styles.badgePlatinum,\n };\n\n const sizeStyles = {\n sm: styles.badgeSm,\n md: {},\n lg: styles.badgeLg,\n };\n\n const levelEmojis = {\n BRONZE: '🥉',\n SILVER: '🥈',\n GOLD: '🥇',\n PLATINUM: '💎',\n };\n\n return (\n <span\n style={{\n ...styles.badge,\n ...levelColors[level],\n ...sizeStyles[size],\n }}\n className={className}\n >\n <span>{levelEmojis[level]}</span>\n <span>{level}</span>\n {score !== undefined && <span>({score})</span>}\n </span>\n );\n}\n\n/**\n * Denial reasons list component\n */\nexport interface DenialReasonsProps {\n reasons: string[];\n className?: string;\n}\n\nexport function DenialReasons({ reasons, className }: DenialReasonsProps): JSX.Element {\n if (reasons.length === 0) {\n return <></>;\n }\n\n return (\n <div\n style={{\n backgroundColor: '#fef2f2',\n border: '1px solid #fecaca',\n borderRadius: '8px',\n padding: '16px',\n }}\n className={className}\n >\n <h4\n style={{\n fontSize: '14px',\n fontWeight: 600,\n color: '#dc2626',\n marginBottom: '8px',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n }}\n >\n <span>⚠️</span>\n Access Denied\n </h4>\n <ul\n style={{\n margin: 0,\n paddingLeft: '20px',\n color: '#991b1b',\n fontSize: '14px',\n }}\n >\n {reasons.map((reason, index) => (\n <li key={index} style={{ marginBottom: '4px' }}>\n {reason}\n </li>\n ))}\n </ul>\n </div>\n );\n}\n"],"mappings":"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","names":["React","import_react","import_jsx_runtime","defaultStyles","import_jsx_runtime"]}
|