to_model() checked "bool" but production expression tools (pick_value,
param_value_from_file) declare type="boolean". Fix to_model() to match
canonical "boolean" and fix lone test tool using non-canonical "bool".
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix HTML datasets with extra files returning 404 errors when previewed.
Without a trailing slash on the display URL, the browser resolves
relative paths (e.g., image.jpg) against /datasets/{id}/ instead of
/datasets/{id}/display/, causing sub-resources to fail loading.
Adds a playwright test that verifies the trailing slash is present in
the iframe src and that extra files are accessible via relative paths.
https://claude.ai/code/session_01AvNoEjTngF3u59NJvSmPrg
Add timelimit to ResourceType literal, XSD schema, Pydantic model,
and cwl_to_galaxy mapping. Update test fixtures and assertions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New gx_data_collection_any_y tool accepts any collection type (no
collection_type constraint). Specs cover list, paired, list:paired,
and record in job_runtime_valid. Fix parameter_tool_source to handle
_y suffix convention matching functional_test_tool_source.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add gx_data_collection_list_paired_or_list_list and
gx_data_collection_list_or_list_paired tool definitions + specs
- Add job_runtime valid/invalid specs for comma-separated type unions
- Add E2E test for list:list:paired, record:paired dynamic models
- Tighten nested collection assertions to use dynamic model types
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use Pydantic discriminated unions to enforce that collection_type
matches element structure:
- Add Literal types to simple models (list, paired, record, etc.)
- Add DataCollectionSampleSheetRuntime as separate model
- Split DataCollectionNestedRuntime into NestedList and NestedRecord
- Add collection_runtime_discriminator() for routing validation
- Create CollectionRuntimeDiscriminated tagged union
- Add structure mismatch tests (list with object elements, etc.)
- Add gx_data_collection_list_or_paired test tool
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add validate_job_runtime to validation layer and test runner. Add
job_runtime_valid/invalid specs for data, data_multiple, data_collection,
and typed collection (list/paired) params. New gx_data_collection_paired
test tool for paired collection_type coverage.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Removes NotImplementedError for DataCollectionParameterModel in
runtimeify() by implementing full collection-to-runtime conversion.
Collections produce normalized representations with class, name,
collection_type, tags, and elements. List-like types (list,
sample_sheet) get array elements; record-like types (paired,
paired_or_unpaired, record) get object elements.
Adds DataCollectionElementInternalJson subtype of DataInternalJson
for stronger typing of files within collections (adds
element_identifier, columns fields).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This tool converts sample sheet collections back to their corresponding
non-sample-sheet types by stripping the column_definitions and row
column metadata:
- sample_sheet -> list
- sample_sheet:paired -> list:paired
- sample_sheet:paired_or_unpaired -> list:paired_or_unpaired
- sample_sheet:record -> list:record
Useful when a sample sheet needs to be passed to a tool that expects
a regular list collection, or when discarding sample sheet metadata.
I don't think this is a security issue because adding entries to the
tool config files is controlled by admins.
Fixes pulsar tests that fail after required_files was added to the
Filter1 tool. Also allows dropping the the symlink to the tool script.