@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,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ToolExecutor - Universal execution engine for tools
|
|
3
|
+
*
|
|
4
|
+
* Supports multiple execution strategies:
|
|
5
|
+
* - Programmatic (direct method call)
|
|
6
|
+
* - DOM-based (Playwright/browser automation)
|
|
7
|
+
* - Navigation (route changes)
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Main ToolExecutor orchestrator
|
|
11
|
+
*/
|
|
12
|
+
export class ToolExecutor {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.strategies = [];
|
|
15
|
+
// Register default strategies (order matters - first match wins)
|
|
16
|
+
this.registerStrategy(new ProgrammaticExecutor());
|
|
17
|
+
this.registerStrategy(new NavigationExecutor());
|
|
18
|
+
this.registerStrategy(new DOMExecutor());
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Register a new execution strategy
|
|
22
|
+
*/
|
|
23
|
+
registerStrategy(strategy) {
|
|
24
|
+
this.strategies.push(strategy);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Execute a tool using the appropriate strategy
|
|
28
|
+
*/
|
|
29
|
+
async execute(tool, parameters = []) {
|
|
30
|
+
const startTime = Date.now();
|
|
31
|
+
// Find first strategy that can execute this tool
|
|
32
|
+
for (const strategy of this.strategies) {
|
|
33
|
+
if (strategy.canExecute(tool)) {
|
|
34
|
+
// console.log(`🔧 [ToolExecutor] Using strategy: ${strategy.name}`);
|
|
35
|
+
try {
|
|
36
|
+
const result = await strategy.execute(tool, parameters);
|
|
37
|
+
result.timing = Date.now() - startTime;
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
// console.error(`[ToolExecutor] Strategy ${strategy.name} failed:`, error);
|
|
42
|
+
return {
|
|
43
|
+
success: false,
|
|
44
|
+
message: `Execution failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
45
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
46
|
+
timing: Date.now() - startTime
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// No strategy could execute
|
|
52
|
+
return {
|
|
53
|
+
success: false,
|
|
54
|
+
message: `No execution strategy available for tool: ${tool.name}`,
|
|
55
|
+
timing: Date.now() - startTime
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Programmatic execution - direct method calls
|
|
61
|
+
*/
|
|
62
|
+
class ProgrammaticExecutor {
|
|
63
|
+
constructor() {
|
|
64
|
+
this.name = 'programmatic';
|
|
65
|
+
}
|
|
66
|
+
canExecute(tool) {
|
|
67
|
+
// Can execute if tool has instance and method name
|
|
68
|
+
return !!(tool.instance && tool.methodName);
|
|
69
|
+
}
|
|
70
|
+
async execute(tool, parameters) {
|
|
71
|
+
// console.log(`🎯 [Programmatic] Executing: ${tool.name}`, parameters);
|
|
72
|
+
const result = await tool.instance[tool.methodName](...parameters);
|
|
73
|
+
// Handle different return types
|
|
74
|
+
if (typeof result === 'object' && result !== null) {
|
|
75
|
+
if ('success' in result && 'message' in result) {
|
|
76
|
+
// Already in ExecutionResult format
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
// Convert to ExecutionResult
|
|
80
|
+
return {
|
|
81
|
+
success: true,
|
|
82
|
+
message: result.message || `${tool.name} executed successfully`,
|
|
83
|
+
data: result
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// Primitive return value
|
|
87
|
+
return {
|
|
88
|
+
success: true,
|
|
89
|
+
message: `${tool.name} executed successfully`,
|
|
90
|
+
data: result
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Navigation execution - route changes
|
|
96
|
+
*/
|
|
97
|
+
class NavigationExecutor {
|
|
98
|
+
constructor() {
|
|
99
|
+
this.name = 'navigation';
|
|
100
|
+
}
|
|
101
|
+
canExecute(tool) {
|
|
102
|
+
// Check if tool is navigation-related
|
|
103
|
+
const isNavCategory = tool.category === 'navigation';
|
|
104
|
+
const hasNavKeywords = tool.name.toLowerCase().includes('navigate') ||
|
|
105
|
+
tool.name.toLowerCase().includes('go to') ||
|
|
106
|
+
tool.description?.toLowerCase().includes('navigate');
|
|
107
|
+
return isNavCategory || hasNavKeywords;
|
|
108
|
+
}
|
|
109
|
+
async execute(tool, parameters) {
|
|
110
|
+
// console.log(`🗺️ [Navigation] Executing: ${tool.name}`, parameters);
|
|
111
|
+
// Use programmatic executor first (navigation tools typically have instance methods)
|
|
112
|
+
if (tool.instance && tool.methodName) {
|
|
113
|
+
const programmatic = new ProgrammaticExecutor();
|
|
114
|
+
return programmatic.execute(tool, parameters);
|
|
115
|
+
}
|
|
116
|
+
// Fallback: try to extract route from tool metadata
|
|
117
|
+
const route = tool.route || tool.elementId;
|
|
118
|
+
if (route) {
|
|
119
|
+
// Get NavigationGraph singleton and use its handler
|
|
120
|
+
const { NavigationGraph } = await import('../background/navigation/NavigationGraph');
|
|
121
|
+
const graph = NavigationGraph.getInstance();
|
|
122
|
+
// Use the public getRouteForContext method and the handler
|
|
123
|
+
const handler = graph.navigationHandler;
|
|
124
|
+
if (handler) {
|
|
125
|
+
await handler(route);
|
|
126
|
+
return {
|
|
127
|
+
success: true,
|
|
128
|
+
message: `Navigated to ${tool.name}`
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
throw new Error('No navigation method available');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* DOM execution - browser automation (Playwright, etc.)
|
|
137
|
+
*/
|
|
138
|
+
class DOMExecutor {
|
|
139
|
+
constructor() {
|
|
140
|
+
this.name = 'dom';
|
|
141
|
+
}
|
|
142
|
+
canExecute(tool) {
|
|
143
|
+
// Can execute if tool has elementId (DOM target)
|
|
144
|
+
return !!tool.elementId && !tool.instance;
|
|
145
|
+
}
|
|
146
|
+
async execute(tool, _parameters) {
|
|
147
|
+
// console.log(`🌐 [DOM] Executing: ${tool.name}`, _parameters);
|
|
148
|
+
// Find element in DOM
|
|
149
|
+
const element = document.querySelector(`[data-testid="${tool.elementId}"]`);
|
|
150
|
+
if (!element) {
|
|
151
|
+
throw new Error(`Could not find element with data-testid="${tool.elementId}"`);
|
|
152
|
+
}
|
|
153
|
+
// Determine action type
|
|
154
|
+
if (element.tagName === 'BUTTON' || element.tagName === 'A') {
|
|
155
|
+
element.click();
|
|
156
|
+
return {
|
|
157
|
+
success: true,
|
|
158
|
+
message: `Clicked ${tool.name}`
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
if (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA') {
|
|
162
|
+
if (_parameters.length > 0) {
|
|
163
|
+
element.value = String(_parameters[0]);
|
|
164
|
+
element.dispatchEvent(new Event('input', { bubbles: true }));
|
|
165
|
+
return {
|
|
166
|
+
success: true,
|
|
167
|
+
message: `Entered text into ${tool.name}`
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
throw new Error(`Unsupported element type: ${element.tagName}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=ToolExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolExecutor.js","sourceRoot":"","sources":["../../../../src/ai/ToolExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ToolMatcher - Pluggable strategy for matching user queries to tools
|
|
3
|
+
*
|
|
4
|
+
* Supports multiple matching strategies with priority-based selection:
|
|
5
|
+
* - Exact match (priority 100)
|
|
6
|
+
* - Fuzzy string matching (priority 60)
|
|
7
|
+
* - LLM-based semantic matching (priority 50)
|
|
8
|
+
* - Keyword-based heuristics (priority 30)
|
|
9
|
+
*/
|
|
10
|
+
import type { ToolMetadata } from '../decorators/Tool';
|
|
11
|
+
/**
|
|
12
|
+
* Match result with confidence score and extracted parameters
|
|
13
|
+
*/
|
|
14
|
+
export interface ToolMatch {
|
|
15
|
+
tool: ToolMetadata;
|
|
16
|
+
confidence: number;
|
|
17
|
+
parameters?: any[];
|
|
18
|
+
reasoning?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Base interface for all matching strategies
|
|
22
|
+
*/
|
|
23
|
+
export interface MatcherStrategy {
|
|
24
|
+
name: string;
|
|
25
|
+
priority: number;
|
|
26
|
+
/**
|
|
27
|
+
* Match a query against available tools
|
|
28
|
+
* @returns Array of matches sorted by confidence (highest first)
|
|
29
|
+
*/
|
|
30
|
+
match(query: string, tools: ToolMetadata[], context?: MatchContext): Promise<ToolMatch[]>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Context passed to matchers for better matching
|
|
34
|
+
*/
|
|
35
|
+
export interface MatchContext {
|
|
36
|
+
currentContainer?: string;
|
|
37
|
+
currentPage?: string;
|
|
38
|
+
conversationHistory?: string[];
|
|
39
|
+
userPreferences?: Record<string, any>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Main ToolMatcher orchestrator
|
|
43
|
+
*/
|
|
44
|
+
export declare class ToolMatcher {
|
|
45
|
+
private strategies;
|
|
46
|
+
constructor();
|
|
47
|
+
/**
|
|
48
|
+
* Register a new matching strategy
|
|
49
|
+
*/
|
|
50
|
+
registerStrategy(strategy: MatcherStrategy): void;
|
|
51
|
+
/**
|
|
52
|
+
* Find best matches for a query using all strategies
|
|
53
|
+
* @returns Top N matches sorted by confidence
|
|
54
|
+
*/
|
|
55
|
+
findMatches(query: string, tools: ToolMetadata[], context?: MatchContext, topN?: number): Promise<ToolMatch[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Get suggestions for invalid/ambiguous queries
|
|
58
|
+
*/
|
|
59
|
+
getSuggestions(query: string, tools: ToolMetadata[], context?: MatchContext): Promise<string[]>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=ToolMatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolMatcher.d.ts","sourceRoot":"","sources":["../../../../src/ai/ToolMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CAC3F;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAyB;;IAQ3C;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAMjD;;;OAGG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,CAAC,EAAE,YAAY,EACtB,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,SAAS,EAAE,CAAC;IA8BvB;;OAEG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC;CAiBrB"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ToolMatcher - Pluggable strategy for matching user queries to tools
|
|
3
|
+
*
|
|
4
|
+
* Supports multiple matching strategies with priority-based selection:
|
|
5
|
+
* - Exact match (priority 100)
|
|
6
|
+
* - Fuzzy string matching (priority 60)
|
|
7
|
+
* - LLM-based semantic matching (priority 50)
|
|
8
|
+
* - Keyword-based heuristics (priority 30)
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Main ToolMatcher orchestrator
|
|
12
|
+
*/
|
|
13
|
+
export class ToolMatcher {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.strategies = [];
|
|
16
|
+
// Register default strategies (more added via registerStrategy)
|
|
17
|
+
this.registerStrategy(new ExactMatcher());
|
|
18
|
+
this.registerStrategy(new FuzzyMatcher());
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Register a new matching strategy
|
|
22
|
+
*/
|
|
23
|
+
registerStrategy(strategy) {
|
|
24
|
+
this.strategies.push(strategy);
|
|
25
|
+
// Sort by priority (highest first)
|
|
26
|
+
this.strategies.sort((a, b) => b.priority - a.priority);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Find best matches for a query using all strategies
|
|
30
|
+
* @returns Top N matches sorted by confidence
|
|
31
|
+
*/
|
|
32
|
+
async findMatches(query, tools, context, topN = 5) {
|
|
33
|
+
const allMatches = [];
|
|
34
|
+
// Try each strategy in priority order
|
|
35
|
+
for (const strategy of this.strategies) {
|
|
36
|
+
try {
|
|
37
|
+
const matches = await strategy.match(query, tools, context);
|
|
38
|
+
allMatches.push(...matches);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.warn(`[ToolMatcher] Strategy ${strategy.name} failed:`, error);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Deduplicate by tool ID and keep highest confidence
|
|
45
|
+
const deduped = new Map();
|
|
46
|
+
for (const match of allMatches) {
|
|
47
|
+
const key = match.tool.elementId || match.tool.name;
|
|
48
|
+
const existing = deduped.get(key);
|
|
49
|
+
if (!existing || match.confidence > existing.confidence) {
|
|
50
|
+
deduped.set(key, match);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Sort by confidence and return top N
|
|
54
|
+
return Array.from(deduped.values())
|
|
55
|
+
.sort((a, b) => b.confidence - a.confidence)
|
|
56
|
+
.slice(0, topN);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get suggestions for invalid/ambiguous queries
|
|
60
|
+
*/
|
|
61
|
+
async getSuggestions(query, tools, context) {
|
|
62
|
+
// Find close matches (confidence 30-60%)
|
|
63
|
+
const matches = await this.findMatches(query, tools, context, 10);
|
|
64
|
+
const suggestions = matches
|
|
65
|
+
.filter(m => m.confidence >= 30 && m.confidence < 70)
|
|
66
|
+
.map(m => {
|
|
67
|
+
const toolName = m.tool.name;
|
|
68
|
+
const examples = m.tool.examples;
|
|
69
|
+
if (examples && examples.length > 0) {
|
|
70
|
+
return `"${examples[0]}"`;
|
|
71
|
+
}
|
|
72
|
+
return `"${toolName}"`;
|
|
73
|
+
})
|
|
74
|
+
.slice(0, 5);
|
|
75
|
+
return suggestions;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Exact match strategy - checks for exact tool name or example match
|
|
80
|
+
*/
|
|
81
|
+
class ExactMatcher {
|
|
82
|
+
constructor() {
|
|
83
|
+
this.name = 'exact';
|
|
84
|
+
this.priority = 100;
|
|
85
|
+
}
|
|
86
|
+
async match(query, tools) {
|
|
87
|
+
const lowerQuery = query.toLowerCase().trim();
|
|
88
|
+
const matches = [];
|
|
89
|
+
for (const tool of tools) {
|
|
90
|
+
const toolName = tool.name.toLowerCase();
|
|
91
|
+
const examples = tool.examples || [];
|
|
92
|
+
// Check exact name match
|
|
93
|
+
if (lowerQuery === toolName) {
|
|
94
|
+
matches.push({
|
|
95
|
+
tool,
|
|
96
|
+
confidence: 100,
|
|
97
|
+
reasoning: 'Exact name match'
|
|
98
|
+
});
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
// Check exact example match
|
|
102
|
+
for (const example of examples) {
|
|
103
|
+
const exampleLower = example.toLowerCase();
|
|
104
|
+
if (lowerQuery === exampleLower) {
|
|
105
|
+
matches.push({
|
|
106
|
+
tool,
|
|
107
|
+
confidence: 95,
|
|
108
|
+
reasoning: `Exact example match: "${example}"`
|
|
109
|
+
});
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return matches;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Fuzzy match strategy - uses Levenshtein distance and keyword matching
|
|
119
|
+
*/
|
|
120
|
+
class FuzzyMatcher {
|
|
121
|
+
constructor() {
|
|
122
|
+
this.name = 'fuzzy';
|
|
123
|
+
this.priority = 60;
|
|
124
|
+
}
|
|
125
|
+
async match(query, tools) {
|
|
126
|
+
const lowerQuery = query.toLowerCase().trim();
|
|
127
|
+
const matches = [];
|
|
128
|
+
for (const tool of tools) {
|
|
129
|
+
let bestScore = 0;
|
|
130
|
+
let bestMatch = '';
|
|
131
|
+
// Check tool name similarity
|
|
132
|
+
const nameScore = this.similarity(lowerQuery, tool.name.toLowerCase());
|
|
133
|
+
if (nameScore > bestScore) {
|
|
134
|
+
bestScore = nameScore;
|
|
135
|
+
bestMatch = tool.name;
|
|
136
|
+
}
|
|
137
|
+
// Check examples similarity
|
|
138
|
+
const examples = tool.examples || [];
|
|
139
|
+
for (const example of examples) {
|
|
140
|
+
const exampleScore = this.similarity(lowerQuery, example.toLowerCase());
|
|
141
|
+
if (exampleScore > bestScore) {
|
|
142
|
+
bestScore = exampleScore;
|
|
143
|
+
bestMatch = example;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Check keyword overlap
|
|
147
|
+
const keywords = tool.description?.toLowerCase().split(/\s+/) || [];
|
|
148
|
+
const queryWords = lowerQuery.split(/\s+/);
|
|
149
|
+
const keywordScore = queryWords.filter(w => keywords.includes(w)).length / queryWords.length;
|
|
150
|
+
if (keywordScore > bestScore) {
|
|
151
|
+
bestScore = keywordScore;
|
|
152
|
+
bestMatch = 'keyword overlap';
|
|
153
|
+
}
|
|
154
|
+
// Only include if confidence > 50%
|
|
155
|
+
if (bestScore > 0.5) {
|
|
156
|
+
matches.push({
|
|
157
|
+
tool,
|
|
158
|
+
confidence: Math.round(bestScore * 100),
|
|
159
|
+
reasoning: `Fuzzy match: ${bestMatch}`
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return matches;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Calculate similarity between two strings (0-1)
|
|
167
|
+
* Uses Levenshtein distance normalized by string length
|
|
168
|
+
*/
|
|
169
|
+
similarity(a, b) {
|
|
170
|
+
const distance = this.levenshtein(a, b);
|
|
171
|
+
const maxLength = Math.max(a.length, b.length);
|
|
172
|
+
return 1 - (distance / maxLength);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Levenshtein distance algorithm
|
|
176
|
+
*/
|
|
177
|
+
levenshtein(a, b) {
|
|
178
|
+
const matrix = [];
|
|
179
|
+
for (let i = 0; i <= b.length; i++) {
|
|
180
|
+
matrix[i] = [i];
|
|
181
|
+
}
|
|
182
|
+
for (let j = 0; j <= a.length; j++) {
|
|
183
|
+
matrix[0][j] = j;
|
|
184
|
+
}
|
|
185
|
+
for (let i = 1; i <= b.length; i++) {
|
|
186
|
+
for (let j = 1; j <= a.length; j++) {
|
|
187
|
+
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
188
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return matrix[b.length][a.length];
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=ToolMatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolMatcher.js","sourceRoot":"","sources":["../../../../src/ai/ToolMatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Command Interface - Core exports (Open Source Edition)
|
|
3
|
+
*
|
|
4
|
+
* Basic AI matching and execution. Advanced features (LLMProvider,
|
|
5
|
+
* ParameterExtractor, SuggestionEngine) available in enterprise edition.
|
|
6
|
+
*/
|
|
7
|
+
export * from './ToolMatcher';
|
|
8
|
+
export * from './ToolExecutor';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Command Interface - Core exports (Open Source Edition)
|
|
3
|
+
*
|
|
4
|
+
* Basic AI matching and execution. Advanced features (LLMProvider,
|
|
5
|
+
* ParameterExtractor, SuggestionEngine) available in enterprise edition.
|
|
6
|
+
*/
|
|
7
|
+
export * from './ToolMatcher.js';
|
|
8
|
+
export * from './ToolExecutor.js';
|
|
9
|
+
// Enterprise features - available at https://supernal.ai/enterprise
|
|
10
|
+
// export * from './ParameterExtractor.js';
|
|
11
|
+
// export * from './LLMProvider.js';
|
|
12
|
+
// export * from './SuggestionEngine.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAE/B,oEAAoE;AACpE,wCAAwC;AACxC,iCAAiC;AACjC,sCAAsC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create Container Helper
|
|
3
|
+
*
|
|
4
|
+
* Creates a container configuration and registers it with the architecture registry.
|
|
5
|
+
* Supports multiple formats from minimal to fully configured.
|
|
6
|
+
*
|
|
7
|
+
* @example Minimal format (infers most fields)
|
|
8
|
+
* ```typescript
|
|
9
|
+
* export const BlogContainer = createContainer('Blog', 'page');
|
|
10
|
+
* // Result: { id: 'blog', name: 'Blog', type: 'page', route: '/blog' }
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @example With route override
|
|
14
|
+
* ```typescript
|
|
15
|
+
* export const BlogContainer = createContainer('Blog', 'page', '/posts');
|
|
16
|
+
* // Result: { id: 'blog', name: 'Blog', type: 'page', route: '/posts' }
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @example Full config object (maximum control)
|
|
20
|
+
* ```typescript
|
|
21
|
+
* export const BlogContainer = createContainer({
|
|
22
|
+
* id: 'blog-archive',
|
|
23
|
+
* name: 'Blog',
|
|
24
|
+
* type: 'page',
|
|
25
|
+
* route: '/archive',
|
|
26
|
+
* description: 'Blog archive page',
|
|
27
|
+
* metadata: { category: 'content' }
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export interface ContainerConfig {
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
type: 'page' | 'modal' | 'drawer' | 'section';
|
|
35
|
+
route?: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
parent?: string;
|
|
38
|
+
metadata?: Record<string, any>;
|
|
39
|
+
}
|
|
40
|
+
export declare function createContainer(name: string, type: 'page' | 'modal' | 'drawer' | 'section', route?: string): ContainerConfig;
|
|
41
|
+
export declare function createContainer(config: ContainerConfig): ContainerConfig;
|
|
42
|
+
/**
|
|
43
|
+
* Create multiple containers at once
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* export const Containers = createContainers({
|
|
48
|
+
* Blog: { id: 'blog', name: 'Blog', type: 'page', route: '/blog' },
|
|
49
|
+
* Demo: { id: 'demo', name: 'Demo', type: 'page', route: '/demo' },
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function createContainers<T extends Record<string, ContainerConfig>>(configs: T): T;
|
|
54
|
+
/**
|
|
55
|
+
* Type helper for container names
|
|
56
|
+
*/
|
|
57
|
+
export type ContainerName<T> = T extends {
|
|
58
|
+
name: infer N;
|
|
59
|
+
} ? N : never;
|
|
60
|
+
//# sourceMappingURL=createContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createContainer.d.ts","sourceRoot":"","sources":["../../../../src/architecture/createContainer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAqBD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,EAC7C,KAAK,CAAC,EAAE,MAAM,GACb,eAAe,CAAC;AAGnB,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAAC;AAkD1E;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACxE,OAAO,EAAE,CAAC,GACT,CAAC,CAQH;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create Container Helper
|
|
3
|
+
*
|
|
4
|
+
* Creates a container configuration and registers it with the architecture registry.
|
|
5
|
+
* Supports multiple formats from minimal to fully configured.
|
|
6
|
+
*
|
|
7
|
+
* @example Minimal format (infers most fields)
|
|
8
|
+
* ```typescript
|
|
9
|
+
* export const BlogContainer = createContainer('Blog', 'page');
|
|
10
|
+
* // Result: { id: 'blog', name: 'Blog', type: 'page', route: '/blog' }
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @example With route override
|
|
14
|
+
* ```typescript
|
|
15
|
+
* export const BlogContainer = createContainer('Blog', 'page', '/posts');
|
|
16
|
+
* // Result: { id: 'blog', name: 'Blog', type: 'page', route: '/posts' }
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @example Full config object (maximum control)
|
|
20
|
+
* ```typescript
|
|
21
|
+
* export const BlogContainer = createContainer({
|
|
22
|
+
* id: 'blog-archive',
|
|
23
|
+
* name: 'Blog',
|
|
24
|
+
* type: 'page',
|
|
25
|
+
* route: '/archive',
|
|
26
|
+
* description: 'Blog archive page',
|
|
27
|
+
* metadata: { category: 'content' }
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
import { architectureRegistry } from '../architecture/registry.js';
|
|
32
|
+
/**
|
|
33
|
+
* Convert name to kebab-case ID
|
|
34
|
+
*/
|
|
35
|
+
function nameToId(name) {
|
|
36
|
+
return name
|
|
37
|
+
.replace(/([A-Z])/g, '-$1')
|
|
38
|
+
.toLowerCase()
|
|
39
|
+
.replace(/^-/, '');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Convert name to default route
|
|
43
|
+
*/
|
|
44
|
+
function nameToRoute(name) {
|
|
45
|
+
return '/' + nameToId(name);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create and register a container with flexible input formats
|
|
49
|
+
*/
|
|
50
|
+
// eslint-disable-next-line no-redeclare
|
|
51
|
+
export function createContainer(nameOrConfig, type, route) {
|
|
52
|
+
let config;
|
|
53
|
+
if (typeof nameOrConfig === 'string') {
|
|
54
|
+
// Minimal format: createContainer('Blog', 'page', '/custom-route')
|
|
55
|
+
if (!type) {
|
|
56
|
+
throw new Error('Type is required when using string format');
|
|
57
|
+
}
|
|
58
|
+
const name = nameOrConfig;
|
|
59
|
+
const id = nameToId(name);
|
|
60
|
+
const inferredRoute = route || nameToRoute(name);
|
|
61
|
+
config = {
|
|
62
|
+
id,
|
|
63
|
+
name,
|
|
64
|
+
type,
|
|
65
|
+
route: inferredRoute,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// Full config object format
|
|
70
|
+
config = nameOrConfig;
|
|
71
|
+
// Validate required fields
|
|
72
|
+
if (!config.id || !config.name || !config.type) {
|
|
73
|
+
throw new Error('Container must have id, name, and type');
|
|
74
|
+
}
|
|
75
|
+
// Infer route if not provided and type is page
|
|
76
|
+
if (!config.route && config.type === 'page') {
|
|
77
|
+
config.route = nameToRoute(config.name);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Register with architecture
|
|
81
|
+
architectureRegistry.registerContainer(config.name, config);
|
|
82
|
+
return config;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create multiple containers at once
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* export const Containers = createContainers({
|
|
90
|
+
* Blog: { id: 'blog', name: 'Blog', type: 'page', route: '/blog' },
|
|
91
|
+
* Demo: { id: 'demo', name: 'Demo', type: 'page', route: '/demo' },
|
|
92
|
+
* });
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export function createContainers(configs) {
|
|
96
|
+
const result = {};
|
|
97
|
+
for (const [key, config] of Object.entries(configs)) {
|
|
98
|
+
result[key] = createContainer(config);
|
|
99
|
+
}
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=createContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createContainer.js","sourceRoot":"","sources":["../../../../src/architecture/createContainer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAYhE;;GAEG;AACH,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI;SACR,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAC1B,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAaD;;GAEG;AACH,wCAAwC;AACxC,MAAM,UAAU,eAAe,CAC7B,YAAsC,EACtC,IAA8C,EAC9C,KAAc;IAEd,IAAI,MAAuB,CAAC;IAE5B,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,mEAAmE;QACnE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC;QAC1B,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,aAAa,GAAG,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,GAAG;YACP,EAAE;YACF,IAAI;YACJ,IAAI;YACJ,KAAK,EAAE,aAAa;SACrB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,4BAA4B;QAC5B,MAAM,GAAG,YAAY,CAAC;QAEtB,2BAA2B;QAC3B,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5C,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,oBAAoB,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE5D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAU;IAEV,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|