@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.
- package/LICENSE +22 -0
- package/README.md +165 -0
- package/dist/cjs/names/API.js +104 -0
- package/dist/cjs/names/API.js.map +1 -0
- package/dist/cjs/names/Components.js +104 -0
- package/dist/cjs/names/Components.js.map +1 -0
- package/dist/cjs/names/Containers.js +99 -0
- package/dist/cjs/names/Containers.js.map +1 -0
- package/dist/cjs/names/Functions.js +114 -0
- package/dist/cjs/names/Functions.js.map +1 -0
- package/dist/cjs/names/index.js +118 -0
- package/dist/cjs/names/index.js.map +1 -0
- package/dist/cjs/src/adapters/ChatUIProvider.js +176 -0
- package/dist/cjs/src/adapters/ChatUIProvider.js.map +1 -0
- package/dist/cjs/src/adapters/bridge.js +225 -0
- package/dist/cjs/src/adapters/bridge.js.map +1 -0
- package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js +289 -0
- package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/copilotkit/index.js +10 -0
- package/dist/cjs/src/adapters/copilotkit/index.js.map +1 -0
- package/dist/cjs/src/adapters/index.js +63 -0
- package/dist/cjs/src/adapters/index.js.map +1 -0
- package/dist/cjs/src/adapters/native/NativeAdapter.js +268 -0
- package/dist/cjs/src/adapters/native/NativeAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/native/index.js +10 -0
- package/dist/cjs/src/adapters/native/index.js.map +1 -0
- package/dist/cjs/src/adapters/types/index.js +9 -0
- package/dist/cjs/src/adapters/types/index.js.map +1 -0
- package/dist/cjs/src/ai/ToolExecutor.js +211 -0
- package/dist/cjs/src/ai/ToolExecutor.js.map +1 -0
- package/dist/cjs/src/ai/ToolMatcher.js +202 -0
- package/dist/cjs/src/ai/ToolMatcher.js.map +1 -0
- package/dist/cjs/src/ai/index.js +29 -0
- package/dist/cjs/src/ai/index.js.map +1 -0
- package/dist/cjs/src/architecture/createContainer.js +106 -0
- package/dist/cjs/src/architecture/createContainer.js.map +1 -0
- package/dist/cjs/src/architecture/initialize.js +125 -0
- package/dist/cjs/src/architecture/initialize.js.map +1 -0
- package/dist/cjs/src/architecture/registry.js +111 -0
- package/dist/cjs/src/architecture/registry.js.map +1 -0
- package/dist/cjs/src/background/architecture/ArchitectureInitializer.js +174 -0
- package/dist/cjs/src/background/architecture/ArchitectureInitializer.js.map +1 -0
- package/dist/cjs/src/background/architecture/Containers.js +46 -0
- package/dist/cjs/src/background/architecture/Containers.js.map +1 -0
- package/dist/cjs/src/background/architecture/DataContractTypes.js +28 -0
- package/dist/cjs/src/background/architecture/DataContractTypes.js.map +1 -0
- package/dist/cjs/src/background/architecture/index.js +24 -0
- package/dist/cjs/src/background/architecture/index.js.map +1 -0
- package/dist/cjs/src/background/navigation/NavigationGraph.js +71 -0
- package/dist/cjs/src/background/navigation/NavigationGraph.js.map +1 -0
- package/dist/cjs/src/background/navigation/RuntimeTreeBuilder.js +66 -0
- package/dist/cjs/src/background/navigation/RuntimeTreeBuilder.js.map +1 -0
- package/dist/cjs/src/background/navigation/useComponentTracking.js +20 -0
- package/dist/cjs/src/background/navigation/useComponentTracking.js.map +1 -0
- package/dist/cjs/src/background/registry/ComponentRegistry.js +340 -0
- package/dist/cjs/src/background/registry/ComponentRegistry.js.map +1 -0
- package/dist/cjs/src/background/registry/ToolRegistry.js +668 -0
- package/dist/cjs/src/background/registry/ToolRegistry.js.map +1 -0
- package/dist/cjs/src/browser.js +70 -0
- package/dist/cjs/src/browser.js.map +1 -0
- package/dist/cjs/src/components/ComponentScanner.js +362 -0
- package/dist/cjs/src/components/ComponentScanner.js.map +1 -0
- package/dist/cjs/src/components/index.js +24 -0
- package/dist/cjs/src/components/index.js.map +1 -0
- package/dist/cjs/src/data/TestDataManager.js +187 -0
- package/dist/cjs/src/data/TestDataManager.js.map +1 -0
- package/dist/cjs/src/data/index.js +23 -0
- package/dist/cjs/src/data/index.js.map +1 -0
- package/dist/cjs/src/decorators/Component.js +108 -0
- package/dist/cjs/src/decorators/Component.js.map +1 -0
- package/dist/cjs/src/decorators/ContainerHelpers.js +45 -0
- package/dist/cjs/src/decorators/ContainerHelpers.js.map +1 -0
- package/dist/cjs/src/decorators/SpecializedTools.js +386 -0
- package/dist/cjs/src/decorators/SpecializedTools.js.map +1 -0
- package/dist/cjs/src/decorators/Tool.js +700 -0
- package/dist/cjs/src/decorators/Tool.js.map +1 -0
- package/dist/cjs/src/decorators/ToolHelpers.js +261 -0
- package/dist/cjs/src/decorators/ToolHelpers.js.map +1 -0
- package/dist/cjs/src/decorators/ToolPreset.js +270 -0
- package/dist/cjs/src/decorators/ToolPreset.js.map +1 -0
- package/dist/cjs/src/decorators/ToolProvider.js +86 -0
- package/dist/cjs/src/decorators/ToolProvider.js.map +1 -0
- package/dist/cjs/src/decorators/index.js +44 -0
- package/dist/cjs/src/decorators/index.js.map +1 -0
- package/dist/cjs/src/execution/DOMExecutor.js +233 -0
- package/dist/cjs/src/execution/DOMExecutor.js.map +1 -0
- package/dist/cjs/src/execution/PlaywrightExecutor.js +196 -0
- package/dist/cjs/src/execution/PlaywrightExecutor.js.map +1 -0
- package/dist/cjs/src/exposure/ExposureCollector.js +358 -0
- package/dist/cjs/src/exposure/ExposureCollector.js.map +1 -0
- package/dist/cjs/src/exposure/index.js +26 -0
- package/dist/cjs/src/exposure/index.js.map +1 -0
- package/dist/cjs/src/index.js +187 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/interfaces/StatefulComponent.js +50 -0
- package/dist/cjs/src/interfaces/StatefulComponent.js.map +1 -0
- package/dist/cjs/src/name-contracts/ContractScanner.js +15 -0
- package/dist/cjs/src/name-contracts/ContractScanner.js.map +1 -0
- package/dist/cjs/src/name-contracts/RouteContractScanner.js +225 -0
- package/dist/cjs/src/name-contracts/RouteContractScanner.js.map +1 -0
- package/dist/cjs/src/name-contracts/index.js +15 -0
- package/dist/cjs/src/name-contracts/index.js.map +1 -0
- package/dist/cjs/src/names/createNames.js +86 -0
- package/dist/cjs/src/names/createNames.js.map +1 -0
- package/dist/cjs/src/react/hooks/useChatWithContext.js +221 -0
- package/dist/cjs/src/react/hooks/useChatWithContext.js.map +1 -0
- package/dist/cjs/src/react/index.js +28 -0
- package/dist/cjs/src/react/index.js.map +1 -0
- package/dist/cjs/src/react/useNavigationHandler.js +88 -0
- package/dist/cjs/src/react/useNavigationHandler.js.map +1 -0
- package/dist/cjs/src/react/usePersistedState.js +72 -0
- package/dist/cjs/src/react/usePersistedState.js.map +1 -0
- package/dist/cjs/src/react/useToolBinding.js +110 -0
- package/dist/cjs/src/react/useToolBinding.js.map +1 -0
- package/dist/cjs/src/routes/RouteContractGenerator.js +119 -0
- package/dist/cjs/src/routes/RouteContractGenerator.js.map +1 -0
- package/dist/cjs/src/routes/RouteContractsConfig.js +39 -0
- package/dist/cjs/src/routes/RouteContractsConfig.js.map +1 -0
- package/dist/cjs/src/routes/index.js +20 -0
- package/dist/cjs/src/routes/index.js.map +1 -0
- package/dist/cjs/src/routes/scanners/NameExtractor.js +193 -0
- package/dist/cjs/src/routes/scanners/NameExtractor.js.map +1 -0
- package/dist/cjs/src/routes/scanners/NextjsDynamicScanner.js +102 -0
- package/dist/cjs/src/routes/scanners/NextjsDynamicScanner.js.map +1 -0
- package/dist/cjs/src/routes/scanners/RouteScanner.js +13 -0
- package/dist/cjs/src/routes/scanners/RouteScanner.js.map +1 -0
- package/dist/cjs/src/storage/LocalStorageAdapter.js +87 -0
- package/dist/cjs/src/storage/LocalStorageAdapter.js.map +1 -0
- package/dist/cjs/src/storage/StateManager.js +299 -0
- package/dist/cjs/src/storage/StateManager.js.map +1 -0
- package/dist/cjs/src/storage/StorageAdapter.js +164 -0
- package/dist/cjs/src/storage/StorageAdapter.js.map +1 -0
- package/dist/cjs/src/storage/index.js +37 -0
- package/dist/cjs/src/storage/index.js.map +1 -0
- package/dist/cjs/src/testing/BrowserStateInjection.js +130 -0
- package/dist/cjs/src/testing/BrowserStateInjection.js.map +1 -0
- package/dist/cjs/src/testing/ComponentStateHelpers.js +200 -0
- package/dist/cjs/src/testing/ComponentStateHelpers.js.map +1 -0
- package/dist/cjs/src/testing/GherkinParser.js +252 -0
- package/dist/cjs/src/testing/GherkinParser.js.map +1 -0
- package/dist/cjs/src/testing/PlaywrightStateHelpers.js +254 -0
- package/dist/cjs/src/testing/PlaywrightStateHelpers.js.map +1 -0
- package/dist/cjs/src/testing/TestRunner.js +158 -0
- package/dist/cjs/src/testing/TestRunner.js.map +1 -0
- package/dist/cjs/src/testing/index.js +46 -0
- package/dist/cjs/src/testing/index.js.map +1 -0
- package/dist/cjs/src/testing/selectors.js +84 -0
- package/dist/cjs/src/testing/selectors.js.map +1 -0
- package/dist/cjs/src/tools/SystemTools.js +262 -0
- package/dist/cjs/src/tools/SystemTools.js.map +1 -0
- package/dist/cjs/src/types/ClassifiedTool.js +50 -0
- package/dist/cjs/src/types/ClassifiedTool.js.map +1 -0
- package/dist/cjs/src/types/ComponentState.js +30 -0
- package/dist/cjs/src/types/ComponentState.js.map +1 -0
- package/dist/cjs/src/types/DiscoverableToolProvider.js +9 -0
- package/dist/cjs/src/types/DiscoverableToolProvider.js.map +1 -0
- package/dist/cjs/src/types/ExposureState.js +25 -0
- package/dist/cjs/src/types/ExposureState.js.map +1 -0
- package/dist/cjs/src/types/NavigationGraph.js +8 -0
- package/dist/cjs/src/types/NavigationGraph.js.map +1 -0
- package/dist/cjs/src/types/OperationType.js +49 -0
- package/dist/cjs/src/types/OperationType.js.map +1 -0
- package/dist/cjs/src/types/StateManagers.js +39 -0
- package/dist/cjs/src/types/StateManagers.js.map +1 -0
- package/dist/cjs/src/types/Tool.js +41 -0
- package/dist/cjs/src/types/Tool.js.map +1 -0
- package/dist/cjs/src/types/ToolPermissions.js +54 -0
- package/dist/cjs/src/types/ToolPermissions.js.map +1 -0
- package/dist/cjs/src/types/ToolResult.js +25 -0
- package/dist/cjs/src/types/ToolResult.js.map +1 -0
- package/dist/cjs/src/types/index.js +59 -0
- package/dist/cjs/src/types/index.js.map +1 -0
- package/dist/cjs/src/ui/react/chat/ChatBubble.js +221 -0
- package/dist/cjs/src/ui/react/chat/ChatBubble.js.map +1 -0
- package/dist/esm/names/API.d.ts +77 -0
- package/dist/esm/names/API.d.ts.map +1 -0
- package/dist/esm/names/API.js +99 -0
- package/dist/esm/names/API.js.map +1 -0
- package/dist/esm/names/Components.d.ts +77 -0
- package/dist/esm/names/Components.d.ts.map +1 -0
- package/dist/esm/names/Components.js +99 -0
- package/dist/esm/names/Components.js.map +1 -0
- package/dist/esm/names/Containers.d.ts +84 -0
- package/dist/esm/names/Containers.d.ts.map +1 -0
- package/dist/esm/names/Containers.js +94 -0
- package/dist/esm/names/Containers.js.map +1 -0
- package/dist/esm/names/Functions.d.ts +87 -0
- package/dist/esm/names/Functions.d.ts.map +1 -0
- package/dist/esm/names/Functions.js +109 -0
- package/dist/esm/names/Functions.js.map +1 -0
- package/dist/esm/names/index.d.ts +187 -0
- package/dist/esm/names/index.d.ts.map +1 -0
- package/dist/esm/names/index.js +99 -0
- package/dist/esm/names/index.js.map +1 -0
- package/dist/esm/src/adapters/ChatUIProvider.d.ts +76 -0
- package/dist/esm/src/adapters/ChatUIProvider.d.ts.map +1 -0
- package/dist/esm/src/adapters/ChatUIProvider.js +136 -0
- package/dist/esm/src/adapters/ChatUIProvider.js.map +1 -0
- package/dist/esm/src/adapters/bridge.d.ts +145 -0
- package/dist/esm/src/adapters/bridge.d.ts.map +1 -0
- package/dist/esm/src/adapters/bridge.js +218 -0
- package/dist/esm/src/adapters/bridge.js.map +1 -0
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.d.ts +49 -0
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.d.ts.map +1 -0
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js +251 -0
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -0
- package/dist/esm/src/adapters/copilotkit/index.d.ts +6 -0
- package/dist/esm/src/adapters/copilotkit/index.d.ts.map +1 -0
- package/dist/esm/src/adapters/copilotkit/index.js +5 -0
- package/dist/esm/src/adapters/copilotkit/index.js.map +1 -0
- package/dist/esm/src/adapters/index.d.ts +31 -0
- package/dist/esm/src/adapters/index.d.ts.map +1 -0
- package/dist/esm/src/adapters/index.js +32 -0
- package/dist/esm/src/adapters/index.js.map +1 -0
- package/dist/esm/src/adapters/native/NativeAdapter.d.ts +47 -0
- package/dist/esm/src/adapters/native/NativeAdapter.d.ts.map +1 -0
- package/dist/esm/src/adapters/native/NativeAdapter.js +230 -0
- package/dist/esm/src/adapters/native/NativeAdapter.js.map +1 -0
- package/dist/esm/src/adapters/native/index.d.ts +6 -0
- package/dist/esm/src/adapters/native/index.d.ts.map +1 -0
- package/dist/esm/src/adapters/native/index.js +5 -0
- package/dist/esm/src/adapters/native/index.js.map +1 -0
- package/dist/esm/src/adapters/types/index.d.ts +155 -0
- package/dist/esm/src/adapters/types/index.d.ts.map +1 -0
- package/dist/esm/src/adapters/types/index.js +8 -0
- package/dist/esm/src/adapters/types/index.js.map +1 -0
- package/dist/esm/src/ai/ToolExecutor.d.ts +49 -0
- package/dist/esm/src/ai/ToolExecutor.d.ts.map +1 -0
- package/dist/esm/src/ai/ToolExecutor.js +174 -0
- package/dist/esm/src/ai/ToolExecutor.js.map +1 -0
- package/dist/esm/src/ai/ToolMatcher.d.ts +61 -0
- package/dist/esm/src/ai/ToolMatcher.d.ts.map +1 -0
- package/dist/esm/src/ai/ToolMatcher.js +198 -0
- package/dist/esm/src/ai/ToolMatcher.js.map +1 -0
- package/dist/esm/src/ai/index.d.ts +9 -0
- package/dist/esm/src/ai/index.d.ts.map +1 -0
- package/dist/esm/src/ai/index.js +13 -0
- package/dist/esm/src/ai/index.js.map +1 -0
- package/dist/esm/src/architecture/createContainer.d.ts +60 -0
- package/dist/esm/src/architecture/createContainer.d.ts.map +1 -0
- package/dist/esm/src/architecture/createContainer.js +102 -0
- package/dist/esm/src/architecture/createContainer.js.map +1 -0
- package/dist/esm/src/architecture/initialize.d.ts +81 -0
- package/dist/esm/src/architecture/initialize.d.ts.map +1 -0
- package/dist/esm/src/architecture/initialize.js +121 -0
- package/dist/esm/src/architecture/initialize.js.map +1 -0
- package/dist/esm/src/architecture/registry.d.ts +61 -0
- package/dist/esm/src/architecture/registry.d.ts.map +1 -0
- package/dist/esm/src/architecture/registry.js +107 -0
- package/dist/esm/src/architecture/registry.js.map +1 -0
- package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts +95 -0
- package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts.map +1 -0
- package/dist/esm/src/background/architecture/ArchitectureInitializer.js +170 -0
- package/dist/esm/src/background/architecture/ArchitectureInitializer.js.map +1 -0
- package/dist/esm/src/background/architecture/Containers.d.ts +52 -0
- package/dist/esm/src/background/architecture/Containers.d.ts.map +1 -0
- package/dist/esm/src/background/architecture/Containers.js +40 -0
- package/dist/esm/src/background/architecture/Containers.js.map +1 -0
- package/dist/esm/src/background/architecture/DataContractTypes.d.ts +33 -0
- package/dist/esm/src/background/architecture/DataContractTypes.d.ts.map +1 -0
- package/dist/esm/src/background/architecture/DataContractTypes.js +22 -0
- package/dist/esm/src/background/architecture/DataContractTypes.js.map +1 -0
- package/dist/esm/src/background/architecture/index.d.ts +12 -0
- package/dist/esm/src/background/architecture/index.d.ts.map +1 -0
- package/dist/esm/src/background/architecture/index.js +13 -0
- package/dist/esm/src/background/architecture/index.js.map +1 -0
- package/dist/esm/src/background/navigation/NavigationGraph.d.ts +48 -0
- package/dist/esm/src/background/navigation/NavigationGraph.d.ts.map +1 -0
- package/dist/esm/src/background/navigation/NavigationGraph.js +67 -0
- package/dist/esm/src/background/navigation/NavigationGraph.js.map +1 -0
- package/dist/esm/src/background/navigation/RuntimeTreeBuilder.d.ts +30 -0
- package/dist/esm/src/background/navigation/RuntimeTreeBuilder.d.ts.map +1 -0
- package/dist/esm/src/background/navigation/RuntimeTreeBuilder.js +60 -0
- package/dist/esm/src/background/navigation/RuntimeTreeBuilder.js.map +1 -0
- package/dist/esm/src/background/navigation/useComponentTracking.d.ts +10 -0
- package/dist/esm/src/background/navigation/useComponentTracking.d.ts.map +1 -0
- package/dist/esm/src/background/navigation/useComponentTracking.js +17 -0
- package/dist/esm/src/background/navigation/useComponentTracking.js.map +1 -0
- package/dist/esm/src/background/registry/ComponentRegistry.d.ts +192 -0
- package/dist/esm/src/background/registry/ComponentRegistry.d.ts.map +1 -0
- package/dist/esm/src/background/registry/ComponentRegistry.js +336 -0
- package/dist/esm/src/background/registry/ComponentRegistry.js.map +1 -0
- package/dist/esm/src/background/registry/ToolRegistry.d.ts +232 -0
- package/dist/esm/src/background/registry/ToolRegistry.d.ts.map +1 -0
- package/dist/esm/src/background/registry/ToolRegistry.js +664 -0
- package/dist/esm/src/background/registry/ToolRegistry.js.map +1 -0
- package/dist/esm/src/browser.d.ts +21 -0
- package/dist/esm/src/browser.d.ts.map +1 -0
- package/dist/esm/src/browser.js +31 -0
- package/dist/esm/src/browser.js.map +1 -0
- package/dist/esm/src/components/ComponentScanner.d.ts +99 -0
- package/dist/esm/src/components/ComponentScanner.d.ts.map +1 -0
- package/dist/esm/src/components/ComponentScanner.js +325 -0
- package/dist/esm/src/components/ComponentScanner.js.map +1 -0
- package/dist/esm/src/components/index.d.ts +9 -0
- package/dist/esm/src/components/index.d.ts.map +1 -0
- package/dist/esm/src/components/index.js +8 -0
- package/dist/esm/src/components/index.js.map +1 -0
- package/dist/esm/src/data/TestDataManager.d.ts +125 -0
- package/dist/esm/src/data/TestDataManager.d.ts.map +1 -0
- package/dist/esm/src/data/TestDataManager.js +183 -0
- package/dist/esm/src/data/TestDataManager.js.map +1 -0
- package/dist/esm/src/data/index.d.ts +7 -0
- package/dist/esm/src/data/index.d.ts.map +1 -0
- package/dist/esm/src/data/index.js +7 -0
- package/dist/esm/src/data/index.js.map +1 -0
- package/dist/esm/src/decorators/Component.d.ts +59 -0
- package/dist/esm/src/decorators/Component.d.ts.map +1 -0
- package/dist/esm/src/decorators/Component.js +103 -0
- package/dist/esm/src/decorators/Component.js.map +1 -0
- package/dist/esm/src/decorators/ContainerHelpers.d.ts +26 -0
- package/dist/esm/src/decorators/ContainerHelpers.d.ts.map +1 -0
- package/dist/esm/src/decorators/ContainerHelpers.js +42 -0
- package/dist/esm/src/decorators/ContainerHelpers.js.map +1 -0
- package/dist/esm/src/decorators/SpecializedTools.d.ts +218 -0
- package/dist/esm/src/decorators/SpecializedTools.d.ts.map +1 -0
- package/dist/esm/src/decorators/SpecializedTools.js +383 -0
- package/dist/esm/src/decorators/SpecializedTools.js.map +1 -0
- package/dist/esm/src/decorators/Tool.d.ts +210 -0
- package/dist/esm/src/decorators/Tool.d.ts.map +1 -0
- package/dist/esm/src/decorators/Tool.js +694 -0
- package/dist/esm/src/decorators/Tool.js.map +1 -0
- package/dist/esm/src/decorators/ToolHelpers.d.ts +74 -0
- package/dist/esm/src/decorators/ToolHelpers.d.ts.map +1 -0
- package/dist/esm/src/decorators/ToolHelpers.js +219 -0
- package/dist/esm/src/decorators/ToolHelpers.js.map +1 -0
- package/dist/esm/src/decorators/ToolPreset.d.ts +138 -0
- package/dist/esm/src/decorators/ToolPreset.d.ts.map +1 -0
- package/dist/esm/src/decorators/ToolPreset.js +259 -0
- package/dist/esm/src/decorators/ToolPreset.js.map +1 -0
- package/dist/esm/src/decorators/ToolProvider.d.ts +65 -0
- package/dist/esm/src/decorators/ToolProvider.d.ts.map +1 -0
- package/dist/esm/src/decorators/ToolProvider.js +81 -0
- package/dist/esm/src/decorators/ToolProvider.js.map +1 -0
- package/dist/esm/src/decorators/index.d.ts +13 -0
- package/dist/esm/src/decorators/index.d.ts.map +1 -0
- package/dist/esm/src/decorators/index.js +14 -0
- package/dist/esm/src/decorators/index.js.map +1 -0
- package/dist/esm/src/execution/DOMExecutor.d.ts +43 -0
- package/dist/esm/src/execution/DOMExecutor.d.ts.map +1 -0
- package/dist/esm/src/execution/DOMExecutor.js +229 -0
- package/dist/esm/src/execution/DOMExecutor.js.map +1 -0
- package/dist/esm/src/execution/PlaywrightExecutor.d.ts +38 -0
- package/dist/esm/src/execution/PlaywrightExecutor.d.ts.map +1 -0
- package/dist/esm/src/execution/PlaywrightExecutor.js +192 -0
- package/dist/esm/src/execution/PlaywrightExecutor.js.map +1 -0
- package/dist/esm/src/exposure/ExposureCollector.d.ts +88 -0
- package/dist/esm/src/exposure/ExposureCollector.d.ts.map +1 -0
- package/dist/esm/src/exposure/ExposureCollector.js +354 -0
- package/dist/esm/src/exposure/ExposureCollector.js.map +1 -0
- package/dist/esm/src/exposure/index.d.ts +8 -0
- package/dist/esm/src/exposure/index.d.ts.map +1 -0
- package/dist/esm/src/exposure/index.js +10 -0
- package/dist/esm/src/exposure/index.js.map +1 -0
- package/dist/esm/src/index.d.ts +49 -0
- package/dist/esm/src/index.d.ts.map +1 -0
- package/dist/esm/src/index.js +79 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/interfaces/StatefulComponent.d.ts +72 -0
- package/dist/esm/src/interfaces/StatefulComponent.d.ts.map +1 -0
- package/dist/esm/src/interfaces/StatefulComponent.js +47 -0
- package/dist/esm/src/interfaces/StatefulComponent.js.map +1 -0
- package/dist/esm/src/name-contracts/ContractScanner.d.ts +61 -0
- package/dist/esm/src/name-contracts/ContractScanner.d.ts.map +1 -0
- package/dist/esm/src/name-contracts/ContractScanner.js +11 -0
- package/dist/esm/src/name-contracts/ContractScanner.js.map +1 -0
- package/dist/esm/src/name-contracts/RouteContractScanner.d.ts +30 -0
- package/dist/esm/src/name-contracts/RouteContractScanner.d.ts.map +1 -0
- package/dist/esm/src/name-contracts/RouteContractScanner.js +188 -0
- package/dist/esm/src/name-contracts/RouteContractScanner.js.map +1 -0
- package/dist/esm/src/name-contracts/index.d.ts +10 -0
- package/dist/esm/src/name-contracts/index.d.ts.map +1 -0
- package/dist/esm/src/name-contracts/index.js +10 -0
- package/dist/esm/src/name-contracts/index.js.map +1 -0
- package/dist/esm/src/names/createNames.d.ts +49 -0
- package/dist/esm/src/names/createNames.d.ts.map +1 -0
- package/dist/esm/src/names/createNames.js +81 -0
- package/dist/esm/src/names/createNames.js.map +1 -0
- package/dist/esm/src/react/hooks/useChatWithContext.d.ts +68 -0
- package/dist/esm/src/react/hooks/useChatWithContext.d.ts.map +1 -0
- package/dist/esm/src/react/hooks/useChatWithContext.js +218 -0
- package/dist/esm/src/react/hooks/useChatWithContext.js.map +1 -0
- package/dist/esm/src/react/index.d.ts +12 -0
- package/dist/esm/src/react/index.d.ts.map +1 -0
- package/dist/esm/src/react/index.js +21 -0
- package/dist/esm/src/react/index.js.map +1 -0
- package/dist/esm/src/react/useNavigationHandler.d.ts +42 -0
- package/dist/esm/src/react/useNavigationHandler.d.ts.map +1 -0
- package/dist/esm/src/react/useNavigationHandler.js +85 -0
- package/dist/esm/src/react/useNavigationHandler.js.map +1 -0
- package/dist/esm/src/react/usePersistedState.d.ts +13 -0
- package/dist/esm/src/react/usePersistedState.d.ts.map +1 -0
- package/dist/esm/src/react/usePersistedState.js +69 -0
- package/dist/esm/src/react/usePersistedState.js.map +1 -0
- package/dist/esm/src/react/useToolBinding.d.ts +8 -0
- package/dist/esm/src/react/useToolBinding.d.ts.map +1 -0
- package/dist/esm/src/react/useToolBinding.js +107 -0
- package/dist/esm/src/react/useToolBinding.js.map +1 -0
- package/dist/esm/src/routes/RouteContractGenerator.d.ts +37 -0
- package/dist/esm/src/routes/RouteContractGenerator.d.ts.map +1 -0
- package/dist/esm/src/routes/RouteContractGenerator.js +115 -0
- package/dist/esm/src/routes/RouteContractGenerator.js.map +1 -0
- package/dist/esm/src/routes/RouteContractsConfig.d.ts +93 -0
- package/dist/esm/src/routes/RouteContractsConfig.d.ts.map +1 -0
- package/dist/esm/src/routes/RouteContractsConfig.js +36 -0
- package/dist/esm/src/routes/RouteContractsConfig.js.map +1 -0
- package/dist/esm/src/routes/index.d.ts +13 -0
- package/dist/esm/src/routes/index.d.ts.map +1 -0
- package/dist/esm/src/routes/index.js +13 -0
- package/dist/esm/src/routes/index.js.map +1 -0
- package/dist/esm/src/routes/scanners/NameExtractor.d.ts +36 -0
- package/dist/esm/src/routes/scanners/NameExtractor.d.ts.map +1 -0
- package/dist/esm/src/routes/scanners/NameExtractor.js +156 -0
- package/dist/esm/src/routes/scanners/NameExtractor.js.map +1 -0
- package/dist/esm/src/routes/scanners/NextjsDynamicScanner.d.ts +35 -0
- package/dist/esm/src/routes/scanners/NextjsDynamicScanner.d.ts.map +1 -0
- package/dist/esm/src/routes/scanners/NextjsDynamicScanner.js +98 -0
- package/dist/esm/src/routes/scanners/NextjsDynamicScanner.js.map +1 -0
- package/dist/esm/src/routes/scanners/RouteScanner.d.ts +64 -0
- package/dist/esm/src/routes/scanners/RouteScanner.d.ts.map +1 -0
- package/dist/esm/src/routes/scanners/RouteScanner.js +9 -0
- package/dist/esm/src/routes/scanners/RouteScanner.js.map +1 -0
- package/dist/esm/src/storage/LocalStorageAdapter.d.ts +29 -0
- package/dist/esm/src/storage/LocalStorageAdapter.d.ts.map +1 -0
- package/dist/esm/src/storage/LocalStorageAdapter.js +83 -0
- package/dist/esm/src/storage/LocalStorageAdapter.js.map +1 -0
- package/dist/esm/src/storage/StateManager.d.ts +175 -0
- package/dist/esm/src/storage/StateManager.d.ts.map +1 -0
- package/dist/esm/src/storage/StateManager.js +295 -0
- package/dist/esm/src/storage/StateManager.js.map +1 -0
- package/dist/esm/src/storage/StorageAdapter.d.ts +94 -0
- package/dist/esm/src/storage/StorageAdapter.d.ts.map +1 -0
- package/dist/esm/src/storage/StorageAdapter.js +158 -0
- package/dist/esm/src/storage/StorageAdapter.js.map +1 -0
- package/dist/esm/src/storage/index.d.ts +12 -0
- package/dist/esm/src/storage/index.d.ts.map +1 -0
- package/dist/esm/src/storage/index.js +17 -0
- package/dist/esm/src/storage/index.js.map +1 -0
- package/dist/esm/src/testing/BrowserStateInjection.d.ts +74 -0
- package/dist/esm/src/testing/BrowserStateInjection.d.ts.map +1 -0
- package/dist/esm/src/testing/BrowserStateInjection.js +126 -0
- package/dist/esm/src/testing/BrowserStateInjection.js.map +1 -0
- package/dist/esm/src/testing/ComponentStateHelpers.d.ts +121 -0
- package/dist/esm/src/testing/ComponentStateHelpers.d.ts.map +1 -0
- package/dist/esm/src/testing/ComponentStateHelpers.js +190 -0
- package/dist/esm/src/testing/ComponentStateHelpers.js.map +1 -0
- package/dist/esm/src/testing/GherkinParser.d.ts +87 -0
- package/dist/esm/src/testing/GherkinParser.d.ts.map +1 -0
- package/dist/esm/src/testing/GherkinParser.js +248 -0
- package/dist/esm/src/testing/GherkinParser.js.map +1 -0
- package/dist/esm/src/testing/PlaywrightStateHelpers.d.ts +163 -0
- package/dist/esm/src/testing/PlaywrightStateHelpers.d.ts.map +1 -0
- package/dist/esm/src/testing/PlaywrightStateHelpers.js +242 -0
- package/dist/esm/src/testing/PlaywrightStateHelpers.js.map +1 -0
- package/dist/esm/src/testing/TestRunner.d.ts +50 -0
- package/dist/esm/src/testing/TestRunner.d.ts.map +1 -0
- package/dist/esm/src/testing/TestRunner.js +121 -0
- package/dist/esm/src/testing/TestRunner.js.map +1 -0
- package/dist/esm/src/testing/index.d.ts +12 -0
- package/dist/esm/src/testing/index.d.ts.map +1 -0
- package/dist/esm/src/testing/index.js +25 -0
- package/dist/esm/src/testing/index.js.map +1 -0
- package/dist/esm/src/testing/selectors.d.ts +65 -0
- package/dist/esm/src/testing/selectors.d.ts.map +1 -0
- package/dist/esm/src/testing/selectors.js +76 -0
- package/dist/esm/src/testing/selectors.js.map +1 -0
- package/dist/esm/src/tools/SystemTools.d.ts +139 -0
- package/dist/esm/src/tools/SystemTools.d.ts.map +1 -0
- package/dist/esm/src/tools/SystemTools.js +258 -0
- package/dist/esm/src/tools/SystemTools.js.map +1 -0
- package/dist/esm/src/types/ClassifiedTool.d.ts +61 -0
- package/dist/esm/src/types/ClassifiedTool.d.ts.map +1 -0
- package/dist/esm/src/types/ClassifiedTool.js +47 -0
- package/dist/esm/src/types/ClassifiedTool.js.map +1 -0
- package/dist/esm/src/types/ComponentState.d.ts +207 -0
- package/dist/esm/src/types/ComponentState.d.ts.map +1 -0
- package/dist/esm/src/types/ComponentState.js +25 -0
- package/dist/esm/src/types/ComponentState.js.map +1 -0
- package/dist/esm/src/types/DiscoverableToolProvider.d.ts +59 -0
- package/dist/esm/src/types/DiscoverableToolProvider.d.ts.map +1 -0
- package/dist/esm/src/types/DiscoverableToolProvider.js +8 -0
- package/dist/esm/src/types/DiscoverableToolProvider.js.map +1 -0
- package/dist/esm/src/types/ExposureState.d.ts +75 -0
- package/dist/esm/src/types/ExposureState.d.ts.map +1 -0
- package/dist/esm/src/types/ExposureState.js +22 -0
- package/dist/esm/src/types/ExposureState.js.map +1 -0
- package/dist/esm/src/types/NavigationGraph.d.ts +98 -0
- package/dist/esm/src/types/NavigationGraph.d.ts.map +1 -0
- package/dist/esm/src/types/NavigationGraph.js +7 -0
- package/dist/esm/src/types/NavigationGraph.js.map +1 -0
- package/dist/esm/src/types/OperationType.d.ts +45 -0
- package/dist/esm/src/types/OperationType.d.ts.map +1 -0
- package/dist/esm/src/types/OperationType.js +46 -0
- package/dist/esm/src/types/OperationType.js.map +1 -0
- package/dist/esm/src/types/StateManagers.d.ts +35 -0
- package/dist/esm/src/types/StateManagers.d.ts.map +1 -0
- package/dist/esm/src/types/StateManagers.js +36 -0
- package/dist/esm/src/types/StateManagers.js.map +1 -0
- package/dist/esm/src/types/Tool.d.ts +162 -0
- package/dist/esm/src/types/Tool.d.ts.map +1 -0
- package/dist/esm/src/types/Tool.js +38 -0
- package/dist/esm/src/types/Tool.js.map +1 -0
- package/dist/esm/src/types/ToolPermissions.d.ts +73 -0
- package/dist/esm/src/types/ToolPermissions.d.ts.map +1 -0
- package/dist/esm/src/types/ToolPermissions.js +51 -0
- package/dist/esm/src/types/ToolPermissions.js.map +1 -0
- package/dist/esm/src/types/ToolResult.d.ts +129 -0
- package/dist/esm/src/types/ToolResult.d.ts.map +1 -0
- package/dist/esm/src/types/ToolResult.js +22 -0
- package/dist/esm/src/types/ToolResult.js.map +1 -0
- package/dist/esm/src/types/index.d.ts +47 -0
- package/dist/esm/src/types/index.d.ts.map +1 -0
- package/dist/esm/src/types/index.js +42 -0
- package/dist/esm/src/types/index.js.map +1 -0
- package/dist/esm/src/ui/react/chat/ChatBubble.d.ts +23 -0
- package/dist/esm/src/ui/react/chat/ChatBubble.d.ts.map +1 -0
- package/dist/esm/src/ui/react/chat/ChatBubble.js +184 -0
- package/dist/esm/src/ui/react/chat/ChatBubble.js.map +1 -0
- package/package.json +118 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/background/registry/ComponentRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component Registry
|
|
3
|
+
*
|
|
4
|
+
* Handles two-phase registration for DOM-free decorators:
|
|
5
|
+
* - Phase A (Decorator): Collect metadata without DOM access
|
|
6
|
+
* - Phase B (Hydration): Query DOM after it's ready
|
|
7
|
+
*
|
|
8
|
+
* This enables SSR/MV3 compatibility.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Component Registry with two-phase registration
|
|
12
|
+
*/
|
|
13
|
+
export class ComponentRegistry {
|
|
14
|
+
/**
|
|
15
|
+
* Phase A: Register component metadata (decorator-time, NO DOM)
|
|
16
|
+
*/
|
|
17
|
+
static register(metadata) {
|
|
18
|
+
if (this.metadata.has(metadata.componentId)) {
|
|
19
|
+
// eslint-disable-next-line no-console
|
|
20
|
+
console.warn(`[ComponentRegistry] Component ${metadata.componentId} already registered`);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// Validate SSR requirements for UI components
|
|
24
|
+
if (metadata.kind === 'ui-component') {
|
|
25
|
+
if (!metadata.htmlTag) {
|
|
26
|
+
throw new Error(`[ComponentRegistry] UI component ${metadata.componentId} missing required htmlTag (SSR requirement)`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Validate function tool requirements
|
|
30
|
+
if (metadata.kind === 'function-tool') {
|
|
31
|
+
if (!metadata.operationType) {
|
|
32
|
+
throw new Error(`[ComponentRegistry] Function tool ${metadata.componentId} missing required operationType`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
this.metadata.set(metadata.componentId, metadata);
|
|
36
|
+
// eslint-disable-next-line no-console
|
|
37
|
+
console.log(`[ComponentRegistry] Registered ${metadata.kind}: ${metadata.componentId}`);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Phase B: Hydrate component from DOM (user-initiated, after DOM ready)
|
|
41
|
+
*
|
|
42
|
+
* For UI components: Queries DOM to extract current state
|
|
43
|
+
* For function tools: Creates initial state
|
|
44
|
+
*/
|
|
45
|
+
static hydrate(componentId) {
|
|
46
|
+
const meta = this.metadata.get(componentId);
|
|
47
|
+
if (!meta) {
|
|
48
|
+
// eslint-disable-next-line no-console
|
|
49
|
+
console.error(`[ComponentRegistry] No metadata for component ${componentId}`);
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
let state;
|
|
53
|
+
if (meta.kind === 'ui-component') {
|
|
54
|
+
// UI Component: Query DOM
|
|
55
|
+
state = this.hydrateUIComponent(meta);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// Function Tool: Create initial state
|
|
59
|
+
state = this.hydrateFunctionTool(meta);
|
|
60
|
+
}
|
|
61
|
+
this.hydrated.set(componentId, state);
|
|
62
|
+
// eslint-disable-next-line no-console
|
|
63
|
+
console.log(`[ComponentRegistry] Hydrated ${meta.kind}: ${componentId}`);
|
|
64
|
+
return state;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Hydrate UI component from DOM
|
|
68
|
+
*/
|
|
69
|
+
static hydrateUIComponent(meta) {
|
|
70
|
+
const element = meta.selector
|
|
71
|
+
? document.querySelector(meta.selector)
|
|
72
|
+
: document.querySelector(`[data-component-id="${meta.componentId}"]`);
|
|
73
|
+
if (!element) {
|
|
74
|
+
// eslint-disable-next-line no-console
|
|
75
|
+
console.warn(`[ComponentRegistry] Element not found for ${meta.componentId}, using defaults`);
|
|
76
|
+
}
|
|
77
|
+
// Extract state from DOM
|
|
78
|
+
const options = element ? this.extractOptionsFromDOM(element) : undefined;
|
|
79
|
+
const value = element ? this.extractValueFromDOM(element, meta.htmlTag) : null;
|
|
80
|
+
const disabled = element ? element.disabled : false;
|
|
81
|
+
const readOnly = element ? element.readOnly : false;
|
|
82
|
+
const required = element ? element.required : false;
|
|
83
|
+
const visible = element ? element.offsetParent !== null : true;
|
|
84
|
+
return {
|
|
85
|
+
kind: 'ui-component',
|
|
86
|
+
componentId: meta.componentId,
|
|
87
|
+
description: meta.description,
|
|
88
|
+
containerId: meta.containerId,
|
|
89
|
+
htmlTag: meta.htmlTag,
|
|
90
|
+
htmlType: meta.htmlType,
|
|
91
|
+
htmlRole: meta.htmlRole,
|
|
92
|
+
value,
|
|
93
|
+
options,
|
|
94
|
+
disabled,
|
|
95
|
+
readOnly,
|
|
96
|
+
required,
|
|
97
|
+
visible,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Extract value from DOM element based on tag
|
|
102
|
+
*/
|
|
103
|
+
static extractValueFromDOM(element, htmlTag) {
|
|
104
|
+
const el = element;
|
|
105
|
+
switch (htmlTag) {
|
|
106
|
+
case 'input': {
|
|
107
|
+
const inputEl = el;
|
|
108
|
+
if (inputEl.type === 'checkbox' || inputEl.type === 'radio') {
|
|
109
|
+
return inputEl.checked;
|
|
110
|
+
}
|
|
111
|
+
return inputEl.value;
|
|
112
|
+
}
|
|
113
|
+
case 'select':
|
|
114
|
+
return el.value;
|
|
115
|
+
case 'textarea':
|
|
116
|
+
return el.value;
|
|
117
|
+
case 'checkbox':
|
|
118
|
+
case 'toggle':
|
|
119
|
+
return el.checked;
|
|
120
|
+
default:
|
|
121
|
+
return el.textContent || el.getAttribute('value') || null;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Extract options from DOM (for select, radio, checkbox groups)
|
|
126
|
+
*/
|
|
127
|
+
static extractOptionsFromDOM(element) {
|
|
128
|
+
const tag = element.tagName.toLowerCase();
|
|
129
|
+
if (tag === 'select') {
|
|
130
|
+
const selectEl = element;
|
|
131
|
+
const options = Array.from(selectEl.options);
|
|
132
|
+
return options.map(opt => ({
|
|
133
|
+
label: opt.text,
|
|
134
|
+
value: opt.value,
|
|
135
|
+
disabled: opt.disabled,
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
// For radio/checkbox groups, find siblings with same name
|
|
139
|
+
// Skip in non-browser environments
|
|
140
|
+
if (typeof HTMLInputElement === 'undefined') {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
if (element instanceof HTMLInputElement && (element.type === 'radio' || element.type === 'checkbox')) {
|
|
144
|
+
const name = element.name;
|
|
145
|
+
if (name) {
|
|
146
|
+
const siblings = document.querySelectorAll(`input[name="${name}"]`);
|
|
147
|
+
return Array.from(siblings).map(el => {
|
|
148
|
+
const input = el;
|
|
149
|
+
return {
|
|
150
|
+
label: input.labels?.[0]?.textContent || input.value,
|
|
151
|
+
value: input.value,
|
|
152
|
+
disabled: input.disabled,
|
|
153
|
+
};
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Hydrate function tool (no DOM access)
|
|
161
|
+
*/
|
|
162
|
+
static hydrateFunctionTool(meta) {
|
|
163
|
+
return {
|
|
164
|
+
kind: 'function-tool',
|
|
165
|
+
componentId: meta.componentId,
|
|
166
|
+
description: meta.description,
|
|
167
|
+
containerId: meta.containerId,
|
|
168
|
+
operationType: meta.operationType,
|
|
169
|
+
executionCount: 0,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Hydrate all registered components
|
|
174
|
+
*/
|
|
175
|
+
static hydrateAll() {
|
|
176
|
+
const results = new Map();
|
|
177
|
+
for (const componentId of this.metadata.keys()) {
|
|
178
|
+
const state = this.hydrate(componentId);
|
|
179
|
+
if (state) {
|
|
180
|
+
results.set(componentId, state);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return results;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Get registered metadata (Phase A)
|
|
187
|
+
*/
|
|
188
|
+
static getMetadata(componentId) {
|
|
189
|
+
return this.metadata.get(componentId);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get all registered metadata
|
|
193
|
+
*/
|
|
194
|
+
static getAllMetadata() {
|
|
195
|
+
return new Map(this.metadata);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Get hydrated state (Phase B)
|
|
199
|
+
*/
|
|
200
|
+
static getHydrated(componentId) {
|
|
201
|
+
return this.hydrated.get(componentId);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get all hydrated states
|
|
205
|
+
*/
|
|
206
|
+
static getAllHydrated() {
|
|
207
|
+
return new Map(this.hydrated);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Check if component is registered
|
|
211
|
+
*/
|
|
212
|
+
static isRegistered(componentId) {
|
|
213
|
+
return this.metadata.has(componentId);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Check if component is hydrated
|
|
217
|
+
*/
|
|
218
|
+
static isHydrated(componentId) {
|
|
219
|
+
return this.hydrated.has(componentId);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Clear all registrations (useful for testing)
|
|
223
|
+
*/
|
|
224
|
+
static clear() {
|
|
225
|
+
this.metadata.clear();
|
|
226
|
+
this.hydrated.clear();
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Unregister a component
|
|
230
|
+
*/
|
|
231
|
+
static unregister(componentId) {
|
|
232
|
+
this.metadata.delete(componentId);
|
|
233
|
+
this.hydrated.delete(componentId);
|
|
234
|
+
}
|
|
235
|
+
// ============================================================================
|
|
236
|
+
// STATEFUL COMPONENT MANAGEMENT (Week 2 - Story System)
|
|
237
|
+
// ============================================================================
|
|
238
|
+
/**
|
|
239
|
+
* Register a stateful component instance
|
|
240
|
+
*
|
|
241
|
+
* @param componentName - Name of the component (from @Component decorator)
|
|
242
|
+
* @param instance - StatefulComponent instance
|
|
243
|
+
*/
|
|
244
|
+
static registerInstance(componentName, instance) {
|
|
245
|
+
this.instances.set(componentName, instance);
|
|
246
|
+
// eslint-disable-next-line no-console
|
|
247
|
+
console.log(`[ComponentRegistry] Registered stateful instance: ${componentName}`);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Get a stateful component instance
|
|
251
|
+
*
|
|
252
|
+
* @param componentName - Name of the component
|
|
253
|
+
* @returns StatefulComponent instance or undefined
|
|
254
|
+
*/
|
|
255
|
+
static getInstance(componentName) {
|
|
256
|
+
return this.instances.get(componentName);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Get component state via instance
|
|
260
|
+
*
|
|
261
|
+
* @param componentName - Name of the component
|
|
262
|
+
* @returns Current component state
|
|
263
|
+
* @throws Error if component not found
|
|
264
|
+
*/
|
|
265
|
+
static getState(componentName) {
|
|
266
|
+
const instance = this.instances.get(componentName);
|
|
267
|
+
if (!instance) {
|
|
268
|
+
throw new Error(`[ComponentRegistry] Component not found: ${componentName}`);
|
|
269
|
+
}
|
|
270
|
+
return instance.getState();
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Set component state via instance
|
|
274
|
+
*
|
|
275
|
+
* @param componentName - Name of the component
|
|
276
|
+
* @param state - State to set
|
|
277
|
+
* @throws Error if component not found
|
|
278
|
+
*/
|
|
279
|
+
static setState(componentName, state) {
|
|
280
|
+
const instance = this.instances.get(componentName);
|
|
281
|
+
if (!instance) {
|
|
282
|
+
throw new Error(`[ComponentRegistry] Component not found: ${componentName}`);
|
|
283
|
+
}
|
|
284
|
+
instance.setState(state);
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Reset component to initial state
|
|
288
|
+
*
|
|
289
|
+
* @param componentName - Name of the component
|
|
290
|
+
* @throws Error if component not found
|
|
291
|
+
*/
|
|
292
|
+
static resetComponentState(componentName) {
|
|
293
|
+
const instance = this.instances.get(componentName);
|
|
294
|
+
if (!instance) {
|
|
295
|
+
throw new Error(`[ComponentRegistry] Component not found: ${componentName}`);
|
|
296
|
+
}
|
|
297
|
+
instance.resetState();
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Get all registered stateful component names
|
|
301
|
+
*
|
|
302
|
+
* @returns Array of component names
|
|
303
|
+
*/
|
|
304
|
+
static getAllInstanceNames() {
|
|
305
|
+
return Array.from(this.instances.keys());
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Check if a stateful component instance is registered
|
|
309
|
+
*
|
|
310
|
+
* @param componentName - Name of the component
|
|
311
|
+
* @returns True if instance is registered
|
|
312
|
+
*/
|
|
313
|
+
static hasInstance(componentName) {
|
|
314
|
+
return this.instances.has(componentName);
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Clear stateful component instances (for testing)
|
|
318
|
+
*/
|
|
319
|
+
static clearInstances() {
|
|
320
|
+
this.instances.clear();
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Registered component metadata (Phase A)
|
|
325
|
+
*/
|
|
326
|
+
ComponentRegistry.metadata = new Map();
|
|
327
|
+
/**
|
|
328
|
+
* Hydrated components (Phase B)
|
|
329
|
+
*/
|
|
330
|
+
ComponentRegistry.hydrated = new Map();
|
|
331
|
+
/**
|
|
332
|
+
* Stateful component instances (Week 2 - Story System)
|
|
333
|
+
* Maps component name to StatefulComponent instance
|
|
334
|
+
*/
|
|
335
|
+
ComponentRegistry.instances = new Map();
|
|
336
|
+
//# sourceMappingURL=ComponentRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentRegistry.js","sourceRoot":"","sources":["../../../../../src/background/registry/ComponentRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Registry - Simple registry for tool discovery and metadata
|
|
3
|
+
*
|
|
4
|
+
* This registry ONLY handles:
|
|
5
|
+
* - Tool registration
|
|
6
|
+
* - Tool discovery
|
|
7
|
+
* - Metadata management
|
|
8
|
+
*
|
|
9
|
+
* Execution is handled separately by:
|
|
10
|
+
* - PlaywrightExecutor (for testing)
|
|
11
|
+
* - DOMExecutor (for AI control)
|
|
12
|
+
*/
|
|
13
|
+
import { ToolMetadata } from '../../decorators/Tool';
|
|
14
|
+
export interface UniversalExecutionContext {
|
|
15
|
+
toolId: string;
|
|
16
|
+
parameters: any;
|
|
17
|
+
userId?: string;
|
|
18
|
+
sessionId?: string;
|
|
19
|
+
timestamp: number;
|
|
20
|
+
}
|
|
21
|
+
export interface UniversalToolResult {
|
|
22
|
+
success: boolean;
|
|
23
|
+
data?: any;
|
|
24
|
+
error?: string;
|
|
25
|
+
executionTime?: number;
|
|
26
|
+
context?: UniversalExecutionContext;
|
|
27
|
+
tool?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare class ToolRegistry {
|
|
30
|
+
private static get tools();
|
|
31
|
+
private static get activeInstances();
|
|
32
|
+
/**
|
|
33
|
+
* Register a tool
|
|
34
|
+
*/
|
|
35
|
+
static registerTool(providerName: string, methodName: string, metadata: ToolMetadata): void;
|
|
36
|
+
/**
|
|
37
|
+
* Get a specific tool by identifier
|
|
38
|
+
* Supports both class-based IDs (Counter.increment) and component-namespaced IDs (counter.increment)
|
|
39
|
+
*/
|
|
40
|
+
static getTool(toolIdentifier: string): ToolMetadata | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Get all registered tools
|
|
43
|
+
*/
|
|
44
|
+
static getAllTools(): Map<string, ToolMetadata>;
|
|
45
|
+
/**
|
|
46
|
+
* Get all registered tools as array
|
|
47
|
+
*/
|
|
48
|
+
static getTools(): ToolMetadata[];
|
|
49
|
+
/**
|
|
50
|
+
* Find tool by element ID (data-testid)
|
|
51
|
+
*/
|
|
52
|
+
static findToolByElementId(elementId: string): ToolMetadata | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Register active component instance
|
|
55
|
+
*/
|
|
56
|
+
static registerInstance(storageKey: string, element: HTMLElement): void;
|
|
57
|
+
/**
|
|
58
|
+
* Unregister component instance on unmount
|
|
59
|
+
*/
|
|
60
|
+
static unregisterInstance(storageKey: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* Check if instance exists (for duplicate detection)
|
|
63
|
+
*/
|
|
64
|
+
static getActiveInstance(storageKey: string): HTMLElement | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Bind a class instance to all its registered tool methods
|
|
67
|
+
*
|
|
68
|
+
* This allows @Tool decorated methods to be called by AI without needing
|
|
69
|
+
* the instance to be called once first (which sets tool.instance = this).
|
|
70
|
+
*
|
|
71
|
+
* @param instance The class instance with @Tool decorated methods
|
|
72
|
+
*/
|
|
73
|
+
static bindInstance(instance: any): void;
|
|
74
|
+
/**
|
|
75
|
+
* Get AI-enabled tools only
|
|
76
|
+
*/
|
|
77
|
+
static getAIEnabledTools(): ToolMetadata[];
|
|
78
|
+
/**
|
|
79
|
+
* Get test-only tools
|
|
80
|
+
*/
|
|
81
|
+
static getTestOnlyTools(): ToolMetadata[];
|
|
82
|
+
/**
|
|
83
|
+
* Get tools by category
|
|
84
|
+
*/
|
|
85
|
+
static getToolsByCategory(category: string): ToolMetadata[];
|
|
86
|
+
/**
|
|
87
|
+
* Search tools by query
|
|
88
|
+
*/
|
|
89
|
+
static searchTools(query: string): ToolMetadata[];
|
|
90
|
+
/**
|
|
91
|
+
* Search tools with container scoping
|
|
92
|
+
*
|
|
93
|
+
* Prioritizes tools in currentContainer, then global tools.
|
|
94
|
+
* This enables "local > global" resolution like lexical scope.
|
|
95
|
+
*
|
|
96
|
+
* @param query Search query
|
|
97
|
+
* @param currentContainer Current page/container context
|
|
98
|
+
* @returns Tools sorted by: local matches, global matches
|
|
99
|
+
*/
|
|
100
|
+
static searchScoped(query: string, currentContainer?: string): ToolMetadata[];
|
|
101
|
+
/**
|
|
102
|
+
* Get tools by component name
|
|
103
|
+
*
|
|
104
|
+
* Returns all methods for a specific component.
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* getToolsByComponent('counter')
|
|
108
|
+
* // → [counter.increment, counter.decrement, counter.reset]
|
|
109
|
+
*/
|
|
110
|
+
static getToolsByComponent(componentName: string): ToolMetadata[];
|
|
111
|
+
/**
|
|
112
|
+
* Get tools by container (page scope)
|
|
113
|
+
*/
|
|
114
|
+
static getToolsByContainer(containerId: string): ToolMetadata[];
|
|
115
|
+
/**
|
|
116
|
+
* Get component names in a container
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* getComponentsInContainer('Dashboard')
|
|
120
|
+
* // → ['counter', 'chart', 'settings']
|
|
121
|
+
*/
|
|
122
|
+
static getComponentsInContainer(containerId: string): string[];
|
|
123
|
+
/**
|
|
124
|
+
* Find tool by natural language query (alias for searchTools)
|
|
125
|
+
*/
|
|
126
|
+
static findToolsByQuery(query: string): ToolMetadata[];
|
|
127
|
+
/**
|
|
128
|
+
* Get registry statistics
|
|
129
|
+
*/
|
|
130
|
+
static getStats(): {
|
|
131
|
+
total: number;
|
|
132
|
+
aiEnabled: number;
|
|
133
|
+
testOnly: number;
|
|
134
|
+
byCategory: Record<string, number>;
|
|
135
|
+
byDangerLevel: Record<string, number>;
|
|
136
|
+
requiresApproval: number;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Get tools by class/provider name
|
|
140
|
+
*/
|
|
141
|
+
static getToolsByProvider(providerName: string): ToolMetadata[];
|
|
142
|
+
/**
|
|
143
|
+
* Get all unique provider names
|
|
144
|
+
*/
|
|
145
|
+
static getProviders(): string[];
|
|
146
|
+
/**
|
|
147
|
+
* List all tools in a CLI-friendly format
|
|
148
|
+
* Similar to 'ls' command
|
|
149
|
+
*/
|
|
150
|
+
static list(options?: {
|
|
151
|
+
provider?: string;
|
|
152
|
+
category?: string;
|
|
153
|
+
aiEnabled?: boolean;
|
|
154
|
+
dangerLevel?: string;
|
|
155
|
+
verbose?: boolean;
|
|
156
|
+
}): string;
|
|
157
|
+
/**
|
|
158
|
+
* Show help for a specific tool
|
|
159
|
+
* Similar to 'man' or 'help' command
|
|
160
|
+
*/
|
|
161
|
+
static help(toolId: string): string;
|
|
162
|
+
/**
|
|
163
|
+
* Show overview of all tools and providers
|
|
164
|
+
* Similar to 'ls -la' or directory overview
|
|
165
|
+
*/
|
|
166
|
+
static overview(): string;
|
|
167
|
+
/**
|
|
168
|
+
* Search and display tools matching query
|
|
169
|
+
*/
|
|
170
|
+
static find(query: string): string;
|
|
171
|
+
private static formatCompactList;
|
|
172
|
+
private static formatVerboseList;
|
|
173
|
+
private static formatToolSummary;
|
|
174
|
+
private static formatToolHelp;
|
|
175
|
+
/**
|
|
176
|
+
* Execute a tool for AI (only if AI-enabled)
|
|
177
|
+
*/
|
|
178
|
+
static executeForAI(toolIdentifier: string, parameters?: any): Promise<{
|
|
179
|
+
success: boolean;
|
|
180
|
+
data?: any;
|
|
181
|
+
error?: string;
|
|
182
|
+
tool: string;
|
|
183
|
+
requiresApproval?: boolean;
|
|
184
|
+
}>;
|
|
185
|
+
/**
|
|
186
|
+
* Request approval for a dangerous operation
|
|
187
|
+
*/
|
|
188
|
+
static requestApproval(toolIdentifier: string, parameters?: any): Promise<{
|
|
189
|
+
id: string;
|
|
190
|
+
approved: boolean;
|
|
191
|
+
}>;
|
|
192
|
+
/**
|
|
193
|
+
* Generate tool documentation
|
|
194
|
+
*/
|
|
195
|
+
static generateDocumentation(): string;
|
|
196
|
+
/**
|
|
197
|
+
* Clear all tools (for testing)
|
|
198
|
+
*/
|
|
199
|
+
static clear(): void;
|
|
200
|
+
/**
|
|
201
|
+
* Get tools grouped by container for MCP/AI consumption
|
|
202
|
+
*
|
|
203
|
+
* Returns a hierarchical structure:
|
|
204
|
+
* {
|
|
205
|
+
* global: [...tools without containerId...],
|
|
206
|
+
* DemoSimple: [...tools with containerId='DemoSimple'...],
|
|
207
|
+
* Examples: [...tools with containerId='Examples'...],
|
|
208
|
+
* ...
|
|
209
|
+
* }
|
|
210
|
+
*
|
|
211
|
+
* This helps AI agents understand tool organization and prioritize
|
|
212
|
+
* contextually relevant tools.
|
|
213
|
+
*/
|
|
214
|
+
static getToolsGroupedByContainer(): Record<string, ToolMetadata[]>;
|
|
215
|
+
/**
|
|
216
|
+
* Get tools grouped by component within a container
|
|
217
|
+
*
|
|
218
|
+
* Returns a hierarchical structure:
|
|
219
|
+
* {
|
|
220
|
+
* DemoSimple: {
|
|
221
|
+
* counter: [...counter tools...],
|
|
222
|
+
* timer: [...timer tools...],
|
|
223
|
+
* },
|
|
224
|
+
* global: {
|
|
225
|
+
* navigation: [...navigation tools...],
|
|
226
|
+
* theme: [...theme tools...],
|
|
227
|
+
* }
|
|
228
|
+
* }
|
|
229
|
+
*/
|
|
230
|
+
static getToolsGroupedByComponentAndContainer(): Record<string, Record<string, ToolMetadata[]>>;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=ToolRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/background/registry/ToolRegistry.ts"],"names":[],"mappings":"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"}
|