erosolar-cli 1.7.439 → 1.7.440
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/dist/StringUtils.d.ts +8 -0
- package/dist/StringUtils.d.ts.map +1 -0
- package/dist/StringUtils.js +11 -0
- package/dist/StringUtils.js.map +1 -0
- package/dist/adapters/browser/index.d.ts +12 -0
- package/dist/adapters/browser/index.d.ts.map +1 -0
- package/dist/adapters/browser/index.js +11 -0
- package/dist/adapters/browser/index.js.map +1 -0
- package/dist/adapters/node/index.d.ts +17 -0
- package/dist/adapters/node/index.d.ts.map +1 -0
- package/dist/adapters/node/index.js +35 -0
- package/dist/adapters/node/index.js.map +1 -0
- package/dist/adapters/remote/index.d.ts +13 -0
- package/dist/adapters/remote/index.d.ts.map +1 -0
- package/dist/adapters/remote/index.js +20 -0
- package/dist/adapters/remote/index.js.map +1 -0
- package/dist/adapters/types.d.ts +14 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/bin/erosolar.d.ts +9 -0
- package/dist/bin/erosolar.d.ts.map +1 -0
- package/dist/bin/erosolar.js +93 -0
- package/dist/bin/erosolar.js.map +1 -0
- package/dist/bin/selfTest.d.ts +14 -0
- package/dist/bin/selfTest.d.ts.map +1 -0
- package/dist/bin/selfTest.js +304 -0
- package/dist/bin/selfTest.js.map +1 -0
- package/dist/browser/BrowserSessionManager.d.ts +307 -0
- package/dist/browser/BrowserSessionManager.d.ts.map +1 -0
- package/dist/browser/BrowserSessionManager.js +713 -0
- package/dist/browser/BrowserSessionManager.js.map +1 -0
- package/dist/capabilities/advancedTestGenerationCapability.d.ts +17 -0
- package/dist/capabilities/advancedTestGenerationCapability.d.ts.map +1 -0
- package/dist/capabilities/advancedTestGenerationCapability.js +28 -0
- package/dist/capabilities/advancedTestGenerationCapability.js.map +1 -0
- package/dist/capabilities/agentSpawningCapability.d.ts +6 -0
- package/dist/capabilities/agentSpawningCapability.d.ts.map +1 -0
- package/dist/capabilities/agentSpawningCapability.js +168 -0
- package/dist/capabilities/agentSpawningCapability.js.map +1 -0
- package/dist/capabilities/askUserCapability.d.ts +21 -0
- package/dist/capabilities/askUserCapability.d.ts.map +1 -0
- package/dist/capabilities/askUserCapability.js +155 -0
- package/dist/capabilities/askUserCapability.js.map +1 -0
- package/dist/capabilities/bashCapability.d.ts +13 -0
- package/dist/capabilities/bashCapability.d.ts.map +1 -0
- package/dist/capabilities/bashCapability.js +24 -0
- package/dist/capabilities/bashCapability.js.map +1 -0
- package/dist/capabilities/browserAutomationCapability.d.ts +37 -0
- package/dist/capabilities/browserAutomationCapability.d.ts.map +1 -0
- package/dist/capabilities/browserAutomationCapability.js +49 -0
- package/dist/capabilities/browserAutomationCapability.js.map +1 -0
- package/dist/capabilities/buildCapability.d.ts +24 -0
- package/dist/capabilities/buildCapability.d.ts.map +1 -0
- package/dist/capabilities/buildCapability.js +25 -0
- package/dist/capabilities/buildCapability.js.map +1 -0
- package/dist/capabilities/cloudCapability.d.ts +13 -0
- package/dist/capabilities/cloudCapability.d.ts.map +1 -0
- package/dist/capabilities/cloudCapability.js +38 -0
- package/dist/capabilities/cloudCapability.js.map +1 -0
- package/dist/capabilities/codeAnalysisCapability.d.ts +13 -0
- package/dist/capabilities/codeAnalysisCapability.d.ts.map +1 -0
- package/dist/capabilities/codeAnalysisCapability.js +24 -0
- package/dist/capabilities/codeAnalysisCapability.js.map +1 -0
- package/dist/capabilities/codeGenerationCapability.d.ts +13 -0
- package/dist/capabilities/codeGenerationCapability.d.ts.map +1 -0
- package/dist/capabilities/codeGenerationCapability.js +25 -0
- package/dist/capabilities/codeGenerationCapability.js.map +1 -0
- package/dist/capabilities/codeQualityCapability.d.ts +13 -0
- package/dist/capabilities/codeQualityCapability.d.ts.map +1 -0
- package/dist/capabilities/codeQualityCapability.js +25 -0
- package/dist/capabilities/codeQualityCapability.js.map +1 -0
- package/dist/capabilities/dependencySecurityCapability.d.ts +13 -0
- package/dist/capabilities/dependencySecurityCapability.d.ts.map +1 -0
- package/dist/capabilities/dependencySecurityCapability.js +24 -0
- package/dist/capabilities/dependencySecurityCapability.js.map +1 -0
- package/dist/capabilities/devCapability.d.ts +13 -0
- package/dist/capabilities/devCapability.d.ts.map +1 -0
- package/dist/capabilities/devCapability.js +24 -0
- package/dist/capabilities/devCapability.js.map +1 -0
- package/dist/capabilities/editCapability.d.ts +17 -0
- package/dist/capabilities/editCapability.d.ts.map +1 -0
- package/dist/capabilities/editCapability.js +27 -0
- package/dist/capabilities/editCapability.js.map +1 -0
- package/dist/capabilities/emailCapability.d.ts +12 -0
- package/dist/capabilities/emailCapability.d.ts.map +1 -0
- package/dist/capabilities/emailCapability.js +22 -0
- package/dist/capabilities/emailCapability.js.map +1 -0
- package/dist/capabilities/enhancedCodeIntelligenceCapability.d.ts +17 -0
- package/dist/capabilities/enhancedCodeIntelligenceCapability.d.ts.map +1 -0
- package/dist/capabilities/enhancedCodeIntelligenceCapability.js +28 -0
- package/dist/capabilities/enhancedCodeIntelligenceCapability.js.map +1 -0
- package/dist/capabilities/enhancedDevWorkflowCapability.d.ts +17 -0
- package/dist/capabilities/enhancedDevWorkflowCapability.d.ts.map +1 -0
- package/dist/capabilities/enhancedDevWorkflowCapability.js +28 -0
- package/dist/capabilities/enhancedDevWorkflowCapability.js.map +1 -0
- package/dist/capabilities/enhancedGitCapability.d.ts +7 -0
- package/dist/capabilities/enhancedGitCapability.d.ts.map +1 -0
- package/dist/capabilities/enhancedGitCapability.js +220 -0
- package/dist/capabilities/enhancedGitCapability.js.map +1 -0
- package/dist/capabilities/filesystemCapability.d.ts +13 -0
- package/dist/capabilities/filesystemCapability.d.ts.map +1 -0
- package/dist/capabilities/filesystemCapability.js +24 -0
- package/dist/capabilities/filesystemCapability.js.map +1 -0
- package/dist/capabilities/frontendTestingCapability.d.ts +13 -0
- package/dist/capabilities/frontendTestingCapability.d.ts.map +1 -0
- package/dist/capabilities/frontendTestingCapability.js +28 -0
- package/dist/capabilities/frontendTestingCapability.js.map +1 -0
- package/dist/capabilities/globCapability.d.ts +17 -0
- package/dist/capabilities/globCapability.d.ts.map +1 -0
- package/dist/capabilities/globCapability.js +27 -0
- package/dist/capabilities/globCapability.js.map +1 -0
- package/dist/capabilities/index.d.ts +26 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +26 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/interactionCapability.d.ts +12 -0
- package/dist/capabilities/interactionCapability.d.ts.map +1 -0
- package/dist/capabilities/interactionCapability.js +22 -0
- package/dist/capabilities/interactionCapability.js.map +1 -0
- package/dist/capabilities/learnCapability.d.ts +22 -0
- package/dist/capabilities/learnCapability.d.ts.map +1 -0
- package/dist/capabilities/learnCapability.js +37 -0
- package/dist/capabilities/learnCapability.js.map +1 -0
- package/dist/capabilities/mcpCapability.d.ts +6 -0
- package/dist/capabilities/mcpCapability.d.ts.map +1 -0
- package/dist/capabilities/mcpCapability.js +19 -0
- package/dist/capabilities/mcpCapability.js.map +1 -0
- package/dist/capabilities/notebookCapability.d.ts +17 -0
- package/dist/capabilities/notebookCapability.d.ts.map +1 -0
- package/dist/capabilities/notebookCapability.js +27 -0
- package/dist/capabilities/notebookCapability.js.map +1 -0
- package/dist/capabilities/performanceMonitoringCapability.d.ts +108 -0
- package/dist/capabilities/performanceMonitoringCapability.d.ts.map +1 -0
- package/dist/capabilities/performanceMonitoringCapability.js +176 -0
- package/dist/capabilities/performanceMonitoringCapability.js.map +1 -0
- package/dist/capabilities/planningCapability.d.ts +16 -0
- package/dist/capabilities/planningCapability.d.ts.map +1 -0
- package/dist/capabilities/planningCapability.js +26 -0
- package/dist/capabilities/planningCapability.js.map +1 -0
- package/dist/capabilities/refactoringCapability.d.ts +13 -0
- package/dist/capabilities/refactoringCapability.d.ts.map +1 -0
- package/dist/capabilities/refactoringCapability.js +25 -0
- package/dist/capabilities/refactoringCapability.js.map +1 -0
- package/dist/capabilities/repoChecksCapability.d.ts +10 -0
- package/dist/capabilities/repoChecksCapability.d.ts.map +1 -0
- package/dist/capabilities/repoChecksCapability.js +24 -0
- package/dist/capabilities/repoChecksCapability.js.map +1 -0
- package/dist/capabilities/searchCapability.d.ts +13 -0
- package/dist/capabilities/searchCapability.d.ts.map +1 -0
- package/dist/capabilities/searchCapability.js +24 -0
- package/dist/capabilities/searchCapability.js.map +1 -0
- package/dist/capabilities/skillCapability.d.ts +3 -0
- package/dist/capabilities/skillCapability.d.ts.map +1 -0
- package/dist/capabilities/skillCapability.js +77 -0
- package/dist/capabilities/skillCapability.js.map +1 -0
- package/dist/capabilities/statusCapability.d.ts +4 -0
- package/dist/capabilities/statusCapability.d.ts.map +1 -0
- package/dist/capabilities/statusCapability.js +92 -0
- package/dist/capabilities/statusCapability.js.map +1 -0
- package/dist/capabilities/taskManagementCapability.d.ts +12 -0
- package/dist/capabilities/taskManagementCapability.d.ts.map +1 -0
- package/dist/capabilities/taskManagementCapability.js +22 -0
- package/dist/capabilities/taskManagementCapability.js.map +1 -0
- package/dist/capabilities/testingCapability.d.ts +13 -0
- package/dist/capabilities/testingCapability.d.ts.map +1 -0
- package/dist/capabilities/testingCapability.js +25 -0
- package/dist/capabilities/testingCapability.js.map +1 -0
- package/dist/capabilities/todoCapability.d.ts +19 -0
- package/dist/capabilities/todoCapability.d.ts.map +1 -0
- package/dist/capabilities/todoCapability.js +169 -0
- package/dist/capabilities/todoCapability.js.map +1 -0
- package/dist/capabilities/toolManifest.d.ts +3 -0
- package/dist/capabilities/toolManifest.d.ts.map +1 -0
- package/dist/capabilities/toolManifest.js +160 -0
- package/dist/capabilities/toolManifest.js.map +1 -0
- package/dist/capabilities/toolRegistry.d.ts +24 -0
- package/dist/capabilities/toolRegistry.d.ts.map +1 -0
- package/dist/capabilities/toolRegistry.js +150 -0
- package/dist/capabilities/toolRegistry.js.map +1 -0
- package/dist/capabilities/validationCapability.d.ts +13 -0
- package/dist/capabilities/validationCapability.d.ts.map +1 -0
- package/dist/capabilities/validationCapability.js +24 -0
- package/dist/capabilities/validationCapability.js.map +1 -0
- package/dist/capabilities/webCapability.d.ts +12 -0
- package/dist/capabilities/webCapability.d.ts.map +1 -0
- package/dist/capabilities/webCapability.js +22 -0
- package/dist/capabilities/webCapability.js.map +1 -0
- package/dist/config.d.ts +25 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +140 -0
- package/dist/config.js.map +1 -0
- package/dist/contracts/v1/agent.d.ts +147 -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/LazyLoader.d.ts +129 -0
- package/dist/core/LazyLoader.d.ts.map +1 -0
- package/dist/core/LazyLoader.js +240 -0
- package/dist/core/LazyLoader.js.map +1 -0
- package/dist/core/agent.d.ts +153 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +889 -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 +234 -0
- package/dist/core/agentSchemaLoader.js.map +1 -0
- package/dist/core/aiErrorFixer.d.ts +70 -0
- package/dist/core/aiErrorFixer.d.ts.map +1 -0
- package/dist/core/aiErrorFixer.js +402 -0
- package/dist/core/aiErrorFixer.js.map +1 -0
- package/dist/core/alphaZeroEngine.d.ts +269 -0
- package/dist/core/alphaZeroEngine.d.ts.map +1 -0
- package/dist/core/alphaZeroEngine.js +523 -0
- package/dist/core/alphaZeroEngine.js.map +1 -0
- package/dist/core/alphaZeroModular.d.ts +186 -0
- package/dist/core/alphaZeroModular.d.ts.map +1 -0
- package/dist/core/alphaZeroModular.js +755 -0
- package/dist/core/alphaZeroModular.js.map +1 -0
- package/dist/core/alphaZeroOrchestrator.d.ts +140 -0
- package/dist/core/alphaZeroOrchestrator.d.ts.map +1 -0
- package/dist/core/alphaZeroOrchestrator.js +418 -0
- package/dist/core/alphaZeroOrchestrator.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/checkpoint.d.ts +76 -0
- package/dist/core/checkpoint.d.ts.map +1 -0
- package/dist/core/checkpoint.js +278 -0
- package/dist/core/checkpoint.js.map +1 -0
- package/dist/core/cliTestHarness.d.ts +200 -0
- package/dist/core/cliTestHarness.d.ts.map +1 -0
- package/dist/core/cliTestHarness.js +549 -0
- package/dist/core/cliTestHarness.js.map +1 -0
- package/dist/core/contextManager.d.ts +265 -0
- package/dist/core/contextManager.d.ts.map +1 -0
- package/dist/core/contextManager.js +1060 -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/costTracker.d.ts +87 -0
- package/dist/core/costTracker.d.ts.map +1 -0
- package/dist/core/costTracker.js +285 -0
- package/dist/core/costTracker.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 +84 -0
- package/dist/core/customCommands.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 +348 -0
- package/dist/core/errors/errorTypes.js.map +1 -0
- package/dist/core/errors/errorUtils.d.ts +87 -0
- package/dist/core/errors/errorUtils.d.ts.map +1 -0
- package/dist/core/errors/errorUtils.js +158 -0
- package/dist/core/errors/errorUtils.js.map +1 -0
- package/dist/core/errors/safetyValidator.d.ts +71 -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/failureRecovery.d.ts +122 -0
- package/dist/core/failureRecovery.d.ts.map +1 -0
- package/dist/core/failureRecovery.js +477 -0
- package/dist/core/failureRecovery.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 +267 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/intelligentTestFlows.d.ts +126 -0
- package/dist/core/intelligentTestFlows.d.ts.map +1 -0
- package/dist/core/intelligentTestFlows.js +678 -0
- package/dist/core/intelligentTestFlows.js.map +1 -0
- package/dist/core/isolatedVerifier.d.ts +40 -0
- package/dist/core/isolatedVerifier.d.ts.map +1 -0
- package/dist/core/isolatedVerifier.js +129 -0
- package/dist/core/isolatedVerifier.js.map +1 -0
- package/dist/core/learningPersistence.d.ts +145 -0
- package/dist/core/learningPersistence.d.ts.map +1 -0
- package/dist/core/learningPersistence.js +477 -0
- package/dist/core/learningPersistence.js.map +1 -0
- package/dist/core/memorySystem.d.ts +67 -0
- package/dist/core/memorySystem.d.ts.map +1 -0
- package/dist/core/memorySystem.js +334 -0
- package/dist/core/memorySystem.js.map +1 -0
- package/dist/core/metricsTracker.d.ts +157 -0
- package/dist/core/metricsTracker.d.ts.map +1 -0
- package/dist/core/metricsTracker.js +273 -0
- package/dist/core/metricsTracker.js.map +1 -0
- package/dist/core/modelDiscovery.d.ts +101 -0
- package/dist/core/modelDiscovery.d.ts.map +1 -0
- package/dist/core/modelDiscovery.js +780 -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/offsecAlphaZero.d.ts +56 -0
- package/dist/core/offsecAlphaZero.d.ts.map +1 -0
- package/dist/core/offsecAlphaZero.js +395 -0
- package/dist/core/offsecAlphaZero.js.map +1 -0
- package/dist/core/outputStyles.d.ts +48 -0
- package/dist/core/outputStyles.d.ts.map +1 -0
- package/dist/core/outputStyles.js +270 -0
- package/dist/core/outputStyles.js.map +1 -0
- package/dist/core/performanceMonitor.d.ts +124 -0
- package/dist/core/performanceMonitor.d.ts.map +1 -0
- package/dist/core/performanceMonitor.js +192 -0
- package/dist/core/performanceMonitor.js.map +1 -0
- package/dist/core/preferences.d.ts +69 -0
- package/dist/core/preferences.d.ts.map +1 -0
- package/dist/core/preferences.js +316 -0
- package/dist/core/preferences.js.map +1 -0
- package/dist/core/responseVerifier.d.ts +98 -0
- package/dist/core/responseVerifier.d.ts.map +1 -0
- package/dist/core/responseVerifier.js +509 -0
- package/dist/core/responseVerifier.js.map +1 -0
- package/dist/core/resultVerification.d.ts +141 -0
- package/dist/core/resultVerification.d.ts.map +1 -0
- package/dist/core/resultVerification.js +482 -0
- package/dist/core/resultVerification.js.map +1 -0
- package/dist/core/schemaValidator.d.ts +44 -0
- package/dist/core/schemaValidator.d.ts.map +1 -0
- package/dist/core/schemaValidator.js +155 -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 +367 -0
- package/dist/core/secretStore.js.map +1 -0
- package/dist/core/securityAssessment.d.ts +91 -0
- package/dist/core/securityAssessment.d.ts.map +1 -0
- package/dist/core/securityAssessment.js +580 -0
- package/dist/core/securityAssessment.js.map +1 -0
- package/dist/core/selfEvolution.d.ts +155 -0
- package/dist/core/selfEvolution.d.ts.map +1 -0
- package/dist/core/selfEvolution.js +1000 -0
- package/dist/core/selfEvolution.js.map +1 -0
- package/dist/core/selfImprovement.d.ts +141 -0
- package/dist/core/selfImprovement.d.ts.map +1 -0
- package/dist/core/selfImprovement.js +700 -0
- package/dist/core/selfImprovement.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 +189 -0
- package/dist/core/sessionStore.js.map +1 -0
- package/dist/core/testUtils.d.ts +121 -0
- package/dist/core/testUtils.d.ts.map +1 -0
- package/dist/core/testUtils.js +235 -0
- package/dist/core/testUtils.js.map +1 -0
- package/dist/core/toolPreconditions.d.ts +42 -0
- package/dist/core/toolPreconditions.d.ts.map +1 -0
- package/dist/core/toolPreconditions.js +347 -0
- package/dist/core/toolPreconditions.js.map +1 -0
- package/dist/core/toolRuntime.d.ts +163 -0
- package/dist/core/toolRuntime.d.ts.map +1 -0
- package/dist/core/toolRuntime.js +439 -0
- package/dist/core/toolRuntime.js.map +1 -0
- package/dist/core/toolValidation.d.ts +116 -0
- package/dist/core/toolValidation.d.ts.map +1 -0
- package/dist/core/toolValidation.js +282 -0
- package/dist/core/toolValidation.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 +306 -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/validationRunner.d.ts +106 -0
- package/dist/core/validationRunner.d.ts.map +1 -0
- package/dist/core/validationRunner.js +888 -0
- package/dist/core/validationRunner.js.map +1 -0
- package/dist/core/verification.d.ts +137 -0
- package/dist/core/verification.d.ts.map +1 -0
- package/dist/core/verification.js +323 -0
- package/dist/core/verification.js.map +1 -0
- package/dist/headless/headlessApp.d.ts +5 -0
- package/dist/headless/headlessApp.d.ts.map +1 -0
- package/dist/headless/headlessApp.js +210 -0
- package/dist/headless/headlessApp.js.map +1 -0
- package/dist/intelligence/codeIntelligence.d.ts +118 -0
- package/dist/intelligence/codeIntelligence.d.ts.map +1 -0
- package/dist/intelligence/codeIntelligence.js +552 -0
- package/dist/intelligence/codeIntelligence.js.map +1 -0
- package/dist/intelligence/docGenerator.d.ts +86 -0
- package/dist/intelligence/docGenerator.d.ts.map +1 -0
- package/dist/intelligence/docGenerator.js +564 -0
- package/dist/intelligence/docGenerator.js.map +1 -0
- package/dist/intelligence/index.d.ts +51 -0
- package/dist/intelligence/index.d.ts.map +1 -0
- package/dist/intelligence/index.js +253 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/intelligence/refactoring.d.ts +50 -0
- package/dist/intelligence/refactoring.d.ts.map +1 -0
- package/dist/intelligence/refactoring.js +354 -0
- package/dist/intelligence/refactoring.js.map +1 -0
- package/dist/intelligence/testGenerator.d.ts +74 -0
- package/dist/intelligence/testGenerator.d.ts.map +1 -0
- package/dist/intelligence/testGenerator.js +483 -0
- package/dist/intelligence/testGenerator.js.map +1 -0
- package/dist/mcp/config.d.ts +8 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +252 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/sseClient.d.ts +34 -0
- package/dist/mcp/sseClient.d.ts.map +1 -0
- package/dist/mcp/sseClient.js +327 -0
- package/dist/mcp/sseClient.js.map +1 -0
- package/dist/mcp/stdioClient.d.ts +24 -0
- package/dist/mcp/stdioClient.d.ts.map +1 -0
- package/dist/mcp/stdioClient.js +179 -0
- package/dist/mcp/stdioClient.js.map +1 -0
- package/dist/mcp/toolBridge.d.ts +12 -0
- package/dist/mcp/toolBridge.d.ts.map +1 -0
- package/dist/mcp/toolBridge.js +117 -0
- package/dist/mcp/toolBridge.js.map +1 -0
- package/dist/mcp/types.d.ts +60 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/plugins/index.d.ts +49 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +114 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/providers/anthropic/index.d.ts +11 -0
- package/dist/plugins/providers/anthropic/index.d.ts.map +1 -0
- package/dist/plugins/providers/anthropic/index.js +38 -0
- package/dist/plugins/providers/anthropic/index.js.map +1 -0
- package/dist/plugins/providers/deepseek/index.d.ts +11 -0
- package/dist/plugins/providers/deepseek/index.d.ts.map +1 -0
- package/dist/plugins/providers/deepseek/index.js +52 -0
- package/dist/plugins/providers/deepseek/index.js.map +1 -0
- package/dist/plugins/providers/google/index.d.ts +11 -0
- package/dist/plugins/providers/google/index.d.ts.map +1 -0
- package/dist/plugins/providers/google/index.js +40 -0
- package/dist/plugins/providers/google/index.js.map +1 -0
- package/dist/plugins/providers/index.d.ts +2 -0
- package/dist/plugins/providers/index.d.ts.map +1 -0
- package/dist/plugins/providers/index.js +20 -0
- package/dist/plugins/providers/index.js.map +1 -0
- package/dist/plugins/providers/ollama/index.d.ts +21 -0
- package/dist/plugins/providers/ollama/index.d.ts.map +1 -0
- package/dist/plugins/providers/ollama/index.js +69 -0
- package/dist/plugins/providers/ollama/index.js.map +1 -0
- package/dist/plugins/providers/openai/index.d.ts +12 -0
- package/dist/plugins/providers/openai/index.d.ts.map +1 -0
- package/dist/plugins/providers/openai/index.js +39 -0
- package/dist/plugins/providers/openai/index.js.map +1 -0
- package/dist/plugins/providers/xai/index.d.ts +11 -0
- package/dist/plugins/providers/xai/index.d.ts.map +1 -0
- package/dist/plugins/providers/xai/index.js +39 -0
- package/dist/plugins/providers/xai/index.js.map +1 -0
- package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts +3 -0
- package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js +9 -0
- package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js.map +1 -0
- package/dist/plugins/tools/bash/localBashPlugin.d.ts +3 -0
- package/dist/plugins/tools/bash/localBashPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/bash/localBashPlugin.js +14 -0
- package/dist/plugins/tools/bash/localBashPlugin.js.map +1 -0
- package/dist/plugins/tools/browser/browserAutomationPlugin.d.ts +14 -0
- package/dist/plugins/tools/browser/browserAutomationPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/browser/browserAutomationPlugin.js +26 -0
- package/dist/plugins/tools/browser/browserAutomationPlugin.js.map +1 -0
- package/dist/plugins/tools/checks/localRepoChecksPlugin.d.ts +3 -0
- package/dist/plugins/tools/checks/localRepoChecksPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/checks/localRepoChecksPlugin.js +14 -0
- package/dist/plugins/tools/checks/localRepoChecksPlugin.js.map +1 -0
- package/dist/plugins/tools/cloud/cloudPlugin.d.ts +3 -0
- package/dist/plugins/tools/cloud/cloudPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/cloud/cloudPlugin.js +14 -0
- package/dist/plugins/tools/cloud/cloudPlugin.js.map +1 -0
- package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.d.ts +3 -0
- package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.js +14 -0
- package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.js.map +1 -0
- package/dist/plugins/tools/codeQuality/codeQualityPlugin.d.ts +3 -0
- package/dist/plugins/tools/codeQuality/codeQualityPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/codeQuality/codeQualityPlugin.js +14 -0
- package/dist/plugins/tools/codeQuality/codeQualityPlugin.js.map +1 -0
- package/dist/plugins/tools/dependency/dependencyPlugin.d.ts +3 -0
- package/dist/plugins/tools/dependency/dependencyPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/dependency/dependencyPlugin.js +12 -0
- package/dist/plugins/tools/dependency/dependencyPlugin.js.map +1 -0
- package/dist/plugins/tools/development/devPlugin.d.ts +3 -0
- package/dist/plugins/tools/development/devPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/development/devPlugin.js +14 -0
- package/dist/plugins/tools/development/devPlugin.js.map +1 -0
- package/dist/plugins/tools/edit/editPlugin.d.ts +9 -0
- package/dist/plugins/tools/edit/editPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/edit/editPlugin.js +15 -0
- package/dist/plugins/tools/edit/editPlugin.js.map +1 -0
- package/dist/plugins/tools/email/emailPlugin.d.ts +3 -0
- package/dist/plugins/tools/email/emailPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/email/emailPlugin.js +12 -0
- package/dist/plugins/tools/email/emailPlugin.js.map +1 -0
- package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts +3 -0
- package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js +9 -0
- package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js.map +1 -0
- package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts +3 -0
- package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/filesystem/localFilesystemPlugin.js +14 -0
- package/dist/plugins/tools/filesystem/localFilesystemPlugin.js.map +1 -0
- package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.d.ts +3 -0
- package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.js +14 -0
- package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.js.map +1 -0
- package/dist/plugins/tools/glob/globPlugin.d.ts +9 -0
- package/dist/plugins/tools/glob/globPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/glob/globPlugin.js +15 -0
- package/dist/plugins/tools/glob/globPlugin.js.map +1 -0
- package/dist/plugins/tools/index.d.ts +3 -0
- package/dist/plugins/tools/index.d.ts.map +1 -0
- package/dist/plugins/tools/index.js +3 -0
- package/dist/plugins/tools/index.js.map +1 -0
- package/dist/plugins/tools/interaction/interactionPlugin.d.ts +3 -0
- package/dist/plugins/tools/interaction/interactionPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/interaction/interactionPlugin.js +12 -0
- package/dist/plugins/tools/interaction/interactionPlugin.js.map +1 -0
- package/dist/plugins/tools/learn/learnPlugin.d.ts +3 -0
- package/dist/plugins/tools/learn/learnPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/learn/learnPlugin.js +14 -0
- package/dist/plugins/tools/learn/learnPlugin.js.map +1 -0
- package/dist/plugins/tools/mcp/mcpPlugin.d.ts +3 -0
- package/dist/plugins/tools/mcp/mcpPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/mcp/mcpPlugin.js +9 -0
- package/dist/plugins/tools/mcp/mcpPlugin.js.map +1 -0
- package/dist/plugins/tools/nodeDefaults.d.ts +2 -0
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -0
- package/dist/plugins/tools/nodeDefaults.js +65 -0
- package/dist/plugins/tools/nodeDefaults.js.map +1 -0
- package/dist/plugins/tools/notebook/notebookPlugin.d.ts +9 -0
- package/dist/plugins/tools/notebook/notebookPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/notebook/notebookPlugin.js +15 -0
- package/dist/plugins/tools/notebook/notebookPlugin.js.map +1 -0
- package/dist/plugins/tools/planning/planningPlugin.d.ts +9 -0
- package/dist/plugins/tools/planning/planningPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/planning/planningPlugin.js +15 -0
- package/dist/plugins/tools/planning/planningPlugin.js.map +1 -0
- package/dist/plugins/tools/refactoring/refactoringPlugin.d.ts +3 -0
- package/dist/plugins/tools/refactoring/refactoringPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/refactoring/refactoringPlugin.js +12 -0
- package/dist/plugins/tools/refactoring/refactoringPlugin.js.map +1 -0
- package/dist/plugins/tools/registry.d.ts +22 -0
- package/dist/plugins/tools/registry.d.ts.map +1 -0
- package/dist/plugins/tools/registry.js +58 -0
- package/dist/plugins/tools/registry.js.map +1 -0
- package/dist/plugins/tools/search/localSearchPlugin.d.ts +3 -0
- package/dist/plugins/tools/search/localSearchPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/search/localSearchPlugin.js +14 -0
- package/dist/plugins/tools/search/localSearchPlugin.js.map +1 -0
- package/dist/plugins/tools/skills/skillPlugin.d.ts +3 -0
- package/dist/plugins/tools/skills/skillPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/skills/skillPlugin.js +9 -0
- package/dist/plugins/tools/skills/skillPlugin.js.map +1 -0
- package/dist/plugins/tools/taskManagement/taskManagementPlugin.d.ts +3 -0
- package/dist/plugins/tools/taskManagement/taskManagementPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/taskManagement/taskManagementPlugin.js +12 -0
- package/dist/plugins/tools/taskManagement/taskManagementPlugin.js.map +1 -0
- package/dist/plugins/tools/testing/testingPlugin.d.ts +3 -0
- package/dist/plugins/tools/testing/testingPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/testing/testingPlugin.js +12 -0
- package/dist/plugins/tools/testing/testingPlugin.js.map +1 -0
- package/dist/plugins/tools/validation/validationPlugin.d.ts +3 -0
- package/dist/plugins/tools/validation/validationPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/validation/validationPlugin.js +14 -0
- package/dist/plugins/tools/validation/validationPlugin.js.map +1 -0
- package/dist/plugins/tools/web/webPlugin.d.ts +3 -0
- package/dist/plugins/tools/web/webPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/web/webPlugin.js +12 -0
- package/dist/plugins/tools/web/webPlugin.js.map +1 -0
- package/dist/providers/anthropicProvider.d.ts +41 -0
- package/dist/providers/anthropicProvider.d.ts.map +1 -0
- package/dist/providers/anthropicProvider.js +446 -0
- package/dist/providers/anthropicProvider.js.map +1 -0
- package/dist/providers/googleProvider.d.ts +36 -0
- package/dist/providers/googleProvider.d.ts.map +1 -0
- package/dist/providers/googleProvider.js +312 -0
- package/dist/providers/googleProvider.js.map +1 -0
- package/dist/providers/openaiChatCompletionsProvider.d.ts +43 -0
- package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -0
- package/dist/providers/openaiChatCompletionsProvider.js +516 -0
- package/dist/providers/openaiChatCompletionsProvider.js.map +1 -0
- package/dist/providers/openaiResponsesProvider.d.ts +38 -0
- package/dist/providers/openaiResponsesProvider.d.ts.map +1 -0
- package/dist/providers/openaiResponsesProvider.js +364 -0
- package/dist/providers/openaiResponsesProvider.js.map +1 -0
- package/dist/providers/providerFactory.d.ts +18 -0
- package/dist/providers/providerFactory.d.ts.map +1 -0
- package/dist/providers/providerFactory.js +25 -0
- package/dist/providers/providerFactory.js.map +1 -0
- package/dist/providers/resilientProvider.d.ts +94 -0
- package/dist/providers/resilientProvider.d.ts.map +1 -0
- package/dist/providers/resilientProvider.js +370 -0
- package/dist/providers/resilientProvider.js.map +1 -0
- package/dist/runtime/agentController.d.ts +65 -0
- package/dist/runtime/agentController.d.ts.map +1 -0
- package/dist/runtime/agentController.js +353 -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 +156 -0
- package/dist/runtime/agentHost.js.map +1 -0
- package/dist/runtime/agentSession.d.ts +40 -0
- package/dist/runtime/agentSession.d.ts.map +1 -0
- package/dist/runtime/agentSession.js +205 -0
- package/dist/runtime/agentSession.js.map +1 -0
- package/dist/runtime/browser.d.ts +7 -0
- package/dist/runtime/browser.d.ts.map +1 -0
- package/dist/runtime/browser.js +10 -0
- package/dist/runtime/browser.js.map +1 -0
- package/dist/runtime/cloud.d.ts +7 -0
- package/dist/runtime/cloud.d.ts.map +1 -0
- package/dist/runtime/cloud.js +10 -0
- package/dist/runtime/cloud.js.map +1 -0
- package/dist/runtime/node.d.ts +8 -0
- package/dist/runtime/node.d.ts.map +1 -0
- package/dist/runtime/node.js +11 -0
- package/dist/runtime/node.js.map +1 -0
- package/dist/runtime/universal.d.ts +21 -0
- package/dist/runtime/universal.d.ts.map +1 -0
- package/dist/runtime/universal.js +29 -0
- package/dist/runtime/universal.js.map +1 -0
- package/dist/shell/autoExecutor.d.ts +70 -0
- package/dist/shell/autoExecutor.d.ts.map +1 -0
- package/dist/shell/autoExecutor.js +288 -0
- package/dist/shell/autoExecutor.js.map +1 -0
- package/dist/shell/composableMessage.d.ts +183 -0
- package/dist/shell/composableMessage.d.ts.map +1 -0
- package/dist/shell/composableMessage.js +420 -0
- package/dist/shell/composableMessage.js.map +1 -0
- package/dist/shell/fileChangeTracker.d.ts +39 -0
- package/dist/shell/fileChangeTracker.d.ts.map +1 -0
- package/dist/shell/fileChangeTracker.js +64 -0
- package/dist/shell/fileChangeTracker.js.map +1 -0
- package/dist/shell/interactiveShell.d.ts +517 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -0
- package/dist/shell/interactiveShell.js +6646 -0
- package/dist/shell/interactiveShell.js.map +1 -0
- package/dist/shell/liveStatus.d.ts +30 -0
- package/dist/shell/liveStatus.d.ts.map +1 -0
- package/dist/shell/liveStatus.js +102 -0
- package/dist/shell/liveStatus.js.map +1 -0
- package/dist/shell/shellApp.d.ts +19 -0
- package/dist/shell/shellApp.d.ts.map +1 -0
- package/dist/shell/shellApp.js +411 -0
- package/dist/shell/shellApp.js.map +1 -0
- package/dist/shell/systemPrompt.d.ts +3 -0
- package/dist/shell/systemPrompt.d.ts.map +1 -0
- package/dist/shell/systemPrompt.js +64 -0
- package/dist/shell/systemPrompt.js.map +1 -0
- package/dist/shell/taskCompletionDetector.d.ts +106 -0
- package/dist/shell/taskCompletionDetector.d.ts.map +1 -0
- package/dist/shell/taskCompletionDetector.js +402 -0
- package/dist/shell/taskCompletionDetector.js.map +1 -0
- package/dist/shell/vimMode.d.ts +66 -0
- package/dist/shell/vimMode.d.ts.map +1 -0
- package/dist/shell/vimMode.js +434 -0
- package/dist/shell/vimMode.js.map +1 -0
- package/dist/skills/skillRepository.d.ts +103 -0
- package/dist/skills/skillRepository.d.ts.map +1 -0
- package/dist/skills/skillRepository.js +237 -0
- package/dist/skills/skillRepository.js.map +1 -0
- package/dist/skills/types.d.ts +37 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +2 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/subagents/agentConfig.d.ts +27 -0
- package/dist/subagents/agentConfig.d.ts.map +1 -0
- package/dist/subagents/agentConfig.js +89 -0
- package/dist/subagents/agentConfig.js.map +1 -0
- package/dist/subagents/agentRegistry.d.ts +33 -0
- package/dist/subagents/agentRegistry.d.ts.map +1 -0
- package/dist/subagents/agentRegistry.js +162 -0
- package/dist/subagents/agentRegistry.js.map +1 -0
- package/dist/subagents/parallelAgentManager.d.ts +99 -0
- package/dist/subagents/parallelAgentManager.d.ts.map +1 -0
- package/dist/subagents/parallelAgentManager.js +248 -0
- package/dist/subagents/parallelAgentManager.js.map +1 -0
- package/dist/subagents/taskRunner.d.ts +34 -0
- package/dist/subagents/taskRunner.d.ts.map +1 -0
- package/dist/subagents/taskRunner.js +459 -0
- package/dist/subagents/taskRunner.js.map +1 -0
- package/dist/tools/advancedTestGenerationTools.d.ts +21 -0
- package/dist/tools/advancedTestGenerationTools.d.ts.map +1 -0
- package/dist/tools/advancedTestGenerationTools.js +301 -0
- package/dist/tools/advancedTestGenerationTools.js.map +1 -0
- package/dist/tools/backgroundBashTools.d.ts +21 -0
- package/dist/tools/backgroundBashTools.d.ts.map +1 -0
- package/dist/tools/backgroundBashTools.js +215 -0
- package/dist/tools/backgroundBashTools.js.map +1 -0
- package/dist/tools/bashTools.d.ts +8 -0
- package/dist/tools/bashTools.d.ts.map +1 -0
- package/dist/tools/bashTools.js +240 -0
- package/dist/tools/bashTools.js.map +1 -0
- package/dist/tools/browserAutomationTools.d.ts +23 -0
- package/dist/tools/browserAutomationTools.d.ts.map +1 -0
- package/dist/tools/browserAutomationTools.js +916 -0
- package/dist/tools/browserAutomationTools.js.map +1 -0
- package/dist/tools/buildTools.d.ts +9 -0
- package/dist/tools/buildTools.d.ts.map +1 -0
- package/dist/tools/buildTools.js +344 -0
- package/dist/tools/buildTools.js.map +1 -0
- package/dist/tools/cloudTools.d.ts +49 -0
- package/dist/tools/cloudTools.d.ts.map +1 -0
- package/dist/tools/cloudTools.js +1258 -0
- package/dist/tools/cloudTools.js.map +1 -0
- package/dist/tools/code-quality-dashboard.d.ts +57 -0
- package/dist/tools/code-quality-dashboard.d.ts.map +1 -0
- package/dist/tools/code-quality-dashboard.js +218 -0
- package/dist/tools/code-quality-dashboard.js.map +1 -0
- package/dist/tools/codeAnalysisTools.d.ts +74 -0
- package/dist/tools/codeAnalysisTools.d.ts.map +1 -0
- package/dist/tools/codeAnalysisTools.js +664 -0
- package/dist/tools/codeAnalysisTools.js.map +1 -0
- package/dist/tools/codeGenerationTools.d.ts +3 -0
- package/dist/tools/codeGenerationTools.d.ts.map +1 -0
- package/dist/tools/codeGenerationTools.js +439 -0
- package/dist/tools/codeGenerationTools.js.map +1 -0
- package/dist/tools/codeQualityTools.d.ts +3 -0
- package/dist/tools/codeQualityTools.d.ts.map +1 -0
- package/dist/tools/codeQualityTools.js +296 -0
- package/dist/tools/codeQualityTools.js.map +1 -0
- package/dist/tools/dependencyTools.d.ts +3 -0
- package/dist/tools/dependencyTools.d.ts.map +1 -0
- package/dist/tools/dependencyTools.js +283 -0
- package/dist/tools/dependencyTools.js.map +1 -0
- package/dist/tools/devTools.d.ts +10 -0
- package/dist/tools/devTools.d.ts.map +1 -0
- package/dist/tools/devTools.js +2125 -0
- package/dist/tools/devTools.js.map +1 -0
- package/dist/tools/diffUtils.d.ts +36 -0
- package/dist/tools/diffUtils.d.ts.map +1 -0
- package/dist/tools/diffUtils.js +528 -0
- package/dist/tools/diffUtils.js.map +1 -0
- package/dist/tools/editTools.d.ts +29 -0
- package/dist/tools/editTools.d.ts.map +1 -0
- package/dist/tools/editTools.js +419 -0
- package/dist/tools/editTools.js.map +1 -0
- package/dist/tools/emailTools.d.ts +21 -0
- package/dist/tools/emailTools.d.ts.map +1 -0
- package/dist/tools/emailTools.js +449 -0
- package/dist/tools/emailTools.js.map +1 -0
- package/dist/tools/enhancedCodeIntelligenceTools.d.ts +27 -0
- package/dist/tools/enhancedCodeIntelligenceTools.d.ts.map +1 -0
- package/dist/tools/enhancedCodeIntelligenceTools.js +418 -0
- package/dist/tools/enhancedCodeIntelligenceTools.js.map +1 -0
- package/dist/tools/enhancedDevWorkflowTools.d.ts +15 -0
- package/dist/tools/enhancedDevWorkflowTools.d.ts.map +1 -0
- package/dist/tools/enhancedDevWorkflowTools.js +303 -0
- package/dist/tools/enhancedDevWorkflowTools.js.map +1 -0
- package/dist/tools/fileTools.d.ts +3 -0
- package/dist/tools/fileTools.d.ts.map +1 -0
- package/dist/tools/fileTools.js +334 -0
- package/dist/tools/fileTools.js.map +1 -0
- package/dist/tools/frontendTestingTools.d.ts +35 -0
- package/dist/tools/frontendTestingTools.d.ts.map +1 -0
- package/dist/tools/frontendTestingTools.js +1254 -0
- package/dist/tools/frontendTestingTools.js.map +1 -0
- package/dist/tools/globTools.d.ts +15 -0
- package/dist/tools/globTools.d.ts.map +1 -0
- package/dist/tools/globTools.js +174 -0
- package/dist/tools/globTools.js.map +1 -0
- package/dist/tools/grepTools.d.ts +19 -0
- package/dist/tools/grepTools.d.ts.map +1 -0
- package/dist/tools/grepTools.js +358 -0
- package/dist/tools/grepTools.js.map +1 -0
- package/dist/tools/interactionTools.d.ts +13 -0
- package/dist/tools/interactionTools.d.ts.map +1 -0
- package/dist/tools/interactionTools.js +171 -0
- package/dist/tools/interactionTools.js.map +1 -0
- package/dist/tools/learnTools.d.ts +164 -0
- package/dist/tools/learnTools.d.ts.map +1 -0
- package/dist/tools/learnTools.js +2104 -0
- package/dist/tools/learnTools.js.map +1 -0
- package/dist/tools/localExplore.d.ts +225 -0
- package/dist/tools/localExplore.d.ts.map +1 -0
- package/dist/tools/localExplore.js +1365 -0
- package/dist/tools/localExplore.js.map +1 -0
- package/dist/tools/notebookEditTools.d.ts +15 -0
- package/dist/tools/notebookEditTools.d.ts.map +1 -0
- package/dist/tools/notebookEditTools.js +197 -0
- package/dist/tools/notebookEditTools.js.map +1 -0
- package/dist/tools/planningTools.d.ts +21 -0
- package/dist/tools/planningTools.d.ts.map +1 -0
- package/dist/tools/planningTools.js +185 -0
- package/dist/tools/planningTools.js.map +1 -0
- package/dist/tools/refactoringTools.d.ts +3 -0
- package/dist/tools/refactoringTools.d.ts.map +1 -0
- package/dist/tools/refactoringTools.js +294 -0
- package/dist/tools/refactoringTools.js.map +1 -0
- package/dist/tools/repoChecksTools.d.ts +3 -0
- package/dist/tools/repoChecksTools.d.ts.map +1 -0
- package/dist/tools/repoChecksTools.js +161 -0
- package/dist/tools/repoChecksTools.js.map +1 -0
- package/dist/tools/searchTools.d.ts +3 -0
- package/dist/tools/searchTools.d.ts.map +1 -0
- package/dist/tools/searchTools.js +241 -0
- package/dist/tools/searchTools.js.map +1 -0
- package/dist/tools/skillTools.d.ts +8 -0
- package/dist/tools/skillTools.d.ts.map +1 -0
- package/dist/tools/skillTools.js +178 -0
- package/dist/tools/skillTools.js.map +1 -0
- package/dist/tools/softwareEngineeringTools.d.ts +7 -0
- package/dist/tools/softwareEngineeringTools.d.ts.map +1 -0
- package/dist/tools/softwareEngineeringTools.js +338 -0
- package/dist/tools/softwareEngineeringTools.js.map +1 -0
- package/dist/tools/taskManagementTools.d.ts +10 -0
- package/dist/tools/taskManagementTools.d.ts.map +1 -0
- package/dist/tools/taskManagementTools.js +157 -0
- package/dist/tools/taskManagementTools.js.map +1 -0
- package/dist/tools/testingTools.d.ts +3 -0
- package/dist/tools/testingTools.d.ts.map +1 -0
- package/dist/tools/testingTools.js +233 -0
- package/dist/tools/testingTools.js.map +1 -0
- package/dist/tools/validationTools.d.ts +7 -0
- package/dist/tools/validationTools.d.ts.map +1 -0
- package/dist/tools/validationTools.js +344 -0
- package/dist/tools/validationTools.js.map +1 -0
- package/dist/tools/webTools.d.ts +3 -0
- package/dist/tools/webTools.d.ts.map +1 -0
- package/dist/tools/webTools.js +502 -0
- package/dist/tools/webTools.js.map +1 -0
- package/dist/ui/DisplayEventQueue.d.ts +99 -0
- package/dist/ui/DisplayEventQueue.d.ts.map +1 -0
- package/dist/ui/DisplayEventQueue.js +167 -0
- package/dist/ui/DisplayEventQueue.js.map +1 -0
- package/dist/ui/PromptController.d.ts +103 -0
- package/dist/ui/PromptController.d.ts.map +1 -0
- package/dist/ui/PromptController.js +171 -0
- package/dist/ui/PromptController.js.map +1 -0
- package/dist/ui/SequentialRenderer.d.ts +69 -0
- package/dist/ui/SequentialRenderer.d.ts.map +1 -0
- package/dist/ui/SequentialRenderer.js +137 -0
- package/dist/ui/SequentialRenderer.js.map +1 -0
- package/dist/ui/ShellUIAdapter.d.ts +207 -0
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -0
- package/dist/ui/ShellUIAdapter.js +1163 -0
- package/dist/ui/ShellUIAdapter.js.map +1 -0
- package/dist/ui/UnifiedUIController.d.ts +82 -0
- package/dist/ui/UnifiedUIController.d.ts.map +1 -0
- package/dist/ui/UnifiedUIController.js +207 -0
- package/dist/ui/UnifiedUIController.js.map +1 -0
- package/dist/ui/UnifiedUIRenderer.d.ts +188 -0
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -0
- package/dist/ui/UnifiedUIRenderer.js +580 -0
- package/dist/ui/UnifiedUIRenderer.js.map +1 -0
- package/dist/ui/animation/AnimationScheduler.d.ts +192 -0
- package/dist/ui/animation/AnimationScheduler.d.ts.map +1 -0
- package/dist/ui/animation/AnimationScheduler.js +432 -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/compactRenderer.d.ts +139 -0
- package/dist/ui/compactRenderer.d.ts.map +1 -0
- package/dist/ui/compactRenderer.js +398 -0
- package/dist/ui/compactRenderer.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 +122 -0
- package/dist/ui/designSystem.js.map +1 -0
- package/dist/ui/display.d.ts +229 -0
- package/dist/ui/display.d.ts.map +1 -0
- package/dist/ui/display.js +756 -0
- package/dist/ui/display.js.map +1 -0
- package/dist/ui/errorFormatter.d.ts +54 -0
- package/dist/ui/errorFormatter.d.ts.map +1 -0
- package/dist/ui/errorFormatter.js +251 -0
- package/dist/ui/errorFormatter.js.map +1 -0
- package/dist/ui/globalWriteLock.d.ts +38 -0
- package/dist/ui/globalWriteLock.d.ts.map +1 -0
- package/dist/ui/globalWriteLock.js +54 -0
- package/dist/ui/globalWriteLock.js.map +1 -0
- package/dist/ui/inPlaceUpdater.d.ts +181 -0
- package/dist/ui/inPlaceUpdater.d.ts.map +1 -0
- package/dist/ui/inPlaceUpdater.js +515 -0
- package/dist/ui/inPlaceUpdater.js.map +1 -0
- package/dist/ui/interrupts/InterruptManager.d.ts +142 -0
- package/dist/ui/interrupts/InterruptManager.d.ts.map +1 -0
- package/dist/ui/interrupts/InterruptManager.js +439 -0
- package/dist/ui/interrupts/InterruptManager.js.map +1 -0
- package/dist/ui/layout.d.ts +17 -0
- package/dist/ui/layout.d.ts.map +1 -0
- package/dist/ui/layout.js +140 -0
- package/dist/ui/layout.js.map +1 -0
- package/dist/ui/orchestration/StatusOrchestrator.d.ts +156 -0
- package/dist/ui/orchestration/StatusOrchestrator.d.ts.map +1 -0
- package/dist/ui/orchestration/StatusOrchestrator.js +406 -0
- package/dist/ui/orchestration/StatusOrchestrator.js.map +1 -0
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts +77 -0
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +1 -0
- package/dist/ui/orchestration/UIUpdateCoordinator.js +265 -0
- package/dist/ui/orchestration/UIUpdateCoordinator.js.map +1 -0
- package/dist/ui/outputMode.d.ts +22 -0
- package/dist/ui/outputMode.d.ts.map +1 -0
- package/dist/ui/outputMode.js +40 -0
- package/dist/ui/outputMode.js.map +1 -0
- package/dist/ui/richText.d.ts +6 -0
- package/dist/ui/richText.d.ts.map +1 -0
- package/dist/ui/richText.js +391 -0
- package/dist/ui/richText.js.map +1 -0
- package/dist/ui/shortcutsHelp.d.ts +39 -0
- package/dist/ui/shortcutsHelp.d.ts.map +1 -0
- package/dist/ui/shortcutsHelp.js +152 -0
- package/dist/ui/shortcutsHelp.js.map +1 -0
- package/dist/ui/streamingFormatter.d.ts +19 -0
- package/dist/ui/streamingFormatter.d.ts.map +1 -0
- package/dist/ui/streamingFormatter.js +65 -0
- package/dist/ui/streamingFormatter.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 +208 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +249 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/ui/toolDisplay.d.ts +195 -0
- package/dist/ui/toolDisplay.d.ts.map +1 -0
- package/dist/ui/toolDisplay.js +1526 -0
- package/dist/ui/toolDisplay.js.map +1 -0
- package/dist/ui/unified/index.d.ts +50 -0
- package/dist/ui/unified/index.d.ts.map +1 -0
- package/dist/ui/unified/index.js +77 -0
- package/dist/ui/unified/index.js.map +1 -0
- package/dist/ui/unified/layout.d.ts +12 -0
- package/dist/ui/unified/layout.d.ts.map +1 -0
- package/dist/ui/unified/layout.js +96 -0
- package/dist/ui/unified/layout.js.map +1 -0
- package/dist/ui/writeLock.d.ts +65 -0
- package/dist/ui/writeLock.d.ts.map +1 -0
- package/dist/ui/writeLock.js +114 -0
- package/dist/ui/writeLock.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/errorUtils.d.ts +16 -0
- package/dist/utils/errorUtils.d.ts.map +1 -0
- package/dist/utils/errorUtils.js +66 -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/planFormatter.d.ts +34 -0
- package/dist/utils/planFormatter.d.ts.map +1 -0
- package/dist/utils/planFormatter.js +140 -0
- package/dist/utils/planFormatter.js.map +1 -0
- package/dist/workspace.d.ts +8 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +107 -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 +214 -0
- package/dist/workspace.validator.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,1060 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ContextManager - Manages conversation context to prevent token limit leaks
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities:
|
|
5
|
+
* - Truncate tool outputs intelligently
|
|
6
|
+
* - Prune old conversation history with LLM summarization
|
|
7
|
+
* - Track and estimate token usage
|
|
8
|
+
* - Keep conversation within budget based on model context windows
|
|
9
|
+
* - Proactively shrink context before hitting limits
|
|
10
|
+
*/
|
|
11
|
+
import { calculateContextThresholds } from './contextWindow.js';
|
|
12
|
+
/**
|
|
13
|
+
* Summarization prompt template
|
|
14
|
+
*/
|
|
15
|
+
export const SUMMARIZATION_PROMPT = `Create a compact but reliable summary of the earlier conversation.
|
|
16
|
+
|
|
17
|
+
Keep:
|
|
18
|
+
- Decisions, preferences, and open questions
|
|
19
|
+
- File paths, function/class names, APIs, and error messages with fixes
|
|
20
|
+
- What was completed vs. still pending (tests, TODOs)
|
|
21
|
+
|
|
22
|
+
Format:
|
|
23
|
+
## Key Context
|
|
24
|
+
- ...
|
|
25
|
+
## Work Completed
|
|
26
|
+
- ...
|
|
27
|
+
## Open Items
|
|
28
|
+
- ...
|
|
29
|
+
|
|
30
|
+
Conversation:
|
|
31
|
+
{conversation}`;
|
|
32
|
+
/**
|
|
33
|
+
* Pre-defined AI Flow Patterns for intelligent context management
|
|
34
|
+
*/
|
|
35
|
+
export const DEFAULT_AI_FLOW_PATTERNS = [
|
|
36
|
+
{
|
|
37
|
+
patternId: 'read_edit_workflow',
|
|
38
|
+
description: 'Standard file modification workflow',
|
|
39
|
+
toolSequence: ['read', 'edit'],
|
|
40
|
+
contextImpact: 1500,
|
|
41
|
+
compactionOpportunity: true,
|
|
42
|
+
preservationPriority: 8,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
patternId: 'analysis_phase',
|
|
46
|
+
description: 'Code analysis and exploration phase',
|
|
47
|
+
toolSequence: ['read', 'grep', 'glob', 'search'],
|
|
48
|
+
contextImpact: 3000,
|
|
49
|
+
compactionOpportunity: true,
|
|
50
|
+
preservationPriority: 6,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
patternId: 'implementation_phase',
|
|
54
|
+
description: 'Active code implementation phase',
|
|
55
|
+
toolSequence: ['edit', 'write'],
|
|
56
|
+
contextImpact: 2000,
|
|
57
|
+
compactionOpportunity: false, // Preserve implementation context
|
|
58
|
+
preservationPriority: 9,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
patternId: 'validation_phase',
|
|
62
|
+
description: 'Code validation and testing phase',
|
|
63
|
+
toolSequence: ['run_tests', 'run_build', 'run_repo_checks'],
|
|
64
|
+
contextImpact: 1000,
|
|
65
|
+
compactionOpportunity: true,
|
|
66
|
+
preservationPriority: 5,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
patternId: 'parallel_execution',
|
|
70
|
+
description: 'Efficient parallel tool usage',
|
|
71
|
+
toolSequence: ['read', 'read', 'read'], // Multiple parallel reads
|
|
72
|
+
contextImpact: 2500,
|
|
73
|
+
compactionOpportunity: true,
|
|
74
|
+
preservationPriority: 7,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
patternId: 'git_workflow',
|
|
78
|
+
description: 'Git operations workflow',
|
|
79
|
+
toolSequence: ['git_smart_commit', 'git_sync', 'git_create_pr'],
|
|
80
|
+
contextImpact: 1200,
|
|
81
|
+
compactionOpportunity: true,
|
|
82
|
+
preservationPriority: 6,
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
export class ContextManager {
|
|
86
|
+
config;
|
|
87
|
+
constructor(config = {}) {
|
|
88
|
+
this.config = {
|
|
89
|
+
maxTokens: 130000, // Leave room below 131072 limit
|
|
90
|
+
targetTokens: 100000, // Target to trigger pruning
|
|
91
|
+
maxToolOutputLength: 10000, // 10k chars max per tool output
|
|
92
|
+
preserveRecentMessages: 10, // Keep last 10 user/assistant exchanges
|
|
93
|
+
estimatedCharsPerToken: 4,
|
|
94
|
+
...config,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Truncate tool output intelligently
|
|
99
|
+
*/
|
|
100
|
+
truncateToolOutput(output, toolName) {
|
|
101
|
+
const originalLength = output.length;
|
|
102
|
+
if (originalLength <= this.config.maxToolOutputLength) {
|
|
103
|
+
return {
|
|
104
|
+
content: output,
|
|
105
|
+
wasTruncated: false,
|
|
106
|
+
originalLength,
|
|
107
|
+
truncatedLength: originalLength,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// Intelligent truncation based on tool type
|
|
111
|
+
const truncated = this.intelligentTruncate(output, toolName);
|
|
112
|
+
const truncatedLength = truncated.length;
|
|
113
|
+
return {
|
|
114
|
+
content: truncated,
|
|
115
|
+
wasTruncated: true,
|
|
116
|
+
originalLength,
|
|
117
|
+
truncatedLength,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Intelligent truncation based on tool type
|
|
122
|
+
*/
|
|
123
|
+
intelligentTruncate(output, toolName) {
|
|
124
|
+
const maxLength = this.config.maxToolOutputLength;
|
|
125
|
+
// For file reads, show beginning and end
|
|
126
|
+
if (toolName === 'Read' || toolName === 'read_file') {
|
|
127
|
+
return this.truncateFileOutput(output, maxLength);
|
|
128
|
+
}
|
|
129
|
+
// For search results, keep first N results
|
|
130
|
+
if (toolName === 'Grep' || toolName === 'grep_search' || toolName === 'Glob') {
|
|
131
|
+
return this.truncateSearchOutput(output, maxLength);
|
|
132
|
+
}
|
|
133
|
+
// For bash/command output, keep end (usually most relevant)
|
|
134
|
+
if (toolName === 'Bash' || toolName === 'bash' || toolName === 'execute_bash') {
|
|
135
|
+
return this.truncateBashOutput(output, maxLength);
|
|
136
|
+
}
|
|
137
|
+
// Default: show beginning with truncation notice
|
|
138
|
+
return this.truncateDefault(output, maxLength);
|
|
139
|
+
}
|
|
140
|
+
truncateFileOutput(output, maxLength) {
|
|
141
|
+
const lines = output.split('\n');
|
|
142
|
+
if (lines.length <= 100) {
|
|
143
|
+
// For small files, just truncate text
|
|
144
|
+
return this.truncateDefault(output, maxLength);
|
|
145
|
+
}
|
|
146
|
+
// Show first 50 and last 50 lines
|
|
147
|
+
const keepLines = Math.floor(maxLength / 100); // Rough estimate
|
|
148
|
+
const headLines = lines.slice(0, keepLines);
|
|
149
|
+
const tailLines = lines.slice(-keepLines);
|
|
150
|
+
const truncatedCount = lines.length - (keepLines * 2);
|
|
151
|
+
return [
|
|
152
|
+
...headLines,
|
|
153
|
+
`\n... [${truncatedCount} lines truncated for context management] ...\n`,
|
|
154
|
+
...tailLines,
|
|
155
|
+
].join('\n');
|
|
156
|
+
}
|
|
157
|
+
truncateSearchOutput(output, maxLength) {
|
|
158
|
+
const lines = output.split('\n');
|
|
159
|
+
const keepLines = Math.floor(maxLength / 80); // Rough average line length
|
|
160
|
+
if (lines.length <= keepLines) {
|
|
161
|
+
return output;
|
|
162
|
+
}
|
|
163
|
+
const truncatedCount = lines.length - keepLines;
|
|
164
|
+
return [
|
|
165
|
+
...lines.slice(0, keepLines),
|
|
166
|
+
`\n... [${truncatedCount} more results truncated for context management] ...`,
|
|
167
|
+
].join('\n');
|
|
168
|
+
}
|
|
169
|
+
truncateBashOutput(output, maxLength) {
|
|
170
|
+
if (output.length <= maxLength) {
|
|
171
|
+
return output;
|
|
172
|
+
}
|
|
173
|
+
// For command output, the end is usually most important (errors, final status)
|
|
174
|
+
const keepChars = Math.floor(maxLength * 0.8); // 80% at end
|
|
175
|
+
const prefixChars = maxLength - keepChars - 100; // Small prefix
|
|
176
|
+
const prefix = output.slice(0, prefixChars);
|
|
177
|
+
const suffix = output.slice(-keepChars);
|
|
178
|
+
const truncatedChars = output.length - prefixChars - keepChars;
|
|
179
|
+
return `${prefix}\n\n... [${truncatedChars} characters truncated for context management] ...\n\n${suffix}`;
|
|
180
|
+
}
|
|
181
|
+
truncateDefault(output, maxLength) {
|
|
182
|
+
if (output.length <= maxLength) {
|
|
183
|
+
return output;
|
|
184
|
+
}
|
|
185
|
+
const truncatedChars = output.length - maxLength + 100; // Account for notice
|
|
186
|
+
return `${output.slice(0, maxLength - 100)}\n\n... [${truncatedChars} characters truncated for context management] ...`;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Estimate tokens in a message
|
|
190
|
+
*/
|
|
191
|
+
estimateTokens(message) {
|
|
192
|
+
let charCount = 0;
|
|
193
|
+
if (message.content) {
|
|
194
|
+
charCount += message.content.length;
|
|
195
|
+
}
|
|
196
|
+
if (message.role === 'assistant' && message.toolCalls) {
|
|
197
|
+
// Tool calls add overhead
|
|
198
|
+
for (const call of message.toolCalls) {
|
|
199
|
+
charCount += call.name.length;
|
|
200
|
+
charCount += JSON.stringify(call.arguments).length;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return Math.ceil(charCount / this.config.estimatedCharsPerToken);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Detect context overflow risk from recent tool usage patterns
|
|
207
|
+
*/
|
|
208
|
+
detectContextOverflowRisk(toolCalls) {
|
|
209
|
+
const recentTools = toolCalls.slice(-10); // Last 10 tools
|
|
210
|
+
// Check for broad search patterns without limits
|
|
211
|
+
const broadSearches = recentTools.filter(tool => tool.includes('Glob') && !tool.includes('head_limit'));
|
|
212
|
+
// Check for multiple large file reads
|
|
213
|
+
const fileReads = recentTools.filter(tool => tool.includes('Read') || tool.includes('read_file'));
|
|
214
|
+
// Check for redundant context_snapshot calls
|
|
215
|
+
const contextSnapshots = recentTools.filter(tool => tool.includes('context_snapshot'));
|
|
216
|
+
// Risk threshold: 2+ broad searches OR 5+ file reads OR 1+ context_snapshot
|
|
217
|
+
return broadSearches.length >= 2 ||
|
|
218
|
+
fileReads.length >= 5 ||
|
|
219
|
+
contextSnapshots.length >= 1;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Estimate total tokens in conversation
|
|
223
|
+
*/
|
|
224
|
+
estimateTotalTokens(messages) {
|
|
225
|
+
return messages.reduce((sum, msg) => sum + this.estimateTokens(msg), 0);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Prune old messages when approaching limit
|
|
229
|
+
*
|
|
230
|
+
* Synchronously removes old messages to stay within budget.
|
|
231
|
+
* If LLM summarization is available and enabled, this method will be async.
|
|
232
|
+
*/
|
|
233
|
+
pruneMessages(messages) {
|
|
234
|
+
const totalTokens = this.estimateTotalTokens(messages);
|
|
235
|
+
// Only prune if we're above target
|
|
236
|
+
if (totalTokens < this.config.targetTokens) {
|
|
237
|
+
return { pruned: messages, removed: 0 };
|
|
238
|
+
}
|
|
239
|
+
// Always keep system message (first)
|
|
240
|
+
const firstMessage = messages[0];
|
|
241
|
+
const systemMessage = firstMessage?.role === 'system' ? firstMessage : null;
|
|
242
|
+
const conversationMessages = systemMessage ? messages.slice(1) : messages;
|
|
243
|
+
// Group messages into "turns" to maintain tool call/result pairing
|
|
244
|
+
// A turn is: [user] or [assistant + all its tool results]
|
|
245
|
+
const turns = [];
|
|
246
|
+
let currentTurn = [];
|
|
247
|
+
for (const msg of conversationMessages) {
|
|
248
|
+
if (msg.role === 'user') {
|
|
249
|
+
if (currentTurn.length > 0) {
|
|
250
|
+
turns.push(currentTurn);
|
|
251
|
+
}
|
|
252
|
+
currentTurn = [msg];
|
|
253
|
+
}
|
|
254
|
+
else if (msg.role === 'assistant') {
|
|
255
|
+
if (currentTurn.length > 0) {
|
|
256
|
+
turns.push(currentTurn);
|
|
257
|
+
}
|
|
258
|
+
currentTurn = [msg];
|
|
259
|
+
}
|
|
260
|
+
else if (msg.role === 'tool') {
|
|
261
|
+
// Tool results belong with the current assistant turn
|
|
262
|
+
currentTurn.push(msg);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
if (currentTurn.length > 0) {
|
|
266
|
+
turns.push(currentTurn);
|
|
267
|
+
}
|
|
268
|
+
// Keep recent turns based on preserveRecentMessages (count user turns)
|
|
269
|
+
const recentTurns = [];
|
|
270
|
+
let exchangeCount = 0;
|
|
271
|
+
for (let i = turns.length - 1; i >= 0; i--) {
|
|
272
|
+
const turn = turns[i];
|
|
273
|
+
if (!turn || turn.length === 0)
|
|
274
|
+
continue;
|
|
275
|
+
recentTurns.unshift(turn);
|
|
276
|
+
// Count user messages as exchanges
|
|
277
|
+
if (turn[0]?.role === 'user') {
|
|
278
|
+
exchangeCount++;
|
|
279
|
+
if (exchangeCount >= this.config.preserveRecentMessages) {
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// IMPORTANT: Ensure we don't start with orphaned tool messages
|
|
285
|
+
// The first kept turn must start with user or assistant (not tool)
|
|
286
|
+
let startIndex = 0;
|
|
287
|
+
while (startIndex < recentTurns.length) {
|
|
288
|
+
const firstTurn = recentTurns[startIndex];
|
|
289
|
+
if (firstTurn && firstTurn.length > 0 && firstTurn[0]?.role === 'tool') {
|
|
290
|
+
startIndex++;
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
// Also check for assistant turns with missing tool results
|
|
294
|
+
if (firstTurn && firstTurn[0]?.role === 'assistant') {
|
|
295
|
+
const assistantMsg = firstTurn[0];
|
|
296
|
+
if (assistantMsg.toolCalls && assistantMsg.toolCalls.length > 0) {
|
|
297
|
+
// PERF: Pre-compute tool call IDs once, use direct Set lookup
|
|
298
|
+
const toolCallIds = assistantMsg.toolCalls.map(tc => tc.id);
|
|
299
|
+
const presentToolResultIds = new Set(firstTurn.filter(m => m.role === 'tool').map(m => m.toolCallId));
|
|
300
|
+
// If NOT all tool calls have results, skip this turn
|
|
301
|
+
// PERF: Direct has() calls instead of spread + every()
|
|
302
|
+
let allPresent = true;
|
|
303
|
+
for (const id of toolCallIds) {
|
|
304
|
+
if (!presentToolResultIds.has(id)) {
|
|
305
|
+
allPresent = false;
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (!allPresent) {
|
|
310
|
+
startIndex++;
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
break;
|
|
316
|
+
}
|
|
317
|
+
const validTurns = recentTurns.slice(startIndex);
|
|
318
|
+
// Flatten turns back to messages
|
|
319
|
+
const recentMessages = validTurns.flat();
|
|
320
|
+
// Build pruned message list
|
|
321
|
+
const pruned = [];
|
|
322
|
+
if (systemMessage) {
|
|
323
|
+
pruned.push(systemMessage);
|
|
324
|
+
}
|
|
325
|
+
// Add a context summary message if we removed messages
|
|
326
|
+
const removedCount = conversationMessages.length - recentMessages.length;
|
|
327
|
+
if (removedCount > 0) {
|
|
328
|
+
pruned.push({
|
|
329
|
+
role: 'system',
|
|
330
|
+
content: `[Context Manager: Removed ${removedCount} old messages to stay within token budget. Recent conversation history preserved.]`,
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
pruned.push(...recentMessages);
|
|
334
|
+
return {
|
|
335
|
+
pruned,
|
|
336
|
+
removed: removedCount,
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Prune messages with LLM-based summarization
|
|
341
|
+
*
|
|
342
|
+
* This is an async version that uses the LLM to create intelligent summaries
|
|
343
|
+
* instead of just removing old messages. Should be called BEFORE generation.
|
|
344
|
+
*/
|
|
345
|
+
async pruneMessagesWithSummary(messages, options) {
|
|
346
|
+
const totalTokens = this.estimateTotalTokens(messages);
|
|
347
|
+
// Only prune if we're above target
|
|
348
|
+
if (!options?.force && totalTokens < this.config.targetTokens) {
|
|
349
|
+
return { pruned: messages, removed: 0, summarized: false };
|
|
350
|
+
}
|
|
351
|
+
// If no summarization callback or disabled, fall back to simple pruning
|
|
352
|
+
if (!this.config.summarizationCallback || !this.config.useLLMSummarization) {
|
|
353
|
+
const result = this.pruneMessages(messages);
|
|
354
|
+
return { ...result, summarized: false };
|
|
355
|
+
}
|
|
356
|
+
// Partition messages
|
|
357
|
+
const firstMessage = messages[0];
|
|
358
|
+
const systemMessage = firstMessage?.role === 'system' ? firstMessage : null;
|
|
359
|
+
const conversationMessages = systemMessage ? messages.slice(1) : messages;
|
|
360
|
+
// Group messages into "turns" to maintain tool call/result pairing
|
|
361
|
+
const turns = [];
|
|
362
|
+
let currentTurn = [];
|
|
363
|
+
for (const msg of conversationMessages) {
|
|
364
|
+
if (msg.role === 'user') {
|
|
365
|
+
if (currentTurn.length > 0) {
|
|
366
|
+
turns.push(currentTurn);
|
|
367
|
+
}
|
|
368
|
+
currentTurn = [msg];
|
|
369
|
+
}
|
|
370
|
+
else if (msg.role === 'assistant') {
|
|
371
|
+
if (currentTurn.length > 0) {
|
|
372
|
+
turns.push(currentTurn);
|
|
373
|
+
}
|
|
374
|
+
currentTurn = [msg];
|
|
375
|
+
}
|
|
376
|
+
else if (msg.role === 'tool') {
|
|
377
|
+
currentTurn.push(msg);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
if (currentTurn.length > 0) {
|
|
381
|
+
turns.push(currentTurn);
|
|
382
|
+
}
|
|
383
|
+
// Keep recent turns based on preserveRecentMessages
|
|
384
|
+
const recentTurns = [];
|
|
385
|
+
let exchangeCount = 0;
|
|
386
|
+
for (let i = turns.length - 1; i >= 0; i--) {
|
|
387
|
+
const turn = turns[i];
|
|
388
|
+
if (!turn || turn.length === 0)
|
|
389
|
+
continue;
|
|
390
|
+
recentTurns.unshift(turn);
|
|
391
|
+
if (turn[0]?.role === 'user') {
|
|
392
|
+
exchangeCount++;
|
|
393
|
+
if (exchangeCount >= this.config.preserveRecentMessages) {
|
|
394
|
+
break;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
// Ensure we don't start with orphaned tool messages
|
|
399
|
+
let startIndex = 0;
|
|
400
|
+
while (startIndex < recentTurns.length) {
|
|
401
|
+
const firstTurn = recentTurns[startIndex];
|
|
402
|
+
if (firstTurn && firstTurn.length > 0 && firstTurn[0]?.role === 'tool') {
|
|
403
|
+
startIndex++;
|
|
404
|
+
continue;
|
|
405
|
+
}
|
|
406
|
+
if (firstTurn && firstTurn[0]?.role === 'assistant') {
|
|
407
|
+
const assistantMsg = firstTurn[0];
|
|
408
|
+
if (assistantMsg.toolCalls && assistantMsg.toolCalls.length > 0) {
|
|
409
|
+
// PERF: Pre-compute tool call IDs once, use direct Set lookup
|
|
410
|
+
const toolCallIds = assistantMsg.toolCalls.map(tc => tc.id);
|
|
411
|
+
const presentToolResultIds = new Set(firstTurn.filter(m => m.role === 'tool').map(m => m.toolCallId));
|
|
412
|
+
// PERF: Direct has() calls instead of spread + every()
|
|
413
|
+
let allPresent = true;
|
|
414
|
+
for (const id of toolCallIds) {
|
|
415
|
+
if (!presentToolResultIds.has(id)) {
|
|
416
|
+
allPresent = false;
|
|
417
|
+
break;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
if (!allPresent) {
|
|
421
|
+
startIndex++;
|
|
422
|
+
continue;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
break;
|
|
427
|
+
}
|
|
428
|
+
const validTurns = recentTurns.slice(startIndex);
|
|
429
|
+
const recentMessages = validTurns.flat();
|
|
430
|
+
// Determine which turns to summarize
|
|
431
|
+
const keepTurnCount = validTurns.length;
|
|
432
|
+
const summarizeTurns = turns.slice(0, turns.length - keepTurnCount - startIndex);
|
|
433
|
+
const toSummarize = summarizeTurns.flat();
|
|
434
|
+
// If nothing to summarize, return as-is
|
|
435
|
+
if (toSummarize.length === 0) {
|
|
436
|
+
return { pruned: messages, removed: 0, summarized: false };
|
|
437
|
+
}
|
|
438
|
+
try {
|
|
439
|
+
// Call the LLM to summarize old messages
|
|
440
|
+
const summary = await this.config.summarizationCallback(toSummarize);
|
|
441
|
+
// Build pruned message list with summary
|
|
442
|
+
const pruned = [];
|
|
443
|
+
if (systemMessage) {
|
|
444
|
+
pruned.push(systemMessage);
|
|
445
|
+
}
|
|
446
|
+
// Add intelligent summary
|
|
447
|
+
pruned.push({
|
|
448
|
+
role: 'system',
|
|
449
|
+
content: [
|
|
450
|
+
'=== Context Summary (Auto-generated) ===',
|
|
451
|
+
summary.trim(),
|
|
452
|
+
'',
|
|
453
|
+
`[Summarized ${toSummarize.length} earlier messages. Recent ${recentMessages.length} messages preserved below.]`,
|
|
454
|
+
].join('\n'),
|
|
455
|
+
});
|
|
456
|
+
pruned.push(...recentMessages);
|
|
457
|
+
return {
|
|
458
|
+
pruned,
|
|
459
|
+
removed: toSummarize.length,
|
|
460
|
+
summarized: true,
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
catch (error) {
|
|
464
|
+
// If summarization fails, fall back to simple pruning
|
|
465
|
+
const result = this.pruneMessages(messages);
|
|
466
|
+
return { ...result, summarized: false };
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Check if we're approaching the limit
|
|
471
|
+
*/
|
|
472
|
+
isApproachingLimit(messages) {
|
|
473
|
+
const totalTokens = this.estimateTotalTokens(messages);
|
|
474
|
+
return totalTokens >= this.config.targetTokens;
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Get warning level for current context usage
|
|
478
|
+
* Returns: null (no warning), 'info' (<70%), 'warning' (70-90%), 'danger' (>90%)
|
|
479
|
+
*/
|
|
480
|
+
getWarningLevel(messages) {
|
|
481
|
+
const totalTokens = this.estimateTotalTokens(messages);
|
|
482
|
+
const percentage = (totalTokens / this.config.maxTokens) * 100;
|
|
483
|
+
if (percentage > 90) {
|
|
484
|
+
return 'danger';
|
|
485
|
+
}
|
|
486
|
+
else if (percentage > 70) {
|
|
487
|
+
return 'warning';
|
|
488
|
+
}
|
|
489
|
+
else if (percentage > 50) {
|
|
490
|
+
return 'info';
|
|
491
|
+
}
|
|
492
|
+
return null;
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Get a human-readable warning message
|
|
496
|
+
*/
|
|
497
|
+
getWarningMessage(messages) {
|
|
498
|
+
const stats = this.getStats(messages);
|
|
499
|
+
const warningLevel = this.getWarningLevel(messages);
|
|
500
|
+
if (warningLevel === 'danger') {
|
|
501
|
+
return `⚠️ Context usage critical (${stats.percentage}%). Consider starting a new session or the next request may fail.`;
|
|
502
|
+
}
|
|
503
|
+
else if (warningLevel === 'warning') {
|
|
504
|
+
return `Context usage high (${stats.percentage}%). Automatic cleanup will occur soon.`;
|
|
505
|
+
}
|
|
506
|
+
return null;
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Get context stats
|
|
510
|
+
*/
|
|
511
|
+
getStats(messages) {
|
|
512
|
+
const totalTokens = this.estimateTotalTokens(messages);
|
|
513
|
+
const percentage = Math.round((totalTokens / this.config.maxTokens) * 100);
|
|
514
|
+
return {
|
|
515
|
+
totalTokens,
|
|
516
|
+
percentage,
|
|
517
|
+
isOverLimit: totalTokens >= this.config.maxTokens,
|
|
518
|
+
isApproachingLimit: totalTokens >= this.config.targetTokens,
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Update configuration
|
|
523
|
+
*/
|
|
524
|
+
updateConfig(config) {
|
|
525
|
+
this.config = { ...this.config, ...config };
|
|
526
|
+
}
|
|
527
|
+
// ============================================================================
|
|
528
|
+
// INTELLIGENT COMPACTION SYSTEM
|
|
529
|
+
// Automatically detects optimal points for conversation compaction
|
|
530
|
+
// ============================================================================
|
|
531
|
+
/**
|
|
532
|
+
* Default patterns that indicate task boundaries
|
|
533
|
+
*/
|
|
534
|
+
static DEFAULT_TASK_BOUNDARY_PATTERNS = [
|
|
535
|
+
// Completion indicators
|
|
536
|
+
/\b(done|completed|finished|fixed|resolved|implemented|added|created|updated)\b/i,
|
|
537
|
+
/\b(all\s+(?:tests?\s+)?pass(?:ing|ed)?)\b/i,
|
|
538
|
+
/\b(successfully|works?\s+(?:now|correctly))\b/i,
|
|
539
|
+
// Transition indicators
|
|
540
|
+
/\b(next|now\s+(?:let's|we\s+can)|moving\s+on)\b/i,
|
|
541
|
+
/\b(that's\s+(?:it|all|done))\b/i,
|
|
542
|
+
// Acknowledgment patterns
|
|
543
|
+
/^(?:great|perfect|thanks|thank\s+you|got\s+it|understood)\b/i,
|
|
544
|
+
];
|
|
545
|
+
/**
|
|
546
|
+
* Patterns indicating topic/task shifts
|
|
547
|
+
*/
|
|
548
|
+
static TOPIC_SHIFT_PATTERNS = [
|
|
549
|
+
/\b(different|another|new|separate|unrelated)\s+(?:task|thing|topic|issue|question)\b/i,
|
|
550
|
+
/\b(can\s+you|could\s+you|please|now|let's)\s+(?:also|help|do|make|create|fix|add)\b/i,
|
|
551
|
+
/\b(switching|changing|moving)\s+to\b/i,
|
|
552
|
+
/\b(forget|ignore|never\s*mind)\s+(?:that|the|about)\b/i,
|
|
553
|
+
/^(?:ok|okay|alright|anyway|so)\s*[,.]?\s*(?:can|could|now|let|please)/i,
|
|
554
|
+
];
|
|
555
|
+
/**
|
|
556
|
+
* Patterns indicating user pivots (abandoning current direction)
|
|
557
|
+
*/
|
|
558
|
+
static USER_PIVOT_PATTERNS = [
|
|
559
|
+
/\b(actually|wait|hold\s+on|stop|cancel|scratch\s+that)\b/i,
|
|
560
|
+
/\b(let's\s+(?:try|do)\s+(?:something|it)\s+(?:else|differently))\b/i,
|
|
561
|
+
/\b(go\s+back|revert|undo|start\s+over)\b/i,
|
|
562
|
+
/\b(wrong|not\s+(?:what|right)|that's\s+not)\b/i,
|
|
563
|
+
];
|
|
564
|
+
/**
|
|
565
|
+
* Analyze the conversation to detect intelligent compaction points
|
|
566
|
+
*/
|
|
567
|
+
analyzeCompactionPoints(messages) {
|
|
568
|
+
const signals = [];
|
|
569
|
+
const totalTokens = this.estimateTotalTokens(messages);
|
|
570
|
+
const tokenPercentage = totalTokens / this.config.maxTokens;
|
|
571
|
+
const compactionThreshold = this.config.compactionThreshold ?? 0.5;
|
|
572
|
+
const minConfidence = this.config.minSignalConfidence ?? 0.6;
|
|
573
|
+
// Don't analyze if below threshold
|
|
574
|
+
if (tokenPercentage < compactionThreshold) {
|
|
575
|
+
return {
|
|
576
|
+
shouldCompact: false,
|
|
577
|
+
signals: [],
|
|
578
|
+
recommendedCompactionPoint: null,
|
|
579
|
+
urgency: 'none',
|
|
580
|
+
preserveFromIndex: 0,
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
// Analyze each message for compaction signals
|
|
584
|
+
for (let i = 0; i < messages.length; i++) {
|
|
585
|
+
const msg = messages[i];
|
|
586
|
+
if (!msg)
|
|
587
|
+
continue;
|
|
588
|
+
// Detect task boundaries
|
|
589
|
+
const taskBoundary = this.detectTaskBoundary(msg, i, messages);
|
|
590
|
+
if (taskBoundary && taskBoundary.confidence >= minConfidence) {
|
|
591
|
+
signals.push(taskBoundary);
|
|
592
|
+
}
|
|
593
|
+
// Detect topic shifts
|
|
594
|
+
const topicShift = this.detectTopicShift(msg, i, messages);
|
|
595
|
+
if (topicShift && topicShift.confidence >= minConfidence) {
|
|
596
|
+
signals.push(topicShift);
|
|
597
|
+
}
|
|
598
|
+
// Detect user pivots
|
|
599
|
+
const userPivot = this.detectUserPivot(msg, i);
|
|
600
|
+
if (userPivot && userPivot.confidence >= minConfidence) {
|
|
601
|
+
signals.push(userPivot);
|
|
602
|
+
}
|
|
603
|
+
// Detect context saturation (tool output heavy regions)
|
|
604
|
+
const saturation = this.detectContextSaturation(msg, i, messages);
|
|
605
|
+
if (saturation && saturation.confidence >= minConfidence) {
|
|
606
|
+
signals.push(saturation);
|
|
607
|
+
}
|
|
608
|
+
// Detect milestones
|
|
609
|
+
const milestone = this.detectMilestone(msg, i, messages);
|
|
610
|
+
if (milestone && milestone.confidence >= minConfidence) {
|
|
611
|
+
signals.push(milestone);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
// Determine urgency based on token percentage
|
|
615
|
+
const urgency = this.calculateUrgency(tokenPercentage);
|
|
616
|
+
// Find the best compaction point
|
|
617
|
+
const recommendedPoint = this.findBestCompactionPoint(signals, messages, urgency);
|
|
618
|
+
// Calculate preserve index (everything after this should be kept)
|
|
619
|
+
const preserveFromIndex = recommendedPoint !== null
|
|
620
|
+
? this.findSafePreservePoint(recommendedPoint, messages)
|
|
621
|
+
: messages.length;
|
|
622
|
+
return {
|
|
623
|
+
shouldCompact: signals.length > 0 && urgency !== 'none',
|
|
624
|
+
signals,
|
|
625
|
+
recommendedCompactionPoint: recommendedPoint,
|
|
626
|
+
urgency,
|
|
627
|
+
preserveFromIndex,
|
|
628
|
+
};
|
|
629
|
+
}
|
|
630
|
+
/**
|
|
631
|
+
* Detect task boundary signals
|
|
632
|
+
*/
|
|
633
|
+
detectTaskBoundary(msg, index, messages) {
|
|
634
|
+
if (msg.role !== 'user' && msg.role !== 'assistant')
|
|
635
|
+
return null;
|
|
636
|
+
const content = msg.content || '';
|
|
637
|
+
const patterns = this.config.taskBoundaryPatterns
|
|
638
|
+
? this.config.taskBoundaryPatterns.map(p => new RegExp(p, 'i'))
|
|
639
|
+
: ContextManager.DEFAULT_TASK_BOUNDARY_PATTERNS;
|
|
640
|
+
let matchCount = 0;
|
|
641
|
+
const reasons = [];
|
|
642
|
+
for (const pattern of patterns) {
|
|
643
|
+
if (pattern.test(content)) {
|
|
644
|
+
matchCount++;
|
|
645
|
+
reasons.push(pattern.source.slice(0, 30));
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
if (matchCount === 0)
|
|
649
|
+
return null;
|
|
650
|
+
// Higher confidence if followed by a new user message with different intent
|
|
651
|
+
let confidence = Math.min(0.4 + matchCount * 0.2, 0.9);
|
|
652
|
+
// Boost confidence if this looks like a conclusion
|
|
653
|
+
if (msg.role === 'assistant' && this.looksLikeConclusion(content)) {
|
|
654
|
+
confidence = Math.min(confidence + 0.2, 0.95);
|
|
655
|
+
}
|
|
656
|
+
// Boost if next user message starts a new topic
|
|
657
|
+
const nextUserMsg = messages.slice(index + 1).find(m => m.role === 'user');
|
|
658
|
+
if (nextUserMsg && this.isNewTopic(content, nextUserMsg.content || '')) {
|
|
659
|
+
confidence = Math.min(confidence + 0.15, 0.95);
|
|
660
|
+
}
|
|
661
|
+
return {
|
|
662
|
+
type: 'task_boundary',
|
|
663
|
+
confidence,
|
|
664
|
+
messageIndex: index,
|
|
665
|
+
reason: `Task completion detected: ${reasons.slice(0, 2).join(', ')}`,
|
|
666
|
+
};
|
|
667
|
+
}
|
|
668
|
+
/**
|
|
669
|
+
* Detect topic shift signals
|
|
670
|
+
*/
|
|
671
|
+
detectTopicShift(msg, index, messages) {
|
|
672
|
+
if (msg.role !== 'user')
|
|
673
|
+
return null;
|
|
674
|
+
const content = msg.content || '';
|
|
675
|
+
const sensitivity = this.config.topicShiftSensitivity ?? 0.7;
|
|
676
|
+
// Check explicit shift patterns
|
|
677
|
+
for (const pattern of ContextManager.TOPIC_SHIFT_PATTERNS) {
|
|
678
|
+
if (pattern.test(content)) {
|
|
679
|
+
return {
|
|
680
|
+
type: 'topic_shift',
|
|
681
|
+
confidence: 0.7 + sensitivity * 0.2,
|
|
682
|
+
messageIndex: index,
|
|
683
|
+
reason: 'Explicit topic shift language detected',
|
|
684
|
+
};
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
// Check semantic shift from previous context
|
|
688
|
+
const prevMessages = messages.slice(Math.max(0, index - 5), index);
|
|
689
|
+
const prevContent = prevMessages
|
|
690
|
+
.filter(m => m.role === 'user' || m.role === 'assistant')
|
|
691
|
+
.map(m => m.content || '')
|
|
692
|
+
.join(' ');
|
|
693
|
+
if (prevContent && this.isNewTopic(prevContent, content)) {
|
|
694
|
+
return {
|
|
695
|
+
type: 'topic_shift',
|
|
696
|
+
confidence: 0.6 + sensitivity * 0.2,
|
|
697
|
+
messageIndex: index,
|
|
698
|
+
reason: 'Semantic topic shift detected',
|
|
699
|
+
};
|
|
700
|
+
}
|
|
701
|
+
return null;
|
|
702
|
+
}
|
|
703
|
+
/**
|
|
704
|
+
* Detect user pivot signals (abandoning current direction)
|
|
705
|
+
*/
|
|
706
|
+
detectUserPivot(msg, index) {
|
|
707
|
+
if (msg.role !== 'user')
|
|
708
|
+
return null;
|
|
709
|
+
const content = msg.content || '';
|
|
710
|
+
for (const pattern of ContextManager.USER_PIVOT_PATTERNS) {
|
|
711
|
+
if (pattern.test(content)) {
|
|
712
|
+
return {
|
|
713
|
+
type: 'user_pivot',
|
|
714
|
+
confidence: 0.85,
|
|
715
|
+
messageIndex: index,
|
|
716
|
+
reason: 'User pivot/direction change detected',
|
|
717
|
+
};
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
return null;
|
|
721
|
+
}
|
|
722
|
+
/**
|
|
723
|
+
* Detect context saturation (heavy tool output regions)
|
|
724
|
+
*/
|
|
725
|
+
detectContextSaturation(msg, index, messages) {
|
|
726
|
+
if (msg.role !== 'tool')
|
|
727
|
+
return null;
|
|
728
|
+
// Look at the surrounding region
|
|
729
|
+
const windowStart = Math.max(0, index - 10);
|
|
730
|
+
const windowEnd = Math.min(messages.length, index + 5);
|
|
731
|
+
const window = messages.slice(windowStart, windowEnd);
|
|
732
|
+
// Count tool messages and their sizes
|
|
733
|
+
let toolCount = 0;
|
|
734
|
+
let totalToolSize = 0;
|
|
735
|
+
for (const m of window) {
|
|
736
|
+
if (m.role === 'tool') {
|
|
737
|
+
toolCount++;
|
|
738
|
+
totalToolSize += (m.content || '').length;
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
// High saturation if many tool outputs with large content
|
|
742
|
+
if (toolCount >= 5 && totalToolSize > 20000) {
|
|
743
|
+
// Find the last tool message in this cluster as compaction point
|
|
744
|
+
let lastToolIndex = index;
|
|
745
|
+
for (let i = index + 1; i < windowEnd; i++) {
|
|
746
|
+
if (messages[i]?.role === 'tool') {
|
|
747
|
+
lastToolIndex = i;
|
|
748
|
+
}
|
|
749
|
+
else if (messages[i]?.role === 'user') {
|
|
750
|
+
break; // Stop at next user message
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
return {
|
|
754
|
+
type: 'context_saturation',
|
|
755
|
+
confidence: Math.min(0.5 + toolCount * 0.05, 0.85),
|
|
756
|
+
messageIndex: lastToolIndex,
|
|
757
|
+
reason: `Heavy tool output region (${toolCount} tools, ${Math.round(totalToolSize / 1000)}k chars)`,
|
|
758
|
+
};
|
|
759
|
+
}
|
|
760
|
+
return null;
|
|
761
|
+
}
|
|
762
|
+
/**
|
|
763
|
+
* Detect milestone signals (significant accomplishments)
|
|
764
|
+
*/
|
|
765
|
+
detectMilestone(msg, index, _messages) {
|
|
766
|
+
if (msg.role !== 'assistant')
|
|
767
|
+
return null;
|
|
768
|
+
const content = msg.content || '';
|
|
769
|
+
// Look for milestone indicators
|
|
770
|
+
const milestonePatterns = [
|
|
771
|
+
/\b(commit(?:ted)?|pushed|deployed|merged|released)\b/i,
|
|
772
|
+
/\b(all\s+tests?\s+pass(?:ing|ed)?)\b/i,
|
|
773
|
+
/\b(build\s+(?:succeed|success|pass))\b/i,
|
|
774
|
+
/\b(feature\s+(?:complete|done|ready))\b/i,
|
|
775
|
+
/\b(pr\s+(?:created|opened|merged))\b/i,
|
|
776
|
+
];
|
|
777
|
+
for (const pattern of milestonePatterns) {
|
|
778
|
+
if (pattern.test(content)) {
|
|
779
|
+
return {
|
|
780
|
+
type: 'milestone',
|
|
781
|
+
confidence: 0.9,
|
|
782
|
+
messageIndex: index,
|
|
783
|
+
reason: 'Significant milestone achieved',
|
|
784
|
+
};
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
return null;
|
|
788
|
+
}
|
|
789
|
+
/**
|
|
790
|
+
* Check if content looks like a task conclusion
|
|
791
|
+
*/
|
|
792
|
+
looksLikeConclusion(content) {
|
|
793
|
+
const conclusionPatterns = [
|
|
794
|
+
/\b(let\s+me\s+know|feel\s+free|if\s+you\s+(?:need|have|want))\b/i,
|
|
795
|
+
/\b(anything\s+else|other\s+questions?)\b/i,
|
|
796
|
+
/\b(should\s+be\s+(?:good|working|ready|done))\b/i,
|
|
797
|
+
/\b(that\s+should|this\s+(?:should|will))\s+(?:fix|solve|work)/i,
|
|
798
|
+
];
|
|
799
|
+
return conclusionPatterns.some(p => p.test(content));
|
|
800
|
+
}
|
|
801
|
+
/**
|
|
802
|
+
* Check if two contents represent different topics (simple heuristic)
|
|
803
|
+
*/
|
|
804
|
+
isNewTopic(prevContent, newContent) {
|
|
805
|
+
// Extract key terms (simple tokenization)
|
|
806
|
+
const extractTerms = (text) => {
|
|
807
|
+
const words = text.toLowerCase()
|
|
808
|
+
.replace(/[^a-z0-9\s]/g, ' ')
|
|
809
|
+
.split(/\s+/)
|
|
810
|
+
.filter(w => w.length > 3);
|
|
811
|
+
return new Set(words);
|
|
812
|
+
};
|
|
813
|
+
const prevTerms = extractTerms(prevContent);
|
|
814
|
+
const newTerms = extractTerms(newContent);
|
|
815
|
+
if (prevTerms.size === 0 || newTerms.size === 0)
|
|
816
|
+
return false;
|
|
817
|
+
// Calculate overlap
|
|
818
|
+
let overlap = 0;
|
|
819
|
+
for (const term of newTerms) {
|
|
820
|
+
if (prevTerms.has(term))
|
|
821
|
+
overlap++;
|
|
822
|
+
}
|
|
823
|
+
const overlapRatio = overlap / Math.min(prevTerms.size, newTerms.size);
|
|
824
|
+
// Low overlap suggests new topic
|
|
825
|
+
return overlapRatio < 0.2;
|
|
826
|
+
}
|
|
827
|
+
/**
|
|
828
|
+
* Calculate urgency level based on token percentage
|
|
829
|
+
*/
|
|
830
|
+
calculateUrgency(tokenPercentage) {
|
|
831
|
+
if (tokenPercentage >= 0.9)
|
|
832
|
+
return 'critical';
|
|
833
|
+
if (tokenPercentage >= 0.75)
|
|
834
|
+
return 'high';
|
|
835
|
+
if (tokenPercentage >= 0.6)
|
|
836
|
+
return 'medium';
|
|
837
|
+
if (tokenPercentage >= 0.5)
|
|
838
|
+
return 'low';
|
|
839
|
+
return 'none';
|
|
840
|
+
}
|
|
841
|
+
/**
|
|
842
|
+
* Find the best compaction point from signals
|
|
843
|
+
*/
|
|
844
|
+
findBestCompactionPoint(signals, messages, urgency) {
|
|
845
|
+
if (signals.length === 0)
|
|
846
|
+
return null;
|
|
847
|
+
// Score each signal based on type priority and confidence
|
|
848
|
+
const typePriority = {
|
|
849
|
+
milestone: 1.0,
|
|
850
|
+
task_boundary: 0.9,
|
|
851
|
+
user_pivot: 0.85,
|
|
852
|
+
ai_flow_pattern: 0.82, // AI flow patterns like thinking/tool use cycles
|
|
853
|
+
topic_shift: 0.8,
|
|
854
|
+
context_saturation: 0.7,
|
|
855
|
+
};
|
|
856
|
+
// Urgency affects how far back we're willing to compact
|
|
857
|
+
const urgencyDepth = {
|
|
858
|
+
none: 0,
|
|
859
|
+
low: 0.3, // Compact only recent 30%
|
|
860
|
+
medium: 0.5,
|
|
861
|
+
high: 0.7,
|
|
862
|
+
critical: 0.9,
|
|
863
|
+
};
|
|
864
|
+
const maxDepth = urgencyDepth[urgency] ?? 0.5;
|
|
865
|
+
const minIndex = Math.floor(messages.length * (1 - maxDepth));
|
|
866
|
+
// Find highest scoring signal within allowed depth
|
|
867
|
+
let bestSignal = null;
|
|
868
|
+
let bestScore = 0;
|
|
869
|
+
for (const signal of signals) {
|
|
870
|
+
if (signal.messageIndex < minIndex)
|
|
871
|
+
continue;
|
|
872
|
+
const score = signal.confidence * typePriority[signal.type];
|
|
873
|
+
if (score > bestScore) {
|
|
874
|
+
bestScore = score;
|
|
875
|
+
bestSignal = signal;
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
return bestSignal?.messageIndex ?? null;
|
|
879
|
+
}
|
|
880
|
+
/**
|
|
881
|
+
* Find a safe preservation point that doesn't break tool call chains
|
|
882
|
+
*/
|
|
883
|
+
findSafePreservePoint(compactionPoint, messages) {
|
|
884
|
+
// Start from compaction point and move forward to find a safe break
|
|
885
|
+
for (let i = compactionPoint + 1; i < messages.length; i++) {
|
|
886
|
+
const msg = messages[i];
|
|
887
|
+
if (!msg)
|
|
888
|
+
continue;
|
|
889
|
+
// Safe if it's a user message
|
|
890
|
+
if (msg.role === 'user') {
|
|
891
|
+
return i;
|
|
892
|
+
}
|
|
893
|
+
// Safe if it's an assistant without pending tool calls
|
|
894
|
+
if (msg.role === 'assistant' && !msg.toolCalls?.length) {
|
|
895
|
+
return i;
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
// If no safe point found, keep more messages
|
|
899
|
+
return Math.min(compactionPoint + 1, messages.length);
|
|
900
|
+
}
|
|
901
|
+
/**
|
|
902
|
+
* Perform intelligent compaction based on analysis
|
|
903
|
+
* This method analyzes the conversation and compacts at the optimal point
|
|
904
|
+
*/
|
|
905
|
+
async intelligentCompact(messages) {
|
|
906
|
+
// Analyze for compaction points
|
|
907
|
+
const analysis = this.analyzeCompactionPoints(messages);
|
|
908
|
+
// If no compaction needed or no good point found
|
|
909
|
+
if (!analysis.shouldCompact || analysis.recommendedCompactionPoint === null) {
|
|
910
|
+
return {
|
|
911
|
+
compacted: messages,
|
|
912
|
+
analysis,
|
|
913
|
+
summarized: false,
|
|
914
|
+
};
|
|
915
|
+
}
|
|
916
|
+
// Separate messages to summarize and preserve
|
|
917
|
+
const firstMessage = messages[0];
|
|
918
|
+
const systemMessage = firstMessage?.role === 'system' ? firstMessage : null;
|
|
919
|
+
const startIndex = systemMessage ? 1 : 0;
|
|
920
|
+
const toSummarize = messages.slice(startIndex, analysis.preserveFromIndex);
|
|
921
|
+
const toPreserve = messages.slice(analysis.preserveFromIndex);
|
|
922
|
+
// If nothing to summarize, return as-is
|
|
923
|
+
if (toSummarize.length === 0) {
|
|
924
|
+
return {
|
|
925
|
+
compacted: messages,
|
|
926
|
+
analysis,
|
|
927
|
+
summarized: false,
|
|
928
|
+
};
|
|
929
|
+
}
|
|
930
|
+
// Build result
|
|
931
|
+
const compacted = [];
|
|
932
|
+
if (systemMessage) {
|
|
933
|
+
compacted.push(systemMessage);
|
|
934
|
+
}
|
|
935
|
+
// Try LLM summarization if available
|
|
936
|
+
if (this.config.summarizationCallback && this.config.useLLMSummarization !== false) {
|
|
937
|
+
try {
|
|
938
|
+
const summary = await this.config.summarizationCallback(toSummarize);
|
|
939
|
+
compacted.push({
|
|
940
|
+
role: 'system',
|
|
941
|
+
content: [
|
|
942
|
+
'=== Intelligent Context Summary ===',
|
|
943
|
+
`Compaction triggered: ${analysis.signals[0]?.reason || 'Context optimization'}`,
|
|
944
|
+
'',
|
|
945
|
+
summary.trim(),
|
|
946
|
+
'',
|
|
947
|
+
`[Summarized ${toSummarize.length} messages. ${toPreserve.length} recent messages preserved.]`,
|
|
948
|
+
].join('\n'),
|
|
949
|
+
});
|
|
950
|
+
compacted.push(...toPreserve);
|
|
951
|
+
return {
|
|
952
|
+
compacted,
|
|
953
|
+
analysis,
|
|
954
|
+
summarized: true,
|
|
955
|
+
};
|
|
956
|
+
}
|
|
957
|
+
catch {
|
|
958
|
+
// Fall through to simple compaction
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
// Simple compaction without LLM
|
|
962
|
+
compacted.push({
|
|
963
|
+
role: 'system',
|
|
964
|
+
content: `[Context Manager: Intelligently compacted ${toSummarize.length} messages at "${analysis.signals[0]?.reason || 'optimal point'}". ${toPreserve.length} recent messages preserved.]`,
|
|
965
|
+
});
|
|
966
|
+
compacted.push(...toPreserve);
|
|
967
|
+
return {
|
|
968
|
+
compacted,
|
|
969
|
+
analysis,
|
|
970
|
+
summarized: false,
|
|
971
|
+
};
|
|
972
|
+
}
|
|
973
|
+
/**
|
|
974
|
+
* Check if intelligent compaction should be triggered
|
|
975
|
+
* Call this before generation to proactively manage context
|
|
976
|
+
*/
|
|
977
|
+
shouldTriggerCompaction(messages) {
|
|
978
|
+
if (this.config.enableIntelligentCompaction === false) {
|
|
979
|
+
return { shouldCompact: false, urgency: 'none', reason: null };
|
|
980
|
+
}
|
|
981
|
+
const analysis = this.analyzeCompactionPoints(messages);
|
|
982
|
+
if (!analysis.shouldCompact) {
|
|
983
|
+
return { shouldCompact: false, urgency: analysis.urgency, reason: null };
|
|
984
|
+
}
|
|
985
|
+
const topSignal = analysis.signals
|
|
986
|
+
.sort((a, b) => b.confidence - a.confidence)[0];
|
|
987
|
+
return {
|
|
988
|
+
shouldCompact: true,
|
|
989
|
+
urgency: analysis.urgency,
|
|
990
|
+
reason: topSignal?.reason || 'Context optimization recommended',
|
|
991
|
+
};
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
/**
|
|
995
|
+
* Create a default context manager instance with model-aware limits
|
|
996
|
+
*/
|
|
997
|
+
export function createDefaultContextManager(overrides, model) {
|
|
998
|
+
// Get model-specific thresholds
|
|
999
|
+
const thresholds = calculateContextThresholds(model);
|
|
1000
|
+
return new ContextManager({
|
|
1001
|
+
maxTokens: thresholds.maxTokens,
|
|
1002
|
+
targetTokens: thresholds.targetTokens, // Start pruning at 60%
|
|
1003
|
+
warningTokens: thresholds.warningTokens, // Warn at 50%
|
|
1004
|
+
criticalTokens: thresholds.criticalTokens, // Critical at 75%
|
|
1005
|
+
maxToolOutputLength: 5000, // 5k chars max per tool (reduced for safety)
|
|
1006
|
+
preserveRecentMessages: 5, // Keep last 5 exchanges
|
|
1007
|
+
estimatedCharsPerToken: 3.5, // More aggressive estimate (accounts for special tokens, JSON overhead)
|
|
1008
|
+
useLLMSummarization: true, // Enable LLM summarization by default
|
|
1009
|
+
// Intelligent compaction defaults
|
|
1010
|
+
enableIntelligentCompaction: true,
|
|
1011
|
+
compactionThreshold: 0.5, // Start analyzing at 50% context usage
|
|
1012
|
+
minSignalConfidence: 0.6, // Require 60% confidence for compaction signals
|
|
1013
|
+
topicShiftSensitivity: 0.7, // Moderately sensitive to topic changes
|
|
1014
|
+
model,
|
|
1015
|
+
...overrides,
|
|
1016
|
+
});
|
|
1017
|
+
}
|
|
1018
|
+
/**
|
|
1019
|
+
* Format conversation messages into readable text for summarization
|
|
1020
|
+
*/
|
|
1021
|
+
export function formatMessagesForSummary(messages) {
|
|
1022
|
+
const lines = [];
|
|
1023
|
+
for (const msg of messages) {
|
|
1024
|
+
if (msg.role === 'user') {
|
|
1025
|
+
lines.push(`USER: ${msg.content}`);
|
|
1026
|
+
}
|
|
1027
|
+
else if (msg.role === 'assistant') {
|
|
1028
|
+
let content = msg.content || '';
|
|
1029
|
+
if (msg.toolCalls && msg.toolCalls.length > 0) {
|
|
1030
|
+
const toolNames = msg.toolCalls.map(tc => tc.name);
|
|
1031
|
+
content += ` [Called tools: ${toolNames.join(', ')}]`;
|
|
1032
|
+
}
|
|
1033
|
+
lines.push(`ASSISTANT: ${content}`);
|
|
1034
|
+
}
|
|
1035
|
+
else if (msg.role === 'tool') {
|
|
1036
|
+
// Truncate long tool outputs for summarization
|
|
1037
|
+
const output = msg.content.length > 500
|
|
1038
|
+
? `${msg.content.slice(0, 500)}...`
|
|
1039
|
+
: msg.content;
|
|
1040
|
+
lines.push(`TOOL (${msg.name}): ${output}`);
|
|
1041
|
+
}
|
|
1042
|
+
// Skip system messages in summary input
|
|
1043
|
+
}
|
|
1044
|
+
return lines.join('\n\n');
|
|
1045
|
+
}
|
|
1046
|
+
/**
|
|
1047
|
+
* Create a summarization callback using the given provider
|
|
1048
|
+
*/
|
|
1049
|
+
export function createSummarizationCallback(provider) {
|
|
1050
|
+
return async (messages) => {
|
|
1051
|
+
// Format messages into readable conversation
|
|
1052
|
+
const conversationText = formatMessagesForSummary(messages);
|
|
1053
|
+
// Create summarization prompt
|
|
1054
|
+
const prompt = SUMMARIZATION_PROMPT.replace('{conversation}', conversationText);
|
|
1055
|
+
// Call provider to generate summary (no tools needed)
|
|
1056
|
+
const response = await provider.generate([{ role: 'user', content: prompt }], []);
|
|
1057
|
+
return response.content || '';
|
|
1058
|
+
};
|
|
1059
|
+
}
|
|
1060
|
+
//# sourceMappingURL=contextManager.js.map
|