@nexus-ai-nexoralabs/cli 0.1.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/.env.example +16 -0
- package/LICENSE +21 -0
- package/README.md +106 -0
- package/dist/api/index.d.ts +81 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +224 -0
- package/dist/api/index.js.map +1 -0
- package/dist/chat/chatService.d.ts +49 -0
- package/dist/chat/chatService.d.ts.map +1 -0
- package/dist/chat/chatService.js +163 -0
- package/dist/chat/chatService.js.map +1 -0
- package/dist/chat/contextBuilder.d.ts +19 -0
- package/dist/chat/contextBuilder.d.ts.map +1 -0
- package/dist/chat/contextBuilder.js +43 -0
- package/dist/chat/contextBuilder.js.map +1 -0
- package/dist/chat/conversationService.d.ts +25 -0
- package/dist/chat/conversationService.d.ts.map +1 -0
- package/dist/chat/conversationService.js +55 -0
- package/dist/chat/conversationService.js.map +1 -0
- package/dist/chat/index.d.ts +6 -0
- package/dist/chat/index.d.ts.map +1 -0
- package/dist/chat/index.js +6 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/chat/messageService.d.ts +18 -0
- package/dist/chat/messageService.d.ts.map +1 -0
- package/dist/chat/messageService.js +26 -0
- package/dist/chat/messageService.js.map +1 -0
- package/dist/chat/promptTemplates.d.ts +19 -0
- package/dist/chat/promptTemplates.d.ts.map +1 -0
- package/dist/chat/promptTemplates.js +32 -0
- package/dist/chat/promptTemplates.js.map +1 -0
- package/dist/cli/agentRunner.d.ts +126 -0
- package/dist/cli/agentRunner.d.ts.map +1 -0
- package/dist/cli/agentRunner.js +892 -0
- package/dist/cli/agentRunner.js.map +1 -0
- package/dist/cli/bin.d.ts +14 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +20 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/inputEngine.d.ts +76 -0
- package/dist/cli/inputEngine.d.ts.map +1 -0
- package/dist/cli/inputEngine.js +281 -0
- package/dist/cli/inputEngine.js.map +1 -0
- package/dist/cli/main.d.ts +9 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +144 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/uiFormatters.d.ts +108 -0
- package/dist/cli/uiFormatters.d.ts.map +1 -0
- package/dist/cli/uiFormatters.js +925 -0
- package/dist/cli/uiFormatters.js.map +1 -0
- package/dist/common/logger.d.ts +13 -0
- package/dist/common/logger.d.ts.map +1 -0
- package/dist/common/logger.js +43 -0
- package/dist/common/logger.js.map +1 -0
- package/dist/config/firstRunHealthCheck.d.ts +50 -0
- package/dist/config/firstRunHealthCheck.d.ts.map +1 -0
- package/dist/config/firstRunHealthCheck.js +196 -0
- package/dist/config/firstRunHealthCheck.js.map +1 -0
- package/dist/config/firstRunService.d.ts +53 -0
- package/dist/config/firstRunService.d.ts.map +1 -0
- package/dist/config/firstRunService.js +93 -0
- package/dist/config/firstRunService.js.map +1 -0
- package/dist/config/index.d.ts +30 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +65 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/productionPaths.d.ts +34 -0
- package/dist/config/productionPaths.d.ts.map +1 -0
- package/dist/config/productionPaths.js +95 -0
- package/dist/config/productionPaths.js.map +1 -0
- package/dist/config/workspaceService.d.ts +42 -0
- package/dist/config/workspaceService.d.ts.map +1 -0
- package/dist/config/workspaceService.js +218 -0
- package/dist/config/workspaceService.js.map +1 -0
- package/dist/desktop/appWindow.d.ts +21 -0
- package/dist/desktop/appWindow.d.ts.map +1 -0
- package/dist/desktop/appWindow.js +77 -0
- package/dist/desktop/appWindow.js.map +1 -0
- package/dist/desktop/main.d.ts +14 -0
- package/dist/desktop/main.d.ts.map +1 -0
- package/dist/desktop/main.js +90 -0
- package/dist/desktop/main.js.map +1 -0
- package/dist/desktop/preload.d.ts +14 -0
- package/dist/desktop/preload.d.ts.map +1 -0
- package/dist/desktop/preload.js +20 -0
- package/dist/desktop/preload.js.map +1 -0
- package/dist/intelligence/index.d.ts +33 -0
- package/dist/intelligence/index.d.ts.map +1 -0
- package/dist/intelligence/index.js +82 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/intelligence/modelGateway.d.ts +35 -0
- package/dist/intelligence/modelGateway.d.ts.map +1 -0
- package/dist/intelligence/modelGateway.js +123 -0
- package/dist/intelligence/modelGateway.js.map +1 -0
- package/dist/intelligence/modelRegistry.d.ts +17 -0
- package/dist/intelligence/modelRegistry.d.ts.map +1 -0
- package/dist/intelligence/modelRegistry.js +87 -0
- package/dist/intelligence/modelRegistry.js.map +1 -0
- package/dist/intelligence/modelRouter.d.ts +76 -0
- package/dist/intelligence/modelRouter.d.ts.map +1 -0
- package/dist/intelligence/modelRouter.js +256 -0
- package/dist/intelligence/modelRouter.js.map +1 -0
- package/dist/intelligence/ollamaAdapter.d.ts +49 -0
- package/dist/intelligence/ollamaAdapter.d.ts.map +1 -0
- package/dist/intelligence/ollamaAdapter.js +197 -0
- package/dist/intelligence/ollamaAdapter.js.map +1 -0
- package/dist/intelligence/prototype/runPrototype.d.ts +14 -0
- package/dist/intelligence/prototype/runPrototype.d.ts.map +1 -0
- package/dist/intelligence/prototype/runPrototype.js +87 -0
- package/dist/intelligence/prototype/runPrototype.js.map +1 -0
- package/dist/intelligence/providers/embeddedInferenceProvider.d.ts +29 -0
- package/dist/intelligence/providers/embeddedInferenceProvider.d.ts.map +1 -0
- package/dist/intelligence/providers/embeddedInferenceProvider.js +162 -0
- package/dist/intelligence/providers/embeddedInferenceProvider.js.map +1 -0
- package/dist/intelligence/providers/index.d.ts +4 -0
- package/dist/intelligence/providers/index.d.ts.map +1 -0
- package/dist/intelligence/providers/index.js +4 -0
- package/dist/intelligence/providers/index.js.map +1 -0
- package/dist/intelligence/providers/inferenceProvider.d.ts +98 -0
- package/dist/intelligence/providers/inferenceProvider.d.ts.map +1 -0
- package/dist/intelligence/providers/inferenceProvider.js +9 -0
- package/dist/intelligence/providers/inferenceProvider.js.map +1 -0
- package/dist/intelligence/providers/ollamaInferenceProvider.d.ts +17 -0
- package/dist/intelligence/providers/ollamaInferenceProvider.d.ts.map +1 -0
- package/dist/intelligence/providers/ollamaInferenceProvider.js +103 -0
- package/dist/intelligence/providers/ollamaInferenceProvider.js.map +1 -0
- package/dist/intelligence/provisioning/hardwareDetector.d.ts +5 -0
- package/dist/intelligence/provisioning/hardwareDetector.d.ts.map +1 -0
- package/dist/intelligence/provisioning/hardwareDetector.js +48 -0
- package/dist/intelligence/provisioning/hardwareDetector.js.map +1 -0
- package/dist/intelligence/provisioning/index.d.ts +12 -0
- package/dist/intelligence/provisioning/index.d.ts.map +1 -0
- package/dist/intelligence/provisioning/index.js +12 -0
- package/dist/intelligence/provisioning/index.js.map +1 -0
- package/dist/intelligence/provisioning/modelDownloader.d.ts +22 -0
- package/dist/intelligence/provisioning/modelDownloader.d.ts.map +1 -0
- package/dist/intelligence/provisioning/modelDownloader.js +134 -0
- package/dist/intelligence/provisioning/modelDownloader.js.map +1 -0
- package/dist/intelligence/provisioning/modelManifest.d.ts +10 -0
- package/dist/intelligence/provisioning/modelManifest.d.ts.map +1 -0
- package/dist/intelligence/provisioning/modelManifest.js +72 -0
- package/dist/intelligence/provisioning/modelManifest.js.map +1 -0
- package/dist/intelligence/provisioning/modelSelector.d.ts +14 -0
- package/dist/intelligence/provisioning/modelSelector.d.ts.map +1 -0
- package/dist/intelligence/provisioning/modelSelector.js +40 -0
- package/dist/intelligence/provisioning/modelSelector.js.map +1 -0
- package/dist/intelligence/provisioning/modelStorage.d.ts +12 -0
- package/dist/intelligence/provisioning/modelStorage.d.ts.map +1 -0
- package/dist/intelligence/provisioning/modelStorage.js +66 -0
- package/dist/intelligence/provisioning/modelStorage.js.map +1 -0
- package/dist/intelligence/provisioning/modelUpdater.d.ts +29 -0
- package/dist/intelligence/provisioning/modelUpdater.d.ts.map +1 -0
- package/dist/intelligence/provisioning/modelUpdater.js +89 -0
- package/dist/intelligence/provisioning/modelUpdater.js.map +1 -0
- package/dist/intelligence/provisioning/modelVerifier.d.ts +16 -0
- package/dist/intelligence/provisioning/modelVerifier.d.ts.map +1 -0
- package/dist/intelligence/provisioning/modelVerifier.js +108 -0
- package/dist/intelligence/provisioning/modelVerifier.js.map +1 -0
- package/dist/intelligence/provisioning/nativeRuntime.d.ts +18 -0
- package/dist/intelligence/provisioning/nativeRuntime.d.ts.map +1 -0
- package/dist/intelligence/provisioning/nativeRuntime.js +78 -0
- package/dist/intelligence/provisioning/nativeRuntime.js.map +1 -0
- package/dist/intelligence/provisioning/platformDetector.d.ts +15 -0
- package/dist/intelligence/provisioning/platformDetector.d.ts.map +1 -0
- package/dist/intelligence/provisioning/platformDetector.js +40 -0
- package/dist/intelligence/provisioning/platformDetector.js.map +1 -0
- package/dist/intelligence/provisioning/setupState.d.ts +10 -0
- package/dist/intelligence/provisioning/setupState.d.ts.map +1 -0
- package/dist/intelligence/provisioning/setupState.js +59 -0
- package/dist/intelligence/provisioning/setupState.js.map +1 -0
- package/dist/intelligence/provisioning/types.d.ts +51 -0
- package/dist/intelligence/provisioning/types.d.ts.map +1 -0
- package/dist/intelligence/provisioning/types.js +2 -0
- package/dist/intelligence/provisioning/types.js.map +1 -0
- package/dist/intelligence/runtime/embeddedRuntimeAdapter.d.ts +26 -0
- package/dist/intelligence/runtime/embeddedRuntimeAdapter.d.ts.map +1 -0
- package/dist/intelligence/runtime/embeddedRuntimeAdapter.js +119 -0
- package/dist/intelligence/runtime/embeddedRuntimeAdapter.js.map +1 -0
- package/dist/intelligence/runtime/ollamaRuntimeAdapter.d.ts +28 -0
- package/dist/intelligence/runtime/ollamaRuntimeAdapter.d.ts.map +1 -0
- package/dist/intelligence/runtime/ollamaRuntimeAdapter.js +131 -0
- package/dist/intelligence/runtime/ollamaRuntimeAdapter.js.map +1 -0
- package/dist/intelligence/runtime/runtimeManager.d.ts +37 -0
- package/dist/intelligence/runtime/runtimeManager.d.ts.map +1 -0
- package/dist/intelligence/runtime/runtimeManager.js +168 -0
- package/dist/intelligence/runtime/runtimeManager.js.map +1 -0
- package/dist/intelligence/runtime/types.d.ts +56 -0
- package/dist/intelligence/runtime/types.d.ts.map +1 -0
- package/dist/intelligence/runtime/types.js +7 -0
- package/dist/intelligence/runtime/types.js.map +1 -0
- package/dist/knowledge/chunker.d.ts +18 -0
- package/dist/knowledge/chunker.d.ts.map +1 -0
- package/dist/knowledge/chunker.js +55 -0
- package/dist/knowledge/chunker.js.map +1 -0
- package/dist/knowledge/citationService.d.ts +26 -0
- package/dist/knowledge/citationService.d.ts.map +1 -0
- package/dist/knowledge/citationService.js +47 -0
- package/dist/knowledge/citationService.js.map +1 -0
- package/dist/knowledge/embeddings.d.ts +11 -0
- package/dist/knowledge/embeddings.d.ts.map +1 -0
- package/dist/knowledge/embeddings.js +28 -0
- package/dist/knowledge/embeddings.js.map +1 -0
- package/dist/knowledge/hybridSearch.d.ts +13 -0
- package/dist/knowledge/hybridSearch.d.ts.map +1 -0
- package/dist/knowledge/hybridSearch.js +38 -0
- package/dist/knowledge/hybridSearch.js.map +1 -0
- package/dist/knowledge/index.d.ts +25 -0
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +37 -0
- package/dist/knowledge/index.js.map +1 -0
- package/dist/knowledge/parsers.d.ts +20 -0
- package/dist/knowledge/parsers.d.ts.map +1 -0
- package/dist/knowledge/parsers.js +94 -0
- package/dist/knowledge/parsers.js.map +1 -0
- package/dist/knowledge/ragEngine.d.ts +24 -0
- package/dist/knowledge/ragEngine.d.ts.map +1 -0
- package/dist/knowledge/ragEngine.js +121 -0
- package/dist/knowledge/ragEngine.js.map +1 -0
- package/dist/knowledge/reranker.d.ts +10 -0
- package/dist/knowledge/reranker.d.ts.map +1 -0
- package/dist/knowledge/reranker.js +11 -0
- package/dist/knowledge/reranker.js.map +1 -0
- package/dist/knowledge/vectorStore.d.ts +22 -0
- package/dist/knowledge/vectorStore.d.ts.map +1 -0
- package/dist/knowledge/vectorStore.js +74 -0
- package/dist/knowledge/vectorStore.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +113 -0
- package/dist/main.js.map +1 -0
- package/dist/orchestration/agentExecutionService.d.ts +29 -0
- package/dist/orchestration/agentExecutionService.d.ts.map +1 -0
- package/dist/orchestration/agentExecutionService.js +306 -0
- package/dist/orchestration/agentExecutionService.js.map +1 -0
- package/dist/orchestration/agentStateMachine.d.ts +29 -0
- package/dist/orchestration/agentStateMachine.d.ts.map +1 -0
- package/dist/orchestration/agentStateMachine.js +153 -0
- package/dist/orchestration/agentStateMachine.js.map +1 -0
- package/dist/orchestration/agentTaskService.d.ts +44 -0
- package/dist/orchestration/agentTaskService.d.ts.map +1 -0
- package/dist/orchestration/agentTaskService.js +168 -0
- package/dist/orchestration/agentTaskService.js.map +1 -0
- package/dist/orchestration/codingAgentDiscovery.d.ts +32 -0
- package/dist/orchestration/codingAgentDiscovery.d.ts.map +1 -0
- package/dist/orchestration/codingAgentDiscovery.js +148 -0
- package/dist/orchestration/codingAgentDiscovery.js.map +1 -0
- package/dist/orchestration/codingAgentService.d.ts +40 -0
- package/dist/orchestration/codingAgentService.d.ts.map +1 -0
- package/dist/orchestration/codingAgentService.js +319 -0
- package/dist/orchestration/codingAgentService.js.map +1 -0
- package/dist/orchestration/codingAgentTypes.d.ts +111 -0
- package/dist/orchestration/codingAgentTypes.d.ts.map +1 -0
- package/dist/orchestration/codingAgentTypes.js +32 -0
- package/dist/orchestration/codingAgentTypes.js.map +1 -0
- package/dist/orchestration/codingAgentVerifier.d.ts +34 -0
- package/dist/orchestration/codingAgentVerifier.d.ts.map +1 -0
- package/dist/orchestration/codingAgentVerifier.js +109 -0
- package/dist/orchestration/codingAgentVerifier.js.map +1 -0
- package/dist/orchestration/codingRepairService.d.ts +34 -0
- package/dist/orchestration/codingRepairService.d.ts.map +1 -0
- package/dist/orchestration/codingRepairService.js +120 -0
- package/dist/orchestration/codingRepairService.js.map +1 -0
- package/dist/orchestration/goalCompletionVerifier.d.ts +36 -0
- package/dist/orchestration/goalCompletionVerifier.d.ts.map +1 -0
- package/dist/orchestration/goalCompletionVerifier.js +165 -0
- package/dist/orchestration/goalCompletionVerifier.js.map +1 -0
- package/dist/orchestration/humanApprovalService.d.ts +89 -0
- package/dist/orchestration/humanApprovalService.d.ts.map +1 -0
- package/dist/orchestration/humanApprovalService.js +346 -0
- package/dist/orchestration/humanApprovalService.js.map +1 -0
- package/dist/orchestration/index.d.ts +47 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +67 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/planner.d.ts +105 -0
- package/dist/orchestration/planner.d.ts.map +1 -0
- package/dist/orchestration/planner.js +692 -0
- package/dist/orchestration/planner.js.map +1 -0
- package/dist/orchestration/types.d.ts +109 -0
- package/dist/orchestration/types.d.ts.map +1 -0
- package/dist/orchestration/types.js +20 -0
- package/dist/orchestration/types.js.map +1 -0
- package/dist/preview/previewServer.d.ts +39 -0
- package/dist/preview/previewServer.d.ts.map +1 -0
- package/dist/preview/previewServer.js +228 -0
- package/dist/preview/previewServer.js.map +1 -0
- package/dist/preview/previewService.d.ts +43 -0
- package/dist/preview/previewService.d.ts.map +1 -0
- package/dist/preview/previewService.js +289 -0
- package/dist/preview/previewService.js.map +1 -0
- package/dist/preview/previewTypes.d.ts +35 -0
- package/dist/preview/previewTypes.d.ts.map +1 -0
- package/dist/preview/previewTypes.js +5 -0
- package/dist/preview/previewTypes.js.map +1 -0
- package/dist/storage/database.d.ts +12 -0
- package/dist/storage/database.d.ts.map +1 -0
- package/dist/storage/database.js +46 -0
- package/dist/storage/database.js.map +1 -0
- package/dist/storage/health.d.ts +17 -0
- package/dist/storage/health.d.ts.map +1 -0
- package/dist/storage/health.js +48 -0
- package/dist/storage/health.js.map +1 -0
- package/dist/storage/index.d.ts +45 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +96 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/migration.d.ts +17 -0
- package/dist/storage/migration.d.ts.map +1 -0
- package/dist/storage/migration.js +354 -0
- package/dist/storage/migration.js.map +1 -0
- package/dist/storage/projectService.d.ts +19 -0
- package/dist/storage/projectService.d.ts.map +1 -0
- package/dist/storage/projectService.js +29 -0
- package/dist/storage/projectService.js.map +1 -0
- package/dist/storage/repositories/agentTaskRepository.d.ts +34 -0
- package/dist/storage/repositories/agentTaskRepository.d.ts.map +1 -0
- package/dist/storage/repositories/agentTaskRepository.js +128 -0
- package/dist/storage/repositories/agentTaskRepository.js.map +1 -0
- package/dist/storage/repositories/approvalRepository.d.ts +20 -0
- package/dist/storage/repositories/approvalRepository.d.ts.map +1 -0
- package/dist/storage/repositories/approvalRepository.js +116 -0
- package/dist/storage/repositories/approvalRepository.js.map +1 -0
- package/dist/storage/repositories/conversationRepository.d.ts +16 -0
- package/dist/storage/repositories/conversationRepository.d.ts.map +1 -0
- package/dist/storage/repositories/conversationRepository.js +50 -0
- package/dist/storage/repositories/conversationRepository.js.map +1 -0
- package/dist/storage/repositories/knowledgeRepository.d.ts +109 -0
- package/dist/storage/repositories/knowledgeRepository.d.ts.map +1 -0
- package/dist/storage/repositories/knowledgeRepository.js +177 -0
- package/dist/storage/repositories/knowledgeRepository.js.map +1 -0
- package/dist/storage/repositories/messageRepository.d.ts +13 -0
- package/dist/storage/repositories/messageRepository.d.ts.map +1 -0
- package/dist/storage/repositories/messageRepository.js +39 -0
- package/dist/storage/repositories/messageRepository.js.map +1 -0
- package/dist/storage/repositories/modelsRepository.d.ts +39 -0
- package/dist/storage/repositories/modelsRepository.d.ts.map +1 -0
- package/dist/storage/repositories/modelsRepository.js +92 -0
- package/dist/storage/repositories/modelsRepository.js.map +1 -0
- package/dist/storage/repositories/projectRepository.d.ts +14 -0
- package/dist/storage/repositories/projectRepository.d.ts.map +1 -0
- package/dist/storage/repositories/projectRepository.js +44 -0
- package/dist/storage/repositories/projectRepository.js.map +1 -0
- package/dist/storage/repositories/settingsRepository.d.ts +10 -0
- package/dist/storage/repositories/settingsRepository.d.ts.map +1 -0
- package/dist/storage/repositories/settingsRepository.js +27 -0
- package/dist/storage/repositories/settingsRepository.js.map +1 -0
- package/dist/storage/repositories/types.d.ts +56 -0
- package/dist/storage/repositories/types.d.ts.map +1 -0
- package/dist/storage/repositories/types.js +2 -0
- package/dist/storage/repositories/types.js.map +1 -0
- package/dist/tools/adapters/filesystemAdapter.d.ts +121 -0
- package/dist/tools/adapters/filesystemAdapter.d.ts.map +1 -0
- package/dist/tools/adapters/filesystemAdapter.js +808 -0
- package/dist/tools/adapters/filesystemAdapter.js.map +1 -0
- package/dist/tools/adapters/terminalAdapter.d.ts +67 -0
- package/dist/tools/adapters/terminalAdapter.d.ts.map +1 -0
- package/dist/tools/adapters/terminalAdapter.js +487 -0
- package/dist/tools/adapters/terminalAdapter.js.map +1 -0
- package/dist/tools/adapters/terminalCommandPolicy.d.ts +44 -0
- package/dist/tools/adapters/terminalCommandPolicy.d.ts.map +1 -0
- package/dist/tools/adapters/terminalCommandPolicy.js +422 -0
- package/dist/tools/adapters/terminalCommandPolicy.js.map +1 -0
- package/dist/tools/adapters/terminalTypes.d.ts +111 -0
- package/dist/tools/adapters/terminalTypes.d.ts.map +1 -0
- package/dist/tools/adapters/terminalTypes.js +26 -0
- package/dist/tools/adapters/terminalTypes.js.map +1 -0
- package/dist/tools/approvalGate.d.ts +24 -0
- package/dist/tools/approvalGate.d.ts.map +1 -0
- package/dist/tools/approvalGate.js +137 -0
- package/dist/tools/approvalGate.js.map +1 -0
- package/dist/tools/approvalPolicyEngine.d.ts +32 -0
- package/dist/tools/approvalPolicyEngine.d.ts.map +1 -0
- package/dist/tools/approvalPolicyEngine.js +141 -0
- package/dist/tools/approvalPolicyEngine.js.map +1 -0
- package/dist/tools/approvalTypes.d.ts +67 -0
- package/dist/tools/approvalTypes.d.ts.map +1 -0
- package/dist/tools/approvalTypes.js +23 -0
- package/dist/tools/approvalTypes.js.map +1 -0
- package/dist/tools/index.d.ts +72 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +353 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/permissionEngine.d.ts +27 -0
- package/dist/tools/permissionEngine.d.ts.map +1 -0
- package/dist/tools/permissionEngine.js +130 -0
- package/dist/tools/permissionEngine.js.map +1 -0
- package/dist/tools/toolExecutor.d.ts +37 -0
- package/dist/tools/toolExecutor.d.ts.map +1 -0
- package/dist/tools/toolExecutor.js +440 -0
- package/dist/tools/toolExecutor.js.map +1 -0
- package/dist/tools/toolRegistry.d.ts +34 -0
- package/dist/tools/toolRegistry.d.ts.map +1 -0
- package/dist/tools/toolRegistry.js +92 -0
- package/dist/tools/toolRegistry.js.map +1 -0
- package/dist/tools/types.d.ts +82 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +33 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/ui/public/app.js +777 -0
- package/dist/ui/public/index.html +117 -0
- package/dist/ui/public/styles.css +413 -0
- package/dist/ui/server.d.ts +27 -0
- package/dist/ui/server.d.ts.map +1 -0
- package/dist/ui/server.js +373 -0
- package/dist/ui/server.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS AI — Approval Repository
|
|
3
|
+
*
|
|
4
|
+
* Provides SQLite persistence for P5-F human approval requests.
|
|
5
|
+
*/
|
|
6
|
+
function rowToApproval(row) {
|
|
7
|
+
return {
|
|
8
|
+
approvalId: row.approvalId,
|
|
9
|
+
taskId: row.taskId,
|
|
10
|
+
planId: row.planId ?? undefined,
|
|
11
|
+
stepId: row.stepId,
|
|
12
|
+
toolId: row.toolId,
|
|
13
|
+
riskLevel: row.riskLevel,
|
|
14
|
+
requestedCapability: row.requestedCapability,
|
|
15
|
+
status: row.status,
|
|
16
|
+
createdAt: row.createdAt,
|
|
17
|
+
resolvedAt: row.resolvedAt ?? undefined,
|
|
18
|
+
expiresAt: row.expiresAt,
|
|
19
|
+
decisionReason: row.decisionReason ?? undefined,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const SELECT_COLS = `
|
|
23
|
+
approval_id AS approvalId,
|
|
24
|
+
task_id AS taskId,
|
|
25
|
+
plan_id AS planId,
|
|
26
|
+
step_id AS stepId,
|
|
27
|
+
tool_id AS toolId,
|
|
28
|
+
risk_level AS riskLevel,
|
|
29
|
+
requested_capability AS requestedCapability,
|
|
30
|
+
status,
|
|
31
|
+
created_at AS createdAt,
|
|
32
|
+
resolved_at AS resolvedAt,
|
|
33
|
+
expires_at AS expiresAt,
|
|
34
|
+
decision_reason AS decisionReason
|
|
35
|
+
`;
|
|
36
|
+
export class ApprovalRepository {
|
|
37
|
+
db;
|
|
38
|
+
constructor(db) {
|
|
39
|
+
this.db = db;
|
|
40
|
+
}
|
|
41
|
+
create(request) {
|
|
42
|
+
this.db
|
|
43
|
+
.prepare(`INSERT INTO approval_requests
|
|
44
|
+
(approval_id, task_id, plan_id, step_id, tool_id, risk_level,
|
|
45
|
+
requested_capability, status, created_at, resolved_at, expires_at, decision_reason)
|
|
46
|
+
VALUES
|
|
47
|
+
(@approvalId, @taskId, @planId, @stepId, @toolId, @riskLevel,
|
|
48
|
+
@requestedCapability, @status, @createdAt, @resolvedAt, @expiresAt, @decisionReason)`)
|
|
49
|
+
.run({
|
|
50
|
+
approvalId: request.approvalId,
|
|
51
|
+
taskId: request.taskId,
|
|
52
|
+
planId: request.planId ?? null,
|
|
53
|
+
stepId: request.stepId,
|
|
54
|
+
toolId: request.toolId,
|
|
55
|
+
riskLevel: request.riskLevel,
|
|
56
|
+
requestedCapability: request.requestedCapability,
|
|
57
|
+
status: request.status,
|
|
58
|
+
createdAt: request.createdAt,
|
|
59
|
+
resolvedAt: request.resolvedAt ?? null,
|
|
60
|
+
expiresAt: request.expiresAt,
|
|
61
|
+
decisionReason: request.decisionReason ?? null,
|
|
62
|
+
});
|
|
63
|
+
return request;
|
|
64
|
+
}
|
|
65
|
+
findById(approvalId) {
|
|
66
|
+
const row = this.db
|
|
67
|
+
.prepare(`SELECT ${SELECT_COLS} FROM approval_requests WHERE approval_id = ?`)
|
|
68
|
+
.get(approvalId);
|
|
69
|
+
return row ? rowToApproval(row) : null;
|
|
70
|
+
}
|
|
71
|
+
findByTaskId(taskId) {
|
|
72
|
+
const rows = this.db
|
|
73
|
+
.prepare(`SELECT ${SELECT_COLS} FROM approval_requests WHERE task_id = ? ORDER BY created_at ASC`)
|
|
74
|
+
.all(taskId);
|
|
75
|
+
return rows.map(rowToApproval);
|
|
76
|
+
}
|
|
77
|
+
findPendingForStep(taskId, stepId) {
|
|
78
|
+
const row = this.db
|
|
79
|
+
.prepare(`SELECT ${SELECT_COLS} FROM approval_requests
|
|
80
|
+
WHERE task_id = ? AND step_id = ? AND status = 'pending'
|
|
81
|
+
ORDER BY created_at DESC LIMIT 1`)
|
|
82
|
+
.get(taskId, stepId);
|
|
83
|
+
return row ? rowToApproval(row) : null;
|
|
84
|
+
}
|
|
85
|
+
listPending() {
|
|
86
|
+
const rows = this.db
|
|
87
|
+
.prepare(`SELECT ${SELECT_COLS} FROM approval_requests WHERE status = 'pending' ORDER BY created_at DESC`)
|
|
88
|
+
.all();
|
|
89
|
+
return rows.map(rowToApproval);
|
|
90
|
+
}
|
|
91
|
+
updateStatus(approvalId, status, resolvedAt, decisionReason) {
|
|
92
|
+
const result = this.db
|
|
93
|
+
.prepare(`UPDATE approval_requests
|
|
94
|
+
SET status = ?, resolved_at = ?, decision_reason = COALESCE(?, decision_reason)
|
|
95
|
+
WHERE approval_id = ?`)
|
|
96
|
+
.run(status, resolvedAt ?? null, decisionReason ?? null, approvalId);
|
|
97
|
+
return result.changes > 0;
|
|
98
|
+
}
|
|
99
|
+
expireStaleApprovals(nowIso) {
|
|
100
|
+
const result = this.db
|
|
101
|
+
.prepare(`UPDATE approval_requests
|
|
102
|
+
SET status = 'expired', resolved_at = ?
|
|
103
|
+
WHERE status = 'pending' AND expires_at <= ?`)
|
|
104
|
+
.run(nowIso, nowIso);
|
|
105
|
+
return result.changes;
|
|
106
|
+
}
|
|
107
|
+
cancelPendingForTask(taskId, nowIso, reason = 'Task cancelled') {
|
|
108
|
+
const result = this.db
|
|
109
|
+
.prepare(`UPDATE approval_requests
|
|
110
|
+
SET status = 'cancelled', resolved_at = ?, decision_reason = ?
|
|
111
|
+
WHERE task_id = ? AND status = 'pending'`)
|
|
112
|
+
.run(nowIso, reason, taskId);
|
|
113
|
+
return result.changes;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=approvalRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvalRepository.js","sourceRoot":"","sources":["../../../src/storage/repositories/approvalRepository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqBH,SAAS,aAAa,CAAC,GAAuB;IAC5C,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS;QAC/B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAA0B;QACzC,mBAAmB,EAAE,GAAG,CAAC,mBAAqC;QAC9D,MAAM,EAAE,GAAG,CAAC,MAAwB;QACpC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;QACvC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,SAAS;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG;;;;;;;;;;;;;CAanB,CAAC;AAEF,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAEpC,MAAM,CAAC,OAAwB;QAC7B,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;gGAKwF,CACzF;aACA,GAAG,CAAC;YACH,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;YACtC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI;SAC/C,CAAC,CAAC;QAEL,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,UAAkB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,UAAU,WAAW,+CAA+C,CAAC;aAC7E,GAAG,CAAC,UAAU,CAAmC,CAAC;QAErD,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,UAAU,WAAW,mEAAmE,CAAC;aACjG,GAAG,CAAC,MAAM,CAAyB,CAAC;QAEvC,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,kBAAkB,CAAC,MAAc,EAAE,MAAc;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN,UAAU,WAAW;;0CAEa,CACnC;aACA,GAAG,CAAC,MAAM,EAAE,MAAM,CAAmC,CAAC;QAEzD,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,UAAU,WAAW,2EAA2E,CAAC;aACzG,GAAG,EAA0B,CAAC;QAEjC,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,YAAY,CACV,UAAkB,EAClB,MAAsB,EACtB,UAAmB,EACnB,cAAuB;QAEvB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CACN;;+BAEuB,CACxB;aACA,GAAG,CAAC,MAAM,EAAE,UAAU,IAAI,IAAI,EAAE,cAAc,IAAI,IAAI,EAAE,UAAU,CAAC,CAAC;QAEvE,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,oBAAoB,CAAC,MAAc;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CACN;;sDAE8C,CAC/C;aACA,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEvB,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,oBAAoB,CAAC,MAAc,EAAE,MAAc,EAAE,SAAiB,gBAAgB;QACpF,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CACN;;kDAE0C,CAC3C;aACA,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAE/B,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Database } from 'better-sqlite3';
|
|
2
|
+
import type { Conversation } from './types.js';
|
|
3
|
+
export declare class ConversationRepository {
|
|
4
|
+
private db;
|
|
5
|
+
constructor(db: Database);
|
|
6
|
+
create(conversation: Omit<Conversation, 'createdAt' | 'updatedAt' | 'archivedAt' | 'mode'> & {
|
|
7
|
+
mode?: string;
|
|
8
|
+
createdAt?: string;
|
|
9
|
+
updatedAt?: string;
|
|
10
|
+
archivedAt?: string | null;
|
|
11
|
+
}): Conversation;
|
|
12
|
+
findById(id: string): Conversation | null;
|
|
13
|
+
listByProject(projectId: string | null): Conversation[];
|
|
14
|
+
deleteById(id: string): boolean;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=conversationRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversationRepository.d.ts","sourceRoot":"","sources":["../../../src/storage/repositories/conversationRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,qBAAa,sBAAsB;IACrB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEhC,MAAM,CACJ,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,CAAC,GAAG;QACpF,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,GACA,YAAY;IAqBf,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IASzC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,EAAE;IAcvD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAKhC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export class ConversationRepository {
|
|
2
|
+
db;
|
|
3
|
+
constructor(db) {
|
|
4
|
+
this.db = db;
|
|
5
|
+
}
|
|
6
|
+
create(conversation) {
|
|
7
|
+
const now = new Date().toISOString();
|
|
8
|
+
const record = {
|
|
9
|
+
id: conversation.id,
|
|
10
|
+
projectId: conversation.projectId ?? null,
|
|
11
|
+
title: conversation.title,
|
|
12
|
+
mode: conversation.mode || 'chat',
|
|
13
|
+
createdAt: conversation.createdAt || now,
|
|
14
|
+
updatedAt: conversation.updatedAt || now,
|
|
15
|
+
archivedAt: conversation.archivedAt ?? null,
|
|
16
|
+
};
|
|
17
|
+
const stmt = this.db.prepare(`
|
|
18
|
+
INSERT INTO conversations (id, project_id, title, mode, created_at, updated_at, archived_at)
|
|
19
|
+
VALUES (@id, @projectId, @title, @mode, @createdAt, @updatedAt, @archivedAt)
|
|
20
|
+
`);
|
|
21
|
+
stmt.run(record);
|
|
22
|
+
return record;
|
|
23
|
+
}
|
|
24
|
+
findById(id) {
|
|
25
|
+
const stmt = this.db.prepare(`
|
|
26
|
+
SELECT id, project_id as projectId, title, mode, created_at as createdAt, updated_at as updatedAt, archived_at as archivedAt
|
|
27
|
+
FROM conversations WHERE id = ?
|
|
28
|
+
`);
|
|
29
|
+
const row = stmt.get(id);
|
|
30
|
+
return row || null;
|
|
31
|
+
}
|
|
32
|
+
listByProject(projectId) {
|
|
33
|
+
const stmt = projectId
|
|
34
|
+
? this.db.prepare(`
|
|
35
|
+
SELECT id, project_id as projectId, title, mode, created_at as createdAt, updated_at as updatedAt, archived_at as archivedAt
|
|
36
|
+
FROM conversations WHERE project_id = ? ORDER BY updated_at DESC
|
|
37
|
+
`)
|
|
38
|
+
: this.db.prepare(`
|
|
39
|
+
SELECT id, project_id as projectId, title, mode, created_at as createdAt, updated_at as updatedAt, archived_at as archivedAt
|
|
40
|
+
FROM conversations WHERE project_id IS NULL ORDER BY updated_at DESC
|
|
41
|
+
`);
|
|
42
|
+
return (projectId ? stmt.all(projectId) : stmt.all());
|
|
43
|
+
}
|
|
44
|
+
deleteById(id) {
|
|
45
|
+
const stmt = this.db.prepare('DELETE FROM conversations WHERE id = ?');
|
|
46
|
+
const result = stmt.run(id);
|
|
47
|
+
return result.changes > 0;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=conversationRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversationRepository.js","sourceRoot":"","sources":["../../../src/storage/repositories/conversationRepository.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,sBAAsB;IACb;IAApB,YAAoB,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAEpC,MAAM,CACJ,YAKC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,MAAM,GAAiB;YAC3B,EAAE,EAAE,YAAY,CAAC,EAAE;YACnB,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,IAAI;YACzC,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,MAAM;YACjC,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,GAAG;YACxC,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,GAAG;YACxC,UAAU,EAAE,YAAY,CAAC,UAAU,IAAI,IAAI;SAC5C,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAA6B,CAAC;QACrD,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,SAAwB;QACpC,MAAM,IAAI,GAAG,SAAS;YACpB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;SAGf,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;SAGf,CAAC,CAAC;QAEP,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAmB,CAAC;IAC1E,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { Database } from 'better-sqlite3';
|
|
2
|
+
export interface KnowledgeCollectionRecord {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
scope: string;
|
|
6
|
+
projectId: string | null;
|
|
7
|
+
createdAt: string;
|
|
8
|
+
updatedAt: string;
|
|
9
|
+
}
|
|
10
|
+
export interface DocumentRecord {
|
|
11
|
+
id: string;
|
|
12
|
+
collectionId: string;
|
|
13
|
+
filename: string;
|
|
14
|
+
sourcePath: string;
|
|
15
|
+
mimeType: string;
|
|
16
|
+
contentHash: string;
|
|
17
|
+
currentVersion: number;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
updatedAt: string;
|
|
20
|
+
}
|
|
21
|
+
export interface DocumentVersionRecord {
|
|
22
|
+
id: string;
|
|
23
|
+
documentId: string;
|
|
24
|
+
version: number;
|
|
25
|
+
content: string;
|
|
26
|
+
createdAt: string;
|
|
27
|
+
}
|
|
28
|
+
export interface DocumentChunkRecord {
|
|
29
|
+
id: string;
|
|
30
|
+
documentId: string;
|
|
31
|
+
versionId: string;
|
|
32
|
+
collectionId: string;
|
|
33
|
+
chunkIndex: number;
|
|
34
|
+
content: string;
|
|
35
|
+
section: string | null;
|
|
36
|
+
pageNumber: number | null;
|
|
37
|
+
tokenCount: number;
|
|
38
|
+
createdAt: string;
|
|
39
|
+
}
|
|
40
|
+
export interface VectorEmbeddingRecord {
|
|
41
|
+
id: string;
|
|
42
|
+
chunkId: string;
|
|
43
|
+
embeddingJson: string;
|
|
44
|
+
dimension: number;
|
|
45
|
+
modelName: string;
|
|
46
|
+
createdAt: string;
|
|
47
|
+
}
|
|
48
|
+
export declare class KnowledgeRepository {
|
|
49
|
+
private db;
|
|
50
|
+
constructor(db: Database);
|
|
51
|
+
createCollection(data: {
|
|
52
|
+
id: string;
|
|
53
|
+
name: string;
|
|
54
|
+
scope?: string;
|
|
55
|
+
projectId?: string | null;
|
|
56
|
+
}): KnowledgeCollectionRecord;
|
|
57
|
+
getCollection(id: string): KnowledgeCollectionRecord | null;
|
|
58
|
+
listCollections(projectId?: string | null): KnowledgeCollectionRecord[];
|
|
59
|
+
createDocument(data: {
|
|
60
|
+
id: string;
|
|
61
|
+
collectionId: string;
|
|
62
|
+
filename: string;
|
|
63
|
+
sourcePath: string;
|
|
64
|
+
mimeType: string;
|
|
65
|
+
contentHash: string;
|
|
66
|
+
}): DocumentRecord;
|
|
67
|
+
findDocumentByHash(collectionId: string, contentHash: string): DocumentRecord | null;
|
|
68
|
+
getDocument(id: string): DocumentRecord | null;
|
|
69
|
+
deleteDocument(id: string): boolean;
|
|
70
|
+
createVersion(data: {
|
|
71
|
+
id: string;
|
|
72
|
+
documentId: string;
|
|
73
|
+
version: number;
|
|
74
|
+
content: string;
|
|
75
|
+
}): DocumentVersionRecord;
|
|
76
|
+
createChunk(data: {
|
|
77
|
+
id: string;
|
|
78
|
+
documentId: string;
|
|
79
|
+
versionId: string;
|
|
80
|
+
collectionId: string;
|
|
81
|
+
chunkIndex: number;
|
|
82
|
+
content: string;
|
|
83
|
+
section?: string | null;
|
|
84
|
+
pageNumber?: number | null;
|
|
85
|
+
tokenCount: number;
|
|
86
|
+
}): DocumentChunkRecord;
|
|
87
|
+
getChunksByCollection(collectionId: string): Array<DocumentChunkRecord & {
|
|
88
|
+
filename: string;
|
|
89
|
+
sourcePath: string;
|
|
90
|
+
}>;
|
|
91
|
+
saveEmbedding(data: {
|
|
92
|
+
id: string;
|
|
93
|
+
chunkId: string;
|
|
94
|
+
embedding: number[];
|
|
95
|
+
modelName: string;
|
|
96
|
+
}): VectorEmbeddingRecord;
|
|
97
|
+
getEmbeddingsForCollection(collectionId: string): Array<{
|
|
98
|
+
chunkId: string;
|
|
99
|
+
documentId: string;
|
|
100
|
+
collectionId: string;
|
|
101
|
+
content: string;
|
|
102
|
+
section: string | null;
|
|
103
|
+
pageNumber: number | null;
|
|
104
|
+
filename: string;
|
|
105
|
+
sourcePath: string;
|
|
106
|
+
embedding: number[];
|
|
107
|
+
}>;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=knowledgeRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledgeRepository.d.ts","sourceRoot":"","sources":["../../../src/storage/repositories/knowledgeRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
export class KnowledgeRepository {
|
|
2
|
+
db;
|
|
3
|
+
constructor(db) {
|
|
4
|
+
this.db = db;
|
|
5
|
+
}
|
|
6
|
+
// --- Collections ---
|
|
7
|
+
createCollection(data) {
|
|
8
|
+
const now = new Date().toISOString();
|
|
9
|
+
const record = {
|
|
10
|
+
id: data.id,
|
|
11
|
+
name: data.name,
|
|
12
|
+
scope: data.scope || 'global',
|
|
13
|
+
projectId: data.projectId ?? null,
|
|
14
|
+
createdAt: now,
|
|
15
|
+
updatedAt: now,
|
|
16
|
+
};
|
|
17
|
+
const stmt = this.db.prepare(`
|
|
18
|
+
INSERT INTO knowledge_collections (id, name, scope, project_id, created_at, updated_at)
|
|
19
|
+
VALUES (@id, @name, @scope, @projectId, @createdAt, @updatedAt)
|
|
20
|
+
`);
|
|
21
|
+
stmt.run(record);
|
|
22
|
+
return record;
|
|
23
|
+
}
|
|
24
|
+
getCollection(id) {
|
|
25
|
+
const stmt = this.db.prepare(`
|
|
26
|
+
SELECT id, name, scope, project_id as projectId, created_at as createdAt, updated_at as updatedAt
|
|
27
|
+
FROM knowledge_collections WHERE id = ?
|
|
28
|
+
`);
|
|
29
|
+
const row = stmt.get(id);
|
|
30
|
+
return row || null;
|
|
31
|
+
}
|
|
32
|
+
listCollections(projectId) {
|
|
33
|
+
const stmt = projectId
|
|
34
|
+
? this.db.prepare(`
|
|
35
|
+
SELECT id, name, scope, project_id as projectId, created_at as createdAt, updated_at as updatedAt
|
|
36
|
+
FROM knowledge_collections WHERE project_id = ? ORDER BY name ASC
|
|
37
|
+
`)
|
|
38
|
+
: this.db.prepare(`
|
|
39
|
+
SELECT id, name, scope, project_id as projectId, created_at as createdAt, updated_at as updatedAt
|
|
40
|
+
FROM knowledge_collections ORDER BY name ASC
|
|
41
|
+
`);
|
|
42
|
+
return (projectId ? stmt.all(projectId) : stmt.all());
|
|
43
|
+
}
|
|
44
|
+
// --- Documents & Versions ---
|
|
45
|
+
createDocument(data) {
|
|
46
|
+
const now = new Date().toISOString();
|
|
47
|
+
const record = {
|
|
48
|
+
id: data.id,
|
|
49
|
+
collectionId: data.collectionId,
|
|
50
|
+
filename: data.filename,
|
|
51
|
+
sourcePath: data.sourcePath,
|
|
52
|
+
mimeType: data.mimeType,
|
|
53
|
+
contentHash: data.contentHash,
|
|
54
|
+
currentVersion: 1,
|
|
55
|
+
createdAt: now,
|
|
56
|
+
updatedAt: now,
|
|
57
|
+
};
|
|
58
|
+
const stmt = this.db.prepare(`
|
|
59
|
+
INSERT INTO documents (id, collection_id, filename, source_path, mime_type, content_hash, current_version, created_at, updated_at)
|
|
60
|
+
VALUES (@id, @collectionId, @filename, @sourcePath, @mimeType, @contentHash, @currentVersion, @createdAt, @updatedAt)
|
|
61
|
+
`);
|
|
62
|
+
stmt.run(record);
|
|
63
|
+
return record;
|
|
64
|
+
}
|
|
65
|
+
findDocumentByHash(collectionId, contentHash) {
|
|
66
|
+
const stmt = this.db.prepare(`
|
|
67
|
+
SELECT id, collection_id as collectionId, filename, source_path as sourcePath, mime_type as mimeType,
|
|
68
|
+
content_hash as contentHash, current_version as currentVersion, created_at as createdAt, updated_at as updatedAt
|
|
69
|
+
FROM documents WHERE collection_id = ? AND content_hash = ?
|
|
70
|
+
`);
|
|
71
|
+
const row = stmt.get(collectionId, contentHash);
|
|
72
|
+
return row || null;
|
|
73
|
+
}
|
|
74
|
+
getDocument(id) {
|
|
75
|
+
const stmt = this.db.prepare(`
|
|
76
|
+
SELECT id, collection_id as collectionId, filename, source_path as sourcePath, mime_type as mimeType,
|
|
77
|
+
content_hash as contentHash, current_version as currentVersion, created_at as createdAt, updated_at as updatedAt
|
|
78
|
+
FROM documents WHERE id = ?
|
|
79
|
+
`);
|
|
80
|
+
const row = stmt.get(id);
|
|
81
|
+
return row || null;
|
|
82
|
+
}
|
|
83
|
+
deleteDocument(id) {
|
|
84
|
+
const stmt = this.db.prepare('DELETE FROM documents WHERE id = ?');
|
|
85
|
+
const result = stmt.run(id);
|
|
86
|
+
return result.changes > 0;
|
|
87
|
+
}
|
|
88
|
+
createVersion(data) {
|
|
89
|
+
const now = new Date().toISOString();
|
|
90
|
+
const record = {
|
|
91
|
+
id: data.id,
|
|
92
|
+
documentId: data.documentId,
|
|
93
|
+
version: data.version,
|
|
94
|
+
content: data.content,
|
|
95
|
+
createdAt: now,
|
|
96
|
+
};
|
|
97
|
+
const stmt = this.db.prepare(`
|
|
98
|
+
INSERT INTO document_versions (id, document_id, version, content, created_at)
|
|
99
|
+
VALUES (@id, @documentId, @version, @content, @createdAt)
|
|
100
|
+
`);
|
|
101
|
+
stmt.run(record);
|
|
102
|
+
return record;
|
|
103
|
+
}
|
|
104
|
+
// --- Chunks ---
|
|
105
|
+
createChunk(data) {
|
|
106
|
+
const now = new Date().toISOString();
|
|
107
|
+
const record = {
|
|
108
|
+
id: data.id,
|
|
109
|
+
documentId: data.documentId,
|
|
110
|
+
versionId: data.versionId,
|
|
111
|
+
collectionId: data.collectionId,
|
|
112
|
+
chunkIndex: data.chunkIndex,
|
|
113
|
+
content: data.content,
|
|
114
|
+
section: data.section ?? null,
|
|
115
|
+
pageNumber: data.pageNumber ?? null,
|
|
116
|
+
tokenCount: data.tokenCount,
|
|
117
|
+
createdAt: now,
|
|
118
|
+
};
|
|
119
|
+
const stmt = this.db.prepare(`
|
|
120
|
+
INSERT INTO document_chunks (id, document_id, version_id, collection_id, chunk_index, content, section, page_number, token_count, created_at)
|
|
121
|
+
VALUES (@id, @documentId, @versionId, @collectionId, @chunkIndex, @content, @section, @pageNumber, @tokenCount, @createdAt)
|
|
122
|
+
`);
|
|
123
|
+
stmt.run(record);
|
|
124
|
+
return record;
|
|
125
|
+
}
|
|
126
|
+
getChunksByCollection(collectionId) {
|
|
127
|
+
const stmt = this.db.prepare(`
|
|
128
|
+
SELECT c.id, c.document_id as documentId, c.version_id as versionId, c.collection_id as collectionId,
|
|
129
|
+
c.chunk_index as chunkIndex, c.content, c.section, c.page_number as pageNumber,
|
|
130
|
+
c.token_count as tokenCount, c.created_at as createdAt, d.filename, d.source_path as sourcePath
|
|
131
|
+
FROM document_chunks c
|
|
132
|
+
JOIN documents d ON c.document_id = d.id
|
|
133
|
+
WHERE c.collection_id = ? ORDER BY c.chunk_index ASC
|
|
134
|
+
`);
|
|
135
|
+
return stmt.all(collectionId);
|
|
136
|
+
}
|
|
137
|
+
// --- Vector Embeddings ---
|
|
138
|
+
saveEmbedding(data) {
|
|
139
|
+
const now = new Date().toISOString();
|
|
140
|
+
const record = {
|
|
141
|
+
id: data.id,
|
|
142
|
+
chunkId: data.chunkId,
|
|
143
|
+
embeddingJson: JSON.stringify(data.embedding),
|
|
144
|
+
dimension: data.embedding.length,
|
|
145
|
+
modelName: data.modelName,
|
|
146
|
+
createdAt: now,
|
|
147
|
+
};
|
|
148
|
+
const stmt = this.db.prepare(`
|
|
149
|
+
INSERT INTO vector_embeddings (id, chunk_id, embedding_json, dimension, model_name, created_at)
|
|
150
|
+
VALUES (@id, @chunkId, @embeddingJson, @dimension, @modelName, @createdAt)
|
|
151
|
+
ON CONFLICT(chunk_id) DO UPDATE SET
|
|
152
|
+
embedding_json = excluded.embedding_json,
|
|
153
|
+
dimension = excluded.dimension,
|
|
154
|
+
model_name = excluded.model_name,
|
|
155
|
+
created_at = excluded.created_at
|
|
156
|
+
`);
|
|
157
|
+
stmt.run(record);
|
|
158
|
+
return record;
|
|
159
|
+
}
|
|
160
|
+
getEmbeddingsForCollection(collectionId) {
|
|
161
|
+
const stmt = this.db.prepare(`
|
|
162
|
+
SELECT e.chunk_id as chunkId, c.document_id as documentId, c.collection_id as collectionId,
|
|
163
|
+
c.content, c.section, c.page_number as pageNumber, d.filename, d.source_path as sourcePath,
|
|
164
|
+
e.embedding_json as embeddingJson
|
|
165
|
+
FROM vector_embeddings e
|
|
166
|
+
JOIN document_chunks c ON e.chunk_id = c.id
|
|
167
|
+
JOIN documents d ON c.document_id = d.id
|
|
168
|
+
WHERE c.collection_id = ?
|
|
169
|
+
`);
|
|
170
|
+
const rows = stmt.all(collectionId);
|
|
171
|
+
return rows.map((r) => ({
|
|
172
|
+
...r,
|
|
173
|
+
embedding: JSON.parse(r.embeddingJson),
|
|
174
|
+
}));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=knowledgeRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledgeRepository.js","sourceRoot":"","sources":["../../../src/storage/repositories/knowledgeRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Database } from 'better-sqlite3';
|
|
2
|
+
import type { Message } from './types.js';
|
|
3
|
+
export declare class MessageRepository {
|
|
4
|
+
private db;
|
|
5
|
+
constructor(db: Database);
|
|
6
|
+
create(message: Omit<Message, 'createdAt' | 'status'> & {
|
|
7
|
+
status?: Message['status'];
|
|
8
|
+
createdAt?: string;
|
|
9
|
+
}): Message;
|
|
10
|
+
findById(id: string): Message | null;
|
|
11
|
+
listByConversation(conversationId: string): Message[];
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=messageRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageRepository.d.ts","sourceRoot":"","sources":["../../../src/storage/repositories/messageRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,qBAAa,iBAAiB;IAChB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEhC,MAAM,CACJ,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC,GAAG;QAC/C,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,OAAO;IAoBV,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IASpC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,EAAE;CAOtD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export class MessageRepository {
|
|
2
|
+
db;
|
|
3
|
+
constructor(db) {
|
|
4
|
+
this.db = db;
|
|
5
|
+
}
|
|
6
|
+
create(message) {
|
|
7
|
+
const now = new Date().toISOString();
|
|
8
|
+
const record = {
|
|
9
|
+
id: message.id,
|
|
10
|
+
conversationId: message.conversationId,
|
|
11
|
+
role: message.role,
|
|
12
|
+
content: message.content,
|
|
13
|
+
status: message.status || 'completed',
|
|
14
|
+
createdAt: message.createdAt || now,
|
|
15
|
+
};
|
|
16
|
+
const stmt = this.db.prepare(`
|
|
17
|
+
INSERT INTO messages (id, conversation_id, role, content, status, created_at)
|
|
18
|
+
VALUES (@id, @conversationId, @role, @content, @status, @createdAt)
|
|
19
|
+
`);
|
|
20
|
+
stmt.run(record);
|
|
21
|
+
return record;
|
|
22
|
+
}
|
|
23
|
+
findById(id) {
|
|
24
|
+
const stmt = this.db.prepare(`
|
|
25
|
+
SELECT id, conversation_id as conversationId, role, content, status, created_at as createdAt
|
|
26
|
+
FROM messages WHERE id = ?
|
|
27
|
+
`);
|
|
28
|
+
const row = stmt.get(id);
|
|
29
|
+
return row || null;
|
|
30
|
+
}
|
|
31
|
+
listByConversation(conversationId) {
|
|
32
|
+
const stmt = this.db.prepare(`
|
|
33
|
+
SELECT id, conversation_id as conversationId, role, content, status, created_at as createdAt
|
|
34
|
+
FROM messages WHERE conversation_id = ? ORDER BY created_at ASC
|
|
35
|
+
`);
|
|
36
|
+
return stmt.all(conversationId);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=messageRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageRepository.js","sourceRoot":"","sources":["../../../src/storage/repositories/messageRepository.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,iBAAiB;IACR;IAApB,YAAoB,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAEpC,MAAM,CACJ,OAGC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,MAAM,GAAY;YACtB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,WAAW;YACrC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG;SACpC,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAwB,CAAC;QAChD,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IAED,kBAAkB,CAAC,cAAsB;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAc,CAAC;IAC/C,CAAC;CACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Database } from 'better-sqlite3';
|
|
2
|
+
export interface ModelRecord {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
provider: string;
|
|
6
|
+
versionTag: string | null;
|
|
7
|
+
capabilities: string[];
|
|
8
|
+
contextLimit: number;
|
|
9
|
+
isAvailable: boolean;
|
|
10
|
+
updatedAt: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ModelTelemetryRecord {
|
|
13
|
+
id: string;
|
|
14
|
+
modelId: string;
|
|
15
|
+
status: 'success' | 'error' | 'timeout' | 'cancelled';
|
|
16
|
+
latencyMs: number;
|
|
17
|
+
errorCategory: string | null;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
}
|
|
20
|
+
export declare class ModelsRepository {
|
|
21
|
+
private db;
|
|
22
|
+
constructor(db: Database);
|
|
23
|
+
upsert(model: {
|
|
24
|
+
id: string;
|
|
25
|
+
name: string;
|
|
26
|
+
provider?: string;
|
|
27
|
+
versionTag?: string | null;
|
|
28
|
+
capabilities: string[];
|
|
29
|
+
contextLimit?: number;
|
|
30
|
+
isAvailable?: boolean;
|
|
31
|
+
}): ModelRecord;
|
|
32
|
+
findById(id: string): ModelRecord | null;
|
|
33
|
+
listAvailable(): ModelRecord[];
|
|
34
|
+
markAllUnavailableExcept(activeModelIds: string[]): void;
|
|
35
|
+
recordTelemetry(telemetry: Omit<ModelTelemetryRecord, 'createdAt'> & {
|
|
36
|
+
createdAt?: string;
|
|
37
|
+
}): ModelTelemetryRecord;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=modelsRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelsRepository.d.ts","sourceRoot":"","sources":["../../../src/storage/repositories/modelsRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEhC,MAAM,CAAC,KAAK,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,GAAG,WAAW;IAmCf,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAgBxC,aAAa,IAAI,WAAW,EAAE;IAe9B,wBAAwB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI;IAWxD,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,oBAAoB;CAmBnH"}
|