@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,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS AI — Approval Gate
|
|
3
|
+
*
|
|
4
|
+
* Deterministic execution gate positioned immediately before tool execution.
|
|
5
|
+
* Evaluates human approval status for a given task step.
|
|
6
|
+
*
|
|
7
|
+
* Pipeline sequence:
|
|
8
|
+
* Plan -> PlanValidator -> PermissionEngine -> ApprovalPolicyEngine -> ApprovalGate -> ToolExecutor
|
|
9
|
+
*
|
|
10
|
+
* SECURITY GUARANTEES:
|
|
11
|
+
* - Missing, pending, rejected, expired, or cancelled approvals BLOCK execution completely.
|
|
12
|
+
* - Approval DOES NOT grant authorization — PermissionEngine remains mandatory.
|
|
13
|
+
*/
|
|
14
|
+
import { Logger } from '../common/logger.js';
|
|
15
|
+
export class ApprovalGate {
|
|
16
|
+
logger;
|
|
17
|
+
constructor(logLevel = 'info') {
|
|
18
|
+
this.logger = new Logger('ApprovalGate', logLevel);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Evaluate whether execution is permitted according to the approval request state.
|
|
22
|
+
*/
|
|
23
|
+
evaluateGate(approvalRequest) {
|
|
24
|
+
if (!approvalRequest) {
|
|
25
|
+
this.logger.warn('Approval gate evaluation rejected: no approval request provided');
|
|
26
|
+
return {
|
|
27
|
+
allowed: false,
|
|
28
|
+
reason: 'No approval request found for step execution.',
|
|
29
|
+
status: 'rejected',
|
|
30
|
+
requiresUserAction: false,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const { approvalId, taskId, stepId, toolId, status, expiresAt } = approvalRequest;
|
|
34
|
+
// Check expiration if pending
|
|
35
|
+
if (status === 'pending') {
|
|
36
|
+
const nowIso = new Date().toISOString();
|
|
37
|
+
if (expiresAt <= nowIso) {
|
|
38
|
+
this.logger.warn(`Approval gate evaluation rejected: approval request '${approvalId}' expired`, {
|
|
39
|
+
approvalId,
|
|
40
|
+
taskId,
|
|
41
|
+
stepId,
|
|
42
|
+
toolId,
|
|
43
|
+
expiresAt,
|
|
44
|
+
});
|
|
45
|
+
return {
|
|
46
|
+
allowed: false,
|
|
47
|
+
reason: `Human approval request '${approvalId}' expired at ${expiresAt}.`,
|
|
48
|
+
approvalId,
|
|
49
|
+
status: 'expired',
|
|
50
|
+
requiresUserAction: false,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
this.logger.info(`Approval gate evaluation halted: approval request '${approvalId}' is pending user decision`, {
|
|
54
|
+
approvalId,
|
|
55
|
+
taskId,
|
|
56
|
+
stepId,
|
|
57
|
+
toolId,
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
allowed: false,
|
|
61
|
+
reason: `Human approval is pending for step '${stepId}' using tool '${toolId}'.`,
|
|
62
|
+
approvalId,
|
|
63
|
+
status: 'pending',
|
|
64
|
+
requiresUserAction: true,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
if (status === 'approved') {
|
|
68
|
+
this.logger.info(`Approval gate evaluation passed: approval request '${approvalId}' is approved`, {
|
|
69
|
+
approvalId,
|
|
70
|
+
taskId,
|
|
71
|
+
stepId,
|
|
72
|
+
toolId,
|
|
73
|
+
});
|
|
74
|
+
return {
|
|
75
|
+
allowed: true,
|
|
76
|
+
reason: 'Human approval granted.',
|
|
77
|
+
approvalId,
|
|
78
|
+
status: 'approved',
|
|
79
|
+
requiresUserAction: false,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (status === 'rejected') {
|
|
83
|
+
this.logger.warn(`Approval gate evaluation rejected: approval request '${approvalId}' was rejected`, {
|
|
84
|
+
approvalId,
|
|
85
|
+
taskId,
|
|
86
|
+
stepId,
|
|
87
|
+
toolId,
|
|
88
|
+
});
|
|
89
|
+
return {
|
|
90
|
+
allowed: false,
|
|
91
|
+
reason: `Human approval was rejected for step '${stepId}'.`,
|
|
92
|
+
approvalId,
|
|
93
|
+
status: 'rejected',
|
|
94
|
+
requiresUserAction: false,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
if (status === 'expired') {
|
|
98
|
+
this.logger.warn(`Approval gate evaluation rejected: approval request '${approvalId}' is expired`, {
|
|
99
|
+
approvalId,
|
|
100
|
+
taskId,
|
|
101
|
+
stepId,
|
|
102
|
+
toolId,
|
|
103
|
+
});
|
|
104
|
+
return {
|
|
105
|
+
allowed: false,
|
|
106
|
+
reason: `Human approval request '${approvalId}' has expired.`,
|
|
107
|
+
approvalId,
|
|
108
|
+
status: 'expired',
|
|
109
|
+
requiresUserAction: false,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
if (status === 'cancelled') {
|
|
113
|
+
this.logger.warn(`Approval gate evaluation rejected: approval request '${approvalId}' was cancelled`, {
|
|
114
|
+
approvalId,
|
|
115
|
+
taskId,
|
|
116
|
+
stepId,
|
|
117
|
+
toolId,
|
|
118
|
+
});
|
|
119
|
+
return {
|
|
120
|
+
allowed: false,
|
|
121
|
+
reason: `Human approval request '${approvalId}' was cancelled.`,
|
|
122
|
+
approvalId,
|
|
123
|
+
status: 'cancelled',
|
|
124
|
+
requiresUserAction: false,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
this.logger.error(`Approval gate evaluation failed: invalid approval status '${String(status)}'`, { approvalId });
|
|
128
|
+
return {
|
|
129
|
+
allowed: false,
|
|
130
|
+
reason: `Invalid approval status '${String(status)}'.`,
|
|
131
|
+
approvalId,
|
|
132
|
+
status,
|
|
133
|
+
requiresUserAction: false,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=approvalGate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvalGate.js","sourceRoot":"","sources":["../../src/tools/approvalGate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS AI — Approval Policy Engine
|
|
3
|
+
*
|
|
4
|
+
* Deterministically classifies planned tool actions according to risk and policy
|
|
5
|
+
* rules to determine whether explicit human approval is required before execution.
|
|
6
|
+
*
|
|
7
|
+
* Security Invariant:
|
|
8
|
+
* - Default behavior is SAFE.
|
|
9
|
+
* - Unknown tools, disabled tools, or unrecognized risk levels default to POLICY_DENIED or REQUIRES_APPROVAL.
|
|
10
|
+
* - No permissive fallbacks exist.
|
|
11
|
+
*/
|
|
12
|
+
import type { ToolDefinition, ToolCapability } from './types.js';
|
|
13
|
+
import type { ApprovalDecision, ApprovalPolicyConfig } from './approvalTypes.js';
|
|
14
|
+
import { LogLevel } from '../common/logger.js';
|
|
15
|
+
export declare class ApprovalPolicyEngine {
|
|
16
|
+
private config;
|
|
17
|
+
private logger;
|
|
18
|
+
constructor(config?: Partial<ApprovalPolicyConfig>, logLevel?: LogLevel);
|
|
19
|
+
/**
|
|
20
|
+
* Deterministically evaluate whether a requested tool action requires human approval.
|
|
21
|
+
*/
|
|
22
|
+
evaluate(toolDef: ToolDefinition | null, requestedCapability: ToolCapability): ApprovalDecision;
|
|
23
|
+
/**
|
|
24
|
+
* Get current approval policy configuration.
|
|
25
|
+
*/
|
|
26
|
+
getConfig(): Readonly<ApprovalPolicyConfig>;
|
|
27
|
+
/**
|
|
28
|
+
* Update approval policy configuration.
|
|
29
|
+
*/
|
|
30
|
+
updateConfig(config: Partial<ApprovalPolicyConfig>): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=approvalPolicyEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvalPolicyEngine.d.ts","sourceRoot":"","sources":["../../src/tools/approvalPolicyEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAiB,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEvD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,QAAQ,GAAE,QAAiB;IAK/E;;OAEG;IACH,QAAQ,CACN,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,mBAAmB,EAAE,cAAc,GAClC,gBAAgB;IAiHnB;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,oBAAoB,CAAC;IAI3C;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI;CAG1D"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS AI — Approval Policy Engine
|
|
3
|
+
*
|
|
4
|
+
* Deterministically classifies planned tool actions according to risk and policy
|
|
5
|
+
* rules to determine whether explicit human approval is required before execution.
|
|
6
|
+
*
|
|
7
|
+
* Security Invariant:
|
|
8
|
+
* - Default behavior is SAFE.
|
|
9
|
+
* - Unknown tools, disabled tools, or unrecognized risk levels default to POLICY_DENIED or REQUIRES_APPROVAL.
|
|
10
|
+
* - No permissive fallbacks exist.
|
|
11
|
+
*/
|
|
12
|
+
import { DEFAULT_APPROVAL_POLICY_CONFIG } from './approvalTypes.js';
|
|
13
|
+
import { Logger } from '../common/logger.js';
|
|
14
|
+
export class ApprovalPolicyEngine {
|
|
15
|
+
config;
|
|
16
|
+
logger;
|
|
17
|
+
constructor(config, logLevel = 'info') {
|
|
18
|
+
this.config = { ...DEFAULT_APPROVAL_POLICY_CONFIG, ...config };
|
|
19
|
+
this.logger = new Logger('ApprovalPolicyEngine', logLevel);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Deterministically evaluate whether a requested tool action requires human approval.
|
|
23
|
+
*/
|
|
24
|
+
evaluate(toolDef, requestedCapability) {
|
|
25
|
+
// 1. Tool availability check
|
|
26
|
+
if (!toolDef) {
|
|
27
|
+
this.logger.warn(`Approval policy evaluation failed: tool definition is null`);
|
|
28
|
+
return {
|
|
29
|
+
requiresApproval: false,
|
|
30
|
+
decision: 'POLICY_DENIED',
|
|
31
|
+
reason: 'Tool is not registered in the system tool registry.',
|
|
32
|
+
riskLevel: 'high',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (!toolDef.enabled) {
|
|
36
|
+
this.logger.warn(`Approval policy evaluation failed: tool '${toolDef.id}' is disabled`);
|
|
37
|
+
return {
|
|
38
|
+
requiresApproval: false,
|
|
39
|
+
decision: 'POLICY_DENIED',
|
|
40
|
+
reason: `Tool '${toolDef.id}' is disabled in the system tool registry.`,
|
|
41
|
+
riskLevel: toolDef.riskLevel || 'high',
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// 2. Capability verification
|
|
45
|
+
if (!toolDef.requiredPermissions.includes(requestedCapability)) {
|
|
46
|
+
this.logger.warn(`Approval policy evaluation failed: tool '${toolDef.id}' does not support capability '${requestedCapability}'`);
|
|
47
|
+
return {
|
|
48
|
+
requiresApproval: false,
|
|
49
|
+
decision: 'POLICY_DENIED',
|
|
50
|
+
reason: `Tool '${toolDef.id}' does not declare requested capability '${requestedCapability}'.`,
|
|
51
|
+
riskLevel: toolDef.riskLevel || 'high',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const riskLevel = toolDef.riskLevel;
|
|
55
|
+
// 3. Risk-based deterministic policy decision
|
|
56
|
+
switch (riskLevel) {
|
|
57
|
+
case 'low':
|
|
58
|
+
if (this.config.autoApproveLowRisk) {
|
|
59
|
+
return {
|
|
60
|
+
requiresApproval: false,
|
|
61
|
+
decision: 'AUTO_APPROVED',
|
|
62
|
+
reason: 'Low-risk operation automatically approved by security policy.',
|
|
63
|
+
riskLevel: 'low',
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
requiresApproval: true,
|
|
68
|
+
decision: 'REQUIRES_APPROVAL',
|
|
69
|
+
reason: 'Low-risk operation requires explicit human approval per current policy configuration.',
|
|
70
|
+
riskLevel: 'low',
|
|
71
|
+
};
|
|
72
|
+
case 'medium':
|
|
73
|
+
if (this.config.requireApprovalForMediumRisk) {
|
|
74
|
+
return {
|
|
75
|
+
requiresApproval: true,
|
|
76
|
+
decision: 'REQUIRES_APPROVAL',
|
|
77
|
+
reason: 'Medium-risk tool action requires explicit human approval.',
|
|
78
|
+
riskLevel: 'medium',
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
requiresApproval: false,
|
|
83
|
+
decision: 'AUTO_APPROVED',
|
|
84
|
+
reason: 'Medium-risk operation auto-approved by custom policy configuration.',
|
|
85
|
+
riskLevel: 'medium',
|
|
86
|
+
};
|
|
87
|
+
case 'high':
|
|
88
|
+
if (this.config.requireApprovalForHighRisk) {
|
|
89
|
+
return {
|
|
90
|
+
requiresApproval: true,
|
|
91
|
+
decision: 'REQUIRES_APPROVAL',
|
|
92
|
+
reason: 'High-risk tool action requires explicit human approval.',
|
|
93
|
+
riskLevel: 'high',
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
requiresApproval: false,
|
|
98
|
+
decision: 'AUTO_APPROVED',
|
|
99
|
+
reason: 'High-risk operation auto-approved by custom policy configuration.',
|
|
100
|
+
riskLevel: 'high',
|
|
101
|
+
};
|
|
102
|
+
case 'critical':
|
|
103
|
+
if (this.config.requireApprovalForCriticalRisk) {
|
|
104
|
+
return {
|
|
105
|
+
requiresApproval: true,
|
|
106
|
+
decision: 'REQUIRES_APPROVAL',
|
|
107
|
+
reason: 'Critical-risk tool action requires explicit human approval.',
|
|
108
|
+
riskLevel: 'critical',
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
requiresApproval: false,
|
|
113
|
+
decision: 'POLICY_DENIED',
|
|
114
|
+
reason: 'Critical-risk operation denied by default policy.',
|
|
115
|
+
riskLevel: 'critical',
|
|
116
|
+
};
|
|
117
|
+
default:
|
|
118
|
+
// Unknown risk level handling — default safe policy is DENY or REQUIRE APPROVAL
|
|
119
|
+
this.logger.warn(`Unknown risk level '${String(riskLevel)}' encountered for tool '${toolDef.id}'`);
|
|
120
|
+
return {
|
|
121
|
+
requiresApproval: true,
|
|
122
|
+
decision: 'REQUIRES_APPROVAL',
|
|
123
|
+
reason: `Unknown risk level '${String(riskLevel)}' requires explicit human approval.`,
|
|
124
|
+
riskLevel: 'high',
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get current approval policy configuration.
|
|
130
|
+
*/
|
|
131
|
+
getConfig() {
|
|
132
|
+
return { ...this.config };
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Update approval policy configuration.
|
|
136
|
+
*/
|
|
137
|
+
updateConfig(config) {
|
|
138
|
+
this.config = { ...this.config, ...config };
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=approvalPolicyEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvalPolicyEngine.js","sourceRoot":"","sources":["../../src/tools/approvalPolicyEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS AI — P5-F: Human Approval & Execution Control Types
|
|
3
|
+
*
|
|
4
|
+
* Provides normalized data contracts, states, policy configurations,
|
|
5
|
+
* and decision structures for the human approval system.
|
|
6
|
+
*/
|
|
7
|
+
import type { ToolCapability, ToolRiskLevel } from './types.js';
|
|
8
|
+
export type ApprovalStatus = 'pending' | 'approved' | 'rejected' | 'expired' | 'cancelled';
|
|
9
|
+
/**
|
|
10
|
+
* Terminal approval states that must never be reopened.
|
|
11
|
+
*/
|
|
12
|
+
export declare const TERMINAL_APPROVAL_STATES: ReadonlySet<ApprovalStatus>;
|
|
13
|
+
/**
|
|
14
|
+
* Structured approval request metadata.
|
|
15
|
+
* Note: Secrets, full prompts, model responses, and raw document contents are EXCLUDED.
|
|
16
|
+
*/
|
|
17
|
+
export interface ApprovalRequest {
|
|
18
|
+
approvalId: string;
|
|
19
|
+
taskId: string;
|
|
20
|
+
planId?: string;
|
|
21
|
+
stepId: string;
|
|
22
|
+
toolId: string;
|
|
23
|
+
riskLevel: ToolRiskLevel;
|
|
24
|
+
requestedCapability: ToolCapability;
|
|
25
|
+
status: ApprovalStatus;
|
|
26
|
+
createdAt: string;
|
|
27
|
+
resolvedAt?: string;
|
|
28
|
+
expiresAt: string;
|
|
29
|
+
decisionReason?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface CreateApprovalRequestDto {
|
|
32
|
+
taskId: string;
|
|
33
|
+
planId?: string;
|
|
34
|
+
stepId: string;
|
|
35
|
+
toolId: string;
|
|
36
|
+
riskLevel?: ToolRiskLevel;
|
|
37
|
+
requestedCapability: ToolCapability;
|
|
38
|
+
ttlMs?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface ApprovalPolicyConfig {
|
|
41
|
+
/** If true, low-risk operations (e.g. read-only filesystem) are auto-approved. Default: true. */
|
|
42
|
+
autoApproveLowRisk: boolean;
|
|
43
|
+
/** Require explicit approval for medium-risk operations. Default: true. */
|
|
44
|
+
requireApprovalForMediumRisk: boolean;
|
|
45
|
+
/** Require explicit approval for high-risk operations. Default: true. */
|
|
46
|
+
requireApprovalForHighRisk: boolean;
|
|
47
|
+
/** Require explicit approval for critical-risk operations. Default: true. */
|
|
48
|
+
requireApprovalForCriticalRisk: boolean;
|
|
49
|
+
/** Default lifetime of a pending approval request in milliseconds. Default: 300,000 (5 minutes). */
|
|
50
|
+
defaultTtlMs: number;
|
|
51
|
+
}
|
|
52
|
+
export declare const DEFAULT_APPROVAL_POLICY_CONFIG: ApprovalPolicyConfig;
|
|
53
|
+
export type ApprovalPolicyDecisionCode = 'AUTO_APPROVED' | 'REQUIRES_APPROVAL' | 'POLICY_DENIED';
|
|
54
|
+
export interface ApprovalDecision {
|
|
55
|
+
requiresApproval: boolean;
|
|
56
|
+
decision: ApprovalPolicyDecisionCode;
|
|
57
|
+
reason: string;
|
|
58
|
+
riskLevel: ToolRiskLevel;
|
|
59
|
+
}
|
|
60
|
+
export interface ApprovalGateResult {
|
|
61
|
+
allowed: boolean;
|
|
62
|
+
reason: string;
|
|
63
|
+
approvalId?: string;
|
|
64
|
+
status: ApprovalStatus;
|
|
65
|
+
requiresUserAction: boolean;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=approvalTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvalTypes.d.ts","sourceRoot":"","sources":["../../src/tools/approvalTypes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAE3F;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,cAAc,CAK/D,CAAC;AAEH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,aAAa,CAAC;IACzB,mBAAmB,EAAE,cAAc,CAAC;IACpC,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,mBAAmB,EAAE,cAAc,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,iGAAiG;IACjG,kBAAkB,EAAE,OAAO,CAAC;IAC5B,2EAA2E;IAC3E,4BAA4B,EAAE,OAAO,CAAC;IACtC,yEAAyE;IACzE,0BAA0B,EAAE,OAAO,CAAC;IACpC,6EAA6E;IAC7E,8BAA8B,EAAE,OAAO,CAAC;IACxC,oGAAoG;IACpG,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,8BAA8B,EAAE,oBAM5C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,eAAe,GAAG,mBAAmB,GAAG,eAAe,CAAC;AAEjG,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,0BAA0B,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;CAC7B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS AI — P5-F: Human Approval & Execution Control Types
|
|
3
|
+
*
|
|
4
|
+
* Provides normalized data contracts, states, policy configurations,
|
|
5
|
+
* and decision structures for the human approval system.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Terminal approval states that must never be reopened.
|
|
9
|
+
*/
|
|
10
|
+
export const TERMINAL_APPROVAL_STATES = new Set([
|
|
11
|
+
'approved',
|
|
12
|
+
'rejected',
|
|
13
|
+
'expired',
|
|
14
|
+
'cancelled',
|
|
15
|
+
]);
|
|
16
|
+
export const DEFAULT_APPROVAL_POLICY_CONFIG = {
|
|
17
|
+
autoApproveLowRisk: true,
|
|
18
|
+
requireApprovalForMediumRisk: true,
|
|
19
|
+
requireApprovalForHighRisk: true,
|
|
20
|
+
requireApprovalForCriticalRisk: true,
|
|
21
|
+
defaultTtlMs: 5 * 60 * 1000, // 5 minutes
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=approvalTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvalTypes.js","sourceRoot":"","sources":["../../src/tools/approvalTypes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAgC,IAAI,GAAG,CAAC;IAC3E,UAAU;IACV,UAAU;IACV,SAAS;IACT,WAAW;CACZ,CAAC,CAAC;AA4CH,MAAM,CAAC,MAAM,8BAA8B,GAAyB;IAClE,kBAAkB,EAAE,IAAI;IACxB,4BAA4B,EAAE,IAAI;IAClC,0BAA0B,EAAE,IAAI;IAChC,8BAA8B,EAAE,IAAI;IACpC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;CAC1C,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { SubsystemStatus } from '../storage/index.js';
|
|
2
|
+
import type { AgentTaskService } from '../orchestration/agentTaskService.js';
|
|
3
|
+
import type { ToolDefinition, ToolInvocationRequest, ToolInvocationResult, ToolExecutionRequest, ToolExecutionResult, PermissionPolicy } from './types.js';
|
|
4
|
+
import { ToolRegistry } from './toolRegistry.js';
|
|
5
|
+
import { PermissionEngine } from './permissionEngine.js';
|
|
6
|
+
import { ToolExecutor } from './toolExecutor.js';
|
|
7
|
+
import { LogLevel } from '../common/logger.js';
|
|
8
|
+
export * from './types.js';
|
|
9
|
+
export * from './approvalTypes.js';
|
|
10
|
+
export * from './adapters/terminalTypes.js';
|
|
11
|
+
export { ToolRegistry } from './toolRegistry.js';
|
|
12
|
+
export { PermissionEngine } from './permissionEngine.js';
|
|
13
|
+
export { ToolExecutor } from './toolExecutor.js';
|
|
14
|
+
export { ApprovalPolicyEngine } from './approvalPolicyEngine.js';
|
|
15
|
+
export { ApprovalGate } from './approvalGate.js';
|
|
16
|
+
export { FilesystemAdapter, ReadonlyFilesystemAdapter, calculateContentHash, isSecretFile, generateUnifiedDiff } from './adapters/filesystemAdapter.js';
|
|
17
|
+
export { TerminalAdapter, buildSanitizedEnv, validateWorkspaceCwd } from './adapters/terminalAdapter.js';
|
|
18
|
+
export { TerminalCommandPolicy } from './adapters/terminalCommandPolicy.js';
|
|
19
|
+
export interface IToolGateway {
|
|
20
|
+
initialize(taskService?: AgentTaskService, workspaceRoot?: string): Promise<SubsystemStatus>;
|
|
21
|
+
getStatus(): SubsystemStatus;
|
|
22
|
+
authorizeInvocation(request: ToolInvocationRequest): ToolInvocationResult;
|
|
23
|
+
executeTool(request: ToolExecutionRequest): ToolExecutionResult | Promise<ToolExecutionResult>;
|
|
24
|
+
}
|
|
25
|
+
export declare const READONLY_FILESYSTEM_TOOL_DEFINITION: ToolDefinition;
|
|
26
|
+
export declare const WORKSPACE_TREE_TOOL_DEFINITION: ToolDefinition;
|
|
27
|
+
export declare const CODE_SEARCH_TOOL_DEFINITION: ToolDefinition;
|
|
28
|
+
export declare const FILESYSTEM_WRITE_TOOL_DEFINITION: ToolDefinition;
|
|
29
|
+
export declare const FILESYSTEM_EDIT_TOOL_DEFINITION: ToolDefinition;
|
|
30
|
+
export declare const TERMINAL_EXECUTE_TOOL_DEFINITION: ToolDefinition;
|
|
31
|
+
export declare class ToolGateway implements IToolGateway {
|
|
32
|
+
private initialized;
|
|
33
|
+
private workspaceRoot;
|
|
34
|
+
registry: ToolRegistry;
|
|
35
|
+
permissionEngine: PermissionEngine;
|
|
36
|
+
executor: ToolExecutor | null;
|
|
37
|
+
private taskService;
|
|
38
|
+
private logger;
|
|
39
|
+
private logLevel;
|
|
40
|
+
constructor(policy?: PermissionPolicy, logLevel?: LogLevel);
|
|
41
|
+
initialize(taskService?: AgentTaskService, workspaceRoot?: string): Promise<SubsystemStatus>;
|
|
42
|
+
/**
|
|
43
|
+
* Register a tool definition with the central registry.
|
|
44
|
+
*/
|
|
45
|
+
registerTool(definition: ToolDefinition): void;
|
|
46
|
+
/**
|
|
47
|
+
* Retrieve a registered tool by ID.
|
|
48
|
+
*/
|
|
49
|
+
getTool(id: string): ToolDefinition | null;
|
|
50
|
+
/**
|
|
51
|
+
* Get workspace root directory path.
|
|
52
|
+
*/
|
|
53
|
+
getWorkspaceRoot(): string;
|
|
54
|
+
/**
|
|
55
|
+
* List all registered tools.
|
|
56
|
+
*/
|
|
57
|
+
listTools(): ToolDefinition[];
|
|
58
|
+
/**
|
|
59
|
+
* Authorize a tool invocation request against security policy and registry.
|
|
60
|
+
* NOTE: Returns authorization status ONLY. Does NOT execute code.
|
|
61
|
+
*/
|
|
62
|
+
authorizeInvocation(request: ToolInvocationRequest): ToolInvocationResult;
|
|
63
|
+
/**
|
|
64
|
+
* Execute an authorized tool request through the secure execution pipeline:
|
|
65
|
+
* Agent Task -> Tool Invocation Request -> Tool Registry -> Permission Engine -> Authorization -> Workspace Validation -> Adapter -> Result.
|
|
66
|
+
*
|
|
67
|
+
* SECURITY GUARANTEE: If authorization is DENIED, execution is NEVER attempted.
|
|
68
|
+
*/
|
|
69
|
+
executeTool(request: ToolExecutionRequest): ToolExecutionResult | Promise<ToolExecutionResult>;
|
|
70
|
+
getStatus(): SubsystemStatus;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|