@symbeon/orbit-devops 1.0.0
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/.agent/skills/orbit-devops/SKILL.md +54 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +44 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +33 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +51 -0
- package/.github/dependabot.yml +64 -0
- package/ARCHITECTURE.json +98 -0
- package/AdditionalCleanup.ps1 +70 -0
- package/AnalyzeCursor.ps1 +25 -0
- package/AppDataAudit.ps1 +16 -0
- package/CHANGELOG.md +83 -0
- package/CONFIG_LOG.md +35 -0
- package/CONTRIBUTING.md +203 -0
- package/CategorizedScan.ps1 +37 -0
- package/CategorizedScan_v2.ps1 +38 -0
- package/CheckAnaconda.ps1 +9 -0
- package/CheckAppData.ps1 +8 -0
- package/CheckAppDataRoaming.ps1 +8 -0
- package/CheckBackupSizes.ps1 +17 -0
- package/CheckCacheSize.ps1 +17 -0
- package/CheckNodeModules.ps1 +17 -0
- package/CheckSpace.ps1 +2 -0
- package/CheckTargetSizes.ps1 +17 -0
- package/CheckUserRoot.ps1 +10 -0
- package/DeepStorageAnalysis.ps1 +76 -0
- package/DetailedBloatAudit.ps1 +55 -0
- package/DetailedBloatAudit_v3.ps1 +50 -0
- package/DetailedProcessAudit.ps1 +43 -0
- package/DiagnosticoSistema.ps1 +155 -0
- package/ExecuteCleanup.ps1 +73 -0
- package/ExecuteTotalCleanup.ps1 +86 -0
- package/FinalCategorizedReport.ps1 +49 -0
- package/FinalDeepDive.ps1 +34 -0
- package/ForcePush.ps1 +31 -0
- package/ForensicRAMAudit.ps1 +26 -0
- package/ForensicRAMAudit_UTF8.ps1 +32 -0
- package/ForensicRAMAudit_v2.ps1 +25 -0
- package/ForensicRAMAudit_v3.ps1 +25 -0
- package/FullRAMReport_Local.txt +0 -0
- package/FullRAMReport_UTF8.txt +1400 -0
- package/GiantHunt.ps1 +26 -0
- package/GlobalRAMAudit.ps1 +57 -0
- package/LICENSE +21 -0
- package/MeasureSuspects.ps1 +17 -0
- package/NEXT_STEPS.md +35 -0
- package/Orbit.ps1 +40 -0
- package/PostRebootCleanup.ps1 +60 -0
- package/RAMAudit.ps1 +41 -0
- package/RAMAudit_v2.ps1 +24 -0
- package/README.md +58 -0
- package/RootAudit.ps1 +14 -0
- package/RunDiagnostic.ps1 +119 -0
- package/RunDiagnosticSimple.ps1 +42 -0
- package/SECURITY.md +67 -0
- package/SETUP.md +34 -0
- package/SafeSurgery.ps1 +69 -0
- package/ScanPrograms.ps1 +13 -0
- package/ScanRepoWaste.ps1 +45 -0
- package/ScanStorage.ps1 +41 -0
- package/ScanTargets.ps1 +39 -0
- package/SimpleSurgicalAudit.ps1 +22 -0
- package/SurgicalBloatAudit.ps1 +35 -0
- package/SurgicalScan.ps1 +28 -0
- package/SystemDiagnostic.ps1 +588 -0
- package/SystemDiagnosticSimple.ps1 +141 -0
- package/SystemDiagnosticUser.ps1 +92 -0
- package/SystemDiagnosticUser_v2.ps1 +36 -0
- package/UserAudit.ps1 +23 -0
- package/bin/orbit.js +99 -0
- package/check_environment.ps1 +104 -0
- package/deep_downloads_org_log.txt +15 -0
- package/diagnostic_error.txt +83 -0
- package/diskpart_log.txt +0 -0
- package/docs/DEPRECATED_USERNAME_CHANGE.md +138 -0
- package/docs/PROJECT_STRUCTURE.md +156 -0
- package/downloads_audit.txt +32 -0
- package/downloads_audit_clear.txt +27 -0
- package/downloads_org_log.txt +85 -0
- package/mcp/README.md +61 -0
- package/mcp/server.py +109 -0
- package/package.json +39 -0
- package/scripts/mac/diagnostic.sh +46 -0
- package/scripts/stack/Push-Stack.ps1 +41 -0
- package/scripts/stack/SnapshotEnv.ps1 +22 -0
- package/scripts/utils/DeepOrganizeDownloads.ps1 +82 -0
- package/scripts/utils/OrganizeDownloads.ps1 +40 -0
- package/scripts/wsl/CompactWSL.ps1 +60 -0
- package/setup_environment.ps1 +59 -0
- package/sizes.txt +6 -0
- package/verify_environment.ps1 +46 -0
package/GiantHunt.ps1
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
$ErrorActionPreference = "SilentlyContinue"
|
|
2
|
+
$root = "C:\"
|
|
3
|
+
$folders = Get-ChildItem -Path $root -Directory
|
|
4
|
+
|
|
5
|
+
Write-Host "=== C: DRIVE TOP-LEVEL AUDIT ===" -ForegroundColor Cyan
|
|
6
|
+
Write-Host "Analyzing root folders (this may take a minute)..."
|
|
7
|
+
|
|
8
|
+
$results = foreach ($f in $folders) {
|
|
9
|
+
if ($f.Name -eq "Windows") { continue } # Skip Windows core
|
|
10
|
+
|
|
11
|
+
$size = Get-ChildItem $f.FullName -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum
|
|
12
|
+
[PSCustomObject]@{
|
|
13
|
+
Folder = $f.Name
|
|
14
|
+
SizeGB = [math]::Round($size.Sum / 1GB, 2)
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
# Special check for User Profile AppData (Common Bloat Area)
|
|
19
|
+
$userProfile = $env:USERPROFILE
|
|
20
|
+
$appDataSize = Get-ChildItem "$userProfile\AppData" -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum
|
|
21
|
+
$results += [PSCustomObject]@{
|
|
22
|
+
Folder = "USER_AppData"
|
|
23
|
+
SizeGB = [math]::Round($appDataSize.Sum / 1GB, 2)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
$results | Sort-Object SizeGB -Descending | Format-Table -AutoSize
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
$ErrorActionPreference = "SilentlyContinue"
|
|
2
|
+
|
|
3
|
+
Write-Host "=== AUDITORIA GLOBAL DE MEMORIA (360 GRAUS) ===" -ForegroundColor Cyan
|
|
4
|
+
Write-Host "Iniciando varredura profunda em Processos, Servicos e Bloatware...`n"
|
|
5
|
+
|
|
6
|
+
# 1. Total de Processos por Empresa/Fabricante (Cluster de Bloatware)
|
|
7
|
+
Write-Host "--- Consumo por Fabricante/Cluster ---" -ForegroundColor Yellow
|
|
8
|
+
$allProcs = Get-Process
|
|
9
|
+
$clusters = @{
|
|
10
|
+
"ACER (Fabricante)" = "Acer*"
|
|
11
|
+
"MICROSOFT (System/Edge)" = "msedge*", "Search*", "Shell*", "Explorer*"
|
|
12
|
+
"DEVELOPER (VSCode/Node/Git)" = "code*", "node*", "git*", "language_server*"
|
|
13
|
+
"SEGURANCA (Windows Defender)" = "MsMpEng*", "NisSrv*"
|
|
14
|
+
"DOCKER/WSL" = "docker*", "vmmem*"
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
foreach ($c in $clusters.Keys) {
|
|
18
|
+
$matched = Get-Process -Name $clusters[$c]
|
|
19
|
+
if ($matched) {
|
|
20
|
+
$size = ($matched | Measure-Object WorkingSet -Sum).Sum / 1MB
|
|
21
|
+
Write-Host "$c : $([math]::Round($size, 2)) MB ($($matched.Count) processos)"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
# 2. Servicos do Windows Ativos (Top 10 por Memoria via Svchost)
|
|
26
|
+
Write-Host "`n--- Servicos Pesados (Backstage) ---" -ForegroundColor Yellow
|
|
27
|
+
# Nota: Svchosts agrupam servicos, vamos ver os maiores
|
|
28
|
+
Get-Process svchost | Sort-Object WorkingSet -Descending | Select-Object -First 5 |
|
|
29
|
+
ForEach-Object {
|
|
30
|
+
$mb = [math]::Round($_.WorkingSet / 1MB, 2)
|
|
31
|
+
Write-Host "Host de Servico (PID $($_.Id)): $mb MB"
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
# 3. Processos "Fantasmas" (Muitas Threads ou Handles)
|
|
35
|
+
# Processos que nao usam muita RAM mas 'poluem' o agendador e kernel
|
|
36
|
+
Write-Host "`n--- Processos com Alta Atividade Interna (Threads/Handles) ---" -ForegroundColor Yellow
|
|
37
|
+
Get-Process | Sort-Object Handles -Descending | Select-Object -First 5 |
|
|
38
|
+
Select-Object Name, Handles, Threads | Format-Table -AutoSize
|
|
39
|
+
|
|
40
|
+
# 4. Detalhamento de TODOS os Processos (Resumo estatistico)
|
|
41
|
+
Write-Host "`n--- Estatistica de Processos ---" -ForegroundColor Yellow
|
|
42
|
+
$totalCount = (Get-Process).Count
|
|
43
|
+
$systemCount = (Get-Process | Where-Object { $_.Company -match "Microsoft" }).Count
|
|
44
|
+
$otherCount = $totalCount - $systemCount
|
|
45
|
+
Write-Host "Total de Processos Rodando: $totalCount"
|
|
46
|
+
Write-Host "Processos Microsoft/Sistema: $systemCount"
|
|
47
|
+
Write-Host "Processos de Terceiros/Apps: $otherCount"
|
|
48
|
+
|
|
49
|
+
# 5. Estado da Memoria Virtual (Commit Charge)
|
|
50
|
+
Write-Host "`n--- Memoria Virtual (Commit Charge) ---" -ForegroundColor Yellow
|
|
51
|
+
$os = Get-CimInstance Win32_OperatingSystem
|
|
52
|
+
$totalPaging = [math]::Round($os.SizeStoredInPagingFiles / 1024, 2)
|
|
53
|
+
$freePaging = [math]::Round($os.FreeSpaceInPagingFiles / 1024, 2)
|
|
54
|
+
Write-Host "Arquivo de Pagina (Virtual): $totalPaging MB"
|
|
55
|
+
Write-Host "Espaco Livre em Disco para RAM Virtual: $freePaging MB"
|
|
56
|
+
|
|
57
|
+
Write-Host "`n================================================"
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 SH1W4
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
$ErrorActionPreference = "SilentlyContinue"
|
|
2
|
+
$targets = @(
|
|
3
|
+
"$env:USERPROFILE\Desktop\PROJETOS",
|
|
4
|
+
"$env:USERPROFILE\Downloads",
|
|
5
|
+
"$env:USERPROFILE\AppData",
|
|
6
|
+
"C:\Program Files",
|
|
7
|
+
"C:\Program Files (x86)"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
Write-Host "=== TARGETED SIZE ANALYSIS ===" -ForegroundColor Cyan
|
|
11
|
+
foreach ($t in $targets) {
|
|
12
|
+
if (Test-Path $t) {
|
|
13
|
+
Write-Host "Measuring $t ..."
|
|
14
|
+
$size = Get-ChildItem $t -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum
|
|
15
|
+
Write-Host "$t : $([math]::Round($size.Sum / 1GB, 2)) GB"
|
|
16
|
+
}
|
|
17
|
+
}
|
package/NEXT_STEPS.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Instruções Pós-Reinicialização (2025-06-02 02:14)
|
|
2
|
+
|
|
3
|
+
## ✅ Instalado Parcialmente
|
|
4
|
+
1. WSL (requer reinicialização)
|
|
5
|
+
- Componentes base instalados
|
|
6
|
+
- VirtualMachinePlatform habilitado
|
|
7
|
+
|
|
8
|
+
## 🔄 Próximos Passos (após reiniciar)
|
|
9
|
+
1. Completar instalação do WSL:
|
|
10
|
+
\\\powershell
|
|
11
|
+
wsl --install -d Ubuntu
|
|
12
|
+
\\\
|
|
13
|
+
|
|
14
|
+
2. Instalar App Installer (Microsoft Store)
|
|
15
|
+
- Buscar "App Installer"
|
|
16
|
+
- Instalar/Atualizar
|
|
17
|
+
|
|
18
|
+
3. Instalar ferramentas essenciais:
|
|
19
|
+
\\\powershell
|
|
20
|
+
winget install --id Git.Git
|
|
21
|
+
winget install --id Microsoft.VisualStudioCode
|
|
22
|
+
winget install --id OpenJS.NodeJS.LTS
|
|
23
|
+
winget install --id Docker.DockerDesktop
|
|
24
|
+
\\\
|
|
25
|
+
|
|
26
|
+
## ⚠️ Importante
|
|
27
|
+
- Reinicie o computador agora
|
|
28
|
+
- Após reiniciar, execute os comandos acima na ordem listada
|
|
29
|
+
- O Ubuntu será instalado automaticamente após a reinicialização
|
|
30
|
+
- Configure um nome de usuário e senha quando solicitado pelo Ubuntu
|
|
31
|
+
|
|
32
|
+
## 💾 Backup
|
|
33
|
+
Seus arquivos de configuração e diagnóstico estão seguros em:
|
|
34
|
+
C:\\Users\\Username\\Desktop\\DIAGNOSTIC_BACKUP
|
|
35
|
+
|
package/Orbit.ps1
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Orbit-DevOps: Main Menu
|
|
2
|
+
# The interactive command center
|
|
3
|
+
|
|
4
|
+
function Show-Menu {
|
|
5
|
+
Clear-Host
|
|
6
|
+
Write-Host "🪐 ORBIT-DEVOPS v1.1.0" -ForegroundColor Cyan
|
|
7
|
+
Write-Host "=====================" -ForegroundColor Gray
|
|
8
|
+
Write-Host "1. 🏥 Check System Health"
|
|
9
|
+
Write-Host "2. 🕵️ Analyze Storage"
|
|
10
|
+
Write-Host "3. 🐳 Scan Docker Usage"
|
|
11
|
+
Write-Host "---------------------"
|
|
12
|
+
Write-Host "4. 🧹 Safe Cleanup (Browsers, Temp)"
|
|
13
|
+
Write-Host "5. 🐧 Compact WSL (Requires Admin)"
|
|
14
|
+
Write-Host "6. 📦 Snapshot Environment (Local)"
|
|
15
|
+
Write-Host "7. 🚀 Sync Stack to GitHub"
|
|
16
|
+
Write-Host "---------------------"
|
|
17
|
+
Write-Host "Q. Quit"
|
|
18
|
+
Write-Host ""
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
do {
|
|
22
|
+
Show-Menu
|
|
23
|
+
$choice = Read-Host "Select an option"
|
|
24
|
+
|
|
25
|
+
switch ($choice) {
|
|
26
|
+
"1" { & ".\scripts\diagnostic\SystemDiagnosticUser.ps1"; Pause }
|
|
27
|
+
"2" { & ".\scripts\analysis\ScanStorage.ps1"; Pause }
|
|
28
|
+
"3" { & ".\scripts\analysis\ScanTargets.ps1"; Pause }
|
|
29
|
+
"4" { & ".\scripts\cleanup\AdditionalCleanup.ps1"; Pause }
|
|
30
|
+
"5" {
|
|
31
|
+
Write-Warning "This operation requires Administrator privileges."
|
|
32
|
+
& ".\scripts\wsl\CompactWSL.ps1"; Pause
|
|
33
|
+
}
|
|
34
|
+
"6" { & ".\scripts\stack\SnapshotEnv.ps1"; Pause }
|
|
35
|
+
"7" { & ".\scripts\stack\Push-Stack.ps1"; Pause }
|
|
36
|
+
"Q" { exit }
|
|
37
|
+
"q" { exit }
|
|
38
|
+
default { Write-Warning "Invalid option" }
|
|
39
|
+
}
|
|
40
|
+
} until ($choice -eq "Q")
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Post-Reboot Cleanup Script
|
|
2
|
+
# Run as Administrator
|
|
3
|
+
|
|
4
|
+
$logPath = "$env:USERPROFILE\Desktop\DIAGNOSTIC_BACKUP\POST_REBOOT_LOG.txt"
|
|
5
|
+
|
|
6
|
+
function Write-Log {
|
|
7
|
+
param($Message)
|
|
8
|
+
$line = "[$(Get-Date -Format 'HH:mm:ss')] $Message"
|
|
9
|
+
Write-Host $line -ForegroundColor Green
|
|
10
|
+
$line | Out-File -FilePath $logPath -Append -Encoding utf8
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
Write-Log "=== POST-REBOOT CLEANUP ==="
|
|
14
|
+
|
|
15
|
+
# 1. Disable Hibernation
|
|
16
|
+
Write-Log "Disabling Hibernation..."
|
|
17
|
+
try {
|
|
18
|
+
powercfg -h off
|
|
19
|
+
Write-Log "SUCCESS: Hibernation disabled (~3 GB freed)"
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
Write-Log "ERROR: Could not disable hibernation: $_"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
# 2. Remove Anaconda (if still exists)
|
|
26
|
+
$anacondaPath = "$env:USERPROFILE\anaconda3"
|
|
27
|
+
if (Test-Path $anacondaPath) {
|
|
28
|
+
Write-Log "Removing remaining Anaconda files..."
|
|
29
|
+
cmd /c rmdir /s /q "$anacondaPath"
|
|
30
|
+
if (-not (Test-Path $anacondaPath)) {
|
|
31
|
+
Write-Log "SUCCESS: Anaconda removed"
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
Write-Log "WARNING: Some Anaconda files remain"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
Write-Log "INFO: Anaconda already removed"
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
# 3. Clean Windows Temp
|
|
42
|
+
Write-Log "Cleaning Windows Temp..."
|
|
43
|
+
$winTemp = "C:\Windows\Temp"
|
|
44
|
+
Get-ChildItem $winTemp -Recurse -Force -ErrorAction SilentlyContinue |
|
|
45
|
+
Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
|
|
46
|
+
Write-Log "Windows Temp cleaned"
|
|
47
|
+
|
|
48
|
+
# 4. Empty Recycle Bin
|
|
49
|
+
Write-Log "Emptying Recycle Bin..."
|
|
50
|
+
Clear-RecycleBin -Force -ErrorAction SilentlyContinue
|
|
51
|
+
Write-Log "Recycle Bin emptied"
|
|
52
|
+
|
|
53
|
+
# 5. Final Status
|
|
54
|
+
Write-Log "=== FINAL STATUS ==="
|
|
55
|
+
$disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'"
|
|
56
|
+
$freeGB = [math]::Round($disk.FreeSpace / 1GB, 2)
|
|
57
|
+
$totalGB = [math]::Round($disk.Size / 1GB, 2)
|
|
58
|
+
Write-Log "Drive C: Free Space: $freeGB GB (Total: $totalGB GB)"
|
|
59
|
+
|
|
60
|
+
Write-Log "Cleanup Complete!"
|
package/RAMAudit.ps1
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
$ErrorActionPreference = "SilentlyContinue"
|
|
2
|
+
|
|
3
|
+
Write-Host "=== AUDITORIA DE CONSUMO DE RAM ===" -ForegroundColor Cyan
|
|
4
|
+
Write-Host "Coletando dados de memória em tempo real...`n"
|
|
5
|
+
|
|
6
|
+
# 1. Top 15 processos por Working Set (RAM Física)
|
|
7
|
+
Write-Host "--- Top 15 Processos (RAM Fisica) ---" -ForegroundColor Yellow
|
|
8
|
+
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 15 |
|
|
9
|
+
Select-Object Name, @{Name = 'RAM(MB)'; Expression = { [math]::Round($_.WorkingSet / 1MB, 2) } }, Id |
|
|
10
|
+
Format-Table -AutoSize
|
|
11
|
+
|
|
12
|
+
# 2. Resumo por Categoria (Navegador, VSCode, Docker)
|
|
13
|
+
Write-Host "`n--- Resumo por Grandes Grupos ---" -ForegroundColor Yellow
|
|
14
|
+
$groups = @("chrome", "msedge", "code", "docker", "vmmem", "node", "python")
|
|
15
|
+
foreach ($g in $groups) {
|
|
16
|
+
$p = Get-Process -Name "$g*" -ErrorAction SilentlyContinue
|
|
17
|
+
if ($p) {
|
|
18
|
+
$total = ($p | Measure-Object WorkingSet -Sum).Sum
|
|
19
|
+
Write-Host "$($g.ToUpper()): $([math]::Round($total / 1MB, 2)) MB ($($p.Count) processos)"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
# 3. Status de Memoria do Sistema
|
|
24
|
+
Write-Host "`n--- Status Geral da Memoria ---" -ForegroundColor Yellow
|
|
25
|
+
$mem = Get-CimInstance Win32_OperatingSystem
|
|
26
|
+
$total = [math]::Round($mem.TotalVisibleMemorySize / 1KB, 2)
|
|
27
|
+
$free = [math]::Round($mem.FreePhysicalMemory / 1KB, 2)
|
|
28
|
+
$used = $total - $free
|
|
29
|
+
$percent = [math]::Round(($used / $total) * 100, 1)
|
|
30
|
+
|
|
31
|
+
Write-Host "Total Instalada: $total MB"
|
|
32
|
+
Write-Host "Em Uso: $used MB ($percent%)"
|
|
33
|
+
Write-Host "Livre: $free MB"
|
|
34
|
+
|
|
35
|
+
# 4. Verificar se o WSL/Docker esta comendo RAM (vmmem)
|
|
36
|
+
$vmmem = Get-Process -Name vmmem* -ErrorAction SilentlyContinue
|
|
37
|
+
if ($vmmem) {
|
|
38
|
+
Write-Host "`n[AVISO] Docker/WSL (vmmem) está usando $([math]::Round(($vmmem | Measure-Object WorkingSet -Sum).Sum / 1MB, 2)) MB" -ForegroundColor Cyan
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
Write-Host "`n=================================="
|
package/RAMAudit_v2.ps1
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
$ErrorActionPreference = "SilentlyContinue"
|
|
2
|
+
Write-Host "--- TOP 10 RAM PROCESSES ---" -ForegroundColor Yellow
|
|
3
|
+
$p = Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10
|
|
4
|
+
foreach ($proc in $p) {
|
|
5
|
+
$mb = [math]::Round($proc.WorkingSet / 1MB, 2)
|
|
6
|
+
Write-Host "$($proc.Name) (ID: $($proc.Id)): $mb MB"
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
Write-Host "`n--- SYSTEM MEMORY STATE ---" -ForegroundColor Yellow
|
|
10
|
+
$os = Get-CimInstance Win32_OperatingSystem
|
|
11
|
+
$total = [math]::Round($os.TotalVisibleMemorySize / 1MB, 2)
|
|
12
|
+
$free = [math]::Round($os.FreePhysicalMemory / 1MB, 2)
|
|
13
|
+
Write-Host "Total RAM: $total GB (Approx)"
|
|
14
|
+
Write-Host "Free RAM: $([math]::Round($free / 1024, 2)) GB"
|
|
15
|
+
|
|
16
|
+
Write-Host "`n--- WSL/DOCKER CHECK ---" -ForegroundColor Yellow
|
|
17
|
+
$vmmem = Get-Process -Name vmmem*
|
|
18
|
+
if ($vmmem) {
|
|
19
|
+
$vSize = [math]::Round(($vmmem | Measure-Object WorkingSet -Sum).Sum / 1MB, 2)
|
|
20
|
+
Write-Host "VMMEM (WSL2/Docker): $vSize MB"
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
Write-Host "VMMEM process not found."
|
|
24
|
+
}
|
package/README.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 🪐 Orbit-DevOps
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/SH1W4/orbit-devops/main/docs/assets/logo.png" alt="Orbit-DevOps Logo" width="200" onerror="this.style.display='none'"/>
|
|
5
|
+
<h3>The Developer's Workspace Command Center</h3>
|
|
6
|
+
<p><b>Diagnose. Optimize. Compact. Control.</b></p>
|
|
7
|
+
|
|
8
|
+
<p>
|
|
9
|
+
<img src="https://img.shields.io/npm/v/orbit-devops?style=flat-square&color=cb3837" alt="NPM Version" />
|
|
10
|
+
<img src="https://img.shields.io/badge/platform-Windows_11%20%7C%20WSL2-0078D6?style=flat-square&logo=windows" alt="Platform" />
|
|
11
|
+
<img src="https://img.shields.io/badge/AI-MCP_Ready-purple?style=flat-square&logo=openai" alt="AI Ready" />
|
|
12
|
+
<img src="https://img.shields.io/github/license/SH1W4/orbit-devops?style=flat-square" alt="License" />
|
|
13
|
+
</p>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
**Orbit-DevOps** is a professional-grade CLI toolkit designed to reclaim GBs of "ghost" storage from modern development stacks. It specializes in **WSL2 VHDX compaction**, **Docker pruning**, and **Dev-Stack synchronization**.
|
|
19
|
+
|
|
20
|
+
## 🚀 One-Minute Start
|
|
21
|
+
|
|
22
|
+
Run without installing:
|
|
23
|
+
```bash
|
|
24
|
+
npx @symbeon/orbit-devops doctor
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Or install globally:
|
|
28
|
+
```bash
|
|
29
|
+
npm install -g @symbeon/orbit-devops
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## ✨ Core Superpowers
|
|
33
|
+
|
|
34
|
+
| Command | Action | Impact |
|
|
35
|
+
| :--- | :--- | :--- |
|
|
36
|
+
| `orbit doctor` | 🔍 **Full System Scan** | Deep health check of OS, RAM, and Storage. |
|
|
37
|
+
| `orbit space` | 📊 **Storage Forensics** | Find where the GBs are hiding (AppData, Docker, etc). |
|
|
38
|
+
| `orbit clean` | 🧹 **Smart Sanitation** | Safe cleanup of npm-cache, browser junk, and temp files. |
|
|
39
|
+
| `orbit compact`| 🐧 **WSL2 Compactor** | Reclaim space from Linux virtual disks (vhdx). |
|
|
40
|
+
| `orbit sync` | 🧬 **Stack Blueprint** | Sync your environment DNA to your `stack` repo. |
|
|
41
|
+
|
|
42
|
+
## 🤖 AI & Agentic Integration
|
|
43
|
+
Orbit-DevOps is built for the AI era. It includes:
|
|
44
|
+
- **Nativo MCP Server**: Connect Cursor or Claude to your machine health.
|
|
45
|
+
- **AI Skill Map**: Pre-indexed `.agent/skills` for autonomous agent operation.
|
|
46
|
+
|
|
47
|
+
## 🛠️ Requirements
|
|
48
|
+
- **OS**: Windows 10/11
|
|
49
|
+
- **Runtime**: Node.js 18+
|
|
50
|
+
- **Shell**: PowerShell 7+ (recommended)
|
|
51
|
+
|
|
52
|
+
## 🤝 Branding & Mission
|
|
53
|
+
Part of the **Symbeon** ecosystem. We build tools that make developers feel like they have superpowers.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
<div align="center">
|
|
57
|
+
<sub>Built with ❤️ by <a href="https://github.com/SH1W4">Symbeon</a></sub>
|
|
58
|
+
</div>
|
package/RootAudit.ps1
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
$ErrorActionPreference = "SilentlyContinue"
|
|
2
|
+
$root = "C:\"
|
|
3
|
+
$items = Get-ChildItem -Path $root
|
|
4
|
+
|
|
5
|
+
Write-Host "=== C: DRIVE ROOT AUDIT ===" -ForegroundColor Cyan
|
|
6
|
+
foreach ($item in $items) {
|
|
7
|
+
if ($item.PSIsContainer) {
|
|
8
|
+
$size = Get-ChildItem $item.FullName -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum
|
|
9
|
+
Write-Host "$($item.Name) : $([math]::Round($size.Sum / 1GB, 2)) GB"
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
Write-Host "$($item.Name) (File) : $([math]::Round($item.Length / 1GB, 2)) GB"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Script wrapper para execução do diagnóstico com elevação automática
|
|
2
|
+
$ErrorActionPreference = "Stop"
|
|
3
|
+
$VerbosePreference = "Continue"
|
|
4
|
+
|
|
5
|
+
# Função para logging
|
|
6
|
+
function Write-Log {
|
|
7
|
+
param(
|
|
8
|
+
[string]$Message,
|
|
9
|
+
[string]$Type = "INFO"
|
|
10
|
+
)
|
|
11
|
+
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
|
|
12
|
+
$logMessage = "[$timestamp] [$Type] $Message"
|
|
13
|
+
|
|
14
|
+
switch ($Type) {
|
|
15
|
+
"ERROR" { Write-Host $logMessage -ForegroundColor Red }
|
|
16
|
+
"WARNING" { Write-Host $logMessage -ForegroundColor Yellow }
|
|
17
|
+
"SUCCESS" { Write-Host $logMessage -ForegroundColor Green }
|
|
18
|
+
default { Write-Host $logMessage }
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
# Verifica privilégios atuais
|
|
23
|
+
Write-Log "Verificando privilégios de administrador..." -Type "INFO"
|
|
24
|
+
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
|
|
25
|
+
$isAdmin = $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
|
26
|
+
|
|
27
|
+
# Se não estiver rodando como administrador, reinicia o script com elevação
|
|
28
|
+
if (-not $isAdmin) {
|
|
29
|
+
try {
|
|
30
|
+
Write-Log "Solicitando privilégios de administrador..." -Type "INFO"
|
|
31
|
+
$scriptPath = $MyInvocation.MyCommand.Path
|
|
32
|
+
$diagPath = Join-Path $PSScriptRoot "SystemDiagnostic.ps1"
|
|
33
|
+
|
|
34
|
+
# Verifica se o arquivo de diagnóstico existe
|
|
35
|
+
if (-not (Test-Path $diagPath)) {
|
|
36
|
+
Write-Log "Erro: Arquivo SystemDiagnostic.ps1 não encontrado em: $diagPath" -Type "ERROR"
|
|
37
|
+
exit 1
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
Write-Log "Iniciando processo elevado..." -Type "INFO"
|
|
41
|
+
|
|
42
|
+
# Configura argumentos para melhor visibilidade e codificação
|
|
43
|
+
$arguments = "-NoProfile -ExecutionPolicy Bypass -Command `"& { `$OutputEncoding = [Console]::OutputEncoding = [Text.Encoding]::UTF8; `$VerbosePreference='Continue'; . '$diagPath' }`""
|
|
44
|
+
|
|
45
|
+
# Inicia um novo processo do PowerShell como administrador
|
|
46
|
+
$proc = Start-Process powershell.exe -ArgumentList $arguments -Verb RunAs -PassThru -Wait
|
|
47
|
+
|
|
48
|
+
switch ($proc.ExitCode) {
|
|
49
|
+
0 {
|
|
50
|
+
Write-Log "Diagnóstico concluído com sucesso." -Type "SUCCESS"
|
|
51
|
+
}
|
|
52
|
+
1 {
|
|
53
|
+
Write-Log "O script de diagnóstico encontrou erros durante a execução." -Type "ERROR"
|
|
54
|
+
}
|
|
55
|
+
default {
|
|
56
|
+
Write-Log "O script de diagnóstico terminou com código de saída: $($proc.ExitCode)" -Type "WARNING"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
Write-Log "Erro ao tentar elevar privilégios: $_" -Type "ERROR"
|
|
62
|
+
Write-Log "Stack Trace: $($_.ScriptStackTrace)" -Type "ERROR"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
# Se já estiver rodando como administrador, executa o diagnóstico diretamente
|
|
67
|
+
try {
|
|
68
|
+
Write-Log "Executando diagnóstico com privilégios de administrador..." -Type "INFO"
|
|
69
|
+
$diagPath = Join-Path $PSScriptRoot "SystemDiagnostic.ps1"
|
|
70
|
+
|
|
71
|
+
if (Test-Path $diagPath) {
|
|
72
|
+
$VerbosePreference = "Continue"
|
|
73
|
+
& $diagPath
|
|
74
|
+
if ($LASTEXITCODE -eq 0) {
|
|
75
|
+
Write-Log "Diagnóstico concluído com sucesso." -Type "SUCCESS"
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
Write-Log "O diagnóstico terminou com erros (Exit Code: $LASTEXITCODE)" -Type "WARNING"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
Write-Log "Arquivo SystemDiagnostic.ps1 não encontrado em: $diagPath" -Type "ERROR"
|
|
83
|
+
exit 1
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
Write-Log "Erro ao executar o diagnóstico: $_" -Type "ERROR"
|
|
88
|
+
Write-Log "Stack Trace: $($_.ScriptStackTrace)" -Type "ERROR"
|
|
89
|
+
exit 1
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
# Procura o relatório gerado
|
|
94
|
+
$reportPattern = "SystemDiagnostic_Report_*.txt"
|
|
95
|
+
$reportFile = Get-ChildItem -Path ([Environment]::GetFolderPath("Desktop")) -Recurse -Filter $reportPattern |
|
|
96
|
+
Sort-Object LastWriteTime -Descending |
|
|
97
|
+
Select-Object -First 1
|
|
98
|
+
|
|
99
|
+
if ($reportFile) {
|
|
100
|
+
Write-Log "Relatório gerado em: $($reportFile.FullName)" -Type "SUCCESS"
|
|
101
|
+
Write-Log "Abrindo relatório..." -Type "INFO"
|
|
102
|
+
|
|
103
|
+
# Tenta abrir o relatório com o visualizador padrão
|
|
104
|
+
try {
|
|
105
|
+
Invoke-Item $reportFile.FullName
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
Write-Log "Não foi possível abrir o relatório automaticamente. Por favor, abra manualmente em: $($reportFile.FullName)" -Type "WARNING"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
Write-Log "Não foi possível encontrar o relatório gerado." -Type "WARNING"
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
# Mantém a janela aberta para visualização
|
|
116
|
+
Write-Host "`n"
|
|
117
|
+
Write-Log "Diagnóstico finalizado. Pressione qualquer tecla para sair..." -Type "INFO"
|
|
118
|
+
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
|
|
119
|
+
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Script wrapper simplificado para execução do diagnóstico
|
|
2
|
+
$ErrorActionPreference = "Stop"
|
|
3
|
+
|
|
4
|
+
# Configuração de codificação
|
|
5
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
6
|
+
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
7
|
+
|
|
8
|
+
# Verifica privilégios de administrador
|
|
9
|
+
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
|
10
|
+
|
|
11
|
+
if (-not $isAdmin) {
|
|
12
|
+
Write-Host "Solicitando privilégios de administrador..." -ForegroundColor Yellow
|
|
13
|
+
try {
|
|
14
|
+
$scriptPath = Join-Path $PSScriptRoot "SystemDiagnosticSimple.ps1"
|
|
15
|
+
if (-not (Test-Path $scriptPath)) {
|
|
16
|
+
Write-Host "ERRO: Script de diagnóstico não encontrado em: $scriptPath" -ForegroundColor Red
|
|
17
|
+
exit 1
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Start-Process powershell.exe -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$scriptPath`"" -Verb RunAs -Wait
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
Write-Host "ERRO ao elevar privilégios: $_" -ForegroundColor Red
|
|
24
|
+
exit 1
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
# Se já está executando como administrador
|
|
29
|
+
$scriptPath = Join-Path $PSScriptRoot "SystemDiagnosticSimple.ps1"
|
|
30
|
+
if (Test-Path $scriptPath) {
|
|
31
|
+
Write-Host "Executando diagnóstico..." -ForegroundColor Yellow
|
|
32
|
+
& $scriptPath
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
Write-Host "ERRO: Script de diagnóstico não encontrado em: $scriptPath" -ForegroundColor Red
|
|
36
|
+
exit 1
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
Write-Host "`nPressione qualquer tecla para sair..." -ForegroundColor Yellow
|
|
41
|
+
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
|
|
42
|
+
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported Versions
|
|
4
|
+
|
|
5
|
+
We take security seriously in Orbit-DevOps. The following versions are currently supported with security updates:
|
|
6
|
+
|
|
7
|
+
| Version | Supported |
|
|
8
|
+
| ------- | ------------------ |
|
|
9
|
+
| 0.1.x | :white_check_mark: |
|
|
10
|
+
|
|
11
|
+
## Reporting a Vulnerability
|
|
12
|
+
|
|
13
|
+
We appreciate responsible disclosure of security vulnerabilities. If you discover a security issue, please report it by emailing **security@docsync.dev** or by opening a private security advisory on GitHub.
|
|
14
|
+
|
|
15
|
+
### What to Include
|
|
16
|
+
|
|
17
|
+
Please include the following information in your security report:
|
|
18
|
+
|
|
19
|
+
1. **Description**: A clear description of the vulnerability
|
|
20
|
+
2. **Impact**: Potential impact and attack scenarios
|
|
21
|
+
3. **Reproduction**: Step-by-step instructions to reproduce the issue
|
|
22
|
+
4. **Environment**: Affected versions and operating systems
|
|
23
|
+
5. **Mitigation**: Any temporary workarounds you've identified
|
|
24
|
+
|
|
25
|
+
### Response Timeline
|
|
26
|
+
|
|
27
|
+
- **Initial Response**: Within 24 hours of report
|
|
28
|
+
- **Confirmation**: Within 72 hours
|
|
29
|
+
- **Resolution**: Security fixes are prioritized and typically released within 7-14 days
|
|
30
|
+
- **Disclosure**: Public disclosure after fix is available, coordinated with reporter
|
|
31
|
+
|
|
32
|
+
### Security Features
|
|
33
|
+
|
|
34
|
+
Orbit-DevOps implements several security measures:
|
|
35
|
+
|
|
36
|
+
- **Input Validation**: All user inputs are validated and sanitized
|
|
37
|
+
- **Path Traversal Protection**: File system operations are restricted to authorized directories
|
|
38
|
+
- **Token Security**: API tokens are handled securely and never logged
|
|
39
|
+
- **Dependency Scanning**: Regular automated scans for vulnerable dependencies
|
|
40
|
+
- **Static Analysis**: Code is analyzed with Bandit and other security tools
|
|
41
|
+
|
|
42
|
+
### Security Best Practices
|
|
43
|
+
|
|
44
|
+
When using Orbit-DevOps:
|
|
45
|
+
|
|
46
|
+
1. **Environment Variables**: Store sensitive tokens in environment variables, never in code
|
|
47
|
+
2. **File Permissions**: Ensure proper file permissions on configuration files
|
|
48
|
+
3. **Network Security**: Use HTTPS for all API communications
|
|
49
|
+
4. **Regular Updates**: Keep Orbit-DevOps and its dependencies updated
|
|
50
|
+
5. **Audit Logs**: Monitor sync operations and access patterns
|
|
51
|
+
|
|
52
|
+
### Security Contacts
|
|
53
|
+
|
|
54
|
+
- **Security Team**: security@docsync.dev
|
|
55
|
+
- **Maintainer**: [NEO-SH1W4](https://github.com/NEO-SH1W4)
|
|
56
|
+
- **GitHub Security**: Use GitHub's private security advisory feature
|
|
57
|
+
|
|
58
|
+
### Hall of Fame
|
|
59
|
+
|
|
60
|
+
We recognize security researchers who help improve Orbit-DevOps's security:
|
|
61
|
+
|
|
62
|
+
*No reports yet - be the first!*
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
**Note**: This security policy is actively maintained and may be updated. Check back regularly for changes.
|
|
67
|
+
|
package/SETUP.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Configuração do Ambiente de Desenvolvimento
|
|
2
|
+
Data: 2025-06-01 20:04
|
|
3
|
+
|
|
4
|
+
## Estado Inicial
|
|
5
|
+
- Python 3.11.5 (Instalado)
|
|
6
|
+
- Rust 1.87.0 (Instalado)
|
|
7
|
+
- Git (Não instalado)
|
|
8
|
+
- VS Code (Não instalado)
|
|
9
|
+
- Node.js (Não instalado)
|
|
10
|
+
- Docker Desktop (Não instalado)
|
|
11
|
+
|
|
12
|
+
## Próximos Passos
|
|
13
|
+
1. Instalar App Installer (para winget):
|
|
14
|
+
- Abrir Microsoft Store
|
|
15
|
+
- Buscar por "App Installer"
|
|
16
|
+
- Instalar/Atualizar o App Installer
|
|
17
|
+
|
|
18
|
+
2. Após instalar o App Installer, executar:
|
|
19
|
+
`powershell
|
|
20
|
+
winget install --id Git.Git
|
|
21
|
+
winget install --id Microsoft.VisualStudioCode
|
|
22
|
+
winget install --id OpenJS.NodeJS.LTS
|
|
23
|
+
winget install --id Docker.DockerDesktop
|
|
24
|
+
`
|
|
25
|
+
|
|
26
|
+
3. Links diretos para download manual (caso necessário):
|
|
27
|
+
- Git: https://git-scm.com/download/win
|
|
28
|
+
- VS Code: https://code.visualstudio.com/download
|
|
29
|
+
- Node.js LTS: https://nodejs.org/
|
|
30
|
+
- Docker Desktop: https://www.docker.com/products/docker-desktop
|
|
31
|
+
|
|
32
|
+
## Ambiente Atual
|
|
33
|
+
PATH do usuário:
|
|
34
|
+
C:\Program Files\Python311\Scripts\;C:\Program Files\Python311\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Users\Username\.cargo\bin;C:\Users\Username\AppData\Local\Microsoft\WindowsApps;;C:\Users\Username\AppData\Roaming\Python\Python311\Scripts
|