erosolar-cli 1.7.413 → 1.7.415
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/agents/erosolar-code.rules.json +1 -1
- package/agents/general.rules.json +1 -1
- package/dist/core/bashCommandGuidance.d.ts +16 -0
- package/dist/core/bashCommandGuidance.d.ts.map +1 -0
- package/dist/core/bashCommandGuidance.js +40 -0
- package/dist/core/bashCommandGuidance.js.map +1 -0
- package/dist/core/toolPreconditions.d.ts.map +1 -1
- package/dist/core/toolPreconditions.js +8 -18
- package/dist/core/toolPreconditions.js.map +1 -1
- package/dist/core/toolRuntime.js +1 -1
- package/dist/core/toolRuntime.js.map +1 -1
- package/dist/core/toolValidation.d.ts +1 -2
- package/dist/core/toolValidation.d.ts.map +1 -1
- package/dist/core/toolValidation.js +27 -27
- package/dist/core/toolValidation.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +1 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +32 -20
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/systemPrompt.js +1 -1
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/tools/bashTools.d.ts.map +1 -1
- package/dist/tools/bashTools.js +7 -18
- package/dist/tools/bashTools.js.map +1 -1
- package/dist/ui/toolDisplay.d.ts.map +1 -1
- package/dist/ui/toolDisplay.js +0 -1
- package/dist/ui/toolDisplay.js.map +1 -1
- package/package.json +1 -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/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 -881
- 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/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/claudeCodeFeatures.d.ts +0 -64
- package/dist/core/claudeCodeFeatures.d.ts.map +0 -1
- package/dist/core/claudeCodeFeatures.js +0 -163
- package/dist/core/claudeCodeFeatures.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 -67
- package/dist/core/preferences.d.ts.map +0 -1
- package/dist/core/preferences.js +0 -314
- 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/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/updateManager.d.ts +0 -62
- package/dist/core/updateManager.d.ts.map +0 -1
- package/dist/core/updateManager.js +0 -266
- package/dist/core/updateManager.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 -475
- 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/keyboardShortcuts.d.ts +0 -53
- package/dist/shell/keyboardShortcuts.d.ts.map +0 -1
- package/dist/shell/keyboardShortcuts.js +0 -166
- package/dist/shell/keyboardShortcuts.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 -408
- package/dist/shell/shellApp.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/terminalInput.d.ts +0 -617
- package/dist/shell/terminalInput.d.ts.map +0 -1
- package/dist/shell/terminalInput.js +0 -2633
- package/dist/shell/terminalInput.js.map +0 -1
- package/dist/shell/terminalInputAdapter.d.ts +0 -263
- package/dist/shell/terminalInputAdapter.d.ts.map +0 -1
- package/dist/shell/terminalInputAdapter.js +0 -406
- package/dist/shell/terminalInputAdapter.js.map +0 -1
- package/dist/shell/updateManager.d.ts +0 -3
- package/dist/shell/updateManager.d.ts.map +0 -1
- package/dist/shell/updateManager.js +0 -120
- package/dist/shell/updateManager.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/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 -152
- package/dist/tools/learnTools.d.ts.map +0 -1
- package/dist/tools/learnTools.js +0 -1942
- 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 -1291
- 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 -207
- 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/ShellUIAdapter.d.ts +0 -194
- package/dist/ui/ShellUIAdapter.d.ts.map +0 -1
- package/dist/ui/ShellUIAdapter.js +0 -1069
- package/dist/ui/ShellUIAdapter.js.map +0 -1
- package/dist/ui/UnifiedUIController.d.ts +0 -70
- package/dist/ui/UnifiedUIController.d.ts.map +0 -1
- package/dist/ui/UnifiedUIController.js +0 -190
- package/dist/ui/UnifiedUIController.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 -324
- package/dist/ui/display.d.ts.map +0 -1
- package/dist/ui/display.js +0 -1328
- 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 -20
- package/dist/ui/streamingFormatter.d.ts.map +0 -1
- package/dist/ui/streamingFormatter.js +0 -92
- package/dist/ui/streamingFormatter.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/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/display.js
DELETED
|
@@ -1,1328 +0,0 @@
|
|
|
1
|
-
import { createSpinner } from 'nanospinner';
|
|
2
|
-
import { clearScreenDown, cursorTo } from 'node:readline';
|
|
3
|
-
import { theme, icons } from './theme.js';
|
|
4
|
-
import { formatRichContent, renderMessagePanel, renderMessageBody } from './richText.js';
|
|
5
|
-
import { getTerminalColumns } from './layout.js';
|
|
6
|
-
import { highlightError } from './textHighlighter.js';
|
|
7
|
-
import { renderSectionHeading } from './designSystem.js';
|
|
8
|
-
import { isPlainOutputMode } from './outputMode.js';
|
|
9
|
-
import { writeLock } from './writeLock.js';
|
|
10
|
-
import { renderStatusLine } from './unified/layout.js';
|
|
11
|
-
import { isStreamingMode } from './globalWriteLock.js';
|
|
12
|
-
/**
|
|
13
|
-
* Output lock to prevent race conditions during spinner/stream output.
|
|
14
|
-
* Ensures that spinner frames don't interleave with streamed content.
|
|
15
|
-
* Uses a simple lock mechanism suitable for Node.js single-threaded event loop.
|
|
16
|
-
*/
|
|
17
|
-
class OutputLock {
|
|
18
|
-
static instance = null;
|
|
19
|
-
locked = false;
|
|
20
|
-
pendingCallbacks = [];
|
|
21
|
-
static getInstance() {
|
|
22
|
-
if (!OutputLock.instance) {
|
|
23
|
-
OutputLock.instance = new OutputLock();
|
|
24
|
-
}
|
|
25
|
-
return OutputLock.instance;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Synchronously check if output is locked (spinner is active).
|
|
29
|
-
* Used to prevent stream writes during spinner animation.
|
|
30
|
-
*/
|
|
31
|
-
isLocked() {
|
|
32
|
-
return this.locked;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Lock output during spinner animation.
|
|
36
|
-
*/
|
|
37
|
-
lock() {
|
|
38
|
-
this.locked = true;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Unlock output and process any pending callbacks.
|
|
42
|
-
*/
|
|
43
|
-
unlock() {
|
|
44
|
-
this.locked = false;
|
|
45
|
-
// Process any pending writes
|
|
46
|
-
while (this.pendingCallbacks.length > 0) {
|
|
47
|
-
const callback = this.pendingCallbacks.shift();
|
|
48
|
-
if (callback) {
|
|
49
|
-
callback();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Execute a callback safely, queueing if output is locked.
|
|
55
|
-
*/
|
|
56
|
-
safeWrite(callback) {
|
|
57
|
-
if (this.locked) {
|
|
58
|
-
this.pendingCallbacks.push(callback);
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
callback();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Tracks line output to stdout for banner rewriting and cursor positioning.
|
|
66
|
-
* Instances are cached per stream to keep banner calculations consistent.
|
|
67
|
-
*/
|
|
68
|
-
class StdoutLineTracker {
|
|
69
|
-
static instances = new WeakMap();
|
|
70
|
-
static getInstance(stream = process.stdout) {
|
|
71
|
-
const existing = StdoutLineTracker.instances.get(stream);
|
|
72
|
-
if (existing) {
|
|
73
|
-
return existing;
|
|
74
|
-
}
|
|
75
|
-
const tracker = new StdoutLineTracker(stream);
|
|
76
|
-
StdoutLineTracker.instances.set(stream, tracker);
|
|
77
|
-
return tracker;
|
|
78
|
-
}
|
|
79
|
-
linesWritten = 0;
|
|
80
|
-
suspended = false;
|
|
81
|
-
stream;
|
|
82
|
-
originalWrite;
|
|
83
|
-
constructor(stream) {
|
|
84
|
-
this.stream = stream;
|
|
85
|
-
this.originalWrite = stream.write.bind(stream);
|
|
86
|
-
this.patchStream();
|
|
87
|
-
}
|
|
88
|
-
get totalLines() {
|
|
89
|
-
return this.linesWritten;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Temporarily suspends line tracking while executing a function.
|
|
93
|
-
* Useful for rewriting content without incrementing line count.
|
|
94
|
-
*/
|
|
95
|
-
withSuspended(fn) {
|
|
96
|
-
const wasSuspended = this.suspended;
|
|
97
|
-
this.suspended = true;
|
|
98
|
-
try {
|
|
99
|
-
return fn();
|
|
100
|
-
}
|
|
101
|
-
finally {
|
|
102
|
-
this.suspended = wasSuspended;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
reset() {
|
|
106
|
-
this.linesWritten = 0;
|
|
107
|
-
}
|
|
108
|
-
patchStream() {
|
|
109
|
-
const tracker = this;
|
|
110
|
-
this.stream.write = function patched(chunk, encoding, callback) {
|
|
111
|
-
const actualEncoding = typeof encoding === 'function' ? undefined : encoding;
|
|
112
|
-
tracker.recordChunk(chunk, actualEncoding);
|
|
113
|
-
return tracker.originalWrite.call(this, chunk, encoding, callback);
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
recordChunk(chunk, encoding) {
|
|
117
|
-
if (this.suspended) {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
const text = this.chunkToString(chunk, encoding);
|
|
121
|
-
if (!text) {
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
this.countNewlines(text);
|
|
125
|
-
}
|
|
126
|
-
countNewlines(text) {
|
|
127
|
-
for (const char of text) {
|
|
128
|
-
if (char === '\n') {
|
|
129
|
-
this.linesWritten += 1;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
chunkToString(chunk, encoding) {
|
|
134
|
-
if (typeof chunk === 'string') {
|
|
135
|
-
return chunk;
|
|
136
|
-
}
|
|
137
|
-
if (chunk instanceof Uint8Array) {
|
|
138
|
-
const enc = encoding ?? 'utf8';
|
|
139
|
-
return Buffer.from(chunk).toString(enc);
|
|
140
|
-
}
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
// Display configuration constants
|
|
145
|
-
const DISPLAY_CONSTANTS = {
|
|
146
|
-
MIN_BANNER_WIDTH: 32,
|
|
147
|
-
MAX_BANNER_WIDTH: 120,
|
|
148
|
-
BANNER_PADDING: 4,
|
|
149
|
-
MIN_MESSAGE_WIDTH: 42,
|
|
150
|
-
MAX_MESSAGE_WIDTH: 110,
|
|
151
|
-
MESSAGE_PADDING: 4,
|
|
152
|
-
MIN_ACTION_WIDTH: 40,
|
|
153
|
-
MAX_ACTION_WIDTH: 90,
|
|
154
|
-
MIN_THOUGHT_WIDTH: 48,
|
|
155
|
-
MAX_THOUGHT_WIDTH: 96,
|
|
156
|
-
MIN_CONTENT_WIDTH: 10,
|
|
157
|
-
MIN_WRAP_WIDTH: 12,
|
|
158
|
-
SPINNER_INTERVAL: 80,
|
|
159
|
-
};
|
|
160
|
-
// Claude Code style spinner frames: ✻ as primary thinking indicator
|
|
161
|
-
// Alternates between ✻ and ◐ for visual interest
|
|
162
|
-
const SPINNER_FRAMES = ['✻', '◐', '✻', '◓', '✻', '◑', '✻', '◒'];
|
|
163
|
-
/**
|
|
164
|
-
* Display class manages all terminal UI output for the application.
|
|
165
|
-
*
|
|
166
|
-
* Architecture:
|
|
167
|
-
* - Per-stream line tracking via StdoutLineTracker for consistent banner updates
|
|
168
|
-
* - Output interceptor pattern for live update integration
|
|
169
|
-
* - Banner state management for in-place updates
|
|
170
|
-
* - Configurable width constraints via DISPLAY_CONSTANTS
|
|
171
|
-
*
|
|
172
|
-
* Claude Code Style Formatting:
|
|
173
|
-
* - ⏺ prefix for tool calls, actions, and thinking/reasoning
|
|
174
|
-
* - ⎿ prefix for results, details, and nested information
|
|
175
|
-
* - ─ horizontal separators for dividing sections (edit diffs, etc.)
|
|
176
|
-
* - > prefix for user prompts (handled in theme.ts formatUserPrompt)
|
|
177
|
-
* - Compact epsilon spinner: ∴, ε, ✻
|
|
178
|
-
*
|
|
179
|
-
* Key responsibilities:
|
|
180
|
-
* - Welcome banners and session information display
|
|
181
|
-
* - Message formatting (assistant, system, errors, warnings)
|
|
182
|
-
* - Spinner/thinking indicators
|
|
183
|
-
* - Action and sub-action formatting with tree-style prefixes
|
|
184
|
-
* - Text wrapping and layout management
|
|
185
|
-
*
|
|
186
|
-
* Error handling:
|
|
187
|
-
* - Graceful degradation for non-TTY environments
|
|
188
|
-
* - Input validation on public methods
|
|
189
|
-
* - Safe cursor manipulation with fallback
|
|
190
|
-
*/
|
|
191
|
-
export class Display {
|
|
192
|
-
stdoutTracker;
|
|
193
|
-
outputStream;
|
|
194
|
-
errorStream;
|
|
195
|
-
activeSpinner = null;
|
|
196
|
-
outputInterceptors = new Set();
|
|
197
|
-
outputLock = OutputLock.getInstance();
|
|
198
|
-
spinnerFrames = [...SPINNER_FRAMES];
|
|
199
|
-
thinkingStartTime = null;
|
|
200
|
-
thinkingElapsedTimer = null;
|
|
201
|
-
thinkingBaseMessage = 'Thinking...';
|
|
202
|
-
pendingCarriageReturn = false;
|
|
203
|
-
// Streaming status line (Claude Code style - fixed at bottom using scroll region)
|
|
204
|
-
streamingStatusVisible = false;
|
|
205
|
-
scrollRegionActive = false;
|
|
206
|
-
savedCursorRow = 0;
|
|
207
|
-
constructor(stream = process.stdout, errorStream) {
|
|
208
|
-
this.outputStream = stream;
|
|
209
|
-
this.errorStream = errorStream ?? stream;
|
|
210
|
-
this.stdoutTracker = StdoutLineTracker.getInstance(stream);
|
|
211
|
-
}
|
|
212
|
-
registerOutputInterceptor(interceptor) {
|
|
213
|
-
if (!interceptor) {
|
|
214
|
-
return () => { };
|
|
215
|
-
}
|
|
216
|
-
this.outputInterceptors.add(interceptor);
|
|
217
|
-
return () => {
|
|
218
|
-
this.outputInterceptors.delete(interceptor);
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Execute output with proper write lock coordination.
|
|
223
|
-
* All display output goes through this method to prevent race conditions.
|
|
224
|
-
*
|
|
225
|
-
* Behavior:
|
|
226
|
-
* - If write lock is already held, execute directly (we're in a protected context)
|
|
227
|
-
* - Otherwise acquire lock during output to prevent interleaving
|
|
228
|
-
* - Notifies interceptors before/after output for cursor positioning
|
|
229
|
-
*/
|
|
230
|
-
withOutput(fn) {
|
|
231
|
-
// If lock is already held, execute directly - we're in a protected context
|
|
232
|
-
// This prevents queuing issues where content gets delayed
|
|
233
|
-
if (writeLock.isLocked()) {
|
|
234
|
-
this.notifyBeforeOutput();
|
|
235
|
-
try {
|
|
236
|
-
fn();
|
|
237
|
-
}
|
|
238
|
-
finally {
|
|
239
|
-
this.notifyAfterOutput();
|
|
240
|
-
}
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
// Acquire lock during output to prevent interleaved writes
|
|
244
|
-
writeLock.withLock(() => {
|
|
245
|
-
this.notifyBeforeOutput();
|
|
246
|
-
try {
|
|
247
|
-
fn();
|
|
248
|
-
}
|
|
249
|
-
finally {
|
|
250
|
-
this.notifyAfterOutput();
|
|
251
|
-
}
|
|
252
|
-
}, 'display.withOutput');
|
|
253
|
-
}
|
|
254
|
-
notifyBeforeOutput() {
|
|
255
|
-
for (const interceptor of this.outputInterceptors) {
|
|
256
|
-
interceptor.beforeWrite?.();
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
notifyAfterOutput(content) {
|
|
260
|
-
const interceptors = Array.from(this.outputInterceptors);
|
|
261
|
-
for (let index = interceptors.length - 1; index >= 0; index -= 1) {
|
|
262
|
-
interceptors[index]?.afterWrite?.(content);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
write(value, target = this.outputStream) {
|
|
266
|
-
// Write directly - this method is called from within locked contexts
|
|
267
|
-
// like withOutput(), so we don't need additional locking here.
|
|
268
|
-
// The globalWriteLock wrapper will handle coordination if needed.
|
|
269
|
-
try {
|
|
270
|
-
target.write(value);
|
|
271
|
-
}
|
|
272
|
-
catch {
|
|
273
|
-
// Ignore write failures to keep UI resilient
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
writeLine(value = '', target = this.outputStream) {
|
|
277
|
-
this.write(`${value}\n`, target);
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Write raw content directly to output stream.
|
|
281
|
-
* For streaming output chunks - writes directly without locks during streaming mode.
|
|
282
|
-
*
|
|
283
|
-
* During streaming mode, content is written directly to stdout without any
|
|
284
|
-
* lock coordination. This ensures streaming content flows smoothly without
|
|
285
|
-
* being delayed by other UI components.
|
|
286
|
-
*/
|
|
287
|
-
writeRaw(content) {
|
|
288
|
-
if (typeof content !== 'string' || !content) {
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
const normalized = this.normalizeStreamingContent(content);
|
|
292
|
-
if (!normalized) {
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
// During streaming, use withLock to prevent interleaving with escape codes.
|
|
296
|
-
// This ensures the before/write/after sequence is atomic.
|
|
297
|
-
if (isStreamingMode()) {
|
|
298
|
-
writeLock.withLock(() => {
|
|
299
|
-
this.notifyBeforeOutput();
|
|
300
|
-
try {
|
|
301
|
-
this.outputStream.write(normalized);
|
|
302
|
-
}
|
|
303
|
-
catch {
|
|
304
|
-
// Ignore write failures to keep UI resilient
|
|
305
|
-
}
|
|
306
|
-
finally {
|
|
307
|
-
this.notifyAfterOutput(normalized);
|
|
308
|
-
}
|
|
309
|
-
}, 'display.writeRaw.streaming');
|
|
310
|
-
return;
|
|
311
|
-
}
|
|
312
|
-
// Outside streaming mode, use locks to coordinate with other UI
|
|
313
|
-
writeLock.withLock(() => {
|
|
314
|
-
this.notifyBeforeOutput();
|
|
315
|
-
try {
|
|
316
|
-
this.write(normalized);
|
|
317
|
-
}
|
|
318
|
-
finally {
|
|
319
|
-
this.notifyAfterOutput(normalized);
|
|
320
|
-
}
|
|
321
|
-
}, 'display.writeRaw');
|
|
322
|
-
}
|
|
323
|
-
/**
|
|
324
|
-
* Normalize streaming chunks so progress-style carriage returns render cleanly.
|
|
325
|
-
* - Preserve CR-based rewrites instead of converting to newlines
|
|
326
|
-
* - Clear lines when rewriting to avoid leftover characters
|
|
327
|
-
* - Carry trailing CR across chunks so the next write can clear before drawing
|
|
328
|
-
*/
|
|
329
|
-
normalizeStreamingContent(content) {
|
|
330
|
-
// Normalize CRLF first
|
|
331
|
-
let text = content.replace(/\r\n/g, '\n');
|
|
332
|
-
let result = '';
|
|
333
|
-
// If the previous chunk ended with a bare CR, clear the line before new text
|
|
334
|
-
if (this.pendingCarriageReturn) {
|
|
335
|
-
if (text.length === 0) {
|
|
336
|
-
return '';
|
|
337
|
-
}
|
|
338
|
-
if (text[0] !== '\n') {
|
|
339
|
-
result += '\r\x1b[K';
|
|
340
|
-
}
|
|
341
|
-
this.pendingCarriageReturn = false;
|
|
342
|
-
}
|
|
343
|
-
let trailingCarriageReturn = false;
|
|
344
|
-
for (let i = 0; i < text.length; i++) {
|
|
345
|
-
const char = text[i];
|
|
346
|
-
if (char === '\r') {
|
|
347
|
-
const next = text[i + 1];
|
|
348
|
-
if (next === '\n') {
|
|
349
|
-
// CRLF already normalized above; skip CR
|
|
350
|
-
continue;
|
|
351
|
-
}
|
|
352
|
-
const isLastChar = i === text.length - 1;
|
|
353
|
-
if (isLastChar) {
|
|
354
|
-
// Trailing CR: keep it so cursor is at column 0, but delay clearing
|
|
355
|
-
result += '\r';
|
|
356
|
-
trailingCarriageReturn = true;
|
|
357
|
-
}
|
|
358
|
-
else {
|
|
359
|
-
// In-place update: move to start and clear the line before new text
|
|
360
|
-
result += '\r\x1b[K';
|
|
361
|
-
}
|
|
362
|
-
continue;
|
|
363
|
-
}
|
|
364
|
-
result += char;
|
|
365
|
-
}
|
|
366
|
-
this.pendingCarriageReturn = trailingCarriageReturn;
|
|
367
|
-
return result;
|
|
368
|
-
}
|
|
369
|
-
/**
|
|
370
|
-
* Stream chunk helper - writes directly to stdout during streaming.
|
|
371
|
-
* This is the primary method for streaming AI responses.
|
|
372
|
-
*/
|
|
373
|
-
stream(chunk) {
|
|
374
|
-
this.writeRaw(chunk);
|
|
375
|
-
}
|
|
376
|
-
/**
|
|
377
|
-
* Backward-compatible alias for stream().
|
|
378
|
-
*/
|
|
379
|
-
writeStreamChunk(chunk) {
|
|
380
|
-
this.stream(chunk);
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* Get the output stream for direct access.
|
|
384
|
-
* Prefer writeRaw/writeStreamChunk for interceptor support.
|
|
385
|
-
*/
|
|
386
|
-
getOutputStream() {
|
|
387
|
-
return this.outputStream;
|
|
388
|
-
}
|
|
389
|
-
/**
|
|
390
|
-
* Current number of lines written to stdout (tracked for positioning).
|
|
391
|
-
*/
|
|
392
|
-
getTotalWrittenLines() {
|
|
393
|
-
return this.stdoutTracker.totalLines;
|
|
394
|
-
}
|
|
395
|
-
/**
|
|
396
|
-
* Number of lines at the top of the terminal that belong to the pinned banner.
|
|
397
|
-
* For integrated scroll-region layouts, banners are not pinned, so this is 0.
|
|
398
|
-
*/
|
|
399
|
-
getPinnedHeaderLines() {
|
|
400
|
-
return 0;
|
|
401
|
-
}
|
|
402
|
-
getColumnWidth() {
|
|
403
|
-
if (typeof this.outputStream.columns === 'number' &&
|
|
404
|
-
Number.isFinite(this.outputStream.columns) &&
|
|
405
|
-
this.outputStream.columns > 0) {
|
|
406
|
-
return this.outputStream.columns;
|
|
407
|
-
}
|
|
408
|
-
return getTerminalColumns();
|
|
409
|
-
}
|
|
410
|
-
// Banner is now streamed by the shell - no storage needed
|
|
411
|
-
showThinking(message = 'Thinking…') {
|
|
412
|
-
// If we already have a spinner, just update its text instead of creating a new one
|
|
413
|
-
if (this.activeSpinner) {
|
|
414
|
-
this.thinkingBaseMessage = message;
|
|
415
|
-
this.activeSpinner.update({ text: message });
|
|
416
|
-
return;
|
|
417
|
-
}
|
|
418
|
-
// Lock output to prevent stream writes from interleaving with spinner frames
|
|
419
|
-
this.outputLock.lock();
|
|
420
|
-
// Track when thinking started for elapsed time display
|
|
421
|
-
this.thinkingStartTime = Date.now();
|
|
422
|
-
this.thinkingBaseMessage = message;
|
|
423
|
-
// Use Claude Code style spinner with ✻ as primary thinking indicator
|
|
424
|
-
this.activeSpinner = createSpinner(message, {
|
|
425
|
-
stream: this.outputStream,
|
|
426
|
-
spinner: {
|
|
427
|
-
interval: DISPLAY_CONSTANTS.SPINNER_INTERVAL,
|
|
428
|
-
frames: this.spinnerFrames,
|
|
429
|
-
},
|
|
430
|
-
}).start();
|
|
431
|
-
// Update spinner with elapsed time every second (Claude Code style)
|
|
432
|
-
this.thinkingElapsedTimer = setInterval(() => {
|
|
433
|
-
if (this.activeSpinner && this.thinkingStartTime) {
|
|
434
|
-
const elapsed = Math.floor((Date.now() - this.thinkingStartTime) / 1000);
|
|
435
|
-
if (elapsed > 0) {
|
|
436
|
-
const elapsedText = this.formatElapsedTime(elapsed);
|
|
437
|
-
this.activeSpinner.update({ text: `${this.thinkingBaseMessage} ${theme.ui.muted(`(${elapsedText})`)}` });
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
}, 1000);
|
|
441
|
-
}
|
|
442
|
-
/**
|
|
443
|
-
* Format elapsed seconds as human-readable time (e.g., "5s", "1m 23s")
|
|
444
|
-
*/
|
|
445
|
-
formatElapsedTime(seconds) {
|
|
446
|
-
if (seconds < 60) {
|
|
447
|
-
return `${seconds}s`;
|
|
448
|
-
}
|
|
449
|
-
const mins = Math.floor(seconds / 60);
|
|
450
|
-
const secs = seconds % 60;
|
|
451
|
-
return secs > 0 ? `${mins}m ${secs}s` : `${mins}m`;
|
|
452
|
-
}
|
|
453
|
-
updateThinking(message) {
|
|
454
|
-
this.thinkingBaseMessage = message;
|
|
455
|
-
if (this.activeSpinner) {
|
|
456
|
-
// If we have elapsed time, include it in the update
|
|
457
|
-
if (this.thinkingStartTime) {
|
|
458
|
-
const elapsed = Math.floor((Date.now() - this.thinkingStartTime) / 1000);
|
|
459
|
-
if (elapsed > 0) {
|
|
460
|
-
const elapsedText = this.formatElapsedTime(elapsed);
|
|
461
|
-
this.activeSpinner.update({ text: `${message} ${theme.ui.muted(`(${elapsedText})`)}` });
|
|
462
|
-
return;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
this.activeSpinner.update({ text: message });
|
|
466
|
-
}
|
|
467
|
-
else {
|
|
468
|
-
this.showThinking(message);
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
stopThinking(addNewLine = true) {
|
|
472
|
-
this.clearSpinnerIfActive(addNewLine);
|
|
473
|
-
}
|
|
474
|
-
/**
|
|
475
|
-
* Get current thinking elapsed time in milliseconds, or null if not thinking.
|
|
476
|
-
*/
|
|
477
|
-
getThinkingElapsedMs() {
|
|
478
|
-
if (!this.thinkingStartTime) {
|
|
479
|
-
return null;
|
|
480
|
-
}
|
|
481
|
-
return Date.now() - this.thinkingStartTime;
|
|
482
|
-
}
|
|
483
|
-
isSpinnerActive() {
|
|
484
|
-
return this.activeSpinner !== null;
|
|
485
|
-
}
|
|
486
|
-
/**
|
|
487
|
-
* Check if output is currently locked (e.g., spinner is active).
|
|
488
|
-
* Used by external callers to coordinate output timing.
|
|
489
|
-
*/
|
|
490
|
-
isOutputLocked() {
|
|
491
|
-
return this.outputLock.isLocked();
|
|
492
|
-
}
|
|
493
|
-
/**
|
|
494
|
-
* Execute a write callback safely, ensuring it doesn't interleave with spinner output.
|
|
495
|
-
* If spinner is active, the write will be queued until spinner stops.
|
|
496
|
-
*/
|
|
497
|
-
safeWrite(callback) {
|
|
498
|
-
this.outputLock.safeWrite(callback);
|
|
499
|
-
}
|
|
500
|
-
/**
|
|
501
|
-
* Get terminal rows, with fallback
|
|
502
|
-
*/
|
|
503
|
-
getTerminalRows() {
|
|
504
|
-
const stream = this.outputStream;
|
|
505
|
-
return stream.rows ?? 24;
|
|
506
|
-
}
|
|
507
|
-
/**
|
|
508
|
-
* Set up scroll region to reserve bottom line for status.
|
|
509
|
-
* This allows content to scroll while status stays fixed.
|
|
510
|
-
*/
|
|
511
|
-
setupScrollRegion() {
|
|
512
|
-
if (this.scrollRegionActive || !this.isTTY()) {
|
|
513
|
-
return;
|
|
514
|
-
}
|
|
515
|
-
const rows = this.getTerminalRows();
|
|
516
|
-
// Reserve bottom 2 lines (separator + status)
|
|
517
|
-
// Set scroll region from row 1 to row (rows - 2)
|
|
518
|
-
this.outputStream.write(`\x1b[1;${rows - 2}r`);
|
|
519
|
-
// Move cursor to end of scroll region
|
|
520
|
-
this.outputStream.write(`\x1b[${rows - 2};1H`);
|
|
521
|
-
this.scrollRegionActive = true;
|
|
522
|
-
this.savedCursorRow = rows - 2;
|
|
523
|
-
}
|
|
524
|
-
/**
|
|
525
|
-
* Tear down scroll region and restore normal terminal.
|
|
526
|
-
*/
|
|
527
|
-
teardownScrollRegion() {
|
|
528
|
-
if (!this.scrollRegionActive) {
|
|
529
|
-
return;
|
|
530
|
-
}
|
|
531
|
-
const rows = this.getTerminalRows();
|
|
532
|
-
// Reset scroll region to full screen
|
|
533
|
-
this.outputStream.write('\x1b[r');
|
|
534
|
-
// Clear the status lines at bottom
|
|
535
|
-
this.outputStream.write(`\x1b[${rows - 1};1H\x1b[2K`);
|
|
536
|
-
this.outputStream.write(`\x1b[${rows};1H\x1b[2K`);
|
|
537
|
-
// Move cursor back to where content was
|
|
538
|
-
this.outputStream.write(`\x1b[${this.savedCursorRow};1H`);
|
|
539
|
-
this.scrollRegionActive = false;
|
|
540
|
-
this.streamingStatusVisible = false;
|
|
541
|
-
}
|
|
542
|
-
/**
|
|
543
|
-
* Check if we're in a TTY (can use escape codes)
|
|
544
|
-
*/
|
|
545
|
-
isTTY() {
|
|
546
|
-
const stream = this.outputStream;
|
|
547
|
-
return stream.isTTY === true;
|
|
548
|
-
}
|
|
549
|
-
/**
|
|
550
|
-
* Update the streaming status line (Claude Code style).
|
|
551
|
-
* When scroll region is active, updates the fixed status area at bottom.
|
|
552
|
-
* Call with null to clear the status line.
|
|
553
|
-
* Uses shared writeLock to prevent race conditions with other output.
|
|
554
|
-
*/
|
|
555
|
-
updateStreamingStatus(status) {
|
|
556
|
-
// Use shared writeLock to coordinate with terminalInput and streaming output
|
|
557
|
-
writeLock.withLock(() => {
|
|
558
|
-
this.updateStreamingStatusInternal(status);
|
|
559
|
-
}, 'display.updateStreamingStatus');
|
|
560
|
-
}
|
|
561
|
-
/**
|
|
562
|
-
* Internal implementation of updateStreamingStatus (called with lock held)
|
|
563
|
-
* NOTE: During streaming, we do NOT write status lines to stdout to prevent
|
|
564
|
-
* race conditions with stream chunks. The status is tracked internally and
|
|
565
|
-
* the terminalInput's status message display handles showing it in the
|
|
566
|
-
* reserved input area, separate from the main content stream.
|
|
567
|
-
*/
|
|
568
|
-
updateStreamingStatusInternal(status) {
|
|
569
|
-
if (!status) {
|
|
570
|
-
this.streamingStatusVisible = false;
|
|
571
|
-
return;
|
|
572
|
-
}
|
|
573
|
-
// Just track the status - don't write to stdout during streaming
|
|
574
|
-
this.streamingStatusVisible = true;
|
|
575
|
-
}
|
|
576
|
-
/**
|
|
577
|
-
* Check if streaming status is currently visible.
|
|
578
|
-
*/
|
|
579
|
-
isStreamingStatusVisible() {
|
|
580
|
-
return this.streamingStatusVisible;
|
|
581
|
-
}
|
|
582
|
-
/**
|
|
583
|
-
* Check if scroll region is active.
|
|
584
|
-
*/
|
|
585
|
-
isScrollRegionActive() {
|
|
586
|
-
return this.scrollRegionActive;
|
|
587
|
-
}
|
|
588
|
-
/**
|
|
589
|
-
* Clear streaming status and reset state.
|
|
590
|
-
*/
|
|
591
|
-
clearStreamingStatus() {
|
|
592
|
-
this.streamingStatusVisible = false;
|
|
593
|
-
}
|
|
594
|
-
/**
|
|
595
|
-
* Display parallel agent status (Claude Code style).
|
|
596
|
-
* Shows a tree of running agents with their progress.
|
|
597
|
-
*/
|
|
598
|
-
parallelAgentStatus(content) {
|
|
599
|
-
if (!content)
|
|
600
|
-
return;
|
|
601
|
-
// During streaming, write directly to output
|
|
602
|
-
this.withOutput(() => {
|
|
603
|
-
// Clear current line and write agent status
|
|
604
|
-
this.writeRaw('\r\x1b[K');
|
|
605
|
-
this.writeLine(content);
|
|
606
|
-
});
|
|
607
|
-
}
|
|
608
|
-
clearSpinnerIfActive(addNewLine = true) {
|
|
609
|
-
if (!this.activeSpinner) {
|
|
610
|
-
return;
|
|
611
|
-
}
|
|
612
|
-
// Clear the elapsed time update timer
|
|
613
|
-
if (this.thinkingElapsedTimer) {
|
|
614
|
-
clearInterval(this.thinkingElapsedTimer);
|
|
615
|
-
this.thinkingElapsedTimer = null;
|
|
616
|
-
}
|
|
617
|
-
this.thinkingStartTime = null;
|
|
618
|
-
const spinner = this.activeSpinner;
|
|
619
|
-
this.activeSpinner = null;
|
|
620
|
-
// Use stop() instead of clear() so nanospinner removes its SIGINT/SIGTERM listeners.
|
|
621
|
-
// clear() leaves the listeners attached, which triggers MaxListenersExceededWarning over time.
|
|
622
|
-
spinner.stop();
|
|
623
|
-
// Unlock output to process any pending writes
|
|
624
|
-
this.outputLock.unlock();
|
|
625
|
-
if (addNewLine) {
|
|
626
|
-
this.withOutput(() => {
|
|
627
|
-
this.writeLine();
|
|
628
|
-
});
|
|
629
|
-
}
|
|
630
|
-
}
|
|
631
|
-
showAssistantMessage(content, metadata) {
|
|
632
|
-
if (!content.trim()) {
|
|
633
|
-
return;
|
|
634
|
-
}
|
|
635
|
-
this.clearSpinnerIfActive();
|
|
636
|
-
const isThought = metadata?.isFinal === false;
|
|
637
|
-
const body = isThought ? this.buildClaudeStyleThought(content) : this.buildChatBox(content, metadata);
|
|
638
|
-
if (!body.trim()) {
|
|
639
|
-
return;
|
|
640
|
-
}
|
|
641
|
-
this.withOutput(() => {
|
|
642
|
-
this.writeLine(); // Ensure clean start for the box
|
|
643
|
-
this.writeLine(body);
|
|
644
|
-
this.writeLine();
|
|
645
|
-
});
|
|
646
|
-
}
|
|
647
|
-
showNarrative(content) {
|
|
648
|
-
if (!content.trim()) {
|
|
649
|
-
return;
|
|
650
|
-
}
|
|
651
|
-
this.showAssistantMessage(content, { isFinal: false });
|
|
652
|
-
}
|
|
653
|
-
showAction(text, status = 'info') {
|
|
654
|
-
if (!text.trim()) {
|
|
655
|
-
return;
|
|
656
|
-
}
|
|
657
|
-
this.clearSpinnerIfActive();
|
|
658
|
-
// Claude Code style: always use ⏺ prefix for actions
|
|
659
|
-
const icon = this.formatActionIcon(status);
|
|
660
|
-
this.withOutput(() => {
|
|
661
|
-
this.writeLine(this.wrapWithPrefix(text, `${icon} `));
|
|
662
|
-
});
|
|
663
|
-
}
|
|
664
|
-
showSubAction(text, status = 'info') {
|
|
665
|
-
if (!text.trim()) {
|
|
666
|
-
return;
|
|
667
|
-
}
|
|
668
|
-
this.clearSpinnerIfActive();
|
|
669
|
-
const prefersRich = text.includes('```');
|
|
670
|
-
let rendered = prefersRich ? this.buildRichSubActionLines(text, status) : this.buildWrappedSubActionLines(text, status);
|
|
671
|
-
if (!rendered.length && prefersRich) {
|
|
672
|
-
rendered = this.buildWrappedSubActionLines(text, status);
|
|
673
|
-
}
|
|
674
|
-
if (!rendered.length) {
|
|
675
|
-
return;
|
|
676
|
-
}
|
|
677
|
-
this.withOutput(() => {
|
|
678
|
-
this.writeLine(rendered.join('\n'));
|
|
679
|
-
this.writeLine();
|
|
680
|
-
});
|
|
681
|
-
}
|
|
682
|
-
buildWrappedSubActionLines(text, status) {
|
|
683
|
-
const lines = text.split('\n').map((line) => line.trimEnd());
|
|
684
|
-
while (lines.length && !lines[lines.length - 1]?.trim()) {
|
|
685
|
-
lines.pop();
|
|
686
|
-
}
|
|
687
|
-
if (!lines.length) {
|
|
688
|
-
return [];
|
|
689
|
-
}
|
|
690
|
-
const rendered = [];
|
|
691
|
-
for (let index = 0; index < lines.length; index += 1) {
|
|
692
|
-
const segment = lines[index] ?? '';
|
|
693
|
-
const isLast = index === lines.length - 1;
|
|
694
|
-
const { prefix, continuation } = this.buildSubActionPrefixes(status, isLast);
|
|
695
|
-
rendered.push(this.wrapWithPrefix(segment, prefix, { continuationPrefix: continuation }));
|
|
696
|
-
}
|
|
697
|
-
return rendered;
|
|
698
|
-
}
|
|
699
|
-
buildRichSubActionLines(text, status) {
|
|
700
|
-
const normalized = text.trim();
|
|
701
|
-
if (!normalized) {
|
|
702
|
-
return [];
|
|
703
|
-
}
|
|
704
|
-
const width = Math.max(DISPLAY_CONSTANTS.MIN_ACTION_WIDTH, Math.min(this.getColumnWidth(), DISPLAY_CONSTANTS.MAX_ACTION_WIDTH));
|
|
705
|
-
const samplePrefix = this.buildSubActionPrefixes(status, true).prefix;
|
|
706
|
-
const contentWidth = Math.max(DISPLAY_CONSTANTS.MIN_CONTENT_WIDTH, width - this.visibleLength(samplePrefix));
|
|
707
|
-
const blocks = formatRichContent(normalized, contentWidth);
|
|
708
|
-
if (!blocks.length) {
|
|
709
|
-
return [];
|
|
710
|
-
}
|
|
711
|
-
return blocks.map((line, index) => {
|
|
712
|
-
const isLast = index === blocks.length - 1;
|
|
713
|
-
const { prefix } = this.buildSubActionPrefixes(status, isLast);
|
|
714
|
-
if (!line.trim()) {
|
|
715
|
-
return prefix.trimEnd();
|
|
716
|
-
}
|
|
717
|
-
return `${prefix}${line}`;
|
|
718
|
-
});
|
|
719
|
-
}
|
|
720
|
-
showMessage(content, role = 'assistant') {
|
|
721
|
-
if (role === 'system') {
|
|
722
|
-
this.showSystemMessage(content);
|
|
723
|
-
}
|
|
724
|
-
else {
|
|
725
|
-
this.showAssistantMessage(content);
|
|
726
|
-
}
|
|
727
|
-
}
|
|
728
|
-
showSystemMessage(content) {
|
|
729
|
-
this.clearSpinnerIfActive();
|
|
730
|
-
const normalized = content.trim();
|
|
731
|
-
if (!normalized) {
|
|
732
|
-
return;
|
|
733
|
-
}
|
|
734
|
-
this.stream(`${normalized}\n\n`);
|
|
735
|
-
}
|
|
736
|
-
showError(message, error) {
|
|
737
|
-
this.clearSpinnerIfActive();
|
|
738
|
-
const details = this.formatErrorDetails(error);
|
|
739
|
-
const parts = [`${theme.error('✗')} ${message}`];
|
|
740
|
-
if (details) {
|
|
741
|
-
parts.push(` ${details}`);
|
|
742
|
-
}
|
|
743
|
-
this.stream(`${parts.join('\n')}\n`);
|
|
744
|
-
}
|
|
745
|
-
showWarning(message) {
|
|
746
|
-
this.clearSpinnerIfActive();
|
|
747
|
-
this.stream(`${theme.warning('!')} ${message}\n`);
|
|
748
|
-
}
|
|
749
|
-
showInfo(message) {
|
|
750
|
-
this.clearSpinnerIfActive();
|
|
751
|
-
this.stream(`${theme.info('ℹ')} ${message}\n`);
|
|
752
|
-
}
|
|
753
|
-
/**
|
|
754
|
-
* Show a success message with simple styling
|
|
755
|
-
*/
|
|
756
|
-
showSuccess(message) {
|
|
757
|
-
this.clearSpinnerIfActive();
|
|
758
|
-
this.stream(`${theme.success('✓')} ${message}\n`);
|
|
759
|
-
}
|
|
760
|
-
/**
|
|
761
|
-
* Show a stylish progress indicator for long operations
|
|
762
|
-
*/
|
|
763
|
-
showProgressBadge(label, current, total) {
|
|
764
|
-
const percentage = Math.round((current / total) * 100);
|
|
765
|
-
const barWidth = 20;
|
|
766
|
-
const filled = Math.round((current / total) * barWidth);
|
|
767
|
-
const empty = barWidth - filled;
|
|
768
|
-
const progressBar = `${'█'.repeat(filled)}${'░'.repeat(empty)}`;
|
|
769
|
-
const badge = `[${label}] ${progressBar} ${percentage}%`;
|
|
770
|
-
this.withOutput(() => {
|
|
771
|
-
this.write(`\r${theme.info(badge)}`);
|
|
772
|
-
if (current >= total) {
|
|
773
|
-
this.writeLine();
|
|
774
|
-
}
|
|
775
|
-
});
|
|
776
|
-
}
|
|
777
|
-
showStatusLine(status, elapsedMs, _context) {
|
|
778
|
-
this.clearSpinnerIfActive();
|
|
779
|
-
const normalized = status?.trim();
|
|
780
|
-
if (!normalized) {
|
|
781
|
-
return;
|
|
782
|
-
}
|
|
783
|
-
const elapsed = this.formatElapsed(elapsedMs);
|
|
784
|
-
const parts = [
|
|
785
|
-
{ text: `${theme.success('✓')} ${normalized}`, tone: 'success' },
|
|
786
|
-
elapsed ? { text: `(${elapsed})`, tone: 'muted' } : null,
|
|
787
|
-
].filter(Boolean);
|
|
788
|
-
const line = renderStatusLine(parts, this.getColumnWidth() - 2);
|
|
789
|
-
this.withOutput(() => {
|
|
790
|
-
this.writeLine(line);
|
|
791
|
-
});
|
|
792
|
-
}
|
|
793
|
-
showAvailableTools(_tools) {
|
|
794
|
-
// Hidden by default to match Claude Code style
|
|
795
|
-
// Tools are available but not listed verbosely on startup
|
|
796
|
-
// Parameter prefixed with underscore to indicate intentionally unused
|
|
797
|
-
}
|
|
798
|
-
/**
|
|
799
|
-
* Show a compact launch panel of slash commands with wrapped descriptions.
|
|
800
|
-
*/
|
|
801
|
-
showCommandPalette(commands, options) {
|
|
802
|
-
if (!commands || commands.length === 0) {
|
|
803
|
-
return;
|
|
804
|
-
}
|
|
805
|
-
const panel = this.buildCommandPalette(commands, options);
|
|
806
|
-
if (!panel.trim()) {
|
|
807
|
-
return;
|
|
808
|
-
}
|
|
809
|
-
this.withOutput(() => {
|
|
810
|
-
this.writeLine();
|
|
811
|
-
this.writeLine(panel);
|
|
812
|
-
this.writeLine();
|
|
813
|
-
});
|
|
814
|
-
}
|
|
815
|
-
/**
|
|
816
|
-
* Show ready message with keyboard shortcuts hint (compact)
|
|
817
|
-
* Note: Commands are now shown in the banner, so this is a no-op
|
|
818
|
-
*/
|
|
819
|
-
showReadyWithHints() {
|
|
820
|
-
// Commands hint is now included in the banner
|
|
821
|
-
}
|
|
822
|
-
/**
|
|
823
|
-
* Show available providers and their status on launch (compact inline)
|
|
824
|
-
*/
|
|
825
|
-
showProvidersStatus(providers) {
|
|
826
|
-
const available = providers.filter(p => p.available);
|
|
827
|
-
if (available.length === 0) {
|
|
828
|
-
return;
|
|
829
|
-
}
|
|
830
|
-
// Claude Code style: don't show providers on startup, keep it minimal
|
|
831
|
-
}
|
|
832
|
-
/**
|
|
833
|
-
* Show unified status bar - Claude Code style (minimal)
|
|
834
|
-
* Note: No-op - status is shown in mode controls line
|
|
835
|
-
*/
|
|
836
|
-
showUnifiedStatusBar(_providers) {
|
|
837
|
-
// No-op - banner is streamed as content, status shown in control bar
|
|
838
|
-
}
|
|
839
|
-
/**
|
|
840
|
-
* Show streaming header - no-op, banner is streamed as content
|
|
841
|
-
*/
|
|
842
|
-
showStreamingHeader(_options) {
|
|
843
|
-
// No-op - banner is streamed as content by the shell
|
|
844
|
-
}
|
|
845
|
-
/**
|
|
846
|
-
* Show model commands help
|
|
847
|
-
*/
|
|
848
|
-
showModelCommands() {
|
|
849
|
-
this.withOutput(() => {
|
|
850
|
-
this.writeLine(theme.ui.muted(`${icons.info} Model commands:`));
|
|
851
|
-
this.writeLine(theme.ui.muted(' /model <name> - Switch to a specific model'));
|
|
852
|
-
this.writeLine(theme.ui.muted(' /model - Show current model'));
|
|
853
|
-
this.writeLine(theme.ui.muted(' /providers - List all available providers'));
|
|
854
|
-
this.writeLine(theme.ui.muted(' /discover - Discover models from provider APIs'));
|
|
855
|
-
this.writeLine();
|
|
856
|
-
});
|
|
857
|
-
}
|
|
858
|
-
formatErrorDetails(error) {
|
|
859
|
-
if (!error) {
|
|
860
|
-
return null;
|
|
861
|
-
}
|
|
862
|
-
if (error instanceof Error) {
|
|
863
|
-
if (error.stack) {
|
|
864
|
-
return highlightError(error.stack);
|
|
865
|
-
}
|
|
866
|
-
return highlightError(error.message);
|
|
867
|
-
}
|
|
868
|
-
if (typeof error === 'string') {
|
|
869
|
-
return highlightError(error);
|
|
870
|
-
}
|
|
871
|
-
try {
|
|
872
|
-
return highlightError(JSON.stringify(error, null, 2));
|
|
873
|
-
}
|
|
874
|
-
catch {
|
|
875
|
-
return null;
|
|
876
|
-
}
|
|
877
|
-
}
|
|
878
|
-
showPlanningStep(step, index, total) {
|
|
879
|
-
// Validate inputs
|
|
880
|
-
if (!step?.trim()) {
|
|
881
|
-
return;
|
|
882
|
-
}
|
|
883
|
-
if (index < 1 || total < 1 || index > total) {
|
|
884
|
-
return;
|
|
885
|
-
}
|
|
886
|
-
const width = Math.max(DISPLAY_CONSTANTS.MIN_THOUGHT_WIDTH, Math.min(this.getColumnWidth(), DISPLAY_CONSTANTS.MAX_MESSAGE_WIDTH));
|
|
887
|
-
const heading = renderSectionHeading(`Plan ${index}/${total}`, {
|
|
888
|
-
subtitle: step,
|
|
889
|
-
icon: icons.arrow,
|
|
890
|
-
tone: 'info',
|
|
891
|
-
width,
|
|
892
|
-
});
|
|
893
|
-
this.withOutput(() => {
|
|
894
|
-
this.writeLine(heading);
|
|
895
|
-
});
|
|
896
|
-
}
|
|
897
|
-
clear() {
|
|
898
|
-
this.withOutput(() => {
|
|
899
|
-
try {
|
|
900
|
-
cursorTo(this.outputStream, 0, 0);
|
|
901
|
-
clearScreenDown(this.outputStream);
|
|
902
|
-
}
|
|
903
|
-
catch {
|
|
904
|
-
this.write('\x1Bc');
|
|
905
|
-
}
|
|
906
|
-
});
|
|
907
|
-
this.stdoutTracker.reset();
|
|
908
|
-
// Banner is streamed content - no re-render on clear
|
|
909
|
-
}
|
|
910
|
-
newLine() {
|
|
911
|
-
this.withOutput(() => {
|
|
912
|
-
this.writeLine();
|
|
913
|
-
});
|
|
914
|
-
}
|
|
915
|
-
// Legacy banner methods removed - banner is streamed as content by the shell
|
|
916
|
-
formatModelLabel(model) {
|
|
917
|
-
if (/gpt-5\.1-?codex/i.test(model)) {
|
|
918
|
-
return model;
|
|
919
|
-
}
|
|
920
|
-
if (/sonnet-4[-.]?5/i.test(model)) {
|
|
921
|
-
return 'Sonnet 4.5';
|
|
922
|
-
}
|
|
923
|
-
if (/opus-4[-.]?1/i.test(model)) {
|
|
924
|
-
return 'Opus 4.1';
|
|
925
|
-
}
|
|
926
|
-
if (/haiku-4[-.]?5/i.test(model)) {
|
|
927
|
-
return 'Haiku 4.5';
|
|
928
|
-
}
|
|
929
|
-
if (/gpt-5\.1/i.test(model)) {
|
|
930
|
-
return 'GPT-5.1';
|
|
931
|
-
}
|
|
932
|
-
if (/gpt-5-?pro/i.test(model)) {
|
|
933
|
-
return 'GPT-5 Pro';
|
|
934
|
-
}
|
|
935
|
-
if (/gpt-5-?mini/i.test(model)) {
|
|
936
|
-
return 'GPT-5 Mini';
|
|
937
|
-
}
|
|
938
|
-
if (/gpt-5-?nano/i.test(model)) {
|
|
939
|
-
return 'GPT-5 Nano';
|
|
940
|
-
}
|
|
941
|
-
return model;
|
|
942
|
-
}
|
|
943
|
-
compactPath(path, maxLen) {
|
|
944
|
-
if (!path) {
|
|
945
|
-
return '';
|
|
946
|
-
}
|
|
947
|
-
if (this.visibleLength(path) <= maxLen) {
|
|
948
|
-
return path;
|
|
949
|
-
}
|
|
950
|
-
const parts = path.split('/').filter(Boolean);
|
|
951
|
-
if (parts.length <= 2) {
|
|
952
|
-
return `${path.slice(0, Math.max(0, maxLen - 3))}...`;
|
|
953
|
-
}
|
|
954
|
-
return `${parts[0]}/.../${parts[parts.length - 1]}`;
|
|
955
|
-
}
|
|
956
|
-
buildChatBox(content, metadata) {
|
|
957
|
-
const normalized = content.trim();
|
|
958
|
-
if (!normalized) {
|
|
959
|
-
return '';
|
|
960
|
-
}
|
|
961
|
-
if (isPlainOutputMode()) {
|
|
962
|
-
const body = renderMessageBody(normalized, this.resolveMessageWidth());
|
|
963
|
-
const telemetry = this.formatTelemetryLine(metadata);
|
|
964
|
-
return telemetry ? `${body}\n${telemetry}` : body;
|
|
965
|
-
}
|
|
966
|
-
const width = this.resolveMessageWidth();
|
|
967
|
-
const panel = renderMessagePanel(normalized, {
|
|
968
|
-
width,
|
|
969
|
-
title: 'Assistant',
|
|
970
|
-
icon: icons.assistant,
|
|
971
|
-
accentColor: theme.assistant ?? theme.primary,
|
|
972
|
-
borderColor: theme.ui.border,
|
|
973
|
-
});
|
|
974
|
-
const telemetry = this.formatTelemetryLine(metadata);
|
|
975
|
-
if (!telemetry) {
|
|
976
|
-
return panel;
|
|
977
|
-
}
|
|
978
|
-
return `${panel}\n${telemetry}`;
|
|
979
|
-
}
|
|
980
|
-
resolveMessageWidth() {
|
|
981
|
-
const columns = this.getColumnWidth();
|
|
982
|
-
return Math.max(DISPLAY_CONSTANTS.MIN_MESSAGE_WIDTH, Math.min(columns - DISPLAY_CONSTANTS.MESSAGE_PADDING, DISPLAY_CONSTANTS.MAX_MESSAGE_WIDTH));
|
|
983
|
-
}
|
|
984
|
-
formatTelemetryLine(metadata) {
|
|
985
|
-
if (!metadata) {
|
|
986
|
-
return '';
|
|
987
|
-
}
|
|
988
|
-
const parts = [];
|
|
989
|
-
const elapsed = this.formatElapsed(metadata.elapsedMs);
|
|
990
|
-
if (elapsed) {
|
|
991
|
-
const elapsedLabel = theme.metrics?.elapsedLabel ?? theme.accent;
|
|
992
|
-
const elapsedValue = theme.metrics?.elapsedValue ?? theme.secondary;
|
|
993
|
-
parts.push(`${elapsedLabel('elapsed')} ${elapsedValue(elapsed)}`);
|
|
994
|
-
}
|
|
995
|
-
if (!parts.length) {
|
|
996
|
-
return '';
|
|
997
|
-
}
|
|
998
|
-
const separator = theme.ui.muted(' • ');
|
|
999
|
-
return ` ${parts.join(separator)}`;
|
|
1000
|
-
}
|
|
1001
|
-
formatElapsed(elapsedMs) {
|
|
1002
|
-
if (typeof elapsedMs !== 'number' || !Number.isFinite(elapsedMs) || elapsedMs < 0) {
|
|
1003
|
-
return null;
|
|
1004
|
-
}
|
|
1005
|
-
const totalSeconds = Math.max(0, Math.round(elapsedMs / 1000));
|
|
1006
|
-
const minutes = Math.floor(totalSeconds / 60);
|
|
1007
|
-
const seconds = totalSeconds % 60;
|
|
1008
|
-
if (minutes > 0) {
|
|
1009
|
-
return `${minutes}m ${seconds.toString().padStart(2, '0')}s`;
|
|
1010
|
-
}
|
|
1011
|
-
return `${seconds}s`;
|
|
1012
|
-
}
|
|
1013
|
-
buildCommandPalette(commands, options) {
|
|
1014
|
-
if (!commands.length) {
|
|
1015
|
-
return '';
|
|
1016
|
-
}
|
|
1017
|
-
const width = Math.max(DISPLAY_CONSTANTS.MIN_MESSAGE_WIDTH, Math.min(this.getColumnWidth() - 2, DISPLAY_CONSTANTS.MAX_MESSAGE_WIDTH));
|
|
1018
|
-
const indent = ' ';
|
|
1019
|
-
const grouped = this.groupPaletteCommands(commands);
|
|
1020
|
-
const commandWidth = this.computeCommandColumnWidth(commands, width, indent.length);
|
|
1021
|
-
const descWidth = Math.max(DISPLAY_CONSTANTS.MIN_WRAP_WIDTH, width - indent.length - commandWidth - 1);
|
|
1022
|
-
const title = options?.title ?? 'Slash commands';
|
|
1023
|
-
const intro = options?.intro ?? 'Describe a task or pick a command below:';
|
|
1024
|
-
const lines = [];
|
|
1025
|
-
lines.push(theme.gradient.primary(title));
|
|
1026
|
-
const introLines = this.wrapLine(intro, width);
|
|
1027
|
-
for (const line of introLines) {
|
|
1028
|
-
lines.push(theme.ui.muted(line));
|
|
1029
|
-
}
|
|
1030
|
-
lines.push('');
|
|
1031
|
-
grouped.forEach(({ category, items }, index) => {
|
|
1032
|
-
const label = this.formatPaletteCategory(category);
|
|
1033
|
-
if (label) {
|
|
1034
|
-
lines.push(theme.bold(label));
|
|
1035
|
-
}
|
|
1036
|
-
for (const item of items) {
|
|
1037
|
-
const wrappedDesc = this.wrapLine(item.description, descWidth);
|
|
1038
|
-
const paddedCommand = item.command.padEnd(commandWidth);
|
|
1039
|
-
const commandLabel = theme.primary(paddedCommand);
|
|
1040
|
-
const firstLine = wrappedDesc[0] ?? '';
|
|
1041
|
-
lines.push(`${indent}${commandLabel} ${this.colorizePaletteText(firstLine, item.tone)}`);
|
|
1042
|
-
for (const extra of wrappedDesc.slice(1)) {
|
|
1043
|
-
lines.push(`${indent}${' '.repeat(commandWidth)} ${this.colorizePaletteText(extra, item.tone)}`);
|
|
1044
|
-
}
|
|
1045
|
-
}
|
|
1046
|
-
if (index < grouped.length - 1) {
|
|
1047
|
-
lines.push('');
|
|
1048
|
-
}
|
|
1049
|
-
});
|
|
1050
|
-
return lines.join('\n').trimEnd();
|
|
1051
|
-
}
|
|
1052
|
-
groupPaletteCommands(commands) {
|
|
1053
|
-
const FALLBACK = 'other';
|
|
1054
|
-
const groups = new Map();
|
|
1055
|
-
for (const item of commands) {
|
|
1056
|
-
const key = (item.category ?? FALLBACK).toLowerCase();
|
|
1057
|
-
const bucket = groups.get(key) ?? [];
|
|
1058
|
-
bucket.push(item);
|
|
1059
|
-
groups.set(key, bucket);
|
|
1060
|
-
}
|
|
1061
|
-
const order = ['configuration', 'workspace', 'diagnostics', 'other'];
|
|
1062
|
-
const orderedKeys = [
|
|
1063
|
-
...order.filter((key) => groups.has(key)),
|
|
1064
|
-
...Array.from(groups.keys()).filter((key) => !order.includes(key)),
|
|
1065
|
-
];
|
|
1066
|
-
return orderedKeys.map((category) => ({ category, items: groups.get(category) ?? [] }));
|
|
1067
|
-
}
|
|
1068
|
-
computeCommandColumnWidth(commands, totalWidth, indentWidth) {
|
|
1069
|
-
const longest = commands.reduce((max, item) => Math.max(max, this.visibleLength(item.command)), 0);
|
|
1070
|
-
const maxAllowed = Math.max(12, Math.min(longest + 2, Math.floor(totalWidth * 0.35)));
|
|
1071
|
-
const budget = Math.max(10, totalWidth - indentWidth - DISPLAY_CONSTANTS.MIN_WRAP_WIDTH);
|
|
1072
|
-
return Math.min(maxAllowed, budget);
|
|
1073
|
-
}
|
|
1074
|
-
formatPaletteCategory(category) {
|
|
1075
|
-
if (!category) {
|
|
1076
|
-
return 'Other';
|
|
1077
|
-
}
|
|
1078
|
-
switch (category.toLowerCase()) {
|
|
1079
|
-
case 'configuration':
|
|
1080
|
-
return 'Configuration';
|
|
1081
|
-
case 'workspace':
|
|
1082
|
-
return 'Workspace';
|
|
1083
|
-
case 'diagnostics':
|
|
1084
|
-
return 'Diagnostics';
|
|
1085
|
-
case 'other':
|
|
1086
|
-
return 'Other';
|
|
1087
|
-
default:
|
|
1088
|
-
return category[0]?.toUpperCase() + category.slice(1);
|
|
1089
|
-
}
|
|
1090
|
-
}
|
|
1091
|
-
colorizePaletteText(text, tone) {
|
|
1092
|
-
switch (tone) {
|
|
1093
|
-
case 'warn':
|
|
1094
|
-
return theme.warning(text);
|
|
1095
|
-
case 'success':
|
|
1096
|
-
return theme.success(text);
|
|
1097
|
-
case 'info':
|
|
1098
|
-
return theme.info(text);
|
|
1099
|
-
case 'muted':
|
|
1100
|
-
default:
|
|
1101
|
-
return theme.ui.muted(text);
|
|
1102
|
-
}
|
|
1103
|
-
}
|
|
1104
|
-
/**
|
|
1105
|
-
* Wraps text with a prefix on the first line and optional continuation prefix.
|
|
1106
|
-
* Handles multi-line text and word wrapping intelligently.
|
|
1107
|
-
*/
|
|
1108
|
-
wrapWithPrefix(text, prefix, options) {
|
|
1109
|
-
if (!text) {
|
|
1110
|
-
return prefix.trimEnd();
|
|
1111
|
-
}
|
|
1112
|
-
const width = Math.max(DISPLAY_CONSTANTS.MIN_ACTION_WIDTH, Math.min(this.getColumnWidth(), DISPLAY_CONSTANTS.MAX_ACTION_WIDTH));
|
|
1113
|
-
const prefixWidth = this.visibleLength(prefix);
|
|
1114
|
-
const available = Math.max(DISPLAY_CONSTANTS.MIN_CONTENT_WIDTH, width - prefixWidth);
|
|
1115
|
-
const indent = typeof options?.continuationPrefix === 'string'
|
|
1116
|
-
? options.continuationPrefix
|
|
1117
|
-
: ' '.repeat(Math.max(0, prefixWidth));
|
|
1118
|
-
const segments = text.split('\n');
|
|
1119
|
-
const lines = [];
|
|
1120
|
-
let usedPrefix = false;
|
|
1121
|
-
for (const segment of segments) {
|
|
1122
|
-
if (!segment.trim()) {
|
|
1123
|
-
if (usedPrefix) {
|
|
1124
|
-
lines.push(indent);
|
|
1125
|
-
}
|
|
1126
|
-
else {
|
|
1127
|
-
lines.push(prefix.trimEnd());
|
|
1128
|
-
usedPrefix = true;
|
|
1129
|
-
}
|
|
1130
|
-
continue;
|
|
1131
|
-
}
|
|
1132
|
-
const wrapped = this.wrapLine(segment.trim(), available);
|
|
1133
|
-
for (const line of wrapped) {
|
|
1134
|
-
lines.push(!usedPrefix ? `${prefix}${line}` : `${indent}${line}`);
|
|
1135
|
-
usedPrefix = true;
|
|
1136
|
-
}
|
|
1137
|
-
}
|
|
1138
|
-
return lines.join('\n');
|
|
1139
|
-
}
|
|
1140
|
-
resolveStatusColor(status) {
|
|
1141
|
-
switch (status) {
|
|
1142
|
-
case 'success':
|
|
1143
|
-
return theme.success;
|
|
1144
|
-
case 'error':
|
|
1145
|
-
return theme.error;
|
|
1146
|
-
case 'warning':
|
|
1147
|
-
return theme.warning;
|
|
1148
|
-
case 'pending':
|
|
1149
|
-
return theme.info;
|
|
1150
|
-
default:
|
|
1151
|
-
return theme.secondary;
|
|
1152
|
-
}
|
|
1153
|
-
}
|
|
1154
|
-
formatActionIcon(status) {
|
|
1155
|
-
const colorize = this.resolveStatusColor(status);
|
|
1156
|
-
return colorize(`${icons.action}`);
|
|
1157
|
-
}
|
|
1158
|
-
buildClaudeStyleThought(content, durationMs) {
|
|
1159
|
-
// Claude Code style: ∴ Thought for Xs or ✻ Thinking…
|
|
1160
|
-
const thinkingStyle = theme.thinking || {
|
|
1161
|
-
icon: theme.info,
|
|
1162
|
-
text: theme.ui.muted,
|
|
1163
|
-
border: theme.ui.border,
|
|
1164
|
-
label: theme.info,
|
|
1165
|
-
};
|
|
1166
|
-
const width = Math.min(this.getColumnWidth() - 4, 70);
|
|
1167
|
-
const lines = [];
|
|
1168
|
-
// Header: "∴ Thought for Xs" for completed, "✻ Thinking…" for active
|
|
1169
|
-
if (durationMs !== undefined) {
|
|
1170
|
-
const elapsed = this.formatElapsedTime(Math.floor(durationMs / 1000));
|
|
1171
|
-
lines.push(`${theme.info('∴')} Thought for ${elapsed}`);
|
|
1172
|
-
}
|
|
1173
|
-
else {
|
|
1174
|
-
lines.push(`${theme.info('✻')} ${thinkingStyle.label('Thinking…')}`);
|
|
1175
|
-
}
|
|
1176
|
-
// Parse and format the thinking content with simple indentation
|
|
1177
|
-
const contentLines = content.split('\n');
|
|
1178
|
-
const hasContent = contentLines.some(line => line.trim().length > 0);
|
|
1179
|
-
if (hasContent) {
|
|
1180
|
-
lines.push(''); // Visual gap between header and content
|
|
1181
|
-
}
|
|
1182
|
-
for (const line of contentLines) {
|
|
1183
|
-
const trimmed = line.replace(/\s+$/, '');
|
|
1184
|
-
if (!trimmed.trim()) {
|
|
1185
|
-
lines.push(''); // Preserve intentional blank lines inside the block
|
|
1186
|
-
continue;
|
|
1187
|
-
}
|
|
1188
|
-
const wrapped = this.wrapLine(trimmed, width - 4);
|
|
1189
|
-
for (const wrappedLine of wrapped) {
|
|
1190
|
-
lines.push(` ${thinkingStyle.text(wrappedLine)}`);
|
|
1191
|
-
}
|
|
1192
|
-
}
|
|
1193
|
-
return lines.join('\n');
|
|
1194
|
-
}
|
|
1195
|
-
/**
|
|
1196
|
-
* Show a thinking block with rich formatting (public method for external use)
|
|
1197
|
-
* @param content The thinking content to display
|
|
1198
|
-
* @param durationMs Optional duration in milliseconds to show "Thought for Xs"
|
|
1199
|
-
*/
|
|
1200
|
-
showThinkingBlock(content, durationMs) {
|
|
1201
|
-
this.clearSpinnerIfActive();
|
|
1202
|
-
const block = this.buildClaudeStyleThought(content, durationMs);
|
|
1203
|
-
this.withOutput(() => {
|
|
1204
|
-
this.writeLine();
|
|
1205
|
-
this.writeLine(block);
|
|
1206
|
-
this.writeLine();
|
|
1207
|
-
this.writeLine(); // Extra newline for better visual separation
|
|
1208
|
-
});
|
|
1209
|
-
}
|
|
1210
|
-
buildSubActionPrefixes(status, isLast) {
|
|
1211
|
-
if (isLast) {
|
|
1212
|
-
const colorize = this.resolveStatusColor(status);
|
|
1213
|
-
// Claude Code style: use ⎿ for sub-action result/detail prefix
|
|
1214
|
-
return {
|
|
1215
|
-
prefix: ` ${colorize(icons.subaction)} `,
|
|
1216
|
-
continuation: ' ',
|
|
1217
|
-
};
|
|
1218
|
-
}
|
|
1219
|
-
const branch = theme.ui.muted('│');
|
|
1220
|
-
return {
|
|
1221
|
-
prefix: ` ${branch} `,
|
|
1222
|
-
continuation: ` ${branch} `,
|
|
1223
|
-
};
|
|
1224
|
-
}
|
|
1225
|
-
/**
|
|
1226
|
-
* Wraps a single line of text to fit within the specified width.
|
|
1227
|
-
* Intelligently handles word breaking and preserves spaces.
|
|
1228
|
-
*/
|
|
1229
|
-
wrapLine(text, width) {
|
|
1230
|
-
// Handle edge cases
|
|
1231
|
-
if (width <= 0) {
|
|
1232
|
-
return [text];
|
|
1233
|
-
}
|
|
1234
|
-
if (!text) {
|
|
1235
|
-
return [''];
|
|
1236
|
-
}
|
|
1237
|
-
if (text.length <= width) {
|
|
1238
|
-
return [text];
|
|
1239
|
-
}
|
|
1240
|
-
const words = text.split(/\s+/).filter(Boolean);
|
|
1241
|
-
// If no words, chunk the entire text
|
|
1242
|
-
if (!words.length) {
|
|
1243
|
-
return this.chunkWord(text, width);
|
|
1244
|
-
}
|
|
1245
|
-
const lines = [];
|
|
1246
|
-
let current = '';
|
|
1247
|
-
for (const word of words) {
|
|
1248
|
-
const appendResult = this.tryAppendWord(current, word, width);
|
|
1249
|
-
if (appendResult.shouldFlush) {
|
|
1250
|
-
lines.push(current);
|
|
1251
|
-
}
|
|
1252
|
-
if (appendResult.chunks.length > 0) {
|
|
1253
|
-
// Word was too long and was chunked
|
|
1254
|
-
lines.push(...appendResult.chunks.slice(0, -1));
|
|
1255
|
-
current = appendResult.chunks[appendResult.chunks.length - 1] ?? '';
|
|
1256
|
-
}
|
|
1257
|
-
else {
|
|
1258
|
-
current = appendResult.newCurrent;
|
|
1259
|
-
}
|
|
1260
|
-
}
|
|
1261
|
-
if (current) {
|
|
1262
|
-
lines.push(current);
|
|
1263
|
-
}
|
|
1264
|
-
return lines.length ? lines : [''];
|
|
1265
|
-
}
|
|
1266
|
-
/**
|
|
1267
|
-
* Attempts to append a word to the current line.
|
|
1268
|
-
* Returns instructions on how to handle the word.
|
|
1269
|
-
*/
|
|
1270
|
-
tryAppendWord(current, word, width) {
|
|
1271
|
-
if (!word) {
|
|
1272
|
-
return { shouldFlush: false, newCurrent: current, chunks: [] };
|
|
1273
|
-
}
|
|
1274
|
-
// Empty current line - start new line with word
|
|
1275
|
-
if (!current) {
|
|
1276
|
-
if (word.length <= width) {
|
|
1277
|
-
return { shouldFlush: false, newCurrent: word, chunks: [] };
|
|
1278
|
-
}
|
|
1279
|
-
// Word too long, need to chunk it
|
|
1280
|
-
return { shouldFlush: false, newCurrent: '', chunks: this.chunkWord(word, width) };
|
|
1281
|
-
}
|
|
1282
|
-
// Word fits on current line with space
|
|
1283
|
-
if (current.length + 1 + word.length <= width) {
|
|
1284
|
-
return { shouldFlush: false, newCurrent: `${current} ${word}`, chunks: [] };
|
|
1285
|
-
}
|
|
1286
|
-
// Word doesn't fit - flush current and start new line
|
|
1287
|
-
if (word.length <= width) {
|
|
1288
|
-
return { shouldFlush: true, newCurrent: word, chunks: [] };
|
|
1289
|
-
}
|
|
1290
|
-
// Word doesn't fit and is too long - flush current and chunk word
|
|
1291
|
-
return { shouldFlush: true, newCurrent: '', chunks: this.chunkWord(word, width) };
|
|
1292
|
-
}
|
|
1293
|
-
/**
|
|
1294
|
-
* Splits a long word into chunks that fit within the specified width.
|
|
1295
|
-
* Used when a single word is too long to fit on one line.
|
|
1296
|
-
*/
|
|
1297
|
-
chunkWord(word, width) {
|
|
1298
|
-
if (width <= 0 || !word) {
|
|
1299
|
-
return word ? [word] : [''];
|
|
1300
|
-
}
|
|
1301
|
-
const chunks = [];
|
|
1302
|
-
for (let i = 0; i < word.length; i += width) {
|
|
1303
|
-
chunks.push(word.slice(i, i + width));
|
|
1304
|
-
}
|
|
1305
|
-
return chunks.length > 0 ? chunks : [''];
|
|
1306
|
-
}
|
|
1307
|
-
/**
|
|
1308
|
-
* Returns the visible length of a string, excluding ANSI escape codes.
|
|
1309
|
-
*/
|
|
1310
|
-
visibleLength(value) {
|
|
1311
|
-
if (!value) {
|
|
1312
|
-
return 0;
|
|
1313
|
-
}
|
|
1314
|
-
return this.stripAnsi(value).length;
|
|
1315
|
-
}
|
|
1316
|
-
/**
|
|
1317
|
-
* Removes ANSI escape codes from a string to get the visible text.
|
|
1318
|
-
* Uses the standard ANSI escape sequence pattern.
|
|
1319
|
-
*/
|
|
1320
|
-
stripAnsi(value) {
|
|
1321
|
-
if (!value) {
|
|
1322
|
-
return '';
|
|
1323
|
-
}
|
|
1324
|
-
return value.replace(/\u001B\[[0-?]*[ -/]*[@-~]/g, '');
|
|
1325
|
-
}
|
|
1326
|
-
}
|
|
1327
|
-
export const display = new Display();
|
|
1328
|
-
//# sourceMappingURL=display.js.map
|