@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,700 @@
1
+ "use strict";
2
+ /**
3
+ * Supernal AI Interface - Enhanced Tool Decorator System
4
+ *
5
+ * Provides comprehensive tool registration with AI safety controls and universal capabilities.
6
+ * Automatically generates tool schemas with AI control vs testing distinction.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Tool = Tool;
10
+ exports.setDefaultToolReporter = setDefaultToolReporter;
11
+ exports.getStandaloneTools = getStandaloneTools;
12
+ exports.getStandaloneTool = getStandaloneTool;
13
+ const ToolRegistry_1 = require("../background/registry/ToolRegistry");
14
+ const types_1 = require("../types");
15
+ // RuntimeGraphTracker is part of enterprise edition
16
+ // import { RuntimeGraphTracker } from '../ui/react/graph/RuntimeGraphTracker';
17
+ const DEBUG = false;
18
+ if (DEBUG)
19
+ console.log('Logging for Tool is:', DEBUG);
20
+ // Note: All tools (class methods and standalone functions) are registered in the unified ToolRegistry
21
+ /**
22
+ * Convert shorthand to full ToolConfig
23
+ * Applies smart defaults and inheritance
24
+ */
25
+ function normalizeShorthand(elementId, options) {
26
+ return {
27
+ // REQUIRED: elementId (provided explicitly)
28
+ elementId: elementId,
29
+ toolId: elementId, // Default: same as elementId
30
+ // REQUIRED: examples (must be provided in shorthand)
31
+ examples: options?.examples || [],
32
+ // OPTIONAL OVERRIDES: Use if provided, otherwise undefined (will be inferred)
33
+ name: options?.name,
34
+ dangerLevel: options?.dangerLevel,
35
+ aiEnabled: options?.aiEnabled,
36
+ containerId: options?.containerId,
37
+ callbacks: options?.callbacks,
38
+ // Everything else will be inferred by existing logic:
39
+ // - category: inferred from method name
40
+ // - description: inferred from method name
41
+ // - toolType: inferred from method name
42
+ // - actionType: inferred from method name
43
+ // - elementType: inferred from method name
44
+ // - requiresApproval: inferred from dangerLevel
45
+ };
46
+ }
47
+ // Implementation
48
+ // eslint-disable-next-line no-redeclare
49
+ function Tool(configOrElementId, options) {
50
+ return function (target, propertyKey, descriptor) {
51
+ // Normalize to ToolConfig
52
+ const config = typeof configOrElementId === 'string'
53
+ ? normalizeShorthand(configOrElementId, options)
54
+ : configOrElementId;
55
+ // Handle standalone function case (when used as Tool(config)(func))
56
+ if (typeof target === 'function' && !propertyKey) {
57
+ return decorateStandaloneFunction(target, config);
58
+ }
59
+ // Handle class method case
60
+ if (propertyKey && descriptor) {
61
+ return decorateClassMethod(target, propertyKey, descriptor, config);
62
+ }
63
+ throw new Error('Tool decorator can only be applied to class methods or standalone functions');
64
+ };
65
+ }
66
+ /**
67
+ * Decorate a standalone function
68
+ */
69
+ function decorateStandaloneFunction(func, config) {
70
+ const functionName = func.name || 'anonymous';
71
+ const providerName = config.providerName || 'StandaloneFunctions';
72
+ // Use functionName for toolId (never use config.name which might have spaces)
73
+ const uniqueFunctionId = functionName;
74
+ const toolMetadata = {
75
+ methodName: functionName,
76
+ name: config.name || formatMethodName(functionName),
77
+ description: config.description || formatMethodName(functionName),
78
+ category: config.category || inferCategoryFromMethodName(functionName),
79
+ inputSchema: config.inputSchema || generateBasicInputSchema(),
80
+ outputSchema: config.outputSchema || generateBasicOutputSchema(),
81
+ returnType: config.returnType || 'json',
82
+ supportsStreaming: config.supportsStreaming || false,
83
+ tags: config.tags || [providerName.toLowerCase()],
84
+ keywords: config.keywords || [functionName],
85
+ useCases: config.useCases || generateUseCases(functionName),
86
+ permissions: config.permissions || inferPermissions(functionName),
87
+ frequency: config.frequency || inferFrequency(functionName),
88
+ complexity: config.complexity || types_1.ToolComplexity.SIMPLE,
89
+ // IMPROVED: Better identifiers
90
+ toolId: config.toolId || generateToolId(providerName, functionName),
91
+ elementId: config.elementId,
92
+ selector: config.selector,
93
+ // NEW: Container/modal context
94
+ containerId: config.containerId,
95
+ // NEW: Callback capabilities
96
+ callbacks: config.callbacks,
97
+ // Provider information
98
+ providerName: providerName,
99
+ isStandalone: true,
100
+ // AI Interface enhancements
101
+ examples: config.examples || generateNaturalLanguageExamples(functionName),
102
+ aiDescription: config.aiDescription || generateAIDescription(functionName, config.description),
103
+ executionContext: config.executionContext || inferExecutionContext(functionName),
104
+ mockData: config.mockData,
105
+ // AI Control vs Testing distinction - SAFE DEFAULTS
106
+ toolType: config.toolType || inferToolType(functionName),
107
+ aiEnabled: config.aiEnabled || false,
108
+ dangerLevel: config.dangerLevel || inferDangerLevel(functionName),
109
+ requiresApproval: config.requiresApproval || shouldRequireApproval(functionName, config.dangerLevel),
110
+ // Testing integration
111
+ generateSimulation: config.generateSimulation ?? true,
112
+ generateStories: config.generateStories ?? true,
113
+ elementType: config.elementType || inferElementType(functionName),
114
+ actionType: config.actionType || inferActionType(functionName),
115
+ // Origin tracking
116
+ origin: config.origin,
117
+ // Legacy fields
118
+ testId: config.testId || config.toolId || generateToolId(providerName, functionName),
119
+ uiSelector: config.uiSelector || config.selector,
120
+ };
121
+ // Store the function reference so it can be executed
122
+ toolMetadata.method = func;
123
+ // Register with ToolRegistry - use unique ID
124
+ try {
125
+ ToolRegistry_1.ToolRegistry.registerTool(providerName, uniqueFunctionId, toolMetadata);
126
+ }
127
+ catch (error) {
128
+ console.error('Failed to register tool:', toolMetadata.name, error);
129
+ }
130
+ DEBUG &&
131
+ console.log(`[Tool] Registered function: ${toolMetadata.name} (${toolMetadata.category})`);
132
+ // Return a wrapped function that preserves the original's return value
133
+ // This ensures the function's return value is properly propagated to callers
134
+ const wrappedFunction = async function (...args) {
135
+ const result = await func.apply(this, args);
136
+ return result;
137
+ };
138
+ // Attach metadata to the wrapped function
139
+ wrappedFunction.__toolMetadata__ = toolMetadata;
140
+ // Preserve the original function name for debugging
141
+ Object.defineProperty(wrappedFunction, 'name', {
142
+ value: functionName,
143
+ writable: false
144
+ });
145
+ return wrappedFunction;
146
+ }
147
+ /**
148
+ * Decorate a class method
149
+ */
150
+ function decorateClassMethod(target, propertyKey, descriptor, config) {
151
+ // Ensure propertyKey is a string for processing
152
+ const methodName = typeof propertyKey === 'string' ? propertyKey : String(propertyKey);
153
+ // In legacy decorators, target is the class prototype, so we can get the class name directly
154
+ const className = target.constructor.name || 'UnknownClass';
155
+ // Store original method
156
+ const originalMethod = descriptor.value;
157
+ // Generate and register the tool metadata
158
+ const toolMetadata = generateToolMetadata(className, methodName, config, target);
159
+ // Store method reference
160
+ toolMetadata.method = originalMethod;
161
+ toolMetadata.onExecute = config.onExecute;
162
+ toolMetadata.autoReport = config.autoReport !== false; // Default to true
163
+ // Wrap method to capture instance, invoke onExecute callback, and track execution
164
+ descriptor.value = async function (...args) {
165
+ const startTime = Date.now();
166
+ // RuntimeGraphTracker removed - enterprise edition feature
167
+ // const tracker = RuntimeGraphTracker.getInstance();
168
+ // Always update instance reference (in case it was created after registration)
169
+ toolMetadata.instance = this;
170
+ try {
171
+ // Execute the original method
172
+ const result = await originalMethod.apply(this, args);
173
+ const duration = Date.now() - startTime;
174
+ // Track successful execution (enterprise feature - removed in open source)
175
+ // tracker.trackExecution({...}); // Enterprise feature
176
+ // Full execution tracking available at https://supernal.ai/enterprise
177
+ // Auto-report if enabled
178
+ if (toolMetadata.autoReport && toolMetadata.elementId) {
179
+ const callback = config.onExecute || getDefaultReporter();
180
+ if (callback) {
181
+ // Generate default message from elementId + actionType if not provided
182
+ const defaultMessage = generateDefaultMessage(toolMetadata.elementId, toolMetadata.actionType);
183
+ callback({
184
+ success: true,
185
+ message: result?.message || defaultMessage,
186
+ data: result
187
+ });
188
+ }
189
+ }
190
+ else if (config.onExecute) {
191
+ // Custom callback without auto-report
192
+ config.onExecute({
193
+ success: true,
194
+ message: result?.message,
195
+ data: result
196
+ });
197
+ }
198
+ return result;
199
+ }
200
+ catch (error) {
201
+ const duration = Date.now() - startTime;
202
+ // Track failed execution (enterprise feature - removed in open source)
203
+ // tracker.trackExecution({...}); // Enterprise feature
204
+ // Full execution tracking available at https://supernal.ai/enterprise
205
+ // Report error if auto-reporting enabled
206
+ const callback = config.onExecute || (toolMetadata.autoReport && toolMetadata.elementId ? getDefaultReporter() : null);
207
+ if (callback) {
208
+ callback({
209
+ success: false,
210
+ error: error
211
+ });
212
+ }
213
+ throw error;
214
+ }
215
+ };
216
+ // Mark descriptor.value with a special property so we can find and update instance later
217
+ descriptor.value.__toolMetadata__ = toolMetadata;
218
+ // Register with ToolRegistry
219
+ try {
220
+ const { ToolRegistry } = require('../background/registry/ToolRegistry');
221
+ ToolRegistry.registerTool(className, methodName, toolMetadata);
222
+ }
223
+ catch (error) {
224
+ console.error('Failed to register tool:', error);
225
+ }
226
+ DEBUG && console.log(`[Tool] Registered tool: ${toolMetadata.name} (${toolMetadata.category})`);
227
+ // Also register on the class prototype for direct access
228
+ if (!target.__tools__) {
229
+ target.__tools__ = [];
230
+ }
231
+ target.__tools__.push(toolMetadata);
232
+ return descriptor;
233
+ }
234
+ // Helper function to generate tool metadata
235
+ function generateToolMetadata(className, methodName, config, target) {
236
+ // Read parent @ToolProvider config for inheritance
237
+ // In legacy decorators, target is the prototype, so we need to access the constructor
238
+ const providerConfig = target.constructor?.__toolProvider__?.config;
239
+ return {
240
+ // Core fields
241
+ methodName: methodName,
242
+ name: config.name || formatMethodName(methodName),
243
+ description: config.description || formatMethodName(methodName),
244
+ category: config.category || inferCategoryFromMethodName(methodName),
245
+ inputSchema: config.inputSchema || generateBasicInputSchema(),
246
+ outputSchema: config.outputSchema || generateBasicOutputSchema(),
247
+ returnType: config.returnType || 'json',
248
+ supportsStreaming: config.supportsStreaming || false,
249
+ tags: config.tags || [className.toLowerCase().replace('manager', '')],
250
+ keywords: config.keywords || [methodName],
251
+ useCases: config.useCases || generateUseCases(methodName),
252
+ permissions: config.permissions || inferPermissions(methodName),
253
+ frequency: config.frequency || inferFrequency(methodName),
254
+ complexity: config.complexity || types_1.ToolComplexity.SIMPLE,
255
+ // Identifiers
256
+ toolId: config.toolId || generateToolId(className, methodName),
257
+ elementId: config.elementId,
258
+ selector: config.selector,
259
+ // NEW: Container/modal context (with inheritance)
260
+ containerId: config.containerId || providerConfig?.containerId,
261
+ // NEW: Callback capabilities
262
+ callbacks: config.callbacks,
263
+ // Provider information
264
+ providerClass: className,
265
+ isStandalone: false,
266
+ // AI Interface enhancements
267
+ examples: config.examples || generateNaturalLanguageExamples(methodName),
268
+ aiDescription: config.aiDescription || generateAIDescription(methodName, config.description),
269
+ executionContext: config.executionContext || inferExecutionContext(methodName),
270
+ mockData: config.mockData,
271
+ // AI Control vs Testing distinction (with smart defaults)
272
+ toolType: config.toolType || inferToolType(methodName),
273
+ aiEnabled: config.aiEnabled ?? providerConfig?.aiEnabled ?? inferAIEnabled(methodName),
274
+ dangerLevel: config.dangerLevel || inferDangerLevel(methodName),
275
+ requiresApproval: config.requiresApproval || shouldRequireApproval(methodName, config.dangerLevel),
276
+ // Testing integration
277
+ generateSimulation: config.generateSimulation ?? true,
278
+ generateStories: config.generateStories ?? true,
279
+ elementType: config.elementType || inferElementType(methodName),
280
+ actionType: config.actionType || inferActionType(methodName),
281
+ // Origin tracking
282
+ origin: config.origin,
283
+ };
284
+ }
285
+ /**
286
+ * Generate basic input schema (since we can't extract from JSDoc at runtime)
287
+ */
288
+ function generateBasicInputSchema() {
289
+ return {
290
+ type: 'object',
291
+ properties: {},
292
+ required: [],
293
+ };
294
+ }
295
+ /**
296
+ * Generate basic output schema (since we can't extract from JSDoc at runtime)
297
+ */
298
+ function generateBasicOutputSchema() {
299
+ return {
300
+ type: 'object',
301
+ properties: {
302
+ success: { type: 'boolean' },
303
+ data: { type: 'object' },
304
+ },
305
+ };
306
+ }
307
+ /**
308
+ * Infer tool category from method name
309
+ */
310
+ function inferCategoryFromMethodName(methodName) {
311
+ const name = String(methodName).toLowerCase();
312
+ // User interaction patterns
313
+ if (name.startsWith('click') || name.startsWith('press') || name.startsWith('tap') ||
314
+ name.includes('button') || name.includes('link')) {
315
+ return types_1.ToolCategory.USER_INTERACTION;
316
+ }
317
+ if (name.startsWith('create') || name.startsWith('add') || name.startsWith('insert')) {
318
+ return types_1.ToolCategory.DATA;
319
+ }
320
+ if (name.startsWith('read') ||
321
+ name.startsWith('get') ||
322
+ name.startsWith('fetch') ||
323
+ name.startsWith('load')) {
324
+ return types_1.ToolCategory.DATA;
325
+ }
326
+ if (name.startsWith('update') ||
327
+ name.startsWith('modify') ||
328
+ name.startsWith('edit') ||
329
+ name.startsWith('change')) {
330
+ return types_1.ToolCategory.DATA;
331
+ }
332
+ if (name.startsWith('delete') || name.startsWith('remove') || name.startsWith('destroy')) {
333
+ return types_1.ToolCategory.DATA;
334
+ }
335
+ if (name.startsWith('list') ||
336
+ name.startsWith('find') ||
337
+ name.startsWith('search') ||
338
+ name.startsWith('query')) {
339
+ return types_1.ToolCategory.SEARCH;
340
+ }
341
+ if (name.includes('sync') || name.includes('cloud') || name.includes('backup')) {
342
+ return types_1.ToolCategory.SYSTEM;
343
+ }
344
+ return types_1.ToolCategory.UTILITY;
345
+ }
346
+ /**
347
+ * Generate keywords from method name
348
+ */
349
+ function generateKeywords(methodName) {
350
+ return [String(methodName)];
351
+ }
352
+ /**
353
+ * Generate use cases from method name
354
+ */
355
+ function generateUseCases(methodName) {
356
+ const useCases = [];
357
+ const name = String(methodName).toLowerCase();
358
+ // Add common use cases based on method name
359
+ if (name.startsWith('create'))
360
+ useCases.push('Create new entity');
361
+ if (name.startsWith('get') || name.startsWith('read'))
362
+ useCases.push('Retrieve data');
363
+ if (name.startsWith('list') || name.startsWith('find'))
364
+ useCases.push('Browse and search');
365
+ if (name.startsWith('update'))
366
+ useCases.push('Modify existing data');
367
+ if (name.startsWith('delete'))
368
+ useCases.push('Remove data');
369
+ return useCases.length > 0 ? useCases : ['General operation'];
370
+ }
371
+ /**
372
+ * Infer permissions from method name
373
+ */
374
+ function inferPermissions(methodName) {
375
+ const name = String(methodName).toLowerCase();
376
+ if (name.startsWith('delete') || name.startsWith('remove')) {
377
+ return {
378
+ level: 'approve_once',
379
+ sensitiveDataAccess: true,
380
+ networkAccess: false,
381
+ requiredScopes: [],
382
+ };
383
+ }
384
+ if (name.startsWith('create') || name.startsWith('update')) {
385
+ return {
386
+ level: 'approve_once',
387
+ sensitiveDataAccess: false,
388
+ networkAccess: false,
389
+ requiredScopes: [],
390
+ };
391
+ }
392
+ return {
393
+ level: 'auto_approve',
394
+ sensitiveDataAccess: false,
395
+ networkAccess: false,
396
+ requiredScopes: [],
397
+ };
398
+ }
399
+ /**
400
+ * Infer frequency from method name
401
+ */
402
+ function inferFrequency(methodName) {
403
+ const name = String(methodName).toLowerCase();
404
+ if (name.startsWith('get') || name.startsWith('read') || name.startsWith('list')) {
405
+ return types_1.ToolFrequency.VERY_HIGH;
406
+ }
407
+ if (name.startsWith('create') || name.startsWith('add')) {
408
+ return types_1.ToolFrequency.HIGH;
409
+ }
410
+ if (name.startsWith('update') || name.startsWith('modify')) {
411
+ return types_1.ToolFrequency.MEDIUM;
412
+ }
413
+ if (name.startsWith('delete') || name.startsWith('sync')) {
414
+ return types_1.ToolFrequency.LOW;
415
+ }
416
+ return types_1.ToolFrequency.MEDIUM;
417
+ }
418
+ /**
419
+ * Format method name for display
420
+ */
421
+ function formatMethodName(methodName) {
422
+ // Handle symbol or non-string inputs
423
+ if (typeof methodName !== 'string') {
424
+ return String(methodName);
425
+ }
426
+ // Convert camelCase to Title Case
427
+ return methodName
428
+ .replace(/([A-Z])/g, ' $1')
429
+ .replace(/^./, (str) => str.toUpperCase())
430
+ .trim();
431
+ }
432
+ // NEW: AI Interface helper functions
433
+ function generateToolId(providerName, methodName) {
434
+ return `${providerName.toLowerCase()}-${methodName.toLowerCase()}`;
435
+ }
436
+ function generateNaturalLanguageExamples(methodName) {
437
+ const examples = [];
438
+ const name = methodName.toLowerCase();
439
+ if (name.includes('get') || name.includes('fetch') || name.includes('load')) {
440
+ examples.push('get this', 'fetch it', 'load the data');
441
+ }
442
+ if (name.includes('create') || name.includes('add')) {
443
+ examples.push('create new', 'add this', 'make a new one');
444
+ }
445
+ if (name.includes('update') || name.includes('modify') || name.includes('edit')) {
446
+ examples.push('update this', 'modify it', 'change the data');
447
+ }
448
+ if (name.includes('search') || name.includes('find')) {
449
+ examples.push('search for', 'find this', 'look up');
450
+ }
451
+ if (name.startsWith('delete') || name.startsWith('remove')) {
452
+ examples.push('delete this', 'remove it', 'get rid of it');
453
+ }
454
+ return examples.length > 0 ? examples : [`execute ${formatMethodName(methodName)}`];
455
+ }
456
+ function generateAIDescription(methodName, description) {
457
+ const baseDesc = description || formatMethodName(methodName);
458
+ const name = methodName.toLowerCase();
459
+ let aiDesc = baseDesc;
460
+ if (name.includes('navigate')) {
461
+ aiDesc += '. This changes the current page or view.';
462
+ }
463
+ if (name.startsWith('approve')) {
464
+ aiDesc += '. This action updates the status to approved.';
465
+ }
466
+ if (name.startsWith('delete') || name.startsWith('remove')) {
467
+ aiDesc += '. This is a destructive action that cannot be undone.';
468
+ }
469
+ if (name.startsWith('search') || name.startsWith('find')) {
470
+ aiDesc += '. Returns matching results based on search criteria.';
471
+ }
472
+ return aiDesc;
473
+ }
474
+ function inferExecutionContext(methodName) {
475
+ const name = methodName.toLowerCase();
476
+ if (name.includes('navigate') || name.includes('click') || name.includes('type')) {
477
+ return 'ui';
478
+ }
479
+ if (name.includes('create') ||
480
+ name.includes('update') ||
481
+ name.includes('delete') ||
482
+ name.includes('fetch')) {
483
+ return 'api';
484
+ }
485
+ return 'both';
486
+ }
487
+ function inferToolType(methodName) {
488
+ const name = methodName.toLowerCase();
489
+ // Dangerous operations - test-only by default
490
+ if (name.includes('delete') || name.includes('remove') || name.includes('destroy')) {
491
+ return 'ai-dangerous';
492
+ }
493
+ // Restricted operations - require explicit enabling
494
+ if (name.includes('create') ||
495
+ name.includes('update') ||
496
+ name.includes('modify') ||
497
+ name.includes('approve') ||
498
+ name.includes('reject') ||
499
+ name.includes('assign')) {
500
+ return 'ai-restricted';
501
+ }
502
+ // Safe operations - can be AI-enabled
503
+ if (name.includes('get') ||
504
+ name.includes('fetch') ||
505
+ name.includes('search') ||
506
+ name.includes('find') ||
507
+ name.includes('list') ||
508
+ name.includes('view') ||
509
+ name.includes('navigate') ||
510
+ name.includes('show') ||
511
+ name.includes('click') ||
512
+ name.includes('toggle') ||
513
+ name.includes('increment') ||
514
+ name.includes('decrement') ||
515
+ name.includes('select') ||
516
+ name.includes('open') ||
517
+ name.includes('close')) {
518
+ return 'ai-safe';
519
+ }
520
+ // Default: ai-safe for UI interactions (changed from test-only)
521
+ return 'ai-safe';
522
+ }
523
+ function inferDangerLevel(methodName) {
524
+ const name = methodName.toLowerCase();
525
+ // Destructive operations
526
+ if (name.includes('delete') ||
527
+ name.includes('remove') ||
528
+ name.includes('destroy') ||
529
+ name.includes('purge') ||
530
+ name.includes('wipe')) {
531
+ return 'destructive';
532
+ }
533
+ // Dangerous operations
534
+ if (name.includes('approve') ||
535
+ name.includes('reject') ||
536
+ name.includes('ban') ||
537
+ name.includes('suspend') ||
538
+ name.includes('disable')) {
539
+ return 'dangerous';
540
+ }
541
+ // Moderate operations
542
+ if (name.includes('create') ||
543
+ name.includes('update') ||
544
+ name.includes('modify') ||
545
+ name.includes('assign') ||
546
+ name.includes('change')) {
547
+ return 'moderate';
548
+ }
549
+ // Safe operations (read-only, navigation)
550
+ return 'safe';
551
+ }
552
+ function shouldRequireApproval(methodName, dangerLevel) {
553
+ const level = dangerLevel || inferDangerLevel(methodName);
554
+ // Always require approval for dangerous/destructive operations
555
+ if (level === 'dangerous' || level === 'destructive') {
556
+ return true;
557
+ }
558
+ // Require approval for certain moderate operations
559
+ if (level === 'moderate') {
560
+ const name = methodName.toLowerCase();
561
+ if (name.includes('approve') || name.includes('reject') || name.includes('assign')) {
562
+ return true;
563
+ }
564
+ }
565
+ return false;
566
+ }
567
+ /**
568
+ * Infer element type from method name (for testing integration)
569
+ */
570
+ function inferElementType(methodName) {
571
+ const lowerName = methodName.toLowerCase();
572
+ // Button patterns
573
+ if (lowerName.includes('click') || lowerName.includes('button') || lowerName.includes('submit')) {
574
+ return 'button';
575
+ }
576
+ // Input patterns
577
+ if (lowerName.includes('type') || lowerName.includes('input') || lowerName.includes('enter')) {
578
+ return 'input';
579
+ }
580
+ // Select patterns
581
+ if (lowerName.includes('select') ||
582
+ lowerName.includes('choose') ||
583
+ lowerName.includes('dropdown')) {
584
+ return 'select';
585
+ }
586
+ // Textarea patterns
587
+ if (lowerName.includes('textarea') ||
588
+ lowerName.includes('message') ||
589
+ lowerName.includes('comment')) {
590
+ return 'textarea';
591
+ }
592
+ // Link patterns
593
+ if (lowerName.includes('navigate') || lowerName.includes('link') || lowerName.includes('goto')) {
594
+ return 'link';
595
+ }
596
+ // Default to div for generic interactions
597
+ return 'div';
598
+ }
599
+ /**
600
+ * Infer action type from method name (for testing integration)
601
+ */
602
+ function inferActionType(methodName) {
603
+ const lowerName = methodName.toLowerCase();
604
+ // Click actions
605
+ if (lowerName.includes('click') || lowerName.includes('press') || lowerName.includes('tap')) {
606
+ return 'click';
607
+ }
608
+ // Type actions
609
+ if (lowerName.includes('type') || lowerName.includes('enter') || lowerName.includes('input')) {
610
+ return 'type';
611
+ }
612
+ // Select actions
613
+ if (lowerName.includes('select') || lowerName.includes('choose') || lowerName.includes('pick')) {
614
+ return 'select';
615
+ }
616
+ // Navigate actions
617
+ if (lowerName.includes('navigate') || lowerName.includes('goto') || lowerName.includes('open')) {
618
+ return 'navigate';
619
+ }
620
+ // Hover actions
621
+ if (lowerName.includes('hover') || lowerName.includes('mouseover')) {
622
+ return 'hover';
623
+ }
624
+ // Scroll actions
625
+ if (lowerName.includes('scroll') || lowerName.includes('swipe')) {
626
+ return 'scroll';
627
+ }
628
+ // Default to click for most interactions
629
+ return 'click';
630
+ }
631
+ /**
632
+ * Global default reporter - can be set by application (e.g., ToolManager)
633
+ */
634
+ let globalDefaultReporter = null;
635
+ function setDefaultToolReporter(reporter) {
636
+ globalDefaultReporter = reporter;
637
+ }
638
+ function getDefaultReporter() {
639
+ return globalDefaultReporter;
640
+ }
641
+ /**
642
+ * Infer default aiEnabled from inferred toolType
643
+ * - ai-safe → true
644
+ * - ai-restricted → false (require explicit enabling)
645
+ * - ai-dangerous → false (require explicit enabling)
646
+ * - test-only → false
647
+ */
648
+ function inferAIEnabled(methodName) {
649
+ const toolType = inferToolType(methodName);
650
+ return toolType === 'ai-safe';
651
+ }
652
+ /**
653
+ * Generate human-readable message from elementId and actionType
654
+ * Examples:
655
+ * - 'open-main-menu' + 'click' -> 'Open main menu'
656
+ * - 'feature-toggle' + 'change' -> 'Feature toggle changed'
657
+ */
658
+ function generateDefaultMessage(elementId, actionType) {
659
+ if (!elementId)
660
+ return 'Tool executed';
661
+ // Convert kebab-case to words: 'open-main-menu' -> 'Open main menu'
662
+ const words = elementId.split('-')
663
+ .map((word, i) => i === 0 ? word.charAt(0).toUpperCase() + word.slice(1) : word)
664
+ .join(' ');
665
+ // Add action context if available
666
+ if (actionType && actionType !== 'click') {
667
+ return `${words} ${actionType}d`;
668
+ }
669
+ return words;
670
+ }
671
+ /**
672
+ * Get all tools (both class methods and standalone functions)
673
+ * @deprecated Use ToolRegistry.getAllTools() instead
674
+ */
675
+ function getStandaloneTools() {
676
+ try {
677
+ const { ToolRegistry } = require('../background/registry/ToolRegistry');
678
+ return ToolRegistry.getAllTools().filter((tool) => tool.isStandalone);
679
+ }
680
+ catch (error) {
681
+ console.error('Failed to get tools from registry:', error);
682
+ return [];
683
+ }
684
+ }
685
+ /**
686
+ * Get tool by ID (works for both class methods and standalone functions)
687
+ * @deprecated Use ToolRegistry.getTool() instead
688
+ */
689
+ function getStandaloneTool(toolId) {
690
+ try {
691
+ const { ToolRegistry } = require('../background/registry/ToolRegistry');
692
+ const tool = ToolRegistry.getTool(toolId);
693
+ return tool?.isStandalone ? tool : undefined;
694
+ }
695
+ catch (error) {
696
+ console.error('Failed to get tool from registry:', error);
697
+ return undefined;
698
+ }
699
+ }
700
+ //# sourceMappingURL=Tool.js.map