ISPrefDiag
Diagnostic CLI for MicroStrategy / Strategy Intelligence Server (CastorServer / MSTRSvr) memory and performance incidents.
Status
v0.1.1 (Beta). All three subcommands (analyze, validate, tui) are functional; cross-platform CI gates the parser layer on Ubuntu, macOS, and Windows.
Install
Build a wheel and install it as an isolated tool:
uv build
uv tool install ./dist/ispref-*.whl
uv downloads a compatible Python 3.11+ automatically if your system Python is older. Verify with:
ispref --version
ispref --help
Alternative: pipx
pipx install ./dist/ispref-*.whl
pipx does not auto-download Python; your system Python must already be >= 3.11.
Editable install (development only)
uv tool install -e .
Use this if you are hacking on ISPrefDiag itself.
Quickstart
After installing, run the three commands below against the in-repo fixture pair to confirm everything works end-to-end:
ispref --help
ispref validate tests/fixtures/phase3/working_set_exceeds_governor/DSSErrors.log \
tests/fixtures/phase3/working_set_exceeds_governor/DSSPerformanceMonitor.csv
ispref analyze tests/fixtures/phase3/working_set_exceeds_governor/DSSErrors.log \
tests/fixtures/phase3/working_set_exceeds_governor/DSSPerformanceMonitor.csv \
--out report.md
The validate command exits non-zero if the log and CSV do not share an overlapping time window (strict -- no fuzzy match fallback). The analyze command produces a Markdown report with inventory, terminating event, memory composition, and at least one cited finding.
Subcommands
analyze-- Run full diagnostic pipeline on a log + CSV pair; emit a Markdown report with cited findings. Default backend:NullBackend(no LLM). Pass--llm anthropicor--llm ollamato add an LLM-augmented narrative section.validate-- Confirm a log + CSV pair share an overlapping time window (tz-aware UTC). Use this to sanity-check artifact pairs beforeanalyze.tui-- Launch the Textual TUI for interactive review (3 screens: F1 MCM events, F2 Counters, F3 Findings). Forces--llm none(no LLM in TUI mode).
Development
uv sync --group dev
uv run pytest
uv run ruff check src/ tests/
uv run ruff format --check src/ tests/
Configuration
ISPrefDiag reads configuration with the following precedence (highest wins):
- CLI flags (
--llm none|anthropic|ollama) - Environment variables (
ISPREF_LLM__MODE=...,ANTHROPIC_API_KEY=...) - Project
pyproject.toml [tool.ispref](API keys are rejected here -- env vars only) - User
~/.config/ispref/config.toml(runispref --init-configto write a template) - Built-in defaults (LLM mode =
none)
Troubleshooting
ispref not on PATH after install
If which ispref fails after uv tool install, ensure ~/.local/bin is on your PATH. Run uv tool update-shell to add it automatically.
pipx install fails with "Python 3.11 required"
pipx uses your system Python; it does not auto-download newer versions. Install Python 3.11+ first (e.g. uv python install 3.11 && uv python pin 3.11) or use the uv tool install path above.
uv tool install hangs or fails with proxy / network errors
uv tries to download a compatible Python on first install. Behind a corporate proxy that blocks python-build-standalone artifacts, pass --python /path/to/python3.12 to skip the download, or set UV_NO_MANAGED_PYTHON=1.
--llm anthropic prompts for egress confirmation
The first run with --llm anthropic in a session requires explicit confirmation that ISPrefDiag may make outbound HTTPS calls to api.anthropic.com. Pass --yes to bypass (CI scripts) or set ISPREF_LLM_CONFIRM_EGRESS=yes in your environment.
License
See LICENSE.
Metadata
Release files for ispref 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ispref-0.1.1.tar.gz | 93.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ispref-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 221.2 kB
Release files / ispref-0.1.1.tar.gz
| Download URL | ispref-0.1.1.tar.gz |
|---|---|
| Size | 93.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d23d778453319aef2c25ac5a54874931c61a3c4a8849119f3a99ea45cb240f02
|
|
BLAKE2b-256 checksum How to use checksums |
3f857c072c4327ad296cedf9042fe5ea7657f23532aacb6446090bf08fcd30d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.4 {"installer":{"name":"uv","version":"0.11.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / ispref-0.1.1-py3-none-any.whl
| Download URL | ispref-0.1.1-py3-none-any.whl |
|---|---|
| Size | 127.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6b71613710180fda9c79fc3d27b4289fd3e8d6b922bebf875e7f21f73c99a55f
|
|
BLAKE2b-256 checksum How to use checksums |
21896938f2dd2918472ba4357d7412944b6c75a36903590771d0525ce71f9c3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.4 {"installer":{"name":"uv","version":"0.11.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|