Skip to content

Release 0.5.0: version bump#17

Merged
bburda merged 5 commits into
mainfrom
release/0.5.0
Jun 11, 2026
Merged

Release 0.5.0: version bump#17
bburda merged 5 commits into
mainfrom
release/0.5.0

Conversation

@bburda

@bburda bburda commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Summary

Adopt the 0.5.0 generated ros2_medkit_client and bring the MCP surface in line with the 0.5.0 gateway.

  • Pin the client to the py-v0.5.0 release wheel and relock.
  • Port SovdClient to the 0.5.0 typed-DTO client (lowercase entity types, body-less update PUTs, multipart file uploads).
  • Expose the gateway query filters as MCP tools and client methods: faults status (per-entity) plus include_muted/include_clusters (global only), logs severity/context, updates origin/target-version. The 0.5.0 spec omits these query parameters even though the gateway reads them ([BUG] Generated OpenAPI spec omits all query parameters ros2_medkit#416), so filtered calls go through raw httpx until the client is regenerated from the fixed spec.
  • Void operations derive success from the HTTP status (the generated parsers return None for undocumented statuses, which previously read as a false success on destructive operations). Raw httpx helpers surface the SOVD error envelope.

Type

  • Bug fix
  • New feature or tests
  • Breaking change

The 0.5.0 client surface changed; the update tools no longer take a config argument (the endpoints are body-less).


Testing

  • poetry run python run_tests.py - 168 pass.
  • ruff check / ruff format --check / mypy - clean.

Bump the package version to 0.5.0 in pyproject.toml and __init__.py as
part of the coordinated 0.5.0 release. The ros2-medkit-client dependency
pin is unchanged (the 0.5.0 client is published separately).
Copilot AI review requested due to automatic review settings June 8, 2026 14:34

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the package’s declared version to align ros2_medkit_mcp with the coordinated 0.5.0 release, ensuring both the runtime __version__ and Poetry metadata remain consistent.

Changes:

  • Bumped __version__ in src/ros2_medkit_mcp/__init__.py to 0.5.0.
  • Bumped Poetry package version in pyproject.toml to 0.5.0.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
src/ros2_medkit_mcp/init.py Updates runtime __version__ constant to 0.5.0.
pyproject.toml Updates Poetry package version metadata to 0.5.0.

bburda added 2 commits June 11, 2026 15:49
Pin the generated client to the 0.5.0 release wheel and adapt the SovdClient
wrapper to the regenerated typed-DTO surface:

- Bump the client wheel URL to py-v0.5.0 and relock.
- get_entity: entity type values are now lowercase (area/component/app/function)
  to match the 0.5.0 list-item type enum.
- prepare/execute/automate_update: the 0.5.0 endpoints are body-less PUTs, so
  stop sending a request body.
- upload_script / upload_bulk_data: issue the multipart upload directly with a
  "file" part (the field both gateway upload handlers require). The generated
  multipart body model serializes properties as text/plain via str(), which
  corrupts binary payloads.

Update test fixtures for the 0.5.0 response models, which add required fields:
href on entity list items, multishot/persistent on triggers,
asynchronous_execution/proximity_proof_required on operations,
creation_date/mimetype on bulk-data descriptors, and the x-medkit envelope on
update status.
The list tools returned everything; an agent had no way to ask the gateway for a
subset. Add the gateway's query filters to the fault/log/update list tools and
client methods:
- faults: status, include_muted, include_clusters
- logs: severity, context
- updates: origin, target-version

The 0.5.0 generated client cannot pass query parameters - the spec omits them
even though the gateway reads them (selfpatch/ros2_medkit#416) - so filtered
calls go through raw httpx until the client is regenerated from the fixed spec.
Unfiltered calls keep using the generated client. Tests assert the filters reach
the gateway as query params.
Copilot AI review requested due to automatic review settings June 11, 2026 16:16

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 10 changed files in this pull request and generated 1 comment.

Comment thread pyproject.toml
Comment thread src/ros2_medkit_mcp/client.py Outdated
Comment thread pyproject.toml
Comment thread src/ros2_medkit_mcp/client.py Outdated
bburda added 2 commits June 11, 2026 19:20
- Update actions (prepare/execute/automate) are body-less PUTs in 0.5.0; drop
  the dead `config` argument that the tools advertised but the client silently
  ignored, so an agent can no longer believe a config it passed was applied.
- Void operations derive success from the HTTP status via the detailed client
  variant. The generated parsers return None for undocumented statuses
  (401/403/429/503/...), and the previous "None means success" path reported a
  false success on those - dangerous on destructive ops (fault clear, config
  delete, software update). Now only 2xx is success; everything else raises the
  SOVD error envelope. clear_fault, clear_all_faults, cancel_execution,
  delete_configuration and delete_all_configurations go through this path.
- Raw httpx helpers (filtered lists, uploads) surface the SOVD error envelope
  ([error_code] message) instead of a bare HTTP status.
- The per-entity faults_list tool drops include_muted/include_clusters: the
  gateway honors them only on the global /faults route, so advertising them
  per-entity was a silent no-op. They remain on the all-faults tool.
Add uv (uv pip install -e .) and uvx (uvx --from git+...) install and run paths
alongside Poetry, including a uvx-based Claude Desktop config that needs no local
checkout. The project uses the Poetry build backend, so uv installs via
`uv pip install` rather than `uv sync`.
Copilot AI review requested due to automatic review settings June 11, 2026 17:45

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 11 changed files in this pull request and generated 2 comments.

Comment thread src/ros2_medkit_mcp/client.py
Comment thread src/ros2_medkit_mcp/models.py
@mfaferek93 mfaferek93 self-requested a review June 11, 2026 17:58
@bburda bburda merged commit 6dc365f into main Jun 11, 2026
4 checks passed
@bburda bburda deleted the release/0.5.0 branch June 11, 2026 18:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants