@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,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Interface
|
|
3
|
+
*
|
|
4
|
+
* This interface defines the structure for callable tools that can be used by LLMs.
|
|
5
|
+
* Tools are exposed by ToolProviders and follow industry standards for compatibility
|
|
6
|
+
* with OpenAI, Anthropic, and LangChain.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Category of tool functionality
|
|
10
|
+
*/
|
|
11
|
+
export var ToolCategory;
|
|
12
|
+
(function (ToolCategory) {
|
|
13
|
+
// Original categories
|
|
14
|
+
ToolCategory["CONTENT_CREATION"] = "content_creation";
|
|
15
|
+
ToolCategory["CONTENT_RETRIEVAL"] = "content_retrieval";
|
|
16
|
+
ToolCategory["DATA_MANIPULATION"] = "data_manipulation";
|
|
17
|
+
ToolCategory["EXTERNAL_SERVICE"] = "external_service";
|
|
18
|
+
ToolCategory["SYSTEM"] = "system";
|
|
19
|
+
ToolCategory["USER_INTERACTION"] = "user_interaction";
|
|
20
|
+
// Extended categories from ClassifiedTool
|
|
21
|
+
ToolCategory["MEMORY"] = "memory";
|
|
22
|
+
ToolCategory["DATA"] = "data";
|
|
23
|
+
ToolCategory["SEARCH"] = "search";
|
|
24
|
+
ToolCategory["UTILITY"] = "utility";
|
|
25
|
+
ToolCategory["TIME"] = "time";
|
|
26
|
+
ToolCategory["DOM"] = "dom";
|
|
27
|
+
ToolCategory["API"] = "api";
|
|
28
|
+
ToolCategory["FILE"] = "file";
|
|
29
|
+
ToolCategory["COMMUNICATION"] = "communication";
|
|
30
|
+
ToolCategory["CONTEXT_APP"] = "context-app";
|
|
31
|
+
ToolCategory["WORKFLOW"] = "workflow";
|
|
32
|
+
// New categories for specialized tools
|
|
33
|
+
ToolCategory["CHAT"] = "chat";
|
|
34
|
+
ToolCategory["SETTINGS"] = "settings";
|
|
35
|
+
ToolCategory["NAVIGATION"] = "navigation";
|
|
36
|
+
ToolCategory["ONBOARDING"] = "onboarding";
|
|
37
|
+
})(ToolCategory || (ToolCategory = {}));
|
|
38
|
+
//# sourceMappingURL=Tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tool.js","sourceRoot":"","sources":["../../../../src/types/Tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;GAEG;AACH,MAAM,CAAN,IAAY,YA2BX;AA3BD,WAAY,YAAY;IACtB,sBAAsB;IACtB,qDAAqC,CAAA;IACrC,uDAAuC,CAAA;IACvC,uDAAuC,CAAA;IACvC,qDAAqC,CAAA;IACrC,iCAAiB,CAAA;IACjB,qDAAqC,CAAA;IAErC,0CAA0C;IAC1C,iCAAiB,CAAA;IACjB,6BAAa,CAAA;IACb,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,6BAAa,CAAA;IACb,2BAAW,CAAA;IACX,2BAAW,CAAA;IACX,6BAAa,CAAA;IACb,+CAA+B,CAAA;IAC/B,2CAA2B,CAAA;IAC3B,qCAAqB,CAAA;IAErB,uCAAuC;IACvC,6BAAa,CAAA;IACb,qCAAqB,CAAA;IACrB,yCAAyB,CAAA;IACzB,yCAAyB,CAAA;AAC3B,CAAC,EA3BW,YAAY,KAAZ,YAAY,QA2BvB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Permissions Interface
|
|
3
|
+
*
|
|
4
|
+
* This interface defines the permission model for tools that can be called by LLMs.
|
|
5
|
+
* It follows a standardized approach to tool access control and security.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Permission level for tool execution
|
|
9
|
+
*/
|
|
10
|
+
export declare enum ToolPermissionLevel {
|
|
11
|
+
/**
|
|
12
|
+
* User must approve each tool execution
|
|
13
|
+
*/
|
|
14
|
+
ALWAYS_REQUIRE_APPROVAL = "always_require_approval",
|
|
15
|
+
/**
|
|
16
|
+
* User approves once, then allowed for session
|
|
17
|
+
*/
|
|
18
|
+
APPROVE_ONCE = "approve_once",
|
|
19
|
+
/**
|
|
20
|
+
* Automatically approved for non-sensitive tools
|
|
21
|
+
*/
|
|
22
|
+
AUTO_APPROVE = "auto_approve",
|
|
23
|
+
/**
|
|
24
|
+
* Can only be called by system components, not LLMs
|
|
25
|
+
*/
|
|
26
|
+
SYSTEM_ONLY = "system_only"
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Permission scope for tools
|
|
30
|
+
*/
|
|
31
|
+
export declare enum ToolPermissionScope {
|
|
32
|
+
DATA_READ = "data:read",
|
|
33
|
+
DATA_WRITE = "data:write",
|
|
34
|
+
DATA_DELETE = "data:delete",
|
|
35
|
+
CONTENT_READ = "content:read",
|
|
36
|
+
CONTENT_WRITE = "content:write",
|
|
37
|
+
CONTENT_DELETE = "content:delete",
|
|
38
|
+
EXTERNAL_SERVICE = "external:service",
|
|
39
|
+
NETWORK_ACCESS = "network:access",
|
|
40
|
+
USER_INTERACTION = "user:interaction",
|
|
41
|
+
USER_NOTIFICATION = "user:notification",
|
|
42
|
+
SYSTEM_ACCESS = "system:access"
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Permission model for a tool
|
|
46
|
+
*/
|
|
47
|
+
export interface ToolPermissions {
|
|
48
|
+
/**
|
|
49
|
+
* Permission level required for the tool
|
|
50
|
+
*/
|
|
51
|
+
level: ToolPermissionLevel;
|
|
52
|
+
/**
|
|
53
|
+
* Required permission scopes
|
|
54
|
+
*/
|
|
55
|
+
requiredScopes: string[];
|
|
56
|
+
/**
|
|
57
|
+
* Whether the tool accesses sensitive data
|
|
58
|
+
*/
|
|
59
|
+
sensitiveDataAccess: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Whether permanent storage changes are made
|
|
62
|
+
*/
|
|
63
|
+
persistentChanges?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Whether the tool can access network resources
|
|
66
|
+
*/
|
|
67
|
+
networkAccess?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Custom permission validator function (defined at runtime)
|
|
70
|
+
*/
|
|
71
|
+
customValidator?: boolean;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=ToolPermissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolPermissions.d.ts","sourceRoot":"","sources":["../../../../src/types/ToolPermissions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,oBAAY,mBAAmB;IAC7B;;OAEG;IACH,uBAAuB,4BAA4B;IAEnD;;OAEG;IACH,YAAY,iBAAiB;IAE7B;;OAEG;IACH,YAAY,iBAAiB;IAE7B;;OAEG;IACH,WAAW,gBAAgB;CAC5B;AAED;;GAEG;AACH,oBAAY,mBAAmB;IAE7B,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAG3B,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IAGjC,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IAGjC,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IAGvC,aAAa,kBAAkB;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,mBAAmB,CAAC;IAE3B;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Permissions Interface
|
|
3
|
+
*
|
|
4
|
+
* This interface defines the permission model for tools that can be called by LLMs.
|
|
5
|
+
* It follows a standardized approach to tool access control and security.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Permission level for tool execution
|
|
9
|
+
*/
|
|
10
|
+
export var ToolPermissionLevel;
|
|
11
|
+
(function (ToolPermissionLevel) {
|
|
12
|
+
/**
|
|
13
|
+
* User must approve each tool execution
|
|
14
|
+
*/
|
|
15
|
+
ToolPermissionLevel["ALWAYS_REQUIRE_APPROVAL"] = "always_require_approval";
|
|
16
|
+
/**
|
|
17
|
+
* User approves once, then allowed for session
|
|
18
|
+
*/
|
|
19
|
+
ToolPermissionLevel["APPROVE_ONCE"] = "approve_once";
|
|
20
|
+
/**
|
|
21
|
+
* Automatically approved for non-sensitive tools
|
|
22
|
+
*/
|
|
23
|
+
ToolPermissionLevel["AUTO_APPROVE"] = "auto_approve";
|
|
24
|
+
/**
|
|
25
|
+
* Can only be called by system components, not LLMs
|
|
26
|
+
*/
|
|
27
|
+
ToolPermissionLevel["SYSTEM_ONLY"] = "system_only";
|
|
28
|
+
})(ToolPermissionLevel || (ToolPermissionLevel = {}));
|
|
29
|
+
/**
|
|
30
|
+
* Permission scope for tools
|
|
31
|
+
*/
|
|
32
|
+
export var ToolPermissionScope;
|
|
33
|
+
(function (ToolPermissionScope) {
|
|
34
|
+
// Data access scopes
|
|
35
|
+
ToolPermissionScope["DATA_READ"] = "data:read";
|
|
36
|
+
ToolPermissionScope["DATA_WRITE"] = "data:write";
|
|
37
|
+
ToolPermissionScope["DATA_DELETE"] = "data:delete";
|
|
38
|
+
// Content scopes
|
|
39
|
+
ToolPermissionScope["CONTENT_READ"] = "content:read";
|
|
40
|
+
ToolPermissionScope["CONTENT_WRITE"] = "content:write";
|
|
41
|
+
ToolPermissionScope["CONTENT_DELETE"] = "content:delete";
|
|
42
|
+
// External service scopes
|
|
43
|
+
ToolPermissionScope["EXTERNAL_SERVICE"] = "external:service";
|
|
44
|
+
ToolPermissionScope["NETWORK_ACCESS"] = "network:access";
|
|
45
|
+
// User interaction scopes
|
|
46
|
+
ToolPermissionScope["USER_INTERACTION"] = "user:interaction";
|
|
47
|
+
ToolPermissionScope["USER_NOTIFICATION"] = "user:notification";
|
|
48
|
+
// System scopes
|
|
49
|
+
ToolPermissionScope["SYSTEM_ACCESS"] = "system:access";
|
|
50
|
+
})(ToolPermissionScope || (ToolPermissionScope = {}));
|
|
51
|
+
//# sourceMappingURL=ToolPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolPermissions.js","sourceRoot":"","sources":["../../../../src/types/ToolPermissions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,mBAoBX;AApBD,WAAY,mBAAmB;IAC7B;;OAEG;IACH,0EAAmD,CAAA;IAEnD;;OAEG;IACH,oDAA6B,CAAA;IAE7B;;OAEG;IACH,oDAA6B,CAAA;IAE7B;;OAEG;IACH,kDAA2B,CAAA;AAC7B,CAAC,EApBW,mBAAmB,KAAnB,mBAAmB,QAoB9B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,mBAqBX;AArBD,WAAY,mBAAmB;IAC7B,qBAAqB;IACrB,8CAAuB,CAAA;IACvB,gDAAyB,CAAA;IACzB,kDAA2B,CAAA;IAE3B,iBAAiB;IACjB,oDAA6B,CAAA;IAC7B,sDAA+B,CAAA;IAC/B,wDAAiC,CAAA;IAEjC,0BAA0B;IAC1B,4DAAqC,CAAA;IACrC,wDAAiC,CAAA;IAEjC,0BAA0B;IAC1B,4DAAqC,CAAA;IACrC,8DAAuC,CAAA;IAEvC,gBAAgB;IAChB,sDAA+B,CAAA;AACjC,CAAC,EArBW,mBAAmB,KAAnB,mBAAmB,QAqB9B"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Result Interface
|
|
3
|
+
*
|
|
4
|
+
* This interface defines the structure for results returned from tool executions.
|
|
5
|
+
* It is designed to be compatible with various LLM providers while maintaining
|
|
6
|
+
* a standardized structure across our platform.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Status of a tool execution
|
|
10
|
+
*/
|
|
11
|
+
export declare enum ToolExecutionStatus {
|
|
12
|
+
SUCCESS = "success",
|
|
13
|
+
ERROR = "error",
|
|
14
|
+
PARTIAL = "partial",
|
|
15
|
+
CANCELLED = "cancelled",
|
|
16
|
+
TIMEOUT = "timeout",
|
|
17
|
+
PERMISSION_DENIED = "permission_denied",
|
|
18
|
+
PENDING = "pending",
|
|
19
|
+
RUNNING = "running"
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Record of a tool call execution, used for tracking and displaying tool usage
|
|
23
|
+
*/
|
|
24
|
+
export interface ToolCallRecord {
|
|
25
|
+
/**
|
|
26
|
+
* Unique identifier for this tool call
|
|
27
|
+
*/
|
|
28
|
+
id: string;
|
|
29
|
+
/**
|
|
30
|
+
* ID of the tool that was called
|
|
31
|
+
*/
|
|
32
|
+
toolId: string;
|
|
33
|
+
/**
|
|
34
|
+
* Name of the tool for display purposes
|
|
35
|
+
*/
|
|
36
|
+
toolName: string;
|
|
37
|
+
/**
|
|
38
|
+
* Input parameters provided to the tool
|
|
39
|
+
*/
|
|
40
|
+
input: any;
|
|
41
|
+
/**
|
|
42
|
+
* Output returned by the tool execution
|
|
43
|
+
*/
|
|
44
|
+
output: any | null;
|
|
45
|
+
/**
|
|
46
|
+
* Current status of the tool execution
|
|
47
|
+
*/
|
|
48
|
+
status: ToolExecutionStatus;
|
|
49
|
+
/**
|
|
50
|
+
* Timestamp when the execution was initiated
|
|
51
|
+
*/
|
|
52
|
+
timestamp: number;
|
|
53
|
+
/**
|
|
54
|
+
* Error message if the execution failed
|
|
55
|
+
*/
|
|
56
|
+
error?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Basic tool result interface
|
|
60
|
+
*/
|
|
61
|
+
export interface ToolResult {
|
|
62
|
+
/**
|
|
63
|
+
* Whether the operation was successful
|
|
64
|
+
*/
|
|
65
|
+
success: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Output data from the tool execution
|
|
68
|
+
* This can be any valid JSON data, depending on the tool
|
|
69
|
+
*/
|
|
70
|
+
output?: any;
|
|
71
|
+
/**
|
|
72
|
+
* Error message if the operation failed
|
|
73
|
+
*/
|
|
74
|
+
error?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Error code if applicable
|
|
77
|
+
*/
|
|
78
|
+
errorCode?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Detailed status of the execution
|
|
81
|
+
*/
|
|
82
|
+
status?: ToolExecutionStatus;
|
|
83
|
+
/**
|
|
84
|
+
* Timestamp when the tool execution completed
|
|
85
|
+
*/
|
|
86
|
+
timestamp?: number;
|
|
87
|
+
/**
|
|
88
|
+
* Time taken to execute the tool in milliseconds
|
|
89
|
+
*/
|
|
90
|
+
executionTime?: number;
|
|
91
|
+
/**
|
|
92
|
+
* Whether the result should be cached
|
|
93
|
+
*/
|
|
94
|
+
cacheable?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Tool's declared return format (markdown or json)
|
|
97
|
+
*/
|
|
98
|
+
returnType?: 'markdown' | 'json';
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Extended tool result with provider-specific fields
|
|
102
|
+
*/
|
|
103
|
+
export interface EnhancedToolResult extends ToolResult {
|
|
104
|
+
/**
|
|
105
|
+
* Additional metadata about the execution
|
|
106
|
+
*/
|
|
107
|
+
metadata?: Record<string, any>;
|
|
108
|
+
/**
|
|
109
|
+
* References to any resources created or modified
|
|
110
|
+
*/
|
|
111
|
+
references?: string[];
|
|
112
|
+
/**
|
|
113
|
+
* Permissions that were used during execution
|
|
114
|
+
*/
|
|
115
|
+
usedPermissions?: string[];
|
|
116
|
+
/**
|
|
117
|
+
* Whether the user was prompted for permission
|
|
118
|
+
*/
|
|
119
|
+
userPrompted?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Whether the result has been truncated
|
|
122
|
+
*/
|
|
123
|
+
truncated?: boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Suggestions for follow-up actions
|
|
126
|
+
*/
|
|
127
|
+
suggestions?: string[];
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=ToolResult.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolResult.d.ts","sourceRoot":"","sources":["../../../../src/types/ToolResult.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,iBAAiB,sBAAsB;IACvC,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,GAAG,CAAC;IAEX;;OAEG;IACH,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,mBAAmB,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IAEb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAE7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE/B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Result Interface
|
|
3
|
+
*
|
|
4
|
+
* This interface defines the structure for results returned from tool executions.
|
|
5
|
+
* It is designed to be compatible with various LLM providers while maintaining
|
|
6
|
+
* a standardized structure across our platform.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Status of a tool execution
|
|
10
|
+
*/
|
|
11
|
+
export var ToolExecutionStatus;
|
|
12
|
+
(function (ToolExecutionStatus) {
|
|
13
|
+
ToolExecutionStatus["SUCCESS"] = "success";
|
|
14
|
+
ToolExecutionStatus["ERROR"] = "error";
|
|
15
|
+
ToolExecutionStatus["PARTIAL"] = "partial";
|
|
16
|
+
ToolExecutionStatus["CANCELLED"] = "cancelled";
|
|
17
|
+
ToolExecutionStatus["TIMEOUT"] = "timeout";
|
|
18
|
+
ToolExecutionStatus["PERMISSION_DENIED"] = "permission_denied";
|
|
19
|
+
ToolExecutionStatus["PENDING"] = "pending";
|
|
20
|
+
ToolExecutionStatus["RUNNING"] = "running";
|
|
21
|
+
})(ToolExecutionStatus || (ToolExecutionStatus = {}));
|
|
22
|
+
//# sourceMappingURL=ToolResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolResult.js","sourceRoot":"","sources":["../../../../src/types/ToolResult.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,mBASX;AATD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,sCAAe,CAAA;IACf,0CAAmB,CAAA;IACnB,8CAAuB,CAAA;IACvB,0CAAmB,CAAA;IACnB,8DAAuC,CAAA;IACvC,0CAAmB,CAAA;IACnB,0CAAmB,CAAA;AACrB,CAAC,EATW,mBAAmB,KAAnB,mBAAmB,QAS9B"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools Types - Index File
|
|
3
|
+
*
|
|
4
|
+
* This is the main entry point for all tool-related types.
|
|
5
|
+
* It re-exports all tool types from their specialized modules.
|
|
6
|
+
*/
|
|
7
|
+
export * from './Tool';
|
|
8
|
+
export * from './ToolPermissions';
|
|
9
|
+
export * from './ToolResult';
|
|
10
|
+
export * from './ExposureState';
|
|
11
|
+
export * from './NavigationGraph';
|
|
12
|
+
export * from './ClassifiedTool';
|
|
13
|
+
export * from './DiscoverableToolProvider';
|
|
14
|
+
export * from './StateManagers';
|
|
15
|
+
export * from './OperationType';
|
|
16
|
+
export * from './ComponentState';
|
|
17
|
+
export interface ComponentInfo {
|
|
18
|
+
constantName: string;
|
|
19
|
+
testId: string;
|
|
20
|
+
elementType: ElementType;
|
|
21
|
+
actionType: ActionType;
|
|
22
|
+
methodName: string;
|
|
23
|
+
confidence: number;
|
|
24
|
+
source: string;
|
|
25
|
+
}
|
|
26
|
+
export declare enum ElementType {
|
|
27
|
+
BUTTON = "button",
|
|
28
|
+
INPUT = "input",
|
|
29
|
+
SELECT = "select",
|
|
30
|
+
TEXTAREA = "textarea",
|
|
31
|
+
LINK = "link",
|
|
32
|
+
DIV = "div"
|
|
33
|
+
}
|
|
34
|
+
export declare enum ActionType {
|
|
35
|
+
CLICK = "click",
|
|
36
|
+
TYPE = "type",
|
|
37
|
+
SELECT = "select",
|
|
38
|
+
NAVIGATE = "navigate",
|
|
39
|
+
HOVER = "hover",
|
|
40
|
+
SCROLL = "scroll"
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Tools Types
|
|
44
|
+
*
|
|
45
|
+
* Export of all tool-related types, interfaces and constants
|
|
46
|
+
*/
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAGjC,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ;AAED,oBAAY,UAAU;IACpB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED;;;;GAIG"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools Types - Index File
|
|
3
|
+
*
|
|
4
|
+
* This is the main entry point for all tool-related types.
|
|
5
|
+
* It re-exports all tool types from their specialized modules.
|
|
6
|
+
*/
|
|
7
|
+
// Export tool types
|
|
8
|
+
export * from './Tool.js';
|
|
9
|
+
export * from './ToolPermissions.js';
|
|
10
|
+
export * from './ToolResult.js';
|
|
11
|
+
export * from './ExposureState.js';
|
|
12
|
+
export * from './NavigationGraph.js';
|
|
13
|
+
export * from './ClassifiedTool.js';
|
|
14
|
+
export * from './DiscoverableToolProvider.js';
|
|
15
|
+
// Export state system types
|
|
16
|
+
export * from './StateManagers.js';
|
|
17
|
+
export * from './OperationType.js';
|
|
18
|
+
export * from './ComponentState.js';
|
|
19
|
+
export var ElementType;
|
|
20
|
+
(function (ElementType) {
|
|
21
|
+
ElementType["BUTTON"] = "button";
|
|
22
|
+
ElementType["INPUT"] = "input";
|
|
23
|
+
ElementType["SELECT"] = "select";
|
|
24
|
+
ElementType["TEXTAREA"] = "textarea";
|
|
25
|
+
ElementType["LINK"] = "link";
|
|
26
|
+
ElementType["DIV"] = "div";
|
|
27
|
+
})(ElementType || (ElementType = {}));
|
|
28
|
+
export var ActionType;
|
|
29
|
+
(function (ActionType) {
|
|
30
|
+
ActionType["CLICK"] = "click";
|
|
31
|
+
ActionType["TYPE"] = "type";
|
|
32
|
+
ActionType["SELECT"] = "select";
|
|
33
|
+
ActionType["NAVIGATE"] = "navigate";
|
|
34
|
+
ActionType["HOVER"] = "hover";
|
|
35
|
+
ActionType["SCROLL"] = "scroll";
|
|
36
|
+
})(ActionType || (ActionType = {}));
|
|
37
|
+
/**
|
|
38
|
+
* Tools Types
|
|
39
|
+
*
|
|
40
|
+
* Export of all tool-related types, interfaces and constants
|
|
41
|
+
*/
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oBAAoB;AACpB,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAE3C,4BAA4B;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAajC,MAAM,CAAN,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;IACf,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;IACrB,4BAAa,CAAA;IACb,0BAAW,CAAA;AACb,CAAC,EAPW,WAAW,KAAX,WAAW,QAOtB;AAED,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,6BAAe,CAAA;IACf,2BAAa,CAAA;IACb,+BAAiB,CAAA;IACjB,mCAAqB,CAAA;IACrB,6BAAe,CAAA;IACf,+BAAiB,CAAA;AACnB,CAAC,EAPW,UAAU,KAAV,UAAU,QAOrB;AAED;;;;GAIG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent Chat Bubble Component
|
|
3
|
+
*
|
|
4
|
+
* Fixed position chat bubble in lower right corner that:
|
|
5
|
+
* - Appears on every page
|
|
6
|
+
* - Expands/collapses without blocking content
|
|
7
|
+
* - Provides AI interface for tool execution
|
|
8
|
+
*/
|
|
9
|
+
import React from 'react';
|
|
10
|
+
interface Message {
|
|
11
|
+
id: string;
|
|
12
|
+
text: string;
|
|
13
|
+
type: 'user' | 'ai' | 'system';
|
|
14
|
+
timestamp: string;
|
|
15
|
+
}
|
|
16
|
+
interface ChatBubbleProps {
|
|
17
|
+
messages: Message[];
|
|
18
|
+
onSendMessage: (message: string) => void;
|
|
19
|
+
onClearChat?: () => void;
|
|
20
|
+
}
|
|
21
|
+
export declare const ChatBubble: React.FC<ChatBubbleProps>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=ChatBubble.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatBubble.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/react/chat/ChatBubble.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAgB3D,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAID,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0RhD,CAAC"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent Chat Bubble Component
|
|
3
|
+
*
|
|
4
|
+
* Fixed position chat bubble in lower right corner that:
|
|
5
|
+
* - Appears on every page
|
|
6
|
+
* - Expands/collapses without blocking content
|
|
7
|
+
* - Provides AI interface for tool execution
|
|
8
|
+
*/
|
|
9
|
+
import React, { useState, useRef, useEffect } from 'react';
|
|
10
|
+
import { Components } from '../../../../names/Components.js';
|
|
11
|
+
// Chat component names (use the flat Components namespace)
|
|
12
|
+
const ChatNames = {
|
|
13
|
+
bubble: Components.ChatToggleButton,
|
|
14
|
+
input: Components.ChatInput,
|
|
15
|
+
sendButton: Components.ChatSendButton,
|
|
16
|
+
clearButton: Components.ChatClearButton,
|
|
17
|
+
};
|
|
18
|
+
// Mock useChatInput for now - this should be injected via props or context
|
|
19
|
+
const useChatInput = () => ({
|
|
20
|
+
registerInput: (callback) => { }
|
|
21
|
+
});
|
|
22
|
+
const CHAT_EXPANDED_KEY = 'supernal-chat-expanded';
|
|
23
|
+
export const ChatBubble = ({ messages, onSendMessage, onClearChat }) => {
|
|
24
|
+
// Initialize with default value (true) for both server and client to prevent hydration mismatch
|
|
25
|
+
const [isExpanded, setIsExpanded] = useState(true);
|
|
26
|
+
const [inputValue, setInputValue] = useState('');
|
|
27
|
+
const [lastReadMessageCount, setLastReadMessageCount] = useState(0);
|
|
28
|
+
const [showWelcome, setShowWelcome] = useState(messages.length === 0);
|
|
29
|
+
const messagesEndRef = useRef(null);
|
|
30
|
+
const inputRef = useRef(null);
|
|
31
|
+
// Load expanded state from localStorage after hydration
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
try {
|
|
34
|
+
const stored = localStorage.getItem(CHAT_EXPANDED_KEY);
|
|
35
|
+
if (stored !== null) {
|
|
36
|
+
setIsExpanded(JSON.parse(stored));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Keep default value
|
|
41
|
+
}
|
|
42
|
+
}, []);
|
|
43
|
+
// Register with chat input context
|
|
44
|
+
const { registerInput } = useChatInput();
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
registerInput((text, submit = false) => {
|
|
47
|
+
setInputValue(text);
|
|
48
|
+
if (!isExpanded) {
|
|
49
|
+
setIsExpanded(true);
|
|
50
|
+
}
|
|
51
|
+
// Auto-focus and submit if requested
|
|
52
|
+
setTimeout(() => {
|
|
53
|
+
inputRef.current?.focus();
|
|
54
|
+
if (submit) {
|
|
55
|
+
onSendMessage(text);
|
|
56
|
+
setInputValue('');
|
|
57
|
+
}
|
|
58
|
+
}, 100);
|
|
59
|
+
});
|
|
60
|
+
}, [registerInput, onSendMessage, isExpanded]);
|
|
61
|
+
// Track unread messages
|
|
62
|
+
const unreadCount = Math.max(0, messages.length - lastReadMessageCount);
|
|
63
|
+
const hasUnread = unreadCount > 0 && !isExpanded;
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
if (isExpanded) {
|
|
66
|
+
// Position at bottom without scrolling animation
|
|
67
|
+
messagesEndRef.current?.scrollIntoView({ behavior: 'auto' });
|
|
68
|
+
// Mark all messages as read when chat is expanded
|
|
69
|
+
setLastReadMessageCount(messages.length);
|
|
70
|
+
// Hide welcome if messages exist
|
|
71
|
+
if (messages.length > 0) {
|
|
72
|
+
setShowWelcome(false);
|
|
73
|
+
}
|
|
74
|
+
// Auto-focus input when expanded
|
|
75
|
+
inputRef.current?.focus();
|
|
76
|
+
}
|
|
77
|
+
}, [messages, isExpanded]);
|
|
78
|
+
// Auto-focus on mount
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
if (isExpanded) {
|
|
81
|
+
inputRef.current?.focus();
|
|
82
|
+
}
|
|
83
|
+
}, [isExpanded]);
|
|
84
|
+
// Command+/ keyboard shortcut to focus input
|
|
85
|
+
useEffect(() => {
|
|
86
|
+
const handleKeyDown = (e) => {
|
|
87
|
+
if ((e.metaKey || e.ctrlKey) && e.key === '/') {
|
|
88
|
+
e.preventDefault();
|
|
89
|
+
if (!isExpanded) {
|
|
90
|
+
setIsExpanded(true);
|
|
91
|
+
}
|
|
92
|
+
inputRef.current?.focus();
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
96
|
+
return () => window.removeEventListener('keydown', handleKeyDown);
|
|
97
|
+
}, [isExpanded]);
|
|
98
|
+
const handleSend = (e) => {
|
|
99
|
+
e.preventDefault();
|
|
100
|
+
if (!inputValue.trim())
|
|
101
|
+
return;
|
|
102
|
+
onSendMessage(inputValue.trim());
|
|
103
|
+
setInputValue('');
|
|
104
|
+
// Re-focus input after sending
|
|
105
|
+
setTimeout(() => inputRef.current?.focus(), 0);
|
|
106
|
+
};
|
|
107
|
+
const handleToggle = () => {
|
|
108
|
+
const newExpandedState = !isExpanded;
|
|
109
|
+
setIsExpanded(newExpandedState);
|
|
110
|
+
// Persist the expanded state to localStorage
|
|
111
|
+
try {
|
|
112
|
+
localStorage.setItem(CHAT_EXPANDED_KEY, JSON.stringify(newExpandedState));
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.error('Failed to save chat expanded state:', error);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
return (React.createElement(React.Fragment, null,
|
|
119
|
+
React.createElement("div", { className: "fixed bottom-4 right-4 sm:bottom-6 sm:right-6 z-50" },
|
|
120
|
+
isExpanded && (React.createElement("div", { className: "absolute bottom-16 right-0 w-[calc(100vw-2rem)] sm:w-[500px] lg:w-[600px] h-[calc(100vh-10rem)] sm:h-[600px] lg:h-[700px] bg-white rounded-lg shadow-2xl border border-gray-200 flex flex-col" },
|
|
121
|
+
React.createElement("div", { className: "flex items-center justify-between p-3 sm:p-4 border-b border-gray-200 bg-gradient-to-r from-blue-50 to-purple-50 rounded-t-lg" },
|
|
122
|
+
React.createElement("div", { className: "flex items-center space-x-2 sm:space-x-3" },
|
|
123
|
+
React.createElement("div", { className: "relative" },
|
|
124
|
+
React.createElement("div", { className: "w-8 h-8 sm:w-10 sm:h-10 bg-gradient-to-br from-blue-500 to-purple-600 rounded-full flex items-center justify-center" },
|
|
125
|
+
React.createElement("span", { className: "text-white text-base sm:text-lg" }, "\uD83E\uDD16")),
|
|
126
|
+
React.createElement("div", { className: "absolute -bottom-1 -right-1 w-3 h-3 sm:w-4 sm:h-4 bg-green-500 rounded-full border-2 border-white" })),
|
|
127
|
+
React.createElement("div", null,
|
|
128
|
+
React.createElement("h3", { className: "font-bold text-gray-900 text-sm sm:text-base" }, "Supernal AI Interface"),
|
|
129
|
+
React.createElement("p", { className: "text-xs text-gray-600 hidden sm:block" }, "I'm a TOOL system AI can use to control this site"))),
|
|
130
|
+
React.createElement("div", { className: "flex items-center space-x-1" },
|
|
131
|
+
onClearChat && (React.createElement("button", { onClick: onClearChat, className: "p-1 text-gray-400 hover:text-gray-600 transition-colors", title: "Clear chat", "data-testid": ChatNames.clearButton },
|
|
132
|
+
React.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
133
|
+
React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" })))),
|
|
134
|
+
React.createElement("button", { onClick: handleToggle, className: "p-1 text-gray-400 hover:text-gray-600 transition-colors", title: "Minimize chat" },
|
|
135
|
+
React.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
136
|
+
React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))))),
|
|
137
|
+
React.createElement("div", { className: "flex-1 overflow-y-auto p-3 sm:p-4 space-y-3" },
|
|
138
|
+
showWelcome && messages.length === 0 && (React.createElement("div", { className: "bg-gradient-to-br from-blue-50 to-purple-50 p-3 sm:p-4 rounded-lg border border-blue-200 mb-4" },
|
|
139
|
+
React.createElement("h4", { className: "font-bold text-gray-900 mb-2 text-xs sm:text-sm" }, "\uD83D\uDC4B Welcome! I'm NOT an AI"),
|
|
140
|
+
React.createElement("p", { className: "text-xs text-gray-700 mb-3" },
|
|
141
|
+
"I'm a ",
|
|
142
|
+
React.createElement("strong", null, "tool system"),
|
|
143
|
+
" that AI assistants (like Claude, GPT) can use to navigate and control this site. This enables ",
|
|
144
|
+
React.createElement("strong", null, "agentic UX"),
|
|
145
|
+
" \u2014 instead of clicking around, you tell an AI what you want, and it uses me to do it."),
|
|
146
|
+
React.createElement("div", { className: "bg-white p-2 sm:p-3 rounded border border-gray-200 mb-3" },
|
|
147
|
+
React.createElement("p", { className: "text-xs font-medium text-gray-900 mb-2" }, "Try these commands:"),
|
|
148
|
+
React.createElement("div", { className: "space-y-1" }, [
|
|
149
|
+
{ text: 'open the docs', desc: 'Navigate to documentation' },
|
|
150
|
+
{ text: 'show me the story system', desc: 'View story system guide' },
|
|
151
|
+
{ text: 'go to examples', desc: 'Browse code examples' },
|
|
152
|
+
].map((cmd, idx) => (React.createElement("button", { key: idx, onClick: () => {
|
|
153
|
+
setInputValue(cmd.text);
|
|
154
|
+
setShowWelcome(false);
|
|
155
|
+
setTimeout(() => inputRef.current?.focus(), 0);
|
|
156
|
+
}, className: "w-full text-left px-2 py-1.5 rounded hover:bg-blue-50 transition-colors group" },
|
|
157
|
+
React.createElement("div", { className: "text-xs font-mono text-blue-700 group-hover:text-blue-900" },
|
|
158
|
+
"\"",
|
|
159
|
+
cmd.text,
|
|
160
|
+
"\""),
|
|
161
|
+
React.createElement("div", { className: "text-xs text-gray-500 hidden sm:block" }, cmd.desc)))))),
|
|
162
|
+
React.createElement("p", { className: "text-xs text-gray-600 italic" }, "Type a command or click a suggestion above to start"))),
|
|
163
|
+
messages.map((message) => (React.createElement("div", { key: message.id, className: "flex flex-col" },
|
|
164
|
+
React.createElement("div", { className: `inline-block px-3 py-2 rounded-lg max-w-[85%] sm:max-w-xs text-xs sm:text-sm ${message.type === 'user'
|
|
165
|
+
? 'bg-blue-600 text-white ml-auto'
|
|
166
|
+
: message.type === 'ai'
|
|
167
|
+
? 'bg-gray-200 text-gray-800'
|
|
168
|
+
: 'bg-yellow-100 text-yellow-800 text-xs'}`, "data-testid": `chat-message-${message.type}` }, message.text),
|
|
169
|
+
React.createElement("div", { className: "text-xs text-gray-400 mt-1 px-1" }, typeof window !== 'undefined' ? new Date(message.timestamp).toLocaleTimeString() : '')))),
|
|
170
|
+
React.createElement("div", { ref: messagesEndRef })),
|
|
171
|
+
React.createElement("form", { onSubmit: handleSend, className: "p-3 sm:p-4 border-t border-gray-200" },
|
|
172
|
+
React.createElement("div", { className: "flex space-x-2" },
|
|
173
|
+
React.createElement("input", { ref: inputRef, type: "text", value: inputValue, onChange: (e) => setInputValue(e.target.value), placeholder: "Try: toggle notifications", className: "flex-1 px-3 py-2 text-xs sm:text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent text-gray-800", "data-testid": ChatNames.input }),
|
|
174
|
+
React.createElement("button", { type: "submit", disabled: !inputValue.trim(), className: "px-3 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:bg-gray-300 disabled:cursor-not-allowed transition-colors text-xs sm:text-sm font-medium", "data-testid": ChatNames.sendButton }, "Execute")),
|
|
175
|
+
React.createElement("div", { className: "mt-2 text-xs text-gray-500 hidden sm:block" },
|
|
176
|
+
React.createElement("strong", null, "Demo:"),
|
|
177
|
+
" Commands execute @Tool methods and update widgets above")))),
|
|
178
|
+
React.createElement("button", { onClick: handleToggle, className: "absolute bottom-0 right-0 w-12 h-12 sm:w-14 sm:h-14 bg-blue-600 hover:bg-blue-700 text-white rounded-full shadow-lg transition-all duration-200 flex items-center justify-center", "data-testid": ChatNames.bubble, title: isExpanded ? 'Minimize chat' : 'Open AI chat' }, isExpanded ? (React.createElement("svg", { className: "w-5 h-5 sm:w-6 sm:h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
179
|
+
React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))) : (React.createElement("svg", { className: "w-5 h-5 sm:w-6 sm:h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
180
|
+
React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z" })))),
|
|
181
|
+
hasUnread && (React.createElement("div", { className: "absolute -top-1 -right-1 w-4 h-4 sm:w-5 sm:h-5 bg-red-500 rounded-full flex items-center justify-center animate-pulse", "data-testid": "unread-indicator" },
|
|
182
|
+
React.createElement("span", { className: "text-xs text-white font-bold" }, unreadCount > 9 ? '9+' : unreadCount))))));
|
|
183
|
+
};
|
|
184
|
+
//# sourceMappingURL=ChatBubble.js.map
|