@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,47 @@
1
+ /**
2
+ * Stateful Component Interface
3
+ *
4
+ * Week 2: State Integration
5
+ *
6
+ * Defines the interface that all stateful components must implement
7
+ * to enable state management through ComponentRegistry and story execution.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * @Component({
12
+ * name: 'counter',
13
+ * stateful: true,
14
+ * })
15
+ * class CounterComponent implements StatefulComponent<CounterState> {
16
+ * private state: CounterState = { count: 0 };
17
+ *
18
+ * getState(): CounterState {
19
+ * return { ...this.state };
20
+ * }
21
+ *
22
+ * setState(newState: Partial<CounterState>): void {
23
+ * this.state = { ...this.state, ...newState };
24
+ * this.render();
25
+ * }
26
+ *
27
+ * resetState(): void {
28
+ * this.state = { count: 0 };
29
+ * this.render();
30
+ * }
31
+ * }
32
+ * ```
33
+ */
34
+ /**
35
+ * Type guard to check if a component implements StatefulComponent
36
+ *
37
+ * @param component - Component to check
38
+ * @returns True if component implements StatefulComponent interface
39
+ */
40
+ export function isStatefulComponent(component) {
41
+ return (component !== null &&
42
+ typeof component === 'object' &&
43
+ typeof component.getState === 'function' &&
44
+ typeof component.setState === 'function' &&
45
+ typeof component.resetState === 'function');
46
+ }
47
+ //# sourceMappingURL=StatefulComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatefulComponent.js","sourceRoot":"","sources":["../../../../src/interfaces/StatefulComponent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAoCH;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAc;IAChD,OAAO,CACL,SAAS,KAAK,IAAI;QAClB,OAAO,SAAS,KAAK,QAAQ;QAC7B,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU;QACxC,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU;QACxC,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU,CAC3C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Abstract Contract Scanner Interface
3
+ *
4
+ * All name contract scanners (components, routes, API, CLI) implement this interface
5
+ */
6
+ export interface ScanResult {
7
+ contracts: Map<string, ContractEntry>;
8
+ metadata?: Record<string, any>;
9
+ }
10
+ export interface ContractEntry {
11
+ name: string;
12
+ value: string;
13
+ category?: string;
14
+ files: string[];
15
+ metadata?: Record<string, any>;
16
+ }
17
+ export interface GenerateOptions {
18
+ outputPath: string;
19
+ dryRun?: boolean;
20
+ includeJsDocs?: boolean;
21
+ }
22
+ export interface MigrateOptions {
23
+ targetPaths?: string[];
24
+ dryRun?: boolean;
25
+ createBackup?: boolean;
26
+ contractsPath?: string;
27
+ verbose?: boolean;
28
+ }
29
+ export interface MigrateResult {
30
+ changes: number;
31
+ skipped: number;
32
+ files: string[];
33
+ }
34
+ /**
35
+ * Base interface that all contract scanners must implement
36
+ */
37
+ export declare abstract class ContractScanner {
38
+ abstract readonly type: string;
39
+ abstract readonly description: string;
40
+ /**
41
+ * Scan codebase for this contract type
42
+ */
43
+ abstract scan(): Promise<ScanResult>;
44
+ /**
45
+ * Generate contract file from scan results
46
+ */
47
+ abstract generate(result: ScanResult, options: GenerateOptions): Promise<string>;
48
+ /**
49
+ * Migrate code to use contracts
50
+ */
51
+ abstract migrate(options: MigrateOptions): Promise<MigrateResult>;
52
+ /**
53
+ * Validate contracts match codebase
54
+ */
55
+ abstract validate(): Promise<string[]>;
56
+ /**
57
+ * Get default output path for this contract type
58
+ */
59
+ abstract getDefaultOutputPath(): string;
60
+ }
61
+ //# sourceMappingURL=ContractScanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContractScanner.d.ts","sourceRoot":"","sources":["../../../../src/name-contracts/ContractScanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,8BAAsB,eAAe;IACnC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAEhF;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAEjE;;OAEG;IACH,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,oBAAoB,IAAI,MAAM;CACxC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Abstract Contract Scanner Interface
3
+ *
4
+ * All name contract scanners (components, routes, API, CLI) implement this interface
5
+ */
6
+ /**
7
+ * Base interface that all contract scanners must implement
8
+ */
9
+ export class ContractScanner {
10
+ }
11
+ //# sourceMappingURL=ContractScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContractScanner.js","sourceRoot":"","sources":["../../../../src/name-contracts/ContractScanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmCH;;GAEG;AACH,MAAM,OAAgB,eAAe;CA4BpC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Route Contract Scanner
3
+ *
4
+ * Scans codebase for route patterns and generates type-safe route contracts
5
+ *
6
+ * Integrates with existing route scanning system:
7
+ * - NextjsDynamicScanner for route discovery
8
+ * - RouteContractGenerator for contract generation
9
+ */
10
+ import { ContractScanner, ScanResult, GenerateOptions, MigrateOptions, MigrateResult } from './ContractScanner';
11
+ import { RouteContractsConfig } from '../routes/RouteContractsConfig';
12
+ export declare class RouteContractScanner extends ContractScanner {
13
+ readonly type = "routes";
14
+ readonly description = "Next.js route patterns (Views + API)";
15
+ private config;
16
+ private projectRoot;
17
+ constructor(projectRoot: string, config?: RouteContractsConfig);
18
+ private loadConfigFromSupernal;
19
+ private getDefaultConfig;
20
+ scan(): Promise<ScanResult>;
21
+ generate(result: ScanResult, options: GenerateOptions): Promise<string>;
22
+ migrate(_options: MigrateOptions): Promise<MigrateResult>;
23
+ validate(): Promise<string[]>;
24
+ getDefaultOutputPath(): string;
25
+ /**
26
+ * Load config from file if exists
27
+ */
28
+ static loadConfig(configPath: string): Promise<RouteContractsConfig | null>;
29
+ }
30
+ //# sourceMappingURL=RouteContractScanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteContractScanner.d.ts","sourceRoot":"","sources":["../../../../src/name-contracts/RouteContractScanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACL,eAAe,EACf,UAAU,EAEV,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAKtE,qBAAa,oBAAqB,SAAQ,eAAe;IACvD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,0CAA0C;IAE9D,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,oBAAoB;IAM9D,OAAO,CAAC,sBAAsB;IAsC9B,OAAO,CAAC,gBAAgB;IAiBlB,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IA8B3B,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCvE,OAAO,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAezD,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA6BnC,oBAAoB,IAAI,MAAM;IAI9B;;OAEG;WACU,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;CAiBlF"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Route Contract Scanner
3
+ *
4
+ * Scans codebase for route patterns and generates type-safe route contracts
5
+ *
6
+ * Integrates with existing route scanning system:
7
+ * - NextjsDynamicScanner for route discovery
8
+ * - RouteContractGenerator for contract generation
9
+ */
10
+ import * as path from 'path';
11
+ import * as fs from 'fs/promises';
12
+ import { ContractScanner } from './ContractScanner.js';
13
+ import { NextjsDynamicScanner } from '../routes/scanners/NextjsDynamicScanner.js';
14
+ import { RouteContractGenerator } from '../routes/RouteContractGenerator.js';
15
+ export class RouteContractScanner extends ContractScanner {
16
+ constructor(projectRoot, config) {
17
+ super();
18
+ this.type = 'routes';
19
+ this.description = 'Next.js route patterns (Views + API)';
20
+ this.projectRoot = projectRoot;
21
+ this.config = config || this.loadConfigFromSupernal();
22
+ }
23
+ loadConfigFromSupernal() {
24
+ const supernalYamlPath = path.join(this.projectRoot, 'supernal.yaml');
25
+ try {
26
+ const yaml = require('js-yaml');
27
+ const fs = require('fs');
28
+ const supernalConfig = yaml.load(fs.readFileSync(supernalYamlPath, 'utf8'));
29
+ if (supernalConfig?.name_contracts?.routes) {
30
+ const routesConfig = supernalConfig.name_contracts.routes;
31
+ return {
32
+ routingSystem: routesConfig.routing_system || 'nextjs-dynamic',
33
+ scanPaths: {
34
+ routes: routesConfig.scan_paths?.routes || [],
35
+ components: routesConfig.scan_paths?.components || [],
36
+ },
37
+ output: {
38
+ contractsPath: routesConfig.output?.contracts_path || 'src/lib/routing/Routes.ts',
39
+ testUtilsPath: routesConfig.output?.test_utils_path,
40
+ },
41
+ generation: {
42
+ includeJsDocs: routesConfig.generation?.include_jsdocs !== false,
43
+ includeValidation: routesConfig.generation?.include_validation || false,
44
+ includeTypeGuards: routesConfig.generation?.include_type_guards || false,
45
+ },
46
+ };
47
+ }
48
+ }
49
+ catch (error) {
50
+ const errorMessage = error instanceof Error ? error.message : String(error);
51
+ // eslint-disable-next-line no-console
52
+ console.warn(`⚠️ Could not load route contracts config from supernal.yaml: ${errorMessage}`);
53
+ // eslint-disable-next-line no-console
54
+ console.warn(' Using default configuration');
55
+ }
56
+ return this.getDefaultConfig();
57
+ }
58
+ getDefaultConfig() {
59
+ return {
60
+ routingSystem: 'nextjs-name-extraction',
61
+ scanPaths: {
62
+ routes: ['apps/supernal-dashboard/src/app'],
63
+ components: ['apps/supernal-dashboard/src/lib/routing/slugService.ts'],
64
+ },
65
+ output: {
66
+ contractsPath: 'apps/supernal-dashboard/src/lib/routing/Routes.ts',
67
+ testUtilsPath: 'apps/supernal-dashboard/tests/utils/routes.ts',
68
+ },
69
+ generation: {
70
+ includeJsDocs: true,
71
+ },
72
+ };
73
+ }
74
+ async scan() {
75
+ const scanner = new NextjsDynamicScanner(this.config);
76
+ const routeScanResult = await scanner.scan();
77
+ // Convert RouteInfo[] to ContractEntry map
78
+ const contracts = new Map();
79
+ for (const route of routeScanResult.routes) {
80
+ contracts.set(route.id, {
81
+ name: route.id,
82
+ value: route.pattern,
83
+ category: route.metadata?.category || 'General',
84
+ files: [route.metadata?.source || 'generated'],
85
+ metadata: {
86
+ params: route.params,
87
+ methods: route.metadata?.methods, // Preserve HTTP methods
88
+ description: route.metadata?.description,
89
+ },
90
+ });
91
+ }
92
+ return {
93
+ contracts,
94
+ metadata: {
95
+ routingSystem: this.config.routingSystem,
96
+ totalRoutes: contracts.size,
97
+ },
98
+ };
99
+ }
100
+ async generate(result, options) {
101
+ // Convert back to RouteInfo[] for generator
102
+ const routes = Array.from(result.contracts.values()).map(entry => ({
103
+ id: entry.name,
104
+ pattern: entry.value,
105
+ params: entry.metadata?.params || [],
106
+ metadata: {
107
+ category: entry.category,
108
+ methods: entry.metadata?.methods, // Restore HTTP methods
109
+ description: entry.metadata?.description,
110
+ },
111
+ }));
112
+ const generator = new RouteContractGenerator();
113
+ const content = generator.generate({
114
+ routes,
115
+ metadata: {
116
+ timestamp: new Date().toISOString(),
117
+ scannedPaths: this.config.scanPaths.routes || [],
118
+ routingSystem: this.config.routingSystem,
119
+ },
120
+ });
121
+ if (!options.dryRun) {
122
+ const outputPath = path.join(this.projectRoot, options.outputPath);
123
+ await fs.mkdir(path.dirname(outputPath), { recursive: true });
124
+ await fs.writeFile(outputPath, content, 'utf-8');
125
+ }
126
+ return content;
127
+ }
128
+ async migrate(_options) {
129
+ // TODO: Implement route migration
130
+ // For now, return empty result
131
+ // eslint-disable-next-line no-console
132
+ console.log('⚠️ Route migration not yet implemented');
133
+ // eslint-disable-next-line no-console
134
+ console.log(' Use test utilities in tests/utils/TestRoutes.ts instead');
135
+ return {
136
+ changes: 0,
137
+ skipped: 0,
138
+ files: [],
139
+ };
140
+ }
141
+ async validate() {
142
+ const errors = [];
143
+ // Check if generated contracts exist
144
+ const contractsPath = path.join(this.projectRoot, this.config.output.contractsPath);
145
+ try {
146
+ await fs.access(contractsPath);
147
+ }
148
+ catch {
149
+ errors.push(`Contracts file not found: ${this.config.output.contractsPath}`);
150
+ errors.push('Run: sc code generate --type=routes');
151
+ return errors;
152
+ }
153
+ // Scan current routes
154
+ const scanResult = await this.scan();
155
+ // Read generated contracts
156
+ const contractsContent = await fs.readFile(contractsPath, 'utf-8');
157
+ // Basic validation: check if route counts match
158
+ const generatedRouteCount = (contractsContent.match(/:\s*'\/[^']+'/g) || []).length;
159
+ if (generatedRouteCount !== scanResult.contracts.size) {
160
+ errors.push(`Route count mismatch: Generated has ${generatedRouteCount}, codebase has ${scanResult.contracts.size}`);
161
+ errors.push('Run: sc code generate --type=routes');
162
+ }
163
+ return errors;
164
+ }
165
+ getDefaultOutputPath() {
166
+ return this.config.output.contractsPath;
167
+ }
168
+ /**
169
+ * Load config from file if exists
170
+ */
171
+ static async loadConfig(configPath) {
172
+ try {
173
+ const fullPath = path.isAbsolute(configPath)
174
+ ? configPath
175
+ : path.join(process.cwd(), configPath);
176
+ // Use dynamic import for TypeScript config files
177
+ if (configPath.endsWith('.ts')) {
178
+ require('ts-node/register');
179
+ }
180
+ const config = require(fullPath);
181
+ return config.default || config;
182
+ }
183
+ catch {
184
+ return null;
185
+ }
186
+ }
187
+ }
188
+ //# sourceMappingURL=RouteContractScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteContractScanner.js","sourceRoot":"","sources":["../../../../src/name-contracts/RouteContractScanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Name Contracts - Abstract Base
3
+ *
4
+ * Provides base classes and interfaces for scanning codebases
5
+ * and generating type-safe name contracts.
6
+ */
7
+ export { ContractScanner } from './ContractScanner';
8
+ export type { ScanResult, ContractEntry } from './ContractScanner';
9
+ export { RouteContractScanner } from './RouteContractScanner';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/name-contracts/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Name Contracts - Abstract Base
3
+ *
4
+ * Provides base classes and interfaces for scanning codebases
5
+ * and generating type-safe name contracts.
6
+ */
7
+ export { ContractScanner } from './ContractScanner.js';
8
+ // Route Contract Scanner (uses ContractScanner as base)
9
+ export { RouteContractScanner } from './RouteContractScanner.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/name-contracts/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,wDAAwD;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Create Component Names Helper
3
+ *
4
+ * Creates a component namespace with automatic kebab-case conversion and registry.
5
+ *
6
+ * Supports multiple formats for maximum flexibility:
7
+ *
8
+ * @example Minimal array format (fastest to write)
9
+ * ```typescript
10
+ * export const Blog = createNames('blog', ['container', 'searchInput', 'postCard']);
11
+ * // Result: { container: 'blog-container', searchInput: 'blog-search-input', postCard: 'blog-post-card' }
12
+ * ```
13
+ *
14
+ * @example Object format (same as current)
15
+ * ```typescript
16
+ * export const Blog = createNames('blog', {
17
+ * container: 'container',
18
+ * searchInput: 'searchInput',
19
+ * postCard: 'postCard',
20
+ * });
21
+ * ```
22
+ *
23
+ * @example Custom suffixes (for special cases)
24
+ * ```typescript
25
+ * export const Blog = createNames('blog', {
26
+ * container: 'main-wrapper', // Becomes 'blog-main-wrapper'
27
+ * searchInput: 'search', // Becomes 'blog-search'
28
+ * });
29
+ * ```
30
+ */
31
+ export declare function createNames<P extends string, K extends string>(prefix: P, names: readonly K[]): {
32
+ [Key in K]: `${P}-${string}`;
33
+ };
34
+ export declare function createNames<P extends string, N extends Record<string, string>>(prefix: P, names: N): {
35
+ [K in keyof N]: `${P}-${string}`;
36
+ };
37
+ /**
38
+ * Type helper to extract component ID type
39
+ */
40
+ export type ComponentId<T> = T extends Record<string, infer U> ? U : never;
41
+ /**
42
+ * Get all component IDs from a namespace as a flat array
43
+ */
44
+ export declare function getComponentIds<T extends Record<string, string>>(namespace: T): string[];
45
+ /**
46
+ * Validate that a string is a valid component ID in a namespace
47
+ */
48
+ export declare function isComponentId<T extends Record<string, string>>(namespace: T, id: string): id is T[keyof T];
49
+ //# sourceMappingURL=createNames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createNames.d.ts","sourceRoot":"","sources":["../../../../src/names/createNames.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAgBH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAC5D,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,SAAS,CAAC,EAAE,GAClB;KAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,EAAE;CAAE,CAAC;AAGpC,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5E,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,CAAC,GACP;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,EAAE;CAAE,CAAC;AAoCxC;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE3E;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9D,SAAS,EAAE,CAAC,GACX,MAAM,EAAE,CAEV;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5D,SAAS,EAAE,CAAC,EACZ,EAAE,EAAE,MAAM,GACT,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAElB"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Create Component Names Helper
3
+ *
4
+ * Creates a component namespace with automatic kebab-case conversion and registry.
5
+ *
6
+ * Supports multiple formats for maximum flexibility:
7
+ *
8
+ * @example Minimal array format (fastest to write)
9
+ * ```typescript
10
+ * export const Blog = createNames('blog', ['container', 'searchInput', 'postCard']);
11
+ * // Result: { container: 'blog-container', searchInput: 'blog-search-input', postCard: 'blog-post-card' }
12
+ * ```
13
+ *
14
+ * @example Object format (same as current)
15
+ * ```typescript
16
+ * export const Blog = createNames('blog', {
17
+ * container: 'container',
18
+ * searchInput: 'searchInput',
19
+ * postCard: 'postCard',
20
+ * });
21
+ * ```
22
+ *
23
+ * @example Custom suffixes (for special cases)
24
+ * ```typescript
25
+ * export const Blog = createNames('blog', {
26
+ * container: 'main-wrapper', // Becomes 'blog-main-wrapper'
27
+ * searchInput: 'search', // Becomes 'blog-search'
28
+ * });
29
+ * ```
30
+ */
31
+ import { architectureRegistry } from '../architecture/registry.js';
32
+ /**
33
+ * Convert camelCase to kebab-case
34
+ */
35
+ function camelToKebab(str) {
36
+ return str
37
+ .replace(/([A-Z])/g, '-$1')
38
+ .toLowerCase()
39
+ .replace(/^-/, ''); // Remove leading dash if first char was uppercase
40
+ }
41
+ /**
42
+ * Create component names with automatic prefixing and kebab-case conversion
43
+ *
44
+ * @param prefix - The prefix for all component IDs (e.g., 'blog', 'demo')
45
+ * @param names - Array of keys or object mapping keys to suffixes
46
+ * @returns Object with fully qualified component IDs (prefix-suffix in kebab-case)
47
+ */
48
+ // eslint-disable-next-line no-redeclare
49
+ export function createNames(prefix, names) {
50
+ const result = {};
51
+ if (Array.isArray(names)) {
52
+ // Array format: ['container', 'searchInput'] -> { container: 'blog-container', searchInput: 'blog-search-input' }
53
+ for (const key of names) {
54
+ const kebab = camelToKebab(key);
55
+ result[key] = `${prefix}-${kebab}`;
56
+ }
57
+ }
58
+ else {
59
+ // Object format: { container: 'container' } -> { container: 'blog-container' }
60
+ for (const [key, value] of Object.entries(names)) {
61
+ const kebab = camelToKebab(value);
62
+ result[key] = `${prefix}-${kebab}`;
63
+ }
64
+ }
65
+ // Register with architecture registry
66
+ architectureRegistry.registerComponent(prefix, result);
67
+ return result;
68
+ }
69
+ /**
70
+ * Get all component IDs from a namespace as a flat array
71
+ */
72
+ export function getComponentIds(namespace) {
73
+ return Object.values(namespace);
74
+ }
75
+ /**
76
+ * Validate that a string is a valid component ID in a namespace
77
+ */
78
+ export function isComponentId(namespace, id) {
79
+ return Object.values(namespace).includes(id);
80
+ }
81
+ //# sourceMappingURL=createNames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createNames.js","sourceRoot":"","sources":["../../../../src/names/createNames.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;GAEG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG;SACP,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAC1B,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,kDAAkD;AAC1E,CAAC;AAeD;;;;;;GAMG;AACH,wCAAwC;AACxC,MAAM,UAAU,WAAW,CACzB,MAAS,EACT,KAAiD;IAEjD,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,kHAAkH;QAClH,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,+EAA+E;QAC/E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,oBAAoB,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvD,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,SAAY;IAEZ,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAY,EACZ,EAAU;IAEV,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * useChatWithContext - Hook for integrating AI chat with application context
3
+ *
4
+ * Provides chat capabilities that can be plugged into any UI:
5
+ * - Automatic context injection (current view, available tools, app state)
6
+ * - Tool execution
7
+ * - Prompt building with context
8
+ * - Message handling
9
+ */
10
+ export interface ChatContext {
11
+ containerId?: string;
12
+ currentRoute?: string;
13
+ viewType?: string;
14
+ userId?: string;
15
+ userRole?: string;
16
+ appState?: Record<string, any>;
17
+ filters?: Record<string, any>;
18
+ searchQuery?: string;
19
+ metadata?: Record<string, any>;
20
+ }
21
+ export interface ChatMessage {
22
+ id: string;
23
+ role: 'user' | 'assistant' | 'system';
24
+ content: string;
25
+ timestamp: Date;
26
+ context?: Partial<ChatContext>;
27
+ toolCalls?: Array<{
28
+ toolId: string;
29
+ args: any;
30
+ result?: any;
31
+ }>;
32
+ }
33
+ export interface PromptWithContext {
34
+ userMessage: string;
35
+ context: ChatContext;
36
+ availableTools: string[];
37
+ systemPrompt: string;
38
+ }
39
+ export interface UseChatWithContextConfig {
40
+ containerId?: string;
41
+ userId?: string;
42
+ onMessage?: (message: ChatMessage) => void;
43
+ onToolExecute?: (toolId: string, args: any, result: any) => void;
44
+ onError?: (error: Error) => void;
45
+ getAppState?: () => Record<string, any>;
46
+ systemPrompt?: string;
47
+ }
48
+ export declare function useChatWithContext(config?: UseChatWithContextConfig): {
49
+ messages: ChatMessage[];
50
+ isProcessing: boolean;
51
+ availableTools: import("../..").ToolMetadata[];
52
+ currentContext: ChatContext;
53
+ sendMessage: (content: string) => Promise<void>;
54
+ addMessage: (content: string, role?: "user" | "assistant" | "system") => ChatMessage;
55
+ clearMessages: () => void;
56
+ executeTool: (toolId: string, args?: any) => Promise<{
57
+ success: boolean;
58
+ result: any;
59
+ error: undefined;
60
+ } | {
61
+ success: boolean;
62
+ result: undefined;
63
+ error: string;
64
+ }>;
65
+ buildPromptWithContext: (userMessage: string) => PromptWithContext;
66
+ suggestTools: (query: string) => import("../..").ToolMetadata[];
67
+ };
68
+ //# sourceMappingURL=useChatWithContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatWithContext.d.ts","sourceRoot":"","sources":["../../../../../src/react/hooks/useChatWithContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,WAAW,WAAW;IAE1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,GAAG,CAAC;QACV,MAAM,CAAC,EAAE,GAAG,CAAC;KACd,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IAEvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACjE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAGjC,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAGxC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,wBAA6B;;;;;2BAoHtB,MAAM;0BAlB3C,MAAM,SACT,MAAM,GAAG,WAAW,GAAG,QAAQ;;0BA1CQ,MAAM,SAAQ,GAAG;;;;;;;;;0CA9BP,MAAM,KAAG,iBAAiB;0BA6J1C,MAAM;EAgChD"}