erosolar-cli 1.7.438 → 1.7.439
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/package.json +2 -1
- package/dist/StringUtils.d.ts +0 -8
- package/dist/StringUtils.d.ts.map +0 -1
- package/dist/StringUtils.js +0 -11
- package/dist/StringUtils.js.map +0 -1
- package/dist/adapters/browser/index.d.ts +0 -12
- package/dist/adapters/browser/index.d.ts.map +0 -1
- package/dist/adapters/browser/index.js +0 -11
- package/dist/adapters/browser/index.js.map +0 -1
- package/dist/adapters/node/index.d.ts +0 -17
- package/dist/adapters/node/index.d.ts.map +0 -1
- package/dist/adapters/node/index.js +0 -35
- package/dist/adapters/node/index.js.map +0 -1
- package/dist/adapters/remote/index.d.ts +0 -13
- package/dist/adapters/remote/index.d.ts.map +0 -1
- package/dist/adapters/remote/index.js +0 -20
- package/dist/adapters/remote/index.js.map +0 -1
- package/dist/adapters/types.d.ts +0 -14
- package/dist/adapters/types.d.ts.map +0 -1
- package/dist/adapters/types.js +0 -2
- package/dist/adapters/types.js.map +0 -1
- package/dist/bin/erosolar.d.ts +0 -9
- package/dist/bin/erosolar.d.ts.map +0 -1
- package/dist/bin/erosolar.js +0 -93
- package/dist/bin/erosolar.js.map +0 -1
- package/dist/bin/selfTest.d.ts +0 -14
- package/dist/bin/selfTest.d.ts.map +0 -1
- package/dist/bin/selfTest.js +0 -304
- package/dist/bin/selfTest.js.map +0 -1
- package/dist/browser/BrowserSessionManager.d.ts +0 -307
- package/dist/browser/BrowserSessionManager.d.ts.map +0 -1
- package/dist/browser/BrowserSessionManager.js +0 -713
- package/dist/browser/BrowserSessionManager.js.map +0 -1
- package/dist/capabilities/advancedTestGenerationCapability.d.ts +0 -17
- package/dist/capabilities/advancedTestGenerationCapability.d.ts.map +0 -1
- package/dist/capabilities/advancedTestGenerationCapability.js +0 -28
- package/dist/capabilities/advancedTestGenerationCapability.js.map +0 -1
- package/dist/capabilities/agentSpawningCapability.d.ts +0 -6
- package/dist/capabilities/agentSpawningCapability.d.ts.map +0 -1
- package/dist/capabilities/agentSpawningCapability.js +0 -168
- package/dist/capabilities/agentSpawningCapability.js.map +0 -1
- package/dist/capabilities/askUserCapability.d.ts +0 -21
- package/dist/capabilities/askUserCapability.d.ts.map +0 -1
- package/dist/capabilities/askUserCapability.js +0 -155
- package/dist/capabilities/askUserCapability.js.map +0 -1
- package/dist/capabilities/bashCapability.d.ts +0 -13
- package/dist/capabilities/bashCapability.d.ts.map +0 -1
- package/dist/capabilities/bashCapability.js +0 -24
- package/dist/capabilities/bashCapability.js.map +0 -1
- package/dist/capabilities/browserAutomationCapability.d.ts +0 -37
- package/dist/capabilities/browserAutomationCapability.d.ts.map +0 -1
- package/dist/capabilities/browserAutomationCapability.js +0 -49
- package/dist/capabilities/browserAutomationCapability.js.map +0 -1
- package/dist/capabilities/buildCapability.d.ts +0 -24
- package/dist/capabilities/buildCapability.d.ts.map +0 -1
- package/dist/capabilities/buildCapability.js +0 -25
- package/dist/capabilities/buildCapability.js.map +0 -1
- package/dist/capabilities/cloudCapability.d.ts +0 -13
- package/dist/capabilities/cloudCapability.d.ts.map +0 -1
- package/dist/capabilities/cloudCapability.js +0 -38
- package/dist/capabilities/cloudCapability.js.map +0 -1
- package/dist/capabilities/codeAnalysisCapability.d.ts +0 -13
- package/dist/capabilities/codeAnalysisCapability.d.ts.map +0 -1
- package/dist/capabilities/codeAnalysisCapability.js +0 -24
- package/dist/capabilities/codeAnalysisCapability.js.map +0 -1
- package/dist/capabilities/codeGenerationCapability.d.ts +0 -13
- package/dist/capabilities/codeGenerationCapability.d.ts.map +0 -1
- package/dist/capabilities/codeGenerationCapability.js +0 -25
- package/dist/capabilities/codeGenerationCapability.js.map +0 -1
- package/dist/capabilities/codeQualityCapability.d.ts +0 -13
- package/dist/capabilities/codeQualityCapability.d.ts.map +0 -1
- package/dist/capabilities/codeQualityCapability.js +0 -25
- package/dist/capabilities/codeQualityCapability.js.map +0 -1
- package/dist/capabilities/dependencySecurityCapability.d.ts +0 -13
- package/dist/capabilities/dependencySecurityCapability.d.ts.map +0 -1
- package/dist/capabilities/dependencySecurityCapability.js +0 -24
- package/dist/capabilities/dependencySecurityCapability.js.map +0 -1
- package/dist/capabilities/devCapability.d.ts +0 -13
- package/dist/capabilities/devCapability.d.ts.map +0 -1
- package/dist/capabilities/devCapability.js +0 -24
- package/dist/capabilities/devCapability.js.map +0 -1
- package/dist/capabilities/editCapability.d.ts +0 -17
- package/dist/capabilities/editCapability.d.ts.map +0 -1
- package/dist/capabilities/editCapability.js +0 -27
- package/dist/capabilities/editCapability.js.map +0 -1
- package/dist/capabilities/emailCapability.d.ts +0 -12
- package/dist/capabilities/emailCapability.d.ts.map +0 -1
- package/dist/capabilities/emailCapability.js +0 -22
- package/dist/capabilities/emailCapability.js.map +0 -1
- package/dist/capabilities/enhancedCodeIntelligenceCapability.d.ts +0 -17
- package/dist/capabilities/enhancedCodeIntelligenceCapability.d.ts.map +0 -1
- package/dist/capabilities/enhancedCodeIntelligenceCapability.js +0 -28
- package/dist/capabilities/enhancedCodeIntelligenceCapability.js.map +0 -1
- package/dist/capabilities/enhancedDevWorkflowCapability.d.ts +0 -17
- package/dist/capabilities/enhancedDevWorkflowCapability.d.ts.map +0 -1
- package/dist/capabilities/enhancedDevWorkflowCapability.js +0 -28
- package/dist/capabilities/enhancedDevWorkflowCapability.js.map +0 -1
- package/dist/capabilities/enhancedGitCapability.d.ts +0 -7
- package/dist/capabilities/enhancedGitCapability.d.ts.map +0 -1
- package/dist/capabilities/enhancedGitCapability.js +0 -220
- package/dist/capabilities/enhancedGitCapability.js.map +0 -1
- package/dist/capabilities/filesystemCapability.d.ts +0 -13
- package/dist/capabilities/filesystemCapability.d.ts.map +0 -1
- package/dist/capabilities/filesystemCapability.js +0 -24
- package/dist/capabilities/filesystemCapability.js.map +0 -1
- package/dist/capabilities/frontendTestingCapability.d.ts +0 -13
- package/dist/capabilities/frontendTestingCapability.d.ts.map +0 -1
- package/dist/capabilities/frontendTestingCapability.js +0 -28
- package/dist/capabilities/frontendTestingCapability.js.map +0 -1
- package/dist/capabilities/globCapability.d.ts +0 -17
- package/dist/capabilities/globCapability.d.ts.map +0 -1
- package/dist/capabilities/globCapability.js +0 -27
- package/dist/capabilities/globCapability.js.map +0 -1
- package/dist/capabilities/index.d.ts +0 -26
- package/dist/capabilities/index.d.ts.map +0 -1
- package/dist/capabilities/index.js +0 -26
- package/dist/capabilities/index.js.map +0 -1
- package/dist/capabilities/interactionCapability.d.ts +0 -12
- package/dist/capabilities/interactionCapability.d.ts.map +0 -1
- package/dist/capabilities/interactionCapability.js +0 -22
- package/dist/capabilities/interactionCapability.js.map +0 -1
- package/dist/capabilities/learnCapability.d.ts +0 -22
- package/dist/capabilities/learnCapability.d.ts.map +0 -1
- package/dist/capabilities/learnCapability.js +0 -37
- package/dist/capabilities/learnCapability.js.map +0 -1
- package/dist/capabilities/mcpCapability.d.ts +0 -6
- package/dist/capabilities/mcpCapability.d.ts.map +0 -1
- package/dist/capabilities/mcpCapability.js +0 -19
- package/dist/capabilities/mcpCapability.js.map +0 -1
- package/dist/capabilities/notebookCapability.d.ts +0 -17
- package/dist/capabilities/notebookCapability.d.ts.map +0 -1
- package/dist/capabilities/notebookCapability.js +0 -27
- package/dist/capabilities/notebookCapability.js.map +0 -1
- package/dist/capabilities/performanceMonitoringCapability.d.ts +0 -108
- package/dist/capabilities/performanceMonitoringCapability.d.ts.map +0 -1
- package/dist/capabilities/performanceMonitoringCapability.js +0 -176
- package/dist/capabilities/performanceMonitoringCapability.js.map +0 -1
- package/dist/capabilities/planningCapability.d.ts +0 -16
- package/dist/capabilities/planningCapability.d.ts.map +0 -1
- package/dist/capabilities/planningCapability.js +0 -26
- package/dist/capabilities/planningCapability.js.map +0 -1
- package/dist/capabilities/refactoringCapability.d.ts +0 -13
- package/dist/capabilities/refactoringCapability.d.ts.map +0 -1
- package/dist/capabilities/refactoringCapability.js +0 -25
- package/dist/capabilities/refactoringCapability.js.map +0 -1
- package/dist/capabilities/repoChecksCapability.d.ts +0 -10
- package/dist/capabilities/repoChecksCapability.d.ts.map +0 -1
- package/dist/capabilities/repoChecksCapability.js +0 -24
- package/dist/capabilities/repoChecksCapability.js.map +0 -1
- package/dist/capabilities/searchCapability.d.ts +0 -13
- package/dist/capabilities/searchCapability.d.ts.map +0 -1
- package/dist/capabilities/searchCapability.js +0 -24
- package/dist/capabilities/searchCapability.js.map +0 -1
- package/dist/capabilities/skillCapability.d.ts +0 -3
- package/dist/capabilities/skillCapability.d.ts.map +0 -1
- package/dist/capabilities/skillCapability.js +0 -77
- package/dist/capabilities/skillCapability.js.map +0 -1
- package/dist/capabilities/statusCapability.d.ts +0 -4
- package/dist/capabilities/statusCapability.d.ts.map +0 -1
- package/dist/capabilities/statusCapability.js +0 -92
- package/dist/capabilities/statusCapability.js.map +0 -1
- package/dist/capabilities/taskManagementCapability.d.ts +0 -12
- package/dist/capabilities/taskManagementCapability.d.ts.map +0 -1
- package/dist/capabilities/taskManagementCapability.js +0 -22
- package/dist/capabilities/taskManagementCapability.js.map +0 -1
- package/dist/capabilities/testingCapability.d.ts +0 -13
- package/dist/capabilities/testingCapability.d.ts.map +0 -1
- package/dist/capabilities/testingCapability.js +0 -25
- package/dist/capabilities/testingCapability.js.map +0 -1
- package/dist/capabilities/todoCapability.d.ts +0 -19
- package/dist/capabilities/todoCapability.d.ts.map +0 -1
- package/dist/capabilities/todoCapability.js +0 -169
- package/dist/capabilities/todoCapability.js.map +0 -1
- package/dist/capabilities/toolManifest.d.ts +0 -3
- package/dist/capabilities/toolManifest.d.ts.map +0 -1
- package/dist/capabilities/toolManifest.js +0 -160
- package/dist/capabilities/toolManifest.js.map +0 -1
- package/dist/capabilities/toolRegistry.d.ts +0 -24
- package/dist/capabilities/toolRegistry.d.ts.map +0 -1
- package/dist/capabilities/toolRegistry.js +0 -150
- package/dist/capabilities/toolRegistry.js.map +0 -1
- package/dist/capabilities/validationCapability.d.ts +0 -13
- package/dist/capabilities/validationCapability.d.ts.map +0 -1
- package/dist/capabilities/validationCapability.js +0 -24
- package/dist/capabilities/validationCapability.js.map +0 -1
- package/dist/capabilities/webCapability.d.ts +0 -12
- package/dist/capabilities/webCapability.d.ts.map +0 -1
- package/dist/capabilities/webCapability.js +0 -22
- package/dist/capabilities/webCapability.js.map +0 -1
- package/dist/config.d.ts +0 -25
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -140
- package/dist/config.js.map +0 -1
- package/dist/contracts/v1/agent.d.ts +0 -147
- package/dist/contracts/v1/agent.d.ts.map +0 -1
- package/dist/contracts/v1/agent.js +0 -8
- package/dist/contracts/v1/agent.js.map +0 -1
- package/dist/contracts/v1/agentProfileManifest.d.ts +0 -60
- package/dist/contracts/v1/agentProfileManifest.d.ts.map +0 -1
- package/dist/contracts/v1/agentProfileManifest.js +0 -9
- package/dist/contracts/v1/agentProfileManifest.js.map +0 -1
- package/dist/contracts/v1/agentRules.d.ts +0 -60
- package/dist/contracts/v1/agentRules.d.ts.map +0 -1
- package/dist/contracts/v1/agentRules.js +0 -10
- package/dist/contracts/v1/agentRules.js.map +0 -1
- package/dist/contracts/v1/provider.d.ts +0 -149
- package/dist/contracts/v1/provider.d.ts.map +0 -1
- package/dist/contracts/v1/provider.js +0 -7
- package/dist/contracts/v1/provider.js.map +0 -1
- package/dist/contracts/v1/tool.d.ts +0 -136
- package/dist/contracts/v1/tool.d.ts.map +0 -1
- package/dist/contracts/v1/tool.js +0 -7
- package/dist/contracts/v1/tool.js.map +0 -1
- package/dist/contracts/v1/toolAccess.d.ts +0 -43
- package/dist/contracts/v1/toolAccess.d.ts.map +0 -1
- package/dist/contracts/v1/toolAccess.js +0 -9
- package/dist/contracts/v1/toolAccess.js.map +0 -1
- package/dist/core/LazyLoader.d.ts +0 -129
- package/dist/core/LazyLoader.d.ts.map +0 -1
- package/dist/core/LazyLoader.js +0 -240
- package/dist/core/LazyLoader.js.map +0 -1
- package/dist/core/agent.d.ts +0 -153
- package/dist/core/agent.d.ts.map +0 -1
- package/dist/core/agent.js +0 -889
- package/dist/core/agent.js.map +0 -1
- package/dist/core/agentProfileManifest.d.ts +0 -3
- package/dist/core/agentProfileManifest.d.ts.map +0 -1
- package/dist/core/agentProfileManifest.js +0 -188
- package/dist/core/agentProfileManifest.js.map +0 -1
- package/dist/core/agentProfiles.d.ts +0 -22
- package/dist/core/agentProfiles.d.ts.map +0 -1
- package/dist/core/agentProfiles.js +0 -35
- package/dist/core/agentProfiles.js.map +0 -1
- package/dist/core/agentRulebook.d.ts +0 -11
- package/dist/core/agentRulebook.d.ts.map +0 -1
- package/dist/core/agentRulebook.js +0 -136
- package/dist/core/agentRulebook.js.map +0 -1
- package/dist/core/agentSchemaLoader.d.ts +0 -131
- package/dist/core/agentSchemaLoader.d.ts.map +0 -1
- package/dist/core/agentSchemaLoader.js +0 -234
- package/dist/core/agentSchemaLoader.js.map +0 -1
- package/dist/core/aiErrorFixer.d.ts +0 -70
- package/dist/core/aiErrorFixer.d.ts.map +0 -1
- package/dist/core/aiErrorFixer.js +0 -402
- package/dist/core/aiErrorFixer.js.map +0 -1
- package/dist/core/alphaZeroEngine.d.ts +0 -269
- package/dist/core/alphaZeroEngine.d.ts.map +0 -1
- package/dist/core/alphaZeroEngine.js +0 -523
- package/dist/core/alphaZeroEngine.js.map +0 -1
- package/dist/core/alphaZeroModular.d.ts +0 -186
- package/dist/core/alphaZeroModular.d.ts.map +0 -1
- package/dist/core/alphaZeroModular.js +0 -755
- package/dist/core/alphaZeroModular.js.map +0 -1
- package/dist/core/alphaZeroOrchestrator.d.ts +0 -140
- package/dist/core/alphaZeroOrchestrator.d.ts.map +0 -1
- package/dist/core/alphaZeroOrchestrator.js +0 -418
- package/dist/core/alphaZeroOrchestrator.js.map +0 -1
- package/dist/core/bashCommandGuidance.d.ts +0 -16
- package/dist/core/bashCommandGuidance.d.ts.map +0 -1
- package/dist/core/bashCommandGuidance.js +0 -40
- package/dist/core/bashCommandGuidance.js.map +0 -1
- package/dist/core/checkpoint.d.ts +0 -76
- package/dist/core/checkpoint.d.ts.map +0 -1
- package/dist/core/checkpoint.js +0 -278
- package/dist/core/checkpoint.js.map +0 -1
- package/dist/core/cliTestHarness.d.ts +0 -200
- package/dist/core/cliTestHarness.d.ts.map +0 -1
- package/dist/core/cliTestHarness.js +0 -549
- package/dist/core/cliTestHarness.js.map +0 -1
- package/dist/core/contextManager.d.ts +0 -265
- package/dist/core/contextManager.d.ts.map +0 -1
- package/dist/core/contextManager.js +0 -1060
- package/dist/core/contextManager.js.map +0 -1
- package/dist/core/contextWindow.d.ts +0 -42
- package/dist/core/contextWindow.d.ts.map +0 -1
- package/dist/core/contextWindow.js +0 -123
- package/dist/core/contextWindow.js.map +0 -1
- package/dist/core/costTracker.d.ts +0 -87
- package/dist/core/costTracker.d.ts.map +0 -1
- package/dist/core/costTracker.js +0 -285
- package/dist/core/costTracker.js.map +0 -1
- package/dist/core/customCommands.d.ts +0 -19
- package/dist/core/customCommands.d.ts.map +0 -1
- package/dist/core/customCommands.js +0 -84
- package/dist/core/customCommands.js.map +0 -1
- package/dist/core/errors/apiKeyErrors.d.ts +0 -11
- package/dist/core/errors/apiKeyErrors.d.ts.map +0 -1
- package/dist/core/errors/apiKeyErrors.js +0 -159
- package/dist/core/errors/apiKeyErrors.js.map +0 -1
- package/dist/core/errors/errorTypes.d.ts +0 -111
- package/dist/core/errors/errorTypes.d.ts.map +0 -1
- package/dist/core/errors/errorTypes.js +0 -348
- package/dist/core/errors/errorTypes.js.map +0 -1
- package/dist/core/errors/errorUtils.d.ts +0 -87
- package/dist/core/errors/errorUtils.d.ts.map +0 -1
- package/dist/core/errors/errorUtils.js +0 -158
- package/dist/core/errors/errorUtils.js.map +0 -1
- package/dist/core/errors/safetyValidator.d.ts +0 -71
- package/dist/core/errors/safetyValidator.d.ts.map +0 -1
- package/dist/core/errors/safetyValidator.js +0 -302
- package/dist/core/errors/safetyValidator.js.map +0 -1
- package/dist/core/errors.d.ts +0 -4
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js +0 -33
- package/dist/core/errors.js.map +0 -1
- package/dist/core/failureRecovery.d.ts +0 -122
- package/dist/core/failureRecovery.d.ts.map +0 -1
- package/dist/core/failureRecovery.js +0 -477
- package/dist/core/failureRecovery.js.map +0 -1
- package/dist/core/hooks.d.ts +0 -113
- package/dist/core/hooks.d.ts.map +0 -1
- package/dist/core/hooks.js +0 -267
- package/dist/core/hooks.js.map +0 -1
- package/dist/core/intelligentTestFlows.d.ts +0 -126
- package/dist/core/intelligentTestFlows.d.ts.map +0 -1
- package/dist/core/intelligentTestFlows.js +0 -678
- package/dist/core/intelligentTestFlows.js.map +0 -1
- package/dist/core/isolatedVerifier.d.ts +0 -40
- package/dist/core/isolatedVerifier.d.ts.map +0 -1
- package/dist/core/isolatedVerifier.js +0 -129
- package/dist/core/isolatedVerifier.js.map +0 -1
- package/dist/core/learningPersistence.d.ts +0 -145
- package/dist/core/learningPersistence.d.ts.map +0 -1
- package/dist/core/learningPersistence.js +0 -477
- package/dist/core/learningPersistence.js.map +0 -1
- package/dist/core/memorySystem.d.ts +0 -67
- package/dist/core/memorySystem.d.ts.map +0 -1
- package/dist/core/memorySystem.js +0 -334
- package/dist/core/memorySystem.js.map +0 -1
- package/dist/core/metricsTracker.d.ts +0 -157
- package/dist/core/metricsTracker.d.ts.map +0 -1
- package/dist/core/metricsTracker.js +0 -273
- package/dist/core/metricsTracker.js.map +0 -1
- package/dist/core/modelDiscovery.d.ts +0 -101
- package/dist/core/modelDiscovery.d.ts.map +0 -1
- package/dist/core/modelDiscovery.js +0 -780
- package/dist/core/modelDiscovery.js.map +0 -1
- package/dist/core/multilinePasteHandler.d.ts +0 -35
- package/dist/core/multilinePasteHandler.d.ts.map +0 -1
- package/dist/core/multilinePasteHandler.js +0 -80
- package/dist/core/multilinePasteHandler.js.map +0 -1
- package/dist/core/offsecAlphaZero.d.ts +0 -56
- package/dist/core/offsecAlphaZero.d.ts.map +0 -1
- package/dist/core/offsecAlphaZero.js +0 -395
- package/dist/core/offsecAlphaZero.js.map +0 -1
- package/dist/core/outputStyles.d.ts +0 -48
- package/dist/core/outputStyles.d.ts.map +0 -1
- package/dist/core/outputStyles.js +0 -270
- package/dist/core/outputStyles.js.map +0 -1
- package/dist/core/performanceMonitor.d.ts +0 -124
- package/dist/core/performanceMonitor.d.ts.map +0 -1
- package/dist/core/performanceMonitor.js +0 -192
- package/dist/core/performanceMonitor.js.map +0 -1
- package/dist/core/preferences.d.ts +0 -69
- package/dist/core/preferences.d.ts.map +0 -1
- package/dist/core/preferences.js +0 -316
- package/dist/core/preferences.js.map +0 -1
- package/dist/core/responseVerifier.d.ts +0 -98
- package/dist/core/responseVerifier.d.ts.map +0 -1
- package/dist/core/responseVerifier.js +0 -509
- package/dist/core/responseVerifier.js.map +0 -1
- package/dist/core/resultVerification.d.ts +0 -141
- package/dist/core/resultVerification.d.ts.map +0 -1
- package/dist/core/resultVerification.js +0 -482
- package/dist/core/resultVerification.js.map +0 -1
- package/dist/core/schemaValidator.d.ts +0 -44
- package/dist/core/schemaValidator.d.ts.map +0 -1
- package/dist/core/schemaValidator.js +0 -155
- package/dist/core/schemaValidator.js.map +0 -1
- package/dist/core/secretStore.d.ts +0 -48
- package/dist/core/secretStore.d.ts.map +0 -1
- package/dist/core/secretStore.js +0 -367
- package/dist/core/secretStore.js.map +0 -1
- package/dist/core/securityAssessment.d.ts +0 -91
- package/dist/core/securityAssessment.d.ts.map +0 -1
- package/dist/core/securityAssessment.js +0 -580
- package/dist/core/securityAssessment.js.map +0 -1
- package/dist/core/selfEvolution.d.ts +0 -155
- package/dist/core/selfEvolution.d.ts.map +0 -1
- package/dist/core/selfEvolution.js +0 -1000
- package/dist/core/selfEvolution.js.map +0 -1
- package/dist/core/selfImprovement.d.ts +0 -141
- package/dist/core/selfImprovement.d.ts.map +0 -1
- package/dist/core/selfImprovement.js +0 -700
- package/dist/core/selfImprovement.js.map +0 -1
- package/dist/core/sessionStore.d.ts +0 -35
- package/dist/core/sessionStore.d.ts.map +0 -1
- package/dist/core/sessionStore.js +0 -189
- package/dist/core/sessionStore.js.map +0 -1
- package/dist/core/testUtils.d.ts +0 -121
- package/dist/core/testUtils.d.ts.map +0 -1
- package/dist/core/testUtils.js +0 -235
- package/dist/core/testUtils.js.map +0 -1
- package/dist/core/toolPreconditions.d.ts +0 -42
- package/dist/core/toolPreconditions.d.ts.map +0 -1
- package/dist/core/toolPreconditions.js +0 -347
- package/dist/core/toolPreconditions.js.map +0 -1
- package/dist/core/toolRuntime.d.ts +0 -163
- package/dist/core/toolRuntime.d.ts.map +0 -1
- package/dist/core/toolRuntime.js +0 -439
- package/dist/core/toolRuntime.js.map +0 -1
- package/dist/core/toolValidation.d.ts +0 -116
- package/dist/core/toolValidation.d.ts.map +0 -1
- package/dist/core/toolValidation.js +0 -282
- package/dist/core/toolValidation.js.map +0 -1
- package/dist/core/types/utilityTypes.d.ts +0 -192
- package/dist/core/types/utilityTypes.d.ts.map +0 -1
- package/dist/core/types/utilityTypes.js +0 -272
- package/dist/core/types/utilityTypes.js.map +0 -1
- package/dist/core/types.d.ts +0 -306
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -76
- package/dist/core/types.js.map +0 -1
- package/dist/core/validationRunner.d.ts +0 -106
- package/dist/core/validationRunner.d.ts.map +0 -1
- package/dist/core/validationRunner.js +0 -888
- package/dist/core/validationRunner.js.map +0 -1
- package/dist/core/verification.d.ts +0 -137
- package/dist/core/verification.d.ts.map +0 -1
- package/dist/core/verification.js +0 -323
- package/dist/core/verification.js.map +0 -1
- package/dist/headless/headlessApp.d.ts +0 -5
- package/dist/headless/headlessApp.d.ts.map +0 -1
- package/dist/headless/headlessApp.js +0 -210
- package/dist/headless/headlessApp.js.map +0 -1
- package/dist/intelligence/codeIntelligence.d.ts +0 -118
- package/dist/intelligence/codeIntelligence.d.ts.map +0 -1
- package/dist/intelligence/codeIntelligence.js +0 -552
- package/dist/intelligence/codeIntelligence.js.map +0 -1
- package/dist/intelligence/docGenerator.d.ts +0 -86
- package/dist/intelligence/docGenerator.d.ts.map +0 -1
- package/dist/intelligence/docGenerator.js +0 -564
- package/dist/intelligence/docGenerator.js.map +0 -1
- package/dist/intelligence/index.d.ts +0 -51
- package/dist/intelligence/index.d.ts.map +0 -1
- package/dist/intelligence/index.js +0 -253
- package/dist/intelligence/index.js.map +0 -1
- package/dist/intelligence/refactoring.d.ts +0 -50
- package/dist/intelligence/refactoring.d.ts.map +0 -1
- package/dist/intelligence/refactoring.js +0 -354
- package/dist/intelligence/refactoring.js.map +0 -1
- package/dist/intelligence/testGenerator.d.ts +0 -74
- package/dist/intelligence/testGenerator.d.ts.map +0 -1
- package/dist/intelligence/testGenerator.js +0 -483
- package/dist/intelligence/testGenerator.js.map +0 -1
- package/dist/mcp/config.d.ts +0 -8
- package/dist/mcp/config.d.ts.map +0 -1
- package/dist/mcp/config.js +0 -252
- package/dist/mcp/config.js.map +0 -1
- package/dist/mcp/sseClient.d.ts +0 -34
- package/dist/mcp/sseClient.d.ts.map +0 -1
- package/dist/mcp/sseClient.js +0 -327
- package/dist/mcp/sseClient.js.map +0 -1
- package/dist/mcp/stdioClient.d.ts +0 -24
- package/dist/mcp/stdioClient.d.ts.map +0 -1
- package/dist/mcp/stdioClient.js +0 -179
- package/dist/mcp/stdioClient.js.map +0 -1
- package/dist/mcp/toolBridge.d.ts +0 -12
- package/dist/mcp/toolBridge.d.ts.map +0 -1
- package/dist/mcp/toolBridge.js +0 -117
- package/dist/mcp/toolBridge.js.map +0 -1
- package/dist/mcp/types.d.ts +0 -60
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js +0 -2
- package/dist/mcp/types.js.map +0 -1
- package/dist/plugins/index.d.ts +0 -49
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -114
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/providers/anthropic/index.d.ts +0 -11
- package/dist/plugins/providers/anthropic/index.d.ts.map +0 -1
- package/dist/plugins/providers/anthropic/index.js +0 -38
- package/dist/plugins/providers/anthropic/index.js.map +0 -1
- package/dist/plugins/providers/deepseek/index.d.ts +0 -11
- package/dist/plugins/providers/deepseek/index.d.ts.map +0 -1
- package/dist/plugins/providers/deepseek/index.js +0 -52
- package/dist/plugins/providers/deepseek/index.js.map +0 -1
- package/dist/plugins/providers/google/index.d.ts +0 -11
- package/dist/plugins/providers/google/index.d.ts.map +0 -1
- package/dist/plugins/providers/google/index.js +0 -40
- package/dist/plugins/providers/google/index.js.map +0 -1
- package/dist/plugins/providers/index.d.ts +0 -2
- package/dist/plugins/providers/index.d.ts.map +0 -1
- package/dist/plugins/providers/index.js +0 -20
- package/dist/plugins/providers/index.js.map +0 -1
- package/dist/plugins/providers/ollama/index.d.ts +0 -21
- package/dist/plugins/providers/ollama/index.d.ts.map +0 -1
- package/dist/plugins/providers/ollama/index.js +0 -69
- package/dist/plugins/providers/ollama/index.js.map +0 -1
- package/dist/plugins/providers/openai/index.d.ts +0 -12
- package/dist/plugins/providers/openai/index.d.ts.map +0 -1
- package/dist/plugins/providers/openai/index.js +0 -39
- package/dist/plugins/providers/openai/index.js.map +0 -1
- package/dist/plugins/providers/xai/index.d.ts +0 -11
- package/dist/plugins/providers/xai/index.d.ts.map +0 -1
- package/dist/plugins/providers/xai/index.js +0 -39
- package/dist/plugins/providers/xai/index.js.map +0 -1
- package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts +0 -3
- package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js +0 -9
- package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js.map +0 -1
- package/dist/plugins/tools/bash/localBashPlugin.d.ts +0 -3
- package/dist/plugins/tools/bash/localBashPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/bash/localBashPlugin.js +0 -14
- package/dist/plugins/tools/bash/localBashPlugin.js.map +0 -1
- package/dist/plugins/tools/browser/browserAutomationPlugin.d.ts +0 -14
- package/dist/plugins/tools/browser/browserAutomationPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/browser/browserAutomationPlugin.js +0 -26
- package/dist/plugins/tools/browser/browserAutomationPlugin.js.map +0 -1
- package/dist/plugins/tools/checks/localRepoChecksPlugin.d.ts +0 -3
- package/dist/plugins/tools/checks/localRepoChecksPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/checks/localRepoChecksPlugin.js +0 -14
- package/dist/plugins/tools/checks/localRepoChecksPlugin.js.map +0 -1
- package/dist/plugins/tools/cloud/cloudPlugin.d.ts +0 -3
- package/dist/plugins/tools/cloud/cloudPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/cloud/cloudPlugin.js +0 -14
- package/dist/plugins/tools/cloud/cloudPlugin.js.map +0 -1
- package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.d.ts +0 -3
- package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.js +0 -14
- package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.js.map +0 -1
- package/dist/plugins/tools/codeQuality/codeQualityPlugin.d.ts +0 -3
- package/dist/plugins/tools/codeQuality/codeQualityPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/codeQuality/codeQualityPlugin.js +0 -14
- package/dist/plugins/tools/codeQuality/codeQualityPlugin.js.map +0 -1
- package/dist/plugins/tools/dependency/dependencyPlugin.d.ts +0 -3
- package/dist/plugins/tools/dependency/dependencyPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/dependency/dependencyPlugin.js +0 -12
- package/dist/plugins/tools/dependency/dependencyPlugin.js.map +0 -1
- package/dist/plugins/tools/development/devPlugin.d.ts +0 -3
- package/dist/plugins/tools/development/devPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/development/devPlugin.js +0 -14
- package/dist/plugins/tools/development/devPlugin.js.map +0 -1
- package/dist/plugins/tools/edit/editPlugin.d.ts +0 -9
- package/dist/plugins/tools/edit/editPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/edit/editPlugin.js +0 -15
- package/dist/plugins/tools/edit/editPlugin.js.map +0 -1
- package/dist/plugins/tools/email/emailPlugin.d.ts +0 -3
- package/dist/plugins/tools/email/emailPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/email/emailPlugin.js +0 -12
- package/dist/plugins/tools/email/emailPlugin.js.map +0 -1
- package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts +0 -3
- package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js +0 -9
- package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js.map +0 -1
- package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts +0 -3
- package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/filesystem/localFilesystemPlugin.js +0 -14
- package/dist/plugins/tools/filesystem/localFilesystemPlugin.js.map +0 -1
- package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.d.ts +0 -3
- package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.js +0 -14
- package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.js.map +0 -1
- package/dist/plugins/tools/glob/globPlugin.d.ts +0 -9
- package/dist/plugins/tools/glob/globPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/glob/globPlugin.js +0 -15
- package/dist/plugins/tools/glob/globPlugin.js.map +0 -1
- package/dist/plugins/tools/index.d.ts +0 -3
- package/dist/plugins/tools/index.d.ts.map +0 -1
- package/dist/plugins/tools/index.js +0 -3
- package/dist/plugins/tools/index.js.map +0 -1
- package/dist/plugins/tools/interaction/interactionPlugin.d.ts +0 -3
- package/dist/plugins/tools/interaction/interactionPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/interaction/interactionPlugin.js +0 -12
- package/dist/plugins/tools/interaction/interactionPlugin.js.map +0 -1
- package/dist/plugins/tools/learn/learnPlugin.d.ts +0 -3
- package/dist/plugins/tools/learn/learnPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/learn/learnPlugin.js +0 -14
- package/dist/plugins/tools/learn/learnPlugin.js.map +0 -1
- package/dist/plugins/tools/mcp/mcpPlugin.d.ts +0 -3
- package/dist/plugins/tools/mcp/mcpPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/mcp/mcpPlugin.js +0 -9
- package/dist/plugins/tools/mcp/mcpPlugin.js.map +0 -1
- package/dist/plugins/tools/nodeDefaults.d.ts +0 -2
- package/dist/plugins/tools/nodeDefaults.d.ts.map +0 -1
- package/dist/plugins/tools/nodeDefaults.js +0 -65
- package/dist/plugins/tools/nodeDefaults.js.map +0 -1
- package/dist/plugins/tools/notebook/notebookPlugin.d.ts +0 -9
- package/dist/plugins/tools/notebook/notebookPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/notebook/notebookPlugin.js +0 -15
- package/dist/plugins/tools/notebook/notebookPlugin.js.map +0 -1
- package/dist/plugins/tools/planning/planningPlugin.d.ts +0 -9
- package/dist/plugins/tools/planning/planningPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/planning/planningPlugin.js +0 -15
- package/dist/plugins/tools/planning/planningPlugin.js.map +0 -1
- package/dist/plugins/tools/refactoring/refactoringPlugin.d.ts +0 -3
- package/dist/plugins/tools/refactoring/refactoringPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/refactoring/refactoringPlugin.js +0 -12
- package/dist/plugins/tools/refactoring/refactoringPlugin.js.map +0 -1
- package/dist/plugins/tools/registry.d.ts +0 -22
- package/dist/plugins/tools/registry.d.ts.map +0 -1
- package/dist/plugins/tools/registry.js +0 -58
- package/dist/plugins/tools/registry.js.map +0 -1
- package/dist/plugins/tools/search/localSearchPlugin.d.ts +0 -3
- package/dist/plugins/tools/search/localSearchPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/search/localSearchPlugin.js +0 -14
- package/dist/plugins/tools/search/localSearchPlugin.js.map +0 -1
- package/dist/plugins/tools/skills/skillPlugin.d.ts +0 -3
- package/dist/plugins/tools/skills/skillPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/skills/skillPlugin.js +0 -9
- package/dist/plugins/tools/skills/skillPlugin.js.map +0 -1
- package/dist/plugins/tools/taskManagement/taskManagementPlugin.d.ts +0 -3
- package/dist/plugins/tools/taskManagement/taskManagementPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/taskManagement/taskManagementPlugin.js +0 -12
- package/dist/plugins/tools/taskManagement/taskManagementPlugin.js.map +0 -1
- package/dist/plugins/tools/testing/testingPlugin.d.ts +0 -3
- package/dist/plugins/tools/testing/testingPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/testing/testingPlugin.js +0 -12
- package/dist/plugins/tools/testing/testingPlugin.js.map +0 -1
- package/dist/plugins/tools/validation/validationPlugin.d.ts +0 -3
- package/dist/plugins/tools/validation/validationPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/validation/validationPlugin.js +0 -14
- package/dist/plugins/tools/validation/validationPlugin.js.map +0 -1
- package/dist/plugins/tools/web/webPlugin.d.ts +0 -3
- package/dist/plugins/tools/web/webPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/web/webPlugin.js +0 -12
- package/dist/plugins/tools/web/webPlugin.js.map +0 -1
- package/dist/providers/anthropicProvider.d.ts +0 -41
- package/dist/providers/anthropicProvider.d.ts.map +0 -1
- package/dist/providers/anthropicProvider.js +0 -446
- package/dist/providers/anthropicProvider.js.map +0 -1
- package/dist/providers/googleProvider.d.ts +0 -36
- package/dist/providers/googleProvider.d.ts.map +0 -1
- package/dist/providers/googleProvider.js +0 -312
- package/dist/providers/googleProvider.js.map +0 -1
- package/dist/providers/openaiChatCompletionsProvider.d.ts +0 -43
- package/dist/providers/openaiChatCompletionsProvider.d.ts.map +0 -1
- package/dist/providers/openaiChatCompletionsProvider.js +0 -516
- package/dist/providers/openaiChatCompletionsProvider.js.map +0 -1
- package/dist/providers/openaiResponsesProvider.d.ts +0 -38
- package/dist/providers/openaiResponsesProvider.d.ts.map +0 -1
- package/dist/providers/openaiResponsesProvider.js +0 -364
- package/dist/providers/openaiResponsesProvider.js.map +0 -1
- package/dist/providers/providerFactory.d.ts +0 -18
- package/dist/providers/providerFactory.d.ts.map +0 -1
- package/dist/providers/providerFactory.js +0 -25
- package/dist/providers/providerFactory.js.map +0 -1
- package/dist/providers/resilientProvider.d.ts +0 -94
- package/dist/providers/resilientProvider.d.ts.map +0 -1
- package/dist/providers/resilientProvider.js +0 -370
- package/dist/providers/resilientProvider.js.map +0 -1
- package/dist/runtime/agentController.d.ts +0 -65
- package/dist/runtime/agentController.d.ts.map +0 -1
- package/dist/runtime/agentController.js +0 -353
- package/dist/runtime/agentController.js.map +0 -1
- package/dist/runtime/agentHost.d.ts +0 -61
- package/dist/runtime/agentHost.d.ts.map +0 -1
- package/dist/runtime/agentHost.js +0 -156
- package/dist/runtime/agentHost.js.map +0 -1
- package/dist/runtime/agentSession.d.ts +0 -40
- package/dist/runtime/agentSession.d.ts.map +0 -1
- package/dist/runtime/agentSession.js +0 -205
- package/dist/runtime/agentSession.js.map +0 -1
- package/dist/runtime/browser.d.ts +0 -7
- package/dist/runtime/browser.d.ts.map +0 -1
- package/dist/runtime/browser.js +0 -10
- package/dist/runtime/browser.js.map +0 -1
- package/dist/runtime/cloud.d.ts +0 -7
- package/dist/runtime/cloud.d.ts.map +0 -1
- package/dist/runtime/cloud.js +0 -10
- package/dist/runtime/cloud.js.map +0 -1
- package/dist/runtime/node.d.ts +0 -8
- package/dist/runtime/node.d.ts.map +0 -1
- package/dist/runtime/node.js +0 -11
- package/dist/runtime/node.js.map +0 -1
- package/dist/runtime/universal.d.ts +0 -21
- package/dist/runtime/universal.d.ts.map +0 -1
- package/dist/runtime/universal.js +0 -29
- package/dist/runtime/universal.js.map +0 -1
- package/dist/shell/autoExecutor.d.ts +0 -70
- package/dist/shell/autoExecutor.d.ts.map +0 -1
- package/dist/shell/autoExecutor.js +0 -288
- package/dist/shell/autoExecutor.js.map +0 -1
- package/dist/shell/composableMessage.d.ts +0 -183
- package/dist/shell/composableMessage.d.ts.map +0 -1
- package/dist/shell/composableMessage.js +0 -420
- package/dist/shell/composableMessage.js.map +0 -1
- package/dist/shell/fileChangeTracker.d.ts +0 -39
- package/dist/shell/fileChangeTracker.d.ts.map +0 -1
- package/dist/shell/fileChangeTracker.js +0 -64
- package/dist/shell/fileChangeTracker.js.map +0 -1
- package/dist/shell/interactiveShell.d.ts +0 -517
- package/dist/shell/interactiveShell.d.ts.map +0 -1
- package/dist/shell/interactiveShell.js +0 -6646
- package/dist/shell/interactiveShell.js.map +0 -1
- package/dist/shell/liveStatus.d.ts +0 -30
- package/dist/shell/liveStatus.d.ts.map +0 -1
- package/dist/shell/liveStatus.js +0 -102
- package/dist/shell/liveStatus.js.map +0 -1
- package/dist/shell/shellApp.d.ts +0 -19
- package/dist/shell/shellApp.d.ts.map +0 -1
- package/dist/shell/shellApp.js +0 -411
- package/dist/shell/shellApp.js.map +0 -1
- package/dist/shell/systemPrompt.d.ts +0 -3
- package/dist/shell/systemPrompt.d.ts.map +0 -1
- package/dist/shell/systemPrompt.js +0 -64
- package/dist/shell/systemPrompt.js.map +0 -1
- package/dist/shell/taskCompletionDetector.d.ts +0 -106
- package/dist/shell/taskCompletionDetector.d.ts.map +0 -1
- package/dist/shell/taskCompletionDetector.js +0 -402
- package/dist/shell/taskCompletionDetector.js.map +0 -1
- package/dist/shell/terminalInputAdapter.d.ts +0 -262
- package/dist/shell/terminalInputAdapter.d.ts.map +0 -1
- package/dist/shell/terminalInputAdapter.js +0 -346
- package/dist/shell/terminalInputAdapter.js.map +0 -1
- package/dist/shell/vimMode.d.ts +0 -66
- package/dist/shell/vimMode.d.ts.map +0 -1
- package/dist/shell/vimMode.js +0 -434
- package/dist/shell/vimMode.js.map +0 -1
- package/dist/skills/skillRepository.d.ts +0 -103
- package/dist/skills/skillRepository.d.ts.map +0 -1
- package/dist/skills/skillRepository.js +0 -237
- package/dist/skills/skillRepository.js.map +0 -1
- package/dist/skills/types.d.ts +0 -37
- package/dist/skills/types.d.ts.map +0 -1
- package/dist/skills/types.js +0 -2
- package/dist/skills/types.js.map +0 -1
- package/dist/subagents/agentConfig.d.ts +0 -27
- package/dist/subagents/agentConfig.d.ts.map +0 -1
- package/dist/subagents/agentConfig.js +0 -89
- package/dist/subagents/agentConfig.js.map +0 -1
- package/dist/subagents/agentRegistry.d.ts +0 -33
- package/dist/subagents/agentRegistry.d.ts.map +0 -1
- package/dist/subagents/agentRegistry.js +0 -162
- package/dist/subagents/agentRegistry.js.map +0 -1
- package/dist/subagents/parallelAgentManager.d.ts +0 -99
- package/dist/subagents/parallelAgentManager.d.ts.map +0 -1
- package/dist/subagents/parallelAgentManager.js +0 -248
- package/dist/subagents/parallelAgentManager.js.map +0 -1
- package/dist/subagents/taskRunner.d.ts +0 -34
- package/dist/subagents/taskRunner.d.ts.map +0 -1
- package/dist/subagents/taskRunner.js +0 -459
- package/dist/subagents/taskRunner.js.map +0 -1
- package/dist/tools/advancedTestGenerationTools.d.ts +0 -21
- package/dist/tools/advancedTestGenerationTools.d.ts.map +0 -1
- package/dist/tools/advancedTestGenerationTools.js +0 -301
- package/dist/tools/advancedTestGenerationTools.js.map +0 -1
- package/dist/tools/backgroundBashTools.d.ts +0 -21
- package/dist/tools/backgroundBashTools.d.ts.map +0 -1
- package/dist/tools/backgroundBashTools.js +0 -215
- package/dist/tools/backgroundBashTools.js.map +0 -1
- package/dist/tools/bashTools.d.ts +0 -8
- package/dist/tools/bashTools.d.ts.map +0 -1
- package/dist/tools/bashTools.js +0 -240
- package/dist/tools/bashTools.js.map +0 -1
- package/dist/tools/browserAutomationTools.d.ts +0 -23
- package/dist/tools/browserAutomationTools.d.ts.map +0 -1
- package/dist/tools/browserAutomationTools.js +0 -916
- package/dist/tools/browserAutomationTools.js.map +0 -1
- package/dist/tools/buildTools.d.ts +0 -9
- package/dist/tools/buildTools.d.ts.map +0 -1
- package/dist/tools/buildTools.js +0 -344
- package/dist/tools/buildTools.js.map +0 -1
- package/dist/tools/cloudTools.d.ts +0 -49
- package/dist/tools/cloudTools.d.ts.map +0 -1
- package/dist/tools/cloudTools.js +0 -1258
- package/dist/tools/cloudTools.js.map +0 -1
- package/dist/tools/code-quality-dashboard.d.ts +0 -57
- package/dist/tools/code-quality-dashboard.d.ts.map +0 -1
- package/dist/tools/code-quality-dashboard.js +0 -218
- package/dist/tools/code-quality-dashboard.js.map +0 -1
- package/dist/tools/codeAnalysisTools.d.ts +0 -74
- package/dist/tools/codeAnalysisTools.d.ts.map +0 -1
- package/dist/tools/codeAnalysisTools.js +0 -664
- package/dist/tools/codeAnalysisTools.js.map +0 -1
- package/dist/tools/codeGenerationTools.d.ts +0 -3
- package/dist/tools/codeGenerationTools.d.ts.map +0 -1
- package/dist/tools/codeGenerationTools.js +0 -439
- package/dist/tools/codeGenerationTools.js.map +0 -1
- package/dist/tools/codeQualityTools.d.ts +0 -3
- package/dist/tools/codeQualityTools.d.ts.map +0 -1
- package/dist/tools/codeQualityTools.js +0 -296
- package/dist/tools/codeQualityTools.js.map +0 -1
- package/dist/tools/dependencyTools.d.ts +0 -3
- package/dist/tools/dependencyTools.d.ts.map +0 -1
- package/dist/tools/dependencyTools.js +0 -283
- package/dist/tools/dependencyTools.js.map +0 -1
- package/dist/tools/devTools.d.ts +0 -10
- package/dist/tools/devTools.d.ts.map +0 -1
- package/dist/tools/devTools.js +0 -2125
- package/dist/tools/devTools.js.map +0 -1
- package/dist/tools/diffUtils.d.ts +0 -36
- package/dist/tools/diffUtils.d.ts.map +0 -1
- package/dist/tools/diffUtils.js +0 -528
- package/dist/tools/diffUtils.js.map +0 -1
- package/dist/tools/editTools.d.ts +0 -29
- package/dist/tools/editTools.d.ts.map +0 -1
- package/dist/tools/editTools.js +0 -419
- package/dist/tools/editTools.js.map +0 -1
- package/dist/tools/emailTools.d.ts +0 -21
- package/dist/tools/emailTools.d.ts.map +0 -1
- package/dist/tools/emailTools.js +0 -449
- package/dist/tools/emailTools.js.map +0 -1
- package/dist/tools/enhancedCodeIntelligenceTools.d.ts +0 -27
- package/dist/tools/enhancedCodeIntelligenceTools.d.ts.map +0 -1
- package/dist/tools/enhancedCodeIntelligenceTools.js +0 -418
- package/dist/tools/enhancedCodeIntelligenceTools.js.map +0 -1
- package/dist/tools/enhancedDevWorkflowTools.d.ts +0 -15
- package/dist/tools/enhancedDevWorkflowTools.d.ts.map +0 -1
- package/dist/tools/enhancedDevWorkflowTools.js +0 -303
- package/dist/tools/enhancedDevWorkflowTools.js.map +0 -1
- package/dist/tools/fileTools.d.ts +0 -3
- package/dist/tools/fileTools.d.ts.map +0 -1
- package/dist/tools/fileTools.js +0 -334
- package/dist/tools/fileTools.js.map +0 -1
- package/dist/tools/frontendTestingTools.d.ts +0 -35
- package/dist/tools/frontendTestingTools.d.ts.map +0 -1
- package/dist/tools/frontendTestingTools.js +0 -1254
- package/dist/tools/frontendTestingTools.js.map +0 -1
- package/dist/tools/globTools.d.ts +0 -15
- package/dist/tools/globTools.d.ts.map +0 -1
- package/dist/tools/globTools.js +0 -174
- package/dist/tools/globTools.js.map +0 -1
- package/dist/tools/grepTools.d.ts +0 -19
- package/dist/tools/grepTools.d.ts.map +0 -1
- package/dist/tools/grepTools.js +0 -358
- package/dist/tools/grepTools.js.map +0 -1
- package/dist/tools/interactionTools.d.ts +0 -13
- package/dist/tools/interactionTools.d.ts.map +0 -1
- package/dist/tools/interactionTools.js +0 -171
- package/dist/tools/interactionTools.js.map +0 -1
- package/dist/tools/learnTools.d.ts +0 -164
- package/dist/tools/learnTools.d.ts.map +0 -1
- package/dist/tools/learnTools.js +0 -2104
- package/dist/tools/learnTools.js.map +0 -1
- package/dist/tools/localExplore.d.ts +0 -225
- package/dist/tools/localExplore.d.ts.map +0 -1
- package/dist/tools/localExplore.js +0 -1365
- package/dist/tools/localExplore.js.map +0 -1
- package/dist/tools/notebookEditTools.d.ts +0 -15
- package/dist/tools/notebookEditTools.d.ts.map +0 -1
- package/dist/tools/notebookEditTools.js +0 -197
- package/dist/tools/notebookEditTools.js.map +0 -1
- package/dist/tools/planningTools.d.ts +0 -21
- package/dist/tools/planningTools.d.ts.map +0 -1
- package/dist/tools/planningTools.js +0 -185
- package/dist/tools/planningTools.js.map +0 -1
- package/dist/tools/refactoringTools.d.ts +0 -3
- package/dist/tools/refactoringTools.d.ts.map +0 -1
- package/dist/tools/refactoringTools.js +0 -294
- package/dist/tools/refactoringTools.js.map +0 -1
- package/dist/tools/repoChecksTools.d.ts +0 -3
- package/dist/tools/repoChecksTools.d.ts.map +0 -1
- package/dist/tools/repoChecksTools.js +0 -161
- package/dist/tools/repoChecksTools.js.map +0 -1
- package/dist/tools/searchTools.d.ts +0 -3
- package/dist/tools/searchTools.d.ts.map +0 -1
- package/dist/tools/searchTools.js +0 -241
- package/dist/tools/searchTools.js.map +0 -1
- package/dist/tools/skillTools.d.ts +0 -8
- package/dist/tools/skillTools.d.ts.map +0 -1
- package/dist/tools/skillTools.js +0 -178
- package/dist/tools/skillTools.js.map +0 -1
- package/dist/tools/softwareEngineeringTools.d.ts +0 -7
- package/dist/tools/softwareEngineeringTools.d.ts.map +0 -1
- package/dist/tools/softwareEngineeringTools.js +0 -338
- package/dist/tools/softwareEngineeringTools.js.map +0 -1
- package/dist/tools/taskManagementTools.d.ts +0 -10
- package/dist/tools/taskManagementTools.d.ts.map +0 -1
- package/dist/tools/taskManagementTools.js +0 -157
- package/dist/tools/taskManagementTools.js.map +0 -1
- package/dist/tools/testingTools.d.ts +0 -3
- package/dist/tools/testingTools.d.ts.map +0 -1
- package/dist/tools/testingTools.js +0 -233
- package/dist/tools/testingTools.js.map +0 -1
- package/dist/tools/validationTools.d.ts +0 -7
- package/dist/tools/validationTools.d.ts.map +0 -1
- package/dist/tools/validationTools.js +0 -344
- package/dist/tools/validationTools.js.map +0 -1
- package/dist/tools/webTools.d.ts +0 -3
- package/dist/tools/webTools.d.ts.map +0 -1
- package/dist/tools/webTools.js +0 -502
- package/dist/tools/webTools.js.map +0 -1
- package/dist/ui/DisplayEventQueue.d.ts +0 -99
- package/dist/ui/DisplayEventQueue.d.ts.map +0 -1
- package/dist/ui/DisplayEventQueue.js +0 -167
- package/dist/ui/DisplayEventQueue.js.map +0 -1
- package/dist/ui/PromptController.d.ts +0 -103
- package/dist/ui/PromptController.d.ts.map +0 -1
- package/dist/ui/PromptController.js +0 -171
- package/dist/ui/PromptController.js.map +0 -1
- package/dist/ui/SequentialRenderer.d.ts +0 -69
- package/dist/ui/SequentialRenderer.d.ts.map +0 -1
- package/dist/ui/SequentialRenderer.js +0 -137
- package/dist/ui/SequentialRenderer.js.map +0 -1
- package/dist/ui/ShellUIAdapter.d.ts +0 -207
- package/dist/ui/ShellUIAdapter.d.ts.map +0 -1
- package/dist/ui/ShellUIAdapter.js +0 -1163
- package/dist/ui/ShellUIAdapter.js.map +0 -1
- package/dist/ui/UnifiedUIController.d.ts +0 -82
- package/dist/ui/UnifiedUIController.d.ts.map +0 -1
- package/dist/ui/UnifiedUIController.js +0 -207
- package/dist/ui/UnifiedUIController.js.map +0 -1
- package/dist/ui/UnifiedUIRenderer.d.ts +0 -188
- package/dist/ui/UnifiedUIRenderer.d.ts.map +0 -1
- package/dist/ui/UnifiedUIRenderer.js +0 -579
- package/dist/ui/UnifiedUIRenderer.js.map +0 -1
- package/dist/ui/animation/AnimationScheduler.d.ts +0 -192
- package/dist/ui/animation/AnimationScheduler.d.ts.map +0 -1
- package/dist/ui/animation/AnimationScheduler.js +0 -432
- package/dist/ui/animation/AnimationScheduler.js.map +0 -1
- package/dist/ui/codeHighlighter.d.ts +0 -6
- package/dist/ui/codeHighlighter.d.ts.map +0 -1
- package/dist/ui/codeHighlighter.js +0 -855
- package/dist/ui/codeHighlighter.js.map +0 -1
- package/dist/ui/compactRenderer.d.ts +0 -139
- package/dist/ui/compactRenderer.d.ts.map +0 -1
- package/dist/ui/compactRenderer.js +0 -398
- package/dist/ui/compactRenderer.js.map +0 -1
- package/dist/ui/designSystem.d.ts +0 -26
- package/dist/ui/designSystem.d.ts.map +0 -1
- package/dist/ui/designSystem.js +0 -122
- package/dist/ui/designSystem.js.map +0 -1
- package/dist/ui/display.d.ts +0 -229
- package/dist/ui/display.d.ts.map +0 -1
- package/dist/ui/display.js +0 -756
- package/dist/ui/display.js.map +0 -1
- package/dist/ui/errorFormatter.d.ts +0 -54
- package/dist/ui/errorFormatter.d.ts.map +0 -1
- package/dist/ui/errorFormatter.js +0 -251
- package/dist/ui/errorFormatter.js.map +0 -1
- package/dist/ui/globalWriteLock.d.ts +0 -38
- package/dist/ui/globalWriteLock.d.ts.map +0 -1
- package/dist/ui/globalWriteLock.js +0 -54
- package/dist/ui/globalWriteLock.js.map +0 -1
- package/dist/ui/inPlaceUpdater.d.ts +0 -181
- package/dist/ui/inPlaceUpdater.d.ts.map +0 -1
- package/dist/ui/inPlaceUpdater.js +0 -515
- package/dist/ui/inPlaceUpdater.js.map +0 -1
- package/dist/ui/interrupts/InterruptManager.d.ts +0 -142
- package/dist/ui/interrupts/InterruptManager.d.ts.map +0 -1
- package/dist/ui/interrupts/InterruptManager.js +0 -439
- package/dist/ui/interrupts/InterruptManager.js.map +0 -1
- package/dist/ui/layout.d.ts +0 -17
- package/dist/ui/layout.d.ts.map +0 -1
- package/dist/ui/layout.js +0 -140
- package/dist/ui/layout.js.map +0 -1
- package/dist/ui/orchestration/StatusOrchestrator.d.ts +0 -156
- package/dist/ui/orchestration/StatusOrchestrator.d.ts.map +0 -1
- package/dist/ui/orchestration/StatusOrchestrator.js +0 -406
- package/dist/ui/orchestration/StatusOrchestrator.js.map +0 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts +0 -77
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +0 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.js +0 -265
- package/dist/ui/orchestration/UIUpdateCoordinator.js.map +0 -1
- package/dist/ui/outputMode.d.ts +0 -22
- package/dist/ui/outputMode.d.ts.map +0 -1
- package/dist/ui/outputMode.js +0 -40
- package/dist/ui/outputMode.js.map +0 -1
- package/dist/ui/richText.d.ts +0 -6
- package/dist/ui/richText.d.ts.map +0 -1
- package/dist/ui/richText.js +0 -391
- package/dist/ui/richText.js.map +0 -1
- package/dist/ui/shortcutsHelp.d.ts +0 -39
- package/dist/ui/shortcutsHelp.d.ts.map +0 -1
- package/dist/ui/shortcutsHelp.js +0 -152
- package/dist/ui/shortcutsHelp.js.map +0 -1
- package/dist/ui/streamingFormatter.d.ts +0 -19
- package/dist/ui/streamingFormatter.d.ts.map +0 -1
- package/dist/ui/streamingFormatter.js +0 -65
- package/dist/ui/streamingFormatter.js.map +0 -1
- package/dist/ui/telemetry/ResponseTracker.d.ts +0 -22
- package/dist/ui/telemetry/ResponseTracker.d.ts.map +0 -1
- package/dist/ui/telemetry/ResponseTracker.js +0 -60
- package/dist/ui/telemetry/ResponseTracker.js.map +0 -1
- package/dist/ui/telemetry/UITelemetry.d.ts +0 -181
- package/dist/ui/telemetry/UITelemetry.d.ts.map +0 -1
- package/dist/ui/telemetry/UITelemetry.js +0 -446
- package/dist/ui/telemetry/UITelemetry.js.map +0 -1
- package/dist/ui/textHighlighter.d.ts +0 -83
- package/dist/ui/textHighlighter.d.ts.map +0 -1
- package/dist/ui/textHighlighter.js +0 -267
- package/dist/ui/textHighlighter.js.map +0 -1
- package/dist/ui/theme.d.ts +0 -208
- package/dist/ui/theme.d.ts.map +0 -1
- package/dist/ui/theme.js +0 -249
- package/dist/ui/theme.js.map +0 -1
- package/dist/ui/toolDisplay.d.ts +0 -195
- package/dist/ui/toolDisplay.d.ts.map +0 -1
- package/dist/ui/toolDisplay.js +0 -1526
- package/dist/ui/toolDisplay.js.map +0 -1
- package/dist/ui/unified/index.d.ts +0 -50
- package/dist/ui/unified/index.d.ts.map +0 -1
- package/dist/ui/unified/index.js +0 -77
- package/dist/ui/unified/index.js.map +0 -1
- package/dist/ui/unified/layout.d.ts +0 -12
- package/dist/ui/unified/layout.d.ts.map +0 -1
- package/dist/ui/unified/layout.js +0 -96
- package/dist/ui/unified/layout.js.map +0 -1
- package/dist/ui/writeLock.d.ts +0 -65
- package/dist/ui/writeLock.d.ts.map +0 -1
- package/dist/ui/writeLock.js +0 -114
- package/dist/ui/writeLock.js.map +0 -1
- package/dist/utils/asyncUtils.d.ts +0 -95
- package/dist/utils/asyncUtils.d.ts.map +0 -1
- package/dist/utils/asyncUtils.js +0 -286
- package/dist/utils/asyncUtils.js.map +0 -1
- package/dist/utils/errorUtils.d.ts +0 -16
- package/dist/utils/errorUtils.d.ts.map +0 -1
- package/dist/utils/errorUtils.js +0 -66
- package/dist/utils/errorUtils.js.map +0 -1
- package/dist/utils/frontmatter.d.ts +0 -10
- package/dist/utils/frontmatter.d.ts.map +0 -1
- package/dist/utils/frontmatter.js +0 -78
- package/dist/utils/frontmatter.js.map +0 -1
- package/dist/utils/planFormatter.d.ts +0 -34
- package/dist/utils/planFormatter.d.ts.map +0 -1
- package/dist/utils/planFormatter.js +0 -140
- package/dist/utils/planFormatter.js.map +0 -1
- package/dist/workspace.d.ts +0 -8
- package/dist/workspace.d.ts.map +0 -1
- package/dist/workspace.js +0 -107
- package/dist/workspace.js.map +0 -1
- package/dist/workspace.validator.d.ts +0 -49
- package/dist/workspace.validator.d.ts.map +0 -1
- package/dist/workspace.validator.js +0 -214
- package/dist/workspace.validator.js.map +0 -1
package/dist/ui/toolDisplay.js
DELETED
|
@@ -1,1526 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tool Display Formatter - Erosolar-CLI style
|
|
3
|
-
*
|
|
4
|
-
* Implements the clean, informative tool execution display that Erosolar-CLI uses:
|
|
5
|
-
* - Tool call indicators with inline args
|
|
6
|
-
* - Result summaries with status indicators
|
|
7
|
-
* - Expandable content with previews
|
|
8
|
-
* - Diff formatting with colors
|
|
9
|
-
* - Advanced progress indicators
|
|
10
|
-
* - Compact same-line displays
|
|
11
|
-
*/
|
|
12
|
-
import { formatPlan, normalizePlanItems, resolvePlanWidth, wrapPlanText } from '../utils/planFormatter.js';
|
|
13
|
-
import { theme, icons, progressChars } from './theme.js';
|
|
14
|
-
/**
|
|
15
|
-
* Format tool call display (Erosolar-CLI style)
|
|
16
|
-
*
|
|
17
|
-
* Example output:
|
|
18
|
-
* ⏺ Read(src/core/agent.ts)
|
|
19
|
-
* ⏺ Search(pattern: "TODO|FIXME", output_mode: "content", head_limit: 15)
|
|
20
|
-
*/
|
|
21
|
-
export function formatToolCall(call, options = {}) {
|
|
22
|
-
const includePrefix = options.includePrefix ?? true;
|
|
23
|
-
const symbol = includePrefix ? `${theme.info('⏺')} ` : '';
|
|
24
|
-
const toolName = theme.tool(call.name);
|
|
25
|
-
// Format args inline (only show relevant ones)
|
|
26
|
-
const argsDisplay = formatInlineArgs(call.args);
|
|
27
|
-
return `${symbol}${toolName}${argsDisplay}`;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Format tool result display (Erosolar-CLI style)
|
|
31
|
-
*
|
|
32
|
-
* Example output:
|
|
33
|
-
* ⎿ Read 340 lines
|
|
34
|
-
* ⎿ Found 15 lines
|
|
35
|
-
* ⎿ Completed
|
|
36
|
-
*/
|
|
37
|
-
export function formatToolResult(result, options = {}) {
|
|
38
|
-
const includePrefix = options.includePrefix ?? true;
|
|
39
|
-
const prefix = includePrefix
|
|
40
|
-
? result.status === 'error'
|
|
41
|
-
? `${theme.error('⎿')} `
|
|
42
|
-
: `${theme.success('⎿')} `
|
|
43
|
-
: '';
|
|
44
|
-
let output = `${prefix}${result.summary}`;
|
|
45
|
-
return output;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Format inline args for tool call display
|
|
49
|
-
* Keeps it concise, shows only non-default values
|
|
50
|
-
* Prioritizes important args like paths, patterns, commands
|
|
51
|
-
*/
|
|
52
|
-
function formatInlineArgs(args) {
|
|
53
|
-
// Priority order for different argument types
|
|
54
|
-
const priorityArgs = [
|
|
55
|
-
'file_path', 'path', 'pattern', 'command', 'query', 'url',
|
|
56
|
-
'output_mode', 'glob', 'type', 'head_limit', 'offset',
|
|
57
|
-
];
|
|
58
|
-
// Special handling for specific args
|
|
59
|
-
const skipDefaults = new Set([
|
|
60
|
-
'dangerouslyDisableSandbox',
|
|
61
|
-
'run_in_background',
|
|
62
|
-
'description',
|
|
63
|
-
]);
|
|
64
|
-
const formattedArgs = [];
|
|
65
|
-
for (const [key, value] of Object.entries(args)) {
|
|
66
|
-
// Skip empty/null/undefined
|
|
67
|
-
if (value === null || value === undefined || value === '')
|
|
68
|
-
continue;
|
|
69
|
-
// Skip common defaults
|
|
70
|
-
if (skipDefaults.has(key))
|
|
71
|
-
continue;
|
|
72
|
-
if (key === 'path' && value === '.')
|
|
73
|
-
continue;
|
|
74
|
-
if (key === 'format' && value === 'plain')
|
|
75
|
-
continue;
|
|
76
|
-
if (key === 'output_mode' && value === 'files_with_matches')
|
|
77
|
-
continue;
|
|
78
|
-
// Determine priority
|
|
79
|
-
const priority = priorityArgs.indexOf(key);
|
|
80
|
-
const actualPriority = priority === -1 ? 999 : priority;
|
|
81
|
-
// Format value
|
|
82
|
-
let formatted;
|
|
83
|
-
if (typeof value === 'string') {
|
|
84
|
-
// Smart truncation for paths
|
|
85
|
-
if (key === 'file_path' || key === 'path') {
|
|
86
|
-
formatted = truncatePathForDisplay(value, 60);
|
|
87
|
-
}
|
|
88
|
-
else if (key === 'pattern' || key === 'query') {
|
|
89
|
-
// Show patterns/queries more prominently
|
|
90
|
-
if (value.length > 40) {
|
|
91
|
-
formatted = `"${value.slice(0, 37)}..."`;
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
formatted = `"${value}"`;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
else if (key === 'command') {
|
|
98
|
-
// Truncate commands intelligently
|
|
99
|
-
if (value.length > 60) {
|
|
100
|
-
formatted = `"${value.slice(0, 57)}..."`;
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
formatted = `"${value}"`;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
// Regular string truncation
|
|
108
|
-
if (value.length > 50) {
|
|
109
|
-
formatted = `"${value.slice(0, 47)}..."`;
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
formatted = `"${value}"`;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
else if (typeof value === 'boolean') {
|
|
117
|
-
// Only show boolean if true (false is usually default)
|
|
118
|
-
if (!value)
|
|
119
|
-
continue;
|
|
120
|
-
formatted = 'true';
|
|
121
|
-
}
|
|
122
|
-
else if (typeof value === 'number') {
|
|
123
|
-
formatted = String(value);
|
|
124
|
-
}
|
|
125
|
-
else if (Array.isArray(value)) {
|
|
126
|
-
// Show array length
|
|
127
|
-
formatted = `[${value.length} items]`;
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
formatted = JSON.stringify(value);
|
|
131
|
-
}
|
|
132
|
-
formattedArgs.push({ key, value: formatted, priority: actualPriority });
|
|
133
|
-
}
|
|
134
|
-
// Sort by priority and limit to most important args
|
|
135
|
-
formattedArgs.sort((a, b) => a.priority - b.priority);
|
|
136
|
-
const displayArgs = formattedArgs.slice(0, 5); // Show max 5 args
|
|
137
|
-
if (displayArgs.length === 0) {
|
|
138
|
-
return '';
|
|
139
|
-
}
|
|
140
|
-
// Format as inline args
|
|
141
|
-
const argStrings = displayArgs.map(arg => {
|
|
142
|
-
// For primary args (path, pattern, command), show value directly
|
|
143
|
-
if (['file_path', 'path', 'pattern', 'command', 'query', 'url'].includes(arg.key)) {
|
|
144
|
-
return arg.value;
|
|
145
|
-
}
|
|
146
|
-
// For others, show key: value
|
|
147
|
-
return `${arg.key}: ${arg.value}`;
|
|
148
|
-
});
|
|
149
|
-
return `(${argStrings.join(', ')})`;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Truncate path intelligently for display
|
|
153
|
-
* Keeps filename and important parent dirs
|
|
154
|
-
*/
|
|
155
|
-
function truncatePathForDisplay(path, maxLength) {
|
|
156
|
-
if (path.length <= maxLength)
|
|
157
|
-
return path;
|
|
158
|
-
const parts = path.split('/').filter(p => p);
|
|
159
|
-
if (parts.length <= 2) {
|
|
160
|
-
// Short path, just truncate
|
|
161
|
-
return `${path.slice(0, maxLength - 3)}...`;
|
|
162
|
-
}
|
|
163
|
-
// Keep filename and truncate middle
|
|
164
|
-
const filename = parts[parts.length - 1];
|
|
165
|
-
if (!filename) {
|
|
166
|
-
return `${path.slice(0, maxLength - 3)}...`;
|
|
167
|
-
}
|
|
168
|
-
const firstPart = parts.slice(0, 2).join('/');
|
|
169
|
-
if (firstPart.length + filename.length + 4 <= maxLength) {
|
|
170
|
-
return `${firstPart}/.../${filename}`;
|
|
171
|
-
}
|
|
172
|
-
// Just show filename if still too long
|
|
173
|
-
if (filename.length <= maxLength - 3) {
|
|
174
|
-
return `.../${filename}`;
|
|
175
|
-
}
|
|
176
|
-
return `${filename.slice(0, maxLength - 3)}...`;
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Format expandable content preview
|
|
180
|
-
*
|
|
181
|
-
* Example:
|
|
182
|
-
* import { foo } from 'bar';
|
|
183
|
-
* … +312 lines
|
|
184
|
-
*/
|
|
185
|
-
export function formatExpandablePreview(content, maxLines = 5) {
|
|
186
|
-
const lines = content.split('\n');
|
|
187
|
-
const totalLines = lines.length;
|
|
188
|
-
if (totalLines <= maxLines) {
|
|
189
|
-
return {
|
|
190
|
-
preview: content,
|
|
191
|
-
isExpanded: true,
|
|
192
|
-
totalLines,
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
// Show first N lines
|
|
196
|
-
const previewLines = lines.slice(0, maxLines);
|
|
197
|
-
const remainingLines = totalLines - maxLines;
|
|
198
|
-
const ellipsis = theme.ui.muted(`… +${remainingLines} lines`);
|
|
199
|
-
previewLines.push(`${ellipsis}`);
|
|
200
|
-
return {
|
|
201
|
-
preview: previewLines.join('\n'),
|
|
202
|
-
isExpanded: false,
|
|
203
|
-
totalLines,
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Format diff output (Erosolar-CLI style)
|
|
208
|
-
*
|
|
209
|
-
* Example:
|
|
210
|
-
* Update(src/core/agent.ts)
|
|
211
|
-
* ⎿ Updated src/core/agent.ts with 2 additions and 1 removal
|
|
212
|
-
* 75 private async processConversation(): Promise<string> {
|
|
213
|
-
* 76 while (true) {
|
|
214
|
-
* 77 - this.pruneMessagesIfNeeded();
|
|
215
|
-
* 77 + await this.pruneMessagesIfNeeded();
|
|
216
|
-
* 78
|
|
217
|
-
*/
|
|
218
|
-
export function formatDiff(diff) {
|
|
219
|
-
const lines = [];
|
|
220
|
-
for (const line of diff) {
|
|
221
|
-
let formatted;
|
|
222
|
-
switch (line.type) {
|
|
223
|
-
case 'add':
|
|
224
|
-
// Green + with line number
|
|
225
|
-
const addNum = line.lineNumber ? theme.ui.muted(String(line.lineNumber).padStart(6)) : ' ';
|
|
226
|
-
const addSymbol = theme.diff.added('+');
|
|
227
|
-
const addContent = theme.diff.added(line.content);
|
|
228
|
-
formatted = `${addNum} ${addSymbol} ${addContent}`;
|
|
229
|
-
break;
|
|
230
|
-
case 'remove':
|
|
231
|
-
// Red - with line number
|
|
232
|
-
const remNum = line.lineNumber ? theme.ui.muted(String(line.lineNumber).padStart(6)) : ' ';
|
|
233
|
-
const remSymbol = theme.diff.removed('-');
|
|
234
|
-
const remContent = theme.diff.removed(line.content);
|
|
235
|
-
formatted = `${remNum} ${remSymbol} ${remContent}`;
|
|
236
|
-
break;
|
|
237
|
-
case 'context':
|
|
238
|
-
// Gray line number, regular content
|
|
239
|
-
const ctxNum = line.lineNumber ? theme.ui.muted(String(line.lineNumber).padStart(6)) : ' ';
|
|
240
|
-
formatted = `${ctxNum} ${line.content}`;
|
|
241
|
-
break;
|
|
242
|
-
case 'info':
|
|
243
|
-
// Special info line (file headers, etc.)
|
|
244
|
-
formatted = theme.diff.header(line.content);
|
|
245
|
-
break;
|
|
246
|
-
}
|
|
247
|
-
lines.push(formatted);
|
|
248
|
-
}
|
|
249
|
-
return lines.join('\n');
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Format diff summary
|
|
253
|
-
* Example: "Updated src/core/agent.ts with 2 additions and 1 removal"
|
|
254
|
-
*/
|
|
255
|
-
export function formatDiffSummary(file, additions, removals) {
|
|
256
|
-
const parts = ['Updated', file, 'with'];
|
|
257
|
-
if (additions > 0) {
|
|
258
|
-
parts.push(theme.diff.added(`${additions} addition${additions === 1 ? '' : 's'}`));
|
|
259
|
-
}
|
|
260
|
-
if (removals > 0) {
|
|
261
|
-
if (additions > 0) {
|
|
262
|
-
parts.push('and');
|
|
263
|
-
}
|
|
264
|
-
parts.push(theme.diff.removed(`${removals} removal${removals === 1 ? '' : 's'}`));
|
|
265
|
-
}
|
|
266
|
-
return parts.join(' ');
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Format multiline content with indentation (Erosolar-CLI style)
|
|
270
|
-
*
|
|
271
|
-
* Adds proper indentation and line wrapping
|
|
272
|
-
*/
|
|
273
|
-
export function formatIndentedContent(content, indent = 4) {
|
|
274
|
-
const lines = content.split('\n');
|
|
275
|
-
const indentStr = ' '.repeat(indent);
|
|
276
|
-
return lines.map(line => `${indentStr}${line}`).join('\n');
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Format token usage indicator
|
|
280
|
-
* Example: "• Context 5% used (7.2k tokens)"
|
|
281
|
-
*/
|
|
282
|
-
export function formatTokenUsage(percentage, tokens) {
|
|
283
|
-
const bullet = theme.info('•');
|
|
284
|
-
let pct;
|
|
285
|
-
if (percentage >= 90) {
|
|
286
|
-
pct = theme.error(`${percentage}%`);
|
|
287
|
-
}
|
|
288
|
-
else if (percentage >= 70) {
|
|
289
|
-
pct = theme.warning(`${percentage}%`);
|
|
290
|
-
}
|
|
291
|
-
else {
|
|
292
|
-
pct = theme.success(`${percentage}%`);
|
|
293
|
-
}
|
|
294
|
-
const tokensStr = tokens ? ` (${formatTokenCount(tokens)} tokens)` : '';
|
|
295
|
-
return `${bullet} Context ${pct} used${tokensStr}`;
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* Format token count with k/M suffixes
|
|
299
|
-
*/
|
|
300
|
-
function formatTokenCount(tokens) {
|
|
301
|
-
if (tokens >= 1000000) {
|
|
302
|
-
return `${(tokens / 1000000).toFixed(1)}M`;
|
|
303
|
-
}
|
|
304
|
-
if (tokens >= 1000) {
|
|
305
|
-
return `${(tokens / 1000).toFixed(1)}k`;
|
|
306
|
-
}
|
|
307
|
-
return String(tokens);
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Format timing information
|
|
311
|
-
* Example: "(1m 43s)" or "(250ms)"
|
|
312
|
-
*/
|
|
313
|
-
export function formatDuration(ms) {
|
|
314
|
-
if (ms < 1000) {
|
|
315
|
-
return `${Math.round(ms)}ms`;
|
|
316
|
-
}
|
|
317
|
-
const seconds = Math.floor(ms / 1000);
|
|
318
|
-
const minutes = Math.floor(seconds / 60);
|
|
319
|
-
const remainingSeconds = seconds % 60;
|
|
320
|
-
if (minutes > 0) {
|
|
321
|
-
return `${minutes}m ${remainingSeconds}s`;
|
|
322
|
-
}
|
|
323
|
-
return `${seconds}s`;
|
|
324
|
-
}
|
|
325
|
-
/**
|
|
326
|
-
* Create a "thinking" indicator
|
|
327
|
-
* Example: "∴ Thinking…" or "∴ Thought for 2s"
|
|
328
|
-
*/
|
|
329
|
-
export function formatThinking(durationMs, hasContent = false) {
|
|
330
|
-
const symbol = theme.info('∴');
|
|
331
|
-
if (durationMs === undefined) {
|
|
332
|
-
return `${symbol} Thinking…`;
|
|
333
|
-
}
|
|
334
|
-
const duration = formatDuration(durationMs);
|
|
335
|
-
return `${symbol} Thought for ${duration}`;
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Format status line at bottom
|
|
339
|
-
* Example: "• Ready for prompts (250ms)"
|
|
340
|
-
*/
|
|
341
|
-
export function formatStatusLine(message, durationMs, tokenUsage) {
|
|
342
|
-
const parts = [];
|
|
343
|
-
// Add token usage first if available
|
|
344
|
-
if (tokenUsage) {
|
|
345
|
-
parts.push(formatTokenUsage(tokenUsage.percentage, tokenUsage.tokens));
|
|
346
|
-
}
|
|
347
|
-
// Add message with duration
|
|
348
|
-
const duration = durationMs ? ` (${formatDuration(durationMs)})` : '';
|
|
349
|
-
parts.push(message + duration);
|
|
350
|
-
return parts.join(' · ');
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Smart truncate for shell commands
|
|
354
|
-
* Preserves important parts like command name and key flags
|
|
355
|
-
*/
|
|
356
|
-
export function truncateCommand(command, maxLength = 60) {
|
|
357
|
-
if (command.length <= maxLength)
|
|
358
|
-
return command;
|
|
359
|
-
// Try to keep command name and first few args
|
|
360
|
-
const parts = command.split(/\s+/).filter(p => p);
|
|
361
|
-
if (parts.length === 0 || !parts[0]) {
|
|
362
|
-
return `${command.slice(0, maxLength - 3)}...`;
|
|
363
|
-
}
|
|
364
|
-
if (parts.length === 1) {
|
|
365
|
-
// Single long command/path
|
|
366
|
-
return `${command.slice(0, maxLength - 3)}...`;
|
|
367
|
-
}
|
|
368
|
-
// Keep first part (command) and truncate rest
|
|
369
|
-
const cmdName = parts[0];
|
|
370
|
-
const rest = parts.slice(1).join(' ');
|
|
371
|
-
if (cmdName.length + 7 > maxLength) {
|
|
372
|
-
return `${cmdName.slice(0, maxLength - 3)}...`;
|
|
373
|
-
}
|
|
374
|
-
const availableSpace = maxLength - cmdName.length - 4; // -4 for " ..."
|
|
375
|
-
if (rest.length <= availableSpace) {
|
|
376
|
-
return command;
|
|
377
|
-
}
|
|
378
|
-
return `${cmdName} ${rest.slice(0, availableSpace)}...`;
|
|
379
|
-
}
|
|
380
|
-
/**
|
|
381
|
-
* Format file size in human-readable format
|
|
382
|
-
*/
|
|
383
|
-
export function formatFileSize(bytes) {
|
|
384
|
-
if (bytes < 1024)
|
|
385
|
-
return `${bytes}B`;
|
|
386
|
-
if (bytes < 1024 * 1024)
|
|
387
|
-
return `${(bytes / 1024).toFixed(1)}KB`;
|
|
388
|
-
if (bytes < 1024 * 1024 * 1024)
|
|
389
|
-
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
390
|
-
return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)}GB`;
|
|
391
|
-
}
|
|
392
|
-
/**
|
|
393
|
-
* Format JSON output with syntax highlighting
|
|
394
|
-
*/
|
|
395
|
-
export function formatJSON(data, compact = false) {
|
|
396
|
-
const json = JSON.stringify(data, null, compact ? 0 : 2);
|
|
397
|
-
// Add basic syntax highlighting
|
|
398
|
-
return json
|
|
399
|
-
.replace(/"([^"]+)":/g, (_, key) => `${theme.info(`"${key}"`)}: `) // Keys in blue
|
|
400
|
-
.replace(/: "([^"]*)"/g, (_, value) => `: ${theme.success(`"${value}"`)}`) // String values in green
|
|
401
|
-
.replace(/: (\d+\.?\d*)/g, (_, num) => `: ${theme.warning(num)}`) // Numbers in amber
|
|
402
|
-
.replace(/: (true|false|null)/g, (_, bool) => `: ${theme.secondary(bool)}`); // Booleans in purple
|
|
403
|
-
}
|
|
404
|
-
/**
|
|
405
|
-
* Format a list of items (Erosolar-CLI style)
|
|
406
|
-
* Example:
|
|
407
|
-
* • Item 1
|
|
408
|
-
* • Item 2
|
|
409
|
-
* • Item 3
|
|
410
|
-
*/
|
|
411
|
-
export function formatList(items, bullet = '•') {
|
|
412
|
-
return items.map(item => ` ${theme.info(bullet)} ${item}`).join('\n');
|
|
413
|
-
}
|
|
414
|
-
/**
|
|
415
|
-
* Format a key-value pair (Erosolar-CLI style)
|
|
416
|
-
*/
|
|
417
|
-
export function formatKeyValue(key, value) {
|
|
418
|
-
return `${theme.ui.muted(key)}: ${value}`;
|
|
419
|
-
}
|
|
420
|
-
/**
|
|
421
|
-
* Format a tool result summary for display in the terminal.
|
|
422
|
-
* This is the central function for displaying ALL tool results.
|
|
423
|
-
*
|
|
424
|
-
* To add support for a new tool:
|
|
425
|
-
* 1. Add a case in the switch statement below
|
|
426
|
-
* 2. Create a format function for that tool type
|
|
427
|
-
*
|
|
428
|
-
* @returns Formatted string to display, or null if no display needed
|
|
429
|
-
*/
|
|
430
|
-
export function formatToolResultSummary(input) {
|
|
431
|
-
const { toolName, args, output, success, durationMs } = input;
|
|
432
|
-
// Determine tool category and format accordingly
|
|
433
|
-
switch (toolName) {
|
|
434
|
-
// === FILE OPERATIONS ===
|
|
435
|
-
case 'Edit':
|
|
436
|
-
case 'edit_file':
|
|
437
|
-
// These already return formatted diff output from editTools.ts
|
|
438
|
-
return output;
|
|
439
|
-
// === BASH/COMMAND EXECUTION ===
|
|
440
|
-
case 'Bash':
|
|
441
|
-
case 'bash':
|
|
442
|
-
case 'execute_bash':
|
|
443
|
-
case 'execute_command':
|
|
444
|
-
return formatBashResult(args, output, success, durationMs);
|
|
445
|
-
// === BACKGROUND BASH ===
|
|
446
|
-
case 'BashOutput':
|
|
447
|
-
return formatBashOutputResult(args, output, success);
|
|
448
|
-
case 'KillShell':
|
|
449
|
-
return formatKillShellResult(args, output, success);
|
|
450
|
-
// === FILE READING ===
|
|
451
|
-
case 'Read':
|
|
452
|
-
case 'read_file':
|
|
453
|
-
return formatReadResult(args, output, success);
|
|
454
|
-
// === SEARCH OPERATIONS ===
|
|
455
|
-
case 'Grep':
|
|
456
|
-
case 'grep':
|
|
457
|
-
case 'grep_search':
|
|
458
|
-
case 'search_text':
|
|
459
|
-
case 'search_files':
|
|
460
|
-
return formatGrepResult(args, output, success);
|
|
461
|
-
case 'Glob':
|
|
462
|
-
case 'glob':
|
|
463
|
-
case 'list_files':
|
|
464
|
-
return formatGlobResult(args, output, success);
|
|
465
|
-
case 'find_definition':
|
|
466
|
-
return formatFindDefinitionResult(args, output, success);
|
|
467
|
-
// === WEB OPERATIONS ===
|
|
468
|
-
case 'WebFetch':
|
|
469
|
-
case 'web_fetch':
|
|
470
|
-
return formatWebFetchResult(args, output, success);
|
|
471
|
-
case 'WebSearch':
|
|
472
|
-
case 'web_search':
|
|
473
|
-
return formatWebSearchResult(args, output, success);
|
|
474
|
-
case 'WebExtract':
|
|
475
|
-
return formatWebExtractResult(args, output, success);
|
|
476
|
-
// === TASK/AGENT OPERATIONS ===
|
|
477
|
-
case 'Task':
|
|
478
|
-
case 'task':
|
|
479
|
-
return formatTaskResult(args, output, success);
|
|
480
|
-
// === TODO OPERATIONS ===
|
|
481
|
-
case 'TodoWrite':
|
|
482
|
-
case 'todo_write':
|
|
483
|
-
return formatTodoResult(args, output, success);
|
|
484
|
-
// === NOTEBOOK OPERATIONS ===
|
|
485
|
-
case 'NotebookEdit':
|
|
486
|
-
case 'notebook_edit':
|
|
487
|
-
return formatNotebookResult(args, output, success);
|
|
488
|
-
// === USER INTERACTION ===
|
|
489
|
-
case 'AskUserQuestion':
|
|
490
|
-
return formatAskUserResult(args, output, success);
|
|
491
|
-
// === DEV TOOLS ===
|
|
492
|
-
case 'run_tests':
|
|
493
|
-
return formatTestResult(args, output, success, durationMs);
|
|
494
|
-
case 'run_build':
|
|
495
|
-
return formatBuildResult(args, output, success, durationMs);
|
|
496
|
-
case 'install_dependencies':
|
|
497
|
-
return formatInstallResult(args, output, success, durationMs);
|
|
498
|
-
case 'check_package_info':
|
|
499
|
-
return formatPackageInfoResult(args, output, success);
|
|
500
|
-
// === GIT OPERATIONS ===
|
|
501
|
-
case 'git_release':
|
|
502
|
-
case 'git_sync':
|
|
503
|
-
case 'git_cleanup':
|
|
504
|
-
return formatGitResult(toolName, args, output, success);
|
|
505
|
-
// === DOCKER ===
|
|
506
|
-
case 'docker_build':
|
|
507
|
-
case 'docker_compose':
|
|
508
|
-
return formatDockerResult(toolName, args, output, success, durationMs);
|
|
509
|
-
// === CODE ANALYSIS ===
|
|
510
|
-
case 'analyze_code_structure':
|
|
511
|
-
case 'find_dependencies':
|
|
512
|
-
case 'check_code_complexity':
|
|
513
|
-
case 'advanced_ast_analysis':
|
|
514
|
-
case 'analyze_code_complexity':
|
|
515
|
-
case 'suggest_refactoring':
|
|
516
|
-
case 'generate_code_quality_report':
|
|
517
|
-
return formatCodeAnalysisResult(toolName, args, output, success);
|
|
518
|
-
// === TESTING TOOLS ===
|
|
519
|
-
case 'generate_test_templates':
|
|
520
|
-
case 'run_coverage_analysis':
|
|
521
|
-
case 'summarize_coverage_report':
|
|
522
|
-
case 'analyze_test_coverage':
|
|
523
|
-
case 'generate_comprehensive_tests':
|
|
524
|
-
return formatTestingToolResult(toolName, args, output, success);
|
|
525
|
-
// === LINT/QUALITY ===
|
|
526
|
-
case 'run_lint_checks':
|
|
527
|
-
case 'inspect_code_quality':
|
|
528
|
-
case 'list_lint_rules':
|
|
529
|
-
return formatLintResult(toolName, args, output, success);
|
|
530
|
-
// === CLOUD DEPLOY ===
|
|
531
|
-
case 'cloud_status':
|
|
532
|
-
case 'cloud_deploy':
|
|
533
|
-
case 'cloud_init':
|
|
534
|
-
case 'cloud_login':
|
|
535
|
-
case 'firebase_deploy':
|
|
536
|
-
case 'aliyun_deploy':
|
|
537
|
-
return formatCloudResult(toolName, args, output, success);
|
|
538
|
-
// === BROWSER AUTOMATION ===
|
|
539
|
-
case 'browser_create_session':
|
|
540
|
-
case 'browser_navigate':
|
|
541
|
-
case 'browser_click':
|
|
542
|
-
case 'browser_type':
|
|
543
|
-
case 'browser_screenshot':
|
|
544
|
-
case 'browser_close_session':
|
|
545
|
-
return formatBrowserResult(toolName, args, output, success);
|
|
546
|
-
// === EMAIL ===
|
|
547
|
-
case 'send_email':
|
|
548
|
-
case 'send_batch_emails':
|
|
549
|
-
case 'verify_email_config':
|
|
550
|
-
return formatEmailResult(toolName, args, output, success);
|
|
551
|
-
// === SKILLS ===
|
|
552
|
-
case 'ListSkills':
|
|
553
|
-
case 'Skill':
|
|
554
|
-
return formatSkillResult(toolName, args, output, success);
|
|
555
|
-
// === PLANNING ===
|
|
556
|
-
case 'UpdatePlan':
|
|
557
|
-
return formatPlanUpdateResult(args, output, success);
|
|
558
|
-
case 'ExitPlanMode':
|
|
559
|
-
return formatPlanModeResult(args, output, success);
|
|
560
|
-
// === REPO CHECKS ===
|
|
561
|
-
case 'run_repo_checks':
|
|
562
|
-
return formatRepoChecksResult(args, output, success);
|
|
563
|
-
// === LEARNING & EXPLORATION ===
|
|
564
|
-
case 'learn_codebase':
|
|
565
|
-
case 'learn_file':
|
|
566
|
-
case 'learn_topic':
|
|
567
|
-
case 'learn_summary':
|
|
568
|
-
case 'explore':
|
|
569
|
-
case 'explore_index':
|
|
570
|
-
return formatLearnResult(toolName, args, output, success);
|
|
571
|
-
// === DEFAULT: Unknown tools ===
|
|
572
|
-
default:
|
|
573
|
-
// For unknown tools, show a generic summary if output is non-empty
|
|
574
|
-
return formatGenericToolResult(toolName, output, success, durationMs);
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
/**
|
|
578
|
-
* Format Bash command result
|
|
579
|
-
* Shows: command executed, exit status, and output preview
|
|
580
|
-
*/
|
|
581
|
-
function formatBashResult(args, output, success, durationMs) {
|
|
582
|
-
const command = args['command'] || '';
|
|
583
|
-
const description = args['description'];
|
|
584
|
-
const lines = [];
|
|
585
|
-
// Header with command
|
|
586
|
-
const statusIcon = success ? theme.success('✓') : theme.error('✗');
|
|
587
|
-
const cmdDisplay = truncateCommand(command, 50);
|
|
588
|
-
const durationStr = durationMs ? ` ${theme.ui.muted(`(${formatDuration(durationMs)})`)}` : '';
|
|
589
|
-
if (description) {
|
|
590
|
-
lines.push(`${statusIcon} ${description}${durationStr}`);
|
|
591
|
-
lines.push(` ${theme.ui.muted('$')} ${theme.dim(cmdDisplay)}`);
|
|
592
|
-
}
|
|
593
|
-
else {
|
|
594
|
-
lines.push(`${statusIcon} ${theme.ui.muted('$')} ${cmdDisplay}${durationStr}`);
|
|
595
|
-
}
|
|
596
|
-
// Output preview (max 5 lines)
|
|
597
|
-
if (output && output.trim()) {
|
|
598
|
-
const outputLines = output.trim().split('\n');
|
|
599
|
-
const maxPreviewLines = 5;
|
|
600
|
-
const previewLines = outputLines.slice(0, maxPreviewLines);
|
|
601
|
-
const lineFormatter = success ? theme.dim : theme.error;
|
|
602
|
-
for (const line of previewLines) {
|
|
603
|
-
// Truncate long lines
|
|
604
|
-
const truncatedLine = line.length > 80 ? `${line.slice(0, 77)}...` : line;
|
|
605
|
-
lines.push(` ${lineFormatter(truncatedLine)}`);
|
|
606
|
-
}
|
|
607
|
-
if (outputLines.length > maxPreviewLines) {
|
|
608
|
-
const remaining = outputLines.length - maxPreviewLines;
|
|
609
|
-
lines.push(` ${theme.ui.muted(`... +${remaining} more line${remaining === 1 ? '' : 's'}`)}`);
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
return lines.join('\n');
|
|
613
|
-
}
|
|
614
|
-
/**
|
|
615
|
-
* Format Read file result
|
|
616
|
-
* Shows: file path and line count
|
|
617
|
-
*/
|
|
618
|
-
function formatReadResult(args, output, success) {
|
|
619
|
-
const filePath = (args['file_path'] || args['path']) || '';
|
|
620
|
-
const displayPath = truncatePathForDisplay(filePath, 50);
|
|
621
|
-
if (!success) {
|
|
622
|
-
return `${theme.error('✗')} Failed to read ${displayPath}`;
|
|
623
|
-
}
|
|
624
|
-
const lineCount = output.split('\n').length;
|
|
625
|
-
return `${theme.success('✓')} Read ${theme.info(displayPath)} ${theme.ui.muted(`(${lineCount} lines)`)}`;
|
|
626
|
-
}
|
|
627
|
-
/**
|
|
628
|
-
* Format Grep search result
|
|
629
|
-
* Shows: pattern, matches found, and file list preview
|
|
630
|
-
*/
|
|
631
|
-
function formatGrepResult(args, output, success) {
|
|
632
|
-
const pattern = args['pattern'] || '';
|
|
633
|
-
const patternDisplay = pattern.length > 30 ? `${pattern.slice(0, 27)}...` : pattern;
|
|
634
|
-
const lines = [];
|
|
635
|
-
if (!success || !output.trim()) {
|
|
636
|
-
lines.push(`${theme.warning('○')} No matches for "${patternDisplay}"`);
|
|
637
|
-
return lines.join('\n');
|
|
638
|
-
}
|
|
639
|
-
// Count matches/files
|
|
640
|
-
const outputLines = output.trim().split('\n').filter(l => l.trim());
|
|
641
|
-
const matchCount = outputLines.length;
|
|
642
|
-
lines.push(`${theme.success('✓')} Found ${theme.info(String(matchCount))} match${matchCount === 1 ? '' : 'es'} for "${patternDisplay}"`);
|
|
643
|
-
// Show first few matches
|
|
644
|
-
const maxPreview = 3;
|
|
645
|
-
for (let i = 0; i < Math.min(maxPreview, outputLines.length); i++) {
|
|
646
|
-
const line = outputLines[i] || '';
|
|
647
|
-
const truncated = line.length > 70 ? `${line.slice(0, 67)}...` : line;
|
|
648
|
-
lines.push(` ${theme.dim(truncated)}`);
|
|
649
|
-
}
|
|
650
|
-
if (matchCount > maxPreview) {
|
|
651
|
-
lines.push(` ${theme.ui.muted(`... +${matchCount - maxPreview} more`)}`);
|
|
652
|
-
}
|
|
653
|
-
return lines.join('\n');
|
|
654
|
-
}
|
|
655
|
-
/**
|
|
656
|
-
* Format Glob file search result
|
|
657
|
-
* Shows: pattern and files found
|
|
658
|
-
*/
|
|
659
|
-
function formatGlobResult(args, output, success) {
|
|
660
|
-
const pattern = args['pattern'] || '*';
|
|
661
|
-
const lines = [];
|
|
662
|
-
if (!success || !output.trim()) {
|
|
663
|
-
lines.push(`${theme.warning('○')} No files matching "${pattern}"`);
|
|
664
|
-
return lines.join('\n');
|
|
665
|
-
}
|
|
666
|
-
const files = output.trim().split('\n').filter(f => f.trim());
|
|
667
|
-
const fileCount = files.length;
|
|
668
|
-
lines.push(`${theme.success('✓')} Found ${theme.info(String(fileCount))} file${fileCount === 1 ? '' : 's'} matching "${pattern}"`);
|
|
669
|
-
// Show first few files
|
|
670
|
-
const maxPreview = 4;
|
|
671
|
-
for (let i = 0; i < Math.min(maxPreview, files.length); i++) {
|
|
672
|
-
const file = files[i] || '';
|
|
673
|
-
lines.push(` ${theme.dim(truncatePathForDisplay(file, 60))}`);
|
|
674
|
-
}
|
|
675
|
-
if (fileCount > maxPreview) {
|
|
676
|
-
lines.push(` ${theme.ui.muted(`... +${fileCount - maxPreview} more`)}`);
|
|
677
|
-
}
|
|
678
|
-
return lines.join('\n');
|
|
679
|
-
}
|
|
680
|
-
/**
|
|
681
|
-
* Format WebFetch result
|
|
682
|
-
* Shows: URL and content summary
|
|
683
|
-
*/
|
|
684
|
-
function formatWebFetchResult(args, output, success) {
|
|
685
|
-
const url = args['url'] || '';
|
|
686
|
-
let hostname = url;
|
|
687
|
-
try {
|
|
688
|
-
hostname = new URL(url).hostname;
|
|
689
|
-
}
|
|
690
|
-
catch {
|
|
691
|
-
// Keep original URL if parsing fails
|
|
692
|
-
}
|
|
693
|
-
if (!success) {
|
|
694
|
-
return `${theme.error('✗')} Failed to fetch ${hostname}`;
|
|
695
|
-
}
|
|
696
|
-
const contentLength = output.length;
|
|
697
|
-
const sizeStr = formatFileSize(contentLength);
|
|
698
|
-
return `${theme.success('✓')} Fetched ${theme.info(hostname)} ${theme.ui.muted(`(${sizeStr})`)}`;
|
|
699
|
-
}
|
|
700
|
-
/**
|
|
701
|
-
* Format WebSearch result
|
|
702
|
-
* Shows: query and result count
|
|
703
|
-
*/
|
|
704
|
-
function formatWebSearchResult(args, output, success) {
|
|
705
|
-
const query = args['query'] || '';
|
|
706
|
-
const queryDisplay = query.length > 40 ? `${query.slice(0, 37)}...` : query;
|
|
707
|
-
if (!success) {
|
|
708
|
-
return `${theme.error('✗')} Search failed for "${queryDisplay}"`;
|
|
709
|
-
}
|
|
710
|
-
// Try to count results from output
|
|
711
|
-
const resultMatches = output.match(/^\d+\./gm);
|
|
712
|
-
const resultCount = resultMatches ? resultMatches.length : 'multiple';
|
|
713
|
-
return `${theme.success('✓')} Found ${theme.info(String(resultCount))} results for "${queryDisplay}"`;
|
|
714
|
-
}
|
|
715
|
-
/**
|
|
716
|
-
* Format Task/Agent result
|
|
717
|
-
* Shows: task description and completion status
|
|
718
|
-
*/
|
|
719
|
-
function formatTaskResult(args, _output, success) {
|
|
720
|
-
const description = args['description'] || 'Task';
|
|
721
|
-
const truncatedDesc = description.length > 50 ? `${description.slice(0, 47)}...` : description;
|
|
722
|
-
if (!success) {
|
|
723
|
-
return `${theme.error('✗')} Task failed: ${truncatedDesc}`;
|
|
724
|
-
}
|
|
725
|
-
return `${theme.success('✓')} Completed: ${truncatedDesc}`;
|
|
726
|
-
}
|
|
727
|
-
/**
|
|
728
|
-
* Format TodoWrite result
|
|
729
|
-
* Shows: todo list update summary
|
|
730
|
-
*/
|
|
731
|
-
function formatTodoResult(args, _output, success) {
|
|
732
|
-
const todos = args['todos'];
|
|
733
|
-
if (!success) {
|
|
734
|
-
return `${theme.error('✗')} Failed to update todo list`;
|
|
735
|
-
}
|
|
736
|
-
if (!todos || !Array.isArray(todos)) {
|
|
737
|
-
return `${theme.success('✓')} Todo list updated`;
|
|
738
|
-
}
|
|
739
|
-
const completed = todos.filter(t => t.status === 'completed').length;
|
|
740
|
-
const inProgress = todos.filter(t => t.status === 'in_progress').length;
|
|
741
|
-
const pending = todos.filter(t => t.status === 'pending').length;
|
|
742
|
-
const parts = [`${theme.success('✓')} Todos:`];
|
|
743
|
-
if (completed > 0)
|
|
744
|
-
parts.push(theme.success(`${completed} done`));
|
|
745
|
-
if (inProgress > 0)
|
|
746
|
-
parts.push(theme.warning(`${inProgress} active`));
|
|
747
|
-
if (pending > 0)
|
|
748
|
-
parts.push(theme.dim(`${pending} pending`));
|
|
749
|
-
return parts.join(' ');
|
|
750
|
-
}
|
|
751
|
-
/**
|
|
752
|
-
* Format NotebookEdit result
|
|
753
|
-
* Shows: notebook and cell info
|
|
754
|
-
*/
|
|
755
|
-
function formatNotebookResult(args, _output, success) {
|
|
756
|
-
const notebookPath = args['notebook_path'] || '';
|
|
757
|
-
const editMode = args['edit_mode'] || 'replace';
|
|
758
|
-
const displayPath = truncatePathForDisplay(notebookPath, 40);
|
|
759
|
-
if (!success) {
|
|
760
|
-
return `${theme.error('✗')} Failed to edit notebook ${displayPath}`;
|
|
761
|
-
}
|
|
762
|
-
const action = editMode === 'insert' ? 'Inserted cell in' : editMode === 'delete' ? 'Deleted cell from' : 'Updated';
|
|
763
|
-
return `${theme.success('✓')} ${action} ${theme.info(displayPath)}`;
|
|
764
|
-
}
|
|
765
|
-
/**
|
|
766
|
-
* Format generic/unknown tool result
|
|
767
|
-
* Provides a basic summary for tools not explicitly handled
|
|
768
|
-
*/
|
|
769
|
-
function formatGenericToolResult(toolName, output, success, durationMs) {
|
|
770
|
-
const statusIcon = success ? theme.success('✓') : theme.error('✗');
|
|
771
|
-
const durationStr = durationMs ? ` ${theme.ui.muted(`(${formatDuration(durationMs)})`)}` : '';
|
|
772
|
-
if (!output || !output.trim()) {
|
|
773
|
-
return `${statusIcon} ${toolName} completed${durationStr}`;
|
|
774
|
-
}
|
|
775
|
-
const lineCount = output.split('\n').length;
|
|
776
|
-
return `${statusIcon} ${toolName} completed ${theme.ui.muted(`(${lineCount} lines)`)}${durationStr}`;
|
|
777
|
-
}
|
|
778
|
-
// ============================================================================
|
|
779
|
-
// ADDITIONAL TOOL FORMATTERS
|
|
780
|
-
// ============================================================================
|
|
781
|
-
/**
|
|
782
|
-
* Format BashOutput (background shell) result
|
|
783
|
-
*/
|
|
784
|
-
function formatBashOutputResult(args, output, success) {
|
|
785
|
-
const shellId = (args['bash_id'] || args['shell_id']) || '';
|
|
786
|
-
const lines = [];
|
|
787
|
-
if (!success) {
|
|
788
|
-
return `${theme.error('✗')} Failed to get output from shell ${shellId}`;
|
|
789
|
-
}
|
|
790
|
-
const outputLines = output.trim().split('\n').filter(l => l);
|
|
791
|
-
const lineCount = outputLines.length;
|
|
792
|
-
lines.push(`${theme.success('✓')} Shell ${theme.info(shellId)} ${theme.ui.muted(`(${lineCount} lines)`)}`);
|
|
793
|
-
// Show preview
|
|
794
|
-
const maxPreview = 3;
|
|
795
|
-
for (let i = 0; i < Math.min(maxPreview, outputLines.length); i++) {
|
|
796
|
-
const line = outputLines[i] || '';
|
|
797
|
-
const truncated = line.length > 70 ? `${line.slice(0, 67)}...` : line;
|
|
798
|
-
lines.push(` ${theme.dim(truncated)}`);
|
|
799
|
-
}
|
|
800
|
-
if (lineCount > maxPreview) {
|
|
801
|
-
lines.push(` ${theme.ui.muted(`... +${lineCount - maxPreview} more`)}`);
|
|
802
|
-
}
|
|
803
|
-
return lines.join('\n');
|
|
804
|
-
}
|
|
805
|
-
/**
|
|
806
|
-
* Format KillShell result
|
|
807
|
-
*/
|
|
808
|
-
function formatKillShellResult(args, _output, success) {
|
|
809
|
-
const shellId = (args['shell_id']) || '';
|
|
810
|
-
if (!success) {
|
|
811
|
-
return `${theme.error('✗')} Failed to kill shell ${shellId}`;
|
|
812
|
-
}
|
|
813
|
-
return `${theme.success('✓')} Killed shell ${theme.info(shellId)}`;
|
|
814
|
-
}
|
|
815
|
-
/**
|
|
816
|
-
* Format find_definition result
|
|
817
|
-
*/
|
|
818
|
-
function formatFindDefinitionResult(args, output, success) {
|
|
819
|
-
const symbol = (args['symbol'] || args['name']) || '';
|
|
820
|
-
if (!success || !output.trim()) {
|
|
821
|
-
return `${theme.warning('○')} Definition not found: ${symbol}`;
|
|
822
|
-
}
|
|
823
|
-
const locations = output.trim().split('\n').filter(l => l);
|
|
824
|
-
return `${theme.success('✓')} Found ${theme.info(String(locations.length))} definition${locations.length === 1 ? '' : 's'} for "${symbol}"`;
|
|
825
|
-
}
|
|
826
|
-
/**
|
|
827
|
-
* Format WebExtract result
|
|
828
|
-
*/
|
|
829
|
-
function formatWebExtractResult(args, output, success) {
|
|
830
|
-
const url = args['url'] || '';
|
|
831
|
-
let hostname = url;
|
|
832
|
-
try {
|
|
833
|
-
hostname = new URL(url).hostname;
|
|
834
|
-
}
|
|
835
|
-
catch {
|
|
836
|
-
// Keep original
|
|
837
|
-
}
|
|
838
|
-
if (!success) {
|
|
839
|
-
return `${theme.error('✗')} Failed to extract from ${hostname}`;
|
|
840
|
-
}
|
|
841
|
-
const contentLength = output.length;
|
|
842
|
-
return `${theme.success('✓')} Extracted from ${theme.info(hostname)} ${theme.ui.muted(`(${formatFileSize(contentLength)})`)}`;
|
|
843
|
-
}
|
|
844
|
-
/**
|
|
845
|
-
* Format AskUserQuestion result
|
|
846
|
-
*/
|
|
847
|
-
function formatAskUserResult(args, output, success) {
|
|
848
|
-
const questions = args['questions'];
|
|
849
|
-
const questionCount = questions?.length || 1;
|
|
850
|
-
if (!success) {
|
|
851
|
-
return `${theme.error('✗')} Failed to ask user`;
|
|
852
|
-
}
|
|
853
|
-
if (output.includes('answer') || output.includes('response')) {
|
|
854
|
-
return `${theme.success('✓')} User responded`;
|
|
855
|
-
}
|
|
856
|
-
return `${theme.info('?')} Asked ${questionCount} question${questionCount === 1 ? '' : 's'}`;
|
|
857
|
-
}
|
|
858
|
-
/**
|
|
859
|
-
* Format test run result
|
|
860
|
-
*/
|
|
861
|
-
function formatTestResult(args, output, success, durationMs) {
|
|
862
|
-
const testPattern = (args['pattern'] || args['filter']);
|
|
863
|
-
const lines = [];
|
|
864
|
-
const durationStr = durationMs ? ` ${theme.ui.muted(`(${formatDuration(durationMs)})`)}` : '';
|
|
865
|
-
// Try to extract test counts from output
|
|
866
|
-
const passMatch = output.match(/(\d+)\s*(?:passing|passed|✓)/i);
|
|
867
|
-
const failMatch = output.match(/(\d+)\s*(?:failing|failed|✗)/i);
|
|
868
|
-
const skipMatch = output.match(/(\d+)\s*(?:skipped|pending)/i);
|
|
869
|
-
const passed = passMatch ? parseInt(passMatch[1] || '0', 10) : 0;
|
|
870
|
-
const failed = failMatch ? parseInt(failMatch[1] || '0', 10) : 0;
|
|
871
|
-
const skipped = skipMatch ? parseInt(skipMatch[1] || '0', 10) : 0;
|
|
872
|
-
const statusIcon = success && failed === 0 ? theme.success('✓') : theme.error('✗');
|
|
873
|
-
let summary = `${statusIcon} Tests`;
|
|
874
|
-
if (testPattern) {
|
|
875
|
-
summary += ` "${testPattern}"`;
|
|
876
|
-
}
|
|
877
|
-
summary += durationStr;
|
|
878
|
-
lines.push(summary);
|
|
879
|
-
// Show counts
|
|
880
|
-
const counts = [];
|
|
881
|
-
if (passed > 0)
|
|
882
|
-
counts.push(theme.success(`${passed} passed`));
|
|
883
|
-
if (failed > 0)
|
|
884
|
-
counts.push(theme.error(`${failed} failed`));
|
|
885
|
-
if (skipped > 0)
|
|
886
|
-
counts.push(theme.warning(`${skipped} skipped`));
|
|
887
|
-
if (counts.length > 0) {
|
|
888
|
-
lines.push(` ${counts.join(', ')}`);
|
|
889
|
-
}
|
|
890
|
-
// Show first error if failed
|
|
891
|
-
if (!success && failed > 0) {
|
|
892
|
-
const errorMatch = output.match(/(?:Error|FAIL|✗).*?:(.*?)(?:\n|$)/i);
|
|
893
|
-
if (errorMatch && errorMatch[1]) {
|
|
894
|
-
const errorMsg = errorMatch[1].trim().slice(0, 60);
|
|
895
|
-
lines.push(` ${theme.error(errorMsg)}`);
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
return lines.join('\n');
|
|
899
|
-
}
|
|
900
|
-
/**
|
|
901
|
-
* Format build result
|
|
902
|
-
*/
|
|
903
|
-
function formatBuildResult(args, output, success, durationMs) {
|
|
904
|
-
const target = (args['target'] || args['script']);
|
|
905
|
-
const durationStr = durationMs ? ` ${theme.ui.muted(`(${formatDuration(durationMs)})`)}` : '';
|
|
906
|
-
if (!success) {
|
|
907
|
-
// Try to extract error count
|
|
908
|
-
const errorMatches = output.match(/error/gi);
|
|
909
|
-
const errorCount = errorMatches ? errorMatches.length : 0;
|
|
910
|
-
if (errorCount > 0) {
|
|
911
|
-
return `${theme.error('✗')} Build failed with ${errorCount} error${errorCount === 1 ? '' : 's'}${durationStr}`;
|
|
912
|
-
}
|
|
913
|
-
return `${theme.error('✗')} Build failed${durationStr}`;
|
|
914
|
-
}
|
|
915
|
-
const label = target ? `Build "${target}"` : 'Build';
|
|
916
|
-
return `${theme.success('✓')} ${label} succeeded${durationStr}`;
|
|
917
|
-
}
|
|
918
|
-
/**
|
|
919
|
-
* Format install dependencies result
|
|
920
|
-
*/
|
|
921
|
-
function formatInstallResult(args, output, success, durationMs) {
|
|
922
|
-
const packages = args['packages'];
|
|
923
|
-
const durationStr = durationMs ? ` ${theme.ui.muted(`(${formatDuration(durationMs)})`)}` : '';
|
|
924
|
-
if (!success) {
|
|
925
|
-
return `${theme.error('✗')} Install failed${durationStr}`;
|
|
926
|
-
}
|
|
927
|
-
// Try to extract package count from output
|
|
928
|
-
const addedMatch = output.match(/added\s+(\d+)\s+packages?/i);
|
|
929
|
-
const packageCount = addedMatch ? addedMatch[1] : null;
|
|
930
|
-
let summary = `${theme.success('✓')} Dependencies installed`;
|
|
931
|
-
if (packageCount) {
|
|
932
|
-
summary += ` ${theme.ui.muted(`(${packageCount} packages)`)}`;
|
|
933
|
-
}
|
|
934
|
-
else if (packages) {
|
|
935
|
-
const pkgList = Array.isArray(packages) ? packages : [packages];
|
|
936
|
-
summary += ` ${theme.ui.muted(`(${pkgList.length} packages)`)}`;
|
|
937
|
-
}
|
|
938
|
-
summary += durationStr;
|
|
939
|
-
return summary;
|
|
940
|
-
}
|
|
941
|
-
/**
|
|
942
|
-
* Format package info result
|
|
943
|
-
*/
|
|
944
|
-
function formatPackageInfoResult(args, output, success) {
|
|
945
|
-
const packageName = (args['package'] || args['name']) || '';
|
|
946
|
-
if (!success) {
|
|
947
|
-
return `${theme.error('✗')} Package info failed for ${packageName}`;
|
|
948
|
-
}
|
|
949
|
-
// Try to extract version
|
|
950
|
-
const versionMatch = output.match(/version[:\s]+["']?([^"'\s\n]+)/i);
|
|
951
|
-
const version = versionMatch ? versionMatch[1] : null;
|
|
952
|
-
if (version) {
|
|
953
|
-
return `${theme.success('✓')} ${theme.info(packageName)}@${version}`;
|
|
954
|
-
}
|
|
955
|
-
return `${theme.success('✓')} Package info: ${theme.info(packageName)}`;
|
|
956
|
-
}
|
|
957
|
-
/**
|
|
958
|
-
* Format git operation result
|
|
959
|
-
*/
|
|
960
|
-
function formatGitResult(toolName, args, output, success) {
|
|
961
|
-
const action = toolName.replace('git_', '');
|
|
962
|
-
if (!success) {
|
|
963
|
-
return `${theme.error('✗')} Git ${action} failed`;
|
|
964
|
-
}
|
|
965
|
-
switch (toolName) {
|
|
966
|
-
case 'git_release': {
|
|
967
|
-
const version = (args['version'] || args['tag']);
|
|
968
|
-
if (version) {
|
|
969
|
-
return `${theme.success('✓')} Released ${theme.info(version)}`;
|
|
970
|
-
}
|
|
971
|
-
return `${theme.success('✓')} Release created`;
|
|
972
|
-
}
|
|
973
|
-
case 'git_sync': {
|
|
974
|
-
// Try to extract ahead/behind from output
|
|
975
|
-
const aheadMatch = output.match(/(\d+)\s+commit.*ahead/i);
|
|
976
|
-
const behindMatch = output.match(/(\d+)\s+commit.*behind/i);
|
|
977
|
-
const parts = [];
|
|
978
|
-
if (aheadMatch)
|
|
979
|
-
parts.push(`${aheadMatch[1]} ahead`);
|
|
980
|
-
if (behindMatch)
|
|
981
|
-
parts.push(`${behindMatch[1]} behind`);
|
|
982
|
-
if (parts.length > 0) {
|
|
983
|
-
return `${theme.success('✓')} Synced ${theme.ui.muted(`(${parts.join(', ')})`)}`;
|
|
984
|
-
}
|
|
985
|
-
return `${theme.success('✓')} Git synced`;
|
|
986
|
-
}
|
|
987
|
-
case 'git_cleanup': {
|
|
988
|
-
const branchMatch = output.match(/deleted.*?(\d+)/i);
|
|
989
|
-
if (branchMatch) {
|
|
990
|
-
return `${theme.success('✓')} Cleaned up ${branchMatch[1]} branches`;
|
|
991
|
-
}
|
|
992
|
-
return `${theme.success('✓')} Git cleanup completed`;
|
|
993
|
-
}
|
|
994
|
-
default:
|
|
995
|
-
return `${theme.success('✓')} Git ${action} completed`;
|
|
996
|
-
}
|
|
997
|
-
}
|
|
998
|
-
/**
|
|
999
|
-
* Format docker result
|
|
1000
|
-
*/
|
|
1001
|
-
function formatDockerResult(toolName, args, output, success, durationMs) {
|
|
1002
|
-
const durationStr = durationMs ? ` ${theme.ui.muted(`(${formatDuration(durationMs)})`)}` : '';
|
|
1003
|
-
if (!success) {
|
|
1004
|
-
return `${theme.error('✗')} Docker ${toolName.replace('docker_', '')} failed${durationStr}`;
|
|
1005
|
-
}
|
|
1006
|
-
switch (toolName) {
|
|
1007
|
-
case 'docker_build': {
|
|
1008
|
-
const tag = (args['tag'] || args['image']);
|
|
1009
|
-
// Try to extract image ID from output
|
|
1010
|
-
const imageMatch = output.match(/(?:Successfully built|sha256:)\s*([a-f0-9]{12})/i);
|
|
1011
|
-
if (tag) {
|
|
1012
|
-
return `${theme.success('✓')} Built image ${theme.info(tag)}${durationStr}`;
|
|
1013
|
-
}
|
|
1014
|
-
if (imageMatch) {
|
|
1015
|
-
return `${theme.success('✓')} Built image ${theme.info(imageMatch[1] || '')}${durationStr}`;
|
|
1016
|
-
}
|
|
1017
|
-
return `${theme.success('✓')} Docker build completed${durationStr}`;
|
|
1018
|
-
}
|
|
1019
|
-
case 'docker_compose': {
|
|
1020
|
-
const action = (args['action'] || args['command']) || 'up';
|
|
1021
|
-
return `${theme.success('✓')} Docker compose ${action}${durationStr}`;
|
|
1022
|
-
}
|
|
1023
|
-
default:
|
|
1024
|
-
return `${theme.success('✓')} Docker operation completed${durationStr}`;
|
|
1025
|
-
}
|
|
1026
|
-
}
|
|
1027
|
-
/**
|
|
1028
|
-
* Format code analysis result
|
|
1029
|
-
*/
|
|
1030
|
-
function formatCodeAnalysisResult(toolName, args, output, success) {
|
|
1031
|
-
const filePath = (args['file_path'] || args['path'] || args['file']);
|
|
1032
|
-
const displayPath = filePath ? truncatePathForDisplay(filePath, 40) : '';
|
|
1033
|
-
if (!success) {
|
|
1034
|
-
return `${theme.error('✗')} Analysis failed${displayPath ? ` for ${displayPath}` : ''}`;
|
|
1035
|
-
}
|
|
1036
|
-
const toolLabels = {
|
|
1037
|
-
'analyze_code_structure': 'Structure analyzed',
|
|
1038
|
-
'find_dependencies': 'Dependencies found',
|
|
1039
|
-
'check_code_complexity': 'Complexity checked',
|
|
1040
|
-
'advanced_ast_analysis': 'AST analyzed',
|
|
1041
|
-
'analyze_code_complexity': 'Complexity analyzed',
|
|
1042
|
-
'suggest_refactoring': 'Refactoring suggestions',
|
|
1043
|
-
'generate_code_quality_report': 'Quality report generated',
|
|
1044
|
-
};
|
|
1045
|
-
const label = toolLabels[toolName] || 'Analysis completed';
|
|
1046
|
-
// Try to extract counts from output
|
|
1047
|
-
const issueMatch = output.match(/(\d+)\s*(?:issue|warning|suggestion)/i);
|
|
1048
|
-
if (issueMatch) {
|
|
1049
|
-
return `${theme.success('✓')} ${label}: ${issueMatch[1]} items${displayPath ? ` in ${displayPath}` : ''}`;
|
|
1050
|
-
}
|
|
1051
|
-
return `${theme.success('✓')} ${label}${displayPath ? ` for ${displayPath}` : ''}`;
|
|
1052
|
-
}
|
|
1053
|
-
/**
|
|
1054
|
-
* Format testing tool result
|
|
1055
|
-
*/
|
|
1056
|
-
function formatTestingToolResult(toolName, args, output, success) {
|
|
1057
|
-
const filePath = (args['file_path'] || args['path']);
|
|
1058
|
-
const displayPath = filePath ? truncatePathForDisplay(filePath, 40) : '';
|
|
1059
|
-
if (!success) {
|
|
1060
|
-
return `${theme.error('✗')} ${toolName.replace(/_/g, ' ')} failed`;
|
|
1061
|
-
}
|
|
1062
|
-
switch (toolName) {
|
|
1063
|
-
case 'generate_test_templates': {
|
|
1064
|
-
const countMatch = output.match(/(\d+)\s*(?:test|template)/i);
|
|
1065
|
-
if (countMatch) {
|
|
1066
|
-
return `${theme.success('✓')} Generated ${countMatch[1]} test templates`;
|
|
1067
|
-
}
|
|
1068
|
-
return `${theme.success('✓')} Test templates generated`;
|
|
1069
|
-
}
|
|
1070
|
-
case 'run_coverage_analysis':
|
|
1071
|
-
case 'summarize_coverage_report': {
|
|
1072
|
-
const coverageMatch = output.match(/(\d+(?:\.\d+)?)\s*%/);
|
|
1073
|
-
if (coverageMatch) {
|
|
1074
|
-
const pct = parseFloat(coverageMatch[1] || '0');
|
|
1075
|
-
const color = pct >= 80 ? theme.success : pct >= 60 ? theme.warning : theme.error;
|
|
1076
|
-
return `${theme.success('✓')} Coverage: ${color(`${pct}%`)}${displayPath ? ` for ${displayPath}` : ''}`;
|
|
1077
|
-
}
|
|
1078
|
-
return `${theme.success('✓')} Coverage analyzed${displayPath ? ` for ${displayPath}` : ''}`;
|
|
1079
|
-
}
|
|
1080
|
-
case 'analyze_test_coverage': {
|
|
1081
|
-
const coverageMatch = output.match(/(\d+(?:\.\d+)?)\s*%/);
|
|
1082
|
-
if (coverageMatch) {
|
|
1083
|
-
return `${theme.success('✓')} Test coverage: ${coverageMatch[1]}%`;
|
|
1084
|
-
}
|
|
1085
|
-
return `${theme.success('✓')} Test coverage analyzed`;
|
|
1086
|
-
}
|
|
1087
|
-
case 'generate_comprehensive_tests': {
|
|
1088
|
-
return `${theme.success('✓')} Comprehensive tests generated${displayPath ? ` for ${displayPath}` : ''}`;
|
|
1089
|
-
}
|
|
1090
|
-
default:
|
|
1091
|
-
return `${theme.success('✓')} Testing tool completed`;
|
|
1092
|
-
}
|
|
1093
|
-
}
|
|
1094
|
-
/**
|
|
1095
|
-
* Format lint result
|
|
1096
|
-
*/
|
|
1097
|
-
function formatLintResult(toolName, args, output, success) {
|
|
1098
|
-
const filePath = (args['file_path'] || args['path']);
|
|
1099
|
-
const displayPath = filePath ? truncatePathForDisplay(filePath, 40) : '';
|
|
1100
|
-
// Try to extract error/warning counts
|
|
1101
|
-
const errorMatch = output.match(/(\d+)\s*error/i);
|
|
1102
|
-
const warnMatch = output.match(/(\d+)\s*warning/i);
|
|
1103
|
-
const errors = errorMatch ? parseInt(errorMatch[1] || '0', 10) : 0;
|
|
1104
|
-
const warnings = warnMatch ? parseInt(warnMatch[1] || '0', 10) : 0;
|
|
1105
|
-
const statusIcon = errors === 0 ? theme.success('✓') : theme.error('✗');
|
|
1106
|
-
switch (toolName) {
|
|
1107
|
-
case 'run_lint_checks': {
|
|
1108
|
-
let summary = `${statusIcon} Lint`;
|
|
1109
|
-
if (displayPath)
|
|
1110
|
-
summary += ` ${displayPath}`;
|
|
1111
|
-
const counts = [];
|
|
1112
|
-
if (errors > 0)
|
|
1113
|
-
counts.push(theme.error(`${errors} errors`));
|
|
1114
|
-
if (warnings > 0)
|
|
1115
|
-
counts.push(theme.warning(`${warnings} warnings`));
|
|
1116
|
-
if (counts.length > 0) {
|
|
1117
|
-
summary += `: ${counts.join(', ')}`;
|
|
1118
|
-
}
|
|
1119
|
-
else if (success) {
|
|
1120
|
-
summary += ': clean';
|
|
1121
|
-
}
|
|
1122
|
-
return summary;
|
|
1123
|
-
}
|
|
1124
|
-
case 'inspect_code_quality': {
|
|
1125
|
-
return `${statusIcon} Code quality inspected${displayPath ? ` for ${displayPath}` : ''}`;
|
|
1126
|
-
}
|
|
1127
|
-
case 'list_lint_rules': {
|
|
1128
|
-
const ruleMatch = output.match(/(\d+)\s*rule/i);
|
|
1129
|
-
if (ruleMatch) {
|
|
1130
|
-
return `${theme.success('✓')} Found ${ruleMatch[1]} lint rules`;
|
|
1131
|
-
}
|
|
1132
|
-
return `${theme.success('✓')} Lint rules listed`;
|
|
1133
|
-
}
|
|
1134
|
-
default:
|
|
1135
|
-
return `${statusIcon} Lint completed`;
|
|
1136
|
-
}
|
|
1137
|
-
}
|
|
1138
|
-
/**
|
|
1139
|
-
* Format cloud deployment result
|
|
1140
|
-
*/
|
|
1141
|
-
function formatCloudResult(toolName, args, output, success) {
|
|
1142
|
-
const provider = (args['provider'] || args['platform']);
|
|
1143
|
-
if (!success) {
|
|
1144
|
-
return `${theme.error('✗')} ${toolName.replace(/_/g, ' ')} failed`;
|
|
1145
|
-
}
|
|
1146
|
-
switch (toolName) {
|
|
1147
|
-
case 'cloud_status': {
|
|
1148
|
-
return `${theme.success('✓')} Cloud status checked${provider ? ` (${provider})` : ''}`;
|
|
1149
|
-
}
|
|
1150
|
-
case 'cloud_deploy':
|
|
1151
|
-
case 'firebase_deploy':
|
|
1152
|
-
case 'aliyun_deploy': {
|
|
1153
|
-
// Try to extract URL from output
|
|
1154
|
-
const urlMatch = output.match(/https?:\/\/[^\s]+/);
|
|
1155
|
-
if (urlMatch) {
|
|
1156
|
-
return `${theme.success('✓')} Deployed to ${theme.info(urlMatch[0])}`;
|
|
1157
|
-
}
|
|
1158
|
-
return `${theme.success('✓')} Deployment successful${provider ? ` (${provider})` : ''}`;
|
|
1159
|
-
}
|
|
1160
|
-
case 'cloud_init': {
|
|
1161
|
-
return `${theme.success('✓')} Cloud project initialized${provider ? ` (${provider})` : ''}`;
|
|
1162
|
-
}
|
|
1163
|
-
case 'cloud_login': {
|
|
1164
|
-
return `${theme.success('✓')} Logged in${provider ? ` to ${provider}` : ''}`;
|
|
1165
|
-
}
|
|
1166
|
-
default:
|
|
1167
|
-
return `${theme.success('✓')} Cloud operation completed`;
|
|
1168
|
-
}
|
|
1169
|
-
}
|
|
1170
|
-
/**
|
|
1171
|
-
* Format browser automation result
|
|
1172
|
-
*/
|
|
1173
|
-
function formatBrowserResult(toolName, args, output, success) {
|
|
1174
|
-
if (!success) {
|
|
1175
|
-
return `${theme.error('✗')} Browser ${toolName.replace('browser_', '')} failed`;
|
|
1176
|
-
}
|
|
1177
|
-
switch (toolName) {
|
|
1178
|
-
case 'browser_create_session': {
|
|
1179
|
-
const sessionMatch = output.match(/session[:\s]+["']?([^"'\s\n]+)/i);
|
|
1180
|
-
if (sessionMatch) {
|
|
1181
|
-
return `${theme.success('✓')} Browser session created: ${theme.info(sessionMatch[1] || '')}`;
|
|
1182
|
-
}
|
|
1183
|
-
return `${theme.success('✓')} Browser session created`;
|
|
1184
|
-
}
|
|
1185
|
-
case 'browser_navigate': {
|
|
1186
|
-
const url = (args['url']);
|
|
1187
|
-
if (url) {
|
|
1188
|
-
try {
|
|
1189
|
-
const hostname = new URL(url).hostname;
|
|
1190
|
-
return `${theme.success('✓')} Navigated to ${theme.info(hostname)}`;
|
|
1191
|
-
}
|
|
1192
|
-
catch {
|
|
1193
|
-
return `${theme.success('✓')} Navigated to page`;
|
|
1194
|
-
}
|
|
1195
|
-
}
|
|
1196
|
-
return `${theme.success('✓')} Navigated`;
|
|
1197
|
-
}
|
|
1198
|
-
case 'browser_click': {
|
|
1199
|
-
const selector = (args['selector']);
|
|
1200
|
-
return `${theme.success('✓')} Clicked ${selector ? theme.dim(selector) : 'element'}`;
|
|
1201
|
-
}
|
|
1202
|
-
case 'browser_type': {
|
|
1203
|
-
const selector = (args['selector']);
|
|
1204
|
-
return `${theme.success('✓')} Typed text ${selector ? `in ${theme.dim(selector)}` : ''}`;
|
|
1205
|
-
}
|
|
1206
|
-
case 'browser_screenshot': {
|
|
1207
|
-
const path = (args['path'] || args['file_path']);
|
|
1208
|
-
if (path) {
|
|
1209
|
-
return `${theme.success('✓')} Screenshot saved: ${truncatePathForDisplay(path, 40)}`;
|
|
1210
|
-
}
|
|
1211
|
-
return `${theme.success('✓')} Screenshot captured`;
|
|
1212
|
-
}
|
|
1213
|
-
case 'browser_close_session': {
|
|
1214
|
-
return `${theme.success('✓')} Browser session closed`;
|
|
1215
|
-
}
|
|
1216
|
-
default:
|
|
1217
|
-
return `${theme.success('✓')} Browser action completed`;
|
|
1218
|
-
}
|
|
1219
|
-
}
|
|
1220
|
-
/**
|
|
1221
|
-
* Format email result
|
|
1222
|
-
*/
|
|
1223
|
-
function formatEmailResult(toolName, args, _output, success) {
|
|
1224
|
-
if (!success) {
|
|
1225
|
-
return `${theme.error('✗')} ${toolName.replace(/_/g, ' ')} failed`;
|
|
1226
|
-
}
|
|
1227
|
-
switch (toolName) {
|
|
1228
|
-
case 'send_email': {
|
|
1229
|
-
const to = (args['to']);
|
|
1230
|
-
const recipients = Array.isArray(to) ? to.length : (to ? 1 : 0);
|
|
1231
|
-
return `${theme.success('✓')} Email sent${recipients ? ` to ${recipients} recipient${recipients === 1 ? '' : 's'}` : ''}`;
|
|
1232
|
-
}
|
|
1233
|
-
case 'send_batch_emails': {
|
|
1234
|
-
const emails = (args['emails']);
|
|
1235
|
-
const count = emails?.length || 0;
|
|
1236
|
-
return `${theme.success('✓')} Sent ${count} email${count === 1 ? '' : 's'}`;
|
|
1237
|
-
}
|
|
1238
|
-
case 'verify_email_config': {
|
|
1239
|
-
return `${theme.success('✓')} Email config verified`;
|
|
1240
|
-
}
|
|
1241
|
-
default:
|
|
1242
|
-
return `${theme.success('✓')} Email operation completed`;
|
|
1243
|
-
}
|
|
1244
|
-
}
|
|
1245
|
-
/**
|
|
1246
|
-
* Format skill result
|
|
1247
|
-
*/
|
|
1248
|
-
function formatSkillResult(toolName, args, output, success) {
|
|
1249
|
-
if (!success) {
|
|
1250
|
-
return `${theme.error('✗')} Skill operation failed`;
|
|
1251
|
-
}
|
|
1252
|
-
switch (toolName) {
|
|
1253
|
-
case 'ListSkills': {
|
|
1254
|
-
const skillMatch = output.match(/(\d+)\s*skill/i);
|
|
1255
|
-
if (skillMatch) {
|
|
1256
|
-
return `${theme.success('✓')} Found ${skillMatch[1]} skills`;
|
|
1257
|
-
}
|
|
1258
|
-
return `${theme.success('✓')} Skills listed`;
|
|
1259
|
-
}
|
|
1260
|
-
case 'Skill': {
|
|
1261
|
-
const skillName = (args['skill'] || args['name']);
|
|
1262
|
-
if (skillName) {
|
|
1263
|
-
return `${theme.success('✓')} Skill "${skillName}" executed`;
|
|
1264
|
-
}
|
|
1265
|
-
return `${theme.success('✓')} Skill executed`;
|
|
1266
|
-
}
|
|
1267
|
-
default:
|
|
1268
|
-
return `${theme.success('✓')} Skill completed`;
|
|
1269
|
-
}
|
|
1270
|
-
}
|
|
1271
|
-
function formatPlanUpdateResult(args, _output, success) {
|
|
1272
|
-
if (!success) {
|
|
1273
|
-
return `${theme.error('✗')} Plan update failed`;
|
|
1274
|
-
}
|
|
1275
|
-
const plan = normalizePlanItems(args['plan']);
|
|
1276
|
-
const explanation = typeof args['explanation'] === 'string' ? args['explanation'].trim() : '';
|
|
1277
|
-
const width = resolvePlanWidth();
|
|
1278
|
-
const body = formatPlan(plan, { width, heading: 'Updated Plan' });
|
|
1279
|
-
if (!explanation) {
|
|
1280
|
-
return body;
|
|
1281
|
-
}
|
|
1282
|
-
const wrappedNote = wrapPlanText(explanation, ' ', width);
|
|
1283
|
-
return `${body}\n${wrappedNote.join('\n')}`;
|
|
1284
|
-
}
|
|
1285
|
-
/**
|
|
1286
|
-
* Format plan mode result
|
|
1287
|
-
*/
|
|
1288
|
-
function formatPlanModeResult(_args, _output, success) {
|
|
1289
|
-
if (!success) {
|
|
1290
|
-
return `${theme.error('✗')} Failed to exit plan mode`;
|
|
1291
|
-
}
|
|
1292
|
-
return `${theme.success('✓')} Exited plan mode`;
|
|
1293
|
-
}
|
|
1294
|
-
/**
|
|
1295
|
-
* Format repo checks result
|
|
1296
|
-
*/
|
|
1297
|
-
function formatRepoChecksResult(args, output, success) {
|
|
1298
|
-
const checks = (args['checks']);
|
|
1299
|
-
const checkCount = checks?.length || 0;
|
|
1300
|
-
// Try to extract pass/fail counts
|
|
1301
|
-
const passMatch = output.match(/(\d+)\s*pass/i);
|
|
1302
|
-
const failMatch = output.match(/(\d+)\s*fail/i);
|
|
1303
|
-
const passed = passMatch ? parseInt(passMatch[1] || '0', 10) : 0;
|
|
1304
|
-
const failed = failMatch ? parseInt(failMatch[1] || '0', 10) : 0;
|
|
1305
|
-
const statusIcon = success && failed === 0 ? theme.success('✓') : theme.error('✗');
|
|
1306
|
-
if (passed > 0 || failed > 0) {
|
|
1307
|
-
const counts = [];
|
|
1308
|
-
if (passed > 0)
|
|
1309
|
-
counts.push(theme.success(`${passed} passed`));
|
|
1310
|
-
if (failed > 0)
|
|
1311
|
-
counts.push(theme.error(`${failed} failed`));
|
|
1312
|
-
return `${statusIcon} Repo checks: ${counts.join(', ')}`;
|
|
1313
|
-
}
|
|
1314
|
-
return `${statusIcon} Repo checks${checkCount > 0 ? ` (${checkCount} checks)` : ''} ${success ? 'passed' : 'failed'}`;
|
|
1315
|
-
}
|
|
1316
|
-
/**
|
|
1317
|
-
* Format learn tool result
|
|
1318
|
-
*/
|
|
1319
|
-
function formatLearnResult(toolName, args, output, success) {
|
|
1320
|
-
if (!success) {
|
|
1321
|
-
return `${theme.error('✗')} Learning failed`;
|
|
1322
|
-
}
|
|
1323
|
-
switch (toolName) {
|
|
1324
|
-
case 'learn_codebase': {
|
|
1325
|
-
const fileMatch = output.match(/(\d+)\s*file/i);
|
|
1326
|
-
if (fileMatch) {
|
|
1327
|
-
return `${theme.success('✓')} Learned codebase: ${fileMatch[1]} files analyzed`;
|
|
1328
|
-
}
|
|
1329
|
-
return `${theme.success('✓')} Codebase learned`;
|
|
1330
|
-
}
|
|
1331
|
-
case 'learn_file': {
|
|
1332
|
-
const filePath = (args['file_path'] || args['path']);
|
|
1333
|
-
if (filePath) {
|
|
1334
|
-
return `${theme.success('✓')} Learned: ${truncatePathForDisplay(filePath, 40)}`;
|
|
1335
|
-
}
|
|
1336
|
-
return `${theme.success('✓')} File learned`;
|
|
1337
|
-
}
|
|
1338
|
-
case 'learn_topic': {
|
|
1339
|
-
const topic = (args['topic']);
|
|
1340
|
-
if (topic) {
|
|
1341
|
-
return `${theme.success('✓')} Learned topic: ${topic}`;
|
|
1342
|
-
}
|
|
1343
|
-
return `${theme.success('✓')} Topic learned`;
|
|
1344
|
-
}
|
|
1345
|
-
case 'learn_summary': {
|
|
1346
|
-
return `${theme.success('✓')} Summary generated`;
|
|
1347
|
-
}
|
|
1348
|
-
case 'explore': {
|
|
1349
|
-
const query = (args['query']);
|
|
1350
|
-
const filesMatch = output.match(/Found\s+(\d+)\s+(?:file|relevant)/i);
|
|
1351
|
-
const symbolsMatch = output.match(/Found\s+(\d+)\s+symbol/i);
|
|
1352
|
-
const filesCount = filesMatch ? filesMatch[1] : null;
|
|
1353
|
-
const symbolsCount = symbolsMatch ? symbolsMatch[1] : null;
|
|
1354
|
-
if (filesCount || symbolsCount) {
|
|
1355
|
-
const parts = [];
|
|
1356
|
-
if (filesCount)
|
|
1357
|
-
parts.push(`${filesCount} files`);
|
|
1358
|
-
if (symbolsCount)
|
|
1359
|
-
parts.push(`${symbolsCount} symbols`);
|
|
1360
|
-
return `${theme.success('✓')} Explored: ${parts.join(', ')}`;
|
|
1361
|
-
}
|
|
1362
|
-
if (query) {
|
|
1363
|
-
return `${theme.success('✓')} Explored: "${query.slice(0, 30)}${query.length > 30 ? '...' : ''}"`;
|
|
1364
|
-
}
|
|
1365
|
-
return `${theme.success('✓')} Exploration complete`;
|
|
1366
|
-
}
|
|
1367
|
-
case 'explore_index': {
|
|
1368
|
-
const action = (args['action']);
|
|
1369
|
-
const indexMatch = output.match(/(\d+)\s*files/i);
|
|
1370
|
-
if (action === 'rebuild' && indexMatch) {
|
|
1371
|
-
return `${theme.success('✓')} Index rebuilt: ${indexMatch[1]} files`;
|
|
1372
|
-
}
|
|
1373
|
-
if (action === 'status' && indexMatch) {
|
|
1374
|
-
return `${theme.info('ℹ')} Index: ${indexMatch[1]} files`;
|
|
1375
|
-
}
|
|
1376
|
-
return `${theme.success('✓')} Index ${action || 'managed'}`;
|
|
1377
|
-
}
|
|
1378
|
-
default:
|
|
1379
|
-
return `${theme.success('✓')} Learning completed`;
|
|
1380
|
-
}
|
|
1381
|
-
}
|
|
1382
|
-
// ============================================================================
|
|
1383
|
-
// ADVANCED PROGRESS INDICATORS
|
|
1384
|
-
// ============================================================================
|
|
1385
|
-
/**
|
|
1386
|
-
* Format a compact progress bar
|
|
1387
|
-
*/
|
|
1388
|
-
export function formatCompactProgressBar(current, total, options = {}) {
|
|
1389
|
-
const { width = 15, style = 'bar' } = options;
|
|
1390
|
-
const percentage = Math.min(100, Math.max(0, Math.round((current / total) * 100)));
|
|
1391
|
-
const filled = Math.round((current / total) * width);
|
|
1392
|
-
const empty = width - filled;
|
|
1393
|
-
let bar;
|
|
1394
|
-
switch (style) {
|
|
1395
|
-
case 'braille': {
|
|
1396
|
-
// Smooth braille progress (8 states per character)
|
|
1397
|
-
const fullBlocks = Math.floor((current / total) * width);
|
|
1398
|
-
const remainder = ((current / total) * width) - fullBlocks;
|
|
1399
|
-
const partials = [' ', '⡀', '⡄', '⡆', '⡇', '⣇', '⣧', '⣷', '⣿'];
|
|
1400
|
-
const partialIndex = Math.floor(remainder * 8);
|
|
1401
|
-
bar = '⣿'.repeat(fullBlocks);
|
|
1402
|
-
if (fullBlocks < width) {
|
|
1403
|
-
bar += partials[partialIndex] ?? ' ';
|
|
1404
|
-
bar += ' '.repeat(width - fullBlocks - 1);
|
|
1405
|
-
}
|
|
1406
|
-
bar = theme.progress?.bar?.(bar) ?? theme.info(bar);
|
|
1407
|
-
break;
|
|
1408
|
-
}
|
|
1409
|
-
case 'dots':
|
|
1410
|
-
bar = theme.success('●').repeat(filled) + theme.ui.muted('○').repeat(empty);
|
|
1411
|
-
break;
|
|
1412
|
-
case 'bar':
|
|
1413
|
-
default:
|
|
1414
|
-
bar = (theme.progress?.bar ?? theme.info)(progressChars.filled.repeat(filled)) +
|
|
1415
|
-
(theme.progress?.empty ?? theme.ui.muted)(progressChars.empty.repeat(empty));
|
|
1416
|
-
}
|
|
1417
|
-
return `[${bar}] ${(theme.progress?.percentage ?? theme.warning)(`${percentage}%`)}`;
|
|
1418
|
-
}
|
|
1419
|
-
/**
|
|
1420
|
-
* Format a micro progress indicator (fits in status line)
|
|
1421
|
-
*/
|
|
1422
|
-
export function formatMicroProgress(current, total) {
|
|
1423
|
-
const percentage = Math.min(100, Math.max(0, Math.round((current / total) * 100)));
|
|
1424
|
-
// Use single-char block progress
|
|
1425
|
-
const blocks = ['░', '▒', '▓', '█'];
|
|
1426
|
-
const blockIndex = Math.min(3, Math.floor(percentage / 25));
|
|
1427
|
-
const block = blocks[blockIndex] ?? '░';
|
|
1428
|
-
return `${theme.info(block)}${percentage}%`;
|
|
1429
|
-
}
|
|
1430
|
-
/**
|
|
1431
|
-
* Format a spinner with elapsed time
|
|
1432
|
-
*/
|
|
1433
|
-
export function formatSpinnerWithTime(frame, label, elapsedMs) {
|
|
1434
|
-
const elapsed = formatDuration(elapsedMs);
|
|
1435
|
-
return `${theme.info(frame)} ${label} ${theme.ui.muted(`(${elapsed})`)}`;
|
|
1436
|
-
}
|
|
1437
|
-
/**
|
|
1438
|
-
* Format multiple tool operations on a single line
|
|
1439
|
-
*/
|
|
1440
|
-
export function formatCompactToolLine(operations, options = {}) {
|
|
1441
|
-
const { separator = ' · ', maxWidth = 80 } = options;
|
|
1442
|
-
const badges = [];
|
|
1443
|
-
let currentLength = 0;
|
|
1444
|
-
for (const op of operations) {
|
|
1445
|
-
const icon = op.status === 'success' ? icons.success :
|
|
1446
|
-
op.status === 'error' ? icons.error : icons.running;
|
|
1447
|
-
const color = op.status === 'success' ? theme.success :
|
|
1448
|
-
op.status === 'error' ? theme.error : theme.info;
|
|
1449
|
-
let badge = `${color(icon)} ${theme.tool(op.name)}`;
|
|
1450
|
-
if (op.summary) {
|
|
1451
|
-
badge += ` ${theme.ui.muted(op.summary)}`;
|
|
1452
|
-
}
|
|
1453
|
-
const badgeLength = badge.replace(/\u001B\[[0-9;]*m/g, '').length;
|
|
1454
|
-
const sepLength = badges.length > 0 ? separator.replace(/\u001B\[[0-9;]*m/g, '').length : 0;
|
|
1455
|
-
if (currentLength + sepLength + badgeLength > maxWidth - 5) {
|
|
1456
|
-
const remaining = operations.length - badges.length;
|
|
1457
|
-
if (remaining > 0) {
|
|
1458
|
-
badges.push(theme.ui.muted(`+${remaining} more`));
|
|
1459
|
-
}
|
|
1460
|
-
break;
|
|
1461
|
-
}
|
|
1462
|
-
badges.push(badge);
|
|
1463
|
-
currentLength += sepLength + badgeLength;
|
|
1464
|
-
}
|
|
1465
|
-
return badges.join(theme.ui.muted(separator));
|
|
1466
|
-
}
|
|
1467
|
-
/**
|
|
1468
|
-
* Format a file operation summary with additions/removals
|
|
1469
|
-
*/
|
|
1470
|
-
export function formatFileOpSummary(path, type, stats) {
|
|
1471
|
-
const shortPath = truncatePathForDisplay(path, 40);
|
|
1472
|
-
const icon = type === 'read' ? icons.success :
|
|
1473
|
-
type === 'edit' ? icons.success : icons.success;
|
|
1474
|
-
const color = theme.success;
|
|
1475
|
-
const parts = [
|
|
1476
|
-
`${color(icon)} ${theme.file?.path?.(shortPath) ?? theme.info(shortPath)}`,
|
|
1477
|
-
];
|
|
1478
|
-
if (stats) {
|
|
1479
|
-
const details = [];
|
|
1480
|
-
if (stats.lines !== undefined) {
|
|
1481
|
-
details.push(`${stats.lines} lines`);
|
|
1482
|
-
}
|
|
1483
|
-
if (stats.additions !== undefined && stats.additions > 0) {
|
|
1484
|
-
details.push((theme.file?.additions ?? theme.success)(`+${stats.additions}`));
|
|
1485
|
-
}
|
|
1486
|
-
if (stats.removals !== undefined && stats.removals > 0) {
|
|
1487
|
-
details.push((theme.file?.removals ?? theme.error)(`-${stats.removals}`));
|
|
1488
|
-
}
|
|
1489
|
-
if (details.length > 0) {
|
|
1490
|
-
parts.push(theme.ui.muted(`(${details.join(', ')})`));
|
|
1491
|
-
}
|
|
1492
|
-
}
|
|
1493
|
-
return parts.join(' ');
|
|
1494
|
-
}
|
|
1495
|
-
/**
|
|
1496
|
-
* Format a search result summary
|
|
1497
|
-
*/
|
|
1498
|
-
export function formatSearchOpSummary(pattern, matchCount, fileCount, durationMs) {
|
|
1499
|
-
const truncPattern = pattern.length > 25 ? `${pattern.slice(0, 22)}...` : pattern;
|
|
1500
|
-
if (matchCount === 0) {
|
|
1501
|
-
return `${theme.warning(icons.pending)} No matches for "${truncPattern}"`;
|
|
1502
|
-
}
|
|
1503
|
-
const parts = [
|
|
1504
|
-
`${theme.success(icons.success)} Found`,
|
|
1505
|
-
theme.info(`${matchCount}`),
|
|
1506
|
-
matchCount === 1 ? 'match' : 'matches',
|
|
1507
|
-
];
|
|
1508
|
-
if (fileCount && fileCount > 0) {
|
|
1509
|
-
parts.push('in', theme.info(`${fileCount}`), fileCount === 1 ? 'file' : 'files');
|
|
1510
|
-
}
|
|
1511
|
-
parts.push(theme.ui.muted(`for "${truncPattern}"`));
|
|
1512
|
-
if (durationMs) {
|
|
1513
|
-
parts.push(theme.ui.muted(`(${formatDuration(durationMs)})`));
|
|
1514
|
-
}
|
|
1515
|
-
return parts.join(' ');
|
|
1516
|
-
}
|
|
1517
|
-
/**
|
|
1518
|
-
* Format a context usage badge
|
|
1519
|
-
*/
|
|
1520
|
-
export function formatContextBadge(usedPercentage) {
|
|
1521
|
-
const remaining = 100 - usedPercentage;
|
|
1522
|
-
const color = usedPercentage > 80 ? theme.error :
|
|
1523
|
-
usedPercentage > 60 ? theme.warning : theme.success;
|
|
1524
|
-
return `${color(icons.context)}${remaining}%`;
|
|
1525
|
-
}
|
|
1526
|
-
//# sourceMappingURL=toolDisplay.js.map
|