deepseek-coder-agent-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -0
- package/dist/bin/cliMode.d.ts +8 -0
- package/dist/bin/cliMode.d.ts.map +1 -0
- package/dist/bin/cliMode.js +20 -0
- package/dist/bin/cliMode.js.map +1 -0
- package/dist/bin/deepseek.d.ts +6 -0
- package/dist/bin/deepseek.d.ts.map +1 -0
- package/dist/bin/deepseek.js +136 -0
- package/dist/bin/deepseek.js.map +1 -0
- package/dist/config.d.ts +25 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +155 -0
- package/dist/config.js.map +1 -0
- package/dist/contracts/agent-profiles.schema.json +43 -0
- package/dist/contracts/agent-schemas.json +460 -0
- package/dist/contracts/models.schema.json +9 -0
- package/dist/contracts/module-schema.json +419 -0
- package/dist/contracts/schemas/agent-profile.schema.json +157 -0
- package/dist/contracts/schemas/agent-rules.schema.json +238 -0
- package/dist/contracts/schemas/agent-schemas.schema.json +528 -0
- package/dist/contracts/schemas/agent.schema.json +90 -0
- package/dist/contracts/schemas/tool-selection.schema.json +174 -0
- package/dist/contracts/tools.schema.json +82 -0
- package/dist/contracts/unified-schema.json +750 -0
- package/dist/contracts/v1/agent.d.ts +179 -0
- package/dist/contracts/v1/agent.d.ts.map +1 -0
- package/dist/contracts/v1/agent.js +8 -0
- package/dist/contracts/v1/agent.js.map +1 -0
- package/dist/contracts/v1/agentProfileManifest.d.ts +60 -0
- package/dist/contracts/v1/agentProfileManifest.d.ts.map +1 -0
- package/dist/contracts/v1/agentProfileManifest.js +9 -0
- package/dist/contracts/v1/agentProfileManifest.js.map +1 -0
- package/dist/contracts/v1/agentRules.d.ts +60 -0
- package/dist/contracts/v1/agentRules.d.ts.map +1 -0
- package/dist/contracts/v1/agentRules.js +10 -0
- package/dist/contracts/v1/agentRules.js.map +1 -0
- package/dist/contracts/v1/provider.d.ts +149 -0
- package/dist/contracts/v1/provider.d.ts.map +1 -0
- package/dist/contracts/v1/provider.js +7 -0
- package/dist/contracts/v1/provider.js.map +1 -0
- package/dist/contracts/v1/tool.d.ts +136 -0
- package/dist/contracts/v1/tool.d.ts.map +1 -0
- package/dist/contracts/v1/tool.js +7 -0
- package/dist/contracts/v1/tool.js.map +1 -0
- package/dist/contracts/v1/toolAccess.d.ts +43 -0
- package/dist/contracts/v1/toolAccess.d.ts.map +1 -0
- package/dist/contracts/v1/toolAccess.js +9 -0
- package/dist/contracts/v1/toolAccess.js.map +1 -0
- package/dist/core/agent.d.ts +287 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +1563 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/agentProfileManifest.d.ts +3 -0
- package/dist/core/agentProfileManifest.d.ts.map +1 -0
- package/dist/core/agentProfileManifest.js +188 -0
- package/dist/core/agentProfileManifest.js.map +1 -0
- package/dist/core/agentProfiles.d.ts +22 -0
- package/dist/core/agentProfiles.d.ts.map +1 -0
- package/dist/core/agentProfiles.js +35 -0
- package/dist/core/agentProfiles.js.map +1 -0
- package/dist/core/agentRulebook.d.ts +11 -0
- package/dist/core/agentRulebook.d.ts.map +1 -0
- package/dist/core/agentRulebook.js +136 -0
- package/dist/core/agentRulebook.js.map +1 -0
- package/dist/core/agentSchemaLoader.d.ts +131 -0
- package/dist/core/agentSchemaLoader.d.ts.map +1 -0
- package/dist/core/agentSchemaLoader.js +235 -0
- package/dist/core/agentSchemaLoader.js.map +1 -0
- package/dist/core/agiCore.d.ts +290 -0
- package/dist/core/agiCore.d.ts.map +1 -0
- package/dist/core/agiCore.js +1348 -0
- package/dist/core/agiCore.js.map +1 -0
- package/dist/core/aiErrorFixer.d.ts +57 -0
- package/dist/core/aiErrorFixer.d.ts.map +1 -0
- package/dist/core/aiErrorFixer.js +214 -0
- package/dist/core/aiErrorFixer.js.map +1 -0
- package/dist/core/antiTermination.d.ts +226 -0
- package/dist/core/antiTermination.d.ts.map +1 -0
- package/dist/core/antiTermination.js +713 -0
- package/dist/core/antiTermination.js.map +1 -0
- package/dist/core/bashCommandGuidance.d.ts +16 -0
- package/dist/core/bashCommandGuidance.d.ts.map +1 -0
- package/dist/core/bashCommandGuidance.js +40 -0
- package/dist/core/bashCommandGuidance.js.map +1 -0
- package/dist/core/constants.d.ts +31 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +62 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/contextManager.d.ts +271 -0
- package/dist/core/contextManager.d.ts.map +1 -0
- package/dist/core/contextManager.js +1073 -0
- package/dist/core/contextManager.js.map +1 -0
- package/dist/core/contextWindow.d.ts +42 -0
- package/dist/core/contextWindow.d.ts.map +1 -0
- package/dist/core/contextWindow.js +123 -0
- package/dist/core/contextWindow.js.map +1 -0
- package/dist/core/customCommands.d.ts +19 -0
- package/dist/core/customCommands.d.ts.map +1 -0
- package/dist/core/customCommands.js +85 -0
- package/dist/core/customCommands.js.map +1 -0
- package/dist/core/deepBugAnalyzer.d.ts +25 -0
- package/dist/core/deepBugAnalyzer.d.ts.map +1 -0
- package/dist/core/deepBugAnalyzer.js +44 -0
- package/dist/core/deepBugAnalyzer.js.map +1 -0
- package/dist/core/dualTournament.d.ts +110 -0
- package/dist/core/dualTournament.d.ts.map +1 -0
- package/dist/core/dualTournament.js +270 -0
- package/dist/core/dualTournament.js.map +1 -0
- package/dist/core/dynamicGuardrails.d.ts +207 -0
- package/dist/core/dynamicGuardrails.d.ts.map +1 -0
- package/dist/core/dynamicGuardrails.js +516 -0
- package/dist/core/dynamicGuardrails.js.map +1 -0
- package/dist/core/embeddingProviders.d.ts +80 -0
- package/dist/core/embeddingProviders.d.ts.map +1 -0
- package/dist/core/embeddingProviders.js +241 -0
- package/dist/core/embeddingProviders.js.map +1 -0
- package/dist/core/episodicMemory.d.ts +259 -0
- package/dist/core/episodicMemory.d.ts.map +1 -0
- package/dist/core/episodicMemory.js +833 -0
- package/dist/core/episodicMemory.js.map +1 -0
- package/dist/core/errors/apiKeyErrors.d.ts +11 -0
- package/dist/core/errors/apiKeyErrors.d.ts.map +1 -0
- package/dist/core/errors/apiKeyErrors.js +159 -0
- package/dist/core/errors/apiKeyErrors.js.map +1 -0
- package/dist/core/errors/errorTypes.d.ts +111 -0
- package/dist/core/errors/errorTypes.d.ts.map +1 -0
- package/dist/core/errors/errorTypes.js +345 -0
- package/dist/core/errors/errorTypes.js.map +1 -0
- package/dist/core/errors/index.d.ts +50 -0
- package/dist/core/errors/index.d.ts.map +1 -0
- package/dist/core/errors/index.js +156 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/errors/networkErrors.d.ts +14 -0
- package/dist/core/errors/networkErrors.d.ts.map +1 -0
- package/dist/core/errors/networkErrors.js +53 -0
- package/dist/core/errors/networkErrors.js.map +1 -0
- package/dist/core/errors/safetyValidator.d.ts +115 -0
- package/dist/core/errors/safetyValidator.d.ts.map +1 -0
- package/dist/core/errors/safetyValidator.js +302 -0
- package/dist/core/errors/safetyValidator.js.map +1 -0
- package/dist/core/errors.d.ts +4 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +33 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/finalResponseFormatter.d.ts +10 -0
- package/dist/core/finalResponseFormatter.d.ts.map +1 -0
- package/dist/core/finalResponseFormatter.js +14 -0
- package/dist/core/finalResponseFormatter.js.map +1 -0
- package/dist/core/flowProtection.d.ts +154 -0
- package/dist/core/flowProtection.d.ts.map +1 -0
- package/dist/core/flowProtection.js +436 -0
- package/dist/core/flowProtection.js.map +1 -0
- package/dist/core/gitWorktreeManager.d.ts +126 -0
- package/dist/core/gitWorktreeManager.d.ts.map +1 -0
- package/dist/core/gitWorktreeManager.js +403 -0
- package/dist/core/gitWorktreeManager.js.map +1 -0
- package/dist/core/guardrails.d.ts +150 -0
- package/dist/core/guardrails.d.ts.map +1 -0
- package/dist/core/guardrails.js +360 -0
- package/dist/core/guardrails.js.map +1 -0
- package/dist/core/hallucinationGuard.d.ts +57 -0
- package/dist/core/hallucinationGuard.d.ts.map +1 -0
- package/dist/core/hallucinationGuard.js +237 -0
- package/dist/core/hallucinationGuard.js.map +1 -0
- package/dist/core/hitlEnforcement.d.ts +143 -0
- package/dist/core/hitlEnforcement.d.ts.map +1 -0
- package/dist/core/hitlEnforcement.js +583 -0
- package/dist/core/hitlEnforcement.js.map +1 -0
- package/dist/core/hooks.d.ts +113 -0
- package/dist/core/hooks.d.ts.map +1 -0
- package/dist/core/hooks.js +364 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/hotReload.d.ts +154 -0
- package/dist/core/hotReload.d.ts.map +1 -0
- package/dist/core/hotReload.js +451 -0
- package/dist/core/hotReload.js.map +1 -0
- package/dist/core/hypothesisEngine.d.ts +27 -0
- package/dist/core/hypothesisEngine.d.ts.map +1 -0
- package/dist/core/hypothesisEngine.js +58 -0
- package/dist/core/hypothesisEngine.js.map +1 -0
- package/dist/core/index.d.ts +26 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +54 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/inputProtection.d.ts +122 -0
- package/dist/core/inputProtection.d.ts.map +1 -0
- package/dist/core/inputProtection.js +421 -0
- package/dist/core/inputProtection.js.map +1 -0
- package/dist/core/liveGCPVerification.d.ts +41 -0
- package/dist/core/liveGCPVerification.d.ts.map +1 -0
- package/dist/core/liveGCPVerification.js +745 -0
- package/dist/core/liveGCPVerification.js.map +1 -0
- package/dist/core/modelDiscovery.d.ts +105 -0
- package/dist/core/modelDiscovery.d.ts.map +1 -0
- package/dist/core/modelDiscovery.js +740 -0
- package/dist/core/modelDiscovery.js.map +1 -0
- package/dist/core/multilinePasteHandler.d.ts +35 -0
- package/dist/core/multilinePasteHandler.d.ts.map +1 -0
- package/dist/core/multilinePasteHandler.js +80 -0
- package/dist/core/multilinePasteHandler.js.map +1 -0
- package/dist/core/parallel.d.ts +85 -0
- package/dist/core/parallel.d.ts.map +1 -0
- package/dist/core/parallel.js +150 -0
- package/dist/core/parallel.js.map +1 -0
- package/dist/core/parallelCoordinator.d.ts +21 -0
- package/dist/core/parallelCoordinator.d.ts.map +1 -0
- package/dist/core/parallelCoordinator.js +42 -0
- package/dist/core/parallelCoordinator.js.map +1 -0
- package/dist/core/parallelExecutor.d.ts +215 -0
- package/dist/core/parallelExecutor.d.ts.map +1 -0
- package/dist/core/parallelExecutor.js +584 -0
- package/dist/core/parallelExecutor.js.map +1 -0
- package/dist/core/platformSecurityIntegration.d.ts +133 -0
- package/dist/core/platformSecurityIntegration.d.ts.map +1 -0
- package/dist/core/platformSecurityIntegration.js +419 -0
- package/dist/core/platformSecurityIntegration.js.map +1 -0
- package/dist/core/preferences.d.ts +71 -0
- package/dist/core/preferences.d.ts.map +1 -0
- package/dist/core/preferences.js +341 -0
- package/dist/core/preferences.js.map +1 -0
- package/dist/core/productTestHarness.d.ts +46 -0
- package/dist/core/productTestHarness.d.ts.map +1 -0
- package/dist/core/productTestHarness.js +128 -0
- package/dist/core/productTestHarness.js.map +1 -0
- package/dist/core/providerKeys.d.ts +20 -0
- package/dist/core/providerKeys.d.ts.map +1 -0
- package/dist/core/providerKeys.js +40 -0
- package/dist/core/providerKeys.js.map +1 -0
- package/dist/core/realityScore.d.ts +159 -0
- package/dist/core/realityScore.d.ts.map +1 -0
- package/dist/core/realityScore.js +734 -0
- package/dist/core/realityScore.js.map +1 -0
- package/dist/core/repoUpgradeOrchestrator.d.ts +223 -0
- package/dist/core/repoUpgradeOrchestrator.d.ts.map +1 -0
- package/dist/core/repoUpgradeOrchestrator.js +1003 -0
- package/dist/core/repoUpgradeOrchestrator.js.map +1 -0
- package/dist/core/resultVerification.d.ts +47 -0
- package/dist/core/resultVerification.d.ts.map +1 -0
- package/dist/core/resultVerification.js +126 -0
- package/dist/core/resultVerification.js.map +1 -0
- package/dist/core/revenueEnvValidator.d.ts +30 -0
- package/dist/core/revenueEnvValidator.d.ts.map +1 -0
- package/dist/core/revenueEnvValidator.js +241 -0
- package/dist/core/revenueEnvValidator.js.map +1 -0
- package/dist/core/schemaValidator.d.ts +49 -0
- package/dist/core/schemaValidator.d.ts.map +1 -0
- package/dist/core/schemaValidator.js +234 -0
- package/dist/core/schemaValidator.js.map +1 -0
- package/dist/core/secretStore.d.ts +48 -0
- package/dist/core/secretStore.d.ts.map +1 -0
- package/dist/core/secretStore.js +295 -0
- package/dist/core/secretStore.js.map +1 -0
- package/dist/core/securityTournament.d.ts +83 -0
- package/dist/core/securityTournament.d.ts.map +1 -0
- package/dist/core/securityTournament.js +357 -0
- package/dist/core/securityTournament.js.map +1 -0
- package/dist/core/selfUpgrade.d.ts +253 -0
- package/dist/core/selfUpgrade.d.ts.map +1 -0
- package/dist/core/selfUpgrade.js +669 -0
- package/dist/core/selfUpgrade.js.map +1 -0
- package/dist/core/sessionStorage.d.ts +10 -0
- package/dist/core/sessionStorage.d.ts.map +1 -0
- package/dist/core/sessionStorage.js +46 -0
- package/dist/core/sessionStorage.js.map +1 -0
- package/dist/core/sessionStore.d.ts +35 -0
- package/dist/core/sessionStore.d.ts.map +1 -0
- package/dist/core/sessionStore.js +191 -0
- package/dist/core/sessionStore.js.map +1 -0
- package/dist/core/taskCompletionDetector.d.ts +112 -0
- package/dist/core/taskCompletionDetector.d.ts.map +1 -0
- package/dist/core/taskCompletionDetector.js +469 -0
- package/dist/core/taskCompletionDetector.js.map +1 -0
- package/dist/core/toolPreconditions.d.ts +34 -0
- package/dist/core/toolPreconditions.d.ts.map +1 -0
- package/dist/core/toolPreconditions.js +242 -0
- package/dist/core/toolPreconditions.js.map +1 -0
- package/dist/core/toolRuntime.d.ts +185 -0
- package/dist/core/toolRuntime.d.ts.map +1 -0
- package/dist/core/toolRuntime.js +412 -0
- package/dist/core/toolRuntime.js.map +1 -0
- package/dist/core/tournamentStrategy.d.ts +12 -0
- package/dist/core/tournamentStrategy.d.ts.map +1 -0
- package/dist/core/tournamentStrategy.js +41 -0
- package/dist/core/tournamentStrategy.js.map +1 -0
- package/dist/core/types/utilityTypes.d.ts +192 -0
- package/dist/core/types/utilityTypes.d.ts.map +1 -0
- package/dist/core/types/utilityTypes.js +272 -0
- package/dist/core/types/utilityTypes.js.map +1 -0
- package/dist/core/types.d.ts +334 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +76 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/unifiedOrchestrator.d.ts +47 -0
- package/dist/core/unifiedOrchestrator.d.ts.map +1 -0
- package/dist/core/unifiedOrchestrator.js +103 -0
- package/dist/core/unifiedOrchestrator.js.map +1 -0
- package/dist/core/universalSecurityAudit.d.ts +104 -0
- package/dist/core/universalSecurityAudit.d.ts.map +1 -0
- package/dist/core/universalSecurityAudit.js +2190 -0
- package/dist/core/universalSecurityAudit.js.map +1 -0
- package/dist/core/updateChecker.d.ts +148 -0
- package/dist/core/updateChecker.d.ts.map +1 -0
- package/dist/core/updateChecker.js +593 -0
- package/dist/core/updateChecker.js.map +1 -0
- package/dist/core/variantExecution.d.ts +23 -0
- package/dist/core/variantExecution.d.ts.map +1 -0
- package/dist/core/variantExecution.js +58 -0
- package/dist/core/variantExecution.js.map +1 -0
- package/dist/core/verificationFirst.d.ts +110 -0
- package/dist/core/verificationFirst.d.ts.map +1 -0
- package/dist/core/verificationFirst.js +312 -0
- package/dist/core/verificationFirst.js.map +1 -0
- package/dist/core/winnerStrategy.d.ts +15 -0
- package/dist/core/winnerStrategy.d.ts.map +1 -0
- package/dist/core/winnerStrategy.js +18 -0
- package/dist/core/winnerStrategy.js.map +1 -0
- package/dist/core/zeroDayDiscovery.d.ts +96 -0
- package/dist/core/zeroDayDiscovery.d.ts.map +1 -0
- package/dist/core/zeroDayDiscovery.js +358 -0
- package/dist/core/zeroDayDiscovery.js.map +1 -0
- package/dist/headless/interactiveShell.d.ts +22 -0
- package/dist/headless/interactiveShell.d.ts.map +1 -0
- package/dist/headless/interactiveShell.js +3832 -0
- package/dist/headless/interactiveShell.js.map +1 -0
- package/dist/headless/quickMode.d.ts +26 -0
- package/dist/headless/quickMode.d.ts.map +1 -0
- package/dist/headless/quickMode.js +226 -0
- package/dist/headless/quickMode.js.map +1 -0
- package/dist/providers/baseProvider.d.ts +148 -0
- package/dist/providers/baseProvider.d.ts.map +1 -0
- package/dist/providers/baseProvider.js +284 -0
- package/dist/providers/baseProvider.js.map +1 -0
- package/dist/providers/deepseekReasonerProvider.d.ts +57 -0
- package/dist/providers/deepseekReasonerProvider.d.ts.map +1 -0
- package/dist/providers/deepseekReasonerProvider.js +87 -0
- package/dist/providers/deepseekReasonerProvider.js.map +1 -0
- package/dist/providers/openaiChatCompletionsProvider.d.ts +64 -0
- package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -0
- package/dist/providers/openaiChatCompletionsProvider.js +1000 -0
- package/dist/providers/openaiChatCompletionsProvider.js.map +1 -0
- package/dist/providers/providerFactory.d.ts +24 -0
- package/dist/providers/providerFactory.d.ts.map +1 -0
- package/dist/providers/providerFactory.js +27 -0
- package/dist/providers/providerFactory.js.map +1 -0
- package/dist/providers/resilientProvider.d.ts +103 -0
- package/dist/providers/resilientProvider.d.ts.map +1 -0
- package/dist/providers/resilientProvider.js +462 -0
- package/dist/providers/resilientProvider.js.map +1 -0
- package/dist/runtime/agentController.d.ts +114 -0
- package/dist/runtime/agentController.d.ts.map +1 -0
- package/dist/runtime/agentController.js +693 -0
- package/dist/runtime/agentController.js.map +1 -0
- package/dist/runtime/agentHost.d.ts +61 -0
- package/dist/runtime/agentHost.d.ts.map +1 -0
- package/dist/runtime/agentHost.js +157 -0
- package/dist/runtime/agentHost.js.map +1 -0
- package/dist/runtime/agentSession.d.ts +45 -0
- package/dist/runtime/agentSession.d.ts.map +1 -0
- package/dist/runtime/agentSession.js +214 -0
- package/dist/runtime/agentSession.js.map +1 -0
- package/dist/runtime/agentWorkerPool.d.ts +167 -0
- package/dist/runtime/agentWorkerPool.d.ts.map +1 -0
- package/dist/runtime/agentWorkerPool.js +435 -0
- package/dist/runtime/agentWorkerPool.js.map +1 -0
- package/dist/runtime/node.d.ts +7 -0
- package/dist/runtime/node.d.ts.map +1 -0
- package/dist/runtime/node.js +18 -0
- package/dist/runtime/node.js.map +1 -0
- package/dist/runtime/universal.d.ts +18 -0
- package/dist/runtime/universal.d.ts.map +1 -0
- package/dist/runtime/universal.js +21 -0
- package/dist/runtime/universal.js.map +1 -0
- package/dist/ui/PromptController.d.ts +174 -0
- package/dist/ui/PromptController.d.ts.map +1 -0
- package/dist/ui/PromptController.js +351 -0
- package/dist/ui/PromptController.js.map +1 -0
- package/dist/ui/UnifiedUIRenderer.d.ts +779 -0
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -0
- package/dist/ui/UnifiedUIRenderer.js +5458 -0
- package/dist/ui/UnifiedUIRenderer.js.map +1 -0
- package/dist/ui/animatedStatus.d.ts +140 -0
- package/dist/ui/animatedStatus.d.ts.map +1 -0
- package/dist/ui/animatedStatus.js +480 -0
- package/dist/ui/animatedStatus.js.map +1 -0
- package/dist/ui/animation/AnimationScheduler.d.ts +197 -0
- package/dist/ui/animation/AnimationScheduler.d.ts.map +1 -0
- package/dist/ui/animation/AnimationScheduler.js +440 -0
- package/dist/ui/animation/AnimationScheduler.js.map +1 -0
- package/dist/ui/codeHighlighter.d.ts +6 -0
- package/dist/ui/codeHighlighter.d.ts.map +1 -0
- package/dist/ui/codeHighlighter.js +855 -0
- package/dist/ui/codeHighlighter.js.map +1 -0
- package/dist/ui/designSystem.d.ts +26 -0
- package/dist/ui/designSystem.d.ts.map +1 -0
- package/dist/ui/designSystem.js +114 -0
- package/dist/ui/designSystem.js.map +1 -0
- package/dist/ui/errorFormatter.d.ts +64 -0
- package/dist/ui/errorFormatter.d.ts.map +1 -0
- package/dist/ui/errorFormatter.js +316 -0
- package/dist/ui/errorFormatter.js.map +1 -0
- package/dist/ui/globalWriteLock.d.ts +63 -0
- package/dist/ui/globalWriteLock.d.ts.map +1 -0
- package/dist/ui/globalWriteLock.js +173 -0
- package/dist/ui/globalWriteLock.js.map +1 -0
- package/dist/ui/index.d.ts +32 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +54 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/interrupts/InterruptManager.d.ts +157 -0
- package/dist/ui/interrupts/InterruptManager.d.ts.map +1 -0
- package/dist/ui/interrupts/InterruptManager.js +501 -0
- package/dist/ui/interrupts/InterruptManager.js.map +1 -0
- package/dist/ui/layout.d.ts +27 -0
- package/dist/ui/layout.d.ts.map +1 -0
- package/dist/ui/layout.js +184 -0
- package/dist/ui/layout.js.map +1 -0
- package/dist/ui/maxOffensiveUkraineUI.d.ts +94 -0
- package/dist/ui/maxOffensiveUkraineUI.d.ts.map +1 -0
- package/dist/ui/maxOffensiveUkraineUI.js +316 -0
- package/dist/ui/maxOffensiveUkraineUI.js.map +1 -0
- package/dist/ui/outputMode.d.ts +44 -0
- package/dist/ui/outputMode.d.ts.map +1 -0
- package/dist/ui/outputMode.js +123 -0
- package/dist/ui/outputMode.js.map +1 -0
- package/dist/ui/overlay/OverlayManager.d.ts +105 -0
- package/dist/ui/overlay/OverlayManager.d.ts.map +1 -0
- package/dist/ui/overlay/OverlayManager.js +291 -0
- package/dist/ui/overlay/OverlayManager.js.map +1 -0
- package/dist/ui/premiumComponents.d.ts +54 -0
- package/dist/ui/premiumComponents.d.ts.map +1 -0
- package/dist/ui/premiumComponents.js +241 -0
- package/dist/ui/premiumComponents.js.map +1 -0
- package/dist/ui/richText.d.ts +13 -0
- package/dist/ui/richText.d.ts.map +1 -0
- package/dist/ui/richText.js +444 -0
- package/dist/ui/richText.js.map +1 -0
- package/dist/ui/telemetry/ResponseTracker.d.ts +22 -0
- package/dist/ui/telemetry/ResponseTracker.d.ts.map +1 -0
- package/dist/ui/telemetry/ResponseTracker.js +60 -0
- package/dist/ui/telemetry/ResponseTracker.js.map +1 -0
- package/dist/ui/telemetry/UITelemetry.d.ts +181 -0
- package/dist/ui/telemetry/UITelemetry.d.ts.map +1 -0
- package/dist/ui/telemetry/UITelemetry.js +446 -0
- package/dist/ui/telemetry/UITelemetry.js.map +1 -0
- package/dist/ui/textHighlighter.d.ts +83 -0
- package/dist/ui/textHighlighter.d.ts.map +1 -0
- package/dist/ui/textHighlighter.js +267 -0
- package/dist/ui/textHighlighter.js.map +1 -0
- package/dist/ui/theme.d.ts +364 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +471 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/ui/toolDisplay.d.ts +221 -0
- package/dist/ui/toolDisplay.d.ts.map +1 -0
- package/dist/ui/toolDisplay.js +1654 -0
- package/dist/ui/toolDisplay.js.map +1 -0
- package/dist/ui/uiConstants.d.ts +288 -0
- package/dist/ui/uiConstants.d.ts.map +1 -0
- package/dist/ui/uiConstants.js +472 -0
- package/dist/ui/uiConstants.js.map +1 -0
- package/dist/utils/askUserPrompt.d.ts +21 -0
- package/dist/utils/askUserPrompt.d.ts.map +1 -0
- package/dist/utils/askUserPrompt.js +87 -0
- package/dist/utils/askUserPrompt.js.map +1 -0
- package/dist/utils/asyncUtils.d.ts +95 -0
- package/dist/utils/asyncUtils.d.ts.map +1 -0
- package/dist/utils/asyncUtils.js +286 -0
- package/dist/utils/asyncUtils.js.map +1 -0
- package/dist/utils/debugLogger.d.ts +6 -0
- package/dist/utils/debugLogger.d.ts.map +1 -0
- package/dist/utils/debugLogger.js +39 -0
- package/dist/utils/debugLogger.js.map +1 -0
- package/dist/utils/errorUtils.d.ts +12 -0
- package/dist/utils/errorUtils.d.ts.map +1 -0
- package/dist/utils/errorUtils.js +83 -0
- package/dist/utils/errorUtils.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +10 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +78 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/packageInfo.d.ts +14 -0
- package/dist/utils/packageInfo.d.ts.map +1 -0
- package/dist/utils/packageInfo.js +45 -0
- package/dist/utils/packageInfo.js.map +1 -0
- package/dist/utils/planFormatter.d.ts +34 -0
- package/dist/utils/planFormatter.d.ts.map +1 -0
- package/dist/utils/planFormatter.js +141 -0
- package/dist/utils/planFormatter.js.map +1 -0
- package/dist/utils/securityUtils.d.ts +132 -0
- package/dist/utils/securityUtils.d.ts.map +1 -0
- package/dist/utils/securityUtils.js +324 -0
- package/dist/utils/securityUtils.js.map +1 -0
- package/dist/workspace.d.ts +8 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +134 -0
- package/dist/workspace.js.map +1 -0
- package/dist/workspace.validator.d.ts +49 -0
- package/dist/workspace.validator.d.ts.map +1 -0
- package/dist/workspace.validator.js +215 -0
- package/dist/workspace.validator.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Guardrails for Revenue Suite
|
|
3
|
+
* Enforces citations, approvals, and audit logging as per manifest requirements
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Citation Validator
|
|
7
|
+
* Ensures every claim has proper source attribution
|
|
8
|
+
*/
|
|
9
|
+
export class CitationValidator {
|
|
10
|
+
/**
|
|
11
|
+
* Validates that a response includes proper citations
|
|
12
|
+
*/
|
|
13
|
+
validateCitations(response, citations) {
|
|
14
|
+
if (citations.length === 0) {
|
|
15
|
+
return {
|
|
16
|
+
valid: false,
|
|
17
|
+
coverage: 0,
|
|
18
|
+
missing: ['No citations provided']
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
// Check for citation markers in response (e.g., [1], [Source: ...])
|
|
22
|
+
const citationMarkers = response.match(/\[(\d+|Source:.*?)\]/g) || [];
|
|
23
|
+
// Check for factual claims without citations
|
|
24
|
+
const claimPatterns = [
|
|
25
|
+
/\b(according to|as stated in|referenced in|cited in)\b/gi,
|
|
26
|
+
/\b(our policy|our documentation|our guide)\b/gi
|
|
27
|
+
];
|
|
28
|
+
const hasClaimMarkers = claimPatterns.some(pattern => pattern.test(response));
|
|
29
|
+
const hasCitations = citations.length > 0;
|
|
30
|
+
if (hasClaimMarkers && !hasCitations) {
|
|
31
|
+
return {
|
|
32
|
+
valid: false,
|
|
33
|
+
coverage: 0,
|
|
34
|
+
missing: ['Claims detected but no citations provided']
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// Basic validation: ensure citations have required fields
|
|
38
|
+
const invalidCitations = citations.filter(c => !c.sourceDoc);
|
|
39
|
+
if (invalidCitations.length > 0) {
|
|
40
|
+
return {
|
|
41
|
+
valid: false,
|
|
42
|
+
coverage: (citations.length - invalidCitations.length) / citations.length * 100,
|
|
43
|
+
missing: invalidCitations.map((_, i) => `Citation ${i + 1} missing sourceDoc`)
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// All validations passed
|
|
47
|
+
return {
|
|
48
|
+
valid: true,
|
|
49
|
+
coverage: 100,
|
|
50
|
+
missing: []
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Extracts citations from structured response
|
|
55
|
+
*/
|
|
56
|
+
extractCitations(response) {
|
|
57
|
+
if (typeof response === 'string') {
|
|
58
|
+
// Parse citations from markdown-style references
|
|
59
|
+
const citations = [];
|
|
60
|
+
const citationRegex = /\[Source:\s*([^\]]+)\]/g;
|
|
61
|
+
let match;
|
|
62
|
+
while ((match = citationRegex.exec(response)) !== null) {
|
|
63
|
+
const parts = match[1].split(',').map(p => p.trim());
|
|
64
|
+
citations.push({
|
|
65
|
+
sourceDoc: parts[0],
|
|
66
|
+
section: parts[1],
|
|
67
|
+
version: parts[2]
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return citations;
|
|
71
|
+
}
|
|
72
|
+
// Handle structured response with citations array
|
|
73
|
+
if (response && Array.isArray(response.citations)) {
|
|
74
|
+
return response.citations;
|
|
75
|
+
}
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Approval Manager
|
|
81
|
+
* Handles human-in-the-loop approval workflows
|
|
82
|
+
*/
|
|
83
|
+
export class ApprovalManager {
|
|
84
|
+
pendingApprovals = new Map();
|
|
85
|
+
approvalHistory = new Map();
|
|
86
|
+
/**
|
|
87
|
+
* Request approval for a high-risk action
|
|
88
|
+
*/
|
|
89
|
+
async requestApproval(actionType, actionDescription, riskLevel, requiredApprover, context) {
|
|
90
|
+
const request = {
|
|
91
|
+
id: `APPROVAL-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
|
|
92
|
+
actionType,
|
|
93
|
+
actionDescription,
|
|
94
|
+
riskLevel,
|
|
95
|
+
requiredApprover,
|
|
96
|
+
context,
|
|
97
|
+
requestedAt: new Date()
|
|
98
|
+
};
|
|
99
|
+
this.pendingApprovals.set(request.id, request);
|
|
100
|
+
// Send notification to approver (email, Slack, webhook, etc.)
|
|
101
|
+
console.log(`⚠️ Approval required: ${actionDescription}`);
|
|
102
|
+
console.log(` Approver: ${requiredApprover}`);
|
|
103
|
+
console.log(` Risk Level: ${riskLevel}`);
|
|
104
|
+
console.log(` Approval ID: ${request.id}`);
|
|
105
|
+
// TODO: Implement actual notification system (email, Slack, webhook)
|
|
106
|
+
return request;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Record an approval response
|
|
110
|
+
*/
|
|
111
|
+
async recordApproval(response) {
|
|
112
|
+
this.approvalHistory.set(response.requestId, response);
|
|
113
|
+
this.pendingApprovals.delete(response.requestId);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Check if an action requires approval based on policy
|
|
117
|
+
*/
|
|
118
|
+
requiresApproval(actionType, actionContext) {
|
|
119
|
+
// Define approval policies
|
|
120
|
+
const policies = [
|
|
121
|
+
{
|
|
122
|
+
condition: (type, ctx) => type === 'refund' && ctx.amount > 50000,
|
|
123
|
+
approver: 'finance_director',
|
|
124
|
+
riskLevel: 'high'
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
condition: (type, ctx) => type === 'contract_edit',
|
|
128
|
+
approver: 'legal_counsel',
|
|
129
|
+
riskLevel: 'critical'
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
condition: (type, ctx) => type === 'crm_update' && ctx.dealValue > 100000,
|
|
133
|
+
approver: 'sales_director',
|
|
134
|
+
riskLevel: 'medium'
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
condition: (type, ctx) => type === 'data_export' && ctx.pii === true,
|
|
138
|
+
approver: 'compliance_officer',
|
|
139
|
+
riskLevel: 'high'
|
|
140
|
+
}
|
|
141
|
+
];
|
|
142
|
+
const matchedPolicy = policies.find(p => p.condition(actionType, actionContext));
|
|
143
|
+
if (matchedPolicy) {
|
|
144
|
+
return {
|
|
145
|
+
required: true,
|
|
146
|
+
approver: matchedPolicy.approver,
|
|
147
|
+
riskLevel: matchedPolicy.riskLevel
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return { required: false };
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get pending approval by ID
|
|
154
|
+
*/
|
|
155
|
+
getPendingApproval(id) {
|
|
156
|
+
return this.pendingApprovals.get(id);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get approval status
|
|
160
|
+
*/
|
|
161
|
+
getApprovalStatus(id) {
|
|
162
|
+
return this.approvalHistory.get(id);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Audit Logger
|
|
167
|
+
* Logs all actions with inputs, outputs, and correlation IDs
|
|
168
|
+
*/
|
|
169
|
+
export class AuditLogger {
|
|
170
|
+
logs = [];
|
|
171
|
+
observabilityEndpoint;
|
|
172
|
+
constructor(observabilityEndpoint) {
|
|
173
|
+
this.observabilityEndpoint = observabilityEndpoint || process.env.OBSERVABILITY_ENDPOINT;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Log an action with full context
|
|
177
|
+
*/
|
|
178
|
+
async logAction(entry) {
|
|
179
|
+
const fullEntry = {
|
|
180
|
+
...entry,
|
|
181
|
+
id: `AUDIT-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
|
|
182
|
+
timestamp: new Date()
|
|
183
|
+
};
|
|
184
|
+
// Redact PII from logs
|
|
185
|
+
const redactedEntry = this.redactPII(fullEntry);
|
|
186
|
+
// Store locally
|
|
187
|
+
this.logs.push(redactedEntry);
|
|
188
|
+
// Send to observability endpoint if configured
|
|
189
|
+
if (this.observabilityEndpoint) {
|
|
190
|
+
try {
|
|
191
|
+
await this.sendToObservability(redactedEntry);
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
console.error('Failed to send audit log to observability endpoint:', error);
|
|
195
|
+
// Continue - don't fail the action if logging fails
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Also log to console for development
|
|
199
|
+
console.log(`[AUDIT] ${redactedEntry.actionType}: ${redactedEntry.status}`);
|
|
200
|
+
return fullEntry.id;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Redact PII from audit logs
|
|
204
|
+
*/
|
|
205
|
+
redactPII(entry) {
|
|
206
|
+
const piiPatterns = [
|
|
207
|
+
{ regex: /\b\d{3}-\d{2}-\d{4}\b/g, replacement: 'SSN-REDACTED' }, // SSN
|
|
208
|
+
{ regex: /\b\d{16}\b/g, replacement: 'CC-REDACTED' }, // Credit card
|
|
209
|
+
{ regex: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g, replacement: 'EMAIL-REDACTED' } // Email (optional)
|
|
210
|
+
];
|
|
211
|
+
const redactedEntry = { ...entry };
|
|
212
|
+
// Redact inputs
|
|
213
|
+
if (entry.inputs) {
|
|
214
|
+
const inputsStr = JSON.stringify(entry.inputs);
|
|
215
|
+
let redactedStr = inputsStr;
|
|
216
|
+
for (const pattern of piiPatterns) {
|
|
217
|
+
redactedStr = redactedStr.replace(pattern.regex, pattern.replacement);
|
|
218
|
+
}
|
|
219
|
+
redactedEntry.inputs = JSON.parse(redactedStr);
|
|
220
|
+
}
|
|
221
|
+
// Redact outputs
|
|
222
|
+
if (entry.outputs) {
|
|
223
|
+
const outputsStr = JSON.stringify(entry.outputs);
|
|
224
|
+
let redactedStr = outputsStr;
|
|
225
|
+
for (const pattern of piiPatterns) {
|
|
226
|
+
redactedStr = redactedStr.replace(pattern.regex, pattern.replacement);
|
|
227
|
+
}
|
|
228
|
+
redactedEntry.outputs = JSON.parse(redactedStr);
|
|
229
|
+
}
|
|
230
|
+
return redactedEntry;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Send audit log to external observability system
|
|
234
|
+
*/
|
|
235
|
+
async sendToObservability(entry) {
|
|
236
|
+
if (!this.observabilityEndpoint) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
// TODO: Implement actual HTTP POST to observability endpoint
|
|
240
|
+
// Use fetch or axios
|
|
241
|
+
console.log(`Sending audit log to ${this.observabilityEndpoint}:`, entry.id);
|
|
242
|
+
// Example implementation:
|
|
243
|
+
// await fetch(this.observabilityEndpoint, {
|
|
244
|
+
// method: 'POST',
|
|
245
|
+
// headers: { 'Content-Type': 'application/json' },
|
|
246
|
+
// body: JSON.stringify(entry)
|
|
247
|
+
// });
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Query audit logs by correlation ID
|
|
251
|
+
*/
|
|
252
|
+
getLogsByCorrelationId(correlationId) {
|
|
253
|
+
return this.logs.filter(log => log.correlationId === correlationId);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Query audit logs by user ID
|
|
257
|
+
*/
|
|
258
|
+
getLogsByUserId(userId) {
|
|
259
|
+
return this.logs.filter(log => log.userId === userId);
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Get all logs (for testing/debugging)
|
|
263
|
+
*/
|
|
264
|
+
getAllLogs() {
|
|
265
|
+
return [...this.logs];
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Guardrails Orchestrator
|
|
270
|
+
* Coordinates citation validation, approval flows, and audit logging
|
|
271
|
+
*/
|
|
272
|
+
export class GuardrailsOrchestrator {
|
|
273
|
+
citationValidator;
|
|
274
|
+
approvalManager;
|
|
275
|
+
auditLogger;
|
|
276
|
+
constructor(observabilityEndpoint) {
|
|
277
|
+
this.citationValidator = new CitationValidator();
|
|
278
|
+
this.approvalManager = new ApprovalManager();
|
|
279
|
+
this.auditLogger = new AuditLogger(observabilityEndpoint);
|
|
280
|
+
}
|
|
281
|
+
getCitationValidator() {
|
|
282
|
+
return this.citationValidator;
|
|
283
|
+
}
|
|
284
|
+
getApprovalManager() {
|
|
285
|
+
return this.approvalManager;
|
|
286
|
+
}
|
|
287
|
+
getAuditLogger() {
|
|
288
|
+
return this.auditLogger;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Execute an action with full guardrail enforcement
|
|
292
|
+
*/
|
|
293
|
+
async executeWithGuardrails(userId, correlationId, actionType, actionDescription, actionFn, inputs, options = {}) {
|
|
294
|
+
// 1. Check if approval is required
|
|
295
|
+
const approvalCheck = this.approvalManager.requiresApproval(actionType, inputs);
|
|
296
|
+
if (approvalCheck.required) {
|
|
297
|
+
const approvalRequest = await this.approvalManager.requestApproval(actionType, actionDescription, approvalCheck.riskLevel, approvalCheck.approver, inputs);
|
|
298
|
+
// TODO: Wait for approval (implement polling or webhook callback)
|
|
299
|
+
throw new Error(`Action requires approval from ${approvalCheck.approver}. ` +
|
|
300
|
+
`Approval ID: ${approvalRequest.id}`);
|
|
301
|
+
}
|
|
302
|
+
// 2. Validate citations if required
|
|
303
|
+
if (options.requireCitations) {
|
|
304
|
+
const citationValidation = this.citationValidator.validateCitations(actionDescription, options.citations || []);
|
|
305
|
+
if (!citationValidation.valid) {
|
|
306
|
+
await this.auditLogger.logAction({
|
|
307
|
+
correlationId,
|
|
308
|
+
userId,
|
|
309
|
+
actionType,
|
|
310
|
+
actionDescription,
|
|
311
|
+
inputs,
|
|
312
|
+
status: 'failed',
|
|
313
|
+
errorMessage: `Citation validation failed: ${citationValidation.missing.join(', ')}`,
|
|
314
|
+
citations: options.citations
|
|
315
|
+
});
|
|
316
|
+
throw new Error(`Citation requirement not met: ${citationValidation.missing.join(', ')}`);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
// 3. Execute action with audit logging
|
|
320
|
+
try {
|
|
321
|
+
const result = await actionFn();
|
|
322
|
+
await this.auditLogger.logAction({
|
|
323
|
+
correlationId,
|
|
324
|
+
userId,
|
|
325
|
+
actionType,
|
|
326
|
+
actionDescription,
|
|
327
|
+
inputs,
|
|
328
|
+
outputs: result,
|
|
329
|
+
citations: options.citations,
|
|
330
|
+
status: 'success'
|
|
331
|
+
});
|
|
332
|
+
return result;
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
await this.auditLogger.logAction({
|
|
336
|
+
correlationId,
|
|
337
|
+
userId,
|
|
338
|
+
actionType,
|
|
339
|
+
actionDescription,
|
|
340
|
+
inputs,
|
|
341
|
+
status: 'failed',
|
|
342
|
+
errorMessage: error instanceof Error ? error.message : String(error),
|
|
343
|
+
citations: options.citations
|
|
344
|
+
});
|
|
345
|
+
throw error;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
// Singleton instance
|
|
350
|
+
let guardrailsInstance = null;
|
|
351
|
+
/**
|
|
352
|
+
* Get or create the guardrails orchestrator instance
|
|
353
|
+
*/
|
|
354
|
+
export function getGuardrails(observabilityEndpoint) {
|
|
355
|
+
if (!guardrailsInstance) {
|
|
356
|
+
guardrailsInstance = new GuardrailsOrchestrator(observabilityEndpoint);
|
|
357
|
+
}
|
|
358
|
+
return guardrailsInstance;
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=guardrails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../../src/core/guardrails.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hallucination Guard - Advanced validation to minimize AI hallucinations
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* 1. Content validation before edits
|
|
6
|
+
* 2. Fact verification for web search results
|
|
7
|
+
* 3. Confidence scoring for AI outputs
|
|
8
|
+
* 4. Cross-referencing with existing knowledge
|
|
9
|
+
*/
|
|
10
|
+
export interface HallucinationCheck {
|
|
11
|
+
type: 'content_guess' | 'fact_claim' | 'code_pattern' | 'file_existence';
|
|
12
|
+
confidence: 'high' | 'medium' | 'low';
|
|
13
|
+
riskLevel: 'critical' | 'warning' | 'info';
|
|
14
|
+
message: string;
|
|
15
|
+
suggestion: string;
|
|
16
|
+
}
|
|
17
|
+
export interface HallucinationReport {
|
|
18
|
+
checks: HallucinationCheck[];
|
|
19
|
+
overallRisk: 'critical' | 'warning' | 'safe';
|
|
20
|
+
confidenceScore: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Validate AI content for hallucinations before execution
|
|
24
|
+
*/
|
|
25
|
+
export declare class HallucinationGuard {
|
|
26
|
+
private readonly workingDir;
|
|
27
|
+
private readonly knownFacts;
|
|
28
|
+
constructor(options?: {
|
|
29
|
+
workingDir?: string;
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Validate file operations for hallucinations
|
|
33
|
+
*/
|
|
34
|
+
validateFileOperation(toolName: string, args: Record<string, unknown>, existingContent?: string): HallucinationReport;
|
|
35
|
+
/**
|
|
36
|
+
* Validate AI-generated code for common hallucination patterns
|
|
37
|
+
*/
|
|
38
|
+
validateGeneratedCode(code: string, _context?: string): HallucinationReport;
|
|
39
|
+
/**
|
|
40
|
+
* Register known facts from previous operations to cross-reference
|
|
41
|
+
*/
|
|
42
|
+
registerFact(fact: string, source: string, confidence: number): void;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a claim contradicts known facts
|
|
45
|
+
*/
|
|
46
|
+
checkFactContradiction(claim: string): HallucinationCheck | null;
|
|
47
|
+
private calculateContentSimilarity;
|
|
48
|
+
private isOverlyBroadPattern;
|
|
49
|
+
private containsFactClaim;
|
|
50
|
+
private areContradictory;
|
|
51
|
+
private generateReport;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Enhanced validation that integrates with existing tool runtime
|
|
55
|
+
*/
|
|
56
|
+
export declare function enhanceWithHallucinationGuard(toolName: string, args: Record<string, unknown>, existingContent?: string): HallucinationReport;
|
|
57
|
+
//# sourceMappingURL=hallucinationGuard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hallucinationGuard.d.ts","sourceRoot":"","sources":["../../src/core/hallucinationGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,eAAe,GAAG,YAAY,GAAG,cAAc,GAAG,gBAAgB,CAAC;IACzE,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,WAAW,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAC7C,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;gBAEjD,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO;IAIjD;;OAEG;IACH,qBAAqB,CACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,eAAe,CAAC,EAAE,MAAM,GACvB,mBAAmB;IAkEtB;;OAEG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,mBAAmB;IA6C3E;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpE;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAsBhE,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,cAAc;CA4CvB;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,eAAe,CAAC,EAAE,MAAM,GACvB,mBAAmB,CAGrB"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hallucination Guard - Advanced validation to minimize AI hallucinations
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* 1. Content validation before edits
|
|
6
|
+
* 2. Fact verification for web search results
|
|
7
|
+
* 3. Confidence scoring for AI outputs
|
|
8
|
+
* 4. Cross-referencing with existing knowledge
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync } from 'node:fs';
|
|
11
|
+
/**
|
|
12
|
+
* Validate AI content for hallucinations before execution
|
|
13
|
+
*/
|
|
14
|
+
export class HallucinationGuard {
|
|
15
|
+
workingDir;
|
|
16
|
+
knownFacts = new Map();
|
|
17
|
+
constructor(options = {}) {
|
|
18
|
+
this.workingDir = options.workingDir ?? process.cwd();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Validate file operations for hallucinations
|
|
22
|
+
*/
|
|
23
|
+
validateFileOperation(toolName, args, existingContent) {
|
|
24
|
+
const checks = [];
|
|
25
|
+
const toolLower = toolName.toLowerCase();
|
|
26
|
+
// === Edit Tool Validation ===
|
|
27
|
+
if (toolLower === 'edit') {
|
|
28
|
+
const oldString = args['old_string'];
|
|
29
|
+
const filePath = args['file_path'];
|
|
30
|
+
// Check 1: Edit without existing content reference
|
|
31
|
+
if (oldString && existingContent) {
|
|
32
|
+
const similarity = this.calculateContentSimilarity(oldString, existingContent);
|
|
33
|
+
if (similarity < 0.5) {
|
|
34
|
+
checks.push({
|
|
35
|
+
type: 'content_guess',
|
|
36
|
+
confidence: 'high',
|
|
37
|
+
riskLevel: 'critical',
|
|
38
|
+
message: `Low content similarity (${Math.round(similarity * 100)}%) - AI may be guessing file content`,
|
|
39
|
+
suggestion: 'Verify exact file content matches old_string. Use Read tool to confirm.',
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Check 2: File existence validation
|
|
44
|
+
if (filePath && !existsSync(filePath) && oldString) {
|
|
45
|
+
checks.push({
|
|
46
|
+
type: 'file_existence',
|
|
47
|
+
confidence: 'high',
|
|
48
|
+
riskLevel: 'warning',
|
|
49
|
+
message: `Editing non-existent file: ${filePath}`,
|
|
50
|
+
suggestion: 'Check if file exists before editing. Use empty old_string for new file creation.',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// === Search Operations ===
|
|
55
|
+
if (toolLower.includes('search') || toolLower.includes('grep')) {
|
|
56
|
+
const pattern = args['pattern'];
|
|
57
|
+
if (pattern && this.isOverlyBroadPattern(pattern)) {
|
|
58
|
+
checks.push({
|
|
59
|
+
type: 'code_pattern',
|
|
60
|
+
confidence: 'medium',
|
|
61
|
+
riskLevel: 'warning',
|
|
62
|
+
message: `Search pattern '${pattern}' is very broad and may produce overwhelming results`,
|
|
63
|
+
suggestion: 'Use more specific patterns or add file type filters.',
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// === Web Operations ===
|
|
68
|
+
if (toolLower.includes('web') || toolLower.includes('search')) {
|
|
69
|
+
const query = args['query'];
|
|
70
|
+
if (query && this.containsFactClaim(query)) {
|
|
71
|
+
checks.push({
|
|
72
|
+
type: 'fact_claim',
|
|
73
|
+
confidence: 'low',
|
|
74
|
+
riskLevel: 'info',
|
|
75
|
+
message: 'Query contains factual claims that should be verified',
|
|
76
|
+
suggestion: 'Cross-reference results with authoritative sources.',
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return this.generateReport(checks);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validate AI-generated code for common hallucination patterns
|
|
84
|
+
*/
|
|
85
|
+
validateGeneratedCode(code, _context) {
|
|
86
|
+
const checks = [];
|
|
87
|
+
// Check for placeholder patterns
|
|
88
|
+
const placeholderPatterns = [
|
|
89
|
+
/\{\{.*?\}\}/g, // {{variable}}
|
|
90
|
+
/\[\[.*?\]\]/g, // [[placeholder]]
|
|
91
|
+
/<TODO>/gi, // <TODO>
|
|
92
|
+
/FIXME/gi, // FIXME (in generated code)
|
|
93
|
+
];
|
|
94
|
+
for (const pattern of placeholderPatterns) {
|
|
95
|
+
const matches = code.match(pattern);
|
|
96
|
+
if (matches) {
|
|
97
|
+
checks.push({
|
|
98
|
+
type: 'content_guess',
|
|
99
|
+
confidence: 'high',
|
|
100
|
+
riskLevel: 'critical',
|
|
101
|
+
message: `Placeholder patterns found in generated code: ${matches.slice(0, 3).join(', ')}`,
|
|
102
|
+
suggestion: 'Replace placeholders with actual implementation based on context.',
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Check for unrealistic imports
|
|
107
|
+
const importPatterns = [
|
|
108
|
+
/import\s+.*\s+from\s+['"][@\w\-/]+['"]/g,
|
|
109
|
+
];
|
|
110
|
+
const imports = code.match(importPatterns[0]) || [];
|
|
111
|
+
for (const imp of imports) {
|
|
112
|
+
if (imp.includes('undefined-package') || imp.includes('example-library')) {
|
|
113
|
+
checks.push({
|
|
114
|
+
type: 'code_pattern',
|
|
115
|
+
confidence: 'medium',
|
|
116
|
+
riskLevel: 'warning',
|
|
117
|
+
message: `Suspicious import pattern: ${imp}`,
|
|
118
|
+
suggestion: 'Verify package names and availability in the project.',
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return this.generateReport(checks);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Register known facts from previous operations to cross-reference
|
|
126
|
+
*/
|
|
127
|
+
registerFact(fact, source, confidence) {
|
|
128
|
+
const key = `${source}:${fact}`;
|
|
129
|
+
this.knownFacts.set(key, confidence);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Check if a claim contradicts known facts
|
|
133
|
+
*/
|
|
134
|
+
checkFactContradiction(claim) {
|
|
135
|
+
const claimLower = claim.toLowerCase();
|
|
136
|
+
for (const [key, confidence] of this.knownFacts.entries()) {
|
|
137
|
+
const [, fact] = key.split(':');
|
|
138
|
+
const factLower = fact.toLowerCase();
|
|
139
|
+
// Simple contradiction detection
|
|
140
|
+
if (this.areContradictory(claimLower, factLower)) {
|
|
141
|
+
return {
|
|
142
|
+
type: 'fact_claim',
|
|
143
|
+
confidence: confidence > 0.7 ? 'high' : 'medium',
|
|
144
|
+
riskLevel: 'warning',
|
|
145
|
+
message: `Claim contradicts previously established fact: ${fact}`,
|
|
146
|
+
suggestion: 'Verify information consistency across operations.',
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
calculateContentSimilarity(a, b) {
|
|
153
|
+
// Simple similarity calculation for validation
|
|
154
|
+
const wordsA = new Set(a.toLowerCase().split(/\s+/));
|
|
155
|
+
const wordsB = new Set(b.toLowerCase().split(/\s+/));
|
|
156
|
+
const intersection = new Set([...wordsA].filter(x => wordsB.has(x)));
|
|
157
|
+
const union = new Set([...wordsA, ...wordsB]);
|
|
158
|
+
return union.size > 0 ? intersection.size / union.size : 0;
|
|
159
|
+
}
|
|
160
|
+
isOverlyBroadPattern(pattern) {
|
|
161
|
+
// Patterns that match everything
|
|
162
|
+
const broadPatterns = [
|
|
163
|
+
/^.*$/,
|
|
164
|
+
/^\.*$/,
|
|
165
|
+
/^\w*$/,
|
|
166
|
+
/^[a-zA-Z]*$/,
|
|
167
|
+
];
|
|
168
|
+
return broadPatterns.some(p => p.test(pattern));
|
|
169
|
+
}
|
|
170
|
+
containsFactClaim(text) {
|
|
171
|
+
const factIndicators = [
|
|
172
|
+
'is', 'are', 'was', 'were', 'will be',
|
|
173
|
+
'has', 'have', 'had',
|
|
174
|
+
'can', 'cannot', 'could', 'would',
|
|
175
|
+
'always', 'never', 'every', 'all',
|
|
176
|
+
'true', 'false', 'correct', 'incorrect',
|
|
177
|
+
];
|
|
178
|
+
const words = text.toLowerCase().split(/\s+/);
|
|
179
|
+
return words.some(word => factIndicators.includes(word));
|
|
180
|
+
}
|
|
181
|
+
areContradictory(claim, fact) {
|
|
182
|
+
// Simple contradiction detection
|
|
183
|
+
const contradictions = [
|
|
184
|
+
['is', 'is not'],
|
|
185
|
+
['has', 'has no'],
|
|
186
|
+
['can', 'cannot'],
|
|
187
|
+
['true', 'false'],
|
|
188
|
+
['always', 'never'],
|
|
189
|
+
];
|
|
190
|
+
return contradictions.some(([a, b]) => (claim.includes(a) && fact.includes(b)) ||
|
|
191
|
+
(claim.includes(b) && fact.includes(a)));
|
|
192
|
+
}
|
|
193
|
+
generateReport(checks) {
|
|
194
|
+
if (checks.length === 0) {
|
|
195
|
+
return {
|
|
196
|
+
checks: [],
|
|
197
|
+
overallRisk: 'safe',
|
|
198
|
+
confidenceScore: 100,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
const riskScores = {
|
|
202
|
+
'critical': 3,
|
|
203
|
+
'warning': 2,
|
|
204
|
+
'info': 1,
|
|
205
|
+
};
|
|
206
|
+
const confidenceScores = {
|
|
207
|
+
'high': 1.0,
|
|
208
|
+
'medium': 0.7,
|
|
209
|
+
'low': 0.3,
|
|
210
|
+
};
|
|
211
|
+
let totalRisk = 0;
|
|
212
|
+
let maxRisk = 0;
|
|
213
|
+
for (const check of checks) {
|
|
214
|
+
const riskScore = riskScores[check.riskLevel];
|
|
215
|
+
const confidence = confidenceScores[check.confidence];
|
|
216
|
+
totalRisk += riskScore * confidence;
|
|
217
|
+
maxRisk = Math.max(maxRisk, riskScore * confidence);
|
|
218
|
+
}
|
|
219
|
+
const averageRisk = totalRisk / checks.length;
|
|
220
|
+
const overallRisk = averageRisk >= 2.5 ? 'critical' : averageRisk >= 1.5 ? 'warning' : 'safe';
|
|
221
|
+
// Confidence score: 100 - (risk * 20)
|
|
222
|
+
const confidenceScore = Math.max(0, Math.min(100, 100 - (averageRisk * 20)));
|
|
223
|
+
return {
|
|
224
|
+
checks,
|
|
225
|
+
overallRisk,
|
|
226
|
+
confidenceScore,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Enhanced validation that integrates with existing tool runtime
|
|
232
|
+
*/
|
|
233
|
+
export function enhanceWithHallucinationGuard(toolName, args, existingContent) {
|
|
234
|
+
const guard = new HallucinationGuard();
|
|
235
|
+
return guard.validateFileOperation(toolName, args, existingContent);
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=hallucinationGuard.js.map
|