Release 0.5.0: version bump#17
Merged
Merged
Conversation
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).
There was a problem hiding this comment.
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__insrc/ros2_medkit_mcp/__init__.pyto0.5.0. - Bumped Poetry package version in
pyproject.tomlto0.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. |
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.
mfaferek93
reviewed
Jun 11, 2026
- 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`.
mfaferek93
approved these changes
Jun 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adopt the 0.5.0 generated
ros2_medkit_clientand bring the MCP surface in line with the 0.5.0 gateway.py-v0.5.0release wheel and relock.SovdClientto the 0.5.0 typed-DTO client (lowercase entity types, body-less update PUTs, multipartfileuploads).status(per-entity) plusinclude_muted/include_clusters(global only), logsseverity/context, updatesorigin/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.Nonefor undocumented statuses, which previously read as a false success on destructive operations). Raw httpx helpers surface the SOVD error envelope.Type
The 0.5.0 client surface changed; the update tools no longer take a
configargument (the endpoints are body-less).Testing
poetry run python run_tests.py- 168 pass.ruff check/ruff format --check/mypy- clean.