@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,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS AI — Agent State Machine
|
|
3
|
+
*
|
|
4
|
+
* Defines and enforces the deterministic lifecycle of an agent task.
|
|
5
|
+
* ALL state transitions MUST go through this class.
|
|
6
|
+
* No external code may directly mutate AgentTask.state.
|
|
7
|
+
*
|
|
8
|
+
* Lifecycle:
|
|
9
|
+
* created → planning → awaiting_approval → executing → observing → verifying → completed
|
|
10
|
+
*
|
|
11
|
+
* Failure path (from any active state):
|
|
12
|
+
* * → failed
|
|
13
|
+
*
|
|
14
|
+
* Cancellation path (from any non-terminal active state):
|
|
15
|
+
* * → cancelled
|
|
16
|
+
*
|
|
17
|
+
* Terminal states (no further transitions):
|
|
18
|
+
* completed | failed | cancelled
|
|
19
|
+
*/
|
|
20
|
+
/** All states from which a task may be cancelled. */
|
|
21
|
+
const CANCELLABLE_STATES = new Set([
|
|
22
|
+
'created',
|
|
23
|
+
'planning',
|
|
24
|
+
'awaiting_approval',
|
|
25
|
+
'executing',
|
|
26
|
+
'observing',
|
|
27
|
+
'verifying',
|
|
28
|
+
]);
|
|
29
|
+
/** All states from which a task may fail. */
|
|
30
|
+
const FAILABLE_STATES = new Set([
|
|
31
|
+
'created',
|
|
32
|
+
'planning',
|
|
33
|
+
'awaiting_approval',
|
|
34
|
+
'executing',
|
|
35
|
+
'observing',
|
|
36
|
+
'verifying',
|
|
37
|
+
]);
|
|
38
|
+
/** States that accept no further transitions. */
|
|
39
|
+
const TERMINAL_STATES = new Set([
|
|
40
|
+
'completed',
|
|
41
|
+
'failed',
|
|
42
|
+
'cancelled',
|
|
43
|
+
]);
|
|
44
|
+
/**
|
|
45
|
+
* Explicit forward transition map.
|
|
46
|
+
* A transition is ONLY valid if it is listed here.
|
|
47
|
+
* Cancellation and failure are handled via their dedicated methods.
|
|
48
|
+
*/
|
|
49
|
+
const VALID_FORWARD_TRANSITIONS = new Map([
|
|
50
|
+
['created', new Set(['planning'])],
|
|
51
|
+
['planning', new Set(['awaiting_approval', 'executing'])],
|
|
52
|
+
['awaiting_approval', new Set(['executing', 'cancelled'])],
|
|
53
|
+
['executing', new Set(['observing'])],
|
|
54
|
+
['observing', new Set(['verifying', 'executing'])],
|
|
55
|
+
['verifying', new Set(['completed', 'executing', 'planning'])],
|
|
56
|
+
// Terminal states have no forward successors
|
|
57
|
+
['completed', new Set()],
|
|
58
|
+
['failed', new Set()],
|
|
59
|
+
['cancelled', new Set()],
|
|
60
|
+
]);
|
|
61
|
+
export class AgentStateMachine {
|
|
62
|
+
/**
|
|
63
|
+
* Validate and return the result of a requested forward transition.
|
|
64
|
+
* Does NOT mutate any task record directly — the caller must persist.
|
|
65
|
+
*/
|
|
66
|
+
static transition(currentState, targetState) {
|
|
67
|
+
if (TERMINAL_STATES.has(currentState)) {
|
|
68
|
+
return {
|
|
69
|
+
success: false,
|
|
70
|
+
previousState: currentState,
|
|
71
|
+
newState: currentState,
|
|
72
|
+
error: `Transition rejected: task is in terminal state '${currentState}' and cannot transition to '${targetState}'.`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const allowed = VALID_FORWARD_TRANSITIONS.get(currentState);
|
|
76
|
+
if (!allowed || !allowed.has(targetState)) {
|
|
77
|
+
return {
|
|
78
|
+
success: false,
|
|
79
|
+
previousState: currentState,
|
|
80
|
+
newState: currentState,
|
|
81
|
+
error: `Transition rejected: '${currentState}' → '${targetState}' is not a valid transition.`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
success: true,
|
|
86
|
+
previousState: currentState,
|
|
87
|
+
newState: targetState,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Validate a cancellation request.
|
|
92
|
+
* Cancellation is explicit and only allowed from non-terminal active states.
|
|
93
|
+
*/
|
|
94
|
+
static cancel(currentState) {
|
|
95
|
+
if (TERMINAL_STATES.has(currentState)) {
|
|
96
|
+
return {
|
|
97
|
+
success: false,
|
|
98
|
+
previousState: currentState,
|
|
99
|
+
newState: currentState,
|
|
100
|
+
error: `Cancellation rejected: task is already in terminal state '${currentState}'.`,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (!CANCELLABLE_STATES.has(currentState)) {
|
|
104
|
+
return {
|
|
105
|
+
success: false,
|
|
106
|
+
previousState: currentState,
|
|
107
|
+
newState: currentState,
|
|
108
|
+
error: `Cancellation rejected: state '${currentState}' is not cancellable.`,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
success: true,
|
|
113
|
+
previousState: currentState,
|
|
114
|
+
newState: 'cancelled',
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Validate a failure transition.
|
|
119
|
+
* Failure is explicit and allowed from any active non-terminal state.
|
|
120
|
+
*/
|
|
121
|
+
static fail(currentState) {
|
|
122
|
+
if (TERMINAL_STATES.has(currentState)) {
|
|
123
|
+
return {
|
|
124
|
+
success: false,
|
|
125
|
+
previousState: currentState,
|
|
126
|
+
newState: currentState,
|
|
127
|
+
error: `Failure rejected: task is already in terminal state '${currentState}'.`,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
if (!FAILABLE_STATES.has(currentState)) {
|
|
131
|
+
return {
|
|
132
|
+
success: false,
|
|
133
|
+
previousState: currentState,
|
|
134
|
+
newState: currentState,
|
|
135
|
+
error: `Failure rejected: state '${currentState}' cannot transition to 'failed'.`,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
success: true,
|
|
140
|
+
previousState: currentState,
|
|
141
|
+
newState: 'failed',
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/** Returns true if the given state is terminal. */
|
|
145
|
+
static isTerminal(state) {
|
|
146
|
+
return TERMINAL_STATES.has(state);
|
|
147
|
+
}
|
|
148
|
+
/** Returns the set of valid forward successor states for a given state. */
|
|
149
|
+
static validSuccessors(state) {
|
|
150
|
+
return Array.from(VALID_FORWARD_TRANSITIONS.get(state) ?? []);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=agentStateMachine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentStateMachine.js","sourceRoot":"","sources":["../../src/orchestration/agentStateMachine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { AgentTaskRepository } from '../storage/repositories/agentTaskRepository.js';
|
|
2
|
+
import type { AgentTask, AgentTaskState } from '../storage/repositories/types.js';
|
|
3
|
+
import { LogLevel } from '../common/logger.js';
|
|
4
|
+
export interface CreateAgentTaskDto {
|
|
5
|
+
id?: string;
|
|
6
|
+
projectId?: string | null;
|
|
7
|
+
title: string;
|
|
8
|
+
}
|
|
9
|
+
export interface TransitionAgentTaskDto {
|
|
10
|
+
targetState: AgentTaskState;
|
|
11
|
+
currentStep?: string | null;
|
|
12
|
+
plan?: string | null;
|
|
13
|
+
}
|
|
14
|
+
export interface FailAgentTaskDto {
|
|
15
|
+
errorCategory: string;
|
|
16
|
+
currentStep?: string | null;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* NEXUS AI — Agent Task Service
|
|
20
|
+
*
|
|
21
|
+
* Owns the lifecycle of agent tasks. All business logic
|
|
22
|
+
* (state transitions, validation, error handling) lives here.
|
|
23
|
+
* The repository layer is limited to persistence only.
|
|
24
|
+
*
|
|
25
|
+
* NOTE: This service manages task state only.
|
|
26
|
+
* State = executing does NOT grant permission to run tools.
|
|
27
|
+
* Tool authorization is handled in a separate P5-B sub-phase.
|
|
28
|
+
*/
|
|
29
|
+
export declare class AgentTaskService {
|
|
30
|
+
private taskRepo;
|
|
31
|
+
private logger;
|
|
32
|
+
constructor(taskRepo: AgentTaskRepository, logLevel?: LogLevel);
|
|
33
|
+
createTask(dto: CreateAgentTaskDto): AgentTask;
|
|
34
|
+
getTask(id: string): AgentTask;
|
|
35
|
+
listTasks(projectId?: string | null): AgentTask[];
|
|
36
|
+
getTasksByState(state: AgentTaskState): AgentTask[];
|
|
37
|
+
transitionTask(id: string, dto: TransitionAgentTaskDto): AgentTask;
|
|
38
|
+
setTaskPlan(id: string, plan: string): AgentTask;
|
|
39
|
+
cancelTask(id: string): AgentTask;
|
|
40
|
+
failTask(id: string, dto: FailAgentTaskDto): AgentTask;
|
|
41
|
+
completeTask(id: string): AgentTask;
|
|
42
|
+
deleteTask(id: string): boolean;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=agentTaskService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentTaskService.d.ts","sourceRoot":"","sources":["../../src/orchestration/agentTaskService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElF,OAAO,EAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,cAAc,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,QAAQ;IAHlB,OAAO,CAAC,MAAM,CAAS;gBAGb,QAAQ,EAAE,mBAAmB,EACrC,QAAQ,GAAE,QAAiB;IAS7B,UAAU,CAAC,GAAG,EAAE,kBAAkB,GAAG,SAAS;IAgB9C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS;IAQ9B,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE;IAOjD,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,EAAE;IAQnD,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,sBAAsB,GAAG,SAAS;IAkClE,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS;IAmBhD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS;IAgCjC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,SAAS;IAgCtD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS;IAQnC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAKhC"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { AgentStateMachine } from './agentStateMachine.js';
|
|
2
|
+
import { Logger } from '../common/logger.js';
|
|
3
|
+
/**
|
|
4
|
+
* NEXUS AI — Agent Task Service
|
|
5
|
+
*
|
|
6
|
+
* Owns the lifecycle of agent tasks. All business logic
|
|
7
|
+
* (state transitions, validation, error handling) lives here.
|
|
8
|
+
* The repository layer is limited to persistence only.
|
|
9
|
+
*
|
|
10
|
+
* NOTE: This service manages task state only.
|
|
11
|
+
* State = executing does NOT grant permission to run tools.
|
|
12
|
+
* Tool authorization is handled in a separate P5-B sub-phase.
|
|
13
|
+
*/
|
|
14
|
+
export class AgentTaskService {
|
|
15
|
+
taskRepo;
|
|
16
|
+
logger;
|
|
17
|
+
constructor(taskRepo, logLevel = 'info') {
|
|
18
|
+
this.taskRepo = taskRepo;
|
|
19
|
+
this.logger = new Logger('AgentTaskService', logLevel);
|
|
20
|
+
}
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Creation
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
createTask(dto) {
|
|
25
|
+
const id = dto.id ?? `task-${Date.now()}-${Math.random().toString(36).substring(2, 7)}`;
|
|
26
|
+
this.logger.info(`Creating agent task`, { taskId: id, title: dto.title });
|
|
27
|
+
return this.taskRepo.create({
|
|
28
|
+
id,
|
|
29
|
+
projectId: dto.projectId ?? null,
|
|
30
|
+
title: dto.title,
|
|
31
|
+
plan: null,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Retrieval
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
getTask(id) {
|
|
38
|
+
const task = this.taskRepo.findById(id);
|
|
39
|
+
if (!task) {
|
|
40
|
+
throw new Error(`AgentTask not found: '${id}'`);
|
|
41
|
+
}
|
|
42
|
+
return task;
|
|
43
|
+
}
|
|
44
|
+
listTasks(projectId) {
|
|
45
|
+
if (projectId === undefined) {
|
|
46
|
+
return this.taskRepo.listAll();
|
|
47
|
+
}
|
|
48
|
+
return this.taskRepo.listByProject(projectId);
|
|
49
|
+
}
|
|
50
|
+
getTasksByState(state) {
|
|
51
|
+
return this.taskRepo.findByState(state);
|
|
52
|
+
}
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
// State transitions (forward)
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
transitionTask(id, dto) {
|
|
57
|
+
const task = this.getTask(id);
|
|
58
|
+
const result = AgentStateMachine.transition(task.state, dto.targetState);
|
|
59
|
+
if (!result.success) {
|
|
60
|
+
this.logger.warn(`State transition rejected`, {
|
|
61
|
+
taskId: id,
|
|
62
|
+
from: result.previousState,
|
|
63
|
+
to: dto.targetState,
|
|
64
|
+
reason: result.error,
|
|
65
|
+
});
|
|
66
|
+
throw new Error(result.error);
|
|
67
|
+
}
|
|
68
|
+
this.logger.info(`Agent task state transition`, {
|
|
69
|
+
taskId: id,
|
|
70
|
+
from: result.previousState,
|
|
71
|
+
to: result.newState,
|
|
72
|
+
});
|
|
73
|
+
this.taskRepo.updateState(id, {
|
|
74
|
+
state: result.newState,
|
|
75
|
+
currentStep: dto.currentStep ?? null,
|
|
76
|
+
stepStatus: result.newState === 'completed' ? 'done' : 'active',
|
|
77
|
+
attemptCount: task.attemptCount,
|
|
78
|
+
errorCategory: null,
|
|
79
|
+
cancelledAt: null,
|
|
80
|
+
completedAt: result.newState === 'completed' ? new Date().toISOString() : null,
|
|
81
|
+
plan: dto.plan ?? undefined,
|
|
82
|
+
});
|
|
83
|
+
return this.getTask(id);
|
|
84
|
+
}
|
|
85
|
+
setTaskPlan(id, plan) {
|
|
86
|
+
const task = this.getTask(id);
|
|
87
|
+
this.taskRepo.updateState(id, {
|
|
88
|
+
state: task.state,
|
|
89
|
+
currentStep: task.currentStep,
|
|
90
|
+
stepStatus: task.stepStatus,
|
|
91
|
+
attemptCount: task.attemptCount,
|
|
92
|
+
errorCategory: task.errorCategory,
|
|
93
|
+
cancelledAt: task.cancelledAt,
|
|
94
|
+
completedAt: task.completedAt,
|
|
95
|
+
plan,
|
|
96
|
+
});
|
|
97
|
+
return this.getTask(id);
|
|
98
|
+
}
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
// Terminal transitions
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
cancelTask(id) {
|
|
103
|
+
const task = this.getTask(id);
|
|
104
|
+
const result = AgentStateMachine.cancel(task.state);
|
|
105
|
+
if (!result.success) {
|
|
106
|
+
this.logger.warn(`Task cancellation rejected`, {
|
|
107
|
+
taskId: id,
|
|
108
|
+
currentState: task.state,
|
|
109
|
+
reason: result.error,
|
|
110
|
+
});
|
|
111
|
+
throw new Error(result.error);
|
|
112
|
+
}
|
|
113
|
+
this.logger.info(`Agent task cancelled`, {
|
|
114
|
+
taskId: id,
|
|
115
|
+
previousState: result.previousState,
|
|
116
|
+
});
|
|
117
|
+
const now = new Date().toISOString();
|
|
118
|
+
this.taskRepo.updateState(id, {
|
|
119
|
+
state: 'cancelled',
|
|
120
|
+
currentStep: task.currentStep,
|
|
121
|
+
stepStatus: 'error',
|
|
122
|
+
attemptCount: task.attemptCount,
|
|
123
|
+
errorCategory: null,
|
|
124
|
+
cancelledAt: now,
|
|
125
|
+
completedAt: null,
|
|
126
|
+
});
|
|
127
|
+
return this.getTask(id);
|
|
128
|
+
}
|
|
129
|
+
failTask(id, dto) {
|
|
130
|
+
const task = this.getTask(id);
|
|
131
|
+
const result = AgentStateMachine.fail(task.state);
|
|
132
|
+
if (!result.success) {
|
|
133
|
+
this.logger.warn(`Task failure transition rejected`, {
|
|
134
|
+
taskId: id,
|
|
135
|
+
currentState: task.state,
|
|
136
|
+
reason: result.error,
|
|
137
|
+
});
|
|
138
|
+
throw new Error(result.error);
|
|
139
|
+
}
|
|
140
|
+
this.logger.error(`Agent task failed`, {
|
|
141
|
+
taskId: id,
|
|
142
|
+
previousState: result.previousState,
|
|
143
|
+
errorCategory: dto.errorCategory,
|
|
144
|
+
});
|
|
145
|
+
this.taskRepo.updateState(id, {
|
|
146
|
+
state: 'failed',
|
|
147
|
+
currentStep: dto.currentStep ?? task.currentStep,
|
|
148
|
+
stepStatus: 'error',
|
|
149
|
+
attemptCount: task.attemptCount,
|
|
150
|
+
errorCategory: dto.errorCategory,
|
|
151
|
+
cancelledAt: null,
|
|
152
|
+
completedAt: null,
|
|
153
|
+
});
|
|
154
|
+
return this.getTask(id);
|
|
155
|
+
}
|
|
156
|
+
completeTask(id) {
|
|
157
|
+
return this.transitionTask(id, { targetState: 'completed' });
|
|
158
|
+
}
|
|
159
|
+
// ---------------------------------------------------------------------------
|
|
160
|
+
// Deletion
|
|
161
|
+
// ---------------------------------------------------------------------------
|
|
162
|
+
deleteTask(id) {
|
|
163
|
+
const task = this.getTask(id);
|
|
164
|
+
this.logger.info(`Deleting agent task`, { taskId: id, state: task.state });
|
|
165
|
+
return this.taskRepo.deleteById(id);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=agentTaskService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentTaskService.js","sourceRoot":"","sources":["../../src/orchestration/agentTaskService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS AI — P6-D: Coding Agent Codebase Discovery
|
|
3
|
+
*
|
|
4
|
+
* Gathers bounded, secret-safe codebase evidence using registered discovery tools:
|
|
5
|
+
* - workspace_tree
|
|
6
|
+
* - code_search
|
|
7
|
+
* - filesystem_read
|
|
8
|
+
*
|
|
9
|
+
* SECURITY INVARIANTS:
|
|
10
|
+
* - Workspace sandboxed — paths outside workspace are rejected.
|
|
11
|
+
* - Secret-safe — secret files (.env, *.key, *.pem, id_rsa, credentials.json) are excluded.
|
|
12
|
+
* - Bounded — snippet lengths and file counts are capped to prevent context overflow.
|
|
13
|
+
* - Read-only — zero filesystem modifications.
|
|
14
|
+
*/
|
|
15
|
+
import type { ToolGateway } from '../tools/index.js';
|
|
16
|
+
import type { CodebaseEvidence } from './codingAgentTypes.js';
|
|
17
|
+
import { LogLevel } from '../common/logger.js';
|
|
18
|
+
export declare class CodingAgentDiscovery {
|
|
19
|
+
private toolGateway;
|
|
20
|
+
private logger;
|
|
21
|
+
constructor(toolGateway: ToolGateway, logLevel?: LogLevel);
|
|
22
|
+
/**
|
|
23
|
+
* Discover evidence for a user task goal within the configured workspace.
|
|
24
|
+
*
|
|
25
|
+
* @param taskId Unique task ID.
|
|
26
|
+
* @param goal User task goal string.
|
|
27
|
+
* @param searchKeywords Keywords extracted or inferred for code search.
|
|
28
|
+
* @returns Bounded, secret-safe CodebaseEvidence object.
|
|
29
|
+
*/
|
|
30
|
+
discoverCodebase(taskId: string, goal: string, searchKeywords?: string[]): Promise<CodebaseEvidence>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=codingAgentDiscovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codingAgentDiscovery.d.ts","sourceRoot":"","sources":["../../src/orchestration/codingAgentDiscovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAA8C,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEvD,qBAAa,oBAAoB;IAI7B,OAAO,CAAC,WAAW;IAHrB,OAAO,CAAC,MAAM,CAAS;gBAGb,WAAW,EAAE,WAAW,EAChC,QAAQ,GAAE,QAAiB;IAK7B;;;;;;;OAOG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,cAAc,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,gBAAgB,CAAC;CAyI7B"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS AI — P6-D: Coding Agent Codebase Discovery
|
|
3
|
+
*
|
|
4
|
+
* Gathers bounded, secret-safe codebase evidence using registered discovery tools:
|
|
5
|
+
* - workspace_tree
|
|
6
|
+
* - code_search
|
|
7
|
+
* - filesystem_read
|
|
8
|
+
*
|
|
9
|
+
* SECURITY INVARIANTS:
|
|
10
|
+
* - Workspace sandboxed — paths outside workspace are rejected.
|
|
11
|
+
* - Secret-safe — secret files (.env, *.key, *.pem, id_rsa, credentials.json) are excluded.
|
|
12
|
+
* - Bounded — snippet lengths and file counts are capped to prevent context overflow.
|
|
13
|
+
* - Read-only — zero filesystem modifications.
|
|
14
|
+
*/
|
|
15
|
+
import { isSecretFile } from '../tools/index.js';
|
|
16
|
+
import { Logger } from '../common/logger.js';
|
|
17
|
+
export class CodingAgentDiscovery {
|
|
18
|
+
toolGateway;
|
|
19
|
+
logger;
|
|
20
|
+
constructor(toolGateway, logLevel = 'info') {
|
|
21
|
+
this.toolGateway = toolGateway;
|
|
22
|
+
this.logger = new Logger('CodingAgentDiscovery', logLevel);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Discover evidence for a user task goal within the configured workspace.
|
|
26
|
+
*
|
|
27
|
+
* @param taskId Unique task ID.
|
|
28
|
+
* @param goal User task goal string.
|
|
29
|
+
* @param searchKeywords Keywords extracted or inferred for code search.
|
|
30
|
+
* @returns Bounded, secret-safe CodebaseEvidence object.
|
|
31
|
+
*/
|
|
32
|
+
async discoverCodebase(taskId, goal, searchKeywords = []) {
|
|
33
|
+
this.logger.info(`Starting codebase discovery for task`, { taskId, goal });
|
|
34
|
+
const secretFilesExcluded = [];
|
|
35
|
+
const discoveredFiles = [];
|
|
36
|
+
const searchResults = [];
|
|
37
|
+
let treeEntriesCount = 0;
|
|
38
|
+
let packageInfo = undefined;
|
|
39
|
+
// 1. Explore workspace directory tree (bounded)
|
|
40
|
+
const treeReqId = `req-tree-${taskId}`;
|
|
41
|
+
const treeResult = this.toolGateway.executeTool({
|
|
42
|
+
requestId: treeReqId,
|
|
43
|
+
taskId,
|
|
44
|
+
toolId: 'workspace_tree',
|
|
45
|
+
requestedCapabilities: ['filesystem.read'],
|
|
46
|
+
params: { path: '.', maxDepth: 4, maxEntries: 200 },
|
|
47
|
+
});
|
|
48
|
+
const resolvedTreeResult = treeResult instanceof Promise ? await treeResult : treeResult;
|
|
49
|
+
if (resolvedTreeResult.success && resolvedTreeResult.output?.entries) {
|
|
50
|
+
const rawEntries = resolvedTreeResult.output.entries;
|
|
51
|
+
treeEntriesCount = rawEntries.length;
|
|
52
|
+
for (const entry of rawEntries) {
|
|
53
|
+
if (isSecretFile(entry.path)) {
|
|
54
|
+
secretFilesExcluded.push(entry.path);
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (entry.type === 'file') {
|
|
58
|
+
discoveredFiles.push({
|
|
59
|
+
relativePath: entry.path,
|
|
60
|
+
size: entry.size,
|
|
61
|
+
isSecret: false,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// 2. Read package.json if present for project context
|
|
67
|
+
const hasPackageJson = discoveredFiles.some((f) => f.relativePath === 'package.json');
|
|
68
|
+
if (hasPackageJson) {
|
|
69
|
+
const readPkgResult = this.toolGateway.executeTool({
|
|
70
|
+
requestId: `req-pkg-${taskId}`,
|
|
71
|
+
taskId,
|
|
72
|
+
toolId: 'filesystem_read',
|
|
73
|
+
requestedCapabilities: ['filesystem.read'],
|
|
74
|
+
params: { relativePath: 'package.json' },
|
|
75
|
+
});
|
|
76
|
+
const resolvedPkg = readPkgResult instanceof Promise ? await readPkgResult : readPkgResult;
|
|
77
|
+
if (resolvedPkg.success && typeof resolvedPkg.output?.content === 'string') {
|
|
78
|
+
try {
|
|
79
|
+
const parsed = JSON.parse(resolvedPkg.output.content);
|
|
80
|
+
packageInfo = {
|
|
81
|
+
name: parsed.name,
|
|
82
|
+
version: parsed.version,
|
|
83
|
+
scripts: parsed.scripts,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
/* ignore parse error */
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// 3. Search code for relevant terms in task goal & keywords
|
|
92
|
+
const keywordsToSearch = new Set();
|
|
93
|
+
for (const kw of searchKeywords) {
|
|
94
|
+
if (kw && kw.trim().length >= 3) {
|
|
95
|
+
keywordsToSearch.add(kw.trim());
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Extract identifiers from task goal
|
|
99
|
+
const goalTokens = goal.match(/\b[a-zA-Z_][a-zA-Z0-9_\-\.]*\b/g) || [];
|
|
100
|
+
for (const token of goalTokens) {
|
|
101
|
+
if (token.length >= 4 && !['task', 'fix', 'code', 'file', 'test', 'run', 'make', 'with', 'from', 'that', 'this'].includes(token.toLowerCase())) {
|
|
102
|
+
keywordsToSearch.add(token);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
for (const kw of Array.from(keywordsToSearch).slice(0, 3)) {
|
|
106
|
+
const searchRes = this.toolGateway.executeTool({
|
|
107
|
+
requestId: `req-search-${taskId}-${kw}`,
|
|
108
|
+
taskId,
|
|
109
|
+
toolId: 'code_search',
|
|
110
|
+
requestedCapabilities: ['filesystem.read'],
|
|
111
|
+
params: { query: kw, path: '.', maxResults: 10 },
|
|
112
|
+
});
|
|
113
|
+
const resolvedSearch = searchRes instanceof Promise ? await searchRes : searchRes;
|
|
114
|
+
if (resolvedSearch.success && Array.isArray(resolvedSearch.output?.results)) {
|
|
115
|
+
const matches = resolvedSearch.output.results;
|
|
116
|
+
for (const m of matches) {
|
|
117
|
+
if (isSecretFile(m.path)) {
|
|
118
|
+
if (!secretFilesExcluded.includes(m.path)) {
|
|
119
|
+
secretFilesExcluded.push(m.path);
|
|
120
|
+
}
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
searchResults.push({
|
|
124
|
+
relativePath: m.path,
|
|
125
|
+
line: m.line,
|
|
126
|
+
match: m.match,
|
|
127
|
+
snippet: m.snippet.slice(0, 200), // bounded snippet length
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
this.logger.info(`Codebase discovery completed`, {
|
|
133
|
+
taskId,
|
|
134
|
+
filesDiscoveredCount: discoveredFiles.length,
|
|
135
|
+
searchResultsCount: searchResults.length,
|
|
136
|
+
secretsExcludedCount: secretFilesExcluded.length,
|
|
137
|
+
});
|
|
138
|
+
return {
|
|
139
|
+
workspaceRoot: '.',
|
|
140
|
+
discoveredFiles: discoveredFiles.slice(0, 50), // bounded file count
|
|
141
|
+
searchResults: searchResults.slice(0, 20), // bounded search results
|
|
142
|
+
treeEntriesCount,
|
|
143
|
+
packageInfo,
|
|
144
|
+
secretFilesExcluded,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=codingAgentDiscovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codingAgentDiscovery.js","sourceRoot":"","sources":["../../src/orchestration/codingAgentDiscovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS AI — P6-D: Coding Agent Service
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the full coding-agent lifecycle:
|
|
5
|
+
* Discovery -> Plan Synthesis -> Plan Validation -> Permission & Approval Evaluation
|
|
6
|
+
* -> Execution -> Validation Commands -> Verification -> Bounded Repair Loop -> Completion.
|
|
7
|
+
*
|
|
8
|
+
* SECURITY INVARIANTS:
|
|
9
|
+
* - Orchestrator ONLY. Does NOT bypass PlanValidator, PermissionEngine, ApprovalGate, or ToolExecutor.
|
|
10
|
+
* - Non-repairable security errors (PERMISSION_DENIED, PATH_TRAVERSAL_DENIED, etc.) stop repair loops immediately.
|
|
11
|
+
* - Strict repair attempt budget (default 3 retries max) prevents infinite loops.
|
|
12
|
+
* - APPROVAL != PERMISSION: Human approval never grants permission if policy denies it.
|
|
13
|
+
*/
|
|
14
|
+
import type { AgentTaskService } from './agentTaskService.js';
|
|
15
|
+
import type { AgentExecutionService } from './agentExecutionService.js';
|
|
16
|
+
import type { PlanSynthesisService } from './planner.js';
|
|
17
|
+
import type { PlanValidator } from './planner.js';
|
|
18
|
+
import type { ToolGateway } from '../tools/index.js';
|
|
19
|
+
import type { CodingAgentTaskOptions, CodingAgentRunResult } from './codingAgentTypes.js';
|
|
20
|
+
import { LogLevel } from '../common/logger.js';
|
|
21
|
+
export declare class CodingAgentService {
|
|
22
|
+
private taskService;
|
|
23
|
+
private toolGateway;
|
|
24
|
+
private executionService?;
|
|
25
|
+
private planner?;
|
|
26
|
+
private planValidator?;
|
|
27
|
+
private discovery;
|
|
28
|
+
private verifier;
|
|
29
|
+
private repairService?;
|
|
30
|
+
private logger;
|
|
31
|
+
constructor(taskService: AgentTaskService, toolGateway: ToolGateway, executionService?: AgentExecutionService | undefined, planner?: PlanSynthesisService | undefined, planValidator?: PlanValidator | undefined, logLevel?: LogLevel);
|
|
32
|
+
/**
|
|
33
|
+
* Run a full coding task with bounded discovery, planning, execution, validation, and repair loop.
|
|
34
|
+
*
|
|
35
|
+
* @param options Coding agent task configuration options.
|
|
36
|
+
* @returns Deterministic CodingAgentRunResult.
|
|
37
|
+
*/
|
|
38
|
+
runCodingTask(options: CodingAgentTaskOptions): Promise<CodingAgentRunResult>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=codingAgentService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codingAgentService.d.ts","sourceRoot":"","sources":["../../src/orchestration/codingAgentService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EAIrB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEvD,qBAAa,kBAAkB;IAO3B,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,gBAAgB,CAAC;IACzB,OAAO,CAAC,OAAO,CAAC;IAChB,OAAO,CAAC,aAAa,CAAC;IAVxB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,aAAa,CAAC,CAAsB;IAC5C,OAAO,CAAC,MAAM,CAAS;gBAGb,WAAW,EAAE,gBAAgB,EAC7B,WAAW,EAAE,WAAW,EACxB,gBAAgB,CAAC,EAAE,qBAAqB,YAAA,EACxC,OAAO,CAAC,EAAE,oBAAoB,YAAA,EAC9B,aAAa,CAAC,EAAE,aAAa,YAAA,EACrC,QAAQ,GAAE,QAAiB;IAW7B;;;;;OAKG;IACG,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA2SpF"}
|