Binarele VFP raman pe SVN si sunt git-ignored; COMUN e gestionat separat. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A5okKjUKMM5Xk1egq2w81P
184 lines
7.2 KiB
PowerShell
184 lines
7.2 KiB
PowerShell
$report = "claude-code-diagnostic-PROBLEMA.md"
|
|
$out = @()
|
|
$out += "# Claude Code Diagnostic - MASINA CU PROBLEME - $env:COMPUTERNAME - $(Get-Date -Format 'yyyy-MM-dd HH:mm')"
|
|
$out += ""
|
|
|
|
$out += "## 1. Versiuni si instalare"
|
|
$out += '```'
|
|
$out += "claude --version: $(claude --version 2>&1)"
|
|
$out += "where claude : $((where.exe claude 2>&1) -join '; ')"
|
|
$out += "node --version : $(node --version 2>&1)"
|
|
$out += "npm --version : $(npm --version 2>&1)"
|
|
$out += "where node : $((where.exe node 2>&1) -join '; ')"
|
|
$out += "where npm : $((where.exe npm 2>&1) -join '; ')"
|
|
$out += ""
|
|
$out += "npm global claude pkg:"
|
|
$out += (npm list -g --depth=0 2>$null | Select-String -Pattern "claude" | Out-String).Trim()
|
|
$out += ""
|
|
$out += "Native installer existence:"
|
|
$out += " ~\.local\bin\claude.exe : $(Test-Path "$env:USERPROFILE\.local\bin\claude.exe")"
|
|
$out += " LOCALAPPDATA\Programs\claude\ : $(Test-Path "$env:LOCALAPPDATA\Programs\claude\claude.exe")"
|
|
$out += " ~\.claude\local\ : $(Test-Path "$env:USERPROFILE\.claude\local")"
|
|
$out += '```'
|
|
$out += ""
|
|
|
|
$out += "## 2. claude doctor"
|
|
$out += '```'
|
|
$out += "RULEAZA MANUAL: claude doctor"
|
|
$out += "(nu se poate captura non-interactiv - copiaza output-ul aici manual)"
|
|
$out += '```'
|
|
$out += ""
|
|
|
|
$out += "## 3. Configuratie Claude"
|
|
$out += '```'
|
|
if (Test-Path "$env:USERPROFILE\.claude.json") {
|
|
try {
|
|
$cfg = Get-Content "$env:USERPROFILE\.claude.json" -Raw | ConvertFrom-Json
|
|
$out += "~/.claude.json keys:"
|
|
$out += ($cfg.PSObject.Properties.Name -join ", ")
|
|
$out += ""
|
|
$out += "installMethod: $($cfg.installMethod)"
|
|
$out += "autoUpdates : $($cfg.autoUpdates)"
|
|
$out += "autoUpdatesProtectedForNative: $($cfg.autoUpdatesProtectedForNative)"
|
|
} catch {
|
|
$out += "ERROR parsing .claude.json: $_"
|
|
}
|
|
} else {
|
|
$out += "~/.claude.json: MISSING"
|
|
}
|
|
$out += ""
|
|
$out += "Settings files:"
|
|
$out += " ~/.claude/settings.json : $(Test-Path "$env:USERPROFILE\.claude\settings.json")"
|
|
$out += " ./.claude/settings.json : $(Test-Path ".\.claude\settings.json")"
|
|
$out += " ./.claude/settings.local.json : $(Test-Path ".\.claude\settings.local.json")"
|
|
$out += ""
|
|
$out += "Credentials file: $(Test-Path "$env:USERPROFILE\.claude\.credentials.json")"
|
|
if (Test-Path "$env:USERPROFILE\.claude\.credentials.json") {
|
|
$credSize = (Get-Item "$env:USERPROFILE\.claude\.credentials.json").Length
|
|
$out += " size: $credSize bytes"
|
|
}
|
|
$out += '```'
|
|
$out += ""
|
|
|
|
$out += "## 4. Variabile de mediu"
|
|
$out += '```'
|
|
$envs = Get-ChildItem Env: | Where-Object { $_.Name -match '^(CLAUDE_|ANTHROPIC_|NODE_|HTTP_PROXY|HTTPS_PROXY|NO_PROXY|ALL_PROXY)' }
|
|
if ($envs) {
|
|
$out += ($envs | Format-Table -AutoSize | Out-String).Trim()
|
|
} else {
|
|
$out += "(none set)"
|
|
}
|
|
$out += '```'
|
|
$out += ""
|
|
|
|
$out += "## 5. Retea"
|
|
$out += '```'
|
|
$out += "DNS servers:"
|
|
$out += (Get-DnsClientServerAddress -AddressFamily IPv4 | Where-Object {$_.ServerAddresses} | Format-Table InterfaceAlias, ServerAddresses -AutoSize | Out-String).Trim()
|
|
$out += ""
|
|
$out += "WinHTTP proxy:"
|
|
$out += (netsh winhttp show proxy | Out-String).Trim()
|
|
$out += ""
|
|
$out += "IE/system proxy:"
|
|
$ie = Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -ErrorAction SilentlyContinue
|
|
$out += " ProxyEnable : $($ie.ProxyEnable)"
|
|
$out += " ProxyServer : $($ie.ProxyServer)"
|
|
$out += " AutoConfigURL: $($ie.AutoConfigURL)"
|
|
$out += ""
|
|
$out += "DNS resolution api.anthropic.com:"
|
|
$out += " A : $((Resolve-DnsName api.anthropic.com -Type A -ErrorAction SilentlyContinue).IPAddress -join ', ')"
|
|
$out += " AAAA : $((Resolve-DnsName api.anthropic.com -Type AAAA -ErrorAction SilentlyContinue).IPAddress -join ', ')"
|
|
$out += ""
|
|
$out += "TCP 443 to api.anthropic.com:"
|
|
$tcp = Test-NetConnection -ComputerName api.anthropic.com -Port 443 -WarningAction SilentlyContinue
|
|
$out += " RemoteAddress : $($tcp.RemoteAddress)"
|
|
$out += " TcpTestSucceeded : $($tcp.TcpTestSucceeded)"
|
|
$out += ""
|
|
$out += "HTTP test (POST /v1/messages, expect 401):"
|
|
try {
|
|
$resp = Invoke-WebRequest -Uri https://api.anthropic.com/v1/messages -Method POST -UseBasicParsing -TimeoutSec 10 -ErrorAction Stop
|
|
$out += " Status: $($resp.StatusCode) - UNEXPECTED (should be 401)"
|
|
} catch {
|
|
$sc = $_.Exception.Response.StatusCode.value__
|
|
if ($sc) {
|
|
$out += " Status: $sc $($_.Exception.Response.StatusCode) (401 = OK / a ajuns la API)"
|
|
} else {
|
|
$out += " ERROR: $($_.Exception.Message)"
|
|
}
|
|
}
|
|
$out += '```'
|
|
$out += ""
|
|
|
|
$out += "## 6. Securitate"
|
|
$out += '```'
|
|
$out += "Antivirus products:"
|
|
try {
|
|
$av = Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct -ErrorAction Stop
|
|
$out += ($av | Select-Object displayName, productState | Format-Table -AutoSize | Out-String).Trim()
|
|
} catch {
|
|
$out += " (could not query - $_)"
|
|
}
|
|
$out += ""
|
|
$out += "Defender state:"
|
|
try {
|
|
$mp = Get-MpPreference
|
|
$out += " DisableRealtimeMonitoring: $($mp.DisableRealtimeMonitoring)"
|
|
$out += " EnableNetworkProtection : $($mp.EnableNetworkProtection)"
|
|
$st = Get-MpComputerStatus
|
|
$out += " AntivirusEnabled : $($st.AntivirusEnabled)"
|
|
$out += " RealTimeProtectionEnabled: $($st.RealTimeProtectionEnabled)"
|
|
} catch {
|
|
$out += " (need admin for full info)"
|
|
}
|
|
$out += ""
|
|
$out += "Firewall rules claude:"
|
|
$fwc = Get-NetFirewallRule -DisplayName "*claude*" -ErrorAction SilentlyContinue
|
|
if ($fwc) {
|
|
$out += ($fwc | Select-Object DisplayName, Enabled, Direction, Action | Format-Table -AutoSize | Out-String).Trim()
|
|
} else {
|
|
$out += " No claude rules"
|
|
}
|
|
$out += ""
|
|
$out += "Firewall rules node:"
|
|
$fwn = Get-NetFirewallRule -DisplayName "*node*" -ErrorAction SilentlyContinue
|
|
if ($fwn) {
|
|
$out += ($fwn | Select-Object DisplayName, Enabled, Direction, Action | Format-Table -AutoSize | Out-String).Trim()
|
|
} else {
|
|
$out += " No node rules"
|
|
}
|
|
$out += '```'
|
|
$out += ""
|
|
|
|
$out += "## 7. Sistem"
|
|
$out += '```'
|
|
$ver = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
|
|
$out += "OS DisplayVersion: $($ver.DisplayVersion)"
|
|
$out += "Build : $($ver.CurrentBuild).$($ver.UBR)"
|
|
$out += "PowerShell : $($PSVersionTable.PSVersion)"
|
|
$out += "Architecture : $env:PROCESSOR_ARCHITECTURE"
|
|
$out += ""
|
|
$out += "Network profiles:"
|
|
$out += (Get-NetConnectionProfile | Select-Object Name, NetworkCategory, IPv4Connectivity, IPv6Connectivity | Format-Table -AutoSize | Out-String).Trim()
|
|
$out += ""
|
|
$out += "VPN-like adapters:"
|
|
$vpn = Get-NetAdapter | Where-Object { $_.InterfaceDescription -match 'VPN|TAP|WireGuard|Tailscale|ZeroTier|WARP|OpenVPN' }
|
|
if ($vpn) {
|
|
$out += ($vpn | Select-Object Name, InterfaceDescription, Status | Format-Table -AutoSize | Out-String).Trim()
|
|
} else {
|
|
$out += " none"
|
|
}
|
|
$out += '```'
|
|
$out += ""
|
|
|
|
$out += "## 8. Test minim Claude Code (CAPTUREAZA RETRY LOOP)"
|
|
$out += '```'
|
|
$out += "RULEAZA MANUAL in alt terminal si lipeste output-ul aici:"
|
|
$out += " claude --debug"
|
|
$out += "Apoi tasteaza: buna"
|
|
$out += "Asteapta 1-2 retries, apoi Ctrl+C si copiaza ULTIMELE 30-40 linii."
|
|
$out += '```'
|
|
|
|
$out -join "`r`n" | Out-File -FilePath $report -Encoding UTF8
|
|
Write-Host ""
|
|
Write-Host "Report written to: $report" -ForegroundColor Green
|
|
Write-Host "Locatie completa : $((Resolve-Path $report).Path)" -ForegroundColor Green |