Files
tai/CHANGELOG.md
zphinx 3be14f8f6f
All checks were successful
CI / test (push) Successful in 27s
commit all of this
2026-05-14 20:00:38 +02:00

91 lines
5.0 KiB
Markdown

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
______________________________________________________________________
## [Unreleased]
### Added
- Unified persistent run history in SQLite:
- new `src/tai/history_store.py` for host-scoped JSON run records
- `--history-db` and `--history/--no-history` options on `tai run`
- prior host history auto-loaded for analysis/follow-up prompts
- analyzed runs auto-indexed into history DB
- External database targets for history and runbook options:
- `--history-db` now supports SQLite path/URL and PostgreSQL DSN
- `--runbooks`/`--store` now support remote ChromaDB URLs
- External DB authentication options:
- history DB: `--history-db-user`, `--history-db-password`, `--env-file`
- runbook store: `--runbooks-user`/`--runbooks-password` and `--store-user`/`--store-password`
- dotenv credential keys: `TAI_HISTORY_DB_USER`, `TAI_HISTORY_DB_PASSWORD`, `TAI_RUNBOOK_STORE_USER`, `TAI_RUNBOOK_STORE_PASSWORD`
- Remote runbook/playbook source ingestion:
- `tai runbooks sync --path` now supports `ssh://` directories
- `tai runbooks sync --path` now supports HTTP/HTTPS webroots with Markdown links
- `tai runbooks add` now supports `ssh://` and HTTP/HTTPS Markdown files
- `--output-file` option on `tai run` to persist final AI analysis output as Markdown
- `--output-format markdown|json` for `--output-file` exports
- JSON export schema now includes host-specific run metadata (`generated_at`, collection stats, token usage)
- New SQLite run history database (`--history-db`) now stores per-run JSON payloads and auto-loads prior host history for analysis context
- Planner enhancements for broader service detection:
- generic service candidate extraction from free text
- package presence probes in plans (`rpm -q` and `dpkg-query -W`)
- SSH read-only allowlist expanded to permit package presence commands (`rpm`, `dpkg-query`)
- History DB tests in `tests/test_history_store.py`
- CLI test coverage for analysis output file writing (`tests/test_cli.py`)
- CLI test coverage for JSON export and ANSI stripping in written output (`tests/test_cli.py`)
### Changed
- History reads/writes are now unified on SQLite DB in CLI workflows (`history`, interactive `/history`, analysis context injection).
- Documentation alignment updates in README and ROADMAP to reflect implemented history DB and package-presence capabilities.
- Package version metadata alignment: `src/tai/__init__.py` now matches project version `0.4.0`.
______________________________________________________________________
## [0.4.0] - 2026-05-06
### Added
- `runbooks/` corpus with service troubleshooting guides: `ssh`, `nginx`, `postgres`, `disk`, `kernel`, `docker`, `sssd`, `xorg`, `wayland`, `x2go`, `selinux`, `apparmor`
- Runbook knowledge store module `src/tai/runbook_store.py` (persistent ChromaDB-backed index and query)
- Chroma telemetry no-op client `src/tai/chroma_telemetry.py` to suppress noisy local telemetry errors
- `tai runbooks` command group with:
- `sync` for indexing all Markdown runbooks
- `list` for listing indexed metadata
- `add` for indexing a single runbook file
- `--runbooks` option on `tai run` to enable Tier 2 runbook retrieval
- Initial analysis RAG path using retrieved diagnostic chunks (`build_analysis_message_with_chunks`)
- Follow-up RAG path updates with tighter `top_k` and runbook context injection
- AI runtime controls:
- `--ai-timeout-seconds`
- `--ai-max-tokens`
- Non-streaming AI completion path for improved local backend reliability
- Service/subsystem presence probes in collection plans:
- unit-file checks
- expected binary path checks
- status/journal/config probes for recognized services including `sssd`
- Prompt instruction for "component absent or not installed" interpretation when presence signals are missing
- Runbook store unit tests in `tests/test_runbook_store.py`
- CLI tests updated for `tai run` subcommand and non-streaming completion mocks
- README refreshed with current CLI, architecture layout, RAG/runbook workflow, and usage examples
- `docs/ARCHITECTURE.md` with end-to-end flow, module responsibilities, safety boundaries, and fallback behavior
### Removed
- `.github/workflows/ci.yml` — GitHub Actions workflow removed; CI is now Gitea-only
### Decided
- Implementation language: **Python**
- Distribution strategy: single distributable binary via **Nuitka** (PyInstaller as fallback)
- SSH authentication: **keypair only** (ed25519/RSA); auto-accept new hosts; hard reject on host key change with MITM warning
- SSH bastion support: `--jump-host` flag using SSH native ProxyJump
- SSH config behavior: use `~/.ssh/config` by default; allow override via `--ignore-ssh-config`
- Interface: **interactive REPL** for v0.1; `textual`-based TUI (split-pane) for v0.2+
- RAG Tier 1 strategy: semantic diagnostic chunk retrieval with local embeddings
- RAG Tier 2 strategy: Markdown runbooks persisted in embedded ChromaDB