@astrasyncai/verification-gateway 4.5.1 → 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/README.md +1 -1
- 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 +11 -33
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +11 -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 +28 -65
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +27 -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 +9 -30
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +9 -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 +8 -124
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +8 -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 +63 -41
- package/dist/bin/astrasync-codex-hook.js +63 -41
- package/dist/bin/astrasync-guard.js +63 -41
- package/dist/bin/astrasync.js +75 -48
- package/dist/browser/background.js +63 -41
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +63 -41
- 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 +33 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +33 -6
- 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 +63 -41
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +63 -41
- 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 +63 -41
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +63 -41
- 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 +11 -33
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +11 -33
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/{express-DaqL11tx.d.ts → express-B5lWuemA.d.ts} +1 -1
- package/dist/{express-CR6F3njD.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 +63 -41
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +63 -41
- 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-Cub7lK-T.d.mts → index-B5k_vUmK.d.mts} +1 -1
- package/dist/{index-BfIxCYIZ.d.ts → index-BOzM6xUq.d.mts} +1 -2
- package/dist/{index-CwAh7Tln.d.mts → index-dRfxUdFA.d.ts} +1 -2
- package/dist/{index-B5Ts1WtM.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 +30 -217
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +30 -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 +22 -7
- package/dist/local-evaluator/evaluator.js.map +1 -1
- package/dist/local-evaluator/evaluator.mjs +22 -7
- package/dist/local-evaluator/evaluator.mjs.map +1 -1
- package/dist/{mcp-BgBJu4Jl.d.mts → mcp-DgsyQiQq.d.mts} +53 -52
- package/dist/{mcp--DgKOwfu.d.ts → mcp-OosmAcKf.d.ts} +53 -52
- package/dist/{nextjs-DlX6xwbU.d.mts → nextjs-B1sBdEav.d.mts} +1 -1
- package/dist/{nextjs-DL6uE1ye.d.ts → nextjs-DoRmhV_Z.d.ts} +1 -1
- package/dist/registration/index.d.mts +5 -1
- package/dist/registration/index.d.ts +5 -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-DwSfO7Sb.d.ts → types-BK2POWNc.d.ts} +23 -50
- package/dist/{types-C0zfSXMB.d.mts → types-CJjZvPr9.d.mts} +23 -50
- package/dist/{types-C7Rb-w0d.d.mts → types-CXf3q4kZ.d.ts} +14 -3
- package/dist/{types-nIh3HtuA.d.ts → types-DQmop7ZW.d.mts} +14 -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 +8 -28
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +8 -28
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/sdk-Bbh9B_dw.d.mts +0 -215
- package/dist/sdk-C6SASmsh.d.ts +0 -215
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":"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","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AAEpC,YAAM,aAAa,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB;AAE/E,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;;;ACzPA,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;;;AC7JM,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;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"]}
|
package/dist/ui/index.mjs
CHANGED
|
@@ -188,7 +188,7 @@ function useVerificationInterstitial(verificationResult) {
|
|
|
188
188
|
const [dismissed, setDismissed] = React.useState(false);
|
|
189
189
|
React.useEffect(() => {
|
|
190
190
|
if (verificationResult && !dismissed) {
|
|
191
|
-
const shouldShow = !verificationResult.identityVerified || !verificationResult.policyAllowed
|
|
191
|
+
const shouldShow = !verificationResult.identityVerified || !verificationResult.policyAllowed;
|
|
192
192
|
setVisible(shouldShow);
|
|
193
193
|
}
|
|
194
194
|
}, [verificationResult, dismissed]);
|
|
@@ -680,46 +680,6 @@ function TrustLevelBadge({
|
|
|
680
680
|
}
|
|
681
681
|
);
|
|
682
682
|
}
|
|
683
|
-
function AccessLevelIndicator({
|
|
684
|
-
accessLevel,
|
|
685
|
-
requiredLevel,
|
|
686
|
-
className
|
|
687
|
-
}) {
|
|
688
|
-
const getStatus = () => {
|
|
689
|
-
if (accessLevel === "none" || accessLevel === "restricted") {
|
|
690
|
-
return "denied";
|
|
691
|
-
}
|
|
692
|
-
if (requiredLevel) {
|
|
693
|
-
const levels = ["none", "restricted", "read-only", "standard", "full", "internal"];
|
|
694
|
-
const currentIndex = levels.indexOf(accessLevel);
|
|
695
|
-
const requiredIndex = levels.indexOf(requiredLevel);
|
|
696
|
-
if (currentIndex < requiredIndex) {
|
|
697
|
-
return "limited";
|
|
698
|
-
}
|
|
699
|
-
}
|
|
700
|
-
return "allowed";
|
|
701
|
-
};
|
|
702
|
-
const status = getStatus();
|
|
703
|
-
const statusColors = {
|
|
704
|
-
allowed: styles.indicatorAllowed,
|
|
705
|
-
denied: styles.indicatorDenied,
|
|
706
|
-
limited: styles.indicatorLimited
|
|
707
|
-
};
|
|
708
|
-
const statusLabels = {
|
|
709
|
-
allowed: "Access Granted",
|
|
710
|
-
denied: "Access Denied",
|
|
711
|
-
limited: "Limited Access"
|
|
712
|
-
};
|
|
713
|
-
return /* @__PURE__ */ jsxs3("div", { style: styles.indicator, className, children: [
|
|
714
|
-
/* @__PURE__ */ jsx3("span", { style: { ...styles.indicatorDot, ...statusColors[status] } }),
|
|
715
|
-
/* @__PURE__ */ jsx3("span", { children: statusLabels[status] }),
|
|
716
|
-
/* @__PURE__ */ jsxs3("span", { style: { color: "#94a3b8" }, children: [
|
|
717
|
-
"(",
|
|
718
|
-
accessLevel,
|
|
719
|
-
")"
|
|
720
|
-
] })
|
|
721
|
-
] });
|
|
722
|
-
}
|
|
723
683
|
function DenialReasons({ reasons, className }) {
|
|
724
684
|
if (reasons.length === 0) {
|
|
725
685
|
return /* @__PURE__ */ jsx3(Fragment, {});
|
|
@@ -770,7 +730,6 @@ function DenialReasons({ reasons, className }) {
|
|
|
770
730
|
);
|
|
771
731
|
}
|
|
772
732
|
export {
|
|
773
|
-
AccessLevelIndicator,
|
|
774
733
|
VerificationInterstitial as CommerceShield,
|
|
775
734
|
CredentialPrompt,
|
|
776
735
|
DenialReasons,
|
package/dist/ui/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/verification-interstitial.tsx","../../src/ui/credential-prompt.tsx","../../src/ui/guidance.tsx"],"sourcesContent":["/**\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":"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","names":["jsx","jsxs","defaultStyles","jsx","jsxs"]}
|
|
1
|
+
{"version":3,"sources":["../../src/ui/verification-interstitial.tsx","../../src/ui/credential-prompt.tsx","../../src/ui/guidance.tsx"],"sourcesContent":["/**\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":["jsx","jsxs","defaultStyles","jsx","jsxs"]}
|
package/dist/verify.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as AgentCredentials, G as GatewayConfig, d as AttemptReport, v as VerificationRequest, w as VerificationResult } from './types-CJjZvPr9.mjs';
|
|
2
2
|
import { ObservedMetadata } from './metadata-capture.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -74,8 +74,8 @@ declare function fetchRoutes(config: GatewayConfig, counterpartyId: string): Pro
|
|
|
74
74
|
interface RouteAccessConfigShape {
|
|
75
75
|
pattern: string;
|
|
76
76
|
method: string;
|
|
77
|
-
/**
|
|
78
|
-
|
|
77
|
+
/** Pass through unenforced (observe). Replaces `minAccessLevel: 'none'`. */
|
|
78
|
+
observe?: boolean;
|
|
79
79
|
minTrustScore?: number;
|
|
80
80
|
requiredPurposes?: string[];
|
|
81
81
|
allowedPurposes?: string[];
|
|
@@ -158,7 +158,6 @@ declare function reportCounterpartyPreCheckFailure(config: GatewayConfig, data:
|
|
|
158
158
|
declare function quickVerify(config: GatewayConfig, credentials: AgentCredentials): Promise<{
|
|
159
159
|
identityVerified: boolean;
|
|
160
160
|
policyAllowed: boolean;
|
|
161
|
-
accessLevel: AccessLevel;
|
|
162
161
|
reason?: string;
|
|
163
162
|
}>;
|
|
164
163
|
|
package/dist/verify.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as AgentCredentials, G as GatewayConfig, d as AttemptReport, v as VerificationRequest, w as VerificationResult } from './types-BK2POWNc.js';
|
|
2
2
|
import { ObservedMetadata } from './metadata-capture.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -74,8 +74,8 @@ declare function fetchRoutes(config: GatewayConfig, counterpartyId: string): Pro
|
|
|
74
74
|
interface RouteAccessConfigShape {
|
|
75
75
|
pattern: string;
|
|
76
76
|
method: string;
|
|
77
|
-
/**
|
|
78
|
-
|
|
77
|
+
/** Pass through unenforced (observe). Replaces `minAccessLevel: 'none'`. */
|
|
78
|
+
observe?: boolean;
|
|
79
79
|
minTrustScore?: number;
|
|
80
80
|
requiredPurposes?: string[];
|
|
81
81
|
allowedPurposes?: string[];
|
|
@@ -158,7 +158,6 @@ declare function reportCounterpartyPreCheckFailure(config: GatewayConfig, data:
|
|
|
158
158
|
declare function quickVerify(config: GatewayConfig, credentials: AgentCredentials): Promise<{
|
|
159
159
|
identityVerified: boolean;
|
|
160
160
|
policyAllowed: boolean;
|
|
161
|
-
accessLevel: AccessLevel;
|
|
162
161
|
reason?: string;
|
|
163
162
|
}>;
|
|
164
163
|
|
package/dist/verify.js
CHANGED
|
@@ -36,7 +36,7 @@ __export(verify_exports, {
|
|
|
36
36
|
module.exports = __toCommonJS(verify_exports);
|
|
37
37
|
|
|
38
38
|
// src/version.ts
|
|
39
|
-
var SDK_VERSION = "
|
|
39
|
+
var SDK_VERSION = "5.0.0";
|
|
40
40
|
|
|
41
41
|
// src/http.ts
|
|
42
42
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -56,7 +56,7 @@ function withUserAgent(initHeaders) {
|
|
|
56
56
|
}
|
|
57
57
|
var sdkFetch = (input, init) => fetch(input, { ...init, headers: withUserAgent(init?.headers) });
|
|
58
58
|
|
|
59
|
-
// src/
|
|
59
|
+
// src/trust-levels.ts
|
|
60
60
|
function getTrustLevel(score) {
|
|
61
61
|
if (score >= 80) return "PLATINUM";
|
|
62
62
|
if (score >= 60) return "GOLD";
|
|
@@ -74,11 +74,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
|
|
|
74
74
|
// src/verify.ts
|
|
75
75
|
var DEFAULT_CONFIG = {
|
|
76
76
|
apiBaseUrl: "https://astrasync.ai/api",
|
|
77
|
-
// v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
|
|
78
|
-
// access). Pre-rename this defaulted to `'guidance'`, which combined with
|
|
79
|
-
// a route gated at `'guidance'` to silently let unverified traffic
|
|
80
|
-
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
81
|
-
defaultAccessLevel: "none",
|
|
82
77
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
83
78
|
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
84
79
|
// default; the caller's explicit value is honoured for cacheable results.
|
|
@@ -282,13 +277,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
282
277
|
// policy is not evaluated (we never reached the gate).
|
|
283
278
|
identityVerified: false,
|
|
284
279
|
policyAllowed: false,
|
|
285
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
286
|
-
// Adapters additionally short-circuit on `!identityVerified ||
|
|
287
|
-
// !policyAllowed` before the gate check, but the access level still has
|
|
288
|
-
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
289
|
-
// in other languages, custom integrations) inherit the correct
|
|
290
|
-
// semantics.
|
|
291
|
-
accessLevel: "none",
|
|
292
280
|
guidance,
|
|
293
281
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
294
282
|
// Round-10 (#47, O5): on API-error fallback, surface a typed failure so
|
|
@@ -311,6 +299,11 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
311
299
|
// 4.0.0: typed marker so adapters render the misconfig envelope (503 +
|
|
312
300
|
// MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
|
|
313
301
|
...isMisconfig && { misconfigured: true },
|
|
302
|
+
// 4.6.0: a transient api_error is retryable — mark it so consumers surface
|
|
303
|
+
// "temporarily unavailable, retry" (recommendation 'error') instead of
|
|
304
|
+
// coercing the absent recommendation to a policy 'deny'. Misconfig is
|
|
305
|
+
// deterministic and intentionally NOT marked retryable.
|
|
306
|
+
...isApiError && { retryable: true },
|
|
314
307
|
correlationId: options.correlationId,
|
|
315
308
|
attemptId: options.attemptId,
|
|
316
309
|
verifiedAt: /* @__PURE__ */ new Date()
|
|
@@ -377,7 +370,6 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
377
370
|
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
|
|
378
371
|
access: {
|
|
379
372
|
allowed: false,
|
|
380
|
-
accessLevel: "none",
|
|
381
373
|
reason: "endpoint_deactivated",
|
|
382
374
|
failures: [
|
|
383
375
|
{
|
|
@@ -440,7 +432,7 @@ async function verify(config, request, options) {
|
|
|
440
432
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
441
433
|
deprecationWarningShown = true;
|
|
442
434
|
console.warn(
|
|
443
|
-
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access
|
|
435
|
+
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access decisions (verified ID + runtime challenge + PDLSS + trust score). To gate access to an endpoint, configure the endpoint's trust_score_requirement server-side."
|
|
444
436
|
);
|
|
445
437
|
}
|
|
446
438
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
@@ -486,14 +478,6 @@ async function verify(config, request, options) {
|
|
|
486
478
|
const result2 = {
|
|
487
479
|
identityVerified: idVerifiedFromBackend,
|
|
488
480
|
policyAllowed: false,
|
|
489
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
490
|
-
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
491
|
-
// colocated `guidance: {...}` help-payload object below and let
|
|
492
|
-
// denied requests pass any route gated at `'guidance'` because
|
|
493
|
-
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
494
|
-
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
495
|
-
// the gate check — belt-and-braces.
|
|
496
|
-
accessLevel: "none",
|
|
497
481
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
498
482
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
499
483
|
// as the fallback for older backends.
|
|
@@ -542,7 +526,6 @@ async function verify(config, request, options) {
|
|
|
542
526
|
trustScore: apiResponse.organization.trustScore
|
|
543
527
|
} : void 0;
|
|
544
528
|
const verificationContext = apiResponse.verificationContext;
|
|
545
|
-
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
546
529
|
const result = {
|
|
547
530
|
// 4.5.0 (probe F1): read idVerified from verificationContext with the
|
|
548
531
|
// SAME absent⇒false default as the deny branch. The previous `!== false`
|
|
@@ -554,7 +537,6 @@ async function verify(config, request, options) {
|
|
|
554
537
|
// this load-bearing must never be defaulted on.
|
|
555
538
|
identityVerified: apiResponse.verificationContext?.idVerified === true,
|
|
556
539
|
policyAllowed: true,
|
|
557
|
-
accessLevel,
|
|
558
540
|
agent,
|
|
559
541
|
developer,
|
|
560
542
|
organization,
|
|
@@ -581,7 +563,6 @@ async function verify(config, request, options) {
|
|
|
581
563
|
};
|
|
582
564
|
if (result.recommendation === "deny") {
|
|
583
565
|
result.policyAllowed = false;
|
|
584
|
-
result.accessLevel = "none";
|
|
585
566
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
586
567
|
result.guidance = result.runtimeChallenge ? {
|
|
587
568
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
@@ -699,7 +680,6 @@ async function quickVerify(config, credentials) {
|
|
|
699
680
|
return {
|
|
700
681
|
identityVerified: result.identityVerified,
|
|
701
682
|
policyAllowed: result.policyAllowed,
|
|
702
|
-
accessLevel: result.accessLevel,
|
|
703
683
|
reason: result.denialReasons?.[0]
|
|
704
684
|
};
|
|
705
685
|
}
|