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,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Provider - Abstract LLM Provider Implementation
|
|
3
|
+
*
|
|
4
|
+
* Provides common functionality for LLM providers:
|
|
5
|
+
* - Retry logic with exponential backoff
|
|
6
|
+
* - Rate limit handling
|
|
7
|
+
* - Transient error recovery
|
|
8
|
+
* - Message conversion utilities
|
|
9
|
+
* - Usage tracking
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* ```typescript
|
|
13
|
+
* class MyProvider extends BaseProvider {
|
|
14
|
+
* readonly id = 'my-provider';
|
|
15
|
+
*
|
|
16
|
+
* protected async doGenerate(messages, tools): Promise<ProviderResponse> {
|
|
17
|
+
* // Provider-specific implementation
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* protected async doGenerateStream(messages, tools): AsyncIterable<StreamChunk> {
|
|
21
|
+
* // Provider-specific implementation
|
|
22
|
+
* }
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
import type { ConversationMessage, LLMProvider, ProviderResponse, ProviderToolDefinition, ProviderUsage, StreamChunk, ProviderModelInfo } from '../core/types.js';
|
|
27
|
+
/** Patterns that indicate transient/retryable errors */
|
|
28
|
+
export declare const TRANSIENT_ERROR_PATTERNS: readonly ["premature close", "premature end", "unexpected end", "aborted", "fetcherror", "invalid response body", "gunzip", "decompress", "econnreset", "econnrefused", "epipe", "socket hang up", "network", "timeout", "500", "502", "503", "504", "overloaded"];
|
|
29
|
+
/** Default retry configuration */
|
|
30
|
+
export declare const DEFAULT_RETRY_CONFIG: {
|
|
31
|
+
readonly maxRetries: 3;
|
|
32
|
+
readonly initialDelayMs: 1000;
|
|
33
|
+
readonly maxDelayMs: 30000;
|
|
34
|
+
readonly backoffMultiplier: 2;
|
|
35
|
+
};
|
|
36
|
+
/** Default rate limit configuration */
|
|
37
|
+
export declare const DEFAULT_RATE_LIMIT_CONFIG: {
|
|
38
|
+
readonly maxRetries: 4;
|
|
39
|
+
readonly initialDelayMs: 1500;
|
|
40
|
+
readonly minDelayMs: 750;
|
|
41
|
+
readonly maxDelayMs: 40000;
|
|
42
|
+
};
|
|
43
|
+
export interface RetryConfig {
|
|
44
|
+
maxRetries: number;
|
|
45
|
+
initialDelayMs: number;
|
|
46
|
+
maxDelayMs: number;
|
|
47
|
+
backoffMultiplier: number;
|
|
48
|
+
}
|
|
49
|
+
export interface RateLimitConfig {
|
|
50
|
+
maxRetries: number;
|
|
51
|
+
initialDelayMs: number;
|
|
52
|
+
minDelayMs: number;
|
|
53
|
+
maxDelayMs: number;
|
|
54
|
+
}
|
|
55
|
+
export interface BaseProviderOptions {
|
|
56
|
+
model: string;
|
|
57
|
+
maxTokens?: number;
|
|
58
|
+
temperature?: number;
|
|
59
|
+
retryConfig?: Partial<RetryConfig>;
|
|
60
|
+
rateLimitConfig?: Partial<RateLimitConfig>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Check if an error is transient and can be retried
|
|
64
|
+
*/
|
|
65
|
+
export declare function isTransientError(error: unknown): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Check if an error is a rate limit error
|
|
68
|
+
*/
|
|
69
|
+
export declare function isRateLimitError(error: unknown): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Check if an error is an authentication error
|
|
72
|
+
*/
|
|
73
|
+
export declare function isAuthError(error: unknown): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Sleep for a given duration
|
|
76
|
+
*/
|
|
77
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Calculate exponential backoff delay
|
|
80
|
+
*/
|
|
81
|
+
export declare function calculateBackoffDelay(attempt: number, config: RetryConfig): number;
|
|
82
|
+
/**
|
|
83
|
+
* Execute an operation with retry logic
|
|
84
|
+
*/
|
|
85
|
+
export declare function withRetry<T>(operation: () => Promise<T>, options?: {
|
|
86
|
+
config?: Partial<RetryConfig>;
|
|
87
|
+
shouldRetry?: (error: unknown) => boolean;
|
|
88
|
+
onRetry?: (error: unknown, attempt: number, delay: number) => void;
|
|
89
|
+
}): Promise<T>;
|
|
90
|
+
/**
|
|
91
|
+
* Extract system message from conversation
|
|
92
|
+
*/
|
|
93
|
+
export declare function extractSystemMessage(messages: ConversationMessage[]): {
|
|
94
|
+
system: string | null;
|
|
95
|
+
rest: ConversationMessage[];
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Merge consecutive messages from the same role
|
|
99
|
+
*/
|
|
100
|
+
export declare function mergeConsecutiveMessages(messages: ConversationMessage[]): ConversationMessage[];
|
|
101
|
+
/**
|
|
102
|
+
* Create an empty usage object
|
|
103
|
+
*/
|
|
104
|
+
export declare function emptyUsage(): ProviderUsage;
|
|
105
|
+
/**
|
|
106
|
+
* Merge usage objects
|
|
107
|
+
*/
|
|
108
|
+
export declare function mergeUsage(a: ProviderUsage, b: ProviderUsage): ProviderUsage;
|
|
109
|
+
/**
|
|
110
|
+
* Abstract base class for LLM providers
|
|
111
|
+
*
|
|
112
|
+
* Implements common functionality like retry logic and error handling.
|
|
113
|
+
* Subclasses must implement the abstract methods for provider-specific behavior.
|
|
114
|
+
*/
|
|
115
|
+
export declare abstract class BaseProvider implements LLMProvider {
|
|
116
|
+
abstract readonly id: string;
|
|
117
|
+
readonly model: string;
|
|
118
|
+
protected readonly maxTokens: number;
|
|
119
|
+
protected readonly temperature: number;
|
|
120
|
+
protected readonly retryConfig: RetryConfig;
|
|
121
|
+
protected readonly rateLimitConfig: RateLimitConfig;
|
|
122
|
+
constructor(options: BaseProviderOptions);
|
|
123
|
+
/**
|
|
124
|
+
* Generate a response (implemented by subclass)
|
|
125
|
+
*/
|
|
126
|
+
generate(messages: ConversationMessage[], tools: ProviderToolDefinition[]): Promise<ProviderResponse>;
|
|
127
|
+
/**
|
|
128
|
+
* Generate a streaming response (implemented by subclass)
|
|
129
|
+
*/
|
|
130
|
+
generateStream(messages: ConversationMessage[], tools: ProviderToolDefinition[]): AsyncIterableIterator<StreamChunk>;
|
|
131
|
+
/**
|
|
132
|
+
* Get available models (optional, implemented by subclass)
|
|
133
|
+
*/
|
|
134
|
+
getModels(): Promise<ProviderModelInfo[]>;
|
|
135
|
+
/**
|
|
136
|
+
* Provider-specific generate implementation
|
|
137
|
+
*/
|
|
138
|
+
protected abstract doGenerate(messages: ConversationMessage[], tools: ProviderToolDefinition[]): Promise<ProviderResponse>;
|
|
139
|
+
/**
|
|
140
|
+
* Provider-specific stream implementation
|
|
141
|
+
*/
|
|
142
|
+
protected abstract doGenerateStream(messages: ConversationMessage[], tools: ProviderToolDefinition[]): AsyncIterable<StreamChunk>;
|
|
143
|
+
/**
|
|
144
|
+
* Called when a retry is about to happen
|
|
145
|
+
*/
|
|
146
|
+
protected onRetry(_error: unknown, _attempt: number, _delay: number): void;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=baseProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseProvider.d.ts","sourceRoot":"","sources":["../../src/providers/baseProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Provider - Abstract LLM Provider Implementation
|
|
3
|
+
*
|
|
4
|
+
* Provides common functionality for LLM providers:
|
|
5
|
+
* - Retry logic with exponential backoff
|
|
6
|
+
* - Rate limit handling
|
|
7
|
+
* - Transient error recovery
|
|
8
|
+
* - Message conversion utilities
|
|
9
|
+
* - Usage tracking
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* ```typescript
|
|
13
|
+
* class MyProvider extends BaseProvider {
|
|
14
|
+
* readonly id = 'my-provider';
|
|
15
|
+
*
|
|
16
|
+
* protected async doGenerate(messages, tools): Promise<ProviderResponse> {
|
|
17
|
+
* // Provider-specific implementation
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* protected async doGenerateStream(messages, tools): AsyncIterable<StreamChunk> {
|
|
21
|
+
* // Provider-specific implementation
|
|
22
|
+
* }
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
27
|
+
// Constants
|
|
28
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
29
|
+
/** Patterns that indicate transient/retryable errors */
|
|
30
|
+
export const TRANSIENT_ERROR_PATTERNS = [
|
|
31
|
+
'premature close',
|
|
32
|
+
'premature end',
|
|
33
|
+
'unexpected end',
|
|
34
|
+
'aborted',
|
|
35
|
+
'fetcherror',
|
|
36
|
+
'invalid response body',
|
|
37
|
+
'gunzip',
|
|
38
|
+
'decompress',
|
|
39
|
+
'econnreset',
|
|
40
|
+
'econnrefused',
|
|
41
|
+
'epipe',
|
|
42
|
+
'socket hang up',
|
|
43
|
+
'network',
|
|
44
|
+
'timeout',
|
|
45
|
+
'500',
|
|
46
|
+
'502',
|
|
47
|
+
'503',
|
|
48
|
+
'504',
|
|
49
|
+
'overloaded',
|
|
50
|
+
];
|
|
51
|
+
/** Default retry configuration */
|
|
52
|
+
export const DEFAULT_RETRY_CONFIG = {
|
|
53
|
+
maxRetries: 3,
|
|
54
|
+
initialDelayMs: 1000,
|
|
55
|
+
maxDelayMs: 30000,
|
|
56
|
+
backoffMultiplier: 2,
|
|
57
|
+
};
|
|
58
|
+
/** Default rate limit configuration */
|
|
59
|
+
export const DEFAULT_RATE_LIMIT_CONFIG = {
|
|
60
|
+
maxRetries: 4,
|
|
61
|
+
initialDelayMs: 1500,
|
|
62
|
+
minDelayMs: 750,
|
|
63
|
+
maxDelayMs: 40000,
|
|
64
|
+
};
|
|
65
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
66
|
+
// Error Detection Utilities
|
|
67
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
68
|
+
/**
|
|
69
|
+
* Check if an error is transient and can be retried
|
|
70
|
+
*/
|
|
71
|
+
export function isTransientError(error) {
|
|
72
|
+
if (!(error instanceof Error))
|
|
73
|
+
return false;
|
|
74
|
+
const message = error.message.toLowerCase();
|
|
75
|
+
const errorName = error.name?.toLowerCase() ?? '';
|
|
76
|
+
const errorCode = error.code?.toLowerCase() ?? '';
|
|
77
|
+
const allText = `${message} ${errorName} ${errorCode}`;
|
|
78
|
+
return TRANSIENT_ERROR_PATTERNS.some((pattern) => allText.includes(pattern));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Check if an error is a rate limit error
|
|
82
|
+
*/
|
|
83
|
+
export function isRateLimitError(error) {
|
|
84
|
+
if (!(error instanceof Error))
|
|
85
|
+
return false;
|
|
86
|
+
const message = error.message.toLowerCase();
|
|
87
|
+
// Check for common rate limit indicators
|
|
88
|
+
if (message.includes('rate limit') ||
|
|
89
|
+
message.includes('rate_limit') ||
|
|
90
|
+
message.includes('too many requests') ||
|
|
91
|
+
message.includes('429')) {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
// Check for status code
|
|
95
|
+
const status = error.status;
|
|
96
|
+
return status === 429;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check if an error is an authentication error
|
|
100
|
+
*/
|
|
101
|
+
export function isAuthError(error) {
|
|
102
|
+
if (!(error instanceof Error))
|
|
103
|
+
return false;
|
|
104
|
+
const message = error.message.toLowerCase();
|
|
105
|
+
const status = error.status;
|
|
106
|
+
return (status === 401 ||
|
|
107
|
+
status === 403 ||
|
|
108
|
+
message.includes('unauthorized') ||
|
|
109
|
+
message.includes('invalid api key') ||
|
|
110
|
+
message.includes('authentication'));
|
|
111
|
+
}
|
|
112
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
113
|
+
// Retry Utilities
|
|
114
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
115
|
+
/**
|
|
116
|
+
* Sleep for a given duration
|
|
117
|
+
*/
|
|
118
|
+
export function sleep(ms) {
|
|
119
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Calculate exponential backoff delay
|
|
123
|
+
*/
|
|
124
|
+
export function calculateBackoffDelay(attempt, config) {
|
|
125
|
+
const delay = config.initialDelayMs * Math.pow(config.backoffMultiplier, attempt);
|
|
126
|
+
// Add jitter (±10%)
|
|
127
|
+
const jitter = delay * 0.1 * (Math.random() * 2 - 1);
|
|
128
|
+
return Math.min(delay + jitter, config.maxDelayMs);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Execute an operation with retry logic
|
|
132
|
+
*/
|
|
133
|
+
export async function withRetry(operation, options = {}) {
|
|
134
|
+
const config = {
|
|
135
|
+
...DEFAULT_RETRY_CONFIG,
|
|
136
|
+
...options.config,
|
|
137
|
+
};
|
|
138
|
+
const shouldRetry = options.shouldRetry ?? isTransientError;
|
|
139
|
+
let lastError;
|
|
140
|
+
for (let attempt = 0; attempt <= config.maxRetries; attempt++) {
|
|
141
|
+
try {
|
|
142
|
+
return await operation();
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
lastError = error;
|
|
146
|
+
// Don't retry auth errors
|
|
147
|
+
if (isAuthError(error)) {
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
// Check if we should retry
|
|
151
|
+
if (attempt === config.maxRetries || !shouldRetry(error)) {
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
// Calculate delay and wait
|
|
155
|
+
const delay = calculateBackoffDelay(attempt, config);
|
|
156
|
+
options.onRetry?.(error, attempt, delay);
|
|
157
|
+
await sleep(delay);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
throw lastError;
|
|
161
|
+
}
|
|
162
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
163
|
+
// Message Utilities
|
|
164
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
165
|
+
/**
|
|
166
|
+
* Extract system message from conversation
|
|
167
|
+
*/
|
|
168
|
+
export function extractSystemMessage(messages) {
|
|
169
|
+
const systemMessages = messages.filter((m) => m.role === 'system');
|
|
170
|
+
const rest = messages.filter((m) => m.role !== 'system');
|
|
171
|
+
if (systemMessages.length === 0) {
|
|
172
|
+
return { system: null, rest };
|
|
173
|
+
}
|
|
174
|
+
// Combine all system messages
|
|
175
|
+
const system = systemMessages
|
|
176
|
+
.map((m) => (typeof m.content === 'string' ? m.content : JSON.stringify(m.content)))
|
|
177
|
+
.join('\n\n');
|
|
178
|
+
return { system, rest };
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Merge consecutive messages from the same role
|
|
182
|
+
*/
|
|
183
|
+
export function mergeConsecutiveMessages(messages) {
|
|
184
|
+
if (messages.length === 0)
|
|
185
|
+
return [];
|
|
186
|
+
const merged = [];
|
|
187
|
+
let current = null;
|
|
188
|
+
for (const message of messages) {
|
|
189
|
+
if (!current) {
|
|
190
|
+
current = { ...message };
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
if (current.role === message.role && typeof current.content === 'string' && typeof message.content === 'string') {
|
|
194
|
+
// Merge text content
|
|
195
|
+
current.content = `${current.content}\n\n${message.content}`;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
merged.push(current);
|
|
199
|
+
current = { ...message };
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (current) {
|
|
203
|
+
merged.push(current);
|
|
204
|
+
}
|
|
205
|
+
return merged;
|
|
206
|
+
}
|
|
207
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
208
|
+
// Usage Tracking
|
|
209
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
210
|
+
/**
|
|
211
|
+
* Create an empty usage object
|
|
212
|
+
*/
|
|
213
|
+
export function emptyUsage() {
|
|
214
|
+
return {
|
|
215
|
+
inputTokens: 0,
|
|
216
|
+
outputTokens: 0,
|
|
217
|
+
totalTokens: 0,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Merge usage objects
|
|
222
|
+
*/
|
|
223
|
+
export function mergeUsage(a, b) {
|
|
224
|
+
return {
|
|
225
|
+
inputTokens: (a.inputTokens ?? 0) + (b.inputTokens ?? 0),
|
|
226
|
+
outputTokens: (a.outputTokens ?? 0) + (b.outputTokens ?? 0),
|
|
227
|
+
totalTokens: (a.totalTokens ?? 0) + (b.totalTokens ?? 0),
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
231
|
+
// Abstract Base Provider
|
|
232
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
233
|
+
/**
|
|
234
|
+
* Abstract base class for LLM providers
|
|
235
|
+
*
|
|
236
|
+
* Implements common functionality like retry logic and error handling.
|
|
237
|
+
* Subclasses must implement the abstract methods for provider-specific behavior.
|
|
238
|
+
*/
|
|
239
|
+
export class BaseProvider {
|
|
240
|
+
model;
|
|
241
|
+
maxTokens;
|
|
242
|
+
temperature;
|
|
243
|
+
retryConfig;
|
|
244
|
+
rateLimitConfig;
|
|
245
|
+
constructor(options) {
|
|
246
|
+
this.model = options.model;
|
|
247
|
+
this.maxTokens = options.maxTokens ?? 4096;
|
|
248
|
+
this.temperature = options.temperature ?? 0;
|
|
249
|
+
this.retryConfig = { ...DEFAULT_RETRY_CONFIG, ...options.retryConfig };
|
|
250
|
+
this.rateLimitConfig = { ...DEFAULT_RATE_LIMIT_CONFIG, ...options.rateLimitConfig };
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Generate a response (implemented by subclass)
|
|
254
|
+
*/
|
|
255
|
+
async generate(messages, tools) {
|
|
256
|
+
return withRetry(() => this.doGenerate(messages, tools), {
|
|
257
|
+
config: this.retryConfig,
|
|
258
|
+
shouldRetry: (error) => isTransientError(error) || isRateLimitError(error),
|
|
259
|
+
onRetry: (error, attempt, delay) => {
|
|
260
|
+
this.onRetry(error, attempt, delay);
|
|
261
|
+
},
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Generate a streaming response (implemented by subclass)
|
|
266
|
+
*/
|
|
267
|
+
async *generateStream(messages, tools) {
|
|
268
|
+
// Stream operations are harder to retry, so we do best-effort
|
|
269
|
+
yield* this.doGenerateStream(messages, tools);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Get available models (optional, implemented by subclass)
|
|
273
|
+
*/
|
|
274
|
+
async getModels() {
|
|
275
|
+
return [];
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Called when a retry is about to happen
|
|
279
|
+
*/
|
|
280
|
+
onRetry(_error, _attempt, _delay) {
|
|
281
|
+
// Subclasses can override for logging
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=baseProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseProvider.js","sourceRoot":"","sources":["../../src/providers/baseProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeepSeek-Reasoner Provider
|
|
3
|
+
*
|
|
4
|
+
* Dedicated provider for Apple Silicon zero-day research.
|
|
5
|
+
* Uses DeepSeek-Reasoner model optimized for security analysis.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Extended reasoning with chain-of-thought
|
|
9
|
+
* - Low temperature for precise security analysis
|
|
10
|
+
* - Optimized for vulnerability discovery tasks
|
|
11
|
+
*/
|
|
12
|
+
import type { ConversationMessage, LLMProvider, ProviderResponse, ProviderToolDefinition, StreamChunk, ProviderModelInfo } from '../core/types.js';
|
|
13
|
+
export interface DeepSeekReasonerConfig {
|
|
14
|
+
/** DeepSeek API key (or use DEEPSEEK_API_KEY env var) */
|
|
15
|
+
apiKey?: string;
|
|
16
|
+
/** Model to use (default: deepseek-reasoner) */
|
|
17
|
+
model?: string;
|
|
18
|
+
/** Maximum tokens for response (default: 8192) */
|
|
19
|
+
maxTokens?: number;
|
|
20
|
+
/** Temperature for generation (default: 0.1 for precise security analysis) */
|
|
21
|
+
temperature?: number;
|
|
22
|
+
/** Request timeout in milliseconds (default: 180000 for reasoning tasks) */
|
|
23
|
+
timeout?: number;
|
|
24
|
+
/** Maximum retries for transient errors (default: 3) */
|
|
25
|
+
maxRetries?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* DeepSeek-Reasoner provider for Apple Silicon zero-day research.
|
|
29
|
+
*
|
|
30
|
+
* Wraps the OpenAI-compatible provider with DeepSeek-specific configuration.
|
|
31
|
+
*/
|
|
32
|
+
export declare class DeepSeekReasonerProvider implements LLMProvider {
|
|
33
|
+
readonly id = "deepseek-reasoner";
|
|
34
|
+
readonly model: string;
|
|
35
|
+
private readonly innerProvider;
|
|
36
|
+
constructor(config?: DeepSeekReasonerConfig);
|
|
37
|
+
/**
|
|
38
|
+
* Generate a response from DeepSeek-Reasoner
|
|
39
|
+
*/
|
|
40
|
+
generate(messages: ConversationMessage[], tools: ProviderToolDefinition[]): Promise<ProviderResponse>;
|
|
41
|
+
/**
|
|
42
|
+
* Generate a streaming response from DeepSeek-Reasoner
|
|
43
|
+
*/
|
|
44
|
+
generateStream(messages: ConversationMessage[], tools: ProviderToolDefinition[]): AsyncIterableIterator<StreamChunk>;
|
|
45
|
+
/**
|
|
46
|
+
* Get model information
|
|
47
|
+
*/
|
|
48
|
+
getModelInfo(): Promise<ProviderModelInfo | null>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create a DeepSeek-Reasoner provider instance.
|
|
52
|
+
*
|
|
53
|
+
* This is the only supported provider for Apple Silicon zero-day research.
|
|
54
|
+
*/
|
|
55
|
+
export declare function createDeepSeekReasonerProvider(config?: DeepSeekReasonerConfig): DeepSeekReasonerProvider;
|
|
56
|
+
export default DeepSeekReasonerProvider;
|
|
57
|
+
//# sourceMappingURL=deepseekReasonerProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepseekReasonerProvider.d.ts","sourceRoot":"","sources":["../../src/providers/deepseekReasonerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAM1B,MAAM,WAAW,sBAAsB;IACrC,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiBD;;;;GAIG;AACH,qBAAa,wBAAyB,YAAW,WAAW;IAC1D,QAAQ,CAAC,EAAE,uBAAuB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgC;gBAElD,MAAM,GAAE,sBAA2B;IAyB/C;;OAEG;IACG,QAAQ,CACZ,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,KAAK,EAAE,sBAAsB,EAAE,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAI5B;;OAEG;IACI,cAAc,CACnB,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,KAAK,EAAE,sBAAsB,EAAE,GAC9B,qBAAqB,CAAC,WAAW,CAAC;IAIrC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CAGxD;AAMD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,GAAE,sBAA2B,GAClC,wBAAwB,CAE1B;AAMD,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeepSeek-Reasoner Provider
|
|
3
|
+
*
|
|
4
|
+
* Dedicated provider for Apple Silicon zero-day research.
|
|
5
|
+
* Uses DeepSeek-Reasoner model optimized for security analysis.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Extended reasoning with chain-of-thought
|
|
9
|
+
* - Low temperature for precise security analysis
|
|
10
|
+
* - Optimized for vulnerability discovery tasks
|
|
11
|
+
*/
|
|
12
|
+
import { OpenAIChatCompletionsProvider } from './openaiChatCompletionsProvider.js';
|
|
13
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
14
|
+
// Default Configuration
|
|
15
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
16
|
+
const DEEPSEEK_API_BASE = 'https://api.deepseek.com';
|
|
17
|
+
const DEFAULT_MODEL = 'deepseek-reasoner';
|
|
18
|
+
const DEFAULT_MAX_TOKENS = 8192;
|
|
19
|
+
const DEFAULT_TEMPERATURE = 0.1; // Low for precise security research
|
|
20
|
+
const DEFAULT_TIMEOUT = 180000; // 3 minutes for complex reasoning
|
|
21
|
+
const DEFAULT_MAX_RETRIES = 3;
|
|
22
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
23
|
+
// Provider Implementation
|
|
24
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
25
|
+
/**
|
|
26
|
+
* DeepSeek-Reasoner provider for Apple Silicon zero-day research.
|
|
27
|
+
*
|
|
28
|
+
* Wraps the OpenAI-compatible provider with DeepSeek-specific configuration.
|
|
29
|
+
*/
|
|
30
|
+
export class DeepSeekReasonerProvider {
|
|
31
|
+
id = 'deepseek-reasoner';
|
|
32
|
+
model;
|
|
33
|
+
innerProvider;
|
|
34
|
+
constructor(config = {}) {
|
|
35
|
+
const apiKey = config.apiKey ?? process.env['DEEPSEEK_API_KEY'];
|
|
36
|
+
if (!apiKey) {
|
|
37
|
+
throw new Error('DeepSeek API key required. Set DEEPSEEK_API_KEY environment variable ' +
|
|
38
|
+
'or pass apiKey in config.');
|
|
39
|
+
}
|
|
40
|
+
this.model = config.model ?? DEFAULT_MODEL;
|
|
41
|
+
// Create the underlying OpenAI-compatible provider
|
|
42
|
+
this.innerProvider = new OpenAIChatCompletionsProvider({
|
|
43
|
+
apiKey,
|
|
44
|
+
model: this.model,
|
|
45
|
+
providerId: 'deepseek-reasoner',
|
|
46
|
+
baseURL: DEEPSEEK_API_BASE,
|
|
47
|
+
timeout: config.timeout ?? DEFAULT_TIMEOUT,
|
|
48
|
+
maxRetries: config.maxRetries ?? DEFAULT_MAX_RETRIES,
|
|
49
|
+
temperature: config.temperature ?? DEFAULT_TEMPERATURE,
|
|
50
|
+
maxTokens: config.maxTokens ?? DEFAULT_MAX_TOKENS,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Generate a response from DeepSeek-Reasoner
|
|
55
|
+
*/
|
|
56
|
+
async generate(messages, tools) {
|
|
57
|
+
return this.innerProvider.generate(messages, tools);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Generate a streaming response from DeepSeek-Reasoner
|
|
61
|
+
*/
|
|
62
|
+
async *generateStream(messages, tools) {
|
|
63
|
+
yield* this.innerProvider.generateStream(messages, tools);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get model information
|
|
67
|
+
*/
|
|
68
|
+
async getModelInfo() {
|
|
69
|
+
return this.innerProvider.getModelInfo();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
73
|
+
// Factory Function
|
|
74
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
75
|
+
/**
|
|
76
|
+
* Create a DeepSeek-Reasoner provider instance.
|
|
77
|
+
*
|
|
78
|
+
* This is the only supported provider for Apple Silicon zero-day research.
|
|
79
|
+
*/
|
|
80
|
+
export function createDeepSeekReasonerProvider(config = {}) {
|
|
81
|
+
return new DeepSeekReasonerProvider(config);
|
|
82
|
+
}
|
|
83
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
84
|
+
// Exports
|
|
85
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
86
|
+
export default DeepSeekReasonerProvider;
|
|
87
|
+
//# sourceMappingURL=deepseekReasonerProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepseekReasonerProvider.js","sourceRoot":"","sources":["../../src/providers/deepseekReasonerProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AA6BnF,kFAAkF;AAClF,wBAAwB;AACxB,kFAAkF;AAElF,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AACrD,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAC1C,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,mBAAmB,GAAG,GAAG,CAAC,CAAC,oCAAoC;AACrE,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,kCAAkC;AAClE,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,kFAAkF;AAClF,0BAA0B;AAC1B,kFAAkF;AAElF;;;;GAIG;AACH,MAAM,OAAO,wBAAwB;IAC1B,EAAE,GAAG,mBAAmB,CAAC;IACzB,KAAK,CAAS;IAEN,aAAa,CAAgC;IAE9D,YAAY,SAAiC,EAAE;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEhE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,uEAAuE;gBACvE,2BAA2B,CAC5B,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC;QAE3C,mDAAmD;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,6BAA6B,CAAC;YACrD,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,mBAAmB;YAC/B,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,eAAe;YAC1C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,mBAAmB;YACpD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,mBAAmB;YACtD,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,kBAAkB;SAClD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,QAA+B,EAC/B,KAA+B;QAE/B,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,cAAc,CACnB,QAA+B,EAC/B,KAA+B;QAE/B,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;IAC3C,CAAC;CACF;AAED,kFAAkF;AAClF,mBAAmB;AACnB,kFAAkF;AAElF;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,SAAiC,EAAE;IAEnC,OAAO,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,kFAAkF;AAClF,UAAU;AACV,kFAAkF;AAElF,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { ConversationMessage, LLMProvider, ProviderId, ProviderModelInfo, ProviderResponse, ProviderToolDefinition, StreamChunk } from '../core/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Security utility for safe JSON parsing with protection against prototype pollution
|
|
4
|
+
*/
|
|
5
|
+
export declare function safeJSONParse<T = unknown>(json: string, options?: {
|
|
6
|
+
maxDepth?: number;
|
|
7
|
+
maxProperties?: number;
|
|
8
|
+
}): T;
|
|
9
|
+
/**
|
|
10
|
+
* Custom error class for provider-specific failures
|
|
11
|
+
*/
|
|
12
|
+
export declare class ProviderStreamError extends Error {
|
|
13
|
+
readonly isRetryable: boolean;
|
|
14
|
+
readonly originalError?: Error;
|
|
15
|
+
readonly providerId: string;
|
|
16
|
+
constructor(message: string, providerId: string, originalError?: Error, isRetryable?: boolean);
|
|
17
|
+
}
|
|
18
|
+
interface OpenAIChatCompletionsOptions {
|
|
19
|
+
apiKey: string;
|
|
20
|
+
model: string;
|
|
21
|
+
providerId?: ProviderId;
|
|
22
|
+
baseURL?: string;
|
|
23
|
+
/** Request timeout in milliseconds (default: 120000) */
|
|
24
|
+
timeout?: number;
|
|
25
|
+
/** Maximum retries for transient errors (default: 3) */
|
|
26
|
+
maxRetries?: number;
|
|
27
|
+
/** Optional temperature override */
|
|
28
|
+
temperature?: number;
|
|
29
|
+
/** Maximum completion tokens to request (default: 4096 to avoid runaway outputs) */
|
|
30
|
+
maxTokens?: number;
|
|
31
|
+
}
|
|
32
|
+
export declare class OpenAIChatCompletionsProvider implements LLMProvider {
|
|
33
|
+
readonly id: ProviderId;
|
|
34
|
+
readonly model: string;
|
|
35
|
+
private readonly client;
|
|
36
|
+
private readonly maxRetries;
|
|
37
|
+
private readonly temperature?;
|
|
38
|
+
private readonly maxTokens;
|
|
39
|
+
private readonly requestCount;
|
|
40
|
+
private readonly lastRequestTime;
|
|
41
|
+
constructor(options: OpenAIChatCompletionsOptions);
|
|
42
|
+
/**
|
|
43
|
+
* Sleep for a given number of milliseconds
|
|
44
|
+
*/
|
|
45
|
+
private sleep;
|
|
46
|
+
/**
|
|
47
|
+
* Calculate exponential backoff delay
|
|
48
|
+
*/
|
|
49
|
+
private getBackoffDelay;
|
|
50
|
+
/**
|
|
51
|
+
* Execute request with retry logic for transient errors
|
|
52
|
+
*/
|
|
53
|
+
private executeWithRetry;
|
|
54
|
+
generate(messages: ConversationMessage[], tools: ProviderToolDefinition[]): Promise<ProviderResponse>;
|
|
55
|
+
generateStream(messages: ConversationMessage[], tools: ProviderToolDefinition[]): AsyncIterableIterator<StreamChunk>;
|
|
56
|
+
private cachedModelInfo;
|
|
57
|
+
/**
|
|
58
|
+
* Fetch model info from OpenAI API
|
|
59
|
+
* Returns context window and token limits from the real API
|
|
60
|
+
*/
|
|
61
|
+
getModelInfo(): Promise<ProviderModelInfo | null>;
|
|
62
|
+
}
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=openaiChatCompletionsProvider.d.ts.map
|