@qontinui/ui-bridge 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/control/index.d.mts +134 -0
  2. package/dist/control/index.d.ts +134 -0
  3. package/dist/control/index.js +924 -0
  4. package/dist/control/index.js.map +1 -0
  5. package/dist/control/index.mjs +919 -0
  6. package/dist/control/index.mjs.map +1 -0
  7. package/dist/core/index.d.mts +52 -0
  8. package/dist/core/index.d.ts +52 -0
  9. package/dist/core/index.js +1424 -0
  10. package/dist/core/index.js.map +1 -0
  11. package/dist/core/index.mjs +1409 -0
  12. package/dist/core/index.mjs.map +1 -0
  13. package/dist/debug/index.d.mts +93 -0
  14. package/dist/debug/index.d.ts +93 -0
  15. package/dist/debug/index.js +673 -0
  16. package/dist/debug/index.js.map +1 -0
  17. package/dist/debug/index.mjs +664 -0
  18. package/dist/debug/index.mjs.map +1 -0
  19. package/dist/index.d.mts +12 -0
  20. package/dist/index.d.ts +12 -0
  21. package/dist/index.js +4719 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/index.mjs +4665 -0
  24. package/dist/index.mjs.map +1 -0
  25. package/dist/metrics-BCG7z7Aq.d.mts +147 -0
  26. package/dist/metrics-QCnK0EFw.d.ts +147 -0
  27. package/dist/react/index.d.mts +786 -0
  28. package/dist/react/index.d.ts +786 -0
  29. package/dist/react/index.js +4312 -0
  30. package/dist/react/index.js.map +1 -0
  31. package/dist/react/index.mjs +4290 -0
  32. package/dist/react/index.mjs.map +1 -0
  33. package/dist/registry-CT6BVVKr.d.mts +253 -0
  34. package/dist/registry-D4mQ01B3.d.ts +253 -0
  35. package/dist/render-log/index.d.mts +340 -0
  36. package/dist/render-log/index.d.ts +340 -0
  37. package/dist/render-log/index.js +702 -0
  38. package/dist/render-log/index.js.map +1 -0
  39. package/dist/render-log/index.mjs +695 -0
  40. package/dist/render-log/index.mjs.map +1 -0
  41. package/dist/types-BDkXy5si.d.ts +354 -0
  42. package/dist/types-BpvpStn3.d.mts +802 -0
  43. package/dist/types-BpvpStn3.d.ts +802 -0
  44. package/dist/types-DdJD9yw5.d.mts +354 -0
  45. package/dist/websocket-client-B2LC9CYc.d.mts +124 -0
  46. package/dist/websocket-client-DupH0X7B.d.ts +124 -0
  47. package/package.json +83 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/element-identifier.ts","../../src/debug/inspector.tsx","../../src/debug/metrics.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Element Identification Module\n *\n * Provides utilities for identifying DOM elements using multiple strategies:\n * 1. data-ui-id (explicit UI Bridge identifier - preferred)\n * 2. data-testid (testing library convention)\n * 3. data-awas-element (legacy support)\n * 4. id (HTML id attribute)\n * 5. Generated XPath/CSS selector (fallback)\n */\n\nimport type { ElementIdentifier } from './types';\n\n/**\n * Data attributes used for element identification (in priority order)\n */\nexport const ID_ATTRIBUTES = ['data-ui-id', 'data-testid', 'data-awas-element', 'id'] as const;\n\n/**\n * Generate a unique XPath for an element\n */\nexport function generateXPath(element: HTMLElement): string {\n if (element.id) {\n return `//*[@id=\"${element.id}\"]`;\n }\n\n const parts: string[] = [];\n let current: HTMLElement | null = element;\n\n while (current && current.nodeType === Node.ELEMENT_NODE) {\n let selector = current.nodeName.toLowerCase();\n\n // Check for identifying attributes\n const uiId = current.getAttribute('data-ui-id');\n if (uiId) {\n selector += `[@data-ui-id=\"${uiId}\"]`;\n parts.unshift(selector);\n break;\n }\n\n const testId = current.getAttribute('data-testid');\n if (testId) {\n selector += `[@data-testid=\"${testId}\"]`;\n parts.unshift(selector);\n break;\n }\n\n const id = current.id;\n if (id) {\n selector += `[@id=\"${id}\"]`;\n parts.unshift(selector);\n break;\n }\n\n // Calculate position among siblings with same tag\n const parentEl: HTMLElement | null = current.parentElement;\n if (parentEl) {\n const currentEl = current;\n const siblings = Array.from(parentEl.children).filter(\n (child): child is Element => child.nodeName === currentEl.nodeName\n );\n if (siblings.length > 1) {\n const index = siblings.indexOf(currentEl) + 1;\n selector += `[${index}]`;\n }\n }\n\n parts.unshift(selector);\n current = parentEl;\n }\n\n return '/' + parts.join('/');\n}\n\n/**\n * Generate a unique CSS selector for an element\n */\nexport function generateCSSSelector(element: HTMLElement): string {\n // Check for identifying attributes first\n const uiId = element.getAttribute('data-ui-id');\n if (uiId) {\n return `[data-ui-id=\"${uiId}\"]`;\n }\n\n const testId = element.getAttribute('data-testid');\n if (testId) {\n return `[data-testid=\"${testId}\"]`;\n }\n\n const awasId = element.getAttribute('data-awas-element');\n if (awasId) {\n return `[data-awas-element=\"${awasId}\"]`;\n }\n\n if (element.id) {\n return `#${CSS.escape(element.id)}`;\n }\n\n // Build a path selector\n const path: string[] = [];\n let current: HTMLElement | null = element;\n\n while (current && current.nodeType === Node.ELEMENT_NODE) {\n let selector = current.nodeName.toLowerCase();\n\n // Check for unique identifiers on ancestors\n const parentUiId = current.getAttribute('data-ui-id');\n if (parentUiId && current !== element) {\n path.unshift(`[data-ui-id=\"${parentUiId}\"]`);\n break;\n }\n\n const parentTestId = current.getAttribute('data-testid');\n if (parentTestId && current !== element) {\n path.unshift(`[data-testid=\"${parentTestId}\"]`);\n break;\n }\n\n if (current.id) {\n path.unshift(`#${CSS.escape(current.id)}`);\n break;\n }\n\n // Add nth-child if needed for uniqueness\n const parentEl: HTMLElement | null = current.parentElement;\n if (parentEl) {\n const currentEl = current;\n const siblings = Array.from(parentEl.children);\n const sameTagSiblings = siblings.filter(\n (s): s is Element => s.nodeName === currentEl.nodeName\n );\n\n if (sameTagSiblings.length > 1) {\n const index = siblings.indexOf(currentEl) + 1;\n selector += `:nth-child(${index})`;\n }\n }\n\n path.unshift(selector);\n current = current.parentElement;\n }\n\n return path.join(' > ');\n}\n\n/**\n * Get the best identifier for an element based on available attributes\n */\nexport function getBestIdentifier(element: HTMLElement): string {\n // Priority order\n const uiId = element.getAttribute('data-ui-id');\n if (uiId) return uiId;\n\n const testId = element.getAttribute('data-testid');\n if (testId) return testId;\n\n const awasId = element.getAttribute('data-awas-element');\n if (awasId) return awasId;\n\n if (element.id) return element.id;\n\n // Fallback to generated CSS selector\n return generateCSSSelector(element);\n}\n\n/**\n * Create a full ElementIdentifier object for an element\n */\nexport function createElementIdentifier(element: HTMLElement): ElementIdentifier {\n return {\n uiId: element.getAttribute('data-ui-id') || undefined,\n testId: element.getAttribute('data-testid') || undefined,\n awasId: element.getAttribute('data-awas-element') || undefined,\n htmlId: element.id || undefined,\n xpath: generateXPath(element),\n selector: generateCSSSelector(element),\n };\n}\n\n/**\n * Find an element by its identifier\n *\n * Tries each identification method in priority order\n */\nexport function findElementByIdentifier(\n identifier: string | ElementIdentifier,\n root: ParentNode = document\n): HTMLElement | null {\n // If string, try each identification method\n if (typeof identifier === 'string') {\n // Try data-ui-id\n const byUiId = root.querySelector<HTMLElement>(`[data-ui-id=\"${identifier}\"]`);\n if (byUiId) return byUiId;\n\n // Try data-testid\n const byTestId = root.querySelector<HTMLElement>(`[data-testid=\"${identifier}\"]`);\n if (byTestId) return byTestId;\n\n // Try data-awas-element\n const byAwasId = root.querySelector<HTMLElement>(`[data-awas-element=\"${identifier}\"]`);\n if (byAwasId) return byAwasId;\n\n // Try id\n const byId = root.querySelector<HTMLElement>(`#${CSS.escape(identifier)}`);\n if (byId) return byId;\n\n // Try as CSS selector\n try {\n const bySelector = root.querySelector<HTMLElement>(identifier);\n if (bySelector) return bySelector;\n } catch {\n // Invalid selector, ignore\n }\n\n // Try as XPath\n try {\n const result = document.evaluate(\n identifier,\n root,\n null,\n XPathResult.FIRST_ORDERED_NODE_TYPE,\n null\n );\n if (result.singleNodeValue instanceof HTMLElement) {\n return result.singleNodeValue;\n }\n } catch {\n // Invalid XPath, ignore\n }\n\n return null;\n }\n\n // If ElementIdentifier object, try in priority order\n if (identifier.uiId) {\n const el = root.querySelector<HTMLElement>(`[data-ui-id=\"${identifier.uiId}\"]`);\n if (el) return el;\n }\n\n if (identifier.testId) {\n const el = root.querySelector<HTMLElement>(`[data-testid=\"${identifier.testId}\"]`);\n if (el) return el;\n }\n\n if (identifier.awasId) {\n const el = root.querySelector<HTMLElement>(`[data-awas-element=\"${identifier.awasId}\"]`);\n if (el) return el;\n }\n\n if (identifier.htmlId) {\n const el = root.querySelector<HTMLElement>(`#${CSS.escape(identifier.htmlId)}`);\n if (el) return el;\n }\n\n // Try CSS selector\n if (identifier.selector) {\n try {\n const el = root.querySelector<HTMLElement>(identifier.selector);\n if (el) return el;\n } catch {\n // Invalid selector\n }\n }\n\n // Try XPath\n if (identifier.xpath) {\n try {\n const result = document.evaluate(\n identifier.xpath,\n root,\n null,\n XPathResult.FIRST_ORDERED_NODE_TYPE,\n null\n );\n if (result.singleNodeValue instanceof HTMLElement) {\n return result.singleNodeValue;\n }\n } catch {\n // Invalid XPath\n }\n }\n\n return null;\n}\n\n/**\n * Find all elements matching an identifier pattern\n */\nexport function findAllElementsByIdentifier(\n pattern: string,\n root: ParentNode = document\n): HTMLElement[] {\n const results: HTMLElement[] = [];\n\n // Try as CSS selector first (supports wildcards better)\n try {\n const elements = root.querySelectorAll<HTMLElement>(pattern);\n results.push(...Array.from(elements));\n if (results.length > 0) return results;\n } catch {\n // Not a valid CSS selector\n }\n\n // Try partial matching on data attributes\n const partials = [\n `[data-ui-id*=\"${pattern}\"]`,\n `[data-testid*=\"${pattern}\"]`,\n `[data-awas-element*=\"${pattern}\"]`,\n `[id*=\"${pattern}\"]`,\n ];\n\n for (const selector of partials) {\n try {\n const elements = root.querySelectorAll<HTMLElement>(selector);\n for (const el of elements) {\n if (!results.includes(el)) {\n results.push(el);\n }\n }\n } catch {\n // Invalid selector\n }\n }\n\n return results;\n}\n\n/**\n * Check if an element matches an identifier\n */\nexport function elementMatchesIdentifier(\n element: HTMLElement,\n identifier: string | ElementIdentifier\n): boolean {\n if (typeof identifier === 'string') {\n return (\n element.getAttribute('data-ui-id') === identifier ||\n element.getAttribute('data-testid') === identifier ||\n element.getAttribute('data-awas-element') === identifier ||\n element.id === identifier ||\n element.matches(identifier)\n );\n }\n\n return (\n (identifier.uiId && element.getAttribute('data-ui-id') === identifier.uiId) ||\n (identifier.testId && element.getAttribute('data-testid') === identifier.testId) ||\n (identifier.awasId && element.getAttribute('data-awas-element') === identifier.awasId) ||\n (identifier.htmlId && element.id === identifier.htmlId) ||\n false\n );\n}\n","/**\n * Element Inspector\n *\n * Visual debugging tools for inspecting UI elements.\n */\n\nimport React, { useState, useEffect, useCallback, useMemo } from 'react';\nimport type { RegisteredElement, ElementState, ElementIdentifier } from '../core/types';\nimport { createElementIdentifier, getBestIdentifier } from '../core/element-identifier';\n\n/**\n * Inspector state\n */\nexport interface InspectorState {\n /** Whether inspector is active */\n active: boolean;\n /** Currently hovered element */\n hoveredElement: HTMLElement | null;\n /** Selected element */\n selectedElement: HTMLElement | null;\n /** Highlight bounds */\n highlightBounds: DOMRect | null;\n}\n\n/**\n * Element info for display\n */\nexport interface ElementInfo {\n identifier: ElementIdentifier;\n bestId: string;\n tagName: string;\n role?: string;\n state: ElementState;\n registered?: RegisteredElement;\n}\n\n/**\n * Inspector overlay styles\n */\nconst overlayStyles: React.CSSProperties = {\n position: 'fixed',\n pointerEvents: 'none',\n zIndex: 999999,\n border: '2px solid #3b82f6',\n backgroundColor: 'rgba(59, 130, 246, 0.1)',\n transition: 'all 0.1s ease-out',\n};\n\nconst labelStyles: React.CSSProperties = {\n position: 'absolute',\n top: '-24px',\n left: '0',\n padding: '2px 8px',\n backgroundColor: '#3b82f6',\n color: 'white',\n fontSize: '12px',\n fontFamily: 'monospace',\n whiteSpace: 'nowrap',\n borderRadius: '4px 4px 0 0',\n};\n\nconst panelStyles: React.CSSProperties = {\n position: 'fixed',\n bottom: '20px',\n right: '20px',\n width: '400px',\n maxHeight: '500px',\n overflow: 'auto',\n backgroundColor: '#1f2937',\n color: '#f3f4f6',\n borderRadius: '8px',\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.3)',\n fontFamily: 'monospace',\n fontSize: '12px',\n zIndex: 999998,\n};\n\nconst headerStyles: React.CSSProperties = {\n padding: '12px 16px',\n backgroundColor: '#111827',\n borderBottom: '1px solid #374151',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n borderRadius: '8px 8px 0 0',\n};\n\nconst sectionStyles: React.CSSProperties = {\n padding: '12px 16px',\n borderBottom: '1px solid #374151',\n};\n\nconst labelKeyStyles: React.CSSProperties = {\n color: '#9ca3af',\n marginRight: '8px',\n};\n\nconst valueStyles: React.CSSProperties = {\n color: '#60a5fa',\n};\n\n/**\n * Get element state\n */\nfunction getElementState(element: HTMLElement): ElementState {\n const rect = element.getBoundingClientRect();\n const style = window.getComputedStyle(element);\n\n const state: ElementState = {\n visible: rect.width > 0 && rect.height > 0 && style.display !== 'none',\n enabled: !('disabled' in element && (element as HTMLInputElement).disabled),\n focused: document.activeElement === element,\n rect: {\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 computedStyles: {\n display: style.display,\n visibility: style.visibility,\n opacity: style.opacity,\n pointerEvents: style.pointerEvents,\n },\n };\n\n if (element instanceof HTMLInputElement) {\n state.value = element.value;\n if (element.type === 'checkbox' || element.type === 'radio') {\n state.checked = element.checked;\n }\n }\n\n return state;\n}\n\n/**\n * Inspector overlay component\n */\nexport interface InspectorOverlayProps {\n bounds: DOMRect;\n label: string;\n}\n\nexport function InspectorOverlay({ bounds, label }: InspectorOverlayProps) {\n return (\n <div\n style={{\n ...overlayStyles,\n left: bounds.left + window.scrollX,\n top: bounds.top + window.scrollY,\n width: bounds.width,\n height: bounds.height,\n }}\n >\n <span style={labelStyles}>{label}</span>\n </div>\n );\n}\n\n/**\n * Element info panel component\n */\nexport interface InfoPanelProps {\n element: HTMLElement | null;\n onClose: () => void;\n registeredElement?: RegisteredElement;\n}\n\nexport function InfoPanel({ element, onClose, registeredElement }: InfoPanelProps) {\n if (!element) return null;\n\n const identifier = createElementIdentifier(element);\n const state = getElementState(element);\n const bestId = getBestIdentifier(element);\n\n return (\n <div style={panelStyles}>\n <div style={headerStyles}>\n <span style={{ fontWeight: 'bold', color: '#60a5fa' }}>UI Bridge Inspector</span>\n <button\n onClick={onClose}\n style={{\n background: 'none',\n border: 'none',\n color: '#9ca3af',\n cursor: 'pointer',\n fontSize: '16px',\n }}\n >\n ×\n </button>\n </div>\n\n <div style={sectionStyles}>\n <div style={{ marginBottom: '8px', fontWeight: 'bold', color: '#f3f4f6' }}>Element</div>\n <div>\n <span style={labelKeyStyles}>Tag:</span>\n <span style={valueStyles}>{element.tagName.toLowerCase()}</span>\n </div>\n <div>\n <span style={labelKeyStyles}>Best ID:</span>\n <span style={valueStyles}>{bestId}</span>\n </div>\n {identifier.uiId && (\n <div>\n <span style={labelKeyStyles}>data-ui-id:</span>\n <span style={valueStyles}>{identifier.uiId}</span>\n </div>\n )}\n {identifier.testId && (\n <div>\n <span style={labelKeyStyles}>data-testid:</span>\n <span style={valueStyles}>{identifier.testId}</span>\n </div>\n )}\n {identifier.htmlId && (\n <div>\n <span style={labelKeyStyles}>id:</span>\n <span style={valueStyles}>{identifier.htmlId}</span>\n </div>\n )}\n {registeredElement && (\n <div>\n <span style={labelKeyStyles}>Registered:</span>\n <span style={{ color: '#10b981' }}>Yes ({registeredElement.type})</span>\n </div>\n )}\n </div>\n\n <div style={sectionStyles}>\n <div style={{ marginBottom: '8px', fontWeight: 'bold', color: '#f3f4f6' }}>State</div>\n <div>\n <span style={labelKeyStyles}>Visible:</span>\n <span style={{ color: state.visible ? '#10b981' : '#ef4444' }}>\n {state.visible ? 'Yes' : 'No'}\n </span>\n </div>\n <div>\n <span style={labelKeyStyles}>Enabled:</span>\n <span style={{ color: state.enabled ? '#10b981' : '#ef4444' }}>\n {state.enabled ? 'Yes' : 'No'}\n </span>\n </div>\n <div>\n <span style={labelKeyStyles}>Focused:</span>\n <span style={{ color: state.focused ? '#10b981' : '#9ca3af' }}>\n {state.focused ? 'Yes' : 'No'}\n </span>\n </div>\n {state.value !== undefined && (\n <div>\n <span style={labelKeyStyles}>Value:</span>\n <span style={valueStyles}>&quot;{state.value}&quot;</span>\n </div>\n )}\n {state.checked !== undefined && (\n <div>\n <span style={labelKeyStyles}>Checked:</span>\n <span style={{ color: state.checked ? '#10b981' : '#9ca3af' }}>\n {state.checked ? 'Yes' : 'No'}\n </span>\n </div>\n )}\n </div>\n\n <div style={sectionStyles}>\n <div style={{ marginBottom: '8px', fontWeight: 'bold', color: '#f3f4f6' }}>Bounds</div>\n <div>\n <span style={labelKeyStyles}>Position:</span>\n <span style={valueStyles}>\n ({Math.round(state.rect.x)}, {Math.round(state.rect.y)})\n </span>\n </div>\n <div>\n <span style={labelKeyStyles}>Size:</span>\n <span style={valueStyles}>\n {Math.round(state.rect.width)} × {Math.round(state.rect.height)}\n </span>\n </div>\n </div>\n\n <div style={{ ...sectionStyles, borderBottom: 'none' }}>\n <div style={{ marginBottom: '8px', fontWeight: 'bold', color: '#f3f4f6' }}>Selectors</div>\n <div style={{ wordBreak: 'break-all', marginBottom: '4px' }}>\n <span style={labelKeyStyles}>CSS:</span>\n <span style={valueStyles}>{identifier.selector}</span>\n </div>\n <div style={{ wordBreak: 'break-all' }}>\n <span style={labelKeyStyles}>XPath:</span>\n <span style={valueStyles}>{identifier.xpath}</span>\n </div>\n </div>\n\n {registeredElement && registeredElement.actions.length > 0 && (\n <div style={{ ...sectionStyles, borderBottom: 'none' }}>\n <div style={{ marginBottom: '8px', fontWeight: 'bold', color: '#f3f4f6' }}>Actions</div>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '4px' }}>\n {registeredElement.actions.map((action) => (\n <span\n key={action}\n style={{\n padding: '2px 8px',\n backgroundColor: '#374151',\n borderRadius: '4px',\n color: '#60a5fa',\n }}\n >\n {action}\n </span>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/**\n * useInspector hook options\n */\nexport interface UseInspectorOptions {\n /** Callback when element is selected */\n onSelect?: (element: HTMLElement) => void;\n /** Get registered element by DOM element */\n getRegisteredElement?: (element: HTMLElement) => RegisteredElement | undefined;\n /** Keyboard shortcut to toggle (default: Ctrl+Shift+I) */\n shortcut?: { key: string; ctrl?: boolean; shift?: boolean; alt?: boolean };\n}\n\n/**\n * useInspector hook\n *\n * Provides inspector functionality for debugging.\n */\nexport function useInspector(options: UseInspectorOptions = {}) {\n const [active, setActive] = useState(false);\n const [hoveredElement, setHoveredElement] = useState<HTMLElement | null>(null);\n const [selectedElement, setSelectedElement] = useState<HTMLElement | null>(null);\n\n const shortcut = useMemo(\n () => options.shortcut ?? { key: 'i', ctrl: true, shift: true },\n [options.shortcut]\n );\n\n // Toggle handler\n const toggle = useCallback(() => {\n setActive((prev) => !prev);\n if (active) {\n setHoveredElement(null);\n setSelectedElement(null);\n }\n }, [active]);\n\n // Keyboard shortcut\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (\n e.key.toLowerCase() === shortcut.key &&\n e.ctrlKey === !!shortcut.ctrl &&\n e.shiftKey === !!shortcut.shift &&\n e.altKey === !!shortcut.alt\n ) {\n e.preventDefault();\n toggle();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggle, shortcut]);\n\n // Mouse handlers\n useEffect(() => {\n if (!active) return;\n\n const handleMouseOver = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n if (target && target !== hoveredElement) {\n setHoveredElement(target);\n }\n };\n\n const handleClick = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n const target = e.target as HTMLElement;\n setSelectedElement(target);\n options.onSelect?.(target);\n };\n\n document.addEventListener('mouseover', handleMouseOver, true);\n document.addEventListener('click', handleClick, true);\n\n return () => {\n document.removeEventListener('mouseover', handleMouseOver, true);\n document.removeEventListener('click', handleClick, true);\n };\n }, [active, hoveredElement, options]);\n\n // Build display element (selected takes precedence over hovered)\n const displayElement = selectedElement || hoveredElement;\n const bounds = displayElement?.getBoundingClientRect() || null;\n const registeredElement = displayElement\n ? options.getRegisteredElement?.(displayElement)\n : undefined;\n\n return {\n active,\n toggle,\n hoveredElement,\n selectedElement,\n setSelectedElement,\n displayElement,\n bounds,\n registeredElement,\n clearSelection: () => {\n setSelectedElement(null);\n },\n };\n}\n\n/**\n * Inspector component\n *\n * Full inspector UI with overlay and info panel.\n */\nexport interface InspectorProps {\n /** Get registered element by DOM element */\n getRegisteredElement?: (element: HTMLElement) => RegisteredElement | undefined;\n /** Initial active state */\n initialActive?: boolean;\n}\n\nexport function Inspector({ getRegisteredElement, initialActive }: InspectorProps) {\n const inspector = useInspector({\n getRegisteredElement,\n });\n\n // Set initial state\n useEffect(() => {\n if (initialActive && !inspector.active) {\n inspector.toggle();\n }\n }, [initialActive]); // eslint-disable-line react-hooks/exhaustive-deps\n\n if (!inspector.active) return null;\n\n return (\n <>\n {inspector.bounds && (\n <InspectorOverlay\n bounds={inspector.bounds}\n label={inspector.displayElement ? getBestIdentifier(inspector.displayElement) : ''}\n />\n )}\n {inspector.selectedElement && (\n <InfoPanel\n element={inspector.selectedElement}\n onClose={inspector.clearSelection}\n registeredElement={inspector.registeredElement}\n />\n )}\n </>\n );\n}\n","/**\n * Metrics Module\n *\n * Performance metrics and action history tracking.\n */\n\nimport type { BridgeEvent } from '../core/types';\nimport type {\n ControlActionResponse,\n ComponentActionResponse,\n WorkflowStepResult,\n} from '../control/types';\n\n/**\n * Action history entry\n */\nexport interface ActionHistoryEntry {\n /** Unique entry ID */\n id: string;\n /** Timestamp */\n timestamp: number;\n /** Action type */\n type: 'element' | 'component' | 'workflow-step';\n /** Target ID */\n target: string;\n /** Action name */\n action: string;\n /** Whether the action succeeded */\n success: boolean;\n /** Duration in milliseconds */\n durationMs: number;\n /** Error message if failed */\n error?: string;\n /** Action parameters */\n params?: Record<string, unknown>;\n /** Response data */\n response?: unknown;\n}\n\n/**\n * Performance metrics\n */\nexport interface PerformanceMetrics {\n /** Total actions executed */\n totalActions: number;\n /** Successful actions */\n successfulActions: number;\n /** Failed actions */\n failedActions: number;\n /** Success rate (0-1) */\n successRate: number;\n /** Average action duration */\n avgDurationMs: number;\n /** Minimum action duration */\n minDurationMs: number;\n /** Maximum action duration */\n maxDurationMs: number;\n /** 95th percentile duration */\n p95DurationMs: number;\n /** Actions per second (last minute) */\n actionsPerSecond: number;\n /** Errors by type */\n errorsByType: Record<string, number>;\n /** Actions by type */\n actionsByType: Record<string, number>;\n}\n\n/**\n * Metrics collector options\n */\nexport interface MetricsCollectorOptions {\n /** Maximum history entries to keep */\n maxHistoryEntries?: number;\n /** Window for rate calculations (ms) */\n rateWindow?: number;\n}\n\n/**\n * Generate unique ID\n */\nfunction generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).substr(2, 8)}`;\n}\n\n/**\n * Metrics collector\n *\n * Collects and aggregates performance metrics.\n */\nexport class MetricsCollector {\n private history: ActionHistoryEntry[] = [];\n private maxHistoryEntries: number;\n private rateWindow: number;\n\n constructor(options: MetricsCollectorOptions = {}) {\n this.maxHistoryEntries = options.maxHistoryEntries ?? 1000;\n this.rateWindow = options.rateWindow ?? 60000; // 1 minute\n }\n\n /**\n * Record an element action\n */\n recordElementAction(\n target: string,\n action: string,\n response: ControlActionResponse,\n params?: Record<string, unknown>\n ): ActionHistoryEntry {\n const entry: ActionHistoryEntry = {\n id: generateId(),\n timestamp: response.timestamp,\n type: 'element',\n target,\n action,\n success: response.success,\n durationMs: response.durationMs,\n error: response.error,\n params,\n response: response.elementState,\n };\n\n this.addEntry(entry);\n return entry;\n }\n\n /**\n * Record a component action\n */\n recordComponentAction(\n target: string,\n action: string,\n response: ComponentActionResponse,\n params?: Record<string, unknown>\n ): ActionHistoryEntry {\n const entry: ActionHistoryEntry = {\n id: generateId(),\n timestamp: response.timestamp,\n type: 'component',\n target,\n action,\n success: response.success,\n durationMs: response.durationMs,\n error: response.error,\n params,\n response: response.result,\n };\n\n this.addEntry(entry);\n return entry;\n }\n\n /**\n * Record a workflow step\n */\n recordWorkflowStep(workflowId: string, result: WorkflowStepResult): ActionHistoryEntry {\n const entry: ActionHistoryEntry = {\n id: generateId(),\n timestamp: result.timestamp,\n type: 'workflow-step',\n target: workflowId,\n action: result.stepId,\n success: result.success,\n durationMs: result.durationMs,\n error: result.error,\n response: result.result,\n };\n\n this.addEntry(entry);\n return entry;\n }\n\n /**\n * Record from a bridge event\n */\n recordEvent(event: BridgeEvent): void {\n if (event.type === 'action:completed' || event.type === 'action:failed') {\n const data = event.data as {\n elementId?: string;\n componentId?: string;\n action: string;\n response: ControlActionResponse | ComponentActionResponse;\n params?: Record<string, unknown>;\n };\n\n if (data.elementId) {\n this.recordElementAction(\n data.elementId,\n data.action,\n data.response as ControlActionResponse,\n data.params\n );\n } else if (data.componentId) {\n this.recordComponentAction(\n data.componentId,\n data.action,\n data.response as ComponentActionResponse,\n data.params\n );\n }\n }\n }\n\n /**\n * Get action history\n */\n getHistory(options?: {\n type?: 'element' | 'component' | 'workflow-step';\n target?: string;\n action?: string;\n success?: boolean;\n since?: number;\n limit?: number;\n }): ActionHistoryEntry[] {\n let results = [...this.history];\n\n if (options?.type) {\n results = results.filter((e) => e.type === options.type);\n }\n if (options?.target) {\n results = results.filter((e) => e.target === options.target);\n }\n if (options?.action) {\n results = results.filter((e) => e.action === options.action);\n }\n if (options?.success !== undefined) {\n results = results.filter((e) => e.success === options.success);\n }\n if (options?.since) {\n results = results.filter((e) => e.timestamp >= options.since!);\n }\n if (options?.limit) {\n results = results.slice(-options.limit);\n }\n\n return results;\n }\n\n /**\n * Get performance metrics\n */\n getMetrics(since?: number): PerformanceMetrics {\n const entries = since ? this.history.filter((e) => e.timestamp >= since) : this.history;\n\n if (entries.length === 0) {\n return {\n totalActions: 0,\n successfulActions: 0,\n failedActions: 0,\n successRate: 0,\n avgDurationMs: 0,\n minDurationMs: 0,\n maxDurationMs: 0,\n p95DurationMs: 0,\n actionsPerSecond: 0,\n errorsByType: {},\n actionsByType: {},\n };\n }\n\n const successful = entries.filter((e) => e.success);\n const failed = entries.filter((e) => !e.success);\n const durations = entries.map((e) => e.durationMs).sort((a, b) => a - b);\n\n // Calculate actions per second in the rate window\n const now = Date.now();\n const windowStart = now - this.rateWindow;\n const recentActions = this.history.filter((e) => e.timestamp >= windowStart);\n const windowSeconds = this.rateWindow / 1000;\n\n // Error aggregation\n const errorsByType: Record<string, number> = {};\n for (const entry of failed) {\n const errorType = entry.error?.split(':')[0] || 'Unknown';\n errorsByType[errorType] = (errorsByType[errorType] || 0) + 1;\n }\n\n // Action aggregation\n const actionsByType: Record<string, number> = {};\n for (const entry of entries) {\n const key = `${entry.type}:${entry.action}`;\n actionsByType[key] = (actionsByType[key] || 0) + 1;\n }\n\n return {\n totalActions: entries.length,\n successfulActions: successful.length,\n failedActions: failed.length,\n successRate: successful.length / entries.length,\n avgDurationMs: durations.reduce((a, b) => a + b, 0) / durations.length,\n minDurationMs: durations[0],\n maxDurationMs: durations[durations.length - 1],\n p95DurationMs: durations[Math.floor(durations.length * 0.95)],\n actionsPerSecond: recentActions.length / windowSeconds,\n errorsByType,\n actionsByType,\n };\n }\n\n /**\n * Get recent errors\n */\n getRecentErrors(limit = 10): ActionHistoryEntry[] {\n return this.history.filter((e) => !e.success).slice(-limit);\n }\n\n /**\n * Get slowest actions\n */\n getSlowestActions(limit = 10): ActionHistoryEntry[] {\n return [...this.history].sort((a, b) => b.durationMs - a.durationMs).slice(0, limit);\n }\n\n /**\n * Clear history\n */\n clearHistory(): void {\n this.history = [];\n }\n\n /**\n * Export history as JSON\n */\n exportHistory(): string {\n return JSON.stringify(this.history, null, 2);\n }\n\n /**\n * Import history from JSON\n */\n importHistory(json: string): void {\n const entries = JSON.parse(json) as ActionHistoryEntry[];\n this.history = entries.slice(-this.maxHistoryEntries);\n }\n\n private addEntry(entry: ActionHistoryEntry): void {\n this.history.push(entry);\n while (this.history.length > this.maxHistoryEntries) {\n this.history.shift();\n }\n }\n}\n\n/**\n * Create a metrics collector\n */\nexport function createMetricsCollector(options?: MetricsCollectorOptions): MetricsCollector {\n return new MetricsCollector(options);\n}\n\n/**\n * Format duration for display\n */\nexport function formatDuration(ms: number): string {\n if (ms < 1) return '<1ms';\n if (ms < 1000) return `${Math.round(ms)}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n return `${(ms / 60000).toFixed(1)}m`;\n}\n\n/**\n * Format percentage for display\n */\nexport function formatPercentage(value: number): string {\n return `${(value * 100).toFixed(1)}%`;\n}\n"]}
@@ -0,0 +1,12 @@
1
+ export { A as ActionHandler, a as ActionRequest, b as ActionResponse, B as BranchCondition, c as BridgeEvent, d as BridgeEventListener, e as BridgeEventType, f as BridgeSnapshot, C as ComponentAction, g as CustomAction, E as ElementIdentifier, h as ElementState, i as ElementType, j as ExtractConfig, L as LogConfig, k as LoopConfig, N as NavigationResult, P as PathResult, R as RegisteredComponent, l as RegisteredElement, S as StandardAction, m as StateSnapshot, T as TransitionResult, U as UIBridgeConfig, n as UIBridgeFeatures, o as UIState, p as UIStateGroup, q as UITransition, W as WSClientConfig, r as WSClientMessage, s as WSClientMessageType, t as WSConnectionState, u as WSDiscoverMessage, v as WSErrorMessage, w as WSEventMessage, x as WSExecuteActionMessage, y as WSExecuteComponentActionMessage, z as WSExecuteWorkflowMessage, D as WSFindMessage, F as WSGetElementMessage, G as WSGetSnapshotMessage, H as WSMessageBase, I as WSPingMessage, J as WSPongMessage, K as WSResponseMessage, M as WSServerMessage, O as WSServerMessageType, Q as WSSubscribeMessage, V as WSSubscribedMessage, X as WSSubscriptionOptions, Y as WSUnsubscribeMessage, Z as WSUnsubscribedMessage, _ as WSWelcomeMessage, $ as WSWorkflowProgressMessage, a0 as WaitOptions, a1 as Workflow, a2 as WorkflowStep, a3 as WorkflowStepType } from './types-BpvpStn3.mjs';
2
+ export { ID_ATTRIBUTES, createElementIdentifier, elementMatchesIdentifier, findAllElementsByIdentifier, findElementByIdentifier, generateCSSSelector, generateXPath, getBestIdentifier } from './core/index.mjs';
3
+ export { R as RegistryOptions, U as UIBridgeRegistry, g as getGlobalRegistry, r as resetGlobalRegistry, s as setGlobalRegistry } from './registry-CT6BVVKr.mjs';
4
+ export { U as UIBridgeWSClient, c as createWSClient } from './websocket-client-B2LC9CYc.mjs';
5
+ export { AutoRegisterOptions, AutoRegisterProvider, AutoRegisterProviderProps, ComponentActionDef, IdStrategy, UIBridgeContextValue, UIBridgeProvider, UIBridgeProviderProps, UseUIBridgeReturn, UseUIComponentOptions, UseUIComponentReturn, UseUIElementOptions, UseUIElementReturn, UseUINavigationReturn, UseUIStateGroupOptions, UseUIStateGroupReturn, UseUIStateOptions, UseUIStateReturn, UseUITransitionOptions, UseUITransitionReturn, useActiveStates, useAutoRegister, useAvailableTransitions, useCanNavigateTo, useNavigationPath, useStateSnapshot, useTransitions, useUIBridge, useUIBridgeContext, useUIBridgeOptional, useUIBridgeRequired, useUIComponent, useUIComponentAction, useUIElement, useUIElementRef, useUINavigation, useUIState, useUIStateGroup, useUITransition } from './react/index.mjs';
6
+ export { A as ActionExecutor, C as ComponentActionRequest, a as ComponentActionResponse, b as ControlActionRequest, c as ControlActionResponse, d as ControlSnapshot, D as DiscoveredElement, e as DiscoveryRequest, f as DiscoveryResponse, F as FindRequest, g as FindResponse, K as KeyboardAction, M as MouseAction, S as ScrollAction, h as SelectAction, T as TypeAction, W as WaitResult, i as WorkflowEngine, j as WorkflowRunRequest, k as WorkflowRunResponse, l as WorkflowRunStatus, m as WorkflowStepResult } from './types-DdJD9yw5.mjs';
7
+ export { DefaultActionExecutor, DefaultWorkflowEngine, createActionExecutor, createWorkflowEngine } from './control/index.mjs';
8
+ export { CaptureOptions, CapturedElement, ChangeEntry, DOMChange, DOMChangeObserver, DOMSnapshot, ErrorEntry, InMemoryRenderLogStorage, InteractionEntry, NavigationEntry, RenderLogEntry, RenderLogEntryType, RenderLogManager, RenderLogOptions, RenderLogStorage, SnapshotEntry, captureDOMSnapshot, captureInteractiveElements, createRenderLogManager } from './render-log/index.mjs';
9
+ export { ElementInfo, InfoPanel, InfoPanelProps, Inspector, InspectorOverlay, InspectorOverlayProps, InspectorProps, InspectorState, UseInspectorOptions, useInspector } from './debug/index.mjs';
10
+ export { A as ActionHistoryEntry, M as MetricsCollector, a as MetricsCollectorOptions, P as PerformanceMetrics, c as createMetricsCollector, f as formatDuration, b as formatPercentage } from './metrics-BCG7z7Aq.mjs';
11
+ import 'react/jsx-runtime';
12
+ import 'react';
@@ -0,0 +1,12 @@
1
+ export { A as ActionHandler, a as ActionRequest, b as ActionResponse, B as BranchCondition, c as BridgeEvent, d as BridgeEventListener, e as BridgeEventType, f as BridgeSnapshot, C as ComponentAction, g as CustomAction, E as ElementIdentifier, h as ElementState, i as ElementType, j as ExtractConfig, L as LogConfig, k as LoopConfig, N as NavigationResult, P as PathResult, R as RegisteredComponent, l as RegisteredElement, S as StandardAction, m as StateSnapshot, T as TransitionResult, U as UIBridgeConfig, n as UIBridgeFeatures, o as UIState, p as UIStateGroup, q as UITransition, W as WSClientConfig, r as WSClientMessage, s as WSClientMessageType, t as WSConnectionState, u as WSDiscoverMessage, v as WSErrorMessage, w as WSEventMessage, x as WSExecuteActionMessage, y as WSExecuteComponentActionMessage, z as WSExecuteWorkflowMessage, D as WSFindMessage, F as WSGetElementMessage, G as WSGetSnapshotMessage, H as WSMessageBase, I as WSPingMessage, J as WSPongMessage, K as WSResponseMessage, M as WSServerMessage, O as WSServerMessageType, Q as WSSubscribeMessage, V as WSSubscribedMessage, X as WSSubscriptionOptions, Y as WSUnsubscribeMessage, Z as WSUnsubscribedMessage, _ as WSWelcomeMessage, $ as WSWorkflowProgressMessage, a0 as WaitOptions, a1 as Workflow, a2 as WorkflowStep, a3 as WorkflowStepType } from './types-BpvpStn3.js';
2
+ export { ID_ATTRIBUTES, createElementIdentifier, elementMatchesIdentifier, findAllElementsByIdentifier, findElementByIdentifier, generateCSSSelector, generateXPath, getBestIdentifier } from './core/index.js';
3
+ export { R as RegistryOptions, U as UIBridgeRegistry, g as getGlobalRegistry, r as resetGlobalRegistry, s as setGlobalRegistry } from './registry-D4mQ01B3.js';
4
+ export { U as UIBridgeWSClient, c as createWSClient } from './websocket-client-DupH0X7B.js';
5
+ export { AutoRegisterOptions, AutoRegisterProvider, AutoRegisterProviderProps, ComponentActionDef, IdStrategy, UIBridgeContextValue, UIBridgeProvider, UIBridgeProviderProps, UseUIBridgeReturn, UseUIComponentOptions, UseUIComponentReturn, UseUIElementOptions, UseUIElementReturn, UseUINavigationReturn, UseUIStateGroupOptions, UseUIStateGroupReturn, UseUIStateOptions, UseUIStateReturn, UseUITransitionOptions, UseUITransitionReturn, useActiveStates, useAutoRegister, useAvailableTransitions, useCanNavigateTo, useNavigationPath, useStateSnapshot, useTransitions, useUIBridge, useUIBridgeContext, useUIBridgeOptional, useUIBridgeRequired, useUIComponent, useUIComponentAction, useUIElement, useUIElementRef, useUINavigation, useUIState, useUIStateGroup, useUITransition } from './react/index.js';
6
+ export { A as ActionExecutor, C as ComponentActionRequest, a as ComponentActionResponse, b as ControlActionRequest, c as ControlActionResponse, d as ControlSnapshot, D as DiscoveredElement, e as DiscoveryRequest, f as DiscoveryResponse, F as FindRequest, g as FindResponse, K as KeyboardAction, M as MouseAction, S as ScrollAction, h as SelectAction, T as TypeAction, W as WaitResult, i as WorkflowEngine, j as WorkflowRunRequest, k as WorkflowRunResponse, l as WorkflowRunStatus, m as WorkflowStepResult } from './types-BDkXy5si.js';
7
+ export { DefaultActionExecutor, DefaultWorkflowEngine, createActionExecutor, createWorkflowEngine } from './control/index.js';
8
+ export { CaptureOptions, CapturedElement, ChangeEntry, DOMChange, DOMChangeObserver, DOMSnapshot, ErrorEntry, InMemoryRenderLogStorage, InteractionEntry, NavigationEntry, RenderLogEntry, RenderLogEntryType, RenderLogManager, RenderLogOptions, RenderLogStorage, SnapshotEntry, captureDOMSnapshot, captureInteractiveElements, createRenderLogManager } from './render-log/index.js';
9
+ export { ElementInfo, InfoPanel, InfoPanelProps, Inspector, InspectorOverlay, InspectorOverlayProps, InspectorProps, InspectorState, UseInspectorOptions, useInspector } from './debug/index.js';
10
+ export { A as ActionHistoryEntry, M as MetricsCollector, a as MetricsCollectorOptions, P as PerformanceMetrics, c as createMetricsCollector, f as formatDuration, b as formatPercentage } from './metrics-QCnK0EFw.js';
11
+ import 'react/jsx-runtime';
12
+ import 'react';