diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..1a99268 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,58 @@ +# Changelog + +All notable changes to this project are documented here. +The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and +this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.2.0] — 2026-05-20 + +### Added +- **Docker support.** `Dockerfile` (python:3.12-slim, non-root user, Streamlit + healthcheck) and `docker-compose.yml` for one-command Linux deploys. + Configurable `HOST_PORT`, optional CA-bundle volume for self-signed GUIs. +- **Bash launcher.** `run.sh` for native (non-Docker) Linux runs. Creates a + `.venv` on first use and launches either the Streamlit UI (default) or the + REPL. Honours `HOST` and `PORT` env vars. +- **Cross-platform line endings.** `.gitattributes` pins LF on shell scripts, + YAML, Python and Markdown so checkouts on Linux from a Windows host don't + break the launcher with `^M` characters. +- **`.dockerignore`** to keep the image lean. + +### Changed +- **README rewritten** with Docker + Linux quick starts in front of the + Windows / PowerShell path. +- `.env.example` now flags v3 as the current API and documents the GUI port + conventions (443 for CNSA / containerised, 46443 for native installs) plus + the Swagger UI location. + +## [0.1.0] — 2026-05-20 + +Initial release. + +### Added +- **Agentic chat over the GPFS REST API v3.** Anthropic Claude with native + tool-use; a single `gpfs_request` tool whose verb enum is narrowed by env + config so disallowed methods can't even be requested. +- **Two front-ends.** Rich-styled terminal REPL (`python -m gpfs_agent`) and a + pure-Python Streamlit web UI (`gpfs_agent/web.py`). Shared + Agent/Dispatcher/Client stack. +- **Env-driven guardrails.** + - Read-only by default; `GPFS_ALLOW_WRITES` enables `POST/PUT`; + `GPFS_ALLOW_DESTRUCTIVE` enables `DELETE`. + - `GPFS_CONFIRM_MUTATIONS` gates each mutating call at the human. + - Optional `GPFS_PATH_ALLOW` / `GPFS_PATH_DENY` regex on the request path. + - Free-text `GPFS_INSTRUCTIONS` / `GPFS_INSTRUCTIONS_FILE` appended to the + system prompt for site-specific rules. +- **Curated `/scalemgmt/v3` endpoint reference** baked into the system prompt + (`gpfs_agent/endpoints.py`), compiled from IBM Storage Scale 5.2.3 / 6.0.0 + docs. Covers cluster, nodes, NSDs, filesystems, filesets, snapshots, + quotas, policies, jobs and perfmon — plus async-job conventions and the + `:link` / `:unlink` / `:batchDelete` custom-verb syntax. +- **TLS hardening knobs.** `GPFS_VERIFY_TLS` and `GPFS_CA_BUNDLE` for + self-signed lab gear. + +[Unreleased]: https://git.discworld.casa/laurence/gpfsagent/compare/v0.2.0...HEAD +[0.2.0]: https://git.discworld.casa/laurence/gpfsagent/compare/v0.1.0...v0.2.0 +[0.1.0]: https://git.discworld.casa/laurence/gpfsagent/releases/tag/v0.1.0