Repository navigation
feat(aws-healthomics-mcp-server): support outputUriPrefixMode on StartAHORun and GetAHORun - #4996
Merged
markjschreiber merged 2 commits intoNov 3, 2026
Conversation
…tAHORun and GetAHORun Add an optional output_uri_prefix_mode to start_run, accepting SERVICE_DEFINED or NONE_WITH_OVERWRITE. It is validated locally against OUTPUT_URI_PREFIX_MODES and forwarded as outputUriPrefixMode only when provided, so omitting it keeps the HealthOmics API default (SERVICE_DEFINED) rather than having the server pick one. The effective value is echoed in the start_run response, and GetAHORun now returns outputUriPrefixMode when the service includes it. The parameter description spells out the overwrite risk: with NONE_WITH_OVERWRITE outputs land directly under output_uri with no run ID folder, so a second run into the same URI silently replaces same-named files. Logs still go under logs/<runId>/. The value is normalized with isinstance like log_level and tags, so an unresolved pydantic Field default reaching the function outside the MCP framework is treated as omitted instead of being rejected or forwarded. Bump boto3/botocore to >=1.43.123, the first release whose omics model includes outputUriPrefixMode on StartRun and GetRun (1.43.122 has neither). uv.lock updated with `uv lock --upgrade-package boto3 --upgrade-package botocore`, which changes only those two packages. StartRunBatch is out of scope: the 1.43.123 model has no outputUriPrefixMode on DefaultRunSetting. The package version is left for the release bot, and the CHANGELOG entry goes under Unreleased, matching the session-policy change.
ParulGuptaCSE
requested review from
a team,
MaisiLi,
WIIASD,
a-li and
alxawan
as code owners
November 2, 2026 21:58
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4996 +/- ##
==========================================
- Coverage 93.79% 93.79% -0.01%
==========================================
Files 1080 1080
Lines 94716 94725 +9
Branches 15443 15445 +2
==========================================
+ Hits 88837 88845 +8
Misses 3505 3505
- Partials 2374 2375 +1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
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
Changes
Adds support for the HealthOmics
outputUriPrefixModeStartRun option, which lets a run write its outputs directly under the customer'soutputUriinstead of under a service-created<runId>/out/prefix.StartAHORun: new optionaloutput_uri_prefix_modeparameter (SERVICE_DEFINEDorNONE_WITH_OVERWRITE).NONE_WITH_OVERWRITE, a run into a URI that already holds outputs overwrites same-named files without warning.outputUriPrefixMode(SERVICE_DEFINEDwhen the parameter is omitted).GetAHORun: returnsoutputUriPrefixModewhen the service includes it, so an agent re-running a run can see and carry over the original layout.StartAHORunBatch: description now states that run batches do not support this option and points toStartAHORuninstead.boto3andbotocoreminimums raised to1.43.123, the first release whoseomicsmodel includesoutputUriPrefixMode(StartRunRequest and GetRunResponse).uv.lockupdated for those two packages only.StartAHORunentry and an Unreleased CHANGELOG entry.User experience
Before: an agent using the MCP server could only start runs with the default layout:
It also could not tell from
GetAHORunwhether a run had opted into a different layout, so a re-run through the agent silently reverted to the default.After: an agent can start a run that writes directly under the requested URI:
GetAHORunreports the mode, so re-runs can preserve it. Omitting the parameter keeps today's behavior.Testing
Fielddefault), invalid values rejected without calling the API, the forwarded request validated against botocore's StartRun input shape, the description naming the overwrite risk, andGetAHORunreturning or omitting the field.outputUriPrefixModewith an enum matching the server constant, GetRun output shape includes it.uv run --frozen pytest: 3029 passed. One unrelated pre-existing failure,test_content_resolver.py::TestErrorPropagation::test_permission_denied, fails only when the suite runs as root and fails identically onmain.pyright: 0 errors.ruff checkandruff format: clean. pre-commit hooks pass.NONE_WITH_OVERWRITE: run completed, outputs directly under the URI, logs underlogs/<runId>/,GetAHORunreturned the mode.outputUriPrefixMode, default<runId>/out/layout,GetAHORunreturnedSERVICE_DEFINED.GetAHORun: same-named files overwritten, both runs' log folders kept.NONE_WITH_OVERWRITE; plain requests left the mode unset; a plain "re-run" request read the mode withGetAHORunand asked before reusing the same URI; "don't overwrite" chose a new URI with the default layout; a batch request did not attempt the unsupported option.Checklist
If your change doesn't seem to apply, please leave them unchecked.
Is this a breaking change? (Y/N) N
The new parameter is optional and omitted from the API call unless set. The raised boto3/botocore minimums are needed for the new field.
RFC issue number:
Checklist:
Acknowledgment
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the project license.