@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,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zero-Config Architecture Initialization
|
|
3
|
+
*
|
|
4
|
+
* Automatically discovers and initializes architecture from registered components and containers.
|
|
5
|
+
* Uses convention over configuration to eliminate boilerplate.
|
|
6
|
+
*/
|
|
7
|
+
import { NavigationGraph } from '../background/navigation/NavigationGraph';
|
|
8
|
+
export interface ArchitectureOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Override auto-inferred navigation mapping
|
|
11
|
+
*/
|
|
12
|
+
navToContainerMap?: Record<string, string>;
|
|
13
|
+
/**
|
|
14
|
+
* Enable automatic edge inference
|
|
15
|
+
*/
|
|
16
|
+
autoInferEdges?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Mirror tools between containers (for shared components)
|
|
19
|
+
*/
|
|
20
|
+
mirrorTools?: Array<{
|
|
21
|
+
from: string;
|
|
22
|
+
to: string;
|
|
23
|
+
}>;
|
|
24
|
+
/**
|
|
25
|
+
* Custom initialization logic
|
|
26
|
+
*/
|
|
27
|
+
onInitialize?: (graph: NavigationGraph) => void;
|
|
28
|
+
}
|
|
29
|
+
export interface InitializedArchitecture {
|
|
30
|
+
/**
|
|
31
|
+
* Initialize the architecture (call this once on app startup)
|
|
32
|
+
*/
|
|
33
|
+
initialize: () => void;
|
|
34
|
+
/**
|
|
35
|
+
* Create a navigation handler for page routing
|
|
36
|
+
*/
|
|
37
|
+
createNavigationHandler: (router: any) => (page: string) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Get the navigation graph
|
|
40
|
+
*/
|
|
41
|
+
getGraph: () => NavigationGraph;
|
|
42
|
+
/**
|
|
43
|
+
* Get all registered components
|
|
44
|
+
*/
|
|
45
|
+
getComponents: () => Record<string, Record<string, string>>;
|
|
46
|
+
/**
|
|
47
|
+
* Get all registered containers
|
|
48
|
+
*/
|
|
49
|
+
getContainers: () => Record<string, any>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Initialize architecture from registered components and containers
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* // After importing component/container definitions:
|
|
57
|
+
* export const DemoArchitecture = initializeArchitecture({
|
|
58
|
+
* autoInferEdges: true,
|
|
59
|
+
* });
|
|
60
|
+
*
|
|
61
|
+
* // In your app:
|
|
62
|
+
* DemoArchitecture.initialize();
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare function initializeArchitecture(options?: ArchitectureOptions): InitializedArchitecture;
|
|
66
|
+
/**
|
|
67
|
+
* Create an auto-initializer with explicit configuration (legacy support)
|
|
68
|
+
*
|
|
69
|
+
* @deprecated Use initializeArchitecture() for zero-config approach
|
|
70
|
+
*/
|
|
71
|
+
export declare function createAutoInitializer(config: {
|
|
72
|
+
containers: Record<string, any>;
|
|
73
|
+
components: Record<string, any>;
|
|
74
|
+
navToContainerMap?: Record<string, string>;
|
|
75
|
+
autoInferEdges?: boolean;
|
|
76
|
+
mirrorTools?: Array<{
|
|
77
|
+
from: string;
|
|
78
|
+
to: string;
|
|
79
|
+
}>;
|
|
80
|
+
}): InitializedArchitecture;
|
|
81
|
+
//# sourceMappingURL=initialize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../../../src/architecture/initialize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3C;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAElD;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,uBAAuB,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjE;;OAEG;IACH,QAAQ,EAAE,MAAM,eAAe,CAAC;IAEhC;;OAEG;IACH,aAAa,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5D;;OAEG;IACH,aAAa,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,mBAAwB,GAChC,uBAAuB,CAwFzB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD,GAAG,uBAAuB,CAiB1B"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zero-Config Architecture Initialization
|
|
3
|
+
*
|
|
4
|
+
* Automatically discovers and initializes architecture from registered components and containers.
|
|
5
|
+
* Uses convention over configuration to eliminate boilerplate.
|
|
6
|
+
*/
|
|
7
|
+
import { architectureRegistry, inferNavToContainerMap } from './registry.js';
|
|
8
|
+
import { NavigationGraph } from '../background/navigation/NavigationGraph.js';
|
|
9
|
+
/**
|
|
10
|
+
* Initialize architecture from registered components and containers
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // After importing component/container definitions:
|
|
15
|
+
* export const DemoArchitecture = initializeArchitecture({
|
|
16
|
+
* autoInferEdges: true,
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // In your app:
|
|
20
|
+
* DemoArchitecture.initialize();
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export function initializeArchitecture(options = {}) {
|
|
24
|
+
const components = architectureRegistry.getComponents();
|
|
25
|
+
const containers = architectureRegistry.getContainers();
|
|
26
|
+
// Auto-infer navigation mapping if not provided
|
|
27
|
+
const navToContainerMap = options.navToContainerMap ||
|
|
28
|
+
inferNavToContainerMap(components.GlobalNav || {}, containers);
|
|
29
|
+
const graph = NavigationGraph.getInstance();
|
|
30
|
+
let initialized = false;
|
|
31
|
+
return {
|
|
32
|
+
initialize() {
|
|
33
|
+
if (initialized) {
|
|
34
|
+
// eslint-disable-next-line no-console
|
|
35
|
+
console.warn('Architecture already initialized');
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// Register containers as navigation contexts
|
|
39
|
+
for (const container of Object.values(containers)) {
|
|
40
|
+
graph.registerContext({
|
|
41
|
+
id: container.id,
|
|
42
|
+
name: container.name,
|
|
43
|
+
children: [],
|
|
44
|
+
tools: [],
|
|
45
|
+
metadata: {
|
|
46
|
+
type: container.type,
|
|
47
|
+
route: container.route,
|
|
48
|
+
description: container.description,
|
|
49
|
+
...container.metadata,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
// Register navigation edges (GlobalNav β Containers)
|
|
54
|
+
if (components.GlobalNav) {
|
|
55
|
+
for (const [navKey] of Object.entries(components.GlobalNav)) {
|
|
56
|
+
const containerName = navToContainerMap[navKey];
|
|
57
|
+
if (containerName && containers[containerName]) {
|
|
58
|
+
graph.registerEdge({
|
|
59
|
+
from: 'global',
|
|
60
|
+
to: containers[containerName].id,
|
|
61
|
+
navigationTool: `navigate-to-${containers[containerName].id}`,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Custom initialization logic
|
|
67
|
+
if (options.onInitialize) {
|
|
68
|
+
options.onInitialize(graph);
|
|
69
|
+
}
|
|
70
|
+
initialized = true;
|
|
71
|
+
// eslint-disable-next-line no-console
|
|
72
|
+
console.log('β Architecture initialized', {
|
|
73
|
+
components: Object.keys(components).length,
|
|
74
|
+
containers: Object.keys(containers).length,
|
|
75
|
+
navMappings: Object.keys(navToContainerMap).length,
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
createNavigationHandler(router) {
|
|
79
|
+
return (page) => {
|
|
80
|
+
const containerName = navToContainerMap[page.toLowerCase()];
|
|
81
|
+
if (containerName && containers[containerName]) {
|
|
82
|
+
const route = containers[containerName].route;
|
|
83
|
+
if (route) {
|
|
84
|
+
router.push(route);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
getGraph() {
|
|
90
|
+
return graph;
|
|
91
|
+
},
|
|
92
|
+
getComponents() {
|
|
93
|
+
return components;
|
|
94
|
+
},
|
|
95
|
+
getContainers() {
|
|
96
|
+
return containers;
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Create an auto-initializer with explicit configuration (legacy support)
|
|
102
|
+
*
|
|
103
|
+
* @deprecated Use initializeArchitecture() for zero-config approach
|
|
104
|
+
*/
|
|
105
|
+
export function createAutoInitializer(config) {
|
|
106
|
+
// Register provided components and containers
|
|
107
|
+
for (const [namespace, names] of Object.entries(config.components)) {
|
|
108
|
+
const prefix = namespace.toLowerCase();
|
|
109
|
+
architectureRegistry.registerComponent(prefix, names);
|
|
110
|
+
}
|
|
111
|
+
for (const [name, container] of Object.entries(config.containers)) {
|
|
112
|
+
architectureRegistry.registerContainer(name, container);
|
|
113
|
+
}
|
|
114
|
+
// Use standard initialization
|
|
115
|
+
return initializeArchitecture({
|
|
116
|
+
navToContainerMap: config.navToContainerMap,
|
|
117
|
+
autoInferEdges: config.autoInferEdges,
|
|
118
|
+
mirrorTools: config.mirrorTools,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=initialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../src/architecture/initialize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Architecture Registry
|
|
3
|
+
*
|
|
4
|
+
* Global registry for auto-discovery of components, containers, and their relationships.
|
|
5
|
+
* Enables zero-config initialization through convention over configuration.
|
|
6
|
+
*/
|
|
7
|
+
declare class ArchitectureRegistry {
|
|
8
|
+
private components;
|
|
9
|
+
private containers;
|
|
10
|
+
/**
|
|
11
|
+
* Register a component namespace
|
|
12
|
+
*/
|
|
13
|
+
registerComponent(prefix: string, names: Record<string, string>): void;
|
|
14
|
+
/**
|
|
15
|
+
* Register a container
|
|
16
|
+
*/
|
|
17
|
+
registerContainer(name: string, config: any): void;
|
|
18
|
+
/**
|
|
19
|
+
* Get all registered components
|
|
20
|
+
*/
|
|
21
|
+
getComponents(): Record<string, Record<string, string>>;
|
|
22
|
+
/**
|
|
23
|
+
* Get all registered containers
|
|
24
|
+
*/
|
|
25
|
+
getContainers(): Record<string, any>;
|
|
26
|
+
/**
|
|
27
|
+
* Get all registered data
|
|
28
|
+
*/
|
|
29
|
+
getAll(): {
|
|
30
|
+
components: Record<string, Record<string, string>>;
|
|
31
|
+
containers: Record<string, any>;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Clear all registrations (useful for testing)
|
|
35
|
+
*/
|
|
36
|
+
clear(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Check if a component namespace is registered
|
|
39
|
+
*/
|
|
40
|
+
hasComponent(prefix: string): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Check if a container is registered
|
|
43
|
+
*/
|
|
44
|
+
hasContainer(name: string): boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Singleton registry instance
|
|
48
|
+
*/
|
|
49
|
+
export declare const architectureRegistry: ArchitectureRegistry;
|
|
50
|
+
/**
|
|
51
|
+
* Infer navigation-to-container mapping from registered containers
|
|
52
|
+
* Convention: lowercase nav key β PascalCase container name
|
|
53
|
+
*
|
|
54
|
+
* Examples:
|
|
55
|
+
* - 'blog' β 'Blog'
|
|
56
|
+
* - 'demo' β 'Demo'
|
|
57
|
+
* - 'examples' β 'Examples'
|
|
58
|
+
*/
|
|
59
|
+
export declare function inferNavToContainerMap(navKeys: Record<string, string>, containers: Record<string, any>): Record<string, string>;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/architecture/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,cAAM,oBAAoB;IACxB,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,UAAU,CAAwC;IAE1D;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI/D;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;IAI3C;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAUvD;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAQpC;;OAEG;IACH,MAAM;;;;IAON;;OAEG;IACH,KAAK;IAKL;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGpC;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,sBAA6B,CAAC;AAE/D;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBxB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Architecture Registry
|
|
3
|
+
*
|
|
4
|
+
* Global registry for auto-discovery of components, containers, and their relationships.
|
|
5
|
+
* Enables zero-config initialization through convention over configuration.
|
|
6
|
+
*/
|
|
7
|
+
class ArchitectureRegistry {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.components = new Map();
|
|
10
|
+
this.containers = new Map();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Register a component namespace
|
|
14
|
+
*/
|
|
15
|
+
registerComponent(prefix, names) {
|
|
16
|
+
this.components.set(prefix, { prefix, names });
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Register a container
|
|
20
|
+
*/
|
|
21
|
+
registerContainer(name, config) {
|
|
22
|
+
this.containers.set(name, { name, config });
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get all registered components
|
|
26
|
+
*/
|
|
27
|
+
getComponents() {
|
|
28
|
+
const result = {};
|
|
29
|
+
this.components.forEach(({ prefix, names }) => {
|
|
30
|
+
// Use PascalCase for namespace (Blog, Demo, etc.)
|
|
31
|
+
const namespace = prefix.charAt(0).toUpperCase() + prefix.slice(1);
|
|
32
|
+
result[namespace] = names;
|
|
33
|
+
});
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get all registered containers
|
|
38
|
+
*/
|
|
39
|
+
getContainers() {
|
|
40
|
+
const result = {};
|
|
41
|
+
this.containers.forEach(({ name, config }) => {
|
|
42
|
+
result[name] = config;
|
|
43
|
+
});
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get all registered data
|
|
48
|
+
*/
|
|
49
|
+
getAll() {
|
|
50
|
+
return {
|
|
51
|
+
components: this.getComponents(),
|
|
52
|
+
containers: this.getContainers(),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Clear all registrations (useful for testing)
|
|
57
|
+
*/
|
|
58
|
+
clear() {
|
|
59
|
+
this.components.clear();
|
|
60
|
+
this.containers.clear();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Check if a component namespace is registered
|
|
64
|
+
*/
|
|
65
|
+
hasComponent(prefix) {
|
|
66
|
+
return this.components.has(prefix);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Check if a container is registered
|
|
70
|
+
*/
|
|
71
|
+
hasContainer(name) {
|
|
72
|
+
return this.containers.has(name);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Singleton registry instance
|
|
77
|
+
*/
|
|
78
|
+
export const architectureRegistry = new ArchitectureRegistry();
|
|
79
|
+
/**
|
|
80
|
+
* Infer navigation-to-container mapping from registered containers
|
|
81
|
+
* Convention: lowercase nav key β PascalCase container name
|
|
82
|
+
*
|
|
83
|
+
* Examples:
|
|
84
|
+
* - 'blog' β 'Blog'
|
|
85
|
+
* - 'demo' β 'Demo'
|
|
86
|
+
* - 'examples' β 'Examples'
|
|
87
|
+
*/
|
|
88
|
+
export function inferNavToContainerMap(navKeys, containers) {
|
|
89
|
+
const map = {};
|
|
90
|
+
for (const navKey of Object.keys(navKeys)) {
|
|
91
|
+
// Try direct PascalCase match
|
|
92
|
+
const pascalKey = navKey.charAt(0).toUpperCase() + navKey.slice(1);
|
|
93
|
+
if (containers[pascalKey]) {
|
|
94
|
+
map[navKey] = pascalKey;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
// Try finding by route match
|
|
98
|
+
for (const [containerName, container] of Object.entries(containers)) {
|
|
99
|
+
if (container.route && container.route.includes(navKey)) {
|
|
100
|
+
map[navKey] = containerName;
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return map;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/architecture/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Architecture Initializer - Core Pattern
|
|
3
|
+
*
|
|
4
|
+
* Generic initialization pattern for any application using Supernal Interface.
|
|
5
|
+
* Takes container definitions and automatically:
|
|
6
|
+
* 1. Registers them in NavigationGraph
|
|
7
|
+
* 2. Creates navigation tools for each container
|
|
8
|
+
* 3. Infers navigation edges from component names
|
|
9
|
+
* 4. Provides a centralized navigation handler
|
|
10
|
+
*
|
|
11
|
+
* This is the CORE pattern - apps just provide their container definitions.
|
|
12
|
+
*/
|
|
13
|
+
import { NavigationGraph } from '../navigation/NavigationGraph';
|
|
14
|
+
import type { ContainerDefinition } from './Containers';
|
|
15
|
+
/**
|
|
16
|
+
* Architecture configuration for an application
|
|
17
|
+
*/
|
|
18
|
+
export interface ArchitectureConfig<T extends Record<string, ContainerDefinition>> {
|
|
19
|
+
/** Container definitions */
|
|
20
|
+
containers: T;
|
|
21
|
+
/** Component names (for inferring navigation edges) */
|
|
22
|
+
components?: {
|
|
23
|
+
GlobalNav?: Record<string, string>;
|
|
24
|
+
[key: string]: Record<string, string> | undefined;
|
|
25
|
+
};
|
|
26
|
+
/** Custom navigation mapping (optional) */
|
|
27
|
+
navToContainerMap?: Record<string, string>;
|
|
28
|
+
/** Mirror tools between containers (optional) */
|
|
29
|
+
mirrorTools?: Array<{
|
|
30
|
+
from: string;
|
|
31
|
+
to: string;
|
|
32
|
+
}>;
|
|
33
|
+
/** Enable auto-inference of navigation edges */
|
|
34
|
+
autoInferEdges?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Initialize application architecture
|
|
38
|
+
*
|
|
39
|
+
* Call this once on app startup to register containers and create navigation tools.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* // In your app's architecture/index.ts
|
|
44
|
+
* import { initializeArchitecture } from '@supernal-interface/core';
|
|
45
|
+
* import { MyContainers } from './MyContainers';
|
|
46
|
+
* import { Components } from './MyComponentNames';
|
|
47
|
+
*
|
|
48
|
+
* export const { createNavigationHandler } = initializeArchitecture({
|
|
49
|
+
* containers: MyContainers,
|
|
50
|
+
* components: { GlobalNav: Components.GlobalNav },
|
|
51
|
+
* autoInferEdges: true
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare function initializeArchitecture<T extends Record<string, ContainerDefinition>>(config: ArchitectureConfig<T>): {
|
|
56
|
+
/**
|
|
57
|
+
* Initialize the architecture (call once)
|
|
58
|
+
* Returns true if this was the first initialization
|
|
59
|
+
*/
|
|
60
|
+
initialize(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Create a navigation handler that uses the registered routes
|
|
63
|
+
*
|
|
64
|
+
* @param router - Next.js router or any router with a push method
|
|
65
|
+
* @returns Navigation handler function
|
|
66
|
+
*/
|
|
67
|
+
createNavigationHandler(router?: {
|
|
68
|
+
push: (route: string) => void | Promise<void>;
|
|
69
|
+
}): (pageName: string) => void;
|
|
70
|
+
/**
|
|
71
|
+
* Get the NavigationGraph instance (for advanced usage)
|
|
72
|
+
*/
|
|
73
|
+
getGraph(): NavigationGraph;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Auto-initialize on module load (for convenience)
|
|
77
|
+
* Apps can call this manually if they prefer explicit initialization
|
|
78
|
+
*/
|
|
79
|
+
export declare function createAutoInitializer<T extends Record<string, ContainerDefinition>>(config: ArchitectureConfig<T>): {
|
|
80
|
+
/**
|
|
81
|
+
* Create a navigation handler that uses the registered routes
|
|
82
|
+
*
|
|
83
|
+
* @param router - Next.js router or any router with a push method
|
|
84
|
+
* @returns Navigation handler function
|
|
85
|
+
*/
|
|
86
|
+
createNavigationHandler(router?: {
|
|
87
|
+
push: (route: string) => void | Promise<void>;
|
|
88
|
+
} | undefined): (pageName: string) => void;
|
|
89
|
+
/**
|
|
90
|
+
* Get the NavigationGraph instance (for advanced usage)
|
|
91
|
+
*/
|
|
92
|
+
getGraph(): NavigationGraph;
|
|
93
|
+
initialize: () => boolean;
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=ArchitectureInitializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchitectureInitializer.d.ts","sourceRoot":"","sources":["../../../../../src/background/architecture/ArchitectureInitializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAC/E,4BAA4B;IAC5B,UAAU,EAAE,CAAC,CAAC;IAEd,uDAAuD;IACvD,UAAU,CAAC,EAAE;QACX,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;KACnD,CAAC;IAEF,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3C,iDAAiD;IACjD,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAElD,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAClF,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAM3B;;;OAGG;kBACW,OAAO;IAuDrB;;;;;OAKG;qCAC8B;QAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,IACxE,UAAU,MAAM;IAoC1B;;OAEG;;EAKN;AAsCD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACjF,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IA7F3B;;;;;OAKG;;sBAC8C,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;qBACtE,UAAU,MAAM;IAoC1B;;OAEG;;sBApGW,OAAO;EAgKxB"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Architecture Initializer - Core Pattern
|
|
3
|
+
*
|
|
4
|
+
* Generic initialization pattern for any application using Supernal Interface.
|
|
5
|
+
* Takes container definitions and automatically:
|
|
6
|
+
* 1. Registers them in NavigationGraph
|
|
7
|
+
* 2. Creates navigation tools for each container
|
|
8
|
+
* 3. Infers navigation edges from component names
|
|
9
|
+
* 4. Provides a centralized navigation handler
|
|
10
|
+
*
|
|
11
|
+
* This is the CORE pattern - apps just provide their container definitions.
|
|
12
|
+
*/
|
|
13
|
+
import { NavigationGraph } from '../navigation/NavigationGraph.js';
|
|
14
|
+
/**
|
|
15
|
+
* Initialize application architecture
|
|
16
|
+
*
|
|
17
|
+
* Call this once on app startup to register containers and create navigation tools.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // In your app's architecture/index.ts
|
|
22
|
+
* import { initializeArchitecture } from '@supernal-interface/core';
|
|
23
|
+
* import { MyContainers } from './MyContainers.js';
|
|
24
|
+
* import { Components } from './MyComponentNames.js';
|
|
25
|
+
*
|
|
26
|
+
* export const { createNavigationHandler } = initializeArchitecture({
|
|
27
|
+
* containers: MyContainers,
|
|
28
|
+
* components: { GlobalNav: Components.GlobalNav },
|
|
29
|
+
* autoInferEdges: true
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function initializeArchitecture(config) {
|
|
34
|
+
const graph = NavigationGraph.getInstance();
|
|
35
|
+
let initialized = false;
|
|
36
|
+
return {
|
|
37
|
+
/**
|
|
38
|
+
* Initialize the architecture (call once)
|
|
39
|
+
* Returns true if this was the first initialization
|
|
40
|
+
*/
|
|
41
|
+
initialize() {
|
|
42
|
+
if (initialized)
|
|
43
|
+
return false;
|
|
44
|
+
initialized = true;
|
|
45
|
+
// 1. Register all containers as navigation contexts
|
|
46
|
+
const containers = Object.values(config.containers);
|
|
47
|
+
for (const container of containers) {
|
|
48
|
+
graph.registerContext({
|
|
49
|
+
id: container.id,
|
|
50
|
+
name: container.name,
|
|
51
|
+
parent: 'parent' in container ? container.parent : undefined,
|
|
52
|
+
children: [],
|
|
53
|
+
tools: [...container.components],
|
|
54
|
+
metadata: {
|
|
55
|
+
type: container.type,
|
|
56
|
+
route: 'route' in container ? container.route : undefined,
|
|
57
|
+
description: container.description
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
console.log(`π¦ [Architecture] Registered container: ${container.name}`);
|
|
61
|
+
}
|
|
62
|
+
// 2. Mirror tools between containers (if specified)
|
|
63
|
+
if (config.mirrorTools) {
|
|
64
|
+
for (const { from, to } of config.mirrorTools) {
|
|
65
|
+
const sourceContext = graph.getContext(from);
|
|
66
|
+
if (sourceContext && sourceContext.tools) {
|
|
67
|
+
for (const toolId of sourceContext.tools) {
|
|
68
|
+
graph.registerToolInContext(toolId, to);
|
|
69
|
+
}
|
|
70
|
+
console.log(`π [Architecture] Mirrored ${sourceContext.tools.length} tools: ${from} β ${to}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// 3. Auto-infer navigation edges (if enabled)
|
|
75
|
+
if (config.autoInferEdges && config.components?.GlobalNav && config.navToContainerMap) {
|
|
76
|
+
const edges = inferNavigationEdges(containers, config.components.GlobalNav, config.navToContainerMap, config.containers);
|
|
77
|
+
for (const edge of edges) {
|
|
78
|
+
graph.registerEdge(edge);
|
|
79
|
+
}
|
|
80
|
+
console.log(`β
[Architecture] Initialized with ${containers.length} containers, ${edges.length} edges`);
|
|
81
|
+
}
|
|
82
|
+
return true;
|
|
83
|
+
},
|
|
84
|
+
/**
|
|
85
|
+
* Create a navigation handler that uses the registered routes
|
|
86
|
+
*
|
|
87
|
+
* @param router - Next.js router or any router with a push method
|
|
88
|
+
* @returns Navigation handler function
|
|
89
|
+
*/
|
|
90
|
+
createNavigationHandler(router) {
|
|
91
|
+
return (pageName) => {
|
|
92
|
+
console.log(`πΊοΈ [Navigation] Request: ${pageName}`);
|
|
93
|
+
// Use NavigationGraph to resolve route
|
|
94
|
+
const routeInfo = graph.getRouteByName(pageName);
|
|
95
|
+
if (!routeInfo) {
|
|
96
|
+
console.warn(`β οΈ [Navigation] No route found for: ${pageName}`);
|
|
97
|
+
// Try treating as a path (e.g., "blog/type-safe")
|
|
98
|
+
if (pageName.includes('/')) {
|
|
99
|
+
const attemptedPath = pageName.startsWith('/') ? pageName : `/${pageName}`;
|
|
100
|
+
console.log(`πΊοΈ [Navigation] Attempting path: ${attemptedPath}`);
|
|
101
|
+
if (router?.push) {
|
|
102
|
+
router.push(attemptedPath);
|
|
103
|
+
}
|
|
104
|
+
else if (typeof window !== 'undefined') {
|
|
105
|
+
window.location.href = attemptedPath;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// Extract path from RouteInfo
|
|
111
|
+
const route = routeInfo.path || routeInfo.name || pageName;
|
|
112
|
+
console.log(`πΊοΈ [Navigation] Resolved: ${pageName} β ${route}`);
|
|
113
|
+
// Navigate using provided router or fallback to window.location
|
|
114
|
+
if (router?.push) {
|
|
115
|
+
router.push(route);
|
|
116
|
+
}
|
|
117
|
+
else if (typeof window !== 'undefined') {
|
|
118
|
+
window.location.href = route;
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
},
|
|
122
|
+
/**
|
|
123
|
+
* Get the NavigationGraph instance (for advanced usage)
|
|
124
|
+
*/
|
|
125
|
+
getGraph() {
|
|
126
|
+
return graph;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Infer navigation edges from global navigation components
|
|
132
|
+
*
|
|
133
|
+
* @internal
|
|
134
|
+
*/
|
|
135
|
+
function inferNavigationEdges(containers, globalNav, navToContainerMap, containerMap) {
|
|
136
|
+
const edges = [];
|
|
137
|
+
// Create edges FROM every container TO every other container via GlobalNav
|
|
138
|
+
for (const [navKey, navButtonId] of Object.entries(globalNav)) {
|
|
139
|
+
const targetContainerName = navToContainerMap[navKey];
|
|
140
|
+
const targetContainer = containerMap[targetContainerName];
|
|
141
|
+
if (targetContainer) {
|
|
142
|
+
// From every container (except target) to target
|
|
143
|
+
for (const sourceContainer of containers) {
|
|
144
|
+
if (sourceContainer.id !== targetContainer.id) {
|
|
145
|
+
edges.push({
|
|
146
|
+
from: sourceContainer.id,
|
|
147
|
+
to: targetContainer.id,
|
|
148
|
+
navigationTool: navButtonId,
|
|
149
|
+
cost: 1
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return edges;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Auto-initialize on module load (for convenience)
|
|
159
|
+
* Apps can call this manually if they prefer explicit initialization
|
|
160
|
+
*/
|
|
161
|
+
export function createAutoInitializer(config) {
|
|
162
|
+
let hasInitialized = false;
|
|
163
|
+
const { initialize, ...rest } = initializeArchitecture(config);
|
|
164
|
+
// Auto-initialize on first access
|
|
165
|
+
if (!hasInitialized) {
|
|
166
|
+
hasInitialized = initialize();
|
|
167
|
+
}
|
|
168
|
+
return { initialize, ...rest };
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=ArchitectureInitializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchitectureInitializer.js","sourceRoot":"","sources":["../../../../../src/background/architecture/ArchitectureInitializer.ts"],"names":[],"mappings":"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"}
|