{"version":3,"sources":["../typescript/src/core/semantic-dom.ts","../typescript/src/react/context.tsx","../typescript/src/react/index.ts"],"names":["createContext","useMemo","jsx","useContext","useCallback","useState","useEffect","useSyncExternalStore","useRef"],"mappings":"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","file":"react.cjs","sourcesContent":["/**\n * SemanticDOM Core Implementation\n * Provides O(1) lookup and deterministic navigation\n */\n\nimport type {\n  SemanticNode,\n  SemanticId,\n  SemanticDocument,\n  SemanticRole,\n  SemanticIntent,\n  StateType,\n  SemanticQuery,\n  SemanticDOMConfig,\n  NavigationOptions,\n  SemanticA11y,\n  SemanticBounds,\n  SSGNode,\n  StateTransition,\n  AgentCertification,\n  ValidationCheck,\n} from './types.js';\n\n/**\n * SECURITY: Allowed URL protocols for document URLs\n */\nconst ALLOWED_URL_PROTOCOLS = ['https:', 'http:', 'file:'];\n\n/**\n * Validate and sanitize a URL\n * @returns Sanitized URL or empty string if invalid\n */\nfunction validateAndSanitizeUrl(url: string): string {\n  if (!url || typeof url !== 'string') return '';\n\n  try {\n    // Handle relative URLs and special cases\n    if (url === '' || url.startsWith('/') || url.startsWith('./') || url.startsWith('../')) {\n      return url; // Relative URLs are safe\n    }\n\n    const parsed = new URL(url);\n\n    // SECURITY: Only allow safe protocols\n    if (!ALLOWED_URL_PROTOCOLS.includes(parsed.protocol)) {\n      console.warn(`SemanticDOM: Blocked URL with disallowed protocol: ${parsed.protocol}`);\n      return '';\n    }\n\n    // Return the sanitized URL (normalized by URL parser)\n    return parsed.href;\n  } catch {\n    // Invalid URL format - could be a relative path without prefix\n    // Only allow alphanumeric paths and common safe characters\n    if (/^[\\w\\-./]+$/.test(url)) {\n      return url;\n    }\n    return '';\n  }\n}\n\n/**\n * Default configuration for SemanticDOM\n */\nconst DEFAULT_CONFIG: Required<SemanticDOMConfig> = {\n  computeBounds: true,\n  includeStateGraph: true,\n  maxDepth: 50,\n  exclude: ['script', 'style', 'noscript', 'template'],\n  include: [],\n  roleMapping: {},\n  intentMapping: {},\n  generateIds: true,\n  idPrefix: 'sdom',\n  validate: true,\n  targetCertification: 'standard',\n};\n\n/**\n * Role mapping from HTML elements to semantic roles\n */\nconst HTML_ROLE_MAP: Record<string, SemanticRole> = {\n  a: 'link',\n  article: 'article',\n  aside: 'aside',\n  button: 'button',\n  dialog: 'dialog',\n  footer: 'footer',\n  form: 'form',\n  h1: 'heading',\n  h2: 'heading',\n  h3: 'heading',\n  h4: 'heading',\n  h5: 'heading',\n  h6: 'heading',\n  header: 'header',\n  img: 'img',\n  input: 'textbox',\n  li: 'listitem',\n  main: 'main',\n  nav: 'navigation',\n  ol: 'list',\n  option: 'option',\n  section: 'section',\n  select: 'listbox',\n  table: 'table',\n  textarea: 'textbox',\n  ul: 'list',\n};\n\n/**\n * Input type to role mapping\n */\nconst INPUT_ROLE_MAP: Record<string, SemanticRole> = {\n  button: 'button',\n  checkbox: 'checkbox',\n  radio: 'radio',\n  range: 'slider',\n  submit: 'button',\n  reset: 'button',\n};\n\n/**\n * Generate unique semantic ID\n */\nexport function generateSemanticId(\n  prefix: string,\n  role: SemanticRole,\n  index: number\n): SemanticId {\n  const hash = Math.random().toString(36).substring(2, 8);\n  return `sdom-${prefix}-${role}-${index}-${hash}` as SemanticId;\n}\n\n/**\n * SemanticDOM class for parsing and navigating semantic documents\n */\nexport class SemanticDOM {\n  private config: Required<SemanticDOMConfig>;\n  private index: Map<SemanticId, SemanticNode> = new Map();\n  private stateGraph: Map<SemanticId, SSGNode> = new Map();\n  private nodeCounter = 0;\n\n  constructor(config: SemanticDOMConfig = {}) {\n    this.config = { ...DEFAULT_CONFIG, ...config };\n  }\n\n  /**\n   * Parse a DOM element into a SemanticDocument\n   */\n  parse(root: Element, url = '', title = ''): SemanticDocument {\n    this.index.clear();\n    this.stateGraph.clear();\n    this.nodeCounter = 0;\n\n    // SECURITY: Validate and sanitize the URL\n    const sanitizedUrl = validateAndSanitizeUrl(url);\n\n    const semanticRoot = this.parseElement(root, 0);\n\n    const document: SemanticDocument = {\n      version: '1.0.0',\n      standard: 'ISO/IEC-SDOM-SSG-DRAFT-2024',\n      url: sanitizedUrl,\n      title: title || this.extractTitle(root),\n      root: semanticRoot,\n      index: this.index,\n      stateGraph: this.stateGraph,\n      landmarks: this.extractLandmarks(semanticRoot),\n      interactables: this.extractInteractables(semanticRoot),\n      language: this.extractLanguage(root),\n      generatedAt: Date.now(),\n      agentReady: this.config.validate\n        ? this.certify(semanticRoot)\n        : this.createEmptyCertification(),\n    };\n\n    return document;\n  }\n\n  /**\n   * Parse a single element into a SemanticNode\n   */\n  private parseElement(element: Element, depth: number, parentId?: SemanticId): SemanticNode {\n    if (depth > this.config.maxDepth) {\n      return this.createGenericNode(element, parentId);\n    }\n\n    const tagName = element.tagName.toLowerCase();\n\n    // Check exclusions\n    if (this.config.exclude.includes(tagName)) {\n      return this.createGenericNode(element, parentId);\n    }\n\n    const role = this.determineRole(element);\n    const id = generateSemanticId(this.config.idPrefix, role, this.nodeCounter++);\n    const state = this.determineState(element);\n    const intent = this.determineIntent(element, role);\n    const a11y = this.extractA11y(element, role);\n\n    const node: SemanticNode = {\n      id,\n      role,\n      label: this.extractLabel(element, a11y),\n      intent,\n      state,\n      stateFlags: this.extractStateFlags(element),\n      value: this.extractValue(element),\n      element: typeof window !== 'undefined' ? element : undefined,\n      selector: this.generateSelector(element),\n      xpath: this.generateXPath(element),\n      bounds: this.config.computeBounds ? this.computeBounds(element) : undefined,\n      children: [],\n      parent: parentId,\n      a11y,\n      metadata: this.extractMetadata(element),\n      updatedAt: Date.now(),\n    };\n\n    // Index the node for O(1) lookup\n    this.index.set(id, node);\n\n    // Create SSG node if configured\n    if (this.config.includeStateGraph && this.isInteractive(node)) {\n      this.stateGraph.set(id, this.createSSGNode(node));\n    }\n\n    // Parse children\n    const children = Array.from(element.children);\n    node.children = children\n      .filter((child) => !this.config.exclude.includes(child.tagName.toLowerCase()))\n      .map((child) => this.parseElement(child, depth + 1, id));\n\n    return node;\n  }\n\n  /**\n   * Determine semantic role for an element\n   */\n  private determineRole(element: Element): SemanticRole {\n    // Check explicit ARIA role\n    const ariaRole = element.getAttribute('role');\n    if (ariaRole && this.isValidRole(ariaRole)) {\n      return ariaRole as SemanticRole;\n    }\n\n    // Check custom role mapping\n    const tagName = element.tagName.toLowerCase();\n    if (this.config.roleMapping[tagName]) {\n      return this.config.roleMapping[tagName];\n    }\n\n    // Check input type\n    if (tagName === 'input') {\n      const inputType = element.getAttribute('type') || 'text';\n      if (INPUT_ROLE_MAP[inputType]) {\n        return INPUT_ROLE_MAP[inputType];\n      }\n    }\n\n    // Use HTML role map\n    if (HTML_ROLE_MAP[tagName]) {\n      return HTML_ROLE_MAP[tagName];\n    }\n\n    return 'generic';\n  }\n\n  /**\n   * Check if a role string is valid\n   */\n  private isValidRole(role: string): boolean {\n    const validRoles: SemanticRole[] = [\n      'document', 'article', 'section', 'navigation', 'main', 'header', 'footer',\n      'aside', 'form', 'button', 'link', 'textbox', 'checkbox', 'radio', 'listbox',\n      'option', 'menu', 'menuitem', 'dialog', 'alert', 'status', 'progressbar',\n      'slider', 'tablist', 'tab', 'tabpanel', 'tree', 'treeitem', 'grid', 'gridcell',\n      'row', 'rowgroup', 'columnheader', 'rowheader', 'img', 'figure', 'table',\n      'heading', 'list', 'listitem', 'landmark', 'region', 'group', 'separator',\n      'tooltip', 'generic',\n    ];\n    return validRoles.includes(role as SemanticRole);\n  }\n\n  /**\n   * Determine current state of an element\n   */\n  private determineState(element: Element): StateType {\n    if (element.hasAttribute('disabled')) return 'disabled';\n    if (element.getAttribute('aria-disabled') === 'true') return 'disabled';\n    if (element.getAttribute('aria-busy') === 'true') return 'loading';\n    if (element.getAttribute('aria-invalid') === 'true') return 'invalid';\n    if (element.getAttribute('aria-selected') === 'true') return 'selected';\n    if (element.getAttribute('aria-expanded') === 'true') return 'expanded';\n    if (element.getAttribute('aria-expanded') === 'false') return 'collapsed';\n    if (element.getAttribute('aria-checked') === 'true') return 'checked';\n    if (element.getAttribute('aria-checked') === 'false') return 'unchecked';\n    if (element.getAttribute('aria-checked') === 'mixed') return 'indeterminate';\n    if (element.hasAttribute('hidden')) return 'hidden';\n    if (element.getAttribute('aria-hidden') === 'true') return 'hidden';\n\n    return 'idle';\n  }\n\n  /**\n   * Extract state flags from element\n   */\n  private extractStateFlags(element: Element): Partial<Record<StateType, boolean>> | undefined {\n    const flags: Partial<Record<StateType, boolean>> = {};\n\n    if (element.hasAttribute('disabled')) flags.disabled = true;\n    if (element.hasAttribute('readonly')) flags.readonly = true;\n    if (element.hasAttribute('required')) flags.required = true;\n    if (element.getAttribute('aria-required') === 'true') flags.required = true;\n    if (element.getAttribute('aria-readonly') === 'true') flags.readonly = true;\n\n    return Object.keys(flags).length > 0 ? flags : undefined;\n  }\n\n  /**\n   * Determine semantic intent for an element\n   */\n  private determineIntent(element: Element, role: SemanticRole): SemanticIntent | undefined {\n    // Check custom intent mapping\n    const tagName = element.tagName.toLowerCase();\n    if (this.config.intentMapping[tagName]) {\n      return this.config.intentMapping[tagName];\n    }\n\n    // Check data attribute\n    const dataIntent = element.getAttribute('data-semantic-intent');\n    if (dataIntent) {\n      return dataIntent as SemanticIntent;\n    }\n\n    // Infer from role\n    switch (role) {\n      case 'link':\n      case 'navigation':\n        return 'navigate';\n      case 'button':\n        return this.inferButtonIntent(element);\n      case 'textbox':\n        return 'input';\n      case 'checkbox':\n      case 'radio':\n        return 'toggle';\n      case 'listbox':\n      case 'option':\n        return 'select';\n      case 'dialog':\n        return 'open';\n      case 'alert':\n        return 'warn';\n      default:\n        return undefined;\n    }\n  }\n\n  /**\n   * Infer intent from button attributes\n   */\n  private inferButtonIntent(element: Element): SemanticIntent {\n    const type = element.getAttribute('type');\n    const text = element.textContent?.toLowerCase() || '';\n    const ariaLabel = element.getAttribute('aria-label')?.toLowerCase() || '';\n\n    if (type === 'submit') return 'submit';\n    if (text.includes('submit') || ariaLabel.includes('submit')) return 'submit';\n    if (text.includes('search') || ariaLabel.includes('search')) return 'search';\n    if (text.includes('cancel') || ariaLabel.includes('cancel')) return 'cancel';\n    if (text.includes('close') || ariaLabel.includes('close')) return 'close';\n    if (text.includes('delete') || ariaLabel.includes('delete')) return 'delete';\n    if (text.includes('confirm') || ariaLabel.includes('confirm')) return 'confirm';\n\n    return 'toggle';\n  }\n\n  /**\n   * Extract accessibility properties\n   */\n  private extractA11y(element: Element, role: SemanticRole): SemanticA11y {\n    const tagName = element.tagName.toLowerCase();\n\n    return {\n      name: this.computeAccessibleName(element),\n      description: element.getAttribute('aria-describedby')\n        ? this.getDescriptionById(element)\n        : element.getAttribute('aria-description') || undefined,\n      live: this.getLiveRegion(element),\n      atomic: element.getAttribute('aria-atomic') === 'true',\n      busy: element.getAttribute('aria-busy') === 'true',\n      current: this.getCurrentValue(element),\n      keyboardShortcut: element.getAttribute('aria-keyshortcuts') || undefined,\n      tabIndex: element.hasAttribute('tabindex')\n        ? parseInt(element.getAttribute('tabindex') || '0', 10)\n        : undefined,\n      focusable: this.isFocusable(element),\n      inTabOrder: this.isInTabOrder(element),\n      level: role === 'heading' ? this.getHeadingLevel(tagName) : undefined,\n      posInSet: this.getPosInSet(element),\n      setSize: this.getSetSize(element),\n    };\n  }\n\n  /**\n   * Compute accessible name for element\n   */\n  private computeAccessibleName(element: Element): string {\n    // Priority: aria-labelledby > aria-label > native label > content\n    const labelledBy = element.getAttribute('aria-labelledby');\n    if (labelledBy) {\n      const labelElement = element.ownerDocument?.getElementById(labelledBy);\n      if (labelElement) {\n        return labelElement.textContent?.trim() || '';\n      }\n    }\n\n    const ariaLabel = element.getAttribute('aria-label');\n    if (ariaLabel) {\n      return ariaLabel;\n    }\n\n    // Check for associated label (for inputs)\n    const id = element.getAttribute('id');\n    if (id) {\n      const label = element.ownerDocument?.querySelector(`label[for=\"${id}\"]`);\n      if (label) {\n        return label.textContent?.trim() || '';\n      }\n    }\n\n    // Use text content for buttons and links\n    const tagName = element.tagName.toLowerCase();\n    if (['button', 'a'].includes(tagName)) {\n      return element.textContent?.trim() || '';\n    }\n\n    // Use alt for images\n    if (tagName === 'img') {\n      return element.getAttribute('alt') || '';\n    }\n\n    // Use title as fallback\n    return element.getAttribute('title') || '';\n  }\n\n  /**\n   * Get description by aria-describedby\n   */\n  private getDescriptionById(element: Element): string | undefined {\n    const describedBy = element.getAttribute('aria-describedby');\n    if (!describedBy) return undefined;\n\n    const ids = describedBy.split(/\\s+/);\n    const descriptions = ids\n      .map((id) => element.ownerDocument?.getElementById(id)?.textContent?.trim())\n      .filter(Boolean);\n\n    return descriptions.length > 0 ? descriptions.join(' ') : undefined;\n  }\n\n  /**\n   * Get live region type\n   */\n  private getLiveRegion(element: Element): 'off' | 'polite' | 'assertive' | undefined {\n    const live = element.getAttribute('aria-live');\n    if (live === 'polite' || live === 'assertive' || live === 'off') {\n      return live;\n    }\n\n    // Check for implicit live regions\n    const role = element.getAttribute('role');\n    if (role === 'alert') return 'assertive';\n    if (role === 'status') return 'polite';\n\n    return undefined;\n  }\n\n  /**\n   * Get aria-current value\n   */\n  private getCurrentValue(\n    element: Element\n  ): 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false' | undefined {\n    const current = element.getAttribute('aria-current');\n    if (!current) return undefined;\n\n    const validValues = ['page', 'step', 'location', 'date', 'time', 'true', 'false'] as const;\n    return validValues.includes(current as (typeof validValues)[number])\n      ? (current as (typeof validValues)[number])\n      : undefined;\n  }\n\n  /**\n   * Check if element is focusable\n   */\n  private isFocusable(element: Element): boolean {\n    const tagName = element.tagName.toLowerCase();\n    const focusableTags = ['a', 'button', 'input', 'select', 'textarea'];\n    const tabIndex = element.getAttribute('tabindex');\n\n    if (element.hasAttribute('disabled')) return false;\n    if (tabIndex === '-1') return true; // Programmatically focusable\n    if (focusableTags.includes(tagName)) return true;\n    if (tabIndex !== null) return true;\n    if (element.getAttribute('contenteditable') === 'true') return true;\n\n    return false;\n  }\n\n  /**\n   * Check if element is in tab order\n   */\n  private isInTabOrder(element: Element): boolean {\n    const tabIndex = element.getAttribute('tabindex');\n\n    if (element.hasAttribute('disabled')) return false;\n    if (tabIndex === '-1') return false;\n    if (this.isFocusable(element)) return true;\n\n    return false;\n  }\n\n  /**\n   * Get heading level from tag name\n   */\n  private getHeadingLevel(tagName: string): number | undefined {\n    const match = tagName.match(/^h([1-6])$/);\n    return match ? parseInt(match[1], 10) : undefined;\n  }\n\n  /**\n   * Get position in set\n   */\n  private getPosInSet(element: Element): number | undefined {\n    const posInSet = element.getAttribute('aria-posinset');\n    return posInSet ? parseInt(posInSet, 10) : undefined;\n  }\n\n  /**\n   * Get set size\n   */\n  private getSetSize(element: Element): number | undefined {\n    const setSize = element.getAttribute('aria-setsize');\n    return setSize ? parseInt(setSize, 10) : undefined;\n  }\n\n  /**\n   * Extract label for node\n   */\n  private extractLabel(element: Element, a11y: SemanticA11y): string {\n    if (a11y.name) return a11y.name;\n\n    const tagName = element.tagName.toLowerCase();\n    const role = element.getAttribute('role');\n\n    // Use tag name as fallback\n    return role || tagName;\n  }\n\n  /**\n   * Extract value from interactive elements\n   */\n  private extractValue(element: Element): string | number | boolean | undefined {\n    const tagName = element.tagName.toLowerCase();\n\n    if (tagName === 'input') {\n      const type = element.getAttribute('type') || 'text';\n      const value = element.getAttribute('value');\n\n      if (type === 'checkbox' || type === 'radio') {\n        return (element as HTMLInputElement).checked;\n      }\n      if (type === 'number' || type === 'range') {\n        return value ? parseFloat(value) : undefined;\n      }\n      return value || undefined;\n    }\n\n    if (tagName === 'textarea' || tagName === 'select') {\n      return element.textContent?.trim() || undefined;\n    }\n\n    // Check aria-valuenow for sliders\n    const valueNow = element.getAttribute('aria-valuenow');\n    if (valueNow) {\n      return parseFloat(valueNow);\n    }\n\n    return undefined;\n  }\n\n  /**\n   * Generate CSS selector for element\n   */\n  private generateSelector(element: Element): string {\n    const parts: string[] = [];\n    let current: Element | null = element;\n\n    while (current && current !== current.ownerDocument?.documentElement) {\n      let selector = current.tagName.toLowerCase();\n\n      if (current.id) {\n        selector = `#${CSS.escape(current.id)}`;\n        parts.unshift(selector);\n        break;\n      }\n\n      const classes = Array.from(current.classList);\n      if (classes.length > 0) {\n        selector += `.${classes.map((c) => CSS.escape(c)).join('.')}`;\n      }\n\n      // Add nth-child for disambiguation\n      const parent = current.parentElement;\n      if (parent) {\n        const siblings = Array.from(parent.children).filter(\n          (s) => s.tagName === current!.tagName\n        );\n        if (siblings.length > 1) {\n          const index = siblings.indexOf(current) + 1;\n          selector += `:nth-of-type(${index})`;\n        }\n      }\n\n      parts.unshift(selector);\n      current = current.parentElement;\n    }\n\n    return parts.join(' > ');\n  }\n\n  /**\n   * Generate XPath for element\n   */\n  private generateXPath(element: Element): string {\n    const parts: string[] = [];\n    let current: Element | null = element;\n\n    while (current && current.nodeType === 1) {\n      let index = 1;\n      let sibling: Element | null = current.previousElementSibling;\n\n      while (sibling) {\n        if (sibling.tagName === current.tagName) {\n          index++;\n        }\n        sibling = sibling.previousElementSibling;\n      }\n\n      const tagName = current.tagName.toLowerCase();\n      parts.unshift(`${tagName}[${index}]`);\n      current = current.parentElement;\n    }\n\n    return '/' + parts.join('/');\n  }\n\n  /**\n   * Compute bounding box for element\n   */\n  private computeBounds(element: Element): SemanticBounds | undefined {\n    if (typeof window === 'undefined') return undefined;\n\n    try {\n      const rect = element.getBoundingClientRect();\n      return {\n        x: rect.x,\n        y: rect.y,\n        width: rect.width,\n        height: rect.height,\n        top: rect.top,\n        right: rect.right,\n        bottom: rect.bottom,\n        left: rect.left,\n      };\n    } catch {\n      return undefined;\n    }\n  }\n\n  /**\n   * Extract custom metadata from element\n   */\n  private extractMetadata(element: Element): Record<string, unknown> | undefined {\n    const metadata: Record<string, unknown> = {};\n\n    // Extract data-semantic-* attributes\n    Array.from(element.attributes)\n      .filter((attr) => attr.name.startsWith('data-semantic-'))\n      .forEach((attr) => {\n        const key = attr.name.replace('data-semantic-', '');\n        try {\n          metadata[key] = JSON.parse(attr.value);\n        } catch {\n          metadata[key] = attr.value;\n        }\n      });\n\n    return Object.keys(metadata).length > 0 ? metadata : undefined;\n  }\n\n  /**\n   * Check if node is interactive\n   */\n  private isInteractive(node: SemanticNode): boolean {\n    const interactiveRoles: SemanticRole[] = [\n      'button', 'link', 'textbox', 'checkbox', 'radio', 'listbox', 'option',\n      'menu', 'menuitem', 'slider', 'tab', 'treeitem', 'gridcell',\n    ];\n    return interactiveRoles.includes(node.role);\n  }\n\n  /**\n   * Create SSG node for state management\n   */\n  private createSSGNode(node: SemanticNode): SSGNode {\n    return {\n      semanticId: node.id,\n      currentState: node.state,\n      transitions: this.inferTransitions(node),\n      history: [],\n      maxHistory: 100,\n      relations: [],\n    };\n  }\n\n  /**\n   * Infer state transitions based on role and current state\n   */\n  private inferTransitions(node: SemanticNode): StateTransition[] {\n    const transitions: StateTransition[] = [];\n\n    switch (node.role) {\n      case 'button':\n        transitions.push(\n          { from: 'idle', to: 'loading', trigger: 'submit', actions: [{ type: 'emit', payload: 'click' }] },\n          { from: 'loading', to: 'success', trigger: 'complete' },\n          { from: 'loading', to: 'error', trigger: 'fail' },\n          { from: 'success', to: 'idle', trigger: 'reset' },\n          { from: 'error', to: 'idle', trigger: 'dismiss' }\n        );\n        break;\n\n      case 'checkbox':\n      case 'radio':\n        transitions.push(\n          { from: 'unchecked', to: 'checked', trigger: 'toggle' },\n          { from: 'checked', to: 'unchecked', trigger: 'toggle' }\n        );\n        break;\n\n      case 'textbox':\n        transitions.push(\n          { from: 'idle', to: 'focused', trigger: 'input' },\n          { from: 'focused', to: 'valid', trigger: 'validate' },\n          { from: 'focused', to: 'invalid', trigger: 'validate' },\n          { from: 'valid', to: 'idle', trigger: 'blur' },\n          { from: 'invalid', to: 'idle', trigger: 'blur' }\n        );\n        break;\n\n      default:\n        transitions.push(\n          { from: 'idle', to: 'focused', trigger: 'focus' },\n          { from: 'focused', to: 'idle', trigger: 'blur' }\n        );\n    }\n\n    return transitions;\n  }\n\n  /**\n   * Create a generic node for excluded/hidden elements\n   */\n  private createGenericNode(element: Element, parentId?: SemanticId): SemanticNode {\n    const id = generateSemanticId(this.config.idPrefix, 'generic', this.nodeCounter++);\n\n    return {\n      id,\n      role: 'generic',\n      label: element.tagName.toLowerCase(),\n      state: 'hidden',\n      selector: this.generateSelector(element),\n      xpath: this.generateXPath(element),\n      children: [],\n      parent: parentId,\n      a11y: {\n        name: '',\n        focusable: false,\n        inTabOrder: false,\n      },\n      updatedAt: Date.now(),\n    };\n  }\n\n  /**\n   * Extract document title\n   */\n  private extractTitle(root: Element): string {\n    const doc = root.ownerDocument;\n    if (doc) {\n      return doc.title || '';\n    }\n    return '';\n  }\n\n  /**\n   * Extract document language\n   */\n  private extractLanguage(root: Element): string {\n    const doc = root.ownerDocument;\n    if (doc) {\n      return doc.documentElement.lang || 'en';\n    }\n    return 'en';\n  }\n\n  /**\n   * Extract landmark elements\n   */\n  private extractLandmarks(root: SemanticNode): SemanticNode[] {\n    const landmarkRoles: SemanticRole[] = [\n      'main', 'navigation', 'header', 'footer', 'aside', 'section', 'article',\n    ];\n\n    return this.query(root, { role: landmarkRoles, deep: true });\n  }\n\n  /**\n   * Extract interactive elements\n   */\n  private extractInteractables(root: SemanticNode): SemanticNode[] {\n    return this.query(root, { interactive: true, deep: true });\n  }\n\n  /**\n   * Query semantic nodes\n   */\n  query(root: SemanticNode, query: SemanticQuery): SemanticNode[] {\n    const results: SemanticNode[] = [];\n\n    const matches = (node: SemanticNode): boolean => {\n      if (query.role) {\n        const roles = Array.isArray(query.role) ? query.role : [query.role];\n        if (!roles.includes(node.role)) return false;\n      }\n\n      if (query.intent) {\n        const intents = Array.isArray(query.intent) ? query.intent : [query.intent];\n        if (!node.intent || !intents.includes(node.intent)) return false;\n      }\n\n      if (query.state) {\n        const states = Array.isArray(query.state) ? query.state : [query.state];\n        if (!states.includes(node.state)) return false;\n      }\n\n      if (query.text) {\n        const text = node.label || '';\n        if (typeof query.text === 'string') {\n          if (!text.toLowerCase().includes(query.text.toLowerCase())) return false;\n        } else if (!query.text.test(text)) {\n          return false;\n        }\n      }\n\n      if (query.interactive && !this.isInteractive(node)) return false;\n      if (query.visible && node.state === 'hidden') return false;\n      if (query.focusable && !node.a11y.focusable) return false;\n      if (query.filter && !query.filter(node)) return false;\n\n      return true;\n    };\n\n    const traverse = (node: SemanticNode) => {\n      if (matches(node)) {\n        results.push(node);\n        if (query.limit && results.length >= query.limit) return;\n      }\n\n      if (query.deep !== false) {\n        for (const child of node.children) {\n          if (query.limit && results.length >= query.limit) break;\n          traverse(child);\n        }\n      }\n    };\n\n    traverse(root);\n    return results;\n  }\n\n  /**\n   * Navigate to next semantic node\n   */\n  navigate(\n    document: SemanticDocument,\n    currentId: SemanticId,\n    options: NavigationOptions\n  ): SemanticNode | null {\n    const current = document.index.get(currentId);\n    if (!current) return null;\n\n    const { direction, filter, wrap, skipHidden, focusableOnly } = options;\n\n    const isValid = (node: SemanticNode): boolean => {\n      if (skipHidden && node.state === 'hidden') return false;\n      if (focusableOnly && !node.a11y.focusable) return false;\n      if (filter) {\n        const matches = this.query(node, { ...filter, deep: false });\n        if (matches.length === 0) return false;\n      }\n      return true;\n    };\n\n    switch (direction) {\n      case 'parent':\n        if (!current.parent) return null;\n        return document.index.get(current.parent) || null;\n\n      case 'firstChild':\n        return current.children.find(isValid) || null;\n\n      case 'lastChild':\n        return [...current.children].reverse().find(isValid) || null;\n\n      case 'nextSibling':\n      case 'previousSibling': {\n        const parent = current.parent ? document.index.get(current.parent) : null;\n        if (!parent) return null;\n\n        const siblings = parent.children;\n        const index = siblings.findIndex((s) => s.id === currentId);\n        if (index === -1) return null;\n\n        if (direction === 'nextSibling') {\n          const next = siblings.slice(index + 1).find(isValid);\n          return next || (wrap ? siblings.find(isValid) : null) || null;\n        } else {\n          const prev = siblings.slice(0, index).reverse().find(isValid);\n          return prev || (wrap ? [...siblings].reverse().find(isValid) : null) || null;\n        }\n      }\n\n      case 'next':\n      case 'previous':\n      case 'first':\n      case 'last': {\n        const all = this.flattenTree(document.root).filter(isValid);\n        if (all.length === 0) return null;\n\n        if (direction === 'first') return all[0];\n        if (direction === 'last') return all[all.length - 1];\n\n        const index = all.findIndex((n) => n.id === currentId);\n        if (index === -1) return null;\n\n        if (direction === 'next') {\n          return all[index + 1] || (wrap ? all[0] : null);\n        } else {\n          return all[index - 1] || (wrap ? all[all.length - 1] : null);\n        }\n      }\n    }\n  }\n\n  /**\n   * Flatten tree to array\n   */\n  private flattenTree(root: SemanticNode): SemanticNode[] {\n    const result: SemanticNode[] = [root];\n    for (const child of root.children) {\n      result.push(...this.flattenTree(child));\n    }\n    return result;\n  }\n\n  /**\n   * Get node by ID (O(1) lookup)\n   */\n  getById(document: SemanticDocument, id: SemanticId): SemanticNode | undefined {\n    return document.index.get(id);\n  }\n\n  /**\n   * Certify document for agent readiness\n   * Uses completeness-based scoring for more meaningful results\n   */\n  private certify(root: SemanticNode): AgentCertification {\n    const checks: ValidationCheck[] = [];\n\n    // Structure checks\n    checks.push(this.checkStructure(root));\n    checks.push(this.checkLandmarks(root));\n\n    // Accessibility checks\n    checks.push(this.checkAccessibleNames(root));\n    checks.push(this.checkHeadingHierarchy(root));\n    checks.push(this.checkKeyboardNav(root));\n\n    // Navigation checks\n    checks.push(this.checkUniqueIds(root));\n    checks.push(this.checkSelectors(root));\n\n    // State checks\n    checks.push(this.checkStateTransitions(root));\n\n    // Interoperability checks\n    checks.push(this.checkSemanticIntent(root));\n\n    const passed = checks.filter((c) => c.passed);\n    const failures = checks.filter((c) => !c.passed);\n\n    // Calculate completeness-based score (weighted by importance)\n    const score = this.calculateCompletenessScore(root, checks);\n\n    let level: AgentCertification['level'] = 'none';\n    if (score >= 90) level = 'full';\n    else if (score >= 80) level = 'advanced';\n    else if (score >= 70) level = 'standard';\n    else if (score >= 50) level = 'basic';\n\n    return {\n      level,\n      checks: passed,\n      failures,\n      score,\n      certifiedAt: Date.now(),\n    };\n  }\n\n  /**\n   * Calculate completeness score based on actual content quality\n   * Weights: Structure (30%) + A11y (30%) + Navigation (25%) + Interop (15%)\n   */\n  private calculateCompletenessScore(\n    root: SemanticNode,\n    checks: ValidationCheck[]\n  ): number {\n    const weights = {\n      structure: 0.30,\n      a11y: 0.30,\n      navigation: 0.25,\n      interoperability: 0.15,\n    };\n\n    const categoryScores: Record<string, { score: number; count: number }> = {\n      structure: { score: 0, count: 0 },\n      a11y: { score: 0, count: 0 },\n      navigation: { score: 0, count: 0 },\n      interoperability: { score: 0, count: 0 },\n      state: { score: 0, count: 0 },\n    };\n\n    // Score checks by category\n    for (const check of checks) {\n      const category = check.category || 'navigation';\n      if (categoryScores[category]) {\n        categoryScores[category].count++;\n        categoryScores[category].score += check.passed ? 1 : 0;\n      }\n    }\n\n    // Add bonus for content completeness\n    const all = this.flattenTree(root);\n    const withLabels = all.filter((n) => n.label && n.label !== n.role);\n    const withSelectors = all.filter((n) => n.selector);\n    const withIntent = all.filter((n) => n.intent);\n    const interactive = all.filter((n) => this.isInteractive(n));\n    const withA11yNames = interactive.filter((n) => n.a11y.name);\n\n    // Content completeness factors\n    const labelCompleteness = all.length > 0 ? withLabels.length / all.length : 0;\n    const selectorCompleteness = all.length > 0 ? withSelectors.length / all.length : 0;\n    const intentCompleteness = interactive.length > 0 ? withIntent.length / interactive.length : 1;\n    const a11yCompleteness = interactive.length > 0 ? withA11yNames.length / interactive.length : 1;\n\n    // Calculate weighted category scores\n    let weightedScore = 0;\n    let totalWeight = 0;\n\n    for (const [category, weight] of Object.entries(weights)) {\n      const catData = categoryScores[category] || categoryScores.navigation;\n      if (catData.count > 0) {\n        weightedScore += (catData.score / catData.count) * weight;\n        totalWeight += weight;\n      }\n    }\n\n    // Normalize weighted score\n    const baseScore = totalWeight > 0 ? (weightedScore / totalWeight) * 70 : 0;\n\n    // Add completeness bonuses (up to 30 points)\n    const completenessBonus =\n      (labelCompleteness * 8) +\n      (selectorCompleteness * 7) +\n      (intentCompleteness * 8) +\n      (a11yCompleteness * 7);\n\n    return Math.min(100, Math.round(baseScore + completenessBonus));\n  }\n\n  /**\n   * Create empty certification\n   */\n  private createEmptyCertification(): AgentCertification {\n    return {\n      level: 'none',\n      checks: [],\n      failures: [],\n      score: 0,\n    };\n  }\n\n  /**\n   * Check document structure\n   */\n  private checkStructure(root: SemanticNode): ValidationCheck {\n    const hasMain = this.query(root, { role: 'main', deep: true }).length > 0;\n    return {\n      id: 'structure-main',\n      name: 'Main landmark present',\n      category: 'structure',\n      passed: hasMain,\n      message: hasMain\n        ? 'Document has main landmark'\n        : 'Document should have a main landmark',\n      severity: hasMain ? undefined : 'warning',\n    };\n  }\n\n  /**\n   * Check for proper landmarks\n   */\n  private checkLandmarks(root: SemanticNode): ValidationCheck {\n    const landmarks = this.query(root, {\n      role: ['main', 'navigation', 'header', 'footer'],\n      deep: true,\n    });\n    const hasEnough = landmarks.length >= 2;\n    return {\n      id: 'structure-landmarks',\n      name: 'Sufficient landmarks',\n      category: 'structure',\n      passed: hasEnough,\n      message: hasEnough\n        ? `Found ${landmarks.length} landmarks`\n        : 'Document should have at least 2 landmarks',\n      severity: hasEnough ? undefined : 'warning',\n    };\n  }\n\n  /**\n   * Check accessible names\n   */\n  private checkAccessibleNames(root: SemanticNode): ValidationCheck {\n    const interactables = this.query(root, { interactive: true, deep: true });\n    const withNames = interactables.filter((n) => n.a11y.name.length > 0);\n    const allNamed = interactables.length === 0 || withNames.length === interactables.length;\n\n    return {\n      id: 'a11y-names',\n      name: 'Interactive elements have accessible names',\n      category: 'a11y',\n      passed: allNamed,\n      message: allNamed\n        ? 'All interactive elements have accessible names'\n        : `${interactables.length - withNames.length} interactive elements missing accessible names`,\n      severity: allNamed ? undefined : 'error',\n      nodes: interactables.filter((n) => n.a11y.name.length === 0).map((n) => n.id),\n    };\n  }\n\n  /**\n   * Check heading hierarchy\n   */\n  private checkHeadingHierarchy(root: SemanticNode): ValidationCheck {\n    const headings = this.query(root, { role: 'heading', deep: true });\n    let valid = true;\n    let lastLevel = 0;\n\n    for (const heading of headings) {\n      const level = heading.a11y.level || 1;\n      if (level > lastLevel + 1) {\n        valid = false;\n        break;\n      }\n      lastLevel = level;\n    }\n\n    return {\n      id: 'a11y-headings',\n      name: 'Heading hierarchy valid',\n      category: 'a11y',\n      passed: valid,\n      message: valid\n        ? 'Heading levels follow proper hierarchy'\n        : 'Heading levels skip levels (e.g., h1 to h3)',\n      severity: valid ? undefined : 'warning',\n    };\n  }\n\n  /**\n   * Check keyboard navigation\n   */\n  private checkKeyboardNav(root: SemanticNode): ValidationCheck {\n    const focusable = this.query(root, { focusable: true, deep: true });\n    const inTabOrder = focusable.filter((n) => n.a11y.inTabOrder);\n    const hasNav = inTabOrder.length > 0;\n\n    return {\n      id: 'navigation-keyboard',\n      name: 'Keyboard navigation available',\n      category: 'navigation',\n      passed: hasNav,\n      message: hasNav\n        ? `${inTabOrder.length} elements in tab order`\n        : 'No elements in keyboard tab order',\n      severity: hasNav ? undefined : 'error',\n    };\n  }\n\n  /**\n   * Check unique IDs\n   */\n  private checkUniqueIds(root: SemanticNode): ValidationCheck {\n    const ids = new Set<SemanticId>();\n    const duplicates: SemanticId[] = [];\n\n    const traverse = (node: SemanticNode) => {\n      if (ids.has(node.id)) {\n        duplicates.push(node.id);\n      }\n      ids.add(node.id);\n      node.children.forEach(traverse);\n    };\n\n    traverse(root);\n    const unique = duplicates.length === 0;\n\n    return {\n      id: 'navigation-unique-ids',\n      name: 'All semantic IDs unique',\n      category: 'navigation',\n      passed: unique,\n      message: unique ? 'All IDs are unique' : `${duplicates.length} duplicate IDs found`,\n      severity: unique ? undefined : 'critical',\n      nodes: duplicates,\n    };\n  }\n\n  /**\n   * Check selectors work\n   */\n  private checkSelectors(root: SemanticNode): ValidationCheck {\n    // In browser, we could verify selectors. Here we just check they're not empty.\n    const all = this.flattenTree(root);\n    const withSelectors = all.filter((n) => n.selector && n.selector.length > 0);\n    const valid = withSelectors.length === all.length;\n\n    return {\n      id: 'navigation-selectors',\n      name: 'All nodes have valid selectors',\n      category: 'navigation',\n      passed: valid,\n      message: valid\n        ? 'All nodes have CSS selectors'\n        : `${all.length - withSelectors.length} nodes missing selectors`,\n      severity: valid ? undefined : 'error',\n    };\n  }\n\n  /**\n   * Check state transitions\n   */\n  private checkStateTransitions(root: SemanticNode): ValidationCheck {\n    const interactive = this.query(root, { interactive: true, deep: true });\n    const withStates = interactive.filter((n) => this.stateGraph.has(n.id));\n    const coverage = interactive.length > 0 ? withStates.length / interactive.length : 1;\n    const good = coverage >= 0.8;\n\n    return {\n      id: 'state-transitions',\n      name: 'State transitions defined',\n      category: 'state',\n      passed: good,\n      message: good\n        ? `${Math.round(coverage * 100)}% state coverage`\n        : 'Insufficient state transition coverage',\n      severity: good ? undefined : 'warning',\n    };\n  }\n\n  /**\n   * Check semantic intents\n   */\n  private checkSemanticIntent(root: SemanticNode): ValidationCheck {\n    const interactive = this.query(root, { interactive: true, deep: true });\n    const withIntent = interactive.filter((n) => n.intent);\n    const coverage = interactive.length > 0 ? withIntent.length / interactive.length : 1;\n    const good = coverage >= 0.7;\n\n    return {\n      id: 'interop-intent',\n      name: 'Semantic intents defined',\n      category: 'interoperability',\n      passed: good,\n      message: good\n        ? `${Math.round(coverage * 100)}% intent coverage`\n        : 'Many interactive elements lack semantic intent',\n      severity: good ? undefined : 'info',\n    };\n  }\n}\n\n/**\n * Create a new SemanticDOM instance\n */\nexport function createSemanticDOM(config?: SemanticDOMConfig): SemanticDOM {\n  return new SemanticDOM(config);\n}\n\n/**\n * Parse an element directly\n */\nexport function parseElement(\n  element: Element,\n  config?: SemanticDOMConfig\n): SemanticDocument {\n  const sdom = createSemanticDOM(config);\n  return sdom.parse(element);\n}\n","/**\n * SemanticDOM React Context\n * Provides global context for SemanticDOM configuration and state\n */\n\nimport { createContext, useContext, useMemo, type ReactNode } from 'react';\nimport type { SemanticDOMConfig, SemanticDocument } from '../core/types.js';\nimport { SemanticDOM, createSemanticDOM } from '../core/semantic-dom.js';\n\n/**\n * Context value type\n */\ninterface SemanticDOMContextValue {\n  sdom: SemanticDOM;\n  config: SemanticDOMConfig;\n  document: SemanticDocument | null;\n  setDocument: (doc: SemanticDocument | null) => void;\n}\n\n/**\n * Default context value\n */\nconst defaultContextValue: SemanticDOMContextValue = {\n  sdom: createSemanticDOM(),\n  config: {},\n  document: null,\n  setDocument: () => {},\n};\n\n/**\n * SemanticDOM Context\n */\nconst SemanticDOMContext = createContext<SemanticDOMContextValue>(defaultContextValue);\n\n/**\n * Provider props\n */\ninterface SemanticDOMProviderProps {\n  children: ReactNode;\n  config?: SemanticDOMConfig;\n  document?: SemanticDocument | null;\n  onDocumentChange?: (doc: SemanticDocument | null) => void;\n}\n\n/**\n * SemanticDOM Provider component\n */\nexport function SemanticDOMProvider({\n  children,\n  config = {},\n  document = null,\n  onDocumentChange,\n}: SemanticDOMProviderProps): JSX.Element {\n  const sdom = useMemo(() => createSemanticDOM(config), [config]);\n\n  const value = useMemo(\n    () => ({\n      sdom,\n      config,\n      document,\n      setDocument: onDocumentChange || (() => {}),\n    }),\n    [sdom, config, document, onDocumentChange]\n  );\n\n  return (\n    <SemanticDOMContext.Provider value={value}>\n      {children}\n    </SemanticDOMContext.Provider>\n  );\n}\n\n/**\n * Hook to access SemanticDOM context\n */\nexport function useSemanticDOMContext(): SemanticDOMContextValue {\n  const context = useContext(SemanticDOMContext);\n\n  if (context === defaultContextValue) {\n    console.warn(\n      'useSemanticDOMContext must be used within a SemanticDOMProvider. Using default context.'\n    );\n  }\n\n  return context;\n}\n","/**\n * SemanticDOM React Hooks\n * Provides React integration for SemanticDOM and Semantic State Graph\n *\n * @packageDocumentation\n */\n\nimport { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport type {\n  SemanticDocument,\n  SemanticNode,\n  SemanticId,\n  SemanticQuery,\n  SemanticDOMConfig,\n  SSGNode,\n  StateType,\n  StateTransition,\n  NavigationOptions,\n} from '../core/types.js';\nimport { SemanticDOM, createSemanticDOM } from '../core/semantic-dom.js';\n\n/**\n * Hook to create and use a SemanticDOM instance\n */\nexport function useSemanticDOM(\n  config?: SemanticDOMConfig\n): {\n  sdom: SemanticDOM;\n  parse: (element: Element, url?: string, title?: string) => SemanticDocument;\n  query: (root: SemanticNode, query: SemanticQuery) => SemanticNode[];\n  getById: (document: SemanticDocument, id: SemanticId) => SemanticNode | undefined;\n  navigate: (\n    document: SemanticDocument,\n    currentId: SemanticId,\n    options: NavigationOptions\n  ) => SemanticNode | null;\n} {\n  const sdom = useMemo(() => createSemanticDOM(config), [config]);\n\n  const parse = useCallback(\n    (element: Element, url?: string, title?: string) => sdom.parse(element, url, title),\n    [sdom]\n  );\n\n  const query = useCallback(\n    (root: SemanticNode, q: SemanticQuery) => sdom.query(root, q),\n    [sdom]\n  );\n\n  const getById = useCallback(\n    (document: SemanticDocument, id: SemanticId) => sdom.getById(document, id),\n    [sdom]\n  );\n\n  const navigate = useCallback(\n    (document: SemanticDocument, currentId: SemanticId, options: NavigationOptions) =>\n      sdom.navigate(document, currentId, options),\n    [sdom]\n  );\n\n  return { sdom, parse, query, getById, navigate };\n}\n\n/**\n * Hook to parse a DOM element ref into a SemanticDocument\n */\nexport function useSemanticDocument(\n  ref: React.RefObject<Element>,\n  config?: SemanticDOMConfig,\n  deps: unknown[] = []\n): SemanticDocument | null {\n  const { parse } = useSemanticDOM(config);\n  const [document, setDocument] = useState<SemanticDocument | null>(null);\n\n  useEffect(() => {\n    if (ref.current) {\n      const url = typeof window !== 'undefined' ? window.location.href : '';\n      const title = typeof window !== 'undefined' ? window.document.title : '';\n      setDocument(parse(ref.current, url, title));\n    }\n  }, [ref, parse, deps]);\n\n  return document;\n}\n\n/**\n * Hook to query semantic nodes reactively\n */\nexport function useSemanticQuery(\n  document: SemanticDocument | null,\n  query: SemanticQuery,\n  deps: unknown[] = []\n): SemanticNode[] {\n  const { query: queryFn } = useSemanticDOM();\n\n  return useMemo(() => {\n    if (!document) return [];\n    return queryFn(document.root, query);\n  }, [document, queryFn, query, deps]);\n}\n\n/**\n * Hook to get a specific node by ID with O(1) lookup\n */\nexport function useSemanticNode(\n  document: SemanticDocument | null,\n  id: SemanticId | undefined\n): SemanticNode | null {\n  const { getById } = useSemanticDOM();\n\n  return useMemo(() => {\n    if (!document || !id) return null;\n    return getById(document, id) ?? null;\n  }, [document, id, getById]);\n}\n\n/**\n * Hook for deterministic keyboard navigation\n */\nexport function useSemanticNavigation(\n  document: SemanticDocument | null,\n  options?: Partial<NavigationOptions>\n): {\n  currentId: SemanticId | null;\n  setCurrentId: (id: SemanticId | null) => void;\n  currentNode: SemanticNode | null;\n  goNext: () => void;\n  goPrevious: () => void;\n  goFirst: () => void;\n  goLast: () => void;\n  goParent: () => void;\n  goFirstChild: () => void;\n  goNextSibling: () => void;\n  goPreviousSibling: () => void;\n} {\n  const { navigate, getById } = useSemanticDOM();\n  const [currentId, setCurrentId] = useState<SemanticId | null>(null);\n\n  const currentNode = useMemo(() => {\n    if (!document || !currentId) return null;\n    return getById(document, currentId) ?? null;\n  }, [document, currentId, getById]);\n\n  const createNavigator = useCallback(\n    (direction: NavigationOptions['direction']) => () => {\n      if (!document || !currentId) return;\n      const next = navigate(document, currentId, {\n        direction,\n        ...options,\n      });\n      if (next) {\n        setCurrentId(next.id);\n      }\n    },\n    [document, currentId, navigate, options]\n  );\n\n  return {\n    currentId,\n    setCurrentId,\n    currentNode,\n    goNext: createNavigator('next'),\n    goPrevious: createNavigator('previous'),\n    goFirst: createNavigator('first'),\n    goLast: createNavigator('last'),\n    goParent: createNavigator('parent'),\n    goFirstChild: createNavigator('firstChild'),\n    goNextSibling: createNavigator('nextSibling'),\n    goPreviousSibling: createNavigator('previousSibling'),\n  };\n}\n\n/**\n * Store for SSG state management\n */\nclass SSGStore {\n  private state: Map<SemanticId, StateType> = new Map();\n  private history: Map<SemanticId, Array<{ from: StateType; to: StateType; timestamp: number }>> =\n    new Map();\n  private listeners: Set<() => void> = new Set();\n\n  getState(id: SemanticId): StateType | undefined {\n    return this.state.get(id);\n  }\n\n  getHistory(id: SemanticId): Array<{ from: StateType; to: StateType; timestamp: number }> {\n    return this.history.get(id) || [];\n  }\n\n  setState(id: SemanticId, newState: StateType): void {\n    const currentState = this.state.get(id) || 'idle';\n    if (currentState === newState) return;\n\n    this.state.set(id, newState);\n\n    // Update history\n    const hist = this.history.get(id) || [];\n    hist.push({ from: currentState, to: newState, timestamp: Date.now() });\n    if (hist.length > 100) hist.shift();\n    this.history.set(id, hist);\n\n    this.emit();\n  }\n\n  transition(id: SemanticId, trigger: string, transitions: StateTransition[]): boolean {\n    const currentState = this.state.get(id) || 'idle';\n    const transition = transitions.find(\n      (t) => t.from === currentState && t.trigger === trigger\n    );\n\n    if (transition) {\n      this.setState(id, transition.to);\n      return true;\n    }\n    return false;\n  }\n\n  subscribe(listener: () => void): () => void {\n    this.listeners.add(listener);\n    return () => this.listeners.delete(listener);\n  }\n\n  private emit(): void {\n    this.listeners.forEach((l) => l());\n  }\n\n  getSnapshot(): Map<SemanticId, StateType> {\n    return new Map(this.state);\n  }\n}\n\n// Global store instance\nconst globalSSGStore = new SSGStore();\n\n/**\n * Hook for SSG state management\n */\nexport function useSSG(\n  id: SemanticId,\n  ssgNode?: SSGNode\n): {\n  state: StateType;\n  setState: (state: StateType) => void;\n  transition: (trigger: string) => boolean;\n  history: Array<{ from: StateType; to: StateType; timestamp: number }>;\n  canTransition: (trigger: string) => boolean;\n} {\n  // Initialize state from SSG node if provided\n  useEffect(() => {\n    if (ssgNode && !globalSSGStore.getState(id)) {\n      globalSSGStore.setState(id, ssgNode.currentState);\n    }\n  }, [id, ssgNode]);\n\n  const state = useSyncExternalStore<StateType>(\n    (callback) => globalSSGStore.subscribe(callback),\n    () => globalSSGStore.getState(id) || ('idle' as StateType),\n    () => 'idle' as StateType\n  );\n\n  const history = useMemo(() => globalSSGStore.getHistory(id), [id, state]);\n\n  const setState = useCallback(\n    (newState: StateType) => {\n      globalSSGStore.setState(id, newState);\n    },\n    [id]\n  );\n\n  const transition = useCallback(\n    (trigger: string) => {\n      if (!ssgNode) return false;\n      return globalSSGStore.transition(id, trigger, ssgNode.transitions);\n    },\n    [id, ssgNode]\n  );\n\n  const canTransition = useCallback(\n    (trigger: string) => {\n      if (!ssgNode) return false;\n      const currentState = globalSSGStore.getState(id) || 'idle';\n      return ssgNode.transitions.some(\n        (t) => t.from === currentState && t.trigger === trigger\n      );\n    },\n    [id, ssgNode]\n  );\n\n  return { state, setState, transition, history, canTransition };\n}\n\n/**\n * Hook to observe document state and re-parse on changes\n */\nexport function useSemanticObserver(\n  ref: React.RefObject<Element>,\n  config?: SemanticDOMConfig\n): SemanticDocument | null {\n  const { parse } = useSemanticDOM(config);\n  const [document, setDocument] = useState<SemanticDocument | null>(null);\n  const observerRef = useRef<MutationObserver | null>(null);\n\n  useEffect(() => {\n    if (typeof window === 'undefined' || !ref.current) return;\n\n    const parseDocument = () => {\n      if (ref.current) {\n        const url = window.location.href;\n        const title = window.document.title;\n        setDocument(parse(ref.current, url, title));\n      }\n    };\n\n    // Initial parse\n    parseDocument();\n\n    // Observe for changes\n    observerRef.current = new MutationObserver(() => {\n      parseDocument();\n    });\n\n    observerRef.current.observe(ref.current, {\n      childList: true,\n      subtree: true,\n      attributes: true,\n      attributeFilter: ['aria-*', 'role', 'disabled', 'hidden'],\n    });\n\n    return () => {\n      observerRef.current?.disconnect();\n    };\n  }, [ref, parse]);\n\n  return document;\n}\n\n/**\n * Hook to get landmarks from a semantic document\n */\nexport function useLandmarks(document: SemanticDocument | null): SemanticNode[] {\n  return useMemo(() => {\n    if (!document) return [];\n    return document.landmarks;\n  }, [document]);\n}\n\n/**\n * Hook to get interactable elements from a semantic document\n */\nexport function useInteractables(document: SemanticDocument | null): SemanticNode[] {\n  return useMemo(() => {\n    if (!document) return [];\n    return document.interactables;\n  }, [document]);\n}\n\n/**\n * Hook to check agent certification level\n */\nexport function useCertification(document: SemanticDocument | null): {\n  level: string;\n  score: number;\n  passed: number;\n  failed: number;\n  isAgentReady: boolean;\n} {\n  return useMemo(() => {\n    if (!document) {\n      return { level: 'none', score: 0, passed: 0, failed: 0, isAgentReady: false };\n    }\n\n    const { agentReady } = document;\n    return {\n      level: agentReady.level,\n      score: agentReady.score,\n      passed: agentReady.checks.length,\n      failed: agentReady.failures.length,\n      isAgentReady: agentReady.level !== 'none' && agentReady.level !== 'basic',\n    };\n  }, [document]);\n}\n\n/**\n * Context provider for SemanticDOM\n */\nexport { SemanticDOMProvider, useSemanticDOMContext } from './context.js';\n"]}