@supernal/interface 1.0.8 → 1.0.11

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 (294) hide show
  1. package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js +3 -5
  2. package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -1
  3. package/dist/cjs/src/adapters/index.js +3 -4
  4. package/dist/cjs/src/adapters/index.js.map +1 -1
  5. package/dist/cjs/src/ai/AIInterface.js +111 -61
  6. package/dist/cjs/src/ai/AIInterface.js.map +1 -1
  7. package/dist/cjs/src/ai/ToolExecutor.js +36 -1
  8. package/dist/cjs/src/ai/ToolExecutor.js.map +1 -1
  9. package/dist/cjs/src/ai/ToolMatcher.js +6 -0
  10. package/dist/cjs/src/ai/ToolMatcher.js.map +1 -1
  11. package/dist/cjs/src/background/architecture/ArchitectureInitializer.js +13 -2
  12. package/dist/cjs/src/background/architecture/ArchitectureInitializer.js.map +1 -1
  13. package/dist/cjs/src/background/architecture/Containers.js +72 -2
  14. package/dist/cjs/src/background/architecture/Containers.js.map +1 -1
  15. package/dist/cjs/src/background/architecture/index.js +2 -1
  16. package/dist/cjs/src/background/architecture/index.js.map +1 -1
  17. package/dist/cjs/src/background/location/LocationContext.js +19 -2
  18. package/dist/cjs/src/background/location/LocationContext.js.map +1 -1
  19. package/dist/cjs/src/background/navigation/NavigationGraph.js +7 -0
  20. package/dist/cjs/src/background/navigation/NavigationGraph.js.map +1 -1
  21. package/dist/cjs/src/background/registry/ComponentRegistry.js +0 -2
  22. package/dist/cjs/src/background/registry/ComponentRegistry.js.map +1 -1
  23. package/dist/cjs/src/background/registry/ToolRegistry.js +83 -123
  24. package/dist/cjs/src/background/registry/ToolRegistry.js.map +1 -1
  25. package/dist/cjs/src/browser.js +48 -1
  26. package/dist/cjs/src/browser.js.map +1 -1
  27. package/dist/cjs/src/decorators/Component.js +4 -5
  28. package/dist/cjs/src/decorators/Component.js.map +1 -1
  29. package/dist/cjs/src/decorators/ContainerHelpers.js +16 -1
  30. package/dist/cjs/src/decorators/ContainerHelpers.js.map +1 -1
  31. package/dist/cjs/src/decorators/Tool.js +3 -9
  32. package/dist/cjs/src/decorators/Tool.js.map +1 -1
  33. package/dist/cjs/src/decorators/ToolHelpers.js +1 -3
  34. package/dist/cjs/src/decorators/ToolHelpers.js.map +1 -1
  35. package/dist/cjs/src/decorators/ToolPreset.js +14 -14
  36. package/dist/cjs/src/decorators/ToolPreset.js.map +1 -1
  37. package/dist/cjs/src/decorators/ToolProvider.js +30 -20
  38. package/dist/cjs/src/decorators/ToolProvider.js.map +1 -1
  39. package/dist/cjs/src/decorators/index.js +8 -13
  40. package/dist/cjs/src/decorators/index.js.map +1 -1
  41. package/dist/cjs/src/exposure/ExposureCollector.js +27 -0
  42. package/dist/cjs/src/exposure/ExposureCollector.js.map +1 -1
  43. package/dist/cjs/src/index.js +6 -9
  44. package/dist/cjs/src/index.js.map +1 -1
  45. package/dist/cjs/src/mcp/server.js +12 -14
  46. package/dist/cjs/src/mcp/server.js.map +1 -1
  47. package/dist/cjs/src/react/hooks/useChatWithContext.js +4 -10
  48. package/dist/cjs/src/react/hooks/useChatWithContext.js.map +1 -1
  49. package/dist/cjs/src/testing/graph-tester/core/GraphTester.js +339 -0
  50. package/dist/cjs/src/testing/graph-tester/core/GraphTester.js.map +1 -0
  51. package/dist/cjs/src/testing/graph-tester/core/TestFunction.js +189 -0
  52. package/dist/cjs/src/testing/graph-tester/core/TestFunction.js.map +1 -0
  53. package/dist/cjs/src/testing/graph-tester/core/types.js +24 -0
  54. package/dist/cjs/src/testing/graph-tester/core/types.js.map +1 -0
  55. package/dist/cjs/src/testing/graph-tester/fixtures/index.js +13 -0
  56. package/dist/cjs/src/testing/graph-tester/fixtures/index.js.map +1 -0
  57. package/dist/cjs/src/testing/graph-tester/fixtures/portPool.js +184 -0
  58. package/dist/cjs/src/testing/graph-tester/fixtures/portPool.js.map +1 -0
  59. package/dist/cjs/src/testing/graph-tester/index.js +98 -0
  60. package/dist/cjs/src/testing/graph-tester/index.js.map +1 -0
  61. package/dist/cjs/src/testing/graph-tester/modes/AccessibilityMode.js +230 -0
  62. package/dist/cjs/src/testing/graph-tester/modes/AccessibilityMode.js.map +1 -0
  63. package/dist/cjs/src/testing/graph-tester/modes/PerformanceMode.js +168 -0
  64. package/dist/cjs/src/testing/graph-tester/modes/PerformanceMode.js.map +1 -0
  65. package/dist/cjs/src/testing/graph-tester/modes/SEOMode.js +264 -0
  66. package/dist/cjs/src/testing/graph-tester/modes/SEOMode.js.map +1 -0
  67. package/dist/cjs/src/testing/graph-tester/modes/VisualRegressionMode.js +199 -0
  68. package/dist/cjs/src/testing/graph-tester/modes/VisualRegressionMode.js.map +1 -0
  69. package/dist/cjs/src/testing/graph-tester/modes/index.js +17 -0
  70. package/dist/cjs/src/testing/graph-tester/modes/index.js.map +1 -0
  71. package/dist/cjs/src/testing/graph-tester/reporters/HTMLReporter.js +411 -0
  72. package/dist/cjs/src/testing/graph-tester/reporters/HTMLReporter.js.map +1 -0
  73. package/dist/cjs/src/testing/graph-tester/reporters/JSONReporter.js +127 -0
  74. package/dist/cjs/src/testing/graph-tester/reporters/JSONReporter.js.map +1 -0
  75. package/dist/cjs/src/testing/graph-tester/reporters/MarkdownReporter.js +169 -0
  76. package/dist/cjs/src/testing/graph-tester/reporters/MarkdownReporter.js.map +1 -0
  77. package/dist/cjs/src/testing/graph-tester/reporters/UnifiedReporter.js +118 -0
  78. package/dist/cjs/src/testing/graph-tester/reporters/UnifiedReporter.js.map +1 -0
  79. package/dist/cjs/src/testing/graph-tester/reporters/index.js +17 -0
  80. package/dist/cjs/src/testing/graph-tester/reporters/index.js.map +1 -0
  81. package/dist/cjs/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.js +47 -0
  82. package/dist/cjs/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.js.map +1 -0
  83. package/dist/cjs/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.js +584 -0
  84. package/dist/cjs/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.js.map +1 -0
  85. package/dist/cjs/src/testing/graph-tester/screenshot/ScreenshotAnnotator.js +376 -0
  86. package/dist/cjs/src/testing/graph-tester/screenshot/ScreenshotAnnotator.js.map +1 -0
  87. package/dist/cjs/src/testing/graph-tester/screenshot/index.js +15 -0
  88. package/dist/cjs/src/testing/graph-tester/screenshot/index.js.map +1 -0
  89. package/dist/cjs/src/testing/graph-tester/screenshot/types.js +11 -0
  90. package/dist/cjs/src/testing/graph-tester/screenshot/types.js.map +1 -0
  91. package/dist/cjs/src/testing/selectors.js +1 -1
  92. package/dist/cjs/src/types/ComponentState.js.map +1 -1
  93. package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.d.ts.map +1 -1
  94. package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js +3 -5
  95. package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -1
  96. package/dist/esm/src/adapters/index.d.ts +0 -2
  97. package/dist/esm/src/adapters/index.d.ts.map +1 -1
  98. package/dist/esm/src/adapters/index.js +2 -1
  99. package/dist/esm/src/adapters/index.js.map +1 -1
  100. package/dist/esm/src/adapters/types/index.d.ts +0 -2
  101. package/dist/esm/src/adapters/types/index.d.ts.map +1 -1
  102. package/dist/esm/src/ai/AIInterface.d.ts +5 -1
  103. package/dist/esm/src/ai/AIInterface.d.ts.map +1 -1
  104. package/dist/esm/src/ai/AIInterface.js +111 -61
  105. package/dist/esm/src/ai/AIInterface.js.map +1 -1
  106. package/dist/esm/src/ai/ToolExecutor.js +36 -1
  107. package/dist/esm/src/ai/ToolExecutor.js.map +1 -1
  108. package/dist/esm/src/ai/ToolMatcher.d.ts +1 -0
  109. package/dist/esm/src/ai/ToolMatcher.d.ts.map +1 -1
  110. package/dist/esm/src/ai/ToolMatcher.js +6 -0
  111. package/dist/esm/src/ai/ToolMatcher.js.map +1 -1
  112. package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts +1 -1
  113. package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts.map +1 -1
  114. package/dist/esm/src/background/architecture/ArchitectureInitializer.js +13 -2
  115. package/dist/esm/src/background/architecture/ArchitectureInitializer.js.map +1 -1
  116. package/dist/esm/src/background/architecture/Containers.d.ts +35 -2
  117. package/dist/esm/src/background/architecture/Containers.d.ts.map +1 -1
  118. package/dist/esm/src/background/architecture/Containers.js +70 -2
  119. package/dist/esm/src/background/architecture/Containers.js.map +1 -1
  120. package/dist/esm/src/background/architecture/index.d.ts +1 -1
  121. package/dist/esm/src/background/architecture/index.d.ts.map +1 -1
  122. package/dist/esm/src/background/architecture/index.js +1 -1
  123. package/dist/esm/src/background/architecture/index.js.map +1 -1
  124. package/dist/esm/src/background/location/LocationContext.d.ts +3 -2
  125. package/dist/esm/src/background/location/LocationContext.d.ts.map +1 -1
  126. package/dist/esm/src/background/location/LocationContext.js +19 -2
  127. package/dist/esm/src/background/location/LocationContext.js.map +1 -1
  128. package/dist/esm/src/background/navigation/NavigationGraph.d.ts +5 -0
  129. package/dist/esm/src/background/navigation/NavigationGraph.d.ts.map +1 -1
  130. package/dist/esm/src/background/navigation/NavigationGraph.js +7 -0
  131. package/dist/esm/src/background/navigation/NavigationGraph.js.map +1 -1
  132. package/dist/esm/src/background/registry/ComponentRegistry.d.ts +0 -4
  133. package/dist/esm/src/background/registry/ComponentRegistry.d.ts.map +1 -1
  134. package/dist/esm/src/background/registry/ComponentRegistry.js +0 -2
  135. package/dist/esm/src/background/registry/ComponentRegistry.js.map +1 -1
  136. package/dist/esm/src/background/registry/ToolRegistry.d.ts +24 -38
  137. package/dist/esm/src/background/registry/ToolRegistry.d.ts.map +1 -1
  138. package/dist/esm/src/background/registry/ToolRegistry.js +81 -121
  139. package/dist/esm/src/background/registry/ToolRegistry.js.map +1 -1
  140. package/dist/esm/src/browser.d.ts +12 -1
  141. package/dist/esm/src/browser.d.ts.map +1 -1
  142. package/dist/esm/src/browser.js +17 -1
  143. package/dist/esm/src/browser.js.map +1 -1
  144. package/dist/esm/src/decorators/Component.d.ts +1 -8
  145. package/dist/esm/src/decorators/Component.d.ts.map +1 -1
  146. package/dist/esm/src/decorators/Component.js +4 -5
  147. package/dist/esm/src/decorators/Component.js.map +1 -1
  148. package/dist/esm/src/decorators/ContainerHelpers.d.ts +2 -1
  149. package/dist/esm/src/decorators/ContainerHelpers.d.ts.map +1 -1
  150. package/dist/esm/src/decorators/ContainerHelpers.js +16 -1
  151. package/dist/esm/src/decorators/ContainerHelpers.js.map +1 -1
  152. package/dist/esm/src/decorators/Tool.d.ts +1 -6
  153. package/dist/esm/src/decorators/Tool.d.ts.map +1 -1
  154. package/dist/esm/src/decorators/Tool.js +3 -9
  155. package/dist/esm/src/decorators/Tool.js.map +1 -1
  156. package/dist/esm/src/decorators/ToolHelpers.d.ts.map +1 -1
  157. package/dist/esm/src/decorators/ToolHelpers.js +1 -3
  158. package/dist/esm/src/decorators/ToolHelpers.js.map +1 -1
  159. package/dist/esm/src/decorators/ToolPreset.d.ts +12 -9
  160. package/dist/esm/src/decorators/ToolPreset.d.ts.map +1 -1
  161. package/dist/esm/src/decorators/ToolPreset.js +13 -13
  162. package/dist/esm/src/decorators/ToolPreset.js.map +1 -1
  163. package/dist/esm/src/decorators/ToolProvider.d.ts +5 -21
  164. package/dist/esm/src/decorators/ToolProvider.d.ts.map +1 -1
  165. package/dist/esm/src/decorators/ToolProvider.js +30 -19
  166. package/dist/esm/src/decorators/ToolProvider.js.map +1 -1
  167. package/dist/esm/src/decorators/index.d.ts +6 -12
  168. package/dist/esm/src/decorators/index.d.ts.map +1 -1
  169. package/dist/esm/src/decorators/index.js +7 -12
  170. package/dist/esm/src/decorators/index.js.map +1 -1
  171. package/dist/esm/src/exposure/ExposureCollector.d.ts +8 -0
  172. package/dist/esm/src/exposure/ExposureCollector.d.ts.map +1 -1
  173. package/dist/esm/src/exposure/ExposureCollector.js +27 -0
  174. package/dist/esm/src/exposure/ExposureCollector.js.map +1 -1
  175. package/dist/esm/src/index.d.ts +5 -6
  176. package/dist/esm/src/index.d.ts.map +1 -1
  177. package/dist/esm/src/index.js +5 -6
  178. package/dist/esm/src/index.js.map +1 -1
  179. package/dist/esm/src/mcp/server.d.ts +1 -1
  180. package/dist/esm/src/mcp/server.d.ts.map +1 -1
  181. package/dist/esm/src/mcp/server.js +12 -14
  182. package/dist/esm/src/mcp/server.js.map +1 -1
  183. package/dist/esm/src/react/hooks/useChatWithContext.d.ts +0 -2
  184. package/dist/esm/src/react/hooks/useChatWithContext.d.ts.map +1 -1
  185. package/dist/esm/src/react/hooks/useChatWithContext.js +4 -10
  186. package/dist/esm/src/react/hooks/useChatWithContext.js.map +1 -1
  187. package/dist/esm/src/testing/graph-tester/core/GraphTester.d.ts +110 -0
  188. package/dist/esm/src/testing/graph-tester/core/GraphTester.d.ts.map +1 -0
  189. package/dist/esm/src/testing/graph-tester/core/GraphTester.js +335 -0
  190. package/dist/esm/src/testing/graph-tester/core/GraphTester.js.map +1 -0
  191. package/dist/esm/src/testing/graph-tester/core/TestFunction.d.ts +120 -0
  192. package/dist/esm/src/testing/graph-tester/core/TestFunction.d.ts.map +1 -0
  193. package/dist/esm/src/testing/graph-tester/core/TestFunction.js +184 -0
  194. package/dist/esm/src/testing/graph-tester/core/TestFunction.js.map +1 -0
  195. package/dist/esm/src/testing/graph-tester/core/types.d.ts +331 -0
  196. package/dist/esm/src/testing/graph-tester/core/types.d.ts.map +1 -0
  197. package/dist/esm/src/testing/graph-tester/core/types.js +21 -0
  198. package/dist/esm/src/testing/graph-tester/core/types.js.map +1 -0
  199. package/dist/esm/src/testing/graph-tester/fixtures/index.d.ts +8 -0
  200. package/dist/esm/src/testing/graph-tester/fixtures/index.d.ts.map +1 -0
  201. package/dist/esm/src/testing/graph-tester/fixtures/index.js +7 -0
  202. package/dist/esm/src/testing/graph-tester/fixtures/index.js.map +1 -0
  203. package/dist/esm/src/testing/graph-tester/fixtures/portPool.d.ts +40 -0
  204. package/dist/esm/src/testing/graph-tester/fixtures/portPool.d.ts.map +1 -0
  205. package/dist/esm/src/testing/graph-tester/fixtures/portPool.js +147 -0
  206. package/dist/esm/src/testing/graph-tester/fixtures/portPool.js.map +1 -0
  207. package/dist/esm/src/testing/graph-tester/index.d.ts +84 -0
  208. package/dist/esm/src/testing/graph-tester/index.d.ts.map +1 -0
  209. package/dist/esm/src/testing/graph-tester/index.js +77 -0
  210. package/dist/esm/src/testing/graph-tester/index.js.map +1 -0
  211. package/dist/esm/src/testing/graph-tester/modes/AccessibilityMode.d.ts +40 -0
  212. package/dist/esm/src/testing/graph-tester/modes/AccessibilityMode.d.ts.map +1 -0
  213. package/dist/esm/src/testing/graph-tester/modes/AccessibilityMode.js +193 -0
  214. package/dist/esm/src/testing/graph-tester/modes/AccessibilityMode.js.map +1 -0
  215. package/dist/esm/src/testing/graph-tester/modes/PerformanceMode.d.ts +42 -0
  216. package/dist/esm/src/testing/graph-tester/modes/PerformanceMode.d.ts.map +1 -0
  217. package/dist/esm/src/testing/graph-tester/modes/PerformanceMode.js +131 -0
  218. package/dist/esm/src/testing/graph-tester/modes/PerformanceMode.js.map +1 -0
  219. package/dist/esm/src/testing/graph-tester/modes/SEOMode.d.ts +39 -0
  220. package/dist/esm/src/testing/graph-tester/modes/SEOMode.d.ts.map +1 -0
  221. package/dist/esm/src/testing/graph-tester/modes/SEOMode.js +227 -0
  222. package/dist/esm/src/testing/graph-tester/modes/SEOMode.js.map +1 -0
  223. package/dist/esm/src/testing/graph-tester/modes/VisualRegressionMode.d.ts +83 -0
  224. package/dist/esm/src/testing/graph-tester/modes/VisualRegressionMode.d.ts.map +1 -0
  225. package/dist/esm/src/testing/graph-tester/modes/VisualRegressionMode.js +162 -0
  226. package/dist/esm/src/testing/graph-tester/modes/VisualRegressionMode.js.map +1 -0
  227. package/dist/esm/src/testing/graph-tester/modes/index.d.ts +14 -0
  228. package/dist/esm/src/testing/graph-tester/modes/index.d.ts.map +1 -0
  229. package/dist/esm/src/testing/graph-tester/modes/index.js +10 -0
  230. package/dist/esm/src/testing/graph-tester/modes/index.js.map +1 -0
  231. package/dist/esm/src/testing/graph-tester/reporters/HTMLReporter.d.ts +38 -0
  232. package/dist/esm/src/testing/graph-tester/reporters/HTMLReporter.d.ts.map +1 -0
  233. package/dist/esm/src/testing/graph-tester/reporters/HTMLReporter.js +374 -0
  234. package/dist/esm/src/testing/graph-tester/reporters/HTMLReporter.js.map +1 -0
  235. package/dist/esm/src/testing/graph-tester/reporters/JSONReporter.d.ts +50 -0
  236. package/dist/esm/src/testing/graph-tester/reporters/JSONReporter.d.ts.map +1 -0
  237. package/dist/esm/src/testing/graph-tester/reporters/JSONReporter.js +90 -0
  238. package/dist/esm/src/testing/graph-tester/reporters/JSONReporter.js.map +1 -0
  239. package/dist/esm/src/testing/graph-tester/reporters/MarkdownReporter.d.ts +33 -0
  240. package/dist/esm/src/testing/graph-tester/reporters/MarkdownReporter.d.ts.map +1 -0
  241. package/dist/esm/src/testing/graph-tester/reporters/MarkdownReporter.js +132 -0
  242. package/dist/esm/src/testing/graph-tester/reporters/MarkdownReporter.js.map +1 -0
  243. package/dist/esm/src/testing/graph-tester/reporters/UnifiedReporter.d.ts +30 -0
  244. package/dist/esm/src/testing/graph-tester/reporters/UnifiedReporter.d.ts.map +1 -0
  245. package/dist/esm/src/testing/graph-tester/reporters/UnifiedReporter.js +81 -0
  246. package/dist/esm/src/testing/graph-tester/reporters/UnifiedReporter.js.map +1 -0
  247. package/dist/esm/src/testing/graph-tester/reporters/index.d.ts +14 -0
  248. package/dist/esm/src/testing/graph-tester/reporters/index.d.ts.map +1 -0
  249. package/dist/esm/src/testing/graph-tester/reporters/index.js +10 -0
  250. package/dist/esm/src/testing/graph-tester/reporters/index.js.map +1 -0
  251. package/dist/esm/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.d.ts +33 -0
  252. package/dist/esm/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.d.ts.map +1 -0
  253. package/dist/esm/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.js +43 -0
  254. package/dist/esm/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.js.map +1 -0
  255. package/dist/esm/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.d.ts +70 -0
  256. package/dist/esm/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.d.ts.map +1 -0
  257. package/dist/esm/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.js +547 -0
  258. package/dist/esm/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.js.map +1 -0
  259. package/dist/esm/src/testing/graph-tester/screenshot/ScreenshotAnnotator.d.ts +83 -0
  260. package/dist/esm/src/testing/graph-tester/screenshot/ScreenshotAnnotator.d.ts.map +1 -0
  261. package/dist/esm/src/testing/graph-tester/screenshot/ScreenshotAnnotator.js +339 -0
  262. package/dist/esm/src/testing/graph-tester/screenshot/ScreenshotAnnotator.js.map +1 -0
  263. package/dist/esm/src/testing/graph-tester/screenshot/index.d.ts +11 -0
  264. package/dist/esm/src/testing/graph-tester/screenshot/index.d.ts.map +1 -0
  265. package/dist/esm/src/testing/graph-tester/screenshot/index.js +9 -0
  266. package/dist/esm/src/testing/graph-tester/screenshot/index.js.map +1 -0
  267. package/dist/esm/src/testing/graph-tester/screenshot/types.d.ts +331 -0
  268. package/dist/esm/src/testing/graph-tester/screenshot/types.d.ts.map +1 -0
  269. package/dist/esm/src/testing/graph-tester/screenshot/types.js +10 -0
  270. package/dist/esm/src/testing/graph-tester/screenshot/types.js.map +1 -0
  271. package/dist/esm/src/testing/selectors.d.ts +1 -1
  272. package/dist/esm/src/testing/selectors.js +1 -1
  273. package/dist/esm/src/types/ComponentState.d.ts +0 -4
  274. package/dist/esm/src/types/ComponentState.d.ts.map +1 -1
  275. package/dist/esm/src/types/ComponentState.js.map +1 -1
  276. package/package.json +22 -8
  277. package/dist/cjs/src/adapters/native/NativeAdapter.js +0 -268
  278. package/dist/cjs/src/adapters/native/NativeAdapter.js.map +0 -1
  279. package/dist/cjs/src/adapters/native/index.js +0 -10
  280. package/dist/cjs/src/adapters/native/index.js.map +0 -1
  281. package/dist/cjs/src/ui/react/chat/ChatBubble.js +0 -221
  282. package/dist/cjs/src/ui/react/chat/ChatBubble.js.map +0 -1
  283. package/dist/esm/src/adapters/native/NativeAdapter.d.ts +0 -47
  284. package/dist/esm/src/adapters/native/NativeAdapter.d.ts.map +0 -1
  285. package/dist/esm/src/adapters/native/NativeAdapter.js +0 -230
  286. package/dist/esm/src/adapters/native/NativeAdapter.js.map +0 -1
  287. package/dist/esm/src/adapters/native/index.d.ts +0 -6
  288. package/dist/esm/src/adapters/native/index.d.ts.map +0 -1
  289. package/dist/esm/src/adapters/native/index.js +0 -5
  290. package/dist/esm/src/adapters/native/index.js.map +0 -1
  291. package/dist/esm/src/ui/react/chat/ChatBubble.d.ts +0 -27
  292. package/dist/esm/src/ui/react/chat/ChatBubble.d.ts.map +0 -1
  293. package/dist/esm/src/ui/react/chat/ChatBubble.js +0 -184
  294. package/dist/esm/src/ui/react/chat/ChatBubble.js.map +0 -1
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Main orchestrator for graph-based testing.
3
+ *
4
+ * GraphTester coordinates:
5
+ * 1. Route discovery (manual or via NavigationGraph)
6
+ * 2. Test function execution across all routes
7
+ * 3. Result aggregation and reporting
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ import type { GraphTesterConfig, AggregatedTestResults } from './types';
12
+ import { TestFunction } from './TestFunction';
13
+ /**
14
+ * Main orchestrator for graph-based testing.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const tester = new GraphTester({
19
+ * baseUrl: 'http://localhost:3000',
20
+ * routes: [
21
+ * { route: '/', metadata: { name: 'Home' } },
22
+ * { route: '/dashboard', metadata: { name: 'Dashboard' } }
23
+ * ],
24
+ * modes: ['visual', 'performance'],
25
+ * output: {
26
+ * dir: './test-results',
27
+ * formats: ['html', 'json']
28
+ * }
29
+ * });
30
+ *
31
+ * const results = await tester.runTests();
32
+ * console.log(`Pass rate: ${results.passRate}%`);
33
+ * ```
34
+ */
35
+ export declare class GraphTester {
36
+ private config;
37
+ private testFunctions;
38
+ private browser;
39
+ private context;
40
+ /**
41
+ * Create a new GraphTester instance.
42
+ *
43
+ * @param config - Configuration for the tester
44
+ */
45
+ constructor(config: GraphTesterConfig);
46
+ /**
47
+ * Validate and normalize configuration.
48
+ */
49
+ private validateConfig;
50
+ /**
51
+ * Register a test function.
52
+ *
53
+ * @param testFunction - Test function to register
54
+ */
55
+ registerTestFunction(testFunction: TestFunction): void;
56
+ /**
57
+ * Discover routes to test.
58
+ *
59
+ * @returns Array of route descriptors
60
+ */
61
+ private discoverRoutes;
62
+ /**
63
+ * Filter routes based on include/exclude patterns.
64
+ *
65
+ * @param routes - Routes to filter
66
+ * @returns Filtered routes
67
+ */
68
+ private filterRoutes;
69
+ /**
70
+ * Simple pattern matching for route filtering.
71
+ * Supports basic glob patterns with *.
72
+ *
73
+ * @param route - Route to match
74
+ * @param pattern - Pattern to match against
75
+ * @returns Whether route matches pattern
76
+ */
77
+ private matchPattern;
78
+ /**
79
+ * Initialize browser and context.
80
+ */
81
+ private initBrowser;
82
+ /**
83
+ * Close browser and context.
84
+ */
85
+ private closeBrowser;
86
+ /**
87
+ * Apply a test function to a route with optional viewport.
88
+ *
89
+ * @param route - Route descriptor
90
+ * @param testFunction - Test function to apply
91
+ * @param viewport - Viewport configuration (optional)
92
+ * @returns Test result
93
+ */
94
+ private applyTestFunction;
95
+ /**
96
+ * Run all tests across all routes.
97
+ *
98
+ * @returns Aggregated test results
99
+ */
100
+ runTests(): Promise<AggregatedTestResults>;
101
+ /**
102
+ * Get registered test functions.
103
+ */
104
+ getTestFunctions(): TestFunction[];
105
+ /**
106
+ * Get configuration.
107
+ */
108
+ getConfig(): GraphTesterConfig;
109
+ }
110
+ //# sourceMappingURL=GraphTester.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphTester.d.ts","sourceRoot":"","sources":["../../../../../../src/testing/graph-tester/core/GraphTester.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,iBAAiB,EAIjB,qBAAqB,EAItB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAG9D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,OAAO,CAA+B;IAE9C;;;;OAIG;gBACS,MAAM,EAAE,iBAAiB;IAIrC;;OAEG;IACH,OAAO,CAAC,cAAc;IAqCtB;;;;OAIG;IACH,oBAAoB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAatD;;;;OAIG;YACW,cAAc;IA4B5B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA4BpB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;YACW,WAAW;IAazB;;OAEG;YACW,YAAY;IAY1B;;;;;;;OAOG;YACW,iBAAiB;IA0D/B;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,qBAAqB,CAAC;IA2FhD;;OAEG;IACH,gBAAgB,IAAI,YAAY,EAAE;IAIlC;;OAEG;IACH,SAAS,IAAI,iBAAiB;CAG/B"}
@@ -0,0 +1,335 @@
1
+ /**
2
+ * Main orchestrator for graph-based testing.
3
+ *
4
+ * GraphTester coordinates:
5
+ * 1. Route discovery (manual or via NavigationGraph)
6
+ * 2. Test function execution across all routes
7
+ * 3. Result aggregation and reporting
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ import { chromium } from '@playwright/test';
12
+ import { isTestFunction } from './TestFunction.js';
13
+ import { ViewportPresets } from './types.js';
14
+ /**
15
+ * Main orchestrator for graph-based testing.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const tester = new GraphTester({
20
+ * baseUrl: 'http://localhost:3000',
21
+ * routes: [
22
+ * { route: '/', metadata: { name: 'Home' } },
23
+ * { route: '/dashboard', metadata: { name: 'Dashboard' } }
24
+ * ],
25
+ * modes: ['visual', 'performance'],
26
+ * output: {
27
+ * dir: './test-results',
28
+ * formats: ['html', 'json']
29
+ * }
30
+ * });
31
+ *
32
+ * const results = await tester.runTests();
33
+ * console.log(`Pass rate: ${results.passRate}%`);
34
+ * ```
35
+ */
36
+ export class GraphTester {
37
+ /**
38
+ * Create a new GraphTester instance.
39
+ *
40
+ * @param config - Configuration for the tester
41
+ */
42
+ constructor(config) {
43
+ this.testFunctions = new Map();
44
+ this.browser = null;
45
+ this.context = null;
46
+ this.config = this.validateConfig(config);
47
+ }
48
+ /**
49
+ * Validate and normalize configuration.
50
+ */
51
+ validateConfig(config) {
52
+ if (!config.baseUrl) {
53
+ throw new Error('baseUrl is required');
54
+ }
55
+ if (!config.modes || config.modes.length === 0) {
56
+ throw new Error('At least one test mode is required');
57
+ }
58
+ // Normalize routes configuration
59
+ if (!config.routes) {
60
+ config.routes = {
61
+ strategy: 'manual',
62
+ };
63
+ }
64
+ // Normalize output configuration
65
+ if (!config.output) {
66
+ config.output = {
67
+ dir: './test-results',
68
+ formats: ['json', 'html'],
69
+ };
70
+ }
71
+ // Normalize execution configuration
72
+ if (!config.execution) {
73
+ config.execution = {
74
+ parallel: 1,
75
+ timeout: 30000,
76
+ retries: 0,
77
+ failFast: false,
78
+ };
79
+ }
80
+ return config;
81
+ }
82
+ /**
83
+ * Register a test function.
84
+ *
85
+ * @param testFunction - Test function to register
86
+ */
87
+ registerTestFunction(testFunction) {
88
+ if (!isTestFunction(testFunction)) {
89
+ throw new Error('Invalid test function');
90
+ }
91
+ const validationErrors = testFunction.validate();
92
+ if (validationErrors.length > 0) {
93
+ throw new Error(`Test function validation failed: ${validationErrors.join(', ')}`);
94
+ }
95
+ this.testFunctions.set(testFunction.mode, testFunction);
96
+ }
97
+ /**
98
+ * Discover routes to test.
99
+ *
100
+ * @returns Array of route descriptors
101
+ */
102
+ async discoverRoutes() {
103
+ const routesConfig = this.config.routes;
104
+ // Manual routes provided as array
105
+ if (Array.isArray(routesConfig)) {
106
+ return routesConfig;
107
+ }
108
+ // Route discovery configuration
109
+ const discoveryConfig = routesConfig;
110
+ if (discoveryConfig.strategy === 'manual') {
111
+ throw new Error('Manual strategy requires routes array');
112
+ }
113
+ if (discoveryConfig.strategy === 'navigation-graph') {
114
+ throw new Error('NavigationGraph discovery is only available in @supernalintelligence/interface-enterprise');
115
+ }
116
+ if (discoveryConfig.strategy === 'custom' && discoveryConfig.discoveryFn) {
117
+ return discoveryConfig.discoveryFn();
118
+ }
119
+ throw new Error(`Unknown discovery strategy: ${discoveryConfig.strategy}`);
120
+ }
121
+ /**
122
+ * Filter routes based on include/exclude patterns.
123
+ *
124
+ * @param routes - Routes to filter
125
+ * @returns Filtered routes
126
+ */
127
+ filterRoutes(routes) {
128
+ const routesConfig = this.config.routes;
129
+ if (Array.isArray(routesConfig)) {
130
+ return routes;
131
+ }
132
+ const discoveryConfig = routesConfig;
133
+ const { include, exclude } = discoveryConfig;
134
+ let filtered = routes;
135
+ // Apply include patterns
136
+ if (include && include.length > 0) {
137
+ filtered = filtered.filter((r) => include.some((pattern) => this.matchPattern(r.route, pattern)));
138
+ }
139
+ // Apply exclude patterns
140
+ if (exclude && exclude.length > 0) {
141
+ filtered = filtered.filter((r) => !exclude.some((pattern) => this.matchPattern(r.route, pattern)));
142
+ }
143
+ return filtered;
144
+ }
145
+ /**
146
+ * Simple pattern matching for route filtering.
147
+ * Supports basic glob patterns with *.
148
+ *
149
+ * @param route - Route to match
150
+ * @param pattern - Pattern to match against
151
+ * @returns Whether route matches pattern
152
+ */
153
+ matchPattern(route, pattern) {
154
+ // Convert glob pattern to regex
155
+ const regexPattern = pattern
156
+ .replace(/\*/g, '.*')
157
+ .replace(/\?/g, '.')
158
+ .replace(/\//g, '\\/');
159
+ const regex = new RegExp(`^${regexPattern}$`);
160
+ return regex.test(route);
161
+ }
162
+ /**
163
+ * Initialize browser and context.
164
+ */
165
+ async initBrowser() {
166
+ const browserConfig = this.config.browser || {};
167
+ this.browser = await chromium.launch({
168
+ headless: browserConfig.headless !== false,
169
+ ...browserConfig.launchOptions,
170
+ });
171
+ this.context = await this.browser.newContext({
172
+ viewport: browserConfig.viewport || { width: 1280, height: 720 },
173
+ });
174
+ }
175
+ /**
176
+ * Close browser and context.
177
+ */
178
+ async closeBrowser() {
179
+ if (this.context) {
180
+ await this.context.close();
181
+ this.context = null;
182
+ }
183
+ if (this.browser) {
184
+ await this.browser.close();
185
+ this.browser = null;
186
+ }
187
+ }
188
+ /**
189
+ * Apply a test function to a route with optional viewport.
190
+ *
191
+ * @param route - Route descriptor
192
+ * @param testFunction - Test function to apply
193
+ * @param viewport - Viewport configuration (optional)
194
+ * @returns Test result
195
+ */
196
+ async applyTestFunction(route, testFunction, viewport) {
197
+ if (!this.context) {
198
+ throw new Error('Browser context not initialized');
199
+ }
200
+ const page = await this.context.newPage();
201
+ try {
202
+ // Set viewport if provided
203
+ if (viewport) {
204
+ await page.setViewportSize({ width: viewport.width, height: viewport.height });
205
+ // Note: Device scale factor and mobile emulation would require creating
206
+ // a new context per viewport for full mobile emulation.
207
+ // For now, we just set viewport size which covers most responsive testing needs.
208
+ }
209
+ // Navigate to route
210
+ const url = `${this.config.baseUrl}${route.route}`;
211
+ await page.goto(url, { waitUntil: 'networkidle', timeout: this.config.execution?.timeout });
212
+ // Create test context
213
+ const testContext = {
214
+ route: route.route,
215
+ contextId: route.contextId,
216
+ metadata: route.metadata,
217
+ baseUrl: this.config.baseUrl,
218
+ viewport,
219
+ };
220
+ // Run test function
221
+ const result = await testFunction.run(page, testContext);
222
+ return result;
223
+ }
224
+ catch (error) {
225
+ return {
226
+ passed: false,
227
+ duration: 0,
228
+ errors: [
229
+ {
230
+ severity: 'critical',
231
+ message: `Failed to test route: ${error instanceof Error ? error.message : String(error)}`,
232
+ stack: error instanceof Error ? error.stack : undefined,
233
+ },
234
+ ],
235
+ metadata: {},
236
+ mode: testFunction.mode,
237
+ route: route.route,
238
+ };
239
+ }
240
+ finally {
241
+ await page.close();
242
+ }
243
+ }
244
+ /**
245
+ * Run all tests across all routes.
246
+ *
247
+ * @returns Aggregated test results
248
+ */
249
+ async runTests() {
250
+ const startTime = Date.now();
251
+ try {
252
+ // Discover and filter routes
253
+ const allRoutes = await this.discoverRoutes();
254
+ const routes = this.filterRoutes(allRoutes);
255
+ if (routes.length === 0) {
256
+ throw new Error('No routes to test');
257
+ }
258
+ console.log(`Discovered ${routes.length} routes to test`);
259
+ // Get viewports to test
260
+ const browserConfig = this.config.browser || {};
261
+ const viewports = browserConfig.viewports || [
262
+ browserConfig.viewport
263
+ ? { name: 'default', ...browserConfig.viewport }
264
+ : ViewportPresets.Desktop
265
+ ];
266
+ console.log(`Testing with ${viewports.length} viewport(s): ${viewports.map(v => v.name).join(', ')}`);
267
+ // Initialize browser
268
+ await this.initBrowser();
269
+ // Execute tests
270
+ const resultsByRoute = new Map();
271
+ const resultsByMode = new Map();
272
+ const allErrors = [];
273
+ // Test each viewport
274
+ for (const viewport of viewports) {
275
+ console.log(`\n📱 Testing viewport: ${viewport.name} (${viewport.width}x${viewport.height})`);
276
+ for (const route of routes) {
277
+ const routeKey = viewports.length > 1
278
+ ? `${route.route} [${viewport.name}]`
279
+ : route.route;
280
+ console.log(` Testing route: ${routeKey}`);
281
+ const routeResults = [];
282
+ for (const [mode, testFunction] of this.testFunctions) {
283
+ console.log(` Running ${mode} test...`);
284
+ const result = await this.applyTestFunction(route, testFunction, viewport);
285
+ routeResults.push(result);
286
+ // Aggregate by mode
287
+ if (!resultsByMode.has(mode)) {
288
+ resultsByMode.set(mode, []);
289
+ }
290
+ resultsByMode.get(mode).push(result);
291
+ // Collect errors
292
+ allErrors.push(...result.errors);
293
+ }
294
+ resultsByRoute.set(routeKey, routeResults);
295
+ }
296
+ }
297
+ // Calculate statistics
298
+ const testCount = routes.length * this.testFunctions.size * viewports.length;
299
+ const passedCount = Array.from(resultsByRoute.values())
300
+ .flat()
301
+ .filter((r) => r.passed).length;
302
+ const failedCount = testCount - passedCount;
303
+ const passRate = testCount > 0 ? Math.round((passedCount / testCount) * 100) : 0;
304
+ return {
305
+ routeCount: routes.length,
306
+ testCount,
307
+ passedCount,
308
+ failedCount,
309
+ passRate,
310
+ totalDuration: Date.now() - startTime,
311
+ resultsByRoute,
312
+ resultsByMode,
313
+ errors: allErrors,
314
+ timestamp: new Date(),
315
+ config: this.config,
316
+ };
317
+ }
318
+ finally {
319
+ await this.closeBrowser();
320
+ }
321
+ }
322
+ /**
323
+ * Get registered test functions.
324
+ */
325
+ getTestFunctions() {
326
+ return Array.from(this.testFunctions.values());
327
+ }
328
+ /**
329
+ * Get configuration.
330
+ */
331
+ getConfig() {
332
+ return this.config;
333
+ }
334
+ }
335
+ //# sourceMappingURL=GraphTester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphTester.js","sourceRoot":"","sources":["../../../../../../src/testing/graph-tester/core/GraphTester.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Abstract base class for all test functions.
3
+ *
4
+ * Test functions implement specific testing modes (visual regression, performance, accessibility, etc.).
5
+ * Each test function:
6
+ * 1. Receives a Playwright page and test context
7
+ * 2. Performs its testing logic
8
+ * 3. Returns a TestResult with pass/fail status and metadata
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ import type { Page } from '@playwright/test';
13
+ import type { TestContext, TestResult, TestMode } from './types';
14
+ /**
15
+ * Abstract base class for test functions.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * class VisualRegressionMode extends TestFunction {
20
+ * mode = 'visual';
21
+ *
22
+ * async execute(page: Page, context: TestContext): Promise<TestResult> {
23
+ * const startTime = Date.now();
24
+ * const screenshot = await page.screenshot({ fullPage: true });
25
+ *
26
+ * return {
27
+ * passed: true,
28
+ * duration: Date.now() - startTime,
29
+ * errors: [],
30
+ * metadata: {
31
+ * screenshot,
32
+ * screenshotPath: './screenshots/example.png'
33
+ * }
34
+ * };
35
+ * }
36
+ * }
37
+ * ```
38
+ */
39
+ export declare abstract class TestFunction {
40
+ /**
41
+ * Test mode identifier.
42
+ * Must be unique across all test functions.
43
+ */
44
+ abstract readonly mode: TestMode;
45
+ /**
46
+ * Human-readable name for this test function.
47
+ */
48
+ abstract readonly name: string;
49
+ /**
50
+ * Description of what this test function does.
51
+ */
52
+ abstract readonly description: string;
53
+ /**
54
+ * Execute the test function.
55
+ *
56
+ * @param page - Playwright page instance
57
+ * @param context - Test context (route, metadata)
58
+ * @returns Test result with pass/fail status and metadata
59
+ */
60
+ abstract execute(page: Page, context: TestContext): Promise<TestResult>;
61
+ /**
62
+ * Optional setup hook called before execute().
63
+ * Use for initialization that should happen once per route.
64
+ *
65
+ * @param page - Playwright page instance
66
+ */
67
+ setup?(page: Page): Promise<void>;
68
+ /**
69
+ * Optional teardown hook called after execute().
70
+ * Use for cleanup that should happen once per route.
71
+ *
72
+ * @param page - Playwright page instance
73
+ */
74
+ teardown?(page: Page): Promise<void>;
75
+ /**
76
+ * Optional predicate to determine if this test should run for a given context.
77
+ * Return false to skip testing this route with this test function.
78
+ *
79
+ * @param context - Test context
80
+ * @returns Whether to test this route
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * // Only test authenticated routes
85
+ * shouldTest(context: TestContext): boolean {
86
+ * return context.metadata?.requiresAuth === true;
87
+ * }
88
+ * ```
89
+ */
90
+ shouldTest?(context: TestContext): boolean;
91
+ /**
92
+ * Execute the full test lifecycle: setup, execute, teardown.
93
+ * This method handles the orchestration and error handling.
94
+ *
95
+ * @param page - Playwright page instance
96
+ * @param context - Test context
97
+ * @returns Test result
98
+ */
99
+ run(page: Page, context: TestContext): Promise<TestResult>;
100
+ /**
101
+ * Validate test function configuration.
102
+ * Override to add custom validation logic.
103
+ *
104
+ * @returns Array of validation errors (empty if valid)
105
+ */
106
+ validate(): string[];
107
+ /**
108
+ * Get test function info for reporting.
109
+ */
110
+ getInfo(): {
111
+ mode: TestMode;
112
+ name: string;
113
+ description: string;
114
+ };
115
+ }
116
+ /**
117
+ * Type guard to check if an object is a TestFunction.
118
+ */
119
+ export declare function isTestFunction(obj: any): obj is TestFunction;
120
+ //# sourceMappingURL=TestFunction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestFunction.d.ts","sourceRoot":"","sources":["../../../../../../src/testing/graph-tester/core/TestFunction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EAIT,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,8BAAsB,YAAY;IAChC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAEvE;;;;;OAKG;IACG,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEvC;;;;;OAKG;IACG,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1C;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO;IAE1C;;;;;;;OAOG;IACG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAqGhE;;;;;OAKG;IACH,QAAQ,IAAI,MAAM,EAAE;IAkBpB;;OAEG;IACH,OAAO,IAAI;QACT,IAAI,EAAE,QAAQ,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB;CAOF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,YAAY,CAS5D"}