Skip to content

v0.0.52

Choose a tag to compare

@github-actions github-actions released this 18 Jun 14:43
v0.0.52
87f9650

Pain001 Release v0.0.52

Release Date: 2026-06-18
Tag: v0.0.52
Python: 3.10+
Status: Stable

Executive Summary

A companion-packages release. The MCP and LSP servers added in
v0.0.51 still ship in-tree (so pip install "pain001[mcp]" and pip install "pain001[lsp]" keep working), and they now ship alongside two
new standalone sibling packages of the same name. Users who only
want the agent surface or the editor surface can install just that
piece without pulling in the full core.

Versioning is aligned across the three packages: pain001,
pain001-mcp, and pain001-lsp all release under matching numbers.

What's in v0.0.52 at a glance

  • pain001-mcp companion package — a FastMCP Model Context
    Protocol server (pip install pain001-mcp, run pain001-mcp).
    Eleven agent tools covering schema discovery, validation, generation
    (sync + async + from-file), supported-format discovery, camt.053 and
    pain.002 parsing, plus parity tools inspect_template and
    validate_payment_scheme, an MCP resource
    pain001://schema/{message_type}, and a build_payment_batch
    prompt. Ships a multi-stage Dockerfile and a 100% line+branch+docstring
    coverage gate.
  • pain001-lsp companion package — a pygls Language Server
    (pip install pain001-lsp, run pain001-lsp). Diagnostics,
    completion, hover, and a multi-record "add missing required fields"
    code action; both JSON-record and CSV modes (the CSV engine
    is the in-tree pain001.lsp.diagnostics). Supports both startup
    (initializationOptions.messageType) and live
    (workspace/didChangeConfiguration) message-type overrides.
  • Console script rename — the in-tree entry points are renamed to
    pain001-mcp-builtin and pain001-lsp-builtin so the canonical
    command names (pain001-mcp, pain001-lsp) belong to the standalone
    packages when both are installed. Python import paths
    (pain001.mcp.server, pain001.lsp.server,
    pain001.lsp.diagnostics) are unchanged.

Bug Fixes

This release also clears every then-open code-scanning alert on the
repo (12 total, including one HIGH path-injection report and several
notes):

  • Refactored pain001/api/_resolve_generation_paths into two named
    sanitiser helpers (_gate_output_dir using os.path.realpath +
    os.path.commonpath, _sanitise_message_type doing an explicit
    allow-list check). Both helpers are registered with the existing
    CodeQL pain001-security model so the taint tracker treats their
    return values as sanitised.
  • Restored eight def test_streaming_*(self) methods to
    class TestStreamingLoaders in tests/test_streaming_loaders.py.
    They had been mis-indented inside the body of a top-level test
    function after a prior refactor and were silently skipped (now they
    run; collection grew from 6 to 14 tests in that file).
  • Removed bare ... # pragma: no cover ellipsis-as-statement bodies
    from the JobStore Protocol stubs in pain001/api/job_store.py;
    the docstring is the sole body content (still valid for Protocols).

Migration Notes

The two standalone packages are independent installs, not
replacements:

Want Install Run
Core library only pip install pain001 pain001 ...
Core + in-tree MCP pip install "pain001[mcp]" pain001-mcp-builtin
Core + in-tree LSP pip install "pain001[lsp]" pain001-lsp-builtin
Standalone MCP pip install pain001-mcp pain001-mcp
Standalone LSP pip install pain001-lsp pain001-lsp

Both pain001-mcp and pain001-lsp depend on pain001 >= 0.0.52.

Upgrade

pip install --upgrade pain001
# Plus, optionally:
pip install pain001-mcp pain001-lsp