AI-powered Linux/Windows diagnostics and repair – audio, hardware, system issues
- Metadata
- Architecture
- Interfaces
- Workflows
- Quality Pipeline (
pyqual.yaml) - Configuration
- Dependencies
- Deployment
- Environment Variables (
.env.example) - Release Management (
goal.yaml) - Makefile Targets
- Code Analysis
- Call Graph
- Test Contracts
- Intent
- name:
fixos - version:
2.2.28 - python_requires:
>=3.10 - license: {'text': 'Apache-2.0'}
- ai_model:
openrouter/qwen/qwen3-coder-next - ecosystem: SUMD + DOQL + testql + taskfile
- generated_from: pyproject.toml, requirements-dev.txt, requirements.txt, Makefile, testql(2), app.doql.less, pyqual.yaml, goal.yaml, .env.example, docker-compose.yml, project/(2 analysis files)
SUMD (description) → DOQL/source (code) → taskfile (automation) → testql (verification)
// LESS format — define @variables here as needed
app {
name: fixos;
version: 2.2.28;
}
dependencies {
runtime: "openai>=1.35.0, prompt_toolkit>=3.0.43, psutil>=5.9.0, pyyaml>=6.0, click>=8.1.0, python-dotenv>=1.0.0, rich>=13.0";
dev: "pytest>=7.4.0, pytest-mock>=3.12.0, pytest-cov>=4.1.0, pytest-xdist>=3.5.0, pytest-timeout>=2.2.0, pytest-sugar>=0.9.7, goal>=2.1.0, costs>=0.1.20, pfix>=0.1.60";
}
entity[name="FixSuggestion"] {
command: string!;
description: string!;
risk_level: RiskLevel!;
requires_sudo: bool!;
idempotent: bool!;
check_command: string;
rollback_command: string;
}
entity[name="NLPIntent"] {
intent_type: string!;
target: string;
parameters: json!;
confidence: float!;
}
entity[name="CommandValidation"] {
success: bool!;
interpretation: string!;
user_intent_met: bool!;
suggestion: string;
}
interface[type="cli"] {
framework: click;
}
interface[type="cli"] page[name="fixos"] {
}
workflow[name="install"] {
trigger: manual;
step-1: run cmd=pip install -e .;
}
workflow[name="install-dev"] {
trigger: manual;
step-1: run cmd=pip install -e ".[dev]";
step-2: run cmd=echo "✅ Zainstalowano z zależnościami dev";
}
workflow[name="test"] {
trigger: manual;
step-1: depend target=test-unit;
step-2: depend target=test-e2e;
}
workflow[name="test-fast"] {
trigger: manual;
step-1: run cmd=echo "⚡ Testy z paralelizacją (4 procesy)...";
step-2: run cmd=pytest tests/ -v --tb=short -n auto -m "not slow and not docker";
}
workflow[name="test-quick"] {
trigger: manual;
step-1: run cmd=echo "⚡ Szybkie testy (bez slow/docker)...";
step-2: run cmd=pytest tests/unit tests/e2e/test_anonymization_layers.py tests/e2e/test_executor.py -v --tb=short -m "not slow and not docker";
}
workflow[name="test-unit"] {
trigger: manual;
step-1: run cmd=echo "🧪 Unit testy...";
step-2: run cmd=pytest tests/unit/ -v --tb=short;
}
workflow[name="test-unit-fast"] {
trigger: manual;
step-1: run cmd=echo "🧪 Unit testy (paralelizacja - 4 procesy)...";
step-2: run cmd=pytest tests/unit/ -v --tb=short -n 4;
}
workflow[name="test-unit-par"] {
trigger: manual;
step-1: run cmd=echo "🧪 Unit testy (paralelizacja - auto, = CPU count)...";
step-2: run cmd=pytest tests/unit/ -v --tb=short -n auto;
}
workflow[name="test-e2e"] {
trigger: manual;
step-1: run cmd=echo "🧪 E2E testy (mock LLM)...";
step-2: run cmd=pytest tests/e2e/ -v --tb=short -k "not real_llm" -m "not slow and not docker";
}
workflow[name="test-real"] {
trigger: manual;
step-1: run cmd=echo "🧪 E2E testy (prawdziwe API – wymaga .env)...";
step-2: run cmd=pytest tests/e2e/ -v --tb=short -k "real_llm";
}
workflow[name="test-cov"] {
trigger: manual;
step-1: run cmd=echo "📊 Testy + raport pokrycia (z paralelizacją)...";
step-2: run cmd=pytest tests/ -v --tb=short --cov=fixos --cov-report=term-missing --cov-report=html:htmlcov -n auto -m "not slow";
step-3: run cmd=echo "📊 Raport pokrycia: htmlcov/index.html";
}
workflow[name="lint"] {
trigger: manual;
step-1: run cmd=ruff check fixos/ tests/ || true;
}
workflow[name="format"] {
trigger: manual;
step-1: run cmd=black fixos/ tests/;
}
workflow[name="docker-build"] {
trigger: manual;
step-1: run cmd=docker compose -f docker/docker-compose.yml build;
}
workflow[name="docker-audio"] {
trigger: manual;
step-1: run cmd=docker compose -f docker/docker-compose.yml run --rm broken-audio;
}
workflow[name="docker-thumb"] {
trigger: manual;
step-1: run cmd=docker compose -f docker/docker-compose.yml run --rm broken-thumbnails;
}
workflow[name="docker-full"] {
trigger: manual;
step-1: run cmd=docker compose -f docker/docker-compose.yml run --rm broken-full;
}
workflow[name="docker-e2e"] {
trigger: manual;
step-1: run cmd=docker compose -f docker/docker-compose.yml run --rm e2e-tests;
}
workflow[name="docker-test-fedora"] {
trigger: manual;
step-1: run cmd=echo "🐧 Testing on Fedora...";
step-2: run cmd=docker compose -f docker/docker-compose.multi-system.yml run --rm test-fedora;
}
workflow[name="docker-test-ubuntu"] {
trigger: manual;
step-1: run cmd=echo "🐧 Testing on Ubuntu...";
step-2: run cmd=docker compose -f docker/docker-compose.multi-system.yml run --rm test-ubuntu;
}
workflow[name="docker-test-debian"] {
trigger: manual;
step-1: run cmd=echo "🐧 Testing on Debian...";
step-2: run cmd=docker compose -f docker/docker-compose.multi-system.yml run --rm test-debian;
}
workflow[name="docker-test-arch"] {
trigger: manual;
step-1: run cmd=echo "🐧 Testing on Arch Linux...";
step-2: run cmd=docker compose -f docker/docker-compose.multi-system.yml run --rm test-arch;
}
workflow[name="docker-test-alpine"] {
trigger: manual;
step-1: run cmd=echo "🐧 Testing on Alpine...";
step-2: run cmd=docker compose -f docker/docker-compose.multi-system.yml run --rm test-alpine;
}
workflow[name="docker-test-all"] {
trigger: manual;
step-1: run cmd=echo "🐧 Testing on all systems...";
step-2: run cmd=./docker/test-multi-system.sh;
}
workflow[name="config-init"] {
trigger: manual;
step-1: run cmd=fixos config init;
}
workflow[name="run-scan"] {
trigger: manual;
step-1: run cmd=fixos scan;
}
workflow[name="run-fix"] {
trigger: manual;
step-1: run cmd=fixos fix;
}
workflow[name="build"] {
trigger: manual;
step-1: run cmd=echo "🔨 Budowanie paczki (cache enabled)...";
step-2: run cmd=.venv/bin/pip install --quiet --upgrade build;
step-3: run cmd=.venv/bin/python -m build;
step-4: run cmd=echo "✅ Paczka gotowa w dist/";
}
workflow[name="publish"] {
trigger: manual;
step-1: run cmd=echo "📦 Publikowanie na PyPI...";
step-2: run cmd=.venv/bin/pip install --quiet --upgrade twine;
step-3: run cmd=.venv/bin/twine upload dist/*;
step-4: run cmd=echo "✅ Opublikowano na PyPI";
}
workflow[name="clean"] {
trigger: manual;
step-1: run cmd=echo "🧹 Czyszczenie cache i artefaktów...";
step-2: run cmd=rm -rf build/ dist/ *.egg-info/ .pytest_cache/ .coverage htmlcov/ __pycache__ .mypy_cache/;
step-3: run cmd=find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true;
step-4: run cmd=find . -type f -name "*.pyc" -delete 2>/dev/null || true;
step-5: run cmd=find . -type f -name ".DS_Store" -delete 2>/dev/null || true;
step-6: run cmd=echo "✅ Wyczyszczono";
}
deploy {
target: docker-compose;
compose_file: docker/docker-compose.yml;
}
environment[name="local"] {
runtime: docker-compose;
env_file: .env;
python_version: >=3.10;
}fixos
# SCENARIO: CLI Command Tests
# TYPE: cli
# GENERATED: true
CONFIG[2]{key, value}:
cli_command, python -m fixOS
timeout_ms, 10000
# Test 1: CLI help command
SHELL "python -m fixOS --help" 5000
ASSERT_EXIT_CODE 0
ASSERT_STDOUT_CONTAINS "usage"
# Test 2: CLI version command
SHELL "python -m fixOS --version" 5000
ASSERT_EXIT_CODE 0
# Test 3: CLI main workflow (dry-run)
SHELL "python -m fixOS --help" 10000
ASSERT_EXIT_CODE 0
# SCENARIO: Auto-generated from Python Tests
# TYPE: integration
# GENERATED: true
CONFIG[2]{key, value}:
base_url, ${api_url:-http://localhost:8101}
timeout_ms, 10000
# Converted 4 assertions from pytest
ASSERT[4]{field, operator, expected}:
result.exit_code, ==, 0
result.exit_code, ==, 0
result.exit_code, ==, 0
result.exit_code, ==, 0
pipeline:
name: quality-loop-with-llx
# Quality gates — pipeline iterates until ALL pass
metrics:
cc_max: 6 # cyclomatic complexity per function
vallm_pass_min: 65 # vallm validation pass rate (%)
coverage_min: 27 # test coverage (%)
# Custom tool definitions
custom_tools:
- name: code2llm_vallm
binary: code2llm
command: >-
code2llm {workdir} -f toon -o ./project --no-chunk
--exclude .git venv dist __pycache__ .pytest_cache .mypy_cache .ruff_cache
.code2llm_cache build *.egg-info
output: ""
allow_failure: false
- name: vallm_src
binary: vallm
command: >-
vallm batch {workdir}/fixos --recursive --format toon --output ./project
--exclude .git,venv,dist,__pycache__,.pytest_cache,.mypy_cache,.ruff_cache,
.code2llm_cache,build,*.egg-info
output: ""
allow_failure: false
- name: vallm_verify
binary: vallm
command: >-
vallm batch {workdir}/fixos --recursive --no-complexity --format toon --output ./project/verify
--exclude .git,venv,dist,__pycache__,.pytest_cache,.mypy_cache,.ruff_cache,
.code2llm_cache,build,*.egg-info
output: ""
allow_failure: false
# Pipeline stages
stages:
- name: setup
run: |
set -e
echo "=== pyqual dependency check ==="
for pkg in code2llm vallm prefact llx pytest-cov goal; do
if python -m pip show "$pkg" >/dev/null 2>&1; then
echo " ✓ $pkg"
else
echo " ✗ $pkg — installing…"
pip install -q "$pkg" || echo " ⚠ $pkg install failed (optional)"
fi
done
if command -v claude >/dev/null 2>&1; then
echo " ✓ claude $(claude --version 2>/dev/null)"
else
echo " ✗ claude — not installed"
fi
echo "=== setup done ==="
when: first_iteration
timeout: 300
- name: lint
tool: ruff
optional: true
- name: test
run: .venv/bin/python -m pytest -q --tb=short --cov=fixos --cov-report=term-missing --cov-report=json:.pyqual/coverage.json
when: always
- name: prefact
tool: prefact
optional: true
when: metrics_fail
timeout: 900
- name: fix
tool: llx-fix
optional: true
when: metrics_fail
timeout: 1800
- name: verify
tool: vallm_verify
optional: true
when: after_fix
timeout: 300
- name: push
run: |
if [ -n "$(git status --porcelain)" ]; then
git add -A
git commit -m "chore: pyqual auto-commit [skip ci]" 2>/dev/null || true
git push origin HEAD
else
echo "No changes to push"
fi
when: metrics_pass
optional: true
timeout: 120
- name: publish
run: make publish
when: metrics_pass
timeout: 300
- name: markdown_report
run: python3 -m pyqual.report_generator
when: always
optional: true
timeout: 30
# Loop behavior
loop:
max_iterations: 3
on_fail: report
# Environment
env:
LLM_MODEL: openrouter/x-ai/grok-code-fast-1
LLX_DEFAULT_TIER: balanced
LLX_VERBOSE: trueproject:
name: fixos
version: 2.2.28
env: localopenai>=1.35.0
prompt_toolkit>=3.0.43
psutil>=5.9.0
pyyaml>=6.0
click>=8.1.0
python-dotenv>=1.0.0
rich>=13.0
pytest>=7.4.0
pytest-mock>=3.12.0
pytest-cov>=4.1.0
pytest-xdist>=3.5.0
pytest-timeout>=2.2.0
pytest-sugar>=0.9.7
goal>=2.1.0
costs>=0.1.20
pfix>=0.1.60
pip install fixos
# development install
pip install -e .[dev]pytest>=7.4.0pytest-mock>=3.12.0pytest-cov>=4.1.0ruff>=0.4.0black>=24.0.0
openai>=1.35.0prompt_toolkit>=3.0.43psutil>=5.9.0pyyaml>=6.0click>=8.1.0python-dotenv>=1.0.0rich>=13.0pydantic>=2.0
- base image=
fixos-base:latest - broken-audio image=
fixos-broken-audio:latest - broken-thumbnails image=
fixos-broken-thumbnails:latest - broken-network image=
fixos-broken-network:latest - broken-full image=
fixos-broken-full:latest - e2e-tests image=
{'context': '..', 'dockerfile': 'docker/base/Dockerfile'} - unit-tests image=
{'context': '..', 'dockerfile': 'docker/base/Dockerfile'} - cli-tests image=
{'context': '..', 'dockerfile': 'docker/base/Dockerfile'} - scenario-tests image=
{'context': '..', 'dockerfile': 'docker/base/Dockerfile'}
| Variable | Default | Description |
|---|---|---|
LLM_PROVIDER |
gemini |
Dostępne: gemini, openai, xai, openrouter, ollama |
GEMINI_API_KEY |
AIzaSy_TWOJ_KLUCZ_GEMINI |
Utwórz klucz: https://aistudio.google.com/apikey |
GEMINI_MODEL |
gemini-2.5-flash-preview-04-17 |
|
GEMINI_BASE_URL |
https://generativelanguage.googleapis.com/v1beta/openai/ |
|
OPENAI_API_KEY |
sk-TWOJ_KLUCZ_OPENAI |
── OpenAI (opcjonalny) ─────────────────────────────────── |
OPENAI_MODEL |
gpt-4o-mini |
|
OPENAI_BASE_URL |
https://api.openai.com/v1 |
|
XAI_API_KEY |
xai-TWOJ_KLUCZ_XAI |
── xAI Grok (opcjonalny) ───────────────────────────────── |
XAI_MODEL |
grok-beta |
|
XAI_BASE_URL |
https://api.x.ai/v1 |
|
OPENROUTER_API_KEY |
sk-or-TWOJ_KLUCZ |
── OpenRouter (opcjonalny, daje dostęp do wielu modeli) ── |
OPENROUTER_MODEL |
google/gemini-2.0-flash-exp:free |
|
OPENROUTER_BASE_URL |
https://openrouter.ai/api/v1 |
|
OLLAMA_BASE_URL |
http://localhost:11434/v1 |
── Ollama (lokalny, bez klucza) ────────────────────────── |
OLLAMA_MODEL |
llama3.2 |
|
AGENT_MODE |
hitl |
autonomous = autonomiczny (wykonuje automatycznie) |
SESSION_TIMEOUT |
3600 |
── Timeout sesji (sekundy) ─────────────────────────────── |
ENABLE_WEB_SEARCH |
true |
Używane gdy LLM nie znajdzie rozwiązania |
SERPAPI_KEY |
*(not set)* |
SerpAPI (opcjonalny, lepsza jakość) |
SHOW_ANONYMIZED_DATA |
true |
Pokaż zanonimizowane dane użytkownikowi przed wysłaniem do LLM |
SAVE_REPORTS |
false |
Zapisuj raporty diagnostyczne |
REPORTS_DIR |
/tmp/fixos-reports |
|
TEST_DOCKER_COMPOSE |
docker/docker-compose.yml |
Używane przez testy e2e |
- versioning:
semver - commits:
conventionalscope=fixfedora - changelog:
keep-a-changelog - build strategies:
python,nodejs,rust - version files:
VERSION,pyproject.toml:version,setup.py:version,fixos/__init__.py:__version__
help— ── Domyślna komenda ──────────────────────────────────────install— ── Instalacja ────────────────────────────────────────────install-devtest— ── Testy ─────────────────────────────────────────────────test-fasttest-quicktest-unittest-unit-fasttest-unit-partest-e2etest-realtest-covlint— ── Jakość kodu ───────────────────────────────────────────formatdocker-build— ── Docker ───────────────────────────────────────────────docker-audiodocker-thumbdocker-fulldocker-e2edocker-test-fedora— ── Multi-System Docker Tests ────────────────────────────docker-test-ubuntudocker-test-debiandocker-test-archdocker-test-alpinedocker-test-allconfig-init— ── Uruchomienie ──────────────────────────────────────────run-scanrun-fixbuild— ── Paczka ───────────────────────────────────────────────publishclean
# fixOS | 134f 23391L | python:128,shell:3,less:1,javascript:1,css:1 | 2026-05-08
# stats: 311 func | 140 cls | 134 mod | CC̄=4.1 | critical:21 | cycles:0
# alerts[5]: CC _handle_interactive_select=14; CC _validate_result_with_llm=14; CC _print_quick_issues=14; CC calibrate=14; CC fix=13
# hotspots[5]: orchestrate fan=24; diagnose_system fan=20; _cleanup_flatpak_detailed fan=19; _handle_home_analysis fan=18; token_set fan=18
# evolution: baseline
# Keys: M=modules, D=details, i=imports, e=exports, c=classes, f=functions, m=methods
M[134]:
app.doql.less,232
docker/test-multi-system.sh,129
docker/test-scenarios.sh,148
docker/validate-scenario.py,159
docs/examples/advanced_usage.py,10
docs/examples/quickstart.py,14
fixos/__init__.py,3
fixos/agent/__init__.py,39
fixos/agent/autonomous.py,50
fixos/agent/autonomous_session.py,442
fixos/agent/hitl.py,37
fixos/agent/hitl_session.py,222
fixos/agent/session_core.py,235
fixos/agent/session_handlers.py,316
fixos/agent/session_io.py,259
fixos/anonymizer.py,87
fixos/cli/__init__.py,9
fixos/cli/_cleanup_flatpak.py,230
fixos/cli/_cleanup_home.py,133
fixos/cli/_cleanup_snap.py,117
fixos/cli/_cleanup_system.py,445
fixos/cli/_cleanup_utils.py,115
fixos/cli/ask_cmd.py,355
fixos/cli/cleanup_cmd.py,251
fixos/cli/config_cmd.py,235
fixos/cli/features_cmd.py,184
fixos/cli/fix_cmd.py,307
fixos/cli/history_cmd.py,50
fixos/cli/main.py,159
fixos/cli/orchestrate_cmd.py,133
fixos/cli/output_formatter.py,159
fixos/cli/profile_cmd.py,60
fixos/cli/provider_cmd.py,251
fixos/cli/quickfix_cmd.py,77
fixos/cli/report_cmd.py,131
fixos/cli/rollback_cmd.py,91
fixos/cli/scan_cmd.py,253
fixos/cli/shared.py,63
fixos/cli/token_cmd.py,125
fixos/cli/watch_cmd.py,50
fixos/cli.py,96
fixos/config.py,426
fixos/config_interactive.py,150
fixos/constants.py,122
fixos/diagnostics/__init__.py,3
fixos/diagnostics/_flatpak_analysis_mixin.py,299
fixos/diagnostics/_flatpak_execution_mixin.py,233
fixos/diagnostics/_flatpak_recommendations_mixin.py,260
fixos/diagnostics/_storage_container_mixin.py,156
fixos/diagnostics/_storage_system_mixin.py,260
fixos/diagnostics/_storage_user_mixin.py,349
fixos/diagnostics/checks/__init__.py,27
fixos/diagnostics/checks/_shared.py,46
fixos/diagnostics/checks/audio.py,62
fixos/diagnostics/checks/file_analysis.py,335
fixos/diagnostics/checks/hardware.py,43
fixos/diagnostics/checks/packages.py,221
fixos/diagnostics/checks/resources.py,100
fixos/diagnostics/checks/security.py,93
fixos/diagnostics/checks/storage_optimization.py,225
fixos/diagnostics/checks/system_core.py,125
fixos/diagnostics/checks/thumbnails.py,63
fixos/diagnostics/dev_project_analyzer.py,408
fixos/diagnostics/disk_analyzer.py,430
fixos/diagnostics/flatpak_analyzer.py,162
fixos/diagnostics/service_cleanup.py,475
fixos/diagnostics/service_details.py,231
fixos/diagnostics/service_scanner.py,251
fixos/diagnostics/storage_analyzer.py,275
fixos/diagnostics/system_checks.py,83
fixos/diagnostics/utils.py,13
fixos/features/__init__.py,261
fixos/features/auditor.py,128
fixos/features/catalog.py,120
fixos/features/installer.py,179
fixos/features/profiles.py,89
fixos/features/renderer.py,125
fixos/fixes/__init__.py,3
fixos/interactive/__init__.py,1
fixos/interactive/cleanup_planner.py,414
fixos/llm_shell.py,237
fixos/orchestrator/__init__.py,10
fixos/orchestrator/executor.py,289
fixos/orchestrator/graph.py,164
fixos/orchestrator/orchestrator.py,396
fixos/orchestrator/rollback.py,163
fixos/platform_utils.py,203
fixos/plugins/__init__.py,12
fixos/plugins/base.py,100
fixos/plugins/builtin/__init__.py,2
fixos/plugins/builtin/audio.py,108
fixos/plugins/builtin/disk.py,114
fixos/plugins/builtin/hardware.py,130
fixos/plugins/builtin/resources.py,138
fixos/plugins/builtin/security.py,185
fixos/plugins/builtin/thumbnails.py,119
fixos/plugins/registry.py,128
fixos/profiles/__init__.py,66
fixos/providers/__init__.py,3
fixos/providers/llm.py,212
fixos/providers/llm_analyzer.py,334
fixos/providers/schemas.py,72
fixos/system_checks.py,157
fixos/utils/__init__.py,4
fixos/utils/anonymizer.py,316
fixos/utils/terminal.py,322
fixos/utils/timeout.py,18
fixos/utils/web_search.py,255
fixos/watch.py,121
htmlcov/coverage_html_cb_6fb7b396.js,734
htmlcov/style_cb_6b508a39.css,378
project.sh,50
scripts/pyqual-calibrate.py,300
setup.py,46
test_kwarg.py,10
test_timeout_fix.py,68
tests/__init__.py,1
tests/conftest.py,225
tests/e2e/__init__.py,1
tests/e2e/test_anonymization_layers.py,702
tests/e2e/test_audio_broken.py,240
tests/e2e/test_cli.py,279
tests/e2e/test_executor.py,227
tests/e2e/test_multi_system.py,170
tests/e2e/test_network_broken.py,284
tests/e2e/test_thumbnails_broken.py,249
tests/test_fixos.py,12
tests/unit/__init__.py,1
tests/unit/test_anonymizer.py,199
tests/unit/test_core.py,475
tests/unit/test_executor.py,239
tests/unit/test_orchestrator.py,314
tests/unit/test_service_cleanup.py,68
tests/unit/test_service_scanner.py,34
D:
docker/validate-scenario.py:
e: _get_nested,validate,main
_get_nested(data;path)
validate(data;scenario)
main()
docs/examples/advanced_usage.py:
docs/examples/quickstart.py:
e: run_autonomous_session
run_autonomous_session()
fixos/__init__.py:
fixos/agent/__init__.py:
e: get_remaining_time
get_remaining_time(session)
fixos/agent/autonomous.py:
e: run_autonomous_session
run_autonomous_session(diagnostics;config;show_data;max_fixes)
fixos/agent/autonomous_session.py:
e: run_autonomous_session,FixAction,AgentReport,AutonomousSession
FixAction:
AgentReport: summary(0)
AutonomousSession: __init__(4),_setup_timeout(0),_clear_timeout(0),_confirm_start(0),_initialize_messages(0),_get_remaining_time(0),_check_timeout(0),_query_llm(0),_handle_llm_error(0),_parse_action(1),_is_forbidden(1),_add_sudo(1),_execute_command(1),_handle_search(1),_handle_exec(1),_handle_skip(1),_handle_done(0),_process_turn(0),run(0),_print_report(0) # Self-directed autonomous diagnostic and repair session.
run_autonomous_session(diagnostics;config;show_data;max_fixes)
fixos/agent/hitl.py:
e: run_hitl_session
run_hitl_session(diagnostics;config;show_data)
fixos/agent/hitl_session.py:
e: run_hitl_session,HITLSession
HITLSession: __init__(3),_setup_timeout(0),_clear_timeout(0),remaining(0),_initialize_messages(0),_print_header(0),_handle_llm_error(0),_check_low_confidence(1),_process_turn(0),run(0),_print_summary(0) # Interactive Human-in-the-Loop diagnostic and repair session.
run_hitl_session(diagnostics;config;show_data)
fixos/agent/session_core.py:
e: _is_diagnostic_only_command,_is_part_diagnostic_only,_extract_co_robi,_pattern_strict_bold,_pattern_backticks,_pattern_no_backticks,_pattern_fallbacks,_deduplicate,extract_fixes,extract_search_topic,CmdResult
CmdResult: # Result of executed command.
_is_diagnostic_only_command(cmd)
_is_part_diagnostic_only(part)
_extract_co_robi(text)
_pattern_strict_bold(reply)
_pattern_backticks(reply)
_pattern_no_backticks(reply)
_pattern_fallbacks(reply)
_deduplicate(fixes)
extract_fixes(reply)
extract_search_topic(llm_reply)
fixos/agent/session_handlers.py:
e: _resolve_command_timeout,handle_quit,handle_skip_all,handle_describe_problem,_sort_fixes_by_priority,handle_execute_all,handle_fix_by_number,handle_direct_command,handle_search,handle_free_text,run_single_command,parse_user_input
_resolve_command_timeout(cmd)
handle_quit()
handle_skip_all(messages)
handle_describe_problem(messages;ask_fn)
_sort_fixes_by_priority(fixes)
handle_execute_all(fixes;messages;executed;run_cmd_fn)
handle_fix_by_number(user_in;fixes;messages;executed;run_cmd_fn)
handle_direct_command(user_in;messages;executed;run_cmd_fn)
handle_search(user_in;messages;serpapi_key)
handle_free_text(user_in;messages)
run_single_command(cmd;comment)
parse_user_input(user_in;fixes;messages;executed;serpapi_key)
fixos/agent/session_io.py:
e: suspend_timeout,_setup_timeout_ref,print_session_header,fmt_time,print_action_menu,ask_user_problem,print_cmd_preview,print_cmd_result,print_session_summary,print_thinking,clear_thinking,print_llm_reply,print_llm_error,print_blocked_command,print_timeout,print_session_ended,print_session_interrupted,print_executing_all,print_no_commands,print_invalid_option,print_no_results,print_searching,ask_execute_prompt,ask_low_confidence_search,ask_send_data,get_user_input
suspend_timeout()
_setup_timeout_ref(session;seconds;handler)
print_session_header(os_info;pkg_manager;model;timeout;remaining_fn)
fmt_time(s)
print_action_menu(fixes;remaining;total_tokens)
ask_user_problem()
print_cmd_preview(cmd;comment)
print_cmd_result(result)
print_session_summary(messages_count;elapsed;total_tokens;executed)
print_thinking()
clear_thinking()
print_llm_reply(reply)
print_llm_error(e)
print_blocked_command(cmd;reason)
print_timeout()
print_session_ended()
print_session_interrupted()
print_executing_all(count)
print_no_commands()
print_invalid_option(user_in;max_option)
print_no_results()
print_searching()
ask_execute_prompt()
ask_low_confidence_search()
ask_send_data()
get_user_input(remaining)
fixos/anonymizer.py:
e: get_sensitive_values,anonymize
get_sensitive_values()
anonymize(data_str)
fixos/cli/__init__.py:
fixos/cli/_cleanup_flatpak.py:
e: _cleanup_flatpak_detailed,_display_flatpak_status,_display_detailed_recommendations
_cleanup_flatpak_detailed(scanner;json_output;dry_run)
_display_flatpak_status(analysis)
_display_detailed_recommendations(recommendations)
fixos/cli/_cleanup_home.py:
e: _display_home_items,_resolve_home_selection,_remove_home_items,_show_home_item_info,_handle_home_analysis
_display_home_items(large_files;large_dirs)
_resolve_home_selection(nums;large_files;large_dirs)
_remove_home_items(items_to_remove)
_show_home_item_info(nums;large_files;large_dirs;total_items)
_handle_home_analysis(analyzer;dry_run)
fixos/cli/_cleanup_snap.py:
e: _snap_fetch_packages,_snap_remove_packages,_snap_display_packages,_snap_select_packages,_snap_warn_dangerous,_handle_snap_management
_snap_fetch_packages(analyzer)
_snap_remove_packages(packages_to_remove)
_snap_display_packages(active_packages)
_snap_select_packages(active_packages)
_snap_warn_dangerous(packages_to_remove)
_handle_snap_management(analyzer;dry_run)
fixos/cli/_cleanup_system.py:
e: _query_info,_query_path,_query_cmd,_query_filter,_handle_select_query,_handle_interactive_select,_filter_by_age,_filter_by_prefix_top,_filter_by_prefix_category,_filter_by_prefix_type,_filter_large,_select_cleanup_items_by_filter,_execute_full_cleanup,_show_dep_types,_display_full_system_menu,_dispatch_system_selection,_cleanup_full_system
_query_info(nums;analyzer)
_query_path(nums;analyzer)
_query_cmd(nums;analyzer)
_query_filter(nums;analyzer)
_handle_select_query(nums;analyzer)
_handle_interactive_select(analyzer;dry_run)
_filter_by_age(analyzer;days;label)
_filter_by_prefix_top(selection;analyzer)
_filter_by_prefix_category(selection;analyzer)
_filter_by_prefix_type(selection;analyzer)
_filter_large(analyzer;threshold_bytes;label)
_select_cleanup_items_by_filter(selection;analyzer;safe_items)
_execute_full_cleanup(items_to_clean;dry_run)
_show_dep_types(analyzer)
_display_full_system_menu(analyzer;analysis;safe_items;medium_items;dry_run)
_dispatch_system_selection(selection;analyzer;safe_items;dry_run)
_cleanup_full_system(json_output;dry_run)
fixos/cli/_cleanup_utils.py:
e: _format_bytes,_parse_size_to_bytes,_parse_size_to_gb,_parse_selection,_parse_numeric_range_set,_build_dep_types
_format_bytes(size_bytes)
_parse_size_to_bytes(size_str)
_parse_size_to_gb(size_str)
_parse_selection(selection;max_count)
_parse_numeric_range_set(nums)
_build_dep_types(items)
fixos/cli/ask_cmd.py:
e: ask,_object_based_match,_match_heuristic_command,_format_command,_build_output_dict,_execute_heuristic_command,_execute_with_llm,_handle_natural_command,_validate_result_with_llm
ask(prompt;dry_run)
_object_based_match(prompt_lower)
_match_heuristic_command(prompt_lower)
_format_command(matched_cmd)
_build_output_dict(status;prompt;source;command;exit_code;stdout;stderr;llm;reason;message;error)
_execute_heuristic_command(cmd_str;prompt;dry_run;cfg)
_execute_with_llm(prompt;dry_run;cfg)
_handle_natural_command(prompt;dry_run)
_validate_result_with_llm(prompt;cmd_str;result;cfg)
fixos/cli/cleanup_cmd.py:
e: _display_cleanup_summary,_display_service_item,_execute_safe_cleanup,_format_hint_line,_display_service_group,_display_unsafe_services,_cleanup_single_service,_run_interactive_cleanup,cleanup_services
_display_cleanup_summary(plan;threshold)
_display_service_item(svc)
_execute_safe_cleanup(services;scanner)
_format_hint_line(hint)
_display_service_group(service_type;svcs;type_map)
_display_unsafe_services(services)
_cleanup_single_service(service_name;scanner;json_output;dry_run)
_run_interactive_cleanup(plan;list_only;scanner)
cleanup_services(threshold;services;json_output;cleanup;dry_run;list_only;full_analysis)
fixos/cli/config_cmd.py:
e: _env_path,_set_env_key,config,config_show,config_init,config_set,config_model,_display_provider_menu,_prompt_provider_choice,_save_provider_choice,config_provider
_env_path()
_set_env_key(key;value)
config()
config_show()
config_init(force)
config_set(key;value)
config_model(provider)
_display_provider_menu(cfg;free;paid)
_prompt_provider_choice(num_map)
_save_provider_choice(chosen;provider_defaults)
config_provider()
fixos/cli/features_cmd.py:
e: features,features_audit,_show_install_plan,_show_install_results,features_install,features_profiles,features_system,_interactive_profile_select
features()
features_audit(profile;json_output)
_show_install_plan(to_install;yes;dry_run)
_show_install_results(install_result)
features_install(profile;dry_run;yes;category)
features_profiles()
features_system()
_interactive_profile_select()
fixos/cli/fix_cmd.py:
e: _collect_diagnostics,_run_agent_session,fix,handle_disk_cleanup_mode,execute_cleanup_actions,try_llm_fallback_for_failures
_collect_diagnostics(modules;disc;fmt;output)
_run_agent_session(cfg;data;max_fixes)
fix(provider;token;model;no_banner;mode;timeout;modules;no_show_data;output;max_fixes;disc;dry_run;interactive;json_output;yaml_output;llm_fallback;show_raw)
handle_disk_cleanup_mode(disk_analysis;cfg;dry_run;interactive;json_output;llm_fallback)
execute_cleanup_actions(actions;cfg;llm_fallback)
try_llm_fallback_for_failures(failed_actions;cfg)
fixos/cli/history_cmd.py:
e: history
history(limit;json_output)
fixos/cli/main.py:
e: cli,_print_welcome,main
cli(ctx;dry_run;version)
_print_welcome()
main()
fixos/cli/orchestrate_cmd.py:
e: orchestrate
orchestrate(provider;token;model;no_banner;mode;modules;dry_run;max_iterations;output)
fixos/cli/output_formatter.py:
e: _yaml_str_representer,OutputFormat,OutputFormatter
OutputFormat: # Supported output formats.
OutputFormatter: __init__(1),from_flags(3),is_machine(0),status(3),progress(2),banner(1),emit(2),format_data(1),format_diagnostics(1),format_scan_result(1),_to_yaml(1),_to_json(1) # Centralized output formatter for fixOS CLI commands.
_yaml_str_representer(dumper;data)
fixos/cli/profile_cmd.py:
e: profile,profile_list,profile_show
profile()
profile_list()
profile_show(name)
fixos/cli/provider_cmd.py:
e: llm_providers,providers,test_llm
llm_providers(free)
providers()
test_llm(provider;token;model;no_banner)
fixos/cli/quickfix_cmd.py:
e: quickfix
quickfix(dry_run;modules)
fixos/cli/report_cmd.py:
e: _render_report_json,_render_report_markdown,_render_report_html,_render_report_yaml,report
_render_report_json(results;timestamp)
_render_report_markdown(results;timestamp)
_render_report_html(results;timestamp)
_render_report_yaml(results;timestamp)
report(output_format;output;modules;profile)
fixos/cli/rollback_cmd.py:
e: rollback,rollback_list,rollback_show,rollback_undo
rollback()
rollback_list(limit)
rollback_show(session_id)
rollback_undo(session_id;last;dry_run)
fixos/cli/scan_cmd.py:
e: scan,_resolve_modules,_display_disk_fix_mode,_display_disk_scan_mode,_run_disk_analysis,_print_quick_issues
scan(modules;output;show_raw;no_banner;disc;dry_run;interactive;json_output;yaml_output;llm_fallback;profile;modules_csv)
_resolve_modules(modules;modules_csv;profile;fmt)
_display_disk_fix_mode(disk_analysis)
_display_disk_scan_mode(disk_analysis)
_run_disk_analysis(data;fmt;json_output;is_fix_mode)
_print_quick_issues(data)
fixos/cli/shared.py:
e: add_common_options,add_shared_options,NaturalLanguageGroup
NaturalLanguageGroup: resolve_command(2) # Click group that routes unknown commands to 'ask' command.
add_common_options(fn)
add_shared_options(func)
fixos/cli/token_cmd.py:
e: token,token_set,token_show,token_clear
token()
token_set(key;provider;env_file)
token_show()
token_clear(env_file)
fixos/cli/watch_cmd.py:
e: watch
watch(interval;modules;alert_on;max_iterations)
fixos/cli.py:
fixos/config.py:
e: _load_env_files,detect_provider_from_key,interactive_provider_setup,get_providers_list,FixOsConfig
FixOsConfig: load(1),validate(0),summary(0)
_load_env_files()
detect_provider_from_key(key)
interactive_provider_setup()
get_providers_list()
fixos/config_interactive.py:
e: _print_provider_menu,_get_user_choice,_get_api_key,_save_to_env,interactive_provider_setup
_print_provider_menu()
_get_user_choice(num_map)
_get_api_key(provider)
_save_to_env(provider;key;key_env)
interactive_provider_setup()
fixos/constants.py:
fixos/diagnostics/__init__.py:
fixos/diagnostics/_flatpak_analysis_mixin.py:
e: _FlatpakAnalysisMixin
_FlatpakAnalysisMixin: _load_installed_refs(0),_find_unused_runtimes(0),_dir_total_size(1),_find_leftover_data(0),_find_orphaned_apps(0),_find_duplicate_apps(0),_get_dir_size_du(1),_get_dir_size_walk(1),_measure_path_size(1),_analyze_repo_size(0),_get_flatpak_size_note(3) # Mixin providing analysis methods for FlatpakAnalyzer.
fixos/diagnostics/_flatpak_execution_mixin.py:
e: _FlatpakExecutionMixin
_FlatpakExecutionMixin: ask_user_and_cleanup(1),_execute_cleanup_action(1),_execute_flatpak_uninstall_unused(0),_execute_flatpak_repair(0),_execute_flatpak_vacuum(0),_execute_flatpak_uninstall_all(0),_execute_leftover_data_cleanup(1) # Mixin providing cleanup execution methods for FlatpakAnalyze
fixos/diagnostics/_flatpak_recommendations_mixin.py:
e: _FlatpakRecommendationsMixin
_FlatpakRecommendationsMixin: get_largest_apps(1),get_cleanup_summary(0),_rec_repo_bloat(0),_rec_duplicates(0),_rec_unused_runtimes(0),_rec_large_apps(0),_rec_leftover_and_orphaned(0),_rec_hard_reset(0),get_cleanup_recommendations(0) # Mixin providing cleanup recommendation methods for FlatpakAn
fixos/diagnostics/_storage_container_mixin.py:
e: _ContainerAnalyzerMixin
_ContainerAnalyzerMixin: _detect_docker_section(1),_parse_docker_df_output(1),_add_dangling_images_item(2),_add_build_cache_item(1),_add_docker_total_item(2),_analyze_docker(0),_analyze_podman(0) # Mixin providing container _analyze_* methods for StorageAnal
fixos/diagnostics/_storage_system_mixin.py:
e: _SystemAnalyzerMixin
_SystemAnalyzerMixin: _analyze_dnf_cache(0),_analyze_old_kernels(0),_analyze_journal_logs(0),_analyze_coredumps(0),_analyze_orphaned_packages(0),_analyze_system_logs(0),_analyze_var_cache(0),_parse_snap_line(1),_add_snap_items(2),_analyze_snap(0) # Mixin providing system-level _analyze_* methods for StorageA
fixos/diagnostics/_storage_user_mixin.py:
e: _UserAnalyzerMixin
_UserAnalyzerMixin: _analyze_user_cache(0),_analyze_browser_cache(0),_analyze_btrfs_snapshots(0),_analyze_browser_profiles(0),_analyze_flatpak_user_data(0),_analyze_ostree_repo(0),_analyze_dev_projects(0),_analyze_home_directory(0),_find_large_files(2),_find_large_home_dirs(2),get_large_directories(1) # Mixin providing user-level _analyze_* methods for StorageAna
fixos/diagnostics/checks/__init__.py:
fixos/diagnostics/checks/_shared.py:
e: _psutil_required,_cmd
_psutil_required()
_cmd(cmd;timeout)
fixos/diagnostics/checks/audio.py:
e: diagnose_audio
diagnose_audio()
fixos/diagnostics/checks/file_analysis.py:
e: diagnose_files,_find_large_files,_find_duplicates,_find_media_files,_find_archive_candidates,_find_downloads_cleanup
diagnose_files()
_find_large_files()
_find_duplicates()
_find_media_files()
_find_archive_candidates()
_find_downloads_cleanup()
fixos/diagnostics/checks/hardware.py:
e: diagnose_hardware
diagnose_hardware()
fixos/diagnostics/checks/packages.py:
e: diagnose_packages,_diagnose_rpm_dnf,_diagnose_flatpak,_diagnose_snap,_diagnose_duplicates,_diagnose_desktop_apps
diagnose_packages()
_diagnose_rpm_dnf()
_diagnose_flatpak()
_diagnose_snap()
_diagnose_duplicates()
_diagnose_desktop_apps()
fixos/diagnostics/checks/resources.py:
e: diagnose_resources
diagnose_resources()
fixos/diagnostics/checks/security.py:
e: diagnose_security
diagnose_security()
fixos/diagnostics/checks/storage_optimization.py:
e: diagnose_storage,_diagnose_partitions,_diagnose_btrfs,_diagnose_lvm,_diagnose_swap_optimization,_diagnose_filesystem_health
diagnose_storage()
_diagnose_partitions()
_diagnose_btrfs()
_diagnose_lvm()
_diagnose_swap_optimization()
_diagnose_filesystem_health()
fixos/diagnostics/checks/system_core.py:
e: _collect_os_info,_collect_platform_details,diagnose_system
_collect_os_info()
_collect_platform_details()
diagnose_system()
fixos/diagnostics/checks/thumbnails.py:
e: diagnose_thumbnails
diagnose_thumbnails()
fixos/diagnostics/dev_project_analyzer.py:
e: ProjectDependency,DevProjectAnalyzer
ProjectDependency: to_dict(0),_format_size(1) # Represents a dependency folder that can be cleaned
DevProjectAnalyzer: __init__(1),analyze(1),_scan_directory(3),_check_dependency_folder(1),_create_dependency(3),_get_dir_size(1),_check_can_recreate(2),get_old_dependencies(1),get_large_dependencies(1),get_summary(0),get_cleanup_commands(0) # Analyze developer projects for dependency folders that can b
fixos/diagnostics/disk_analyzer.py:
e: main,DiskAnalyzer
DiskAnalyzer: __init__(1),analyze_disk_usage(1),_get_disk_status(1),get_large_files(3),get_cache_dirs(2),get_log_dirs(2),get_temp_dirs(2),suggest_cleanup_actions(1),_get_dir_size_mb(1),_categorize_file(1),_identify_cache_type(1),_identify_temp_type(1),_get_oldest_file_date(1),_get_newest_file_date(1) # Analyzes disk usage and provides cleanup suggestions
main()
fixos/diagnostics/flatpak_analyzer.py:
e: analyze_flatpak_for_cleanup,FlatpakItemType,FlatpakItemInfo,FlatpakAnalyzer
FlatpakItemType:
FlatpakItemInfo: to_dict(0) # Detailed info about a Flatpak item (app, runtime, or data)
FlatpakAnalyzer: __init__(0),analyze(0),_run_flatpak_command(1),_parse_size(1),_format_size(1) # Advanced analyzer for Flatpak cleanup decisions
analyze_flatpak_for_cleanup()
fixos/diagnostics/service_cleanup.py:
e: ServiceCleaner
ServiceCleaner: __init__(1),get_cleanup_plan(1),cleanup_service(2),_service_to_dict(1),is_safe_cleanup(2),get_cleanup_hints(2),get_service_description(1),get_cleanup_command(2),_chrome_cleanup_command(1),get_preview_command(2) # Plans and executes cleanup of service data.
fixos/diagnostics/service_details.py:
e: ServiceDetailsProvider
ServiceDetailsProvider: get_details(2),_parse_docker_system_df(1),_get_docker_counts(1),_docker(0),_ollama(0),_conda(0),_package_cache(1),_flatpak(0),_parse_size_bytes(1) # Provides detailed information about service data.
fixos/diagnostics/service_scanner.py:
e: main,ServiceType,ServiceDataInfo,ServiceDataScanner
ServiceType: # Service types that can be scanned and cleaned.
ServiceDataInfo: # Information about service data.
ServiceDataScanner: __init__(1),scan_all_services(0),scan_service(1),_analyze_service_path(2),_get_path_size_mb(1),get_cleanup_plan(1),cleanup_service(2) # Scans for large service data directories and allows cleanup.
main()
fixos/diagnostics/storage_analyzer.py:
e: StorageItem,StorageAnalyzer
StorageItem: to_dict(0),_format_size(1) # Represents a storage item that can be cleaned
StorageAnalyzer: __init__(0),analyze_full(0),_get_dir_size(1),_get_file_size(1),_run_command(1),_parse_size_static(1),_parse_size(1),_get_recommendations(0),get_summary(0) # Comprehensive storage analyzer for Linux systems.
fixos/diagnostics/system_checks.py:
e: get_full_diagnostics
get_full_diagnostics(modules;progress_callback)
fixos/diagnostics/utils.py:
e: format_size
format_size(size_bytes)
fixos/features/__init__.py:
e: SystemInfo,SystemDetector
SystemInfo: # Complete system information snapshot.
SystemDetector: detect(0),_detect_os_family(0),_detect_distro(0),_detect_distro_version(0),_detect_id_like(0),_detect_de(0),_detect_display_server(0),_detect_gpu_vendor(0),_detect_gpu_model(0),_detect_pkg_manager(0),_get_installed_packages(1),_get_installed_flatpaks(0) # Detects system parameters.
fixos/features/auditor.py:
e: AuditResult,FeatureAuditor
AuditResult: completion_pct(0),total_packages(0),to_dict(0) # Result of feature audit - what's installed, what's missing.
FeatureAuditor: __init__(2),audit(1),_check_conditions(1),_is_installed(1) # Compares installed packages with profile requirements.
fixos/features/catalog.py:
e: PackageInfo,PackageCategory,PackageCatalog
PackageInfo: get_distro_name(1),is_available_on(1) # Information about a single package.
PackageCategory: # A category of packages (e.g., core_utils, dev_tools).
PackageCatalog: __init__(0),load(2),get_package(1),get_packages_by_category(1),list_categories(0) # Manages the package database.
fixos/features/installer.py:
e: FeatureInstaller
FeatureInstaller: __init__(2),install(1),_build_install_methods(1),_install_package(1),_install_repo(1),_install_native(1),_install_flatpak(1),_install_pip(1),_install_cargo(1),_install_npm(1),_run_script(1),get_rollback_commands(1) # Safely installs packages using native package manager or oth
fixos/features/profiles.py:
e: UserProfile
UserProfile: load(3),list_available(2),resolve_packages(2),to_dict(0) # A user profile defining what packages/features they want.
fixos/features/renderer.py:
e: FeatureRenderer
FeatureRenderer: render_audit(1),_get_source_info(2),render_package_list(2),render_system_info(1) # Renders audit results for terminal display.
fixos/fixes/__init__.py:
fixos/interactive/__init__.py:
fixos/interactive/cleanup_planner.py:
e: main,Priority,CleanupType,CleanupAction,CleanupPlanner
Priority:
CleanupType:
CleanupAction: __post_init__(0) # Represents a cleanup action
CleanupPlanner: __init__(0),group_by_category(1),prioritize_actions(1),create_cleanup_plan(1),interactive_selection(1),_dict_to_action(1),_action_to_dict(1),_get_category_for_action(1),_priority_score(1),_rec_safe_high_impact(1),_rec_cache(1),_rec_logs(1),_rec_manual(1),_generate_recommendations(2) # Interactive cleanup planning and grouping system
main()
fixos/llm_shell.py:
e: _timeout_handler,format_time,execute_command,_llm_call,_handle_user_turn,run_llm_shell
_timeout_handler(signum;frame)
format_time(seconds)
execute_command(cmd)
_llm_call(client;model;messages)
_handle_user_turn(session;messages;remaining;verbose)
run_llm_shell(diagnostics_data;token;model;timeout;verbose;base_url)
fixos/orchestrator/__init__.py:
fixos/orchestrator/executor.py:
e: DangerousCommandError,CommandTimeoutError,ExecutionResult,CommandExecutor
DangerousCommandError: __init__(2)
CommandTimeoutError: __init__(2)
ExecutionResult: success(0),to_context(0)
CommandExecutor: __init__(3),is_dangerous(1),needs_sudo(1),add_sudo(1),_make_noninteractive(1),check_idempotent(1),_resolve_timeout(2),execute_sync(4),execute(3) # Bezpieczny executor komend z:
fixos/orchestrator/graph.py:
e: Problem,ProblemGraph
Problem: is_actionable(0),to_summary(0)
ProblemGraph: __init__(0),add(1),get(1),next_actionable(0),all_done(0),pending_count(0),summary(0),render_tree(0),_recalculate_order(0) # DAG problemów systemowych z topological sort do wyznaczania
fixos/orchestrator/orchestrator.py:
e: _SkipAll,FixOrchestrator
_SkipAll: # Rzucany gdy user wpisuje 's' – pomija wszystkie komendy bież
FixOrchestrator: __init__(3),load_from_diagnostics(1),load_from_dict(1),_process_fix_commands(3),_process_rediagnose(2),run_sync(2),run_async(2),_evaluate_and_rediagnose(2),_parse_json(1),_log(2),_session_summary(0),_default_confirm(2),_default_progress(2) # Orkiestrator napraw systemowych.
fixos/orchestrator/rollback.py:
e: RollbackEntry,RollbackSession
RollbackEntry: # Single recorded operation with its rollback command.
RollbackSession: record(6),get_rollback_commands(0),rollback_last(2),_save(0),load(2),list_sessions(2) # A session of recorded operations that can be rolled back.
fixos/platform_utils.py:
e: get_os_info,needs_elevation,elevate_cmd,is_dangerous,is_interactive_blocker,run_command,get_package_manager,install_package_cmd,_cmd_exists,setup_signal_timeout,cancel_signal_timeout
get_os_info()
needs_elevation(cmd)
elevate_cmd(cmd)
is_dangerous(cmd)
is_interactive_blocker(cmd)
run_command(cmd;timeout;shell)
get_package_manager()
install_package_cmd(package)
_cmd_exists(cmd)
setup_signal_timeout(seconds;handler)
cancel_signal_timeout()
fixos/plugins/__init__.py:
fixos/plugins/base.py:
e: Severity,Finding,DiagnosticResult,DiagnosticPlugin
Severity: # Severity level for diagnostic findings.
Finding: # Single finding from a diagnostic plugin.
DiagnosticResult: to_dict(0) # Result of a diagnostic plugin run.
DiagnosticPlugin: diagnose(0),can_run(0),get_metadata(0) # Bazowa klasa dla pluginów diagnostycznych fixOS.
fixos/plugins/builtin/__init__.py:
fixos/plugins/builtin/audio.py:
e: Plugin
Plugin: diagnose(0),_check_alsa(0),_check_pipewire(0),_check_wireplumber(0),_check_sof(0)
fixos/plugins/builtin/disk.py:
e: Plugin
Plugin: diagnose(0),_check_usage(0),_check_inodes(0),_check_readonly(0)
fixos/plugins/builtin/hardware.py:
e: Plugin
Plugin: diagnose(0),_check_gpu(0),_check_battery(0),_check_touchpad(0),_check_camera(0),_check_dmi(0)
fixos/plugins/builtin/resources.py:
e: Plugin
Plugin: diagnose(0),_check_cpu(0),_check_ram(0),_check_top_processes(0),_check_zombies(0),_check_swap(0)
fixos/plugins/builtin/security.py:
e: Plugin
Plugin: _selinux_findings(1),_fail2ban_findings(1),_overall_status(1),diagnose(0),_check_firewall(0),_check_selinux(0),_check_open_ports(0),_check_ssh(0),_check_fail2ban(0)
fixos/plugins/builtin/thumbnails.py:
e: Plugin
Plugin: diagnose(0),_check_cache(0),_check_ffmpegthumbnailer(0),_check_totem(0),_check_gstreamer(0)
fixos/plugins/registry.py:
e: PluginRegistry
PluginRegistry: __init__(0),discover(0),_register_builtins(0),_register_external(0),register(1),list_plugins(1),get_plugin(1),run(2),last_results(0) # Registry for diagnostic plugins with autodiscovery.
fixos/profiles/__init__.py:
e: Profile
Profile: load(2),list_available(1),to_dict(0) # Profil diagnostyczny z zestawem modułów i progów.
fixos/providers/__init__.py:
fixos/providers/llm.py:
e: LLMError,LLMClient
LLMError: # Błąd komunikacji z LLM.
LLMClient: __init__(1),_handle_api_error(2),chat(1),chat_stream(1),total_tokens(0),chat_structured(2),_extract_json(1),ping(0) # Wrapper nad openai.OpenAI kompatybilny z wieloma providerami
fixos/providers/llm_analyzer.py:
e: main,LLMAnalysis,LLMAnalyzer
LLMAnalysis: # Result of LLM analysis
LLMAnalyzer: __init__(1),analyze_disk_issues(1),analyze_failed_action(2),analyze_complex_pattern(1),_sanitize_suggestion(1),_create_fallback_analysis(1),enhance_heuristics_with_llm(2) # Uses LLM to analyze disk issues when heuristics aren't suffi
main()
fixos/providers/schemas.py:
e: RiskLevel,FixSuggestion,LLMDiagnosticResponse,NLPIntent,CommandValidation
RiskLevel:
FixSuggestion: # Pojedyncza sugestia naprawy od LLM.
LLMDiagnosticResponse: # Strukturalna odpowiedź LLM na dane diagnostyczne.
NLPIntent: # Rozpoznana intencja z polecenia NLP.
CommandValidation: # Wynik walidacji komendy przez LLM.
fixos/system_checks.py:
e: run_cmd,get_cpu_info,get_memory_info,get_disk_info,get_network_info,get_top_processes,get_fedora_specific,get_full_diagnostics
run_cmd(cmd;timeout)
get_cpu_info()
get_memory_info()
get_disk_info()
get_network_info()
get_top_processes(n)
get_fedora_specific()
get_full_diagnostics()
fixos/utils/__init__.py:
fixos/utils/anonymizer.py:
e: _get_sensitive,_apply_regex_replacements,anonymize,deanonymize,display_anonymized_preview,_colorize_md_line,_format_diagnostics_markdown,_render_dict_list_value,_render_dict_long_string,_render_dict_multiline_string,_dict_to_markdown,_format_key_title,AnonymizationReport
AnonymizationReport: add(2),summary(0) # Raport anonimizacji – co zostało zmaskowane.
_get_sensitive()
_apply_regex_replacements(data_str;report)
anonymize(data_str)
deanonymize(text)
display_anonymized_preview(data_str;report;max_lines)
_colorize_md_line(line)
_format_diagnostics_markdown(data_str)
_render_dict_list_value(key;value;prefix)
_render_dict_long_string(key;value;prefix)
_render_dict_multiline_string(key;value;prefix)
_dict_to_markdown(data;indent)
_format_key_title(key)
fixos/utils/terminal.py:
e: colorize,_is_divider_line,_handle_divider_line,_get_severity_style,render_md,print_cmd_block,_print_output_box,print_stdout_box,print_stderr_box,print_problem_header,render_tree_colored,_wrap,_C
_C: # No-op stubs – kept so existing callers don't break at import
colorize(line)
_is_divider_line(stripped)
_handle_divider_line(stripped)
_get_severity_style(stripped)
render_md(text)
print_cmd_block(cmd;comment;dry_run)
_print_output_box(text)
print_stdout_box(stdout;max_lines)
print_stderr_box(stderr;max_lines)
print_problem_header(problem_id;description;severity;status;attempts;max_attempts)
render_tree_colored(nodes;execution_order)
_wrap(text;width)
fixos/utils/timeout.py:
e: timeout_handler,SessionTimeout
SessionTimeout: # Wyjątek rzucany po przekroczeniu limitu czasu sesji.
timeout_handler(signum;frame)
fixos/utils/web_search.py:
e: _http_get,search_fedora_bugzilla,search_ask_fedora,search_arch_wiki,search_github_issues,search_serpapi,search_ddg,search_all,format_results_for_llm,SearchResult
SearchResult:
_http_get(url;timeout)
search_fedora_bugzilla(query;max_results)
search_ask_fedora(query;max_results)
search_arch_wiki(query;max_results)
search_github_issues(query;max_results)
search_serpapi(query;api_key;max_results)
search_ddg(query;max_results)
search_all(query;serpapi_key;max_per_source)
format_results_for_llm(results)
fixos/watch.py:
e: WatchDaemon
WatchDaemon: __init__(4),run(0),stop(0),_check_for_new_issues(1),_notify(1) # Daemon wykonujący cykliczną diagnostykę z powiadomieniami.
scripts/pyqual-calibrate.py:
e: read_last_metrics_from_db,parse_pyqual_yaml,update_metric,calculate_new_threshold,extract_current_metrics,calibrate,main
read_last_metrics_from_db(workdir)
parse_pyqual_yaml(config_path)
update_metric(content;metric_name;new_value)
calculate_new_threshold(actual_value;current_threshold;margin_percent;is_upper_limit)
extract_current_metrics(content)
calibrate(workdir;margin;dry_run;force;provided_metrics)
main()
setup.py:
test_kwarg.py:
e: cli
cli(disc)
test_timeout_fix.py:
e: timeout_handler,suspend_timeout,setup_timeout_ref
timeout_handler(signum;frame)
suspend_timeout()
setup_timeout_ref(seconds;handler)
tests/__init__.py:
tests/conftest.py:
e: _env,_has_real_token,real_api_available,test_config,mock_config,mock_llm_client,broken_audio_diagnostics,broken_thumbnails_diagnostics,full_broken_diagnostics,broken_network_diagnostics,broken_dns_diagnostics
_env(key;default)
_has_real_token()
real_api_available()
test_config()
mock_config()
mock_llm_client(mock_config)
broken_audio_diagnostics()
broken_thumbnails_diagnostics()
full_broken_diagnostics(broken_audio_diagnostics;broken_thumbnails_diagnostics)
broken_network_diagnostics()
broken_dns_diagnostics()
tests/e2e/__init__.py:
tests/e2e/test_anonymization_layers.py:
e: _assert_no_sensitive,mock_cfg,_make_sensitive_string,TestAnonymizePatterns,TestDiagnosticsAnonymization,TestHITLAnonymizationLayer,TestAutonomousAnonymizationLayer,TestOrchestratorAnonymizationLayer,TestLLMBoundaryNoLeaks,TestDeanonymizationLayer
TestAnonymizePatterns: test_hostname_replaced(0),test_username_replaced(0),test_home_path_replaced(0),test_home_slash_pattern(0),test_ipv4_last_octets_masked(0),test_ipv4_preserves_first_two_octets(0),test_mac_replaced(0),test_sk_token_replaced(0),test_openrouter_token_replaced(0),test_xai_token_replaced(0),test_gemini_token_replaced(0),test_password_replaced(0),test_uuid_replaced(0),test_serial_replaced(0),test_multiple_occurrences(0),test_non_sensitive_unchanged(0),test_empty_string(0),test_dict_input(0),test_localhost_not_masked(0),test_ipv6_not_broken(0),test_report_size_tracking(0)
TestDiagnosticsAnonymization: _make_diag(0),test_hostname_not_in_anonymized(0),test_username_not_in_anonymized(0),test_home_path_not_in_anonymized(0),test_pactl_info_anonymized(0),test_journal_errors_anonymized(0),test_full_diag_no_leaks(0)
TestHITLAnonymizationLayer: test_llm_prompt_no_hostname(2),test_llm_prompt_no_username(2),test_user_rejects_send_no_llm_call(1)
TestAutonomousAnonymizationLayer: test_command_output_anonymized(0),test_exec_output_anonymized_before_llm(2)
TestOrchestratorAnonymizationLayer: test_diagnostics_anonymized_in_prompt(2),test_stdout_stderr_anonymized_in_evaluate(2)
TestLLMBoundaryNoLeaks: test_anonymize_before_any_llm_call(0),test_anonymize_idempotent(0),test_anonymize_preserves_technical_info(0),test_nested_sensitive_in_dict(0),test_multiline_journal_log_anonymized(0),test_dmesg_output_anonymized(0),test_env_file_content_anonymized(0),test_sensor_output_not_anonymized(0),test_anonymization_report_summary_format(0) # Testy granicy LLM – weryfikacja że żadne surowe dane nie tra
TestDeanonymizationLayer: test_deanonymize_base_function(0),test_hitl_deanonymize_extracted_fixes(2),test_autonomous_deanonymize_exec(3),test_run_single_command_deanonymizes(1) # Testy odwracania anonimizacji dla komend z LLM.
_assert_no_sensitive(text;label)
mock_cfg()
_make_sensitive_string()
tests/e2e/test_audio_broken.py:
e: TestAudioAnonymization,TestAudioDiagnosticsDetection,TestAudioDiagnosticsMockLLM,TestAudioDiagnosticsReal
TestAudioAnonymization: test_anonymize_hostname(1),test_anonymize_ipv4(0),test_anonymize_mac(0),test_anonymize_api_token(0),test_anonymize_home_path(0),test_anonymize_uuid(0) # Testy anonimizacji danych audio.
TestAudioDiagnosticsDetection: test_detect_missing_sof_firmware(1),test_detect_no_alsa_cards(1),test_detect_pipewire_failed(1),test_detect_lenovo_hardware(1),test_kernel_dmesg_sof_error(1) # Testy wykrywania problemów audio z danych diagnostycznych.
TestAudioDiagnosticsMockLLM: test_llm_receives_anonymized_data(2),test_anonymization_report_not_empty(1),test_llm_called_with_sof_context(3),test_llm_rate_limit_retry(2) # Testy z mock LLM – weryfikacja że dane są poprawnie przesyła
TestAudioDiagnosticsReal: test_real_llm_analyzes_audio(2) # Testy z prawdziwym API – uruchamiane tylko gdy token dostępn
tests/e2e/test_cli.py:
e: runner,tmp_env,TestWelcomeScreen,TestLlmCommand,TestTokenCommands,TestProvidersCommand,TestConfigCommands
TestWelcomeScreen: test_welcome_shows_banner(1),test_welcome_shows_commands(1),test_welcome_shows_status_section(1),test_welcome_shows_tip_when_no_key(1) # Testy ekranu powitalnego (fixos bez argumentów).
TestLlmCommand: test_llm_shows_all_providers(1),test_llm_shows_urls(1),test_llm_shows_free_paid_badges(1),test_llm_free_filter(1),test_llm_shows_token_set_commands(1),test_llm_shows_env_vars(1),test_llm_marks_active_provider(1),test_llm_shows_12_providers(1) # Testy komendy fixos llm.
TestTokenCommands: test_token_set_gemini_auto_detect(2),test_token_set_openai_auto_detect(2),test_token_set_openrouter_auto_detect(2),test_token_set_anthropic_auto_detect(2),test_token_set_groq_auto_detect(2),test_token_set_xai_auto_detect(2),test_token_set_explicit_provider(2),test_token_set_masked_in_output(2),test_token_set_file_permissions(2),test_token_set_replaces_existing(2),test_token_clear(2) # Testy komend fixos token set/show/clear.
TestProvidersCommand: test_providers_shows_list(1),test_providers_shows_free_paid(1),test_providers_suggests_llm_command(1) # Testy komendy fixos providers.
TestConfigCommands: test_config_show_runs(1),test_config_init_creates_env(2),test_config_set_writes_value(2) # Testy komend fixos config.
runner()
tmp_env(tmp_path)
tests/e2e/test_executor.py:
e: ex_live,ex_dry,TestNonInteractiveInjection,TestSudoLogic,TestDangerousCommandBlocking,TestLiveExecution,TestIdempotencyCheck
TestNonInteractiveInjection: test_apt_get_install_y_injected(1),test_apt_install_y_injected(1),test_dnf_install_y_injected(1),test_dnf_upgrade_y_injected(1),test_apt_get_upgrade_y_injected(1),test_already_y_not_duplicated(1),test_non_pkg_cmd_unchanged(1),test_sudo_apt_get_y_injected(1) # Testy wstrzykiwania -y do komend pakietów.
TestSudoLogic: test_systemctl_user_no_sudo(1),test_systemctl_user_start_no_sudo(1),test_systemctl_system_gets_sudo(1),test_dnf_gets_sudo(1),test_echo_no_sudo(1) # Testy logiki sudo w executor.
TestDangerousCommandBlocking: test_rm_rf_root_blocked(1),test_mkfs_blocked(1),test_wget_pipe_sh_blocked(1),test_fork_bomb_blocked(1),test_safe_echo_not_blocked(1) # Testy blokowania niebezpiecznych komend.
TestLiveExecution: test_echo_executes_correctly(1),test_false_command_returns_nonzero(1),test_uname_returns_output(1),test_timeout_handling(0),test_nonexistent_command_fails_gracefully(1),test_stdout_captured(1),test_stderr_captured_on_error(1) # Testy faktycznego wykonania bezpiecznych komend.
TestIdempotencyCheck: test_mkdir_skipped_if_exists(1),test_mkdir_executed_if_not_exists(1) # Testy sprawdzania idempotentności przed wykonaniem.
ex_live()
ex_dry()
tests/e2e/test_multi_system.py:
e: TestMultiSystemBasic,TestSystemDetection,TestCliCommands,TestDockerEnvironment,TestSystemServices
TestMultiSystemBasic: test_fixos_import(0),test_fixos_cli_exists(0),test_config_load(0),test_diagnostics_import(0) # Podstawowe testy działające na każdym systemie.
TestSystemDetection: test_os_detection(0),test_distro_detection(0),test_python_version(0) # Testy detekcji systemu operacyjnego.
TestCliCommands: fixos_path(0),test_help_command(1),test_scan_help(1),test_config_show(1) # Testy CLI fixos - wymagają zainstalowanego pakietu.
TestDockerEnvironment: test_docker_environment_detected(0),test_required_commands_available(0),test_disk_space_available(0) # Testy specyficzne dla środowiska Docker.
TestSystemServices: test_systemd_or_init(0),test_dbus_availability(0) # Testy usług systemowych (tylko w Docker).
tests/e2e/test_network_broken.py:
e: broken_network_diagnostics,broken_dns_diagnostics,TestNetworkProblemsDetection,TestNetworkAnonymization,TestNetworkMockLLM,TestNetworkExecutorIntegration,TestNetworkRealLLM
TestNetworkProblemsDetection: test_detect_networkmanager_failed(1),test_detect_dns_failure(1),test_detect_rfkill_blocked(1),test_detect_no_wifi_device(1),test_detect_network_unreachable(1),test_detect_systemd_resolved_failed(1),test_detect_multiple_failed_services(1) # Testy wykrywania problemów sieciowych z danych diagnostyczny
TestNetworkAnonymization: test_ip_in_network_data_masked(0),test_mac_in_network_data_masked(0),test_hostname_in_network_data_masked(0),test_private_ip_range_masked(0) # Testy anonimizacji danych sieciowych.
TestNetworkMockLLM: test_llm_suggests_rfkill_unblock(3),test_llm_suggests_dns_fix(3),test_llm_network_commands_no_sudo_for_rfkill(3) # Testy z mock LLM dla scenariusza broken-network.
TestNetworkExecutorIntegration: test_systemctl_user_network_no_sudo(0),test_networkmanager_restart_gets_sudo(0),test_ip_command_no_sudo(0),test_rfkill_no_sudo(0),test_firewall_cmd_needs_sudo(0) # Testy integracji executor + network commands.
TestNetworkRealLLM: test_real_llm_analyzes_network(2) # Testy z prawdziwym API – tylko gdy token dostępny.
broken_network_diagnostics()
broken_dns_diagnostics()
tests/e2e/test_thumbnails_broken.py:
e: TestThumbnailsDetection,TestThumbnailsAnonymization,TestThumbnailsMockLLM,TestWebSearchFallback,TestFullBrokenScenario
TestThumbnailsDetection: test_detect_missing_ffmpegthumbnailer(1),test_detect_missing_totem_thumbnailer(1),test_detect_empty_thumbnail_cache(1),test_detect_high_fail_count(1),test_detect_missing_thumbnailer_packages(1),test_detect_missing_thumbnailer_configs(1) # Testy wykrywania problemów z thumbnails.
TestThumbnailsAnonymization: test_home_path_in_cache_anonymized(1),test_xdg_cache_path_anonymized(0) # Testy anonimizacji danych thumbnails.
TestThumbnailsMockLLM: test_llm_suggests_ffmpegthumbnailer(3),test_llm_suggests_cache_clear(3) # Testy z mock LLM dla scenariusza thumbnails.
TestWebSearchFallback: test_search_arch_wiki_thumbnails(0),test_search_fedora_bugzilla_audio(0),test_format_results_for_llm(0),test_empty_results_handled(0) # Testy wyszukiwania zewnętrznego jako fallback.
TestFullBrokenScenario: test_all_modules_detected(1),test_combined_issues_anonymized(1),test_full_scenario_llm_comprehensive(3),test_real_llm_full_scenario(2) # Testy pełnego scenariusza (audio + thumbnails + inne problem
tests/test_fixos.py:
e: test_placeholder,test_import
test_placeholder()
test_import()
tests/unit/__init__.py:
tests/unit/test_anonymizer.py:
e: TestHomePaths,TestAnonymizerOrder,TestAnonymizerEdgeCases
TestHomePaths: test_pyenv_full_path_anonymized(0),test_deep_nested_home_path(0),test_multiple_home_paths_all_masked(0),test_home_path_with_spaces_in_context(0),test_home_path_in_error_message(0),test_home_path_already_anonymized_not_double_replaced(0),test_non_home_paths_not_affected(0),test_literal_home_dir_replaced_first(0),test_username_replaced_after_paths(0) # Testy anonimizacji ścieżek /home – fix v2.2.
TestAnonymizerOrder: test_hostname_replaced_before_username(0),test_home_path_replaced_before_username_word(0),test_report_categories_present(0),test_report_summary_format(0) # Testy kolejności zastąpień – fix v2.2.
TestAnonymizerEdgeCases: test_empty_string(0),test_none_converted_to_string(0),test_dict_converted_to_string(0),test_very_long_path(0),test_path_with_special_chars(0),test_api_token_sk_or_masked(0),test_api_token_gemini_masked(0),test_uuid_hardware_masked(0),test_mac_address_masked(0),test_ipv4_partial_octets_preserved(0),test_password_in_env_masked(0) # Testy przypadków brzegowych.
tests/unit/test_core.py:
e: TestConfig,TestAnonymizer,TestWebSearch,TestSortFixesByPriority,TestDiagnosticOnlyCommand,TestExtractFixes,TestDiagnosePackages,TestDiagnoseStorage,TestDiagnoseFiles,TestAllModulesRegistered,TestInteractiveBlocker
TestConfig: test_default_provider_is_gemini(0),test_model_default_gemini(0),test_invalid_provider_fallback(0),test_validate_missing_key(0),test_validate_ollama_no_key_needed(0),test_agent_mode_from_env(0),test_summary_masks_key(0)
TestAnonymizer: test_empty_string(0),test_non_string_input(0),test_no_sensitive_data(0),test_ipv6_not_mangled(0),test_multiple_ips_all_masked(0),test_password_in_env_masked(0)
TestWebSearch: test_format_empty_results(0),test_format_single_result(0),test_http_get_timeout(0)
TestSortFixesByPriority: test_cleanup_before_upgrade(0),test_disk_hungry_sorted_to_end(0),test_unknown_commands_mid_priority(0)
TestDiagnosticOnlyCommand: test_simple_diagnostic_is_filtered(0),test_repair_command_is_not_diagnostic(0),test_journalctl_vacuum_is_not_diagnostic(0),test_compound_command_any_repair_keeps_all(0),test_compound_all_diagnostic_is_filtered(0)
TestExtractFixes: test_strict_bold_backticks(0),test_backticks_no_bold(0),test_no_backticks_no_bold(0),test_multiline_command_collapsed(0),test_co_robi_extracted_as_comment(0),test_diagnostic_only_filtered(0),test_duplicate_commands_deduplicated(0),test_empty_reply(0) # Regression tests for extract_fixes – covers multiple LLM out
TestDiagnosePackages: test_module_loads_and_returns_dict(0),test_rpm_keys_present_on_linux(0),test_flatpak_keys_present_on_linux(0),test_desktop_apps_keys_present_on_linux(0),test_registered_in_diagnostic_modules(0) # Tests for the packages diagnostic module.
TestDiagnoseStorage: test_module_loads_and_returns_dict(0),test_partition_keys_present_on_linux(0),test_swap_keys_present_on_linux(0),test_filesystem_keys_present_on_linux(0),test_registered_in_diagnostic_modules(0) # Tests for the storage optimization diagnostic module.
TestDiagnoseFiles: test_module_loads_and_returns_dict(0),test_large_files_keys_present_on_linux(0),test_media_keys_present_on_linux(0),test_archive_candidates_keys_present_on_linux(0),test_downloads_keys_present_on_linux(0),test_registered_in_diagnostic_modules(0) # Tests for the file analysis diagnostic module.
TestAllModulesRegistered: test_all_nine_modules_present(0),test_all_modules_callable(0) # Verify all 9 diagnostic modules are registered.
TestInteractiveBlocker: test_newgrp_blocked(0),test_su_dash_blocked(0),test_top_not_blocked_if_batch(0),test_regular_command_not_blocked(0)
tests/unit/test_executor.py:
e: ex,TestMakeNoninteractive,TestNeedsSudo,TestAddSudo,TestIsDangerous,TestCheckIdempotent,TestExecuteSyncDryRun
TestMakeNoninteractive: test_apt_get_install_gets_y(1),test_apt_install_gets_y(1),test_dnf_install_gets_y(1),test_yum_install_gets_y(1),test_apt_get_upgrade_gets_y(1),test_dnf_update_gets_y(1),test_already_has_y_not_duplicated(1),test_already_has_yes_not_duplicated(1),test_non_package_cmd_unchanged(1),test_echo_unchanged(1),test_apt_get_without_sudo_gets_y(1),test_package_name_preserved(1),test_dist_upgrade_gets_y(1) # Testy _make_noninteractive() – fix v2.2.
TestNeedsSudo: test_systemctl_user_no_sudo(1),test_systemctl_user_start_no_sudo(1),test_systemctl_user_stop_no_sudo(1),test_systemctl_system_needs_sudo(1),test_systemctl_enable_needs_sudo(1),test_dnf_needs_sudo(1),test_apt_get_no_sudo_in_needs_sudo(1),test_already_sudo_no_double(1),test_echo_no_sudo(1),test_modprobe_needs_sudo(1),test_mount_needs_sudo(1) # Testy needs_sudo() – fix v2.2 (systemctl --user).
TestAddSudo: test_systemctl_user_no_sudo_added(1),test_dnf_gets_sudo(1),test_already_sudo_unchanged(1) # Testy add_sudo() – integracja z needs_sudo.
TestIsDangerous: test_rm_rf_root_blocked(1),test_mkfs_blocked(1),test_fork_bomb_blocked(1),test_wget_pipe_sh_blocked(1),test_curl_pipe_sh_blocked(1),test_safe_dnf_install_ok(1),test_safe_systemctl_ok(1),test_safe_echo_ok(1),test_rm_rf_system_dir_blocked(1),test_chmod_777_root_blocked(1) # Testy is_dangerous() – walidacja niebezpiecznych komend.
TestCheckIdempotent: test_dnf_install_has_check(1),test_systemctl_enable_has_check(1),test_systemctl_start_has_check(1),test_mkdir_has_check(1),test_echo_no_check(1),test_apt_get_no_check(1) # Testy check_idempotent() – sprawdzanie stanu przed wykonanie
TestExecuteSyncDryRun: test_dry_run_returns_preview(1),test_dangerous_command_raises(1),test_apt_get_gets_y_in_dry_run(1),test_systemctl_user_no_sudo_in_dry_run(1) # Testy execute_sync() w trybie dry-run.
ex()
tests/unit/test_orchestrator.py:
e: TestProblem,TestProblemGraph,TestCommandExecutor,TestFixOrchestrator
TestProblem: test_is_actionable_pending(0),test_is_actionable_resolved(0),test_is_actionable_max_attempts(0),test_to_summary_keys(0)
TestProblemGraph: test_add_and_get(0),test_next_actionable_no_deps(0),test_next_actionable_blocked_by_dep(0),test_next_actionable_dep_resolved(0),test_all_done_when_all_resolved(0),test_all_done_false_when_pending(0),test_pending_count(0),test_render_tree_not_empty(0),test_topological_order_critical_first(0),test_child_linked_to_parent(0)
TestCommandExecutor: test_is_dangerous_rm_rf_root(0),test_is_dangerous_safe_command(0),test_is_dangerous_dd_disk(0),test_is_dangerous_fork_bomb(0),test_needs_sudo_dnf(0),test_needs_sudo_systemctl(0),test_needs_sudo_already_has_sudo(0),test_needs_sudo_echo(0),test_add_sudo(0),test_dry_run_returns_preview(0),test_execute_sync_safe_command(0),test_execute_sync_raises_on_dangerous(0),test_execution_result_success(0),test_execution_result_failure(0),test_execution_result_not_executed(0),test_to_context_keys(0)
TestFixOrchestrator: mock_cfg(0),test_load_from_dict(1),test_graph_render_after_load(1),test_run_sync_dry_run_no_confirm(1),test_load_from_diagnostics_mock_llm(2),test_parse_json_clean(1),test_parse_json_with_markdown_fence(1),test_parse_json_invalid_raises(1)
tests/unit/test_service_cleanup.py:
e: TestChromeCleanup
TestChromeCleanup: test_chrome_cleanup_command_targets_scanned_profile(0),test_cleanup_service_reports_freed_space_for_chrome(1)
tests/unit/test_service_scanner.py:
e: TestChromeSafetyClassification
TestChromeSafetyClassification: test_chrome_profile_is_marked_for_review(1),test_chrome_cache_path_is_marked_safe(1)
225 nodes · 227 edges · 50 modules · CC̄=4.3
| Function | CC | in | out | total |
|---|---|---|---|---|
_cmd (in fixos.diagnostics.checks._shared) |
7 | 241 | 3 | 244 |
_cleanup_flatpak_detailed (in fixos.cli._cleanup_flatpak) |
12 ⚠ | 1 | 111 | 112 |
_display_full_system_menu (in fixos.cli._cleanup_system) |
12 ⚠ | 1 | 79 | 80 |
_display_flatpak_status (in fixos.cli._cleanup_flatpak) |
9 | 1 | 65 | 66 |
_print_welcome (in fixos.cli.main) |
6 | 1 | 61 | 62 |
_handle_interactive_select (in fixos.cli._cleanup_system) |
14 ⚠ | 1 | 52 | 53 |
_handle_home_analysis (in fixos.cli._cleanup_home) |
11 ⚠ | 1 | 49 | 50 |
diagnose_resources (in fixos.diagnostics.checks.resources) |
13 ⚠ | 0 | 49 | 49 |
# code2llm call graph | /home/tom/github/wronai/fixOS
# generated in 0.10s
# nodes: 225 | edges: 227 | modules: 50
# CC̄=4.3
HUBS[20]:
fixos.diagnostics.checks._shared._cmd
CC=7 in:241 out:3 total:244
fixos.cli._cleanup_flatpak._cleanup_flatpak_detailed
CC=12 in:1 out:111 total:112
fixos.cli._cleanup_system._display_full_system_menu
CC=12 in:1 out:79 total:80
fixos.cli._cleanup_flatpak._display_flatpak_status
CC=9 in:1 out:65 total:66
fixos.cli.main._print_welcome
CC=6 in:1 out:61 total:62
fixos.cli._cleanup_system._handle_interactive_select
CC=14 in:1 out:52 total:53
fixos.cli._cleanup_home._handle_home_analysis
CC=11 in:1 out:49 total:50
fixos.diagnostics.checks.resources.diagnose_resources
CC=13 in:0 out:49 total:49
fixos.cli._cleanup_system._execute_full_cleanup
CC=8 in:1 out:37 total:38
fixos.cli.config_cmd.config_model
CC=8 in:0 out:38 total:38
fixos.platform_utils.run_command
CC=5 in:33 out:4 total:37
fixos.diagnostics.checks.security.diagnose_security
CC=4 in:0 out:36 total:36
fixos.llm_shell.run_llm_shell
CC=8 in:0 out:34 total:34
fixos.cli._cleanup_utils._format_bytes
CC=1 in:32 out:1 total:33
fixos.utils.terminal.render_md
CC=9 in:0 out:30 total:30
fixos.cli.token_cmd.token_set
CC=7 in:0 out:29 total:29
fixos.anonymizer.anonymize
CC=5 in:14 out:14 total:28
docker.validate-scenario.main
CC=7 in:0 out:27 total:27
scripts.pyqual-calibrate.calibrate
CC=14 in:1 out:26 total:27
fixos.config.FixOsConfig.load
CC=14 in:0 out:26 total:26
MODULES:
docker.validate-scenario [3 funcs]
_get_nested CC=4 out:2
main CC=7 out:27
validate CC=11 out:18
docs.examples.quickstart [1 funcs]
run_autonomous_session CC=1 out:0
fixos.agent [1 funcs]
get_remaining_time CC=2 out:4
fixos.agent.autonomous_session [5 funcs]
_get_remaining_time CC=1 out:1
_handle_exec CC=4 out:17
_handle_llm_error CC=4 out:3
_handle_search CC=3 out:8
_initialize_messages CC=2 out:3
fixos.agent.hitl [1 funcs]
run_hitl_session CC=1 out:2
fixos.agent.hitl_session [8 funcs]
__init__ CC=2 out:5
_check_low_confidence CC=7 out:8
_clear_timeout CC=1 out:1
_handle_llm_error CC=4 out:4
_initialize_messages CC=3 out:5
_process_turn CC=8 out:17
_setup_timeout CC=1 out:3
remaining CC=1 out:1
fixos.agent.session_core [10 funcs]
_deduplicate CC=5 out:4
_extract_co_robi CC=2 out:3
_is_diagnostic_only_command CC=3 out:2
_is_part_diagnostic_only CC=6 out:6
_pattern_backticks CC=3 out:6
_pattern_fallbacks CC=6 out:13
_pattern_no_backticks CC=3 out:7
_pattern_strict_bold CC=4 out:6
extract_fixes CC=4 out:5
extract_search_topic CC=3 out:4
fixos.agent.session_handlers [11 funcs]
_resolve_command_timeout CC=6 out:6
_sort_fixes_by_priority CC=1 out:6
handle_describe_problem CC=2 out:2
handle_direct_command CC=1 out:5
handle_execute_all CC=4 out:10
handle_fix_by_number CC=2 out:9
handle_quit CC=1 out:1
handle_search CC=2 out:6
handle_skip_all CC=1 out:1
parse_user_input CC=9 out:11
fixos.agent.session_io [10 funcs]
ask_execute_prompt CC=1 out:4
ask_low_confidence_search CC=1 out:4
ask_send_data CC=1 out:4
ask_user_problem CC=2 out:11
fmt_time CC=1 out:0
get_user_input CC=2 out:4
print_cmd_result CC=8 out:13
print_session_header CC=1 out:8
print_session_summary CC=3 out:4
suspend_timeout CC=4 out:3
fixos.anonymizer [2 funcs]
anonymize CC=5 out:14
get_sensitive_values CC=4 out:3
fixos.cli._cleanup_flatpak [2 funcs]
_cleanup_flatpak_detailed CC=12 out:111
_display_flatpak_status CC=9 out:65
fixos.cli._cleanup_home [3 funcs]
_display_home_items CC=7 out:17
_handle_home_analysis CC=11 out:49
_resolve_home_selection CC=4 out:8
fixos.cli._cleanup_snap [6 funcs]
_handle_snap_management CC=9 out:21
_snap_display_packages CC=3 out:12
_snap_fetch_packages CC=6 out:8
_snap_remove_packages CC=4 out:10
_snap_select_packages CC=5 out:9
_snap_warn_dangerous CC=5 out:5
fixos.cli._cleanup_system [12 funcs]
_cleanup_full_system CC=8 out:12
_dispatch_system_selection CC=6 out:6
_display_full_system_menu CC=12 out:79
_execute_full_cleanup CC=8 out:37
_filter_by_age CC=6 out:8
_filter_by_prefix_category CC=6 out:12
_filter_by_prefix_top CC=3 out:7
_filter_by_prefix_type CC=10 out:14
_filter_large CC=4 out:5
_handle_interactive_select CC=14 out:52
fixos.cli._cleanup_utils [3 funcs]
_build_dep_types CC=4 out:2
_format_bytes CC=1 out:1
_parse_numeric_range_set CC=5 out:10
fixos.cli.ask_cmd [9 funcs]
_build_output_dict CC=8 out:0
_execute_heuristic_command CC=9 out:12
_execute_with_llm CC=8 out:21
_format_command CC=5 out:7
_handle_natural_command CC=3 out:9
_match_heuristic_command CC=7 out:3
_object_based_match CC=4 out:1
_validate_result_with_llm CC=14 out:16
ask CC=1 out:4
fixos.cli.cleanup_cmd [4 funcs]
_display_service_group CC=8 out:15
_display_unsafe_services CC=4 out:10
_execute_safe_cleanup CC=3 out:8
_run_interactive_cleanup CC=9 out:8
fixos.cli.config_cmd [7 funcs]
_display_provider_menu CC=5 out:21
_env_path CC=3 out:5
_prompt_provider_choice CC=5 out:10
_save_provider_choice CC=6 out:22
_set_env_key CC=5 out:10
config_model CC=8 out:38
config_provider CC=6 out:9
fixos.cli.features_cmd [2 funcs]
_interactive_profile_select CC=11 out:22
features_audit CC=4 out:18
fixos.cli.fix_cmd [2 funcs]
_collect_diagnostics CC=7 out:11
_run_agent_session CC=2 out:2
fixos.cli.main [3 funcs]
_print_welcome CC=6 out:61
cli CC=3 out:5
main CC=1 out:1
fixos.cli.scan_cmd [2 funcs]
_display_disk_fix_mode CC=6 out:11
_run_disk_analysis CC=12 out:20
fixos.cli.token_cmd [1 funcs]
token_set CC=7 out:29
fixos.config [3 funcs]
load CC=14 out:26
_load_env_files CC=13 out:14
detect_provider_from_key CC=3 out:1
fixos.config_interactive [5 funcs]
_get_api_key CC=4 out:9
_get_user_choice CC=6 out:7
_print_provider_menu CC=9 out:19
_save_to_env CC=8 out:13
interactive_provider_setup CC=5 out:10
fixos.diagnostics.checks._shared [2 funcs]
_cmd CC=7 out:3
_psutil_required CC=1 out:0
fixos.diagnostics.checks.audio [1 funcs]
diagnose_audio CC=1 out:25
fixos.diagnostics.checks.file_analysis [6 funcs]
_find_archive_candidates CC=1 out:6
_find_downloads_cleanup CC=1 out:3
_find_duplicates CC=1 out:4
_find_large_files CC=1 out:5
_find_media_files CC=1 out:10
diagnose_files CC=4 out:14
fixos.diagnostics.checks.hardware [1 funcs]
diagnose_hardware CC=1 out:18
fixos.diagnostics.checks.packages [6 funcs]
_diagnose_desktop_apps CC=1 out:4
_diagnose_duplicates CC=1 out:1
_diagnose_flatpak CC=1 out:5
_diagnose_rpm_dnf CC=1 out:16
_diagnose_snap CC=1 out:3
diagnose_packages CC=4 out:18
fixos.diagnostics.checks.resources [1 funcs]
diagnose_resources CC=13 out:49
fixos.diagnostics.checks.security [1 funcs]
diagnose_security CC=4 out:36
fixos.diagnostics.checks.storage_optimization [6 funcs]
_diagnose_btrfs CC=1 out:8
_diagnose_filesystem_health CC=1 out:5
_diagnose_lvm CC=1 out:3
_diagnose_partitions CC=1 out:7
_diagnose_swap_optimization CC=1 out:5
diagnose_storage CC=4 out:18
fixos.diagnostics.checks.system_core [3 funcs]
_collect_os_info CC=3 out:9
_collect_platform_details CC=3 out:14
diagnose_system CC=11 out:23
fixos.diagnostics.checks.thumbnails [1 funcs]
diagnose_thumbnails CC=1 out:21
fixos.diagnostics.storage_analyzer [1 funcs]
_format_size CC=1 out:1
fixos.llm_shell [3 funcs]
_handle_user_turn CC=8 out:16
execute_command CC=10 out:14
run_llm_shell CC=8 out:34
fixos.orchestrator.orchestrator [4 funcs]
_default_confirm CC=3 out:6
_default_progress CC=8 out:8
_evaluate_and_rediagnose CC=10 out:23
load_from_diagnostics CC=5 out:26
fixos.platform_utils [11 funcs]
_cmd_exists CC=1 out:1
cancel_signal_timeout CC=2 out:1
elevate_cmd CC=3 out:2
get_os_info CC=5 out:8
get_package_manager CC=8 out:3
install_package_cmd CC=2 out:2
is_dangerous CC=3 out:1
is_interactive_blocker CC=3 out:1
needs_elevation CC=5 out:7
run_command CC=5 out:4
fixos.plugins.builtin.audio [4 funcs]
_check_alsa CC=6 out:5
_check_pipewire CC=2 out:2
_check_sof CC=2 out:2
_check_wireplumber CC=2 out:2
fixos.plugins.builtin.disk [3 funcs]
_check_inodes CC=6 out:8
_check_readonly CC=5 out:5
_check_usage CC=6 out:8
fixos.plugins.builtin.hardware [5 funcs]
_check_battery CC=8 out:16
_check_camera CC=3 out:3
_check_dmi CC=3 out:4
_check_gpu CC=3 out:2
_check_touchpad CC=2 out:2
fixos.plugins.builtin.resources [3 funcs]
_check_cpu CC=5 out:5
_check_top_processes CC=2 out:1
_check_zombies CC=3 out:5
fixos.plugins.builtin.security [5 funcs]
_check_fail2ban CC=4 out:4
_check_firewall CC=8 out:8
_check_open_ports CC=7 out:8
_check_selinux CC=3 out:4
_check_ssh CC=8 out:8
fixos.plugins.builtin.thumbnails [4 funcs]
_check_cache CC=5 out:11
_check_ffmpegthumbnailer CC=2 out:3
_check_gstreamer CC=4 out:4
_check_totem CC=2 out:3
fixos.system_checks [8 funcs]
get_cpu_info CC=2 out:8
get_disk_info CC=3 out:5
get_fedora_specific CC=1 out:15
get_full_diagnostics CC=1 out:16
get_memory_info CC=1 out:7
get_network_info CC=4 out:3
get_top_processes CC=3 out:4
run_cmd CC=6 out:3
fixos.utils.anonymizer [9 funcs]
_apply_regex_replacements CC=3 out:4
_dict_to_markdown CC=9 out:20
_format_diagnostics_markdown CC=3 out:5
_format_key_title CC=1 out:3
_get_sensitive CC=4 out:3
_render_dict_list_value CC=6 out:7
anonymize CC=8 out:21
deanonymize CC=5 out:8
display_anonymized_preview CC=5 out:18
fixos.utils.terminal [8 funcs]
_get_severity_style CC=3 out:1
_is_divider_line CC=1 out:2
_print_output_box CC=2 out:8
print_cmd_block CC=4 out:6
print_problem_header CC=3 out:10
print_stderr_box CC=1 out:1
print_stdout_box CC=1 out:1
render_md CC=9 out:30
fixos.utils.web_search [9 funcs]
_http_get CC=2 out:4
format_results_for_llm CC=3 out:5
search_all CC=5 out:15
search_arch_wiki CC=9 out:11
search_ask_fedora CC=4 out:11
search_ddg CC=8 out:15
search_fedora_bugzilla CC=4 out:8
search_github_issues CC=4 out:12
search_serpapi CC=5 out:9
scripts.pyqual-calibrate [4 funcs]
calibrate CC=14 out:26
extract_current_metrics CC=4 out:9
main CC=6 out:12
parse_pyqual_yaml CC=1 out:1
EDGES:
fixos.platform_utils.elevate_cmd → fixos.platform_utils.needs_elevation
fixos.platform_utils.get_package_manager → fixos.platform_utils._cmd_exists
fixos.platform_utils.install_package_cmd → fixos.platform_utils.get_package_manager
fixos.config_interactive.interactive_provider_setup → fixos.config_interactive._print_provider_menu
fixos.config_interactive.interactive_provider_setup → fixos.config_interactive._get_user_choice
fixos.config_interactive.interactive_provider_setup → fixos.config_interactive._get_api_key
fixos.config_interactive.interactive_provider_setup → fixos.config_interactive._save_to_env
fixos.system_checks.get_fedora_specific → fixos.system_checks.run_cmd
fixos.system_checks.get_full_diagnostics → fixos.system_checks.get_cpu_info
fixos.system_checks.get_full_diagnostics → fixos.system_checks.get_memory_info
fixos.system_checks.get_full_diagnostics → fixos.system_checks.get_disk_info
fixos.system_checks.get_full_diagnostics → fixos.system_checks.get_network_info
fixos.system_checks.get_full_diagnostics → fixos.system_checks.get_top_processes
docker.validate-scenario.validate → docker.validate-scenario._get_nested
docker.validate-scenario.main → docker.validate-scenario.validate
fixos.diagnostics.checks.audio.diagnose_audio → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.resources.diagnose_resources → fixos.diagnostics.checks._shared._psutil_required
fixos.diagnostics.checks.system_core._collect_os_info → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.system_core._collect_platform_details → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.system_core.diagnose_system → fixos.diagnostics.checks.system_core._collect_os_info
fixos.diagnostics.checks.system_core.diagnose_system → fixos.diagnostics.checks._shared._psutil_required
fixos.diagnostics.checks.hardware.diagnose_hardware → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.security.diagnose_security → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.thumbnails.diagnose_thumbnails → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.file_analysis.diagnose_files → fixos.diagnostics.checks.file_analysis._find_large_files
fixos.diagnostics.checks.file_analysis.diagnose_files → fixos.diagnostics.checks.file_analysis._find_duplicates
fixos.diagnostics.checks.file_analysis.diagnose_files → fixos.diagnostics.checks.file_analysis._find_media_files
fixos.diagnostics.checks.file_analysis.diagnose_files → fixos.diagnostics.checks.file_analysis._find_archive_candidates
fixos.diagnostics.checks.file_analysis.diagnose_files → fixos.diagnostics.checks.file_analysis._find_downloads_cleanup
fixos.diagnostics.checks.file_analysis._find_large_files → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.file_analysis._find_duplicates → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.file_analysis._find_media_files → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.file_analysis._find_archive_candidates → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.file_analysis._find_downloads_cleanup → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.storage_optimization.diagnose_storage → fixos.diagnostics.checks.storage_optimization._diagnose_partitions
fixos.diagnostics.checks.storage_optimization.diagnose_storage → fixos.diagnostics.checks.storage_optimization._diagnose_btrfs
fixos.diagnostics.checks.storage_optimization.diagnose_storage → fixos.diagnostics.checks.storage_optimization._diagnose_lvm
fixos.diagnostics.checks.storage_optimization.diagnose_storage → fixos.diagnostics.checks.storage_optimization._diagnose_swap_optimization
fixos.diagnostics.checks.storage_optimization.diagnose_storage → fixos.diagnostics.checks.storage_optimization._diagnose_filesystem_health
fixos.diagnostics.checks.storage_optimization._diagnose_partitions → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.storage_optimization._diagnose_btrfs → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.storage_optimization._diagnose_lvm → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.storage_optimization._diagnose_swap_optimization → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.storage_optimization._diagnose_filesystem_health → fixos.diagnostics.checks._shared._cmd
fixos.diagnostics.checks.packages.diagnose_packages → fixos.diagnostics.checks.packages._diagnose_rpm_dnf
fixos.diagnostics.checks.packages.diagnose_packages → fixos.diagnostics.checks.packages._diagnose_flatpak
fixos.diagnostics.checks.packages.diagnose_packages → fixos.diagnostics.checks.packages._diagnose_snap
fixos.diagnostics.checks.packages.diagnose_packages → fixos.diagnostics.checks.packages._diagnose_duplicates
fixos.diagnostics.checks.packages.diagnose_packages → fixos.diagnostics.checks.packages._diagnose_desktop_apps
fixos.diagnostics.checks.packages._diagnose_rpm_dnf → fixos.diagnostics.checks._shared._cmd
Scenarios as contract signatures — what the system guarantees.
CLI Command Tests
Auto-generated from Python Tests
AI-powered Linux/Windows diagnostics and repair – audio, hardware, system issues