feat: add environment-aware debugging to diagnostic tools

Enhanced health check and diagnostic tools with environment-specific
troubleshooting guidance based on telemetry analysis of 632K events
from 5,308 users.

Key improvements:
- Environment-aware debugging suggestions for http/stdio modes
- Docker-specific troubleshooting when IS_DOCKER=true
- Cloud platform detection (Railway, Render, Fly, Heroku, AWS, K8s, GCP, Azure)
- Platform-specific configuration paths (macOS, Windows, Linux)
- MCP_MODE and platform tracking in telemetry events
- Comprehensive integration tests for environment detection

Addresses 59% session abandonment by providing actionable, context-specific
next steps based on user's deployment environment.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
czlonkowski
2025-10-10 12:34:20 +02:00
parent 4016ac42ef
commit 275e4f8cef
8 changed files with 882 additions and 85 deletions

View File

@@ -35,6 +35,9 @@ describe('Integration: handleHealthCheck', () => {
expect(data).toHaveProperty('status');
expect(data).toHaveProperty('apiUrl');
expect(data).toHaveProperty('mcpVersion');
expect(data).toHaveProperty('versionCheck');
expect(data).toHaveProperty('performance');
expect(data).toHaveProperty('nextSteps');
// Status should be a string (e.g., "ok", "healthy")
if (data.status) {
@@ -48,6 +51,22 @@ describe('Integration: handleHealthCheck', () => {
// MCP version should be defined
expect(data.mcpVersion).toBeDefined();
expect(typeof data.mcpVersion).toBe('string');
// Version check should be present
expect(data.versionCheck).toBeDefined();
expect(data.versionCheck).toHaveProperty('current');
expect(data.versionCheck).toHaveProperty('upToDate');
expect(typeof data.versionCheck.upToDate).toBe('boolean');
// Performance metrics should be present
expect(data.performance).toBeDefined();
expect(data.performance).toHaveProperty('responseTimeMs');
expect(typeof data.performance.responseTimeMs).toBe('number');
expect(data.performance.responseTimeMs).toBeGreaterThan(0);
// Next steps should be present
expect(data.nextSteps).toBeDefined();
expect(Array.isArray(data.nextSteps)).toBe(true);
});
it('should include feature availability information', async () => {