@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,163 @@
|
|
|
1
|
+
import { ContextBuilder } from './contextBuilder.js';
|
|
2
|
+
import { PromptTemplates } from './promptTemplates.js';
|
|
3
|
+
import { CitationService } from '../knowledge/citationService.js';
|
|
4
|
+
import { Logger } from '../common/logger.js';
|
|
5
|
+
export class ChatService {
|
|
6
|
+
conversationService;
|
|
7
|
+
messageService;
|
|
8
|
+
modelGateway;
|
|
9
|
+
ragEngine;
|
|
10
|
+
logger;
|
|
11
|
+
contextBuilder = new ContextBuilder();
|
|
12
|
+
citationService = new CitationService();
|
|
13
|
+
constructor(conversationService, messageService, modelGateway, ragEngine, logLevel = 'info') {
|
|
14
|
+
this.conversationService = conversationService;
|
|
15
|
+
this.messageService = messageService;
|
|
16
|
+
this.modelGateway = modelGateway;
|
|
17
|
+
this.ragEngine = ragEngine;
|
|
18
|
+
this.logger = new Logger('ChatService', logLevel);
|
|
19
|
+
}
|
|
20
|
+
async sendMessage(options, onEvent, externalSignal) {
|
|
21
|
+
const { conversationId, userPrompt } = options;
|
|
22
|
+
// 1. Conversation validation
|
|
23
|
+
const conversation = this.conversationService.getConversation(conversationId);
|
|
24
|
+
// 2. Persist user message
|
|
25
|
+
const userMessage = this.messageService.addMessage({
|
|
26
|
+
conversationId: conversation.id,
|
|
27
|
+
role: 'user',
|
|
28
|
+
content: userPrompt,
|
|
29
|
+
status: 'completed',
|
|
30
|
+
});
|
|
31
|
+
// 3. RAG Evidence Retrieval (if enabled)
|
|
32
|
+
let ragResult;
|
|
33
|
+
let customSystemPrompt = options.customSystemPrompt || PromptTemplates.getDefaultSystemPrompt();
|
|
34
|
+
if (options.enableRag && this.ragEngine) {
|
|
35
|
+
const colId = options.collectionId || this.ragEngine.getOrCreateDefaultCollection().id;
|
|
36
|
+
this.logger.info(`Retrieving RAG evidence for query in collection '${colId}'`);
|
|
37
|
+
ragResult = await this.ragEngine.retrieveEvidence(userPrompt, colId, 3);
|
|
38
|
+
if (ragResult.groundingStatus === 'UNGROUNDED') {
|
|
39
|
+
customSystemPrompt += '\n\n[RAG Grounding Note]: Insufficient evidence found in knowledge base. State clearly if information is unknown.';
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
customSystemPrompt += `\n\n[Untrusted Source Context Evidence (${ragResult.groundingStatus})]:\n${ragResult.evidenceText}`;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// 4. Retrieve conversation history & build context
|
|
46
|
+
const history = this.messageService.getMessages(conversation.id);
|
|
47
|
+
const context = this.contextBuilder.buildContext(history, {
|
|
48
|
+
maxContextTokens: options.maxContextTokens,
|
|
49
|
+
customSystemPrompt,
|
|
50
|
+
});
|
|
51
|
+
// 5. Construct prompt package
|
|
52
|
+
const promptPkg = PromptTemplates.buildPromptPackage(context.messages, context.systemPrompt);
|
|
53
|
+
const formatted = PromptTemplates.formatForOllama(promptPkg);
|
|
54
|
+
const assistantMsgId = `msg-${Date.now()}-${Math.random().toString(36).substring(2, 7)}`;
|
|
55
|
+
let accumulatedText = '';
|
|
56
|
+
let isCancelled = false;
|
|
57
|
+
if (externalSignal?.aborted) {
|
|
58
|
+
isCancelled = true;
|
|
59
|
+
}
|
|
60
|
+
if (externalSignal) {
|
|
61
|
+
externalSignal.addEventListener('abort', () => {
|
|
62
|
+
isCancelled = true;
|
|
63
|
+
if (onEvent) {
|
|
64
|
+
onEvent({
|
|
65
|
+
type: 'cancellation',
|
|
66
|
+
conversationId: conversation.id,
|
|
67
|
+
messageId: assistantMsgId,
|
|
68
|
+
fullText: accumulatedText,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
this.logger.info(`Starting streaming chat for conversation '${conversation.id}' using ModelGateway`);
|
|
75
|
+
const gatewayResponse = await this.modelGateway.generateStream({
|
|
76
|
+
prompt: formatted.prompt,
|
|
77
|
+
system: formatted.system,
|
|
78
|
+
modelId: options.modelId,
|
|
79
|
+
temperature: options.temperature,
|
|
80
|
+
timeoutMs: options.timeoutMs || 30000,
|
|
81
|
+
allowFallback: true,
|
|
82
|
+
}, (chunk) => {
|
|
83
|
+
if (chunk.delta) {
|
|
84
|
+
accumulatedText += chunk.delta;
|
|
85
|
+
if (onEvent) {
|
|
86
|
+
onEvent({
|
|
87
|
+
type: 'delta',
|
|
88
|
+
conversationId: conversation.id,
|
|
89
|
+
messageId: assistantMsgId,
|
|
90
|
+
delta: chunk.delta,
|
|
91
|
+
contextInfo: {
|
|
92
|
+
estimatedTokens: context.estimatedTokens,
|
|
93
|
+
truncatedCount: context.truncatedCount,
|
|
94
|
+
ragGrounding: ragResult?.groundingStatus,
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}, externalSignal);
|
|
100
|
+
accumulatedText = gatewayResponse.text || accumulatedText;
|
|
101
|
+
// Append Citation Footer if RAG evidence was used
|
|
102
|
+
if (ragResult && ragResult.citations.length > 0) {
|
|
103
|
+
const footer = this.citationService.formatCitationFooter(ragResult.citations);
|
|
104
|
+
accumulatedText += footer;
|
|
105
|
+
}
|
|
106
|
+
const assistantMessage = this.messageService.addMessage({
|
|
107
|
+
id: assistantMsgId,
|
|
108
|
+
conversationId: conversation.id,
|
|
109
|
+
role: 'assistant',
|
|
110
|
+
content: accumulatedText,
|
|
111
|
+
status: isCancelled ? 'interrupted' : 'completed',
|
|
112
|
+
});
|
|
113
|
+
if (onEvent) {
|
|
114
|
+
onEvent({
|
|
115
|
+
type: 'completion',
|
|
116
|
+
conversationId: conversation.id,
|
|
117
|
+
messageId: assistantMsgId,
|
|
118
|
+
fullText: accumulatedText,
|
|
119
|
+
contextInfo: {
|
|
120
|
+
estimatedTokens: context.estimatedTokens,
|
|
121
|
+
truncatedCount: context.truncatedCount,
|
|
122
|
+
ragGrounding: ragResult?.groundingStatus,
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
userMessage,
|
|
128
|
+
assistantMessage,
|
|
129
|
+
context,
|
|
130
|
+
ragResult,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
135
|
+
this.logger.error(`Chat orchestration failed: ${errorMsg}`);
|
|
136
|
+
const status = isCancelled ? 'interrupted' : 'failed';
|
|
137
|
+
const fallbackText = accumulatedText || `[Generation Error: ${errorMsg}]`;
|
|
138
|
+
const assistantMessage = this.messageService.addMessage({
|
|
139
|
+
id: assistantMsgId,
|
|
140
|
+
conversationId: conversation.id,
|
|
141
|
+
role: 'assistant',
|
|
142
|
+
content: fallbackText,
|
|
143
|
+
status,
|
|
144
|
+
});
|
|
145
|
+
if (onEvent) {
|
|
146
|
+
onEvent({
|
|
147
|
+
type: 'error',
|
|
148
|
+
conversationId: conversation.id,
|
|
149
|
+
messageId: assistantMsgId,
|
|
150
|
+
error: errorMsg,
|
|
151
|
+
fullText: fallbackText,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
userMessage,
|
|
156
|
+
assistantMessage,
|
|
157
|
+
context,
|
|
158
|
+
ragResult,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=chatService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatService.js","sourceRoot":"","sources":["../../src/chat/chatService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Message } from '../storage/repositories/types.js';
|
|
2
|
+
export interface ContextBuilderOptions {
|
|
3
|
+
maxContextTokens?: number;
|
|
4
|
+
reserveOutputTokens?: number;
|
|
5
|
+
customSystemPrompt?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ContextPackage {
|
|
8
|
+
messages: Message[];
|
|
9
|
+
systemPrompt: string;
|
|
10
|
+
estimatedTokens: number;
|
|
11
|
+
systemTokens: number;
|
|
12
|
+
truncatedCount: number;
|
|
13
|
+
maxContextTokens: number;
|
|
14
|
+
}
|
|
15
|
+
export declare class ContextBuilder {
|
|
16
|
+
static estimateTokens(text: string): number;
|
|
17
|
+
buildContext(messages: Message[], options?: ContextBuilderOptions): ContextPackage;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=contextBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextBuilder.d.ts","sourceRoot":"","sources":["../../src/chat/contextBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAGhE,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,cAAc;WACX,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAK3C,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,GAAE,qBAA0B,GAAG,cAAc;CAuC9F"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { PromptTemplates } from './promptTemplates.js';
|
|
2
|
+
export class ContextBuilder {
|
|
3
|
+
static estimateTokens(text) {
|
|
4
|
+
if (!text)
|
|
5
|
+
return 0;
|
|
6
|
+
return Math.ceil(text.length / 4);
|
|
7
|
+
}
|
|
8
|
+
buildContext(messages, options = {}) {
|
|
9
|
+
const maxTokens = options.maxContextTokens || 4096;
|
|
10
|
+
const reserveTokens = options.reserveOutputTokens || 1024;
|
|
11
|
+
const availableTokens = Math.max(512, maxTokens - reserveTokens);
|
|
12
|
+
const systemPrompt = options.customSystemPrompt || PromptTemplates.getDefaultSystemPrompt();
|
|
13
|
+
const systemTokens = ContextBuilder.estimateTokens(systemPrompt);
|
|
14
|
+
let currentBudget = availableTokens - systemTokens;
|
|
15
|
+
if (currentBudget <= 0) {
|
|
16
|
+
currentBudget = 256; // Minimum floor for user prompt
|
|
17
|
+
}
|
|
18
|
+
const selectedMessages = [];
|
|
19
|
+
let totalMessageTokens = 0;
|
|
20
|
+
let truncatedCount = 0;
|
|
21
|
+
// Process messages from most recent to oldest
|
|
22
|
+
const reversed = [...messages].reverse();
|
|
23
|
+
for (const msg of reversed) {
|
|
24
|
+
const msgTokens = ContextBuilder.estimateTokens(msg.content) + 4; // 4 overhead tokens per msg
|
|
25
|
+
if (totalMessageTokens + msgTokens <= currentBudget) {
|
|
26
|
+
selectedMessages.unshift(msg);
|
|
27
|
+
totalMessageTokens += msgTokens;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
truncatedCount++;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
messages: selectedMessages,
|
|
35
|
+
systemPrompt,
|
|
36
|
+
estimatedTokens: systemTokens + totalMessageTokens,
|
|
37
|
+
systemTokens,
|
|
38
|
+
truncatedCount,
|
|
39
|
+
maxContextTokens: maxTokens,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=contextBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextBuilder.js","sourceRoot":"","sources":["../../src/chat/contextBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAiBvD,MAAM,OAAO,cAAc;IAClB,MAAM,CAAC,cAAc,CAAC,IAAY;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IAEM,YAAY,CAAC,QAAmB,EAAE,UAAiC,EAAE;QAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACnD,MAAM,aAAa,GAAG,OAAO,CAAC,mBAAmB,IAAI,IAAI,CAAC;QAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC;QAEjE,MAAM,YAAY,GAAG,OAAO,CAAC,kBAAkB,IAAI,eAAe,CAAC,sBAAsB,EAAE,CAAC;QAC5F,MAAM,YAAY,GAAG,cAAc,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAEjE,IAAI,aAAa,GAAG,eAAe,GAAG,YAAY,CAAC;QACnD,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACvB,aAAa,GAAG,GAAG,CAAC,CAAC,gCAAgC;QACvD,CAAC;QAED,MAAM,gBAAgB,GAAc,EAAE,CAAC;QACvC,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QAEzC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,4BAA4B;YAC9F,IAAI,kBAAkB,GAAG,SAAS,IAAI,aAAa,EAAE,CAAC;gBACpD,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC9B,kBAAkB,IAAI,SAAS,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,cAAc,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,gBAAgB;YAC1B,YAAY;YACZ,eAAe,EAAE,YAAY,GAAG,kBAAkB;YAClD,YAAY;YACZ,cAAc;YACd,gBAAgB,EAAE,SAAS;SAC5B,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ConversationRepository } from '../storage/repositories/conversationRepository.js';
|
|
2
|
+
import type { Conversation } from '../storage/repositories/types.js';
|
|
3
|
+
import { LogLevel } from '../common/logger.js';
|
|
4
|
+
export interface CreateConversationDto {
|
|
5
|
+
id?: string;
|
|
6
|
+
projectId?: string | null;
|
|
7
|
+
title?: string;
|
|
8
|
+
mode?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface UpdateConversationDto {
|
|
11
|
+
title?: string;
|
|
12
|
+
mode?: string;
|
|
13
|
+
archivedAt?: string | null;
|
|
14
|
+
}
|
|
15
|
+
export declare class ConversationService {
|
|
16
|
+
private conversationRepo;
|
|
17
|
+
private logger;
|
|
18
|
+
constructor(conversationRepo: ConversationRepository, logLevel?: LogLevel);
|
|
19
|
+
createConversation(dto?: CreateConversationDto): Conversation;
|
|
20
|
+
getConversation(id: string): Conversation;
|
|
21
|
+
listConversations(projectId?: string | null): Conversation[];
|
|
22
|
+
updateConversation(id: string, updates: UpdateConversationDto): Conversation;
|
|
23
|
+
deleteConversation(id: string): boolean;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=conversationService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversationService.d.ts","sourceRoot":"","sources":["../../src/chat/conversationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,mBAAmB;IAI5B,OAAO,CAAC,gBAAgB;IAH1B,OAAO,CAAC,MAAM,CAAS;gBAGb,gBAAgB,EAAE,sBAAsB,EAChD,QAAQ,GAAE,QAAiB;IAK7B,kBAAkB,CAAC,GAAG,GAAE,qBAA0B,GAAG,YAAY;IAcjE,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY;IAQzC,iBAAiB,CAAC,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,YAAY,EAAE;IAIlE,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,YAAY;IAsB5E,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAIxC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Logger } from '../common/logger.js';
|
|
2
|
+
export class ConversationService {
|
|
3
|
+
conversationRepo;
|
|
4
|
+
logger;
|
|
5
|
+
constructor(conversationRepo, logLevel = 'info') {
|
|
6
|
+
this.conversationRepo = conversationRepo;
|
|
7
|
+
this.logger = new Logger('ConversationService', logLevel);
|
|
8
|
+
}
|
|
9
|
+
createConversation(dto = {}) {
|
|
10
|
+
const id = dto.id || `conv-${Date.now()}-${Math.random().toString(36).substring(2, 7)}`;
|
|
11
|
+
const title = dto.title || 'New Chat';
|
|
12
|
+
const mode = dto.mode || 'chat';
|
|
13
|
+
this.logger.info(`Creating conversation '${id}' (title: "${title}")`);
|
|
14
|
+
return this.conversationRepo.create({
|
|
15
|
+
id,
|
|
16
|
+
projectId: dto.projectId ?? null,
|
|
17
|
+
title,
|
|
18
|
+
mode,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
getConversation(id) {
|
|
22
|
+
const conv = this.conversationRepo.findById(id);
|
|
23
|
+
if (!conv) {
|
|
24
|
+
throw new Error(`Conversation not found: '${id}'`);
|
|
25
|
+
}
|
|
26
|
+
return conv;
|
|
27
|
+
}
|
|
28
|
+
listConversations(projectId = null) {
|
|
29
|
+
return this.conversationRepo.listByProject(projectId);
|
|
30
|
+
}
|
|
31
|
+
updateConversation(id, updates) {
|
|
32
|
+
const existing = this.getConversation(id);
|
|
33
|
+
const updatedTitle = updates.title !== undefined ? updates.title : existing.title;
|
|
34
|
+
const updatedMode = updates.mode !== undefined ? updates.mode : existing.mode;
|
|
35
|
+
const updatedArchived = updates.archivedAt !== undefined ? updates.archivedAt : existing.archivedAt;
|
|
36
|
+
// Delete and recreate record with updated values for SQLite simplicity
|
|
37
|
+
this.conversationRepo.deleteById(id);
|
|
38
|
+
const updated = this.conversationRepo.create({
|
|
39
|
+
id,
|
|
40
|
+
projectId: existing.projectId,
|
|
41
|
+
title: updatedTitle,
|
|
42
|
+
mode: updatedMode,
|
|
43
|
+
createdAt: existing.createdAt,
|
|
44
|
+
updatedAt: new Date().toISOString(),
|
|
45
|
+
archivedAt: updatedArchived,
|
|
46
|
+
});
|
|
47
|
+
this.logger.info(`Updated conversation '${id}' metadata`);
|
|
48
|
+
return updated;
|
|
49
|
+
}
|
|
50
|
+
deleteConversation(id) {
|
|
51
|
+
this.logger.info(`Deleting conversation '${id}'`);
|
|
52
|
+
return this.conversationRepo.deleteById(id);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=conversationService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversationService.js","sourceRoot":"","sources":["../../src/chat/conversationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { MessageRepository } from '../storage/repositories/messageRepository.js';
|
|
2
|
+
import type { Message } from '../storage/repositories/types.js';
|
|
3
|
+
import { LogLevel } from '../common/logger.js';
|
|
4
|
+
export interface AddMessageDto {
|
|
5
|
+
id?: string;
|
|
6
|
+
conversationId: string;
|
|
7
|
+
role: 'user' | 'assistant' | 'system' | 'tool';
|
|
8
|
+
content: string;
|
|
9
|
+
status?: Message['status'];
|
|
10
|
+
}
|
|
11
|
+
export declare class MessageService {
|
|
12
|
+
private messageRepo;
|
|
13
|
+
private logger;
|
|
14
|
+
constructor(messageRepo: MessageRepository, logLevel?: LogLevel);
|
|
15
|
+
addMessage(dto: AddMessageDto): Message;
|
|
16
|
+
getMessages(conversationId: string): Message[];
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=messageService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageService.d.ts","sourceRoot":"","sources":["../../src/chat/messageService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC5B;AAED,qBAAa,cAAc;IAIvB,OAAO,CAAC,WAAW;IAHrB,OAAO,CAAC,MAAM,CAAS;gBAGb,WAAW,EAAE,iBAAiB,EACtC,QAAQ,GAAE,QAAiB;IAK7B,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAgBvC,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,EAAE;CAG/C"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Logger } from '../common/logger.js';
|
|
2
|
+
export class MessageService {
|
|
3
|
+
messageRepo;
|
|
4
|
+
logger;
|
|
5
|
+
constructor(messageRepo, logLevel = 'info') {
|
|
6
|
+
this.messageRepo = messageRepo;
|
|
7
|
+
this.logger = new Logger('MessageService', logLevel);
|
|
8
|
+
}
|
|
9
|
+
addMessage(dto) {
|
|
10
|
+
const id = dto.id || `msg-${Date.now()}-${Math.random().toString(36).substring(2, 7)}`;
|
|
11
|
+
const status = dto.status || 'completed';
|
|
12
|
+
const record = this.messageRepo.create({
|
|
13
|
+
id,
|
|
14
|
+
conversationId: dto.conversationId,
|
|
15
|
+
role: dto.role,
|
|
16
|
+
content: dto.content,
|
|
17
|
+
status,
|
|
18
|
+
});
|
|
19
|
+
this.logger.debug(`Added ${dto.role} message '${id}' to conversation '${dto.conversationId}'`);
|
|
20
|
+
return record;
|
|
21
|
+
}
|
|
22
|
+
getMessages(conversationId) {
|
|
23
|
+
return this.messageRepo.listByConversation(conversationId);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=messageService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageService.js","sourceRoot":"","sources":["../../src/chat/messageService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAY,MAAM,qBAAqB,CAAC;AAUvD,MAAM,OAAO,cAAc;IAIf;IAHF,MAAM,CAAS;IAEvB,YACU,WAA8B,EACtC,WAAqB,MAAM;QADnB,gBAAW,GAAX,WAAW,CAAmB;QAGtC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,UAAU,CAAC,GAAkB;QAC3B,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACvF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,WAAW,CAAC;QAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACrC,EAAE;YACF,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,aAAa,EAAE,sBAAsB,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;QAC/F,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,cAAsB;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Message } from '../storage/repositories/types.js';
|
|
2
|
+
export interface PromptPackage {
|
|
3
|
+
systemPrompt: string;
|
|
4
|
+
formattedMessages: Array<{
|
|
5
|
+
role: string;
|
|
6
|
+
content: string;
|
|
7
|
+
}>;
|
|
8
|
+
version: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class PromptTemplates {
|
|
11
|
+
static readonly CURRENT_VERSION = "v1.0.0";
|
|
12
|
+
static getDefaultSystemPrompt(): string;
|
|
13
|
+
static buildPromptPackage(messages: Message[], customSystemPrompt?: string): PromptPackage;
|
|
14
|
+
static formatForOllama(promptPackage: PromptPackage): {
|
|
15
|
+
system: string;
|
|
16
|
+
prompt: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=promptTemplates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptTemplates.d.ts","sourceRoot":"","sources":["../../src/chat/promptTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,eAAe;IAC1B,gBAAuB,eAAe,YAAY;WAEpC,sBAAsB,IAAI,MAAM;WAQhC,kBAAkB,CAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,aAAa;WAcF,eAAe,CAAC,aAAa,EAAE,aAAa,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAYhG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export class PromptTemplates {
|
|
2
|
+
static CURRENT_VERSION = 'v1.0.0';
|
|
3
|
+
static getDefaultSystemPrompt() {
|
|
4
|
+
return ('You are NEXUS AI, an offline-first local AI workstation assistant. ' +
|
|
5
|
+
'Provide helpful, accurate, and concise answers based on the conversation context. ' +
|
|
6
|
+
'Keep technical explanations clear and structured.');
|
|
7
|
+
}
|
|
8
|
+
static buildPromptPackage(messages, customSystemPrompt) {
|
|
9
|
+
const systemPrompt = customSystemPrompt || this.getDefaultSystemPrompt();
|
|
10
|
+
const formattedMessages = messages.map((m) => ({
|
|
11
|
+
role: m.role,
|
|
12
|
+
content: m.content,
|
|
13
|
+
}));
|
|
14
|
+
return {
|
|
15
|
+
systemPrompt,
|
|
16
|
+
formattedMessages,
|
|
17
|
+
version: this.CURRENT_VERSION,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
static formatForOllama(promptPackage) {
|
|
21
|
+
const system = promptPackage.systemPrompt;
|
|
22
|
+
// Format full dialogue stream into prompt string for single-prompt endpoint
|
|
23
|
+
const historyText = promptPackage.formattedMessages
|
|
24
|
+
.map((m) => `${m.role === 'user' ? 'User' : 'Assistant'}: ${m.content}`)
|
|
25
|
+
.join('\n\n');
|
|
26
|
+
return {
|
|
27
|
+
system,
|
|
28
|
+
prompt: historyText,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=promptTemplates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptTemplates.js","sourceRoot":"","sources":["../../src/chat/promptTemplates.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,eAAe;IACnB,MAAM,CAAU,eAAe,GAAG,QAAQ,CAAC;IAE3C,MAAM,CAAC,sBAAsB;QAClC,OAAO,CACL,qEAAqE;YACrE,oFAAoF;YACpF,mDAAmD,CACpD,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAC9B,QAAmB,EACnB,kBAA2B;QAE3B,MAAM,YAAY,GAAG,kBAAkB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACzE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,YAAY;YACZ,iBAAiB;YACjB,OAAO,EAAE,IAAI,CAAC,eAAe;SAC9B,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,aAA4B;QACxD,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC;QAC1C,4EAA4E;QAC5E,MAAM,WAAW,GAAG,aAAa,CAAC,iBAAiB;aAChD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACvE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,OAAO;YACL,MAAM;YACN,MAAM,EAAE,WAAW;SACpB,CAAC;IACJ,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS AI — P7-F: Interactive Agent Runner & Subsystem Integration
|
|
3
|
+
*
|
|
4
|
+
* Provides a human-facing, interactive CLI runner that integrates the entire
|
|
5
|
+
* NEXUS agent pipeline (P5-A through P6-D) without duplicating execution or authorization logic.
|
|
6
|
+
*
|
|
7
|
+
* Sequence:
|
|
8
|
+
* User Task -> Task Creation -> Plan Synthesis -> Plan Validation -> Permission Evaluation
|
|
9
|
+
* -> Approval Policy -> Human Approval when required -> Approval Gate -> Tool Execution
|
|
10
|
+
* -> Observation -> Verification -> Final Result.
|
|
11
|
+
*
|
|
12
|
+
* SECURITY INVARIANTS:
|
|
13
|
+
* - Interface ONLY. Does NOT bypass PlanValidator, PermissionEngine, ApprovalGate, or ToolExecutor.
|
|
14
|
+
* - Zero direct file reads or repository mutations outside existing service APIs.
|
|
15
|
+
* - Zero secrets, API keys, raw prompts, or sensitive tool params logged or displayed.
|
|
16
|
+
*/
|
|
17
|
+
import type { ApplicationApi } from '../api/index.js';
|
|
18
|
+
import type { AgentTask } from '../storage/repositories/types.js';
|
|
19
|
+
import type { AgentPlan } from '../orchestration/types.js';
|
|
20
|
+
import type { ApprovalRequest } from '../tools/approvalTypes.js';
|
|
21
|
+
import { LogLevel } from '../common/logger.js';
|
|
22
|
+
export interface LifecycleEvent {
|
|
23
|
+
event: string;
|
|
24
|
+
timestamp: string;
|
|
25
|
+
details?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare class AgentRunner {
|
|
28
|
+
api: ApplicationApi;
|
|
29
|
+
private logger;
|
|
30
|
+
currentTask: AgentTask | null;
|
|
31
|
+
currentPlan: AgentPlan | null;
|
|
32
|
+
lifecycleLogs: LifecycleEvent[];
|
|
33
|
+
private isResolvingApproval;
|
|
34
|
+
constructor(api: ApplicationApi, logLevel?: LogLevel);
|
|
35
|
+
/**
|
|
36
|
+
* Process a single command input string from the interactive CLI or test runner.
|
|
37
|
+
* Unknown commands return a safe error without crashing.
|
|
38
|
+
*/
|
|
39
|
+
runCommand(input: string): Promise<string>;
|
|
40
|
+
/**
|
|
41
|
+
* Submit a new user task and run through the P5 architecture pipeline.
|
|
42
|
+
*
|
|
43
|
+
* @param goal - The natural language task goal.
|
|
44
|
+
* @param _showPreview - If true, a prompt preview was already rendered by InputEngine
|
|
45
|
+
* before calling runCommand(). Unused here; preview is output-only in InputEngine.
|
|
46
|
+
*/
|
|
47
|
+
submitTask(goal: string, _showPreview?: boolean): Promise<string>;
|
|
48
|
+
/**
|
|
49
|
+
* Submit a coding task through CodingAgentService (P6-D).
|
|
50
|
+
*/
|
|
51
|
+
submitCodingTask(goal: string): Promise<string>;
|
|
52
|
+
/**
|
|
53
|
+
* Resolve an approval request as approved and resume execution.
|
|
54
|
+
*/
|
|
55
|
+
approveRequest(approvalId: string | undefined): Promise<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Resolve an approval request as rejected and stop execution.
|
|
58
|
+
*/
|
|
59
|
+
rejectRequest(approvalId: string | undefined): Promise<string>;
|
|
60
|
+
/**
|
|
61
|
+
* Display detailed parameters and information for a pending approval request.
|
|
62
|
+
*/
|
|
63
|
+
viewApprovalDetails(approval: ApprovalRequest): string;
|
|
64
|
+
/**
|
|
65
|
+
* Cancel active task and invalidate pending approvals.
|
|
66
|
+
*/
|
|
67
|
+
cancelCurrentTask(): Promise<string>;
|
|
68
|
+
/**
|
|
69
|
+
* Returns help command menu.
|
|
70
|
+
*/
|
|
71
|
+
getHelpText(): string;
|
|
72
|
+
/**
|
|
73
|
+
* Returns current task status text without exposing secrets.
|
|
74
|
+
*/
|
|
75
|
+
getStatusText(): string;
|
|
76
|
+
/**
|
|
77
|
+
* P7-H: Handles /preview command and sub-commands (stop, status, taskId).
|
|
78
|
+
*/
|
|
79
|
+
handlePreviewCommand(args: string[]): Promise<string>;
|
|
80
|
+
/**
|
|
81
|
+
* P7-G: Handles /model control command and sub-commands.
|
|
82
|
+
*/
|
|
83
|
+
handleModelCommand(args: string[]): string;
|
|
84
|
+
/**
|
|
85
|
+
* Returns models list from ModelRegistry / storage.
|
|
86
|
+
*/
|
|
87
|
+
getModelsText(): string;
|
|
88
|
+
/**
|
|
89
|
+
* Returns workspace status and security policy info.
|
|
90
|
+
*/
|
|
91
|
+
getWorkspaceText(): string;
|
|
92
|
+
/**
|
|
93
|
+
* Returns recent task history list.
|
|
94
|
+
*/
|
|
95
|
+
getTasksListText(): string;
|
|
96
|
+
/**
|
|
97
|
+
* Inspect a specific task by ID.
|
|
98
|
+
*/
|
|
99
|
+
inspectTaskText(taskId: string | undefined): string;
|
|
100
|
+
/**
|
|
101
|
+
* Returns agents & subsystems status.
|
|
102
|
+
*/
|
|
103
|
+
getAgentsStatusText(): string;
|
|
104
|
+
/**
|
|
105
|
+
* Clear screen helper.
|
|
106
|
+
*/
|
|
107
|
+
clearScreen(): string;
|
|
108
|
+
/**
|
|
109
|
+
* Returns plan steps text for current task.
|
|
110
|
+
*/
|
|
111
|
+
getPlanText(): string;
|
|
112
|
+
/**
|
|
113
|
+
* Returns approval requests list for current task.
|
|
114
|
+
*/
|
|
115
|
+
getApprovalsText(): string;
|
|
116
|
+
/**
|
|
117
|
+
* Returns safe result view for completed/failed/cancelled task.
|
|
118
|
+
*/
|
|
119
|
+
getResultText(): string;
|
|
120
|
+
/**
|
|
121
|
+
* Handles exit command.
|
|
122
|
+
*/
|
|
123
|
+
exitRunner(): string;
|
|
124
|
+
private recordEvent;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=agentRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentRunner.d.ts","sourceRoot":"","sources":["../../src/cli/agentRunner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAsBvD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,WAAW;IAQb,GAAG,EAAE,cAAc;IAP5B,OAAO,CAAC,MAAM,CAAS;IAChB,WAAW,EAAE,SAAS,GAAG,IAAI,CAAQ;IACrC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAQ;IACrC,aAAa,EAAE,cAAc,EAAE,CAAM;IAC5C,OAAO,CAAC,mBAAmB,CAAS;gBAG3B,GAAG,EAAE,cAAc,EAC1B,QAAQ,GAAE,QAAiB;IAK7B;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqJhD;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAyHrE;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BrD;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IA4GrE;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IA0DpE;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM;IAqBtD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAkB1C;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,aAAa,IAAI,MAAM;IA8BvB;;OAEG;IACG,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAyB3D;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;IA0I1C;;OAEG;IACH,aAAa,IAAI,MAAM;IAsCvB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAoB1B;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAK1B;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;IAqCnD;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAc7B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,WAAW,IAAI,MAAM;IA0BrB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAqC1B;;OAEG;IACH,aAAa,IAAI,MAAM;IAyBvB;;OAEG;IACH,UAAU,IAAI,MAAM;IAKpB,OAAO,CAAC,WAAW;CAKpB"}
|