@astrasyncai/verification-gateway 3.12.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +106 -29
  2. package/dist/adapter-interface/interface.d.mts +2 -2
  3. package/dist/adapter-interface/interface.d.ts +2 -2
  4. package/dist/adapters/express.d.mts +2 -2
  5. package/dist/adapters/express.d.ts +2 -2
  6. package/dist/adapters/express.js +482 -22
  7. package/dist/adapters/express.js.map +1 -1
  8. package/dist/adapters/express.mjs +482 -22
  9. package/dist/adapters/express.mjs.map +1 -1
  10. package/dist/adapters/http-pdlss.d.mts +3 -3
  11. package/dist/adapters/http-pdlss.d.ts +3 -3
  12. package/dist/adapters/http-pdlss.js.map +1 -1
  13. package/dist/adapters/http-pdlss.mjs.map +1 -1
  14. package/dist/adapters/mcp.d.mts +56 -36
  15. package/dist/adapters/mcp.d.ts +56 -36
  16. package/dist/adapters/mcp.js +309 -10
  17. package/dist/adapters/mcp.js.map +1 -1
  18. package/dist/adapters/mcp.mjs +309 -10
  19. package/dist/adapters/mcp.mjs.map +1 -1
  20. package/dist/adapters/nextjs.d.mts +2 -2
  21. package/dist/adapters/nextjs.d.ts +2 -2
  22. package/dist/adapters/nextjs.js +518 -25
  23. package/dist/adapters/nextjs.js.map +1 -1
  24. package/dist/adapters/nextjs.mjs +518 -25
  25. package/dist/adapters/nextjs.mjs.map +1 -1
  26. package/dist/adapters/sdk.d.mts +2 -2
  27. package/dist/adapters/sdk.d.ts +2 -2
  28. package/dist/adapters/sdk.js +72 -9
  29. package/dist/adapters/sdk.js.map +1 -1
  30. package/dist/adapters/sdk.mjs +72 -9
  31. package/dist/adapters/sdk.mjs.map +1 -1
  32. package/dist/agent/index.d.mts +2 -2
  33. package/dist/agent/index.d.ts +2 -2
  34. package/dist/agent/index.js.map +1 -1
  35. package/dist/agent/index.mjs.map +1 -1
  36. package/dist/bin/astrasync-claude-hook.js +83 -20
  37. package/dist/bin/astrasync-codex-hook.js +83 -20
  38. package/dist/bin/astrasync-guard.js +83 -20
  39. package/dist/bin/astrasync.js +150 -33
  40. package/dist/browser/background.js +83 -20
  41. package/dist/browser/background.js.map +1 -1
  42. package/dist/browser/background.mjs +83 -20
  43. package/dist/browser/background.mjs.map +1 -1
  44. package/dist/browser/browser-adapter.d.mts +2 -2
  45. package/dist/browser/browser-adapter.d.ts +2 -2
  46. package/dist/claude-code/claude-code-adapter.d.mts +2 -2
  47. package/dist/claude-code/claude-code-adapter.d.ts +2 -2
  48. package/dist/cli/index.d.mts +2 -2
  49. package/dist/cli/index.d.ts +2 -2
  50. package/dist/codex/index.d.mts +3 -3
  51. package/dist/codex/index.d.ts +3 -3
  52. package/dist/codex/index.js +83 -20
  53. package/dist/codex/index.js.map +1 -1
  54. package/dist/codex/index.mjs +83 -20
  55. package/dist/codex/index.mjs.map +1 -1
  56. package/dist/cursor/cursor-adapter.d.mts +2 -2
  57. package/dist/cursor/cursor-adapter.d.ts +2 -2
  58. package/dist/cursor/extension.d.mts +2 -2
  59. package/dist/cursor/extension.d.ts +2 -2
  60. package/dist/cursor/extension.js +83 -20
  61. package/dist/cursor/extension.js.map +1 -1
  62. package/dist/cursor/extension.mjs +83 -20
  63. package/dist/cursor/extension.mjs.map +1 -1
  64. package/dist/edge-config.d.mts +22 -7
  65. package/dist/edge-config.d.ts +22 -7
  66. package/dist/edge-config.js.map +1 -1
  67. package/dist/edge-config.mjs.map +1 -1
  68. package/dist/edge-core/index.d.mts +425 -0
  69. package/dist/edge-core/index.d.ts +425 -0
  70. package/dist/edge-core/index.js +1482 -0
  71. package/dist/edge-core/index.js.map +1 -0
  72. package/dist/edge-core/index.mjs +1437 -0
  73. package/dist/edge-core/index.mjs.map +1 -0
  74. package/dist/{express-B39o89gf.d.mts → express-BVd1_3FE.d.ts} +9 -7
  75. package/dist/{express-BuxKNO_q.d.ts → express-D_4hTn5Z.d.mts} +9 -7
  76. package/dist/gateway/gateway.d.mts +2 -2
  77. package/dist/gateway/gateway.d.ts +2 -2
  78. package/dist/gateway/gateway.js +83 -20
  79. package/dist/gateway/gateway.js.map +1 -1
  80. package/dist/gateway/gateway.mjs +83 -20
  81. package/dist/gateway/gateway.mjs.map +1 -1
  82. package/dist/git-trigger/git-hooks.d.mts +2 -2
  83. package/dist/git-trigger/git-hooks.d.ts +2 -2
  84. package/dist/{index-CLHdqs2M.d.ts → index-B0YHu_SP.d.ts} +30 -27
  85. package/dist/{index-DME3w3lf.d.mts → index-BPEBlOsE.d.mts} +30 -27
  86. package/dist/{index-CqydB4ks.d.mts → index-DQb5-_1X.d.mts} +1 -1
  87. package/dist/{index-BG62SXso.d.ts → index-T1aBoUcc.d.ts} +1 -1
  88. package/dist/index.d.mts +11 -11
  89. package/dist/index.d.ts +11 -11
  90. package/dist/index.js +595 -272
  91. package/dist/index.js.map +1 -1
  92. package/dist/index.mjs +592 -272
  93. package/dist/index.mjs.map +1 -1
  94. package/dist/local-evaluator/evaluator.d.mts +2 -2
  95. package/dist/local-evaluator/evaluator.d.ts +2 -2
  96. package/dist/metadata-capture.d.mts +63 -4
  97. package/dist/metadata-capture.d.ts +63 -4
  98. package/dist/metadata-capture.js +67 -0
  99. package/dist/metadata-capture.js.map +1 -1
  100. package/dist/metadata-capture.mjs +64 -0
  101. package/dist/metadata-capture.mjs.map +1 -1
  102. package/dist/{nextjs-D74W7wt-.d.mts → nextjs-WyeVr2Kp.d.mts} +3 -3
  103. package/dist/{nextjs-Ddlw_J1J.d.ts → nextjs-w7RTbP1P.d.ts} +3 -3
  104. package/dist/platform-signatures.d.mts +5 -6
  105. package/dist/platform-signatures.d.ts +5 -6
  106. package/dist/platform-signatures.js.map +1 -1
  107. package/dist/platform-signatures.mjs.map +1 -1
  108. package/dist/registration/index.d.mts +10 -11
  109. package/dist/registration/index.d.ts +10 -11
  110. package/dist/registration/index.js.map +1 -1
  111. package/dist/registration/index.mjs.map +1 -1
  112. package/dist/{sdk-CT7gdkfR.d.ts → sdk-CbTNIkAa.d.mts} +4 -4
  113. package/dist/{sdk-Bn6bj7kt.d.mts → sdk-QeX0Z8Ho.d.ts} +4 -4
  114. package/dist/transport/index.d.mts +2 -2
  115. package/dist/transport/index.d.ts +2 -2
  116. package/dist/transport/index.js.map +1 -1
  117. package/dist/transport/index.mjs.map +1 -1
  118. package/dist/{types-DHu7m9HI.d.ts → types-BLUx92FJ.d.ts} +1 -1
  119. package/dist/{types-Djw4GLtz.d.mts → types-DqfPU5Bl.d.mts} +1 -1
  120. package/dist/{types-BntuzEEn.d.mts → types-r850cOt0.d.mts} +121 -88
  121. package/dist/{types-SDu4Llbe.d.ts → types-sMxBT-nM.d.ts} +121 -88
  122. package/dist/ui/index.d.mts +11 -7
  123. package/dist/ui/index.d.ts +11 -7
  124. package/dist/ui/index.js +13 -9
  125. package/dist/ui/index.js.map +1 -1
  126. package/dist/ui/index.mjs +10 -8
  127. package/dist/ui/index.mjs.map +1 -1
  128. package/dist/verify.d.mts +11 -8
  129. package/dist/verify.d.ts +11 -8
  130. package/dist/verify.js +76 -8
  131. package/dist/verify.js.map +1 -1
  132. package/dist/verify.mjs +75 -8
  133. package/dist/verify.mjs.map +1 -1
  134. package/package.json +8 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/index.ts","../../src/ui/commerce-shield.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 { CommerceShield, useCommerceShield } from './commerce-shield';\nexport { CredentialPrompt, useCredentialPrompt } from './credential-prompt';\nexport {\n GuidanceCard,\n TrustLevelBadge,\n AccessLevelIndicator,\n DenialReasons,\n} from './guidance';\n\nexport type { CredentialPromptProps } from './credential-prompt';\nexport type {\n GuidanceCardProps,\n TrustLevelBadgeProps,\n AccessLevelIndicatorProps,\n DenialReasonsProps,\n} from './guidance';\n","/**\n * AstraSync Commerce Shield 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\nimport React from 'react';\nimport type { CommerceShieldProps, VerificationResult } from '../types';\n\n/**\n * Default styles for the Commerce Shield\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 * Commerce Shield overlay component\n */\nexport function CommerceShield({\n visible,\n result,\n onRegister,\n onGuestAccess,\n onDismiss,\n title = 'AstraSync Agent Verification',\n message,\n allowGuestAccess = true,\n className,\n}: CommerceShieldProps): 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=\"commerce-shield-title\"\n >\n <div style={defaultStyles.container}>\n <div style={defaultStyles.icon} aria-hidden=\"true\">\n 🛡️\n </div>\n\n <h1 id=\"commerce-shield-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 Commerce Shield visibility\n */\nexport function useCommerceShield(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 // Round-18 G4: show shield 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, 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"]}
package/dist/ui/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- // src/ui/commerce-shield.tsx
1
+ // src/ui/verification-interstitial.tsx
2
2
  import React from "react";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  var defaultStyles = {
@@ -94,7 +94,7 @@ var defaultStyles = {
94
94
  textDecoration: "none"
95
95
  }
96
96
  };
97
- function CommerceShield({
97
+ function VerificationInterstitial({
98
98
  visible,
99
99
  result,
100
100
  onRegister,
@@ -138,10 +138,10 @@ function CommerceShield({
138
138
  className,
139
139
  role: "dialog",
140
140
  "aria-modal": "true",
141
- "aria-labelledby": "commerce-shield-title",
141
+ "aria-labelledby": "verification-interstitial-title",
142
142
  children: /* @__PURE__ */ jsxs("div", { style: defaultStyles.container, children: [
143
143
  /* @__PURE__ */ jsx("div", { style: defaultStyles.icon, "aria-hidden": "true", children: "\u{1F6E1}\uFE0F" }),
144
- /* @__PURE__ */ jsx("h1", { id: "commerce-shield-title", style: defaultStyles.title, children: title }),
144
+ /* @__PURE__ */ jsx("h1", { id: "verification-interstitial-title", style: defaultStyles.title, children: title }),
145
145
  /* @__PURE__ */ jsx("p", { style: defaultStyles.message, children: displayMessage }),
146
146
  /* @__PURE__ */ jsxs("div", { style: defaultStyles.stepsContainer, children: [
147
147
  /* @__PURE__ */ jsx("h3", { style: defaultStyles.stepsTitle, children: "To get verified access:" }),
@@ -183,7 +183,7 @@ function CommerceShield({
183
183
  }
184
184
  );
185
185
  }
186
- function useCommerceShield(verificationResult) {
186
+ function useVerificationInterstitial(verificationResult) {
187
187
  const [visible, setVisible] = React.useState(false);
188
188
  const [dismissed, setDismissed] = React.useState(false);
189
189
  React.useEffect(() => {
@@ -771,12 +771,14 @@ function DenialReasons({ reasons, className }) {
771
771
  }
772
772
  export {
773
773
  AccessLevelIndicator,
774
- CommerceShield,
774
+ VerificationInterstitial as CommerceShield,
775
775
  CredentialPrompt,
776
776
  DenialReasons,
777
777
  GuidanceCard,
778
778
  TrustLevelBadge,
779
- useCommerceShield,
780
- useCredentialPrompt
779
+ VerificationInterstitial,
780
+ useVerificationInterstitial as useCommerceShield,
781
+ useCredentialPrompt,
782
+ useVerificationInterstitial
781
783
  };
782
784
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/commerce-shield.tsx","../../src/ui/credential-prompt.tsx","../../src/ui/guidance.tsx"],"sourcesContent":["/**\n * AstraSync Commerce Shield 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\nimport React from 'react';\nimport type { CommerceShieldProps, VerificationResult } from '../types';\n\n/**\n * Default styles for the Commerce Shield\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 * Commerce Shield overlay component\n */\nexport function CommerceShield({\n visible,\n result,\n onRegister,\n onGuestAccess,\n onDismiss,\n title = 'AstraSync Agent Verification',\n message,\n allowGuestAccess = true,\n className,\n}: CommerceShieldProps): 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=\"commerce-shield-title\"\n >\n <div style={defaultStyles.container}>\n <div style={defaultStyles.icon} aria-hidden=\"true\">\n 🛡️\n </div>\n\n <h1 id=\"commerce-shield-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 Commerce Shield visibility\n */\nexport function useCommerceShield(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 // Round-18 G4: show shield 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 // 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"]}
package/dist/verify.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { b as AgentCredentials, G as GatewayConfig, a as AccessLevel, e as AttemptReport, V as VerificationRequest, w as VerificationResult } from './types-BntuzEEn.mjs';
1
+ import { b as AgentCredentials, G as GatewayConfig, a as AccessLevel, e as AttemptReport, w as VerificationRequest, x as VerificationResult } from './types-r850cOt0.mjs';
2
2
  import { ObservedMetadata } from './metadata-capture.mjs';
3
3
 
4
4
  /**
@@ -8,6 +8,8 @@ import { ObservedMetadata } from './metadata-capture.mjs';
8
8
  * and processing the response into a standardized VerificationResult.
9
9
  */
10
10
 
11
+ /** Test-only: re-arm the one-time init self-check. */
12
+ declare function _resetInitCheck(): void;
11
13
  /**
12
14
  * Clear the verification cache
13
15
  */
@@ -44,7 +46,7 @@ declare function verify(config: GatewayConfig, request: VerificationRequest, opt
44
46
  declare function recordDecision(config: GatewayConfig, sessionId: string, decision: 'granted' | 'denied', reason?: string): Promise<void>;
45
47
  /**
46
48
  * Report post-hoc consideration/outcome data for an attempt chain (Trust
47
- * Record, §33.5 #3). Use when the signal never reached verify-access: a
49
+ * Record). Use when the signal never reached verify-access: a
48
50
  * catalog served from a local cache, a transport-side deny (sku not found,
49
51
  * over budget), or a terminal outcome (settled / blocked on step-up).
50
52
  * Authenticated with the same credentials as verify(); the backend responds
@@ -81,7 +83,7 @@ interface RouteAccessConfigShape {
81
83
  maxDuration?: number;
82
84
  maxTransactionValue?: number;
83
85
  requirePurpose?: boolean;
84
- /** Send-mapping (Bug 14, §4.6) — see RouteAccessConfig in types.ts. */
86
+ /** Send-mapping — see RouteAccessConfig in types.ts. */
85
87
  purpose?: string;
86
88
  action?: string;
87
89
  }
@@ -111,15 +113,16 @@ declare function reportUnregisteredAttempt(config: GatewayConfig, data: {
111
113
  requestPath?: string;
112
114
  requestMethod?: string;
113
115
  /**
114
- * 3.9.0 (§33.5 #1) — edge-adapter evidence fields, persisted into the
116
+ * 3.9.0 — edge-adapter evidence fields, persisted into the
115
117
  * event's eventData by the backend: `protocol` = detected transport/
116
118
  * credential protocol; `evidence` = light crypto-free detection detail.
117
119
  */
118
120
  protocol?: string;
119
121
  evidence?: Record<string, unknown>;
120
122
  /**
121
- * Workstream D — the full sanitised metadata capture for an unregistered
122
- * caller. Persisted into eventData; feeds platform attribution and (via
123
+ * Maximal metadata capture — the full sanitised metadata for an
124
+ * unregistered caller (every signal legitimately visible on the wire).
125
+ * Persisted into eventData; feeds platform attribution and (via
123
126
  * correlationId) registration auto-fill. Fire-and-forget, so free.
124
127
  */
125
128
  observedMetadata?: ObservedMetadata;
@@ -146,7 +149,7 @@ declare function reportCounterpartyPreCheckFailure(config: GatewayConfig, data:
146
149
  /**
147
150
  * Quick verification — checks credentials and policy in one call.
148
151
  *
149
- * Round-18 G4: return shape mirrors `VerificationResult`'s split — partners
152
+ * The return shape mirrors `VerificationResult`'s split — partners
150
153
  * writing custom handlers around `quickVerify` get the same identity/policy
151
154
  * distinction as those calling `verify()` directly. Map to HTTP status the
152
155
  * same way: `!identityVerified` → 401; `identityVerified && !policyAllowed`
@@ -159,4 +162,4 @@ declare function quickVerify(config: GatewayConfig, credentials: AgentCredential
159
162
  reason?: string;
160
163
  }>;
161
164
 
162
- export { type RouteAccessConfigShape, type VerifyOptions, clearCache, extractCredentials, fetchRoutes, hasCredentials, quickVerify, recordDecision, reportAttempt, reportCounterpartyPreCheckFailure, reportUnregisteredAttempt, verify, verifyAndRecord };
165
+ export { type RouteAccessConfigShape, type VerifyOptions, _resetInitCheck, clearCache, extractCredentials, fetchRoutes, hasCredentials, quickVerify, recordDecision, reportAttempt, reportCounterpartyPreCheckFailure, reportUnregisteredAttempt, verify, verifyAndRecord };
package/dist/verify.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { b as AgentCredentials, G as GatewayConfig, a as AccessLevel, e as AttemptReport, V as VerificationRequest, w as VerificationResult } from './types-SDu4Llbe.js';
1
+ import { b as AgentCredentials, G as GatewayConfig, a as AccessLevel, e as AttemptReport, w as VerificationRequest, x as VerificationResult } from './types-sMxBT-nM.js';
2
2
  import { ObservedMetadata } from './metadata-capture.js';
3
3
 
4
4
  /**
@@ -8,6 +8,8 @@ import { ObservedMetadata } from './metadata-capture.js';
8
8
  * and processing the response into a standardized VerificationResult.
9
9
  */
10
10
 
11
+ /** Test-only: re-arm the one-time init self-check. */
12
+ declare function _resetInitCheck(): void;
11
13
  /**
12
14
  * Clear the verification cache
13
15
  */
@@ -44,7 +46,7 @@ declare function verify(config: GatewayConfig, request: VerificationRequest, opt
44
46
  declare function recordDecision(config: GatewayConfig, sessionId: string, decision: 'granted' | 'denied', reason?: string): Promise<void>;
45
47
  /**
46
48
  * Report post-hoc consideration/outcome data for an attempt chain (Trust
47
- * Record, §33.5 #3). Use when the signal never reached verify-access: a
49
+ * Record). Use when the signal never reached verify-access: a
48
50
  * catalog served from a local cache, a transport-side deny (sku not found,
49
51
  * over budget), or a terminal outcome (settled / blocked on step-up).
50
52
  * Authenticated with the same credentials as verify(); the backend responds
@@ -81,7 +83,7 @@ interface RouteAccessConfigShape {
81
83
  maxDuration?: number;
82
84
  maxTransactionValue?: number;
83
85
  requirePurpose?: boolean;
84
- /** Send-mapping (Bug 14, §4.6) — see RouteAccessConfig in types.ts. */
86
+ /** Send-mapping — see RouteAccessConfig in types.ts. */
85
87
  purpose?: string;
86
88
  action?: string;
87
89
  }
@@ -111,15 +113,16 @@ declare function reportUnregisteredAttempt(config: GatewayConfig, data: {
111
113
  requestPath?: string;
112
114
  requestMethod?: string;
113
115
  /**
114
- * 3.9.0 (§33.5 #1) — edge-adapter evidence fields, persisted into the
116
+ * 3.9.0 — edge-adapter evidence fields, persisted into the
115
117
  * event's eventData by the backend: `protocol` = detected transport/
116
118
  * credential protocol; `evidence` = light crypto-free detection detail.
117
119
  */
118
120
  protocol?: string;
119
121
  evidence?: Record<string, unknown>;
120
122
  /**
121
- * Workstream D — the full sanitised metadata capture for an unregistered
122
- * caller. Persisted into eventData; feeds platform attribution and (via
123
+ * Maximal metadata capture — the full sanitised metadata for an
124
+ * unregistered caller (every signal legitimately visible on the wire).
125
+ * Persisted into eventData; feeds platform attribution and (via
123
126
  * correlationId) registration auto-fill. Fire-and-forget, so free.
124
127
  */
125
128
  observedMetadata?: ObservedMetadata;
@@ -146,7 +149,7 @@ declare function reportCounterpartyPreCheckFailure(config: GatewayConfig, data:
146
149
  /**
147
150
  * Quick verification — checks credentials and policy in one call.
148
151
  *
149
- * Round-18 G4: return shape mirrors `VerificationResult`'s split — partners
152
+ * The return shape mirrors `VerificationResult`'s split — partners
150
153
  * writing custom handlers around `quickVerify` get the same identity/policy
151
154
  * distinction as those calling `verify()` directly. Map to HTTP status the
152
155
  * same way: `!identityVerified` → 401; `identityVerified && !policyAllowed`
@@ -159,4 +162,4 @@ declare function quickVerify(config: GatewayConfig, credentials: AgentCredential
159
162
  reason?: string;
160
163
  }>;
161
164
 
162
- export { type RouteAccessConfigShape, type VerifyOptions, clearCache, extractCredentials, fetchRoutes, hasCredentials, quickVerify, recordDecision, reportAttempt, reportCounterpartyPreCheckFailure, reportUnregisteredAttempt, verify, verifyAndRecord };
165
+ export { type RouteAccessConfigShape, type VerifyOptions, _resetInitCheck, clearCache, extractCredentials, fetchRoutes, hasCredentials, quickVerify, recordDecision, reportAttempt, reportCounterpartyPreCheckFailure, reportUnregisteredAttempt, verify, verifyAndRecord };