{"version":3,"sources":["../typescript/src/core/semantic-dom.ts","../typescript/src/vanilla/index.ts"],"names":["document","query"],"mappings":"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","file":"vanilla.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 Vanilla JavaScript Implementation\n * Framework-agnostic API for browser and Node.js environments\n *\n * @packageDocumentation\n */\n\nimport type {\n  SemanticDocument,\n  SemanticNode,\n  SemanticId,\n  SemanticQuery,\n  SemanticDOMConfig,\n  NavigationOptions,\n  StateType,\n  StateTransition,\n  SSGNode,\n  AgentCertification,\n} from '../core/types.js';\nimport { SemanticDOM, createSemanticDOM } from '../core/semantic-dom.js';\n\n/**\n * Global SemanticDOM instance for convenience methods\n */\nlet globalInstance: SemanticDOM | null = null;\n\n/**\n * Initialize SemanticDOM with configuration\n */\nexport function init(config?: SemanticDOMConfig): SemanticDOM {\n  globalInstance = createSemanticDOM(config);\n  return globalInstance;\n}\n\n/**\n * Get or create global instance\n */\nfunction getInstance(): SemanticDOM {\n  if (!globalInstance) {\n    globalInstance = createSemanticDOM();\n  }\n  return globalInstance;\n}\n\n/**\n * Parse the current document or a specific element\n */\nexport function parse(element?: Element): SemanticDocument {\n  const sdom = getInstance();\n  const target = element || (typeof document !== 'undefined' ? document.body : null);\n\n  if (!target) {\n    throw new Error('No element to parse. Provide an element or run in browser context.');\n  }\n\n  const url = typeof window !== 'undefined' ? window.location.href : '';\n  const title = typeof document !== 'undefined' ? document.title : '';\n\n  return sdom.parse(target, url, title);\n}\n\n/**\n * Parse HTML string into SemanticDocument\n */\nexport function parseHTML(html: string, config?: SemanticDOMConfig): SemanticDocument {\n  if (typeof DOMParser === 'undefined') {\n    throw new Error('DOMParser not available. Use in browser or with JSDOM.');\n  }\n\n  const parser = new DOMParser();\n  const doc = parser.parseFromString(html, 'text/html');\n  const sdom = createSemanticDOM(config);\n\n  return sdom.parse(doc.body, '', doc.title);\n}\n\n/**\n * Query semantic nodes\n */\nexport function query(document: SemanticDocument, q: SemanticQuery): SemanticNode[] {\n  return getInstance().query(document.root, q);\n}\n\n/**\n * Get node by ID (O(1) lookup)\n */\nexport function getById(document: SemanticDocument, id: SemanticId): SemanticNode | undefined {\n  return document.index.get(id);\n}\n\n/**\n * Navigate to next node\n */\nexport function navigate(\n  document: SemanticDocument,\n  currentId: SemanticId,\n  options: NavigationOptions\n): SemanticNode | null {\n  return getInstance().navigate(document, currentId, options);\n}\n\n/**\n * Get all landmarks\n */\nexport function getLandmarks(document: SemanticDocument): SemanticNode[] {\n  return document.landmarks;\n}\n\n/**\n * Get all interactive elements\n */\nexport function getInteractables(document: SemanticDocument): SemanticNode[] {\n  return document.interactables;\n}\n\n/**\n * Get certification info\n */\nexport function getCertification(document: SemanticDocument): AgentCertification {\n  return document.agentReady;\n}\n\n/**\n * Check if document is agent-ready\n */\nexport function isAgentReady(document: SemanticDocument): boolean {\n  const { level } = document.agentReady;\n  return level !== 'none' && level !== 'basic';\n}\n\n/**\n * SSG State Manager for vanilla JS\n */\nexport class SSGStateManager {\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: Map<SemanticId, Set<(state: StateType) => void>> = new Map();\n  private globalListeners: Set<(id: SemanticId, state: StateType) => void> = new Set();\n  private document: SemanticDocument | null = null;\n\n  /**\n   * Initialize with a semantic document\n   */\n  init(document: SemanticDocument): void {\n    this.document = document;\n\n    // Initialize state from SSG nodes\n    document.stateGraph.forEach((ssgNode, id) => {\n      this.state.set(id, ssgNode.currentState);\n    });\n  }\n\n  /**\n   * Get current state of a node\n   */\n  getState(id: SemanticId): StateType {\n    return this.state.get(id) || 'idle';\n  }\n\n  /**\n   * Get state history for a node\n   */\n  getHistory(id: SemanticId): Array<{ from: StateType; to: StateType; timestamp: number }> {\n    return this.history.get(id) || [];\n  }\n\n  /**\n   * Set state directly\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    // Notify listeners\n    this.notifyListeners(id, newState);\n  }\n\n  /**\n   * Trigger a state transition\n   */\n  transition(id: SemanticId, trigger: string): boolean {\n    if (!this.document) return false;\n\n    const ssgNode = this.document.stateGraph.get(id);\n    if (!ssgNode) return false;\n\n    const currentState = this.getState(id);\n    const transition = ssgNode.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\n    return false;\n  }\n\n  /**\n   * Check if a transition is possible\n   */\n  canTransition(id: SemanticId, trigger: string): boolean {\n    if (!this.document) return false;\n\n    const ssgNode = this.document.stateGraph.get(id);\n    if (!ssgNode) return false;\n\n    const currentState = this.getState(id);\n    return ssgNode.transitions.some((t) => t.from === currentState && t.trigger === trigger);\n  }\n\n  /**\n   * Get available transitions for a node\n   */\n  getAvailableTransitions(id: SemanticId): StateTransition[] {\n    if (!this.document) return [];\n\n    const ssgNode = this.document.stateGraph.get(id);\n    if (!ssgNode) return [];\n\n    const currentState = this.getState(id);\n    return ssgNode.transitions.filter((t) => t.from === currentState);\n  }\n\n  /**\n   * Subscribe to state changes for a specific node\n   */\n  subscribe(id: SemanticId, listener: (state: StateType) => void): () => void {\n    if (!this.listeners.has(id)) {\n      this.listeners.set(id, new Set());\n    }\n    this.listeners.get(id)!.add(listener);\n\n    return () => {\n      this.listeners.get(id)?.delete(listener);\n    };\n  }\n\n  /**\n   * Subscribe to all state changes\n   */\n  subscribeAll(listener: (id: SemanticId, state: StateType) => void): () => void {\n    this.globalListeners.add(listener);\n    return () => {\n      this.globalListeners.delete(listener);\n    };\n  }\n\n  /**\n   * Notify listeners of state change\n   */\n  private notifyListeners(id: SemanticId, state: StateType): void {\n    this.listeners.get(id)?.forEach((l) => l(state));\n    this.globalListeners.forEach((l) => l(id, state));\n  }\n\n  /**\n   * Get all states as a snapshot\n   */\n  snapshot(): Map<SemanticId, StateType> {\n    return new Map(this.state);\n  }\n\n  /**\n   * Reset all state\n   */\n  reset(): void {\n    this.state.clear();\n    this.history.clear();\n\n    if (this.document) {\n      this.init(this.document);\n    }\n  }\n}\n\n/**\n * Create SSG state manager\n */\nexport function createSSGManager(): SSGStateManager {\n  return new SSGStateManager();\n}\n\n/**\n * MutationObserver wrapper for automatic re-parsing\n */\nexport class SemanticObserver {\n  private observer: MutationObserver | null = null;\n  private sdom: SemanticDOM;\n  private callback: (document: SemanticDocument) => void;\n  private element: Element | null = null;\n  private debounceTimer: ReturnType<typeof setTimeout> | null = null;\n  private debounceMs: number;\n\n  constructor(\n    callback: (document: SemanticDocument) => void,\n    config?: SemanticDOMConfig,\n    debounceMs = 100\n  ) {\n    this.sdom = createSemanticDOM(config);\n    this.callback = callback;\n    this.debounceMs = debounceMs;\n  }\n\n  /**\n   * Start observing an element\n   */\n  observe(element: Element): void {\n    if (typeof MutationObserver === 'undefined') {\n      console.warn('MutationObserver not available');\n      return;\n    }\n\n    this.element = element;\n    this.parseAndNotify();\n\n    this.observer = new MutationObserver(() => {\n      this.debouncedParse();\n    });\n\n    this.observer.observe(element, {\n      childList: true,\n      subtree: true,\n      attributes: true,\n      attributeFilter: ['aria-expanded', 'aria-selected', 'aria-checked', 'disabled', 'hidden', 'role'],\n    });\n  }\n\n  /**\n   * Stop observing\n   */\n  disconnect(): void {\n    this.observer?.disconnect();\n    this.observer = null;\n    this.element = null;\n\n    if (this.debounceTimer) {\n      clearTimeout(this.debounceTimer);\n      this.debounceTimer = null;\n    }\n  }\n\n  /**\n   * Force re-parse\n   */\n  refresh(): void {\n    this.parseAndNotify();\n  }\n\n  private debouncedParse(): void {\n    if (this.debounceTimer) {\n      clearTimeout(this.debounceTimer);\n    }\n\n    this.debounceTimer = setTimeout(() => {\n      this.parseAndNotify();\n    }, this.debounceMs);\n  }\n\n  private parseAndNotify(): void {\n    if (!this.element) return;\n\n    const url = typeof window !== 'undefined' ? window.location.href : '';\n    const title = typeof document !== 'undefined' ? document.title : '';\n\n    const doc = this.sdom.parse(this.element, url, title);\n    this.callback(doc);\n  }\n}\n\n/**\n * Create a semantic observer\n */\nexport function createObserver(\n  callback: (document: SemanticDocument) => void,\n  config?: SemanticDOMConfig,\n  debounceMs?: number\n): SemanticObserver {\n  return new SemanticObserver(callback, config, debounceMs);\n}\n\n/**\n * Serialize semantic document to JSON\n */\nexport function toJSON(document: SemanticDocument): string {\n  const serializable = {\n    ...document,\n    index: Object.fromEntries(\n      Array.from(document.index.entries()).map(([k, v]) => [\n        k,\n        { ...v, element: undefined, children: v.children.map((c) => c.id) },\n      ])\n    ),\n    stateGraph: Object.fromEntries(document.stateGraph.entries()),\n    root: serializeNode(document.root),\n  };\n\n  return JSON.stringify(serializable, null, 2);\n}\n\n/**\n * Serialize a node for JSON output\n */\nfunction serializeNode(node: SemanticNode): Record<string, unknown> {\n  return {\n    ...node,\n    element: undefined,\n    children: node.children.map(serializeNode),\n  };\n}\n\n/**\n * Export semantic document as a plain object\n */\nexport function toPlainObject(document: SemanticDocument): Record<string, unknown> {\n  return JSON.parse(toJSON(document)) as Record<string, unknown>;\n}\n\n/**\n * Find element by semantic ID\n */\nexport function findElement(document: SemanticDocument, id: SemanticId): Element | null {\n  const node = getById(document, id);\n  if (!node) return null;\n\n  // Try element reference first\n  if (node.element && typeof node.element === 'object') {\n    return node.element;\n  }\n\n  // Fall back to selector\n  if (typeof document !== 'undefined') {\n    try {\n      return globalThis.document.querySelector(node.selector);\n    } catch {\n      return null;\n    }\n  }\n\n  return null;\n}\n\n/**\n * Click on a semantic node (browser only)\n */\nexport function click(document: SemanticDocument, id: SemanticId): boolean {\n  const element = findElement(document, id);\n  if (!element || typeof (element as HTMLElement).click !== 'function') return false;\n\n  (element as HTMLElement).click();\n  return true;\n}\n\n/**\n * Focus on a semantic node (browser only)\n */\nexport function focus(document: SemanticDocument, id: SemanticId): boolean {\n  const element = findElement(document, id);\n  if (!element || typeof (element as HTMLElement).focus !== 'function') return false;\n\n  (element as HTMLElement).focus();\n  return true;\n}\n\n/**\n * Set value on a semantic node (browser only)\n */\nexport function setValue(\n  document: SemanticDocument,\n  id: SemanticId,\n  value: string\n): boolean {\n  const element = findElement(document, id);\n  if (!element) return false;\n\n  if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) {\n    element.value = value;\n    element.dispatchEvent(new Event('input', { bubbles: true }));\n    element.dispatchEvent(new Event('change', { bubbles: true }));\n    return true;\n  }\n\n  if (element instanceof HTMLSelectElement) {\n    element.value = value;\n    element.dispatchEvent(new Event('change', { bubbles: true }));\n    return true;\n  }\n\n  return false;\n}\n\n/**\n * Export all functions and classes\n */\nexport {\n  SemanticDOM,\n  createSemanticDOM,\n  type SemanticDocument,\n  type SemanticNode,\n  type SemanticId,\n  type SemanticQuery,\n  type SemanticDOMConfig,\n  type NavigationOptions,\n  type SSGNode,\n  type StateType,\n  type StateTransition,\n  type AgentCertification,\n};\n"]}