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

@@ -77,6 +77,10 @@ export interface DiagnosticResponse {
N8N_API_KEY: string | null;
NODE_ENV: string;
MCP_MODE: string;
isDocker: boolean;
cloudPlatform: string | null;
nodeVersion: string;
platform: string;
};
apiConfiguration: {
configured: boolean;
@@ -88,10 +92,43 @@ export interface DiagnosticResponse {
} | null;
};
toolsAvailability: ToolsAvailability;
troubleshooting: {
versionInfo?: {
current: string;
latest: string | null;
upToDate: boolean;
message: string;
updateCommand?: string;
};
performance?: {
diagnosticResponseTimeMs: number;
cacheHitRate: string;
cachedInstances: number;
};
modeSpecificDebug: {
mode: string;
troubleshooting: string[];
commonIssues: string[];
[key: string]: any; // For mode-specific fields like port, configLocation, etc.
};
dockerDebug?: {
containerDetected: boolean;
troubleshooting: string[];
commonIssues: string[];
};
cloudPlatformDebug?: {
name: string;
troubleshooting: string[];
};
troubleshooting?: {
issue?: string;
error?: string;
steps: string[];
commonIssues?: string[];
documentation: string;
};
nextSteps?: any;
setupGuide?: any;
updateWarning?: any;
debug?: DebugInfo;
[key: string]: any; // Allow dynamic property access for optional field checks
}