@supernal/interface 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +165 -0
  3. package/dist/cjs/names/API.js +104 -0
  4. package/dist/cjs/names/API.js.map +1 -0
  5. package/dist/cjs/names/Components.js +104 -0
  6. package/dist/cjs/names/Components.js.map +1 -0
  7. package/dist/cjs/names/Containers.js +99 -0
  8. package/dist/cjs/names/Containers.js.map +1 -0
  9. package/dist/cjs/names/Functions.js +114 -0
  10. package/dist/cjs/names/Functions.js.map +1 -0
  11. package/dist/cjs/names/index.js +118 -0
  12. package/dist/cjs/names/index.js.map +1 -0
  13. package/dist/cjs/src/adapters/ChatUIProvider.js +176 -0
  14. package/dist/cjs/src/adapters/ChatUIProvider.js.map +1 -0
  15. package/dist/cjs/src/adapters/bridge.js +225 -0
  16. package/dist/cjs/src/adapters/bridge.js.map +1 -0
  17. package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js +289 -0
  18. package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -0
  19. package/dist/cjs/src/adapters/copilotkit/index.js +10 -0
  20. package/dist/cjs/src/adapters/copilotkit/index.js.map +1 -0
  21. package/dist/cjs/src/adapters/index.js +63 -0
  22. package/dist/cjs/src/adapters/index.js.map +1 -0
  23. package/dist/cjs/src/adapters/native/NativeAdapter.js +268 -0
  24. package/dist/cjs/src/adapters/native/NativeAdapter.js.map +1 -0
  25. package/dist/cjs/src/adapters/native/index.js +10 -0
  26. package/dist/cjs/src/adapters/native/index.js.map +1 -0
  27. package/dist/cjs/src/adapters/types/index.js +9 -0
  28. package/dist/cjs/src/adapters/types/index.js.map +1 -0
  29. package/dist/cjs/src/ai/ToolExecutor.js +211 -0
  30. package/dist/cjs/src/ai/ToolExecutor.js.map +1 -0
  31. package/dist/cjs/src/ai/ToolMatcher.js +202 -0
  32. package/dist/cjs/src/ai/ToolMatcher.js.map +1 -0
  33. package/dist/cjs/src/ai/index.js +29 -0
  34. package/dist/cjs/src/ai/index.js.map +1 -0
  35. package/dist/cjs/src/architecture/createContainer.js +106 -0
  36. package/dist/cjs/src/architecture/createContainer.js.map +1 -0
  37. package/dist/cjs/src/architecture/initialize.js +125 -0
  38. package/dist/cjs/src/architecture/initialize.js.map +1 -0
  39. package/dist/cjs/src/architecture/registry.js +111 -0
  40. package/dist/cjs/src/architecture/registry.js.map +1 -0
  41. package/dist/cjs/src/background/architecture/ArchitectureInitializer.js +174 -0
  42. package/dist/cjs/src/background/architecture/ArchitectureInitializer.js.map +1 -0
  43. package/dist/cjs/src/background/architecture/Containers.js +46 -0
  44. package/dist/cjs/src/background/architecture/Containers.js.map +1 -0
  45. package/dist/cjs/src/background/architecture/DataContractTypes.js +28 -0
  46. package/dist/cjs/src/background/architecture/DataContractTypes.js.map +1 -0
  47. package/dist/cjs/src/background/architecture/index.js +24 -0
  48. package/dist/cjs/src/background/architecture/index.js.map +1 -0
  49. package/dist/cjs/src/background/navigation/NavigationGraph.js +71 -0
  50. package/dist/cjs/src/background/navigation/NavigationGraph.js.map +1 -0
  51. package/dist/cjs/src/background/navigation/RuntimeTreeBuilder.js +66 -0
  52. package/dist/cjs/src/background/navigation/RuntimeTreeBuilder.js.map +1 -0
  53. package/dist/cjs/src/background/navigation/useComponentTracking.js +20 -0
  54. package/dist/cjs/src/background/navigation/useComponentTracking.js.map +1 -0
  55. package/dist/cjs/src/background/registry/ComponentRegistry.js +340 -0
  56. package/dist/cjs/src/background/registry/ComponentRegistry.js.map +1 -0
  57. package/dist/cjs/src/background/registry/ToolRegistry.js +668 -0
  58. package/dist/cjs/src/background/registry/ToolRegistry.js.map +1 -0
  59. package/dist/cjs/src/browser.js +70 -0
  60. package/dist/cjs/src/browser.js.map +1 -0
  61. package/dist/cjs/src/components/ComponentScanner.js +362 -0
  62. package/dist/cjs/src/components/ComponentScanner.js.map +1 -0
  63. package/dist/cjs/src/components/index.js +24 -0
  64. package/dist/cjs/src/components/index.js.map +1 -0
  65. package/dist/cjs/src/data/TestDataManager.js +187 -0
  66. package/dist/cjs/src/data/TestDataManager.js.map +1 -0
  67. package/dist/cjs/src/data/index.js +23 -0
  68. package/dist/cjs/src/data/index.js.map +1 -0
  69. package/dist/cjs/src/decorators/Component.js +108 -0
  70. package/dist/cjs/src/decorators/Component.js.map +1 -0
  71. package/dist/cjs/src/decorators/ContainerHelpers.js +45 -0
  72. package/dist/cjs/src/decorators/ContainerHelpers.js.map +1 -0
  73. package/dist/cjs/src/decorators/SpecializedTools.js +386 -0
  74. package/dist/cjs/src/decorators/SpecializedTools.js.map +1 -0
  75. package/dist/cjs/src/decorators/Tool.js +700 -0
  76. package/dist/cjs/src/decorators/Tool.js.map +1 -0
  77. package/dist/cjs/src/decorators/ToolHelpers.js +261 -0
  78. package/dist/cjs/src/decorators/ToolHelpers.js.map +1 -0
  79. package/dist/cjs/src/decorators/ToolPreset.js +270 -0
  80. package/dist/cjs/src/decorators/ToolPreset.js.map +1 -0
  81. package/dist/cjs/src/decorators/ToolProvider.js +86 -0
  82. package/dist/cjs/src/decorators/ToolProvider.js.map +1 -0
  83. package/dist/cjs/src/decorators/index.js +44 -0
  84. package/dist/cjs/src/decorators/index.js.map +1 -0
  85. package/dist/cjs/src/execution/DOMExecutor.js +233 -0
  86. package/dist/cjs/src/execution/DOMExecutor.js.map +1 -0
  87. package/dist/cjs/src/execution/PlaywrightExecutor.js +196 -0
  88. package/dist/cjs/src/execution/PlaywrightExecutor.js.map +1 -0
  89. package/dist/cjs/src/exposure/ExposureCollector.js +358 -0
  90. package/dist/cjs/src/exposure/ExposureCollector.js.map +1 -0
  91. package/dist/cjs/src/exposure/index.js +26 -0
  92. package/dist/cjs/src/exposure/index.js.map +1 -0
  93. package/dist/cjs/src/index.js +187 -0
  94. package/dist/cjs/src/index.js.map +1 -0
  95. package/dist/cjs/src/interfaces/StatefulComponent.js +50 -0
  96. package/dist/cjs/src/interfaces/StatefulComponent.js.map +1 -0
  97. package/dist/cjs/src/name-contracts/ContractScanner.js +15 -0
  98. package/dist/cjs/src/name-contracts/ContractScanner.js.map +1 -0
  99. package/dist/cjs/src/name-contracts/RouteContractScanner.js +225 -0
  100. package/dist/cjs/src/name-contracts/RouteContractScanner.js.map +1 -0
  101. package/dist/cjs/src/name-contracts/index.js +15 -0
  102. package/dist/cjs/src/name-contracts/index.js.map +1 -0
  103. package/dist/cjs/src/names/createNames.js +86 -0
  104. package/dist/cjs/src/names/createNames.js.map +1 -0
  105. package/dist/cjs/src/react/hooks/useChatWithContext.js +221 -0
  106. package/dist/cjs/src/react/hooks/useChatWithContext.js.map +1 -0
  107. package/dist/cjs/src/react/index.js +28 -0
  108. package/dist/cjs/src/react/index.js.map +1 -0
  109. package/dist/cjs/src/react/useNavigationHandler.js +88 -0
  110. package/dist/cjs/src/react/useNavigationHandler.js.map +1 -0
  111. package/dist/cjs/src/react/usePersistedState.js +72 -0
  112. package/dist/cjs/src/react/usePersistedState.js.map +1 -0
  113. package/dist/cjs/src/react/useToolBinding.js +110 -0
  114. package/dist/cjs/src/react/useToolBinding.js.map +1 -0
  115. package/dist/cjs/src/routes/RouteContractGenerator.js +119 -0
  116. package/dist/cjs/src/routes/RouteContractGenerator.js.map +1 -0
  117. package/dist/cjs/src/routes/RouteContractsConfig.js +39 -0
  118. package/dist/cjs/src/routes/RouteContractsConfig.js.map +1 -0
  119. package/dist/cjs/src/routes/index.js +20 -0
  120. package/dist/cjs/src/routes/index.js.map +1 -0
  121. package/dist/cjs/src/routes/scanners/NameExtractor.js +193 -0
  122. package/dist/cjs/src/routes/scanners/NameExtractor.js.map +1 -0
  123. package/dist/cjs/src/routes/scanners/NextjsDynamicScanner.js +102 -0
  124. package/dist/cjs/src/routes/scanners/NextjsDynamicScanner.js.map +1 -0
  125. package/dist/cjs/src/routes/scanners/RouteScanner.js +13 -0
  126. package/dist/cjs/src/routes/scanners/RouteScanner.js.map +1 -0
  127. package/dist/cjs/src/storage/LocalStorageAdapter.js +87 -0
  128. package/dist/cjs/src/storage/LocalStorageAdapter.js.map +1 -0
  129. package/dist/cjs/src/storage/StateManager.js +299 -0
  130. package/dist/cjs/src/storage/StateManager.js.map +1 -0
  131. package/dist/cjs/src/storage/StorageAdapter.js +164 -0
  132. package/dist/cjs/src/storage/StorageAdapter.js.map +1 -0
  133. package/dist/cjs/src/storage/index.js +37 -0
  134. package/dist/cjs/src/storage/index.js.map +1 -0
  135. package/dist/cjs/src/testing/BrowserStateInjection.js +130 -0
  136. package/dist/cjs/src/testing/BrowserStateInjection.js.map +1 -0
  137. package/dist/cjs/src/testing/ComponentStateHelpers.js +200 -0
  138. package/dist/cjs/src/testing/ComponentStateHelpers.js.map +1 -0
  139. package/dist/cjs/src/testing/GherkinParser.js +252 -0
  140. package/dist/cjs/src/testing/GherkinParser.js.map +1 -0
  141. package/dist/cjs/src/testing/PlaywrightStateHelpers.js +254 -0
  142. package/dist/cjs/src/testing/PlaywrightStateHelpers.js.map +1 -0
  143. package/dist/cjs/src/testing/TestRunner.js +158 -0
  144. package/dist/cjs/src/testing/TestRunner.js.map +1 -0
  145. package/dist/cjs/src/testing/index.js +46 -0
  146. package/dist/cjs/src/testing/index.js.map +1 -0
  147. package/dist/cjs/src/testing/selectors.js +84 -0
  148. package/dist/cjs/src/testing/selectors.js.map +1 -0
  149. package/dist/cjs/src/tools/SystemTools.js +262 -0
  150. package/dist/cjs/src/tools/SystemTools.js.map +1 -0
  151. package/dist/cjs/src/types/ClassifiedTool.js +50 -0
  152. package/dist/cjs/src/types/ClassifiedTool.js.map +1 -0
  153. package/dist/cjs/src/types/ComponentState.js +30 -0
  154. package/dist/cjs/src/types/ComponentState.js.map +1 -0
  155. package/dist/cjs/src/types/DiscoverableToolProvider.js +9 -0
  156. package/dist/cjs/src/types/DiscoverableToolProvider.js.map +1 -0
  157. package/dist/cjs/src/types/ExposureState.js +25 -0
  158. package/dist/cjs/src/types/ExposureState.js.map +1 -0
  159. package/dist/cjs/src/types/NavigationGraph.js +8 -0
  160. package/dist/cjs/src/types/NavigationGraph.js.map +1 -0
  161. package/dist/cjs/src/types/OperationType.js +49 -0
  162. package/dist/cjs/src/types/OperationType.js.map +1 -0
  163. package/dist/cjs/src/types/StateManagers.js +39 -0
  164. package/dist/cjs/src/types/StateManagers.js.map +1 -0
  165. package/dist/cjs/src/types/Tool.js +41 -0
  166. package/dist/cjs/src/types/Tool.js.map +1 -0
  167. package/dist/cjs/src/types/ToolPermissions.js +54 -0
  168. package/dist/cjs/src/types/ToolPermissions.js.map +1 -0
  169. package/dist/cjs/src/types/ToolResult.js +25 -0
  170. package/dist/cjs/src/types/ToolResult.js.map +1 -0
  171. package/dist/cjs/src/types/index.js +59 -0
  172. package/dist/cjs/src/types/index.js.map +1 -0
  173. package/dist/cjs/src/ui/react/chat/ChatBubble.js +221 -0
  174. package/dist/cjs/src/ui/react/chat/ChatBubble.js.map +1 -0
  175. package/dist/esm/names/API.d.ts +77 -0
  176. package/dist/esm/names/API.d.ts.map +1 -0
  177. package/dist/esm/names/API.js +99 -0
  178. package/dist/esm/names/API.js.map +1 -0
  179. package/dist/esm/names/Components.d.ts +77 -0
  180. package/dist/esm/names/Components.d.ts.map +1 -0
  181. package/dist/esm/names/Components.js +99 -0
  182. package/dist/esm/names/Components.js.map +1 -0
  183. package/dist/esm/names/Containers.d.ts +84 -0
  184. package/dist/esm/names/Containers.d.ts.map +1 -0
  185. package/dist/esm/names/Containers.js +94 -0
  186. package/dist/esm/names/Containers.js.map +1 -0
  187. package/dist/esm/names/Functions.d.ts +87 -0
  188. package/dist/esm/names/Functions.d.ts.map +1 -0
  189. package/dist/esm/names/Functions.js +109 -0
  190. package/dist/esm/names/Functions.js.map +1 -0
  191. package/dist/esm/names/index.d.ts +187 -0
  192. package/dist/esm/names/index.d.ts.map +1 -0
  193. package/dist/esm/names/index.js +99 -0
  194. package/dist/esm/names/index.js.map +1 -0
  195. package/dist/esm/src/adapters/ChatUIProvider.d.ts +76 -0
  196. package/dist/esm/src/adapters/ChatUIProvider.d.ts.map +1 -0
  197. package/dist/esm/src/adapters/ChatUIProvider.js +136 -0
  198. package/dist/esm/src/adapters/ChatUIProvider.js.map +1 -0
  199. package/dist/esm/src/adapters/bridge.d.ts +145 -0
  200. package/dist/esm/src/adapters/bridge.d.ts.map +1 -0
  201. package/dist/esm/src/adapters/bridge.js +218 -0
  202. package/dist/esm/src/adapters/bridge.js.map +1 -0
  203. package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.d.ts +49 -0
  204. package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.d.ts.map +1 -0
  205. package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js +251 -0
  206. package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -0
  207. package/dist/esm/src/adapters/copilotkit/index.d.ts +6 -0
  208. package/dist/esm/src/adapters/copilotkit/index.d.ts.map +1 -0
  209. package/dist/esm/src/adapters/copilotkit/index.js +5 -0
  210. package/dist/esm/src/adapters/copilotkit/index.js.map +1 -0
  211. package/dist/esm/src/adapters/index.d.ts +31 -0
  212. package/dist/esm/src/adapters/index.d.ts.map +1 -0
  213. package/dist/esm/src/adapters/index.js +32 -0
  214. package/dist/esm/src/adapters/index.js.map +1 -0
  215. package/dist/esm/src/adapters/native/NativeAdapter.d.ts +47 -0
  216. package/dist/esm/src/adapters/native/NativeAdapter.d.ts.map +1 -0
  217. package/dist/esm/src/adapters/native/NativeAdapter.js +230 -0
  218. package/dist/esm/src/adapters/native/NativeAdapter.js.map +1 -0
  219. package/dist/esm/src/adapters/native/index.d.ts +6 -0
  220. package/dist/esm/src/adapters/native/index.d.ts.map +1 -0
  221. package/dist/esm/src/adapters/native/index.js +5 -0
  222. package/dist/esm/src/adapters/native/index.js.map +1 -0
  223. package/dist/esm/src/adapters/types/index.d.ts +155 -0
  224. package/dist/esm/src/adapters/types/index.d.ts.map +1 -0
  225. package/dist/esm/src/adapters/types/index.js +8 -0
  226. package/dist/esm/src/adapters/types/index.js.map +1 -0
  227. package/dist/esm/src/ai/ToolExecutor.d.ts +49 -0
  228. package/dist/esm/src/ai/ToolExecutor.d.ts.map +1 -0
  229. package/dist/esm/src/ai/ToolExecutor.js +174 -0
  230. package/dist/esm/src/ai/ToolExecutor.js.map +1 -0
  231. package/dist/esm/src/ai/ToolMatcher.d.ts +61 -0
  232. package/dist/esm/src/ai/ToolMatcher.d.ts.map +1 -0
  233. package/dist/esm/src/ai/ToolMatcher.js +198 -0
  234. package/dist/esm/src/ai/ToolMatcher.js.map +1 -0
  235. package/dist/esm/src/ai/index.d.ts +9 -0
  236. package/dist/esm/src/ai/index.d.ts.map +1 -0
  237. package/dist/esm/src/ai/index.js +13 -0
  238. package/dist/esm/src/ai/index.js.map +1 -0
  239. package/dist/esm/src/architecture/createContainer.d.ts +60 -0
  240. package/dist/esm/src/architecture/createContainer.d.ts.map +1 -0
  241. package/dist/esm/src/architecture/createContainer.js +102 -0
  242. package/dist/esm/src/architecture/createContainer.js.map +1 -0
  243. package/dist/esm/src/architecture/initialize.d.ts +81 -0
  244. package/dist/esm/src/architecture/initialize.d.ts.map +1 -0
  245. package/dist/esm/src/architecture/initialize.js +121 -0
  246. package/dist/esm/src/architecture/initialize.js.map +1 -0
  247. package/dist/esm/src/architecture/registry.d.ts +61 -0
  248. package/dist/esm/src/architecture/registry.d.ts.map +1 -0
  249. package/dist/esm/src/architecture/registry.js +107 -0
  250. package/dist/esm/src/architecture/registry.js.map +1 -0
  251. package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts +95 -0
  252. package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts.map +1 -0
  253. package/dist/esm/src/background/architecture/ArchitectureInitializer.js +170 -0
  254. package/dist/esm/src/background/architecture/ArchitectureInitializer.js.map +1 -0
  255. package/dist/esm/src/background/architecture/Containers.d.ts +52 -0
  256. package/dist/esm/src/background/architecture/Containers.d.ts.map +1 -0
  257. package/dist/esm/src/background/architecture/Containers.js +40 -0
  258. package/dist/esm/src/background/architecture/Containers.js.map +1 -0
  259. package/dist/esm/src/background/architecture/DataContractTypes.d.ts +33 -0
  260. package/dist/esm/src/background/architecture/DataContractTypes.d.ts.map +1 -0
  261. package/dist/esm/src/background/architecture/DataContractTypes.js +22 -0
  262. package/dist/esm/src/background/architecture/DataContractTypes.js.map +1 -0
  263. package/dist/esm/src/background/architecture/index.d.ts +12 -0
  264. package/dist/esm/src/background/architecture/index.d.ts.map +1 -0
  265. package/dist/esm/src/background/architecture/index.js +13 -0
  266. package/dist/esm/src/background/architecture/index.js.map +1 -0
  267. package/dist/esm/src/background/navigation/NavigationGraph.d.ts +48 -0
  268. package/dist/esm/src/background/navigation/NavigationGraph.d.ts.map +1 -0
  269. package/dist/esm/src/background/navigation/NavigationGraph.js +67 -0
  270. package/dist/esm/src/background/navigation/NavigationGraph.js.map +1 -0
  271. package/dist/esm/src/background/navigation/RuntimeTreeBuilder.d.ts +30 -0
  272. package/dist/esm/src/background/navigation/RuntimeTreeBuilder.d.ts.map +1 -0
  273. package/dist/esm/src/background/navigation/RuntimeTreeBuilder.js +60 -0
  274. package/dist/esm/src/background/navigation/RuntimeTreeBuilder.js.map +1 -0
  275. package/dist/esm/src/background/navigation/useComponentTracking.d.ts +10 -0
  276. package/dist/esm/src/background/navigation/useComponentTracking.d.ts.map +1 -0
  277. package/dist/esm/src/background/navigation/useComponentTracking.js +17 -0
  278. package/dist/esm/src/background/navigation/useComponentTracking.js.map +1 -0
  279. package/dist/esm/src/background/registry/ComponentRegistry.d.ts +192 -0
  280. package/dist/esm/src/background/registry/ComponentRegistry.d.ts.map +1 -0
  281. package/dist/esm/src/background/registry/ComponentRegistry.js +336 -0
  282. package/dist/esm/src/background/registry/ComponentRegistry.js.map +1 -0
  283. package/dist/esm/src/background/registry/ToolRegistry.d.ts +232 -0
  284. package/dist/esm/src/background/registry/ToolRegistry.d.ts.map +1 -0
  285. package/dist/esm/src/background/registry/ToolRegistry.js +664 -0
  286. package/dist/esm/src/background/registry/ToolRegistry.js.map +1 -0
  287. package/dist/esm/src/browser.d.ts +21 -0
  288. package/dist/esm/src/browser.d.ts.map +1 -0
  289. package/dist/esm/src/browser.js +31 -0
  290. package/dist/esm/src/browser.js.map +1 -0
  291. package/dist/esm/src/components/ComponentScanner.d.ts +99 -0
  292. package/dist/esm/src/components/ComponentScanner.d.ts.map +1 -0
  293. package/dist/esm/src/components/ComponentScanner.js +325 -0
  294. package/dist/esm/src/components/ComponentScanner.js.map +1 -0
  295. package/dist/esm/src/components/index.d.ts +9 -0
  296. package/dist/esm/src/components/index.d.ts.map +1 -0
  297. package/dist/esm/src/components/index.js +8 -0
  298. package/dist/esm/src/components/index.js.map +1 -0
  299. package/dist/esm/src/data/TestDataManager.d.ts +125 -0
  300. package/dist/esm/src/data/TestDataManager.d.ts.map +1 -0
  301. package/dist/esm/src/data/TestDataManager.js +183 -0
  302. package/dist/esm/src/data/TestDataManager.js.map +1 -0
  303. package/dist/esm/src/data/index.d.ts +7 -0
  304. package/dist/esm/src/data/index.d.ts.map +1 -0
  305. package/dist/esm/src/data/index.js +7 -0
  306. package/dist/esm/src/data/index.js.map +1 -0
  307. package/dist/esm/src/decorators/Component.d.ts +59 -0
  308. package/dist/esm/src/decorators/Component.d.ts.map +1 -0
  309. package/dist/esm/src/decorators/Component.js +103 -0
  310. package/dist/esm/src/decorators/Component.js.map +1 -0
  311. package/dist/esm/src/decorators/ContainerHelpers.d.ts +26 -0
  312. package/dist/esm/src/decorators/ContainerHelpers.d.ts.map +1 -0
  313. package/dist/esm/src/decorators/ContainerHelpers.js +42 -0
  314. package/dist/esm/src/decorators/ContainerHelpers.js.map +1 -0
  315. package/dist/esm/src/decorators/SpecializedTools.d.ts +218 -0
  316. package/dist/esm/src/decorators/SpecializedTools.d.ts.map +1 -0
  317. package/dist/esm/src/decorators/SpecializedTools.js +383 -0
  318. package/dist/esm/src/decorators/SpecializedTools.js.map +1 -0
  319. package/dist/esm/src/decorators/Tool.d.ts +210 -0
  320. package/dist/esm/src/decorators/Tool.d.ts.map +1 -0
  321. package/dist/esm/src/decorators/Tool.js +694 -0
  322. package/dist/esm/src/decorators/Tool.js.map +1 -0
  323. package/dist/esm/src/decorators/ToolHelpers.d.ts +74 -0
  324. package/dist/esm/src/decorators/ToolHelpers.d.ts.map +1 -0
  325. package/dist/esm/src/decorators/ToolHelpers.js +219 -0
  326. package/dist/esm/src/decorators/ToolHelpers.js.map +1 -0
  327. package/dist/esm/src/decorators/ToolPreset.d.ts +138 -0
  328. package/dist/esm/src/decorators/ToolPreset.d.ts.map +1 -0
  329. package/dist/esm/src/decorators/ToolPreset.js +259 -0
  330. package/dist/esm/src/decorators/ToolPreset.js.map +1 -0
  331. package/dist/esm/src/decorators/ToolProvider.d.ts +65 -0
  332. package/dist/esm/src/decorators/ToolProvider.d.ts.map +1 -0
  333. package/dist/esm/src/decorators/ToolProvider.js +81 -0
  334. package/dist/esm/src/decorators/ToolProvider.js.map +1 -0
  335. package/dist/esm/src/decorators/index.d.ts +13 -0
  336. package/dist/esm/src/decorators/index.d.ts.map +1 -0
  337. package/dist/esm/src/decorators/index.js +14 -0
  338. package/dist/esm/src/decorators/index.js.map +1 -0
  339. package/dist/esm/src/execution/DOMExecutor.d.ts +43 -0
  340. package/dist/esm/src/execution/DOMExecutor.d.ts.map +1 -0
  341. package/dist/esm/src/execution/DOMExecutor.js +229 -0
  342. package/dist/esm/src/execution/DOMExecutor.js.map +1 -0
  343. package/dist/esm/src/execution/PlaywrightExecutor.d.ts +38 -0
  344. package/dist/esm/src/execution/PlaywrightExecutor.d.ts.map +1 -0
  345. package/dist/esm/src/execution/PlaywrightExecutor.js +192 -0
  346. package/dist/esm/src/execution/PlaywrightExecutor.js.map +1 -0
  347. package/dist/esm/src/exposure/ExposureCollector.d.ts +88 -0
  348. package/dist/esm/src/exposure/ExposureCollector.d.ts.map +1 -0
  349. package/dist/esm/src/exposure/ExposureCollector.js +354 -0
  350. package/dist/esm/src/exposure/ExposureCollector.js.map +1 -0
  351. package/dist/esm/src/exposure/index.d.ts +8 -0
  352. package/dist/esm/src/exposure/index.d.ts.map +1 -0
  353. package/dist/esm/src/exposure/index.js +10 -0
  354. package/dist/esm/src/exposure/index.js.map +1 -0
  355. package/dist/esm/src/index.d.ts +49 -0
  356. package/dist/esm/src/index.d.ts.map +1 -0
  357. package/dist/esm/src/index.js +79 -0
  358. package/dist/esm/src/index.js.map +1 -0
  359. package/dist/esm/src/interfaces/StatefulComponent.d.ts +72 -0
  360. package/dist/esm/src/interfaces/StatefulComponent.d.ts.map +1 -0
  361. package/dist/esm/src/interfaces/StatefulComponent.js +47 -0
  362. package/dist/esm/src/interfaces/StatefulComponent.js.map +1 -0
  363. package/dist/esm/src/name-contracts/ContractScanner.d.ts +61 -0
  364. package/dist/esm/src/name-contracts/ContractScanner.d.ts.map +1 -0
  365. package/dist/esm/src/name-contracts/ContractScanner.js +11 -0
  366. package/dist/esm/src/name-contracts/ContractScanner.js.map +1 -0
  367. package/dist/esm/src/name-contracts/RouteContractScanner.d.ts +30 -0
  368. package/dist/esm/src/name-contracts/RouteContractScanner.d.ts.map +1 -0
  369. package/dist/esm/src/name-contracts/RouteContractScanner.js +188 -0
  370. package/dist/esm/src/name-contracts/RouteContractScanner.js.map +1 -0
  371. package/dist/esm/src/name-contracts/index.d.ts +10 -0
  372. package/dist/esm/src/name-contracts/index.d.ts.map +1 -0
  373. package/dist/esm/src/name-contracts/index.js +10 -0
  374. package/dist/esm/src/name-contracts/index.js.map +1 -0
  375. package/dist/esm/src/names/createNames.d.ts +49 -0
  376. package/dist/esm/src/names/createNames.d.ts.map +1 -0
  377. package/dist/esm/src/names/createNames.js +81 -0
  378. package/dist/esm/src/names/createNames.js.map +1 -0
  379. package/dist/esm/src/react/hooks/useChatWithContext.d.ts +68 -0
  380. package/dist/esm/src/react/hooks/useChatWithContext.d.ts.map +1 -0
  381. package/dist/esm/src/react/hooks/useChatWithContext.js +218 -0
  382. package/dist/esm/src/react/hooks/useChatWithContext.js.map +1 -0
  383. package/dist/esm/src/react/index.d.ts +12 -0
  384. package/dist/esm/src/react/index.d.ts.map +1 -0
  385. package/dist/esm/src/react/index.js +21 -0
  386. package/dist/esm/src/react/index.js.map +1 -0
  387. package/dist/esm/src/react/useNavigationHandler.d.ts +42 -0
  388. package/dist/esm/src/react/useNavigationHandler.d.ts.map +1 -0
  389. package/dist/esm/src/react/useNavigationHandler.js +85 -0
  390. package/dist/esm/src/react/useNavigationHandler.js.map +1 -0
  391. package/dist/esm/src/react/usePersistedState.d.ts +13 -0
  392. package/dist/esm/src/react/usePersistedState.d.ts.map +1 -0
  393. package/dist/esm/src/react/usePersistedState.js +69 -0
  394. package/dist/esm/src/react/usePersistedState.js.map +1 -0
  395. package/dist/esm/src/react/useToolBinding.d.ts +8 -0
  396. package/dist/esm/src/react/useToolBinding.d.ts.map +1 -0
  397. package/dist/esm/src/react/useToolBinding.js +107 -0
  398. package/dist/esm/src/react/useToolBinding.js.map +1 -0
  399. package/dist/esm/src/routes/RouteContractGenerator.d.ts +37 -0
  400. package/dist/esm/src/routes/RouteContractGenerator.d.ts.map +1 -0
  401. package/dist/esm/src/routes/RouteContractGenerator.js +115 -0
  402. package/dist/esm/src/routes/RouteContractGenerator.js.map +1 -0
  403. package/dist/esm/src/routes/RouteContractsConfig.d.ts +93 -0
  404. package/dist/esm/src/routes/RouteContractsConfig.d.ts.map +1 -0
  405. package/dist/esm/src/routes/RouteContractsConfig.js +36 -0
  406. package/dist/esm/src/routes/RouteContractsConfig.js.map +1 -0
  407. package/dist/esm/src/routes/index.d.ts +13 -0
  408. package/dist/esm/src/routes/index.d.ts.map +1 -0
  409. package/dist/esm/src/routes/index.js +13 -0
  410. package/dist/esm/src/routes/index.js.map +1 -0
  411. package/dist/esm/src/routes/scanners/NameExtractor.d.ts +36 -0
  412. package/dist/esm/src/routes/scanners/NameExtractor.d.ts.map +1 -0
  413. package/dist/esm/src/routes/scanners/NameExtractor.js +156 -0
  414. package/dist/esm/src/routes/scanners/NameExtractor.js.map +1 -0
  415. package/dist/esm/src/routes/scanners/NextjsDynamicScanner.d.ts +35 -0
  416. package/dist/esm/src/routes/scanners/NextjsDynamicScanner.d.ts.map +1 -0
  417. package/dist/esm/src/routes/scanners/NextjsDynamicScanner.js +98 -0
  418. package/dist/esm/src/routes/scanners/NextjsDynamicScanner.js.map +1 -0
  419. package/dist/esm/src/routes/scanners/RouteScanner.d.ts +64 -0
  420. package/dist/esm/src/routes/scanners/RouteScanner.d.ts.map +1 -0
  421. package/dist/esm/src/routes/scanners/RouteScanner.js +9 -0
  422. package/dist/esm/src/routes/scanners/RouteScanner.js.map +1 -0
  423. package/dist/esm/src/storage/LocalStorageAdapter.d.ts +29 -0
  424. package/dist/esm/src/storage/LocalStorageAdapter.d.ts.map +1 -0
  425. package/dist/esm/src/storage/LocalStorageAdapter.js +83 -0
  426. package/dist/esm/src/storage/LocalStorageAdapter.js.map +1 -0
  427. package/dist/esm/src/storage/StateManager.d.ts +175 -0
  428. package/dist/esm/src/storage/StateManager.d.ts.map +1 -0
  429. package/dist/esm/src/storage/StateManager.js +295 -0
  430. package/dist/esm/src/storage/StateManager.js.map +1 -0
  431. package/dist/esm/src/storage/StorageAdapter.d.ts +94 -0
  432. package/dist/esm/src/storage/StorageAdapter.d.ts.map +1 -0
  433. package/dist/esm/src/storage/StorageAdapter.js +158 -0
  434. package/dist/esm/src/storage/StorageAdapter.js.map +1 -0
  435. package/dist/esm/src/storage/index.d.ts +12 -0
  436. package/dist/esm/src/storage/index.d.ts.map +1 -0
  437. package/dist/esm/src/storage/index.js +17 -0
  438. package/dist/esm/src/storage/index.js.map +1 -0
  439. package/dist/esm/src/testing/BrowserStateInjection.d.ts +74 -0
  440. package/dist/esm/src/testing/BrowserStateInjection.d.ts.map +1 -0
  441. package/dist/esm/src/testing/BrowserStateInjection.js +126 -0
  442. package/dist/esm/src/testing/BrowserStateInjection.js.map +1 -0
  443. package/dist/esm/src/testing/ComponentStateHelpers.d.ts +121 -0
  444. package/dist/esm/src/testing/ComponentStateHelpers.d.ts.map +1 -0
  445. package/dist/esm/src/testing/ComponentStateHelpers.js +190 -0
  446. package/dist/esm/src/testing/ComponentStateHelpers.js.map +1 -0
  447. package/dist/esm/src/testing/GherkinParser.d.ts +87 -0
  448. package/dist/esm/src/testing/GherkinParser.d.ts.map +1 -0
  449. package/dist/esm/src/testing/GherkinParser.js +248 -0
  450. package/dist/esm/src/testing/GherkinParser.js.map +1 -0
  451. package/dist/esm/src/testing/PlaywrightStateHelpers.d.ts +163 -0
  452. package/dist/esm/src/testing/PlaywrightStateHelpers.d.ts.map +1 -0
  453. package/dist/esm/src/testing/PlaywrightStateHelpers.js +242 -0
  454. package/dist/esm/src/testing/PlaywrightStateHelpers.js.map +1 -0
  455. package/dist/esm/src/testing/TestRunner.d.ts +50 -0
  456. package/dist/esm/src/testing/TestRunner.d.ts.map +1 -0
  457. package/dist/esm/src/testing/TestRunner.js +121 -0
  458. package/dist/esm/src/testing/TestRunner.js.map +1 -0
  459. package/dist/esm/src/testing/index.d.ts +12 -0
  460. package/dist/esm/src/testing/index.d.ts.map +1 -0
  461. package/dist/esm/src/testing/index.js +25 -0
  462. package/dist/esm/src/testing/index.js.map +1 -0
  463. package/dist/esm/src/testing/selectors.d.ts +65 -0
  464. package/dist/esm/src/testing/selectors.d.ts.map +1 -0
  465. package/dist/esm/src/testing/selectors.js +76 -0
  466. package/dist/esm/src/testing/selectors.js.map +1 -0
  467. package/dist/esm/src/tools/SystemTools.d.ts +139 -0
  468. package/dist/esm/src/tools/SystemTools.d.ts.map +1 -0
  469. package/dist/esm/src/tools/SystemTools.js +258 -0
  470. package/dist/esm/src/tools/SystemTools.js.map +1 -0
  471. package/dist/esm/src/types/ClassifiedTool.d.ts +61 -0
  472. package/dist/esm/src/types/ClassifiedTool.d.ts.map +1 -0
  473. package/dist/esm/src/types/ClassifiedTool.js +47 -0
  474. package/dist/esm/src/types/ClassifiedTool.js.map +1 -0
  475. package/dist/esm/src/types/ComponentState.d.ts +207 -0
  476. package/dist/esm/src/types/ComponentState.d.ts.map +1 -0
  477. package/dist/esm/src/types/ComponentState.js +25 -0
  478. package/dist/esm/src/types/ComponentState.js.map +1 -0
  479. package/dist/esm/src/types/DiscoverableToolProvider.d.ts +59 -0
  480. package/dist/esm/src/types/DiscoverableToolProvider.d.ts.map +1 -0
  481. package/dist/esm/src/types/DiscoverableToolProvider.js +8 -0
  482. package/dist/esm/src/types/DiscoverableToolProvider.js.map +1 -0
  483. package/dist/esm/src/types/ExposureState.d.ts +75 -0
  484. package/dist/esm/src/types/ExposureState.d.ts.map +1 -0
  485. package/dist/esm/src/types/ExposureState.js +22 -0
  486. package/dist/esm/src/types/ExposureState.js.map +1 -0
  487. package/dist/esm/src/types/NavigationGraph.d.ts +98 -0
  488. package/dist/esm/src/types/NavigationGraph.d.ts.map +1 -0
  489. package/dist/esm/src/types/NavigationGraph.js +7 -0
  490. package/dist/esm/src/types/NavigationGraph.js.map +1 -0
  491. package/dist/esm/src/types/OperationType.d.ts +45 -0
  492. package/dist/esm/src/types/OperationType.d.ts.map +1 -0
  493. package/dist/esm/src/types/OperationType.js +46 -0
  494. package/dist/esm/src/types/OperationType.js.map +1 -0
  495. package/dist/esm/src/types/StateManagers.d.ts +35 -0
  496. package/dist/esm/src/types/StateManagers.d.ts.map +1 -0
  497. package/dist/esm/src/types/StateManagers.js +36 -0
  498. package/dist/esm/src/types/StateManagers.js.map +1 -0
  499. package/dist/esm/src/types/Tool.d.ts +162 -0
  500. package/dist/esm/src/types/Tool.d.ts.map +1 -0
  501. package/dist/esm/src/types/Tool.js +38 -0
  502. package/dist/esm/src/types/Tool.js.map +1 -0
  503. package/dist/esm/src/types/ToolPermissions.d.ts +73 -0
  504. package/dist/esm/src/types/ToolPermissions.d.ts.map +1 -0
  505. package/dist/esm/src/types/ToolPermissions.js +51 -0
  506. package/dist/esm/src/types/ToolPermissions.js.map +1 -0
  507. package/dist/esm/src/types/ToolResult.d.ts +129 -0
  508. package/dist/esm/src/types/ToolResult.d.ts.map +1 -0
  509. package/dist/esm/src/types/ToolResult.js +22 -0
  510. package/dist/esm/src/types/ToolResult.js.map +1 -0
  511. package/dist/esm/src/types/index.d.ts +47 -0
  512. package/dist/esm/src/types/index.d.ts.map +1 -0
  513. package/dist/esm/src/types/index.js +42 -0
  514. package/dist/esm/src/types/index.js.map +1 -0
  515. package/dist/esm/src/ui/react/chat/ChatBubble.d.ts +23 -0
  516. package/dist/esm/src/ui/react/chat/ChatBubble.d.ts.map +1 -0
  517. package/dist/esm/src/ui/react/chat/ChatBubble.js +184 -0
  518. package/dist/esm/src/ui/react/chat/ChatBubble.js.map +1 -0
  519. package/package.json +118 -0
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Browser State Injection - Test Utilities
3
+ *
4
+ * Provides mechanism for E2E tests to set and read component state
5
+ * in the browser context. Only active in test environments.
6
+ *
7
+ * @module BrowserStateInjection
8
+ */
9
+ /**
10
+ * Global test state interface
11
+ * Exposed on window for Playwright tests to access
12
+ */
13
+ export interface TestStateManager {
14
+ /**
15
+ * Set component state via custom event
16
+ * @param component - Component name (from @Component decorator)
17
+ * @param state - Partial state to merge
18
+ */
19
+ setState(component: string, state: any): void;
20
+ /**
21
+ * Get component state by reading data-state attribute
22
+ * @param component - Component name
23
+ * @returns Current component state or undefined
24
+ */
25
+ getState(component: string): any | undefined;
26
+ /**
27
+ * Wait for component to be ready (registered and rendered)
28
+ * @param component - Component name
29
+ * @param timeoutMs - Timeout in milliseconds (default: 5000)
30
+ */
31
+ waitForComponent(component: string, timeoutMs?: number): Promise<void>;
32
+ /**
33
+ * Reset component to initial state
34
+ * @param component - Component name
35
+ */
36
+ resetState(component: string): void;
37
+ /**
38
+ * Check if component is registered and available
39
+ * @param component - Component name
40
+ */
41
+ hasComponent(component: string): boolean;
42
+ }
43
+ /**
44
+ * Custom event detail for state updates
45
+ */
46
+ export interface StateUpdateEvent {
47
+ component: string;
48
+ state: any;
49
+ }
50
+ /**
51
+ * Custom event detail for state reset
52
+ */
53
+ export interface StateResetEvent {
54
+ component: string;
55
+ }
56
+ /**
57
+ * Initialize test state manager on window
58
+ * Only runs in test environment
59
+ */
60
+ export declare function initializeTestStateManager(): void;
61
+ /**
62
+ * Get test state manager from window
63
+ * Returns undefined if not in browser or not test environment
64
+ */
65
+ export declare function getTestStateManager(): TestStateManager | undefined;
66
+ /**
67
+ * Type augmentation for Window interface
68
+ */
69
+ declare global {
70
+ interface Window {
71
+ __testState__?: TestStateManager;
72
+ }
73
+ }
74
+ //# sourceMappingURL=BrowserStateInjection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserStateInjection.d.ts","sourceRoot":"","sources":["../../../../src/testing/BrowserStateInjection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAE9C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;IAE7C;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvE;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,GAAG,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAqGD;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAmBjD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,SAAS,CAMlE;AAOD;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,aAAa,CAAC,EAAE,gBAAgB,CAAC;KAClC;CACF"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Browser State Injection - Test Utilities
3
+ *
4
+ * Provides mechanism for E2E tests to set and read component state
5
+ * in the browser context. Only active in test environments.
6
+ *
7
+ * @module BrowserStateInjection
8
+ */
9
+ /**
10
+ * Test state manager implementation
11
+ * Available as window.__testState__ in test environments
12
+ */
13
+ class BrowserTestStateManager {
14
+ constructor() {
15
+ this.eventPrefix = 'test:';
16
+ }
17
+ setState(component, state) {
18
+ if (typeof window === 'undefined') {
19
+ throw new Error('setState can only be called in browser context');
20
+ }
21
+ const event = new CustomEvent(`${this.eventPrefix}setState`, {
22
+ detail: { component, state },
23
+ bubbles: false,
24
+ cancelable: false,
25
+ });
26
+ window.dispatchEvent(event);
27
+ // Also log for debugging
28
+ if (process.env.NODE_ENV === 'test') {
29
+ console.log(`[TEST] setState: ${component}`, state);
30
+ }
31
+ }
32
+ getState(component) {
33
+ if (typeof window === 'undefined') {
34
+ throw new Error('getState can only be called in browser context');
35
+ }
36
+ // Find element by component name
37
+ const element = document.querySelector(`[data-component="${component}"]`);
38
+ if (!element) {
39
+ return undefined;
40
+ }
41
+ // Read state from data-state attribute
42
+ const stateAttr = element.getAttribute('data-state');
43
+ if (!stateAttr) {
44
+ return undefined;
45
+ }
46
+ try {
47
+ return JSON.parse(stateAttr);
48
+ }
49
+ catch (error) {
50
+ console.error(`[TEST] Failed to parse state for ${component}:`, error);
51
+ return undefined;
52
+ }
53
+ }
54
+ async waitForComponent(component, timeoutMs = 5000) {
55
+ if (typeof window === 'undefined') {
56
+ throw new Error('waitForComponent can only be called in browser context');
57
+ }
58
+ const startTime = Date.now();
59
+ while (Date.now() - startTime < timeoutMs) {
60
+ const element = document.querySelector(`[data-component="${component}"]`);
61
+ if (element) {
62
+ // Component element exists, wait a bit for React to initialize
63
+ await new Promise(resolve => setTimeout(resolve, 100));
64
+ return;
65
+ }
66
+ await new Promise(resolve => setTimeout(resolve, 100));
67
+ }
68
+ throw new Error(`Component '${component}' not found after ${timeoutMs}ms`);
69
+ }
70
+ resetState(component) {
71
+ if (typeof window === 'undefined') {
72
+ throw new Error('resetState can only be called in browser context');
73
+ }
74
+ const event = new CustomEvent(`${this.eventPrefix}resetState`, {
75
+ detail: { component },
76
+ bubbles: false,
77
+ cancelable: false,
78
+ });
79
+ window.dispatchEvent(event);
80
+ if (process.env.NODE_ENV === 'test') {
81
+ console.log(`[TEST] resetState: ${component}`);
82
+ }
83
+ }
84
+ hasComponent(component) {
85
+ if (typeof window === 'undefined') {
86
+ return false;
87
+ }
88
+ const element = document.querySelector(`[data-component="${component}"]`);
89
+ return !!element;
90
+ }
91
+ }
92
+ /**
93
+ * Initialize test state manager on window
94
+ * Only runs in test environment
95
+ */
96
+ export function initializeTestStateManager() {
97
+ if (typeof window === 'undefined') {
98
+ return;
99
+ }
100
+ // Only initialize in test environment
101
+ if (process.env.NODE_ENV !== 'test') {
102
+ return;
103
+ }
104
+ // Check if already initialized
105
+ if (window.__testState__) {
106
+ return;
107
+ }
108
+ // Create and expose test state manager
109
+ window.__testState__ = new BrowserTestStateManager();
110
+ console.log('[TEST] Browser state injection initialized');
111
+ }
112
+ /**
113
+ * Get test state manager from window
114
+ * Returns undefined if not in browser or not test environment
115
+ */
116
+ export function getTestStateManager() {
117
+ if (typeof window === 'undefined') {
118
+ return undefined;
119
+ }
120
+ return window.__testState__;
121
+ }
122
+ // Auto-initialize in test environment
123
+ if (typeof window !== 'undefined' && process.env.NODE_ENV === 'test') {
124
+ initializeTestStateManager();
125
+ }
126
+ //# sourceMappingURL=BrowserStateInjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserStateInjection.js","sourceRoot":"","sources":["../../../../src/testing/BrowserStateInjection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Generalized State-Based Test Helpers
3
+ *
4
+ * Utilities for testing ANY component using data contracts instead of UI text.
5
+ * These helpers provide a component-agnostic way to assert state.
6
+ *
7
+ * @module tests/generalized-state-helpers
8
+ */
9
+ import { Page } from '@playwright/test';
10
+ /**
11
+ * Get state from any component that exposes it
12
+ *
13
+ * @param page - Playwright page
14
+ * @param componentId - Component identifier (e.g., 'demo-widgets', 'chat', 'counter')
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const state = await getComponentState(page, 'demo-widgets');
19
+ * ```
20
+ */
21
+ export declare function getComponentState<TState = any>(page: Page, componentId: string): Promise<TState>;
22
+ /**
23
+ * Assert component state matches expected values
24
+ *
25
+ * @param page - Playwright page
26
+ * @param componentId - Component identifier
27
+ * @param expected - Partial state to match
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * await assertComponentState(page, 'demo-widgets', { menuOpen: true });
32
+ * await assertComponentState(page, 'counter', { count: 5 });
33
+ * await assertComponentState(page, 'chat', { isMinimized: false });
34
+ * ```
35
+ */
36
+ export declare function assertComponentState<TState = any>(page: Page, componentId: string, expected: Partial<TState>): Promise<void>;
37
+ /**
38
+ * Set component state (if component supports it)
39
+ *
40
+ * @param page - Playwright page
41
+ * @param componentId - Component identifier
42
+ * @param updates - Partial state to set
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * await setComponentState(page, 'demo-widgets', { theme: 'dark' });
47
+ * ```
48
+ */
49
+ export declare function setComponentState<TState = any>(page: Page, componentId: string, updates: Partial<TState>): Promise<void>;
50
+ /**
51
+ * Wait for component state to match condition
52
+ *
53
+ * @param page - Playwright page
54
+ * @param componentId - Component identifier
55
+ * @param condition - Function that returns true when state is ready
56
+ * @param options - Timeout and polling options
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * await waitForComponentState(page, 'chat',
61
+ * state => state.messages.length > 0
62
+ * );
63
+ * ```
64
+ */
65
+ export declare function waitForComponentState<TState = any>(page: Page, componentId: string, condition: (state: TState) => boolean, options?: {
66
+ timeout?: number;
67
+ pollInterval?: number;
68
+ }): Promise<void>;
69
+ /**
70
+ * Assert state via data-state attributes (alternative approach)
71
+ * Useful when component doesn't expose JS state but adds data attributes
72
+ *
73
+ * @param page - Playwright page
74
+ * @param selector - CSS selector for component
75
+ * @param attribute - data-state-* attribute name
76
+ * @param expectedValue - Expected attribute value
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * await assertStateAttribute(page, '[data-testid="menu"]', 'data-state-open', 'true');
81
+ * ```
82
+ */
83
+ export declare function assertStateAttribute(page: Page, selector: string, attribute: string, expectedValue: string): Promise<void>;
84
+ /**
85
+ * Get all registered component state IDs
86
+ * Useful for debugging
87
+ *
88
+ * @param page - Playwright page
89
+ * @returns Array of component IDs that expose state
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * const components = await getRegisteredComponents(page);
94
+ * console.log('Available:', components); // ['demo-widgets', 'chat', 'counter']
95
+ * ```
96
+ */
97
+ export declare function getRegisteredComponents(page: Page): Promise<string[]>;
98
+ /**
99
+ * Debug helper: Print current state of a component
100
+ *
101
+ * @param page - Playwright page
102
+ * @param componentId - Component identifier
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * await debugComponentState(page, 'demo-widgets');
107
+ * ```
108
+ */
109
+ export declare function debugComponentState(page: Page, componentId: string): Promise<void>;
110
+ /**
111
+ * Debug helper: Print all component states
112
+ *
113
+ * @param page - Playwright page
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * await debugAllComponentStates(page);
118
+ * ```
119
+ */
120
+ export declare function debugAllComponentStates(page: Page): Promise<void>;
121
+ //# sourceMappingURL=ComponentStateHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentStateHelpers.d.ts","sourceRoot":"","sources":["../../../../src/testing/ComponentStateHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAU,MAAM,kBAAkB,CAAC;AAWhD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,GAAG,GAAG,EAClD,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,GAAG,GAAG,EACrD,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,GAAG,GAAG,EAClD,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GACvB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,GAAG,GAAG,EACtD,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,EACrC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAI3E;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAevE"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Generalized State-Based Test Helpers
3
+ *
4
+ * Utilities for testing ANY component using data contracts instead of UI text.
5
+ * These helpers provide a component-agnostic way to assert state.
6
+ *
7
+ * @module tests/generalized-state-helpers
8
+ */
9
+ import { expect } from '@playwright/test';
10
+ /**
11
+ * Get state from any component that exposes it
12
+ *
13
+ * @param page - Playwright page
14
+ * @param componentId - Component identifier (e.g., 'demo-widgets', 'chat', 'counter')
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const state = await getComponentState(page, 'demo-widgets');
19
+ * ```
20
+ */
21
+ export async function getComponentState(page, componentId) {
22
+ return await page.evaluate((id) => {
23
+ if (window.__componentState__?.[id]) {
24
+ return window.__componentState__[id].get();
25
+ }
26
+ throw new Error(`Component state not exposed for: ${id}\n` +
27
+ `Available components: ${Object.keys(window.__componentState__ || {}).join(', ')}\n` +
28
+ `Make sure the component exposes state via window.__componentState__['${id}']`);
29
+ }, componentId);
30
+ }
31
+ /**
32
+ * Assert component state matches expected values
33
+ *
34
+ * @param page - Playwright page
35
+ * @param componentId - Component identifier
36
+ * @param expected - Partial state to match
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * await assertComponentState(page, 'demo-widgets', { menuOpen: true });
41
+ * await assertComponentState(page, 'counter', { count: 5 });
42
+ * await assertComponentState(page, 'chat', { isMinimized: false });
43
+ * ```
44
+ */
45
+ export async function assertComponentState(page, componentId, expected) {
46
+ const actual = await getComponentState(page, componentId);
47
+ // Check each expected key matches
48
+ for (const key of Object.keys(expected)) {
49
+ const expectedValue = expected[key];
50
+ const actualValue = actual[key];
51
+ if (JSON.stringify(actualValue) !== JSON.stringify(expectedValue)) {
52
+ throw new Error(`State mismatch for component "${componentId}".\n` +
53
+ `Field: ${key}\n` +
54
+ `Expected: ${JSON.stringify(expectedValue)}\n` +
55
+ `Actual: ${JSON.stringify(actualValue)}\n` +
56
+ `Full state: ${JSON.stringify(actual, null, 2)}`);
57
+ }
58
+ }
59
+ }
60
+ /**
61
+ * Set component state (if component supports it)
62
+ *
63
+ * @param page - Playwright page
64
+ * @param componentId - Component identifier
65
+ * @param updates - Partial state to set
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * await setComponentState(page, 'demo-widgets', { theme: 'dark' });
70
+ * ```
71
+ */
72
+ export async function setComponentState(page, componentId, updates) {
73
+ await page.evaluate(({ id, state }) => {
74
+ if (window.__componentState__?.[id]?.update) {
75
+ window.__componentState__[id].update(state);
76
+ }
77
+ else {
78
+ throw new Error(`Component ${id} does not support state updates or is not exposed`);
79
+ }
80
+ }, { id: componentId, state: updates });
81
+ }
82
+ /**
83
+ * Wait for component state to match condition
84
+ *
85
+ * @param page - Playwright page
86
+ * @param componentId - Component identifier
87
+ * @param condition - Function that returns true when state is ready
88
+ * @param options - Timeout and polling options
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * await waitForComponentState(page, 'chat',
93
+ * state => state.messages.length > 0
94
+ * );
95
+ * ```
96
+ */
97
+ export async function waitForComponentState(page, componentId, condition, options = {}) {
98
+ const { timeout = 5000, pollInterval = 100 } = options;
99
+ const startTime = Date.now();
100
+ while (Date.now() - startTime < timeout) {
101
+ const state = await getComponentState(page, componentId);
102
+ if (condition(state)) {
103
+ return;
104
+ }
105
+ await page.waitForTimeout(pollInterval);
106
+ }
107
+ const currentState = await getComponentState(page, componentId);
108
+ throw new Error(`Timeout waiting for component state condition after ${timeout}ms.\n` +
109
+ `Component: ${componentId}\n` +
110
+ `Current state: ${JSON.stringify(currentState, null, 2)}`);
111
+ }
112
+ /**
113
+ * Assert state via data-state attributes (alternative approach)
114
+ * Useful when component doesn't expose JS state but adds data attributes
115
+ *
116
+ * @param page - Playwright page
117
+ * @param selector - CSS selector for component
118
+ * @param attribute - data-state-* attribute name
119
+ * @param expectedValue - Expected attribute value
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * await assertStateAttribute(page, '[data-testid="menu"]', 'data-state-open', 'true');
124
+ * ```
125
+ */
126
+ export async function assertStateAttribute(page, selector, attribute, expectedValue) {
127
+ const element = page.locator(selector);
128
+ await expect(element).toHaveAttribute(attribute, expectedValue);
129
+ }
130
+ /**
131
+ * Get all registered component state IDs
132
+ * Useful for debugging
133
+ *
134
+ * @param page - Playwright page
135
+ * @returns Array of component IDs that expose state
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * const components = await getRegisteredComponents(page);
140
+ * console.log('Available:', components); // ['demo-widgets', 'chat', 'counter']
141
+ * ```
142
+ */
143
+ export async function getRegisteredComponents(page) {
144
+ return await page.evaluate(() => {
145
+ return Object.keys(window.__componentState__ || {});
146
+ });
147
+ }
148
+ /**
149
+ * Debug helper: Print current state of a component
150
+ *
151
+ * @param page - Playwright page
152
+ * @param componentId - Component identifier
153
+ *
154
+ * @example
155
+ * ```typescript
156
+ * await debugComponentState(page, 'demo-widgets');
157
+ * ```
158
+ */
159
+ export async function debugComponentState(page, componentId) {
160
+ const state = await getComponentState(page, componentId);
161
+ console.log(`=== ${componentId} State ===`);
162
+ console.log(JSON.stringify(state, null, 2));
163
+ console.log('========================');
164
+ }
165
+ /**
166
+ * Debug helper: Print all component states
167
+ *
168
+ * @param page - Playwright page
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * await debugAllComponentStates(page);
173
+ * ```
174
+ */
175
+ export async function debugAllComponentStates(page) {
176
+ const components = await getRegisteredComponents(page);
177
+ console.log(`\n=== All Component States (${components.length} found) ===`);
178
+ for (const id of components) {
179
+ try {
180
+ const state = await getComponentState(page, id);
181
+ console.log(`\n[${id}]:`);
182
+ console.log(JSON.stringify(state, null, 2));
183
+ }
184
+ catch (error) {
185
+ console.log(`\n[${id}]: Error - ${error}`);
186
+ }
187
+ }
188
+ console.log('\n========================================\n');
189
+ }
190
+ //# sourceMappingURL=ComponentStateHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentStateHelpers.js","sourceRoot":"","sources":["../../../../src/testing/ComponentStateHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Gherkin Parser
3
+ *
4
+ * Parses Gherkin .feature files and converts them to executable test scenarios.
5
+ * Basic open-source version (Story system is enterprise edition).
6
+ */
7
+ export interface GherkinFeature {
8
+ name: string;
9
+ description?: string;
10
+ tags?: string[];
11
+ scenarios: GherkinScenario[];
12
+ }
13
+ export interface GherkinScenario {
14
+ name: string;
15
+ tags?: string[];
16
+ steps: GherkinStep[];
17
+ }
18
+ export interface GherkinStep {
19
+ keyword: 'Given' | 'When' | 'Then' | 'And' | 'But';
20
+ text: string;
21
+ toolId?: string;
22
+ params?: Record<string, any>;
23
+ }
24
+ export declare class GherkinParser {
25
+ /**
26
+ * Parse a Gherkin feature file content
27
+ */
28
+ static parseFeature(content: string): GherkinFeature;
29
+ /**
30
+ * Resolve tool IDs from step text using natural language matching
31
+ */
32
+ static resolveSteps(steps: GherkinStep[]): GherkinStep[];
33
+ /**
34
+ * Extract parameters from step text
35
+ */
36
+ private static extractParameters;
37
+ /**
38
+ * Convert Gherkin scenario to Story definition
39
+ *
40
+ * NOTE: Story system is part of @supernal/interface-enterprise
41
+ * This method is not available in the open source edition.
42
+ *
43
+ * For enterprise features including story system, visit:
44
+ * https://supernal.ai/enterprise
45
+ */
46
+ static scenarioToStory(scenario: GherkinScenario, featureName: string): any;
47
+ /**
48
+ * Convert entire feature to stories and register them
49
+ *
50
+ * NOTE: Story system is part of @supernal/interface-enterprise
51
+ * This method is not available in the open source edition.
52
+ */
53
+ static featureToStories(feature: GherkinFeature): any[];
54
+ /**
55
+ * Generate unique story ID from feature and scenario names
56
+ */
57
+ private static generateStoryId;
58
+ /**
59
+ * Generate Gherkin steps from tools
60
+ * Moved from ToolPromptGenerator for consolidation
61
+ */
62
+ static generateSteps(tools: any[]): string;
63
+ /**
64
+ * Generate complete Gherkin feature from tool metadata
65
+ * Consolidated from both ToolPromptGenerator and original generateFeature
66
+ */
67
+ static generateFeature(featureName: string, tools: any[], options?: {
68
+ description?: string;
69
+ tags?: string[];
70
+ }): string;
71
+ /**
72
+ * Generate Playwright test from Gherkin feature
73
+ */
74
+ static generatePlaywrightTest(feature: GherkinFeature): string;
75
+ /**
76
+ * Validate round-trip: Generate → Parse → Generate
77
+ * Ensures parsing and generation are consistent
78
+ */
79
+ static validateRoundTrip(tools: any[], featureName?: string): {
80
+ valid: boolean;
81
+ original: string;
82
+ parsed: GherkinFeature;
83
+ regenerated: string;
84
+ errors: string[];
85
+ };
86
+ }
87
+ //# sourceMappingURL=GherkinParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GherkinParser.d.ts","sourceRoot":"","sources":["../../../../src/testing/GherkinParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAiEpD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IA0BxD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAkBhC;;;;;;;;OAQG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,GAAG;IAO3E;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,GAAG,EAAE;IAOvD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAM9B;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM;IAW1C;;;OAGG;IACH,MAAM,CAAC,eAAe,CACpB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,GAAG,EAAE,EACZ,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,GACA,MAAM;IAuBT;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;IA4B9D;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,WAAW,GAAE,MAAuB,GAAG;QAC5E,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,cAAc,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;CAqDF"}