diff --git a/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/SKILL.md b/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/SKILL.md index 80b5296a..9dd83027 100644 --- a/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/SKILL.md +++ b/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/SKILL.md @@ -21,8 +21,8 @@ Follow the procedure below and use the artifact/reference sections as the runtim ## Required Tools -- **`planemo`** (planemo). `uv tool install planemo==0.75.44` (or `pip install planemo==0.75.44`). - Ephemeral run: `uvx --from planemo==0.75.44 planemo`. +- **`planemo`** (planemo). `uv tool install planemo==0.75.45` (or `pip install planemo==0.75.45`). + Ephemeral run: `uvx --from planemo==0.75.45 planemo`. Check: `planemo --version`. Docs: https://planemo.readthedocs.io/ Bundled reference: `references/cli/planemo.md`. diff --git a/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/_provenance.json b/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/_provenance.json index 68a07d67..d2811b61 100644 --- a/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/_provenance.json +++ b/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/_provenance.json @@ -6,16 +6,21 @@ "path": "content/molds/convert-nfcore-module-to-galaxy-tool/index.md", "revision": 4, "content_hash": "b620de36e245302737d9a82171fb2847ee214466915dbb28392a0ac02bc6df68", - "commit": "dca2ac888332ee86d0cdcb5aabef94804fa16c54" + "commit": "39555fca3fd95bf7db8b0191e97135ce20c77cb2" }, - "cast_at": "2026-07-20T16:07:57.008Z", - "cast_date": "2026-06-19", - "cast_revision": 1, + "cast_at": "2026-07-20T18:41:11.132Z", + "cast_date": "2026-07-20", + "cast_revision": 2, "cast_history": [ { "rev": 1, "date": "2026-06-19", "note": "condense→verbatim; planemo 0.75.44 (fork retired)" + }, + { + "rev": 2, + "date": "2026-07-20", + "note": "planemo 0.75.45" } ], "refs": [ @@ -31,7 +36,7 @@ "purpose": "Reference for `planemo lint` flags and output classification; first gate in the convergence loop.", "trigger": "Step 10.1 — after every // emission.", "verification": "Cast and confirm the cast skill consults the manpage's exit-code and error-shape sections, not free-text guesses.", - "src_hash": "0bdc37ac4d67d672ee7245e5e98323d157ab106efe41b609eef1a08067febbc2", + "src_hash": "658bedace8f94b4f88299ecf60b542f670a892c634d2bb602546aae50d7dc5a4", "dst_hash": "862d714fa6eb7d9233173948162ff880262e2c867394f1157d073a4ce8d81523", "source": "deterministic" }, @@ -47,8 +52,8 @@ "purpose": "Reference for `planemo test --test_output_json` invocation, exit codes, and the JSON report path.", "trigger": "Step 10.2 — after lint clears.", "verification": "Cast and confirm the cast skill always runs with --test_output_json and reads from the JSON, not stdout.", - "src_hash": "4482cb70268a92da6015d90ed4f40c60085f94a649621a052025427607b7472e", - "dst_hash": "26b912fe63d0664841cd597437a221eee048e5098affada786a847e265ba1106", + "src_hash": "708692af91e36e4bf5b317509df8dee19e4e15617aeaa53a7ddcbfde18b41f74", + "dst_hash": "f4698abd6b129048befaa3e335010d99c2748a3a4a5334b90584ce5b9ee913e6", "source": "deterministic" }, { @@ -63,8 +68,8 @@ "purpose": "Install metadata for the planemo CLI invoked by the convergence loop.", "trigger": "Always — the cast skill needs planemo on PATH before running lint/test.", "verification": "Cast and confirm the bundle's _required_tools.json carries the pinned planemo install command.", - "src_hash": "ffd4938907b27307e05fb6b44a76a29c2a111e5b51072ec51442b17865cfffaf", - "dst_hash": "ffd4938907b27307e05fb6b44a76a29c2a111e5b51072ec51442b17865cfffaf", + "src_hash": "0f6cee85c6f90b44e33e0b1e1343648be1058084487a55b037c718f3c036ef4b", + "dst_hash": "0f6cee85c6f90b44e33e0b1e1343648be1058084487a55b037c718f3c036ef4b", "source": "deterministic" }, { diff --git a/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/_required_tools.json b/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/_required_tools.json index efef6503..d4c48be7 100644 --- a/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/_required_tools.json +++ b/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/_required_tools.json @@ -3,9 +3,9 @@ "tool": "planemo", "origin": "pypi", "package": "planemo", - "package_version": "0.75.44", + "package_version": "0.75.45", "invoke": "planemo", - "invoke_fallback": "uvx --from planemo==0.75.44 planemo", + "invoke_fallback": "uvx --from planemo==0.75.45 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "reference": "references/cli/planemo.md", diff --git a/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/references/cli/planemo-test.json b/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/references/cli/planemo-test.json index 8d93d95e..ec119018 100644 --- a/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/references/cli/planemo-test.json +++ b/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/references/cli/planemo-test.json @@ -5,5 +5,5 @@ "summary": "Run specified tool or workflow tests within Galaxy.", "source_path": "content/cli/planemo/planemo-test.md", "source_revision": 1, - "body": "\n\n# `planemo test`\n\nRun specified tool or workflow tests within Galaxy.\n\n## Synopsis\n\n```text\nplanemo test [OPTIONS] TOOL_PATH\n```\n\n\n## Arguments\n\n| Argument | Type | Required | Help |\n|---|---|---|---|\n| TOOL_PATH | path | — | — |\n\n## Options\n\n| Option | Type | Default | Required | Help |\n|---|---|---|---|---|\n| --failed | flag | false | — | Re-run only failed tests. This command will read tool_test_output.json to determine which tests failed so this file must have been produced with the same set of tool ids previously. |\n| --test_index | integer | [] | — | Index(es) of specific test(s) to run (1-based). Can be specified multiple times (e.g., --test_index 1 --test_index 3) to run specific tests. If not specified, all tests are run. |\n| --polling_backoff | integer | 0 | — | Poll resources with an increasing interval between requests. Useful when testing against remote and/or production instances to limit generated traffic. |\n| --galaxy_root | directory | — | — | Root of development galaxy directory to execute command with. |\n| --galaxy_python_version | choice | — | — | Python version to start Galaxy under |\n| --extra_tools | path | — | — | Extra tool sources to include in Galaxy's tool panel (file or directory). These will not be linted/tested/etc... but they will be available to workflows and for interactive use. |\n| --install_galaxy | flag | false | — | Download and configure a disposable copy of Galaxy from github. |\n| --galaxy_branch | text | — | — | Branch of Galaxy to target (defaults to master) if a Galaxy root isn't specified. |\n| --galaxy_source | text | — | — | Git source of Galaxy to target (defaults to the official galaxyproject github source if a Galaxy root isn't specified. |\n| --skip_venv | flag | false | — | Do not create or source a virtualenv environment for Galaxy, this should be used to preserve an externally configured virtual environment or conda environment. |\n| --no_cache_galaxy | flag | false | — | Skip caching of Galaxy source and dependencies obtained with --install_galaxy. Not caching this results in faster downloads (no git) - so is better on throw away instances such with TravisCI. |\n| --no_cleanup | flag | false | — | Do not cleanup temp files created for and by Galaxy. |\n| --galaxy_email | text | planemo@galaxyproject.org | — | E-mail address to use when launching single-user Galaxy server. |\n| --docker, --no_docker | flag | false | — | Run Galaxy tools in Docker if enabled. |\n| --docker_cmd | text | docker | — | Command used to launch docker (defaults to docker). |\n| --docker_sudo, --no_docker_sudo | flag | false | — | Flag to use sudo when running docker. |\n| --docker_host | text | — | — | Docker host to target when executing docker commands (defaults to localhost). |\n| --docker_sudo_cmd | text | sudo | — | sudo command to use when --docker_sudo is enabled (defaults to sudo). |\n| --docker_run_extra_arguments | text | — | — | Extra arguments to pass to docker run. |\n| --mulled_containers, --biocontainers | flag | false | — | Test tools against mulled containers (forces --docker). Disables conda resolution unless any conda option has been set explicitly. |\n| --galaxy_startup_timeout | integer range | 900 | — | Wait for galaxy to start before assuming Galaxy did not start. |\n| --job_config_file | file | — | — | Job configuration file for Galaxy to target. |\n| --job_workers | integer | 1 | — | Number of workers for the local job runner (default 1). |\n| --tool_dependency_dir | directory | — | — | Tool dependency dir for Galaxy to target. |\n| --tool_data_path | directory | — | — | Directory where data used by tools is located. Required if tests are run in docker and should make use of external reference data. |\n| --test_data | directory | — | — | test-data directory to for specified tool(s). |\n| --tool_data_table | path | — | — | tool_data_table_conf.xml file to for specified tool(s). |\n| --dependency_resolvers_config_file | file | — | — | Dependency resolver configuration for Galaxy to target. |\n| --brew_dependency_resolution | flag | false | — | Configure Galaxy to use plain brew dependency resolution. |\n| --shed_dependency_resolution | flag | false | — | Configure Galaxy to use brewed Tool Shed dependency resolution. |\n| --no_dependency_resolution | flag | false | — | Configure Galaxy with no dependency resolvers. |\n| --conda_prefix | directory | — | — | Conda prefix to use for conda dependency commands. |\n| --conda_exec | file | — | — | Location of conda executable. |\n| --conda_channels, --conda_ensure_channels | text | conda-forge,bioconda | — | Ensure conda is configured with specified comma separated list of channels. |\n| --conda_use_local | flag | false | — | Use locally built packages while building Conda environments. |\n| --conda_dependency_resolution | flag | false | — | Configure Galaxy to use only conda for dependency resolution. |\n| --conda_auto_install, --no_conda_auto_install | flag | true | — | Conda dependency resolution for Galaxy will attempt to install requested but missing packages. |\n| --conda_auto_init, --no_conda_auto_init | flag | true | — | Conda dependency resolution for Galaxy will auto install conda itself using miniforge if not availabe on conda_prefix. |\n| --simultaneous_uploads, --no_simultaneous_uploads | flag | false | — | When uploading files to Galaxy for tool or workflow tests or runs, upload multiple files simultaneously without waiting for the previous file upload to complete. |\n| --check_uploads_ok, --no_check_uploads_ok | flag | true | — | When uploading files to Galaxy for tool or workflow tests or runs, check that the history is in an 'ok' state before beginning tool or workflow execution. |\n| --profile | text | — | — | Name of profile (created with the profile_create command) to use with this command. |\n| --database_type | choice | auto | — | Type of database to use for profile - 'auto', 'sqlite', 'postgres', 'postgres_docker' , and postgres_singularity are available options. Use postgres to use an existing postgres server you user can access without a password via the psql command. Use postgres_docker to have Planemo manage a docker container running postgres. . Use postgres_singularity to have Planemo run postgres using singularity/apptainer. Data with postgres_docker is not yet persisted past when you restart the docker container launched by Planemo so be careful with this option. |\n| --postgres_psql_path | text | psql | — | Name or or path to postgres client binary (psql). |\n| --postgres_database_user | text | postgres | — | Postgres username for managed development databases. |\n| --postgres_database_host | text | — | — | Postgres host name for managed development databases. |\n| --postgres_database_port | text | — | — | Postgres port for managed development databases. |\n| --file_path | directory | — | — | Location for files created by Galaxy (e.g. database/files). |\n| --database_connection | text | — | — | Database connection string to use for Galaxy. |\n| --postgres-storage-location | text | — | — | storage path for postgres database, used for local singularity postgres. |\n| --shed_tool_conf | text | — | — | Location of shed tools conf file for Galaxy. |\n| --shed_tool_path | text | — | — | Location of shed tools directory for Galaxy. |\n| --galaxy_single_user, --no_galaxy_single_user | flag | true | — | By default Planemo will configure Galaxy to run in single-user mode where there is just one user and this user is automatically logged it. Use --no_galaxy_single_user to prevent Galaxy from running this way. |\n| --tool_evaluation_strategy | choice | — | — | Determines which process will evaluate the tool command line. If set to 'local' the tool command line will be templated in the job handler process. If set to 'remote' the tool command line will be built as part of the submitted job (beta). Setting this to 'remote' will also implicitly set metadata_strategy to 'extended', which is required for remote tool evaluation. |\n| --paste_test_data_paths, --no_paste_test_data_paths | flag | — | — | By default Planemo will use or not use Galaxy's path paste option to load test data into a history based on the engine type it is targeting. This can override the logic to explicitly enable or disable path pasting. |\n| --update_test_data | flag | false | — | Update test-data directory with job outputs (normally written to directory --job_output_files if specified.) |\n| --test_output | path | tool_test_output.html | — | Output test report (HTML - for humans) defaults to tool_test_output.html. |\n| --test_output_text | path | — | — | Output test report (Basic text - for display in CI) |\n| --test_output_markdown | path | — | — | Output test report (Markdown style - for humans & computers) |\n| --test_output_markdown_minimal | path | — | — | Output test report (Minimal markdown style - jost the table) |\n| --test_output_xunit | path | — | — | Output test report (xunit style - for CI systems |\n| --test_output_junit | path | — | — | Output test report (jUnit style - for CI systems |\n| --test_output_allure | directory | — | — | Output test allure2 framework resutls |\n| --test_output_json | path | tool_test_output.json | — | Output test report (planemo json) defaults to tool_test_output.json. |\n| --job_output_files | directory | — | — | Write job outputs to specified directory. |\n| --summary | choice | minimal | — | Summary style printed to planemo's standard output (see output reports for more complete summary). Set to 'none' to disable completely. |\n| --test_timeout | integer | 86400 | — | Maximum runtime of a single test in seconds. |\n| --fail_fast | flag | false | — | Stop on first job failure. |\n| --engine | choice | — | — | Select an engine to run or test artifacts such as tools and workflows. Defaults to a local Galaxy, but running Galaxy within a Docker container or the CWL reference implementation 'cwltool' and 'toil' be selected. |\n| --non_strict_cwl | flag | false | — | Disable strict validation of CWL. |\n| --no-container, --no_container | flag | false | — | If cwltool engine is used, disable Docker container usage. |\n| --docker_galaxy_image | text | quay.io/bgruening/galaxy | — | Docker image identifier for docker-galaxy-flavor used if engine type is specified as ``docker-galaxy``. Defaults to quay.io/bgruening/galaxy. |\n| --docker_extra_volume | path | — | — | Extra path to mount if --engine docker or `--biocontainers` or `--docker`. |\n| --ignore_dependency_problems | flag | false | — | When installing shed repositories for workflows, ignore dependency issues. These likely indicate a problem but in some cases may not prevent a workflow from successfully executing. |\n| --shed_install, --no_shed_install | flag | true | — | By default Planemo will attempt to install repositories needed for workflow testing. This may not be appropriate for production servers and so this can disabled by calling planemo with --no_shed_install. |\n| --install_tool_dependencies, --no_install_tool_dependencies | flag | false | — | Turn on installation of tool dependencies using classic toolshed packages. |\n| --install_resolver_dependencies, --no_install_resolver_dependencies | flag | true | — | Skip installing tool dependencies through resolver (e.g. conda). |\n| --install_repository_dependencies, --no_install_repository_dependencies | flag | true | — | Skip installing the repository dependencies. |\n| --galaxy_url | text | — | — | Remote Galaxy URL to use with external Galaxy engine. |\n| --galaxy_admin_key | text | — | — | Admin key to use with external Galaxy engine. |\n| --galaxy_user_key | text | — | — | User key to use with external Galaxy engine. |\n| --history_name | text | — | — | Name to give a Galaxy history, if one is created. |\n| --history_id | text | — | — | Send the results of the run to the history with the provided ID. A history with this ID must exist. |\n| --no_wait | flag | false | — | After invoking a job or workflow, do not wait for completion. |\n\n\n## Output\n\n\n\nUse `--test_output_json ` for machine-readable results; stdout and stderr are human-oriented.\n\n## Examples\n\n\n\n```sh\nplanemo test --test_output_json /_planemo_test_report.json\n```\n\n## Gotchas\n\n\n\nNo Foundry-specific gotchas recorded yet." + "body": "\n\n# `planemo test`\n\nRun specified tool or workflow tests within Galaxy.\n\n## Synopsis\n\n```text\nplanemo test [OPTIONS] TOOL_PATH\n```\n\n\n## Arguments\n\n| Argument | Type | Required | Help |\n|---|---|---|---|\n| TOOL_PATH | path | — | — |\n\n## Options\n\n| Option | Type | Default | Required | Help |\n|---|---|---|---|---|\n| --failed, --lf | flag | false | — | Re-run only failed tests from the previous run. Reads from --failed_json (or --test_output_json if not set) to determine which tests failed. |\n| --failed_json | path | — | — | JSON file from a previous planemo test run to read failed test IDs from when using --failed/--lf. Defaults to --test_output_json. |\n| --test_index | integer | [] | — | Index(es) of specific test(s) to run (1-based). Can be specified multiple times (e.g., --test_index 1 --test_index 3) to run specific tests. If not specified, all tests are run. |\n| --polling_backoff | integer | 0 | — | Poll resources with an increasing interval between requests. Useful when testing against remote and/or production instances to limit generated traffic. |\n| --galaxy_root | directory | — | — | Root of development galaxy directory to execute command with. |\n| --galaxy_python_version | choice | — | — | Python version to start Galaxy under |\n| --extra_tools | path | — | — | Extra tool sources to include in Galaxy's tool panel (file or directory). These will not be linted/tested/etc... but they will be available to workflows and for interactive use. |\n| --install_galaxy | flag | false | — | Download and configure a disposable copy of Galaxy from github. |\n| --galaxy_branch | text | — | — | Branch of Galaxy to target (defaults to master) if a Galaxy root isn't specified. |\n| --galaxy_source | text | — | — | Git source of Galaxy to target (defaults to the official galaxyproject github source if a Galaxy root isn't specified. |\n| --skip_venv | flag | false | — | Do not create or source a virtualenv environment for Galaxy, this should be used to preserve an externally configured virtual environment or conda environment. |\n| --no_cache_galaxy | flag | false | — | Skip caching of Galaxy source and dependencies obtained with --install_galaxy. Not caching this results in faster downloads (no git) - so is better on throw away instances such with TravisCI. |\n| --no_cleanup | flag | false | — | Do not cleanup temp files created for and by Galaxy. |\n| --galaxy_email | text | planemo@galaxyproject.org | — | E-mail address to use when launching single-user Galaxy server. |\n| --docker, --no_docker | flag | false | — | Run Galaxy tools in Docker if enabled. |\n| --docker_cmd | text | docker | — | Command used to launch docker (defaults to docker). |\n| --docker_sudo, --no_docker_sudo | flag | false | — | Flag to use sudo when running docker. |\n| --docker_host | text | — | — | Docker host to target when executing docker commands (defaults to localhost). |\n| --docker_sudo_cmd | text | sudo | — | sudo command to use when --docker_sudo is enabled (defaults to sudo). |\n| --docker_run_extra_arguments | text | — | — | Extra arguments to pass to docker run. |\n| --mulled_containers, --biocontainers | flag | false | — | Test tools against mulled containers (forces --docker). Disables conda resolution unless any conda option has been set explicitly. |\n| --galaxy_startup_timeout | integer range | 900 | — | Wait for galaxy to start before assuming Galaxy did not start. |\n| --job_config_file | file | — | — | Job configuration file for Galaxy to target. |\n| --job_workers | integer | 1 | — | Number of workers for the local job runner (default 1). |\n| --tool_dependency_dir | directory | — | — | Tool dependency dir for Galaxy to target. |\n| --tool_data_path | directory | — | — | Directory where data used by tools is located. Required if tests are run in docker and should make use of external reference data. |\n| --test_data | directory | — | — | test-data directory to for specified tool(s). |\n| --tool_data_table | path | — | — | tool_data_table_conf.xml file to for specified tool(s). |\n| --dependency_resolvers_config_file | file | — | — | Dependency resolver configuration for Galaxy to target. |\n| --brew_dependency_resolution | flag | false | — | Configure Galaxy to use plain brew dependency resolution. |\n| --shed_dependency_resolution | flag | false | — | Configure Galaxy to use brewed Tool Shed dependency resolution. |\n| --no_dependency_resolution | flag | false | — | Configure Galaxy with no dependency resolvers. |\n| --conda_prefix | directory | — | — | Conda prefix to use for conda dependency commands. |\n| --conda_exec | file | — | — | Location of conda executable. |\n| --conda_channels, --conda_ensure_channels | text | conda-forge,bioconda | — | Ensure conda is configured with specified comma separated list of channels. |\n| --conda_use_local | flag | false | — | Use locally built packages while building Conda environments. |\n| --conda_dependency_resolution | flag | false | — | Configure Galaxy to use only conda for dependency resolution. |\n| --conda_auto_install, --no_conda_auto_install | flag | true | — | Conda dependency resolution for Galaxy will attempt to install requested but missing packages. |\n| --conda_auto_init, --no_conda_auto_init | flag | true | — | Conda dependency resolution for Galaxy will auto install conda itself using miniforge if not availabe on conda_prefix. |\n| --simultaneous_uploads, --no_simultaneous_uploads | flag | false | — | When uploading files to Galaxy for tool or workflow tests or runs, upload multiple files simultaneously without waiting for the previous file upload to complete. |\n| --check_uploads_ok, --no_check_uploads_ok | flag | true | — | When uploading files to Galaxy for tool or workflow tests or runs, check that the history is in an 'ok' state before beginning tool or workflow execution. |\n| --profile | text | — | — | Name of profile (created with the profile_create command) to use with this command. |\n| --database_type | choice | auto | — | Type of database to use for profile - 'auto', 'sqlite', 'postgres', 'postgres_docker' , and postgres_singularity are available options. Use postgres to use an existing postgres server you user can access without a password via the psql command. Use postgres_docker to have Planemo manage a docker container running postgres. . Use postgres_singularity to have Planemo run postgres using singularity/apptainer. Data with postgres_docker is not yet persisted past when you restart the docker container launched by Planemo so be careful with this option. |\n| --postgres_psql_path | text | psql | — | Name or or path to postgres client binary (psql). |\n| --postgres_database_user | text | postgres | — | Postgres username for managed development databases. |\n| --postgres_database_host | text | — | — | Postgres host name for managed development databases. |\n| --postgres_database_port | text | — | — | Postgres port for managed development databases. |\n| --file_path | directory | — | — | Location for files created by Galaxy (e.g. database/files). |\n| --database_connection | text | — | — | Database connection string to use for Galaxy. |\n| --postgres-storage-location | text | — | — | storage path for postgres database, used for local singularity postgres. |\n| --shed_tool_conf | text | — | — | Location of shed tools conf file for Galaxy. |\n| --shed_tool_path | text | — | — | Location of shed tools directory for Galaxy. |\n| --shed_tool_data_table_config | text | — | — | Location of the shed tool data table config file for Galaxy (records data tables registered by shed-installed repositories). |\n| --shed_data_manager_config | text | — | — | Location of the shed data manager config file for Galaxy. |\n| --shed_data_dir | directory | — | — | Persistent base directory for shed-install state (local Galaxy engine). Seeds defaults for --shed_tool_conf, --shed_tool_path, --shed_tool_data_table_config and --shed_data_manager_config so shed installs (tools and their data tables) survive Galaxy restarts. Individual options still override. |\n| --galaxy_single_user, --no_galaxy_single_user | flag | true | — | By default Planemo will configure Galaxy to run in single-user mode where there is just one user and this user is automatically logged it. Use --no_galaxy_single_user to prevent Galaxy from running this way. |\n| --tool_evaluation_strategy | choice | — | — | Determines which process will evaluate the tool command line. If set to 'local' the tool command line will be templated in the job handler process. If set to 'remote' the tool command line will be built as part of the submitted job (beta). Setting this to 'remote' will also implicitly set metadata_strategy to 'extended', which is required for remote tool evaluation. |\n| --paste_test_data_paths, --no_paste_test_data_paths | flag | — | — | By default Planemo will use or not use Galaxy's path paste option to load test data into a history based on the engine type it is targeting. This can override the logic to explicitly enable or disable path pasting. |\n| --update_test_data | flag | false | — | Update test-data directory with job outputs (normally written to directory --job_output_files if specified.) |\n| --test_output | path | tool_test_output.html | — | Output test report (HTML - for humans) defaults to tool_test_output.html. |\n| --test_output_text | path | — | — | Output test report (Basic text - for display in CI) |\n| --test_output_markdown | path | — | — | Output test report (Markdown style - for humans & computers) |\n| --test_output_markdown_minimal | path | — | — | Output test report (Minimal markdown style - jost the table) |\n| --test_output_xunit | path | — | — | Output test report (xunit style - for CI systems |\n| --test_output_junit | path | — | — | Output test report (jUnit style - for CI systems |\n| --test_output_allure | directory | — | — | Output test allure2 framework resutls |\n| --test_output_json | path | tool_test_output.json | — | Output test report (planemo json) defaults to tool_test_output.json. |\n| --job_output_files | directory | — | — | Write job outputs to specified directory. |\n| --summary | choice | minimal | — | Summary style printed to planemo's standard output (see output reports for more complete summary). Set to 'none' to disable completely. |\n| --test_timeout | integer | 86400 | — | Maximum runtime of a single test in seconds. |\n| --fail_fast | flag | false | — | Stop on first job failure. |\n| --engine | choice | — | — | Select an engine to run or test artifacts such as tools and workflows. Defaults to a local Galaxy, but running Galaxy within a Docker container or the CWL reference implementation 'cwltool' and 'toil' be selected. |\n| --non_strict_cwl | flag | false | — | Disable strict validation of CWL. |\n| --no-container, --no_container | flag | false | — | If cwltool engine is used, disable Docker container usage. |\n| --docker_galaxy_image | text | quay.io/bgruening/galaxy | — | Docker image identifier for docker-galaxy-flavor used if engine type is specified as ``docker-galaxy``. Defaults to quay.io/bgruening/galaxy. |\n| --docker_extra_volume | path | — | — | Extra path to mount if --engine docker or `--biocontainers` or `--docker`. |\n| --ignore_dependency_problems | flag | false | — | When installing shed repositories for workflows, ignore dependency issues. These likely indicate a problem but in some cases may not prevent a workflow from successfully executing. |\n| --shed_install, --no_shed_install | flag | true | — | By default Planemo will attempt to install repositories needed for workflow testing. This may not be appropriate for production servers and so this can disabled by calling planemo with --no_shed_install. |\n| --install_tool_dependencies, --no_install_tool_dependencies | flag | false | — | Turn on installation of tool dependencies using classic toolshed packages. |\n| --install_resolver_dependencies, --no_install_resolver_dependencies | flag | true | — | Skip installing tool dependencies through resolver (e.g. conda). |\n| --install_repository_dependencies, --no_install_repository_dependencies | flag | true | — | Skip installing the repository dependencies. |\n| --galaxy_url | text | — | — | Remote Galaxy URL to use with external Galaxy engine. |\n| --galaxy_admin_key | text | — | — | Admin key to use with external Galaxy engine. |\n| --galaxy_user_key | text | — | — | User key to use with external Galaxy engine. |\n| --history_name | text | — | — | Name to give a Galaxy history, if one is created. |\n| --history_id | text | — | — | Send the results of the run to the history with the provided ID. A history with this ID must exist. |\n| --no_wait | flag | false | — | After invoking a job or workflow, do not wait for completion. |\n\n\n## Output\n\n\n\nUse `--test_output_json ` for machine-readable results; stdout and stderr are human-oriented.\n\n## Examples\n\n\n\n```sh\nplanemo test --test_output_json /_planemo_test_report.json\n```\n\n## Gotchas\n\n\n\nNo Foundry-specific gotchas recorded yet." } diff --git a/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/references/cli/planemo.md b/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/references/cli/planemo.md index f502a358..1b436940 100644 --- a/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/references/cli/planemo.md +++ b/casts/claude/skills/convert-nfcore-module-to-galaxy-tool/references/cli/planemo.md @@ -3,9 +3,9 @@ type: cli-tool tool: planemo origin: pypi package: planemo -package_version: "0.75.44" +package_version: "0.75.45" invoke: planemo -invoke_fallback: "uvx --from planemo==0.75.44 planemo" +invoke_fallback: "uvx --from planemo==0.75.45 planemo" availability_check: "planemo --version" docs_url: "https://planemo.readthedocs.io/" tags: @@ -13,8 +13,8 @@ tags: - cli/planemo status: draft created: 2026-05-10 -revised: 2026-06-18 -revision: 4 +revised: 2026-07-20 +revision: 5 ai_generated: true summary: "Galaxy tool/workflow runtime testing CLI; used by run-workflow-test and friends." --- @@ -25,20 +25,20 @@ Galaxy's runtime testing and authoring CLI. Foundry Molds invoke `planemo test`, ## Pin -`package_version` pins to the released `planemo==0.75.44` from PyPI — base upstream planemo, no fork. +`package_version` pins to the released `planemo==0.75.45` from PyPI — base upstream planemo, no fork. -Released 0.75.44 carries the merged [galaxyproject/planemo#1636](https://github.com/galaxyproject/planemo/pull/1636), so `planemo cli_metadata` and `planemo output_schema` ship in the base release. Every Foundry consumer now runs off this base pin: the workflow-test phases ([[run-workflow-test]], [[implement-galaxy-workflow-test]]) which need only `planemo test --test_output_json`, the convergence loop in [[convert-nfcore-module-to-galaxy-tool]], and the vendored-artifact regeneration story (`packages/planemo-cli-meta/`, `packages/planemo-test-report-schema/`). No fork pin is required. +[galaxyproject/planemo#1636](https://github.com/galaxyproject/planemo/pull/1636) merged 2026-05-14 and first shipped in released **0.75.42**, so `planemo cli_metadata` and `planemo output_schema` are available in every release at or above this pin. Every Foundry consumer runs off this base pin: the workflow-test phases ([[run-workflow-test]], [[implement-galaxy-workflow-test]]) which need only `planemo test --test_output_json`, the convergence loop in [[convert-nfcore-module-to-galaxy-tool]], and the vendored-artifact regeneration story (`packages/planemo-cli-meta/`, `packages/planemo-test-report-schema/`). No fork pin is required. ## Install ```sh -uvx --from planemo==0.75.44 planemo --version +uvx --from planemo==0.75.45 planemo --version ``` For a persistent install: ```sh -uv tool install planemo==0.75.44 +uv tool install planemo==0.75.45 ``` Contributor laptops only need planemo when **regenerating** vendored artifacts (the schema JSON in `packages/planemo-test-report-schema/`, the planemo CLI manual pages under `content/cli/planemo/`). Normal Foundry development — `npm run validate`, `npm run test`, `npm run packages-test` — builds against the vendored JSON and does not invoke planemo. diff --git a/casts/claude/skills/implement-galaxy-workflow-test/SKILL.md b/casts/claude/skills/implement-galaxy-workflow-test/SKILL.md index 85abc8b7..92e3151f 100644 --- a/casts/claude/skills/implement-galaxy-workflow-test/SKILL.md +++ b/casts/claude/skills/implement-galaxy-workflow-test/SKILL.md @@ -15,7 +15,7 @@ Follow the procedure below and use the artifact/reference sections as the runtim - Read artifact `galaxy-test-plan`. Schema: galaxy-workflow-test-plan. Produced by `changeset-to-galaxy-test-plan`, `cwl-test-to-galaxy-test-plan`, `freeform-summary-to-galaxy-test-plan`, `nextflow-test-to-galaxy-test-plan`. Schema-valid Galaxy test plan (galaxy-workflow-test-plan) from a *-test-to-galaxy-test-plan Mold; carries job inputs, expected outputs, assertion intent, fixture provenance, label assumptions, unresolved mappings, and omissions. - Read artifact `galaxy-workflow`. Produced by `advance-galaxy-draft-step`. Concrete gxformat2 workflow being tested — the loop-endstate `galaxy-workflow.gxwf.yml` from advance-galaxy-draft-step (`class: GalaxyWorkflow`); provides the real input/output labels, outputs, and collection shapes the test must assert against. -- Read artifact `test-data-refs`. Produced by `find-test-data`, `paper-to-test-data`. Resolved test data references (URLs, paths, expected shapes) from paper-to-test-data or find-test-data. +- Read artifact `test-data-refs`. Produced by `cwl-to-test-data`, `find-test-data`, `nextflow-to-test-data`, `paper-to-test-data`. Resolved test data references (URLs, paths, expected shapes) from paper-to-test-data or find-test-data. ## Outputs @@ -23,12 +23,12 @@ Follow the procedure below and use the artifact/reference sections as the runtim ## Required Tools -- **`gxwf`** (gxwf). `npm install -g @galaxy-tool-util/cli@^1.8.1`. +- **`gxwf`** (gxwf). `npm install -g '@galaxy-tool-util/cli@^1.8.1'`. Ephemeral run: `npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf`. Check: `gxwf --help | grep -q draft-validate`. Docs: https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli -- **`planemo`** (planemo). `uv tool install planemo==0.75.44` (or `pip install planemo==0.75.44`). - Ephemeral run: `uvx --from planemo==0.75.44 planemo`. +- **`planemo`** (planemo). `uv tool install planemo==0.75.45` (or `pip install planemo==0.75.45`). + Ephemeral run: `uvx --from planemo==0.75.45 planemo`. Check: `planemo --version`. Docs: https://planemo.readthedocs.io/ Bundled reference: `references/cli/planemo.md`. diff --git a/casts/claude/skills/implement-galaxy-workflow-test/_provenance.json b/casts/claude/skills/implement-galaxy-workflow-test/_provenance.json index c0fc0ee0..943fb343 100644 --- a/casts/claude/skills/implement-galaxy-workflow-test/_provenance.json +++ b/casts/claude/skills/implement-galaxy-workflow-test/_provenance.json @@ -6,9 +6,18 @@ "path": "content/molds/implement-galaxy-workflow-test/index.md", "revision": 7, "content_hash": "7f68fe27b39a85abaf6c15f1647809b0d28c71753a7de463a52ffcd5e440f82a", - "commit": "2e8ea5a6363235576bacfa5defd11492bbab6f94" + "commit": "39555fca3fd95bf7db8b0191e97135ce20c77cb2" }, - "cast_at": "2026-07-10T18:51:40.524Z", + "cast_at": "2026-07-20T18:41:10.395Z", + "cast_date": "2026-07-20", + "cast_revision": 1, + "cast_history": [ + { + "rev": 1, + "date": "2026-07-20", + "note": "planemo 0.75.45" + } + ], "refs": [ { "kind": "cli-command", @@ -35,8 +44,8 @@ "load": "upfront", "evidence": "corpus-observed", "purpose": "Runtime for workflow_test_init / workflow_test_on_invocation; install before authoring tests against a live invocation.", - "src_hash": "ffd4938907b27307e05fb6b44a76a29c2a111e5b51072ec51442b17865cfffaf", - "dst_hash": "ffd4938907b27307e05fb6b44a76a29c2a111e5b51072ec51442b17865cfffaf", + "src_hash": "0f6cee85c6f90b44e33e0b1e1343648be1058084487a55b037c718f3c036ef4b", + "dst_hash": "0f6cee85c6f90b44e33e0b1e1343648be1058084487a55b037c718f3c036ef4b", "source": "deterministic" }, { @@ -180,7 +189,9 @@ "id": "test-data-refs", "description": "Resolved test data references (URLs, paths, expected shapes) from paper-to-test-data or find-test-data.", "producers": [ + "cwl-to-test-data", "find-test-data", + "nextflow-to-test-data", "paper-to-test-data" ] } diff --git a/casts/claude/skills/implement-galaxy-workflow-test/_required_tools.json b/casts/claude/skills/implement-galaxy-workflow-test/_required_tools.json index 17f898d8..4c75f4e8 100644 --- a/casts/claude/skills/implement-galaxy-workflow-test/_required_tools.json +++ b/casts/claude/skills/implement-galaxy-workflow-test/_required_tools.json @@ -17,9 +17,9 @@ "tool": "planemo", "origin": "pypi", "package": "planemo", - "package_version": "0.75.44", + "package_version": "0.75.45", "invoke": "planemo", - "invoke_fallback": "uvx --from planemo==0.75.44 planemo", + "invoke_fallback": "uvx --from planemo==0.75.45 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "reference": "references/cli/planemo.md", diff --git a/casts/claude/skills/implement-galaxy-workflow-test/references/cli/planemo.md b/casts/claude/skills/implement-galaxy-workflow-test/references/cli/planemo.md index f502a358..1b436940 100644 --- a/casts/claude/skills/implement-galaxy-workflow-test/references/cli/planemo.md +++ b/casts/claude/skills/implement-galaxy-workflow-test/references/cli/planemo.md @@ -3,9 +3,9 @@ type: cli-tool tool: planemo origin: pypi package: planemo -package_version: "0.75.44" +package_version: "0.75.45" invoke: planemo -invoke_fallback: "uvx --from planemo==0.75.44 planemo" +invoke_fallback: "uvx --from planemo==0.75.45 planemo" availability_check: "planemo --version" docs_url: "https://planemo.readthedocs.io/" tags: @@ -13,8 +13,8 @@ tags: - cli/planemo status: draft created: 2026-05-10 -revised: 2026-06-18 -revision: 4 +revised: 2026-07-20 +revision: 5 ai_generated: true summary: "Galaxy tool/workflow runtime testing CLI; used by run-workflow-test and friends." --- @@ -25,20 +25,20 @@ Galaxy's runtime testing and authoring CLI. Foundry Molds invoke `planemo test`, ## Pin -`package_version` pins to the released `planemo==0.75.44` from PyPI — base upstream planemo, no fork. +`package_version` pins to the released `planemo==0.75.45` from PyPI — base upstream planemo, no fork. -Released 0.75.44 carries the merged [galaxyproject/planemo#1636](https://github.com/galaxyproject/planemo/pull/1636), so `planemo cli_metadata` and `planemo output_schema` ship in the base release. Every Foundry consumer now runs off this base pin: the workflow-test phases ([[run-workflow-test]], [[implement-galaxy-workflow-test]]) which need only `planemo test --test_output_json`, the convergence loop in [[convert-nfcore-module-to-galaxy-tool]], and the vendored-artifact regeneration story (`packages/planemo-cli-meta/`, `packages/planemo-test-report-schema/`). No fork pin is required. +[galaxyproject/planemo#1636](https://github.com/galaxyproject/planemo/pull/1636) merged 2026-05-14 and first shipped in released **0.75.42**, so `planemo cli_metadata` and `planemo output_schema` are available in every release at or above this pin. Every Foundry consumer runs off this base pin: the workflow-test phases ([[run-workflow-test]], [[implement-galaxy-workflow-test]]) which need only `planemo test --test_output_json`, the convergence loop in [[convert-nfcore-module-to-galaxy-tool]], and the vendored-artifact regeneration story (`packages/planemo-cli-meta/`, `packages/planemo-test-report-schema/`). No fork pin is required. ## Install ```sh -uvx --from planemo==0.75.44 planemo --version +uvx --from planemo==0.75.45 planemo --version ``` For a persistent install: ```sh -uv tool install planemo==0.75.44 +uv tool install planemo==0.75.45 ``` Contributor laptops only need planemo when **regenerating** vendored artifacts (the schema JSON in `packages/planemo-test-report-schema/`, the planemo CLI manual pages under `content/cli/planemo/`). Normal Foundry development — `npm run validate`, `npm run test`, `npm run packages-test` — builds against the vendored JSON and does not invoke planemo. diff --git a/casts/claude/skills/pipeline-cwl-to-galaxy/SKILL.md b/casts/claude/skills/pipeline-cwl-to-galaxy/SKILL.md index 1115bfed..9b8f6eb3 100644 --- a/casts/claude/skills/pipeline-cwl-to-galaxy/SKILL.md +++ b/casts/claude/skills/pipeline-cwl-to-galaxy/SKILL.md @@ -27,12 +27,12 @@ Install the harness CLIs every constituent skill invokes before driving the pipe Ephemeral run: `npx --package @galaxy-foundry/foundry foundry`. Check: `foundry --help`. Docs: https://github.com/galaxyproject/foundry/blob/main/packages/foundry/README.md -- **`gxwf`** (gxwf). `npm install -g @galaxy-tool-util/cli@^1.8.1`. +- **`gxwf`** (gxwf). `npm install -g '@galaxy-tool-util/cli@^1.8.1'`. Ephemeral run: `npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf`. Check: `gxwf --help | grep -q draft-validate`. Docs: https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli -- **`planemo`** (planemo). `uv tool install planemo==0.75.44` (or `pip install planemo==0.75.44`). - Ephemeral run: `uvx --from planemo==0.75.44 planemo`. +- **`planemo`** (planemo). `uv tool install planemo==0.75.45` (or `pip install planemo==0.75.45`). + Ephemeral run: `uvx --from planemo==0.75.45 planemo`. Check: `planemo --version`. Docs: https://planemo.readthedocs.io/ diff --git a/casts/claude/skills/pipeline-cwl-to-galaxy/_assembly.json b/casts/claude/skills/pipeline-cwl-to-galaxy/_assembly.json index 7e9bfb3d..c19c394d 100644 --- a/casts/claude/skills/pipeline-cwl-to-galaxy/_assembly.json +++ b/casts/claude/skills/pipeline-cwl-to-galaxy/_assembly.json @@ -8,7 +8,7 @@ { "tool": "cwltool", "origin": "pypi", "package": "cwltool", "invoke": "cwltool", "invoke_fallback": "uvx cwltool", "availability_check": "cwltool --version", "docs_url": "https://cwltool.readthedocs.io/", "source": "referenced" }, { "tool": "foundry", "origin": "npm", "package": "@galaxy-foundry/foundry", "invoke": "foundry", "invoke_fallback": "npx --package @galaxy-foundry/foundry foundry", "availability_check": "foundry --help", "docs_url": "https://github.com/galaxyproject/foundry/blob/main/packages/foundry/README.md", "source": "referenced" }, { "tool": "gxwf", "origin": "npm", "package": "@galaxy-tool-util/cli", "package_version": "^1.8.1", "invoke": "gxwf", "invoke_fallback": "npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf", "availability_check": "gxwf --help | grep -q draft-validate", "docs_url": "https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli", "source": "implied", "implied_by": ["gxwf convert", "gxwf draft-validate", "gxwf draft-next-step", "gxwf draft-extract", "gxwf validate-tests", "gxwf validate"] }, - { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.44", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.44 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } + { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.45", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.45 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } ], "phases": [ { "phase": 1, "kind": "mold", "skill": "summarize-cwl", "cast_present": true, "loop": false }, diff --git a/casts/claude/skills/pipeline-interview-to-galaxy/SKILL.md b/casts/claude/skills/pipeline-interview-to-galaxy/SKILL.md index 95a0c628..79637755 100644 --- a/casts/claude/skills/pipeline-interview-to-galaxy/SKILL.md +++ b/casts/claude/skills/pipeline-interview-to-galaxy/SKILL.md @@ -15,12 +15,12 @@ Harness for the **INTERVIEW → GALAXY** Foundry pipeline. Runs the constituent Install the harness CLIs every constituent skill invokes before driving the pipeline. Deduped across all phases; bioinformatics tools the constructed workflow installs are out of scope (the discovery phase pins those). -- **`gxwf`** (gxwf). `npm install -g @galaxy-tool-util/cli@^1.8.1`. +- **`gxwf`** (gxwf). `npm install -g '@galaxy-tool-util/cli@^1.8.1'`. Ephemeral run: `npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf`. Check: `gxwf --help | grep -q draft-validate`. Docs: https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli -- **`planemo`** (planemo). `uv tool install planemo==0.75.44` (or `pip install planemo==0.75.44`). - Ephemeral run: `uvx --from planemo==0.75.44 planemo`. +- **`planemo`** (planemo). `uv tool install planemo==0.75.45` (or `pip install planemo==0.75.45`). + Ephemeral run: `uvx --from planemo==0.75.45 planemo`. Check: `planemo --version`. Docs: https://planemo.readthedocs.io/ diff --git a/casts/claude/skills/pipeline-interview-to-galaxy/_assembly.json b/casts/claude/skills/pipeline-interview-to-galaxy/_assembly.json index 667e3225..92f1f94f 100644 --- a/casts/claude/skills/pipeline-interview-to-galaxy/_assembly.json +++ b/casts/claude/skills/pipeline-interview-to-galaxy/_assembly.json @@ -5,7 +5,7 @@ "options": ["use-subagents", "checkpoint"], "required_tools": [ { "tool": "gxwf", "origin": "npm", "package": "@galaxy-tool-util/cli", "package_version": "^1.8.1", "invoke": "gxwf", "invoke_fallback": "npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf", "availability_check": "gxwf --help | grep -q draft-validate", "docs_url": "https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli", "source": "implied", "implied_by": ["gxwf convert", "gxwf draft-validate", "gxwf draft-next-step", "gxwf draft-extract", "gxwf validate-tests", "gxwf validate"] }, - { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.44", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.44 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } + { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.45", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.45 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } ], "phases": [ { "phase": 1, "kind": "mold", "skill": "interview-to-freeform-summary", "cast_present": true, "loop": false }, diff --git a/casts/claude/skills/pipeline-nextflow-to-cwl/SKILL.md b/casts/claude/skills/pipeline-nextflow-to-cwl/SKILL.md index 4c218aa8..6383a789 100644 --- a/casts/claude/skills/pipeline-nextflow-to-cwl/SKILL.md +++ b/casts/claude/skills/pipeline-nextflow-to-cwl/SKILL.md @@ -21,12 +21,12 @@ Install the harness CLIs every constituent skill invokes before driving the pipe Ephemeral run: `npx --package @galaxy-foundry/foundry foundry`. Check: `foundry --help`. Docs: https://github.com/galaxyproject/foundry/blob/main/packages/foundry/README.md -- **`gxwf`** (gxwf). `npm install -g @galaxy-tool-util/cli@^1.8.1`. +- **`gxwf`** (gxwf). `npm install -g '@galaxy-tool-util/cli@^1.8.1'`. Ephemeral run: `npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf`. Check: `gxwf --help | grep -q draft-validate`. Docs: https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli -- **`planemo`** (planemo). `uv tool install planemo==0.75.44` (or `pip install planemo==0.75.44`). - Ephemeral run: `uvx --from planemo==0.75.44 planemo`. +- **`planemo`** (planemo). `uv tool install planemo==0.75.45` (or `pip install planemo==0.75.45`). + Ephemeral run: `uvx --from planemo==0.75.45 planemo`. Check: `planemo --version`. Docs: https://planemo.readthedocs.io/ diff --git a/casts/claude/skills/pipeline-nextflow-to-cwl/_assembly.json b/casts/claude/skills/pipeline-nextflow-to-cwl/_assembly.json index 2a1e0a85..a1b2cfd4 100644 --- a/casts/claude/skills/pipeline-nextflow-to-cwl/_assembly.json +++ b/casts/claude/skills/pipeline-nextflow-to-cwl/_assembly.json @@ -6,7 +6,7 @@ "required_tools": [ { "tool": "foundry", "origin": "npm", "package": "@galaxy-foundry/foundry", "invoke": "foundry", "invoke_fallback": "npx --package @galaxy-foundry/foundry foundry", "availability_check": "foundry --help", "docs_url": "https://github.com/galaxyproject/foundry/blob/main/packages/foundry/README.md", "source": "referenced" }, { "tool": "gxwf", "origin": "npm", "package": "@galaxy-tool-util/cli", "package_version": "^1.8.1", "invoke": "gxwf", "invoke_fallback": "npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf", "availability_check": "gxwf --help | grep -q draft-validate", "docs_url": "https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli", "source": "implied", "implied_by": ["gxwf validate-tests"] }, - { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.44", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.44 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } + { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.45", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.45 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } ], "phases": [ { "phase": 1, "kind": "mold", "skill": "summarize-nextflow", "cast_present": true, "loop": false }, diff --git a/casts/claude/skills/pipeline-nextflow-to-galaxy/SKILL.md b/casts/claude/skills/pipeline-nextflow-to-galaxy/SKILL.md index abc4e670..573cf592 100644 --- a/casts/claude/skills/pipeline-nextflow-to-galaxy/SKILL.md +++ b/casts/claude/skills/pipeline-nextflow-to-galaxy/SKILL.md @@ -19,12 +19,12 @@ Install the harness CLIs every constituent skill invokes before driving the pipe Ephemeral run: `npx --package @galaxy-foundry/foundry foundry`. Check: `foundry --help`. Docs: https://github.com/galaxyproject/foundry/blob/main/packages/foundry/README.md -- **`gxwf`** (gxwf). `npm install -g @galaxy-tool-util/cli@^1.8.1`. +- **`gxwf`** (gxwf). `npm install -g '@galaxy-tool-util/cli@^1.8.1'`. Ephemeral run: `npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf`. Check: `gxwf --help | grep -q draft-validate`. Docs: https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli -- **`planemo`** (planemo). `uv tool install planemo==0.75.44` (or `pip install planemo==0.75.44`). - Ephemeral run: `uvx --from planemo==0.75.44 planemo`. +- **`planemo`** (planemo). `uv tool install planemo==0.75.45` (or `pip install planemo==0.75.45`). + Ephemeral run: `uvx --from planemo==0.75.45 planemo`. Check: `planemo --version`. Docs: https://planemo.readthedocs.io/ diff --git a/casts/claude/skills/pipeline-nextflow-to-galaxy/_assembly.json b/casts/claude/skills/pipeline-nextflow-to-galaxy/_assembly.json index 2bc53744..f3032d01 100644 --- a/casts/claude/skills/pipeline-nextflow-to-galaxy/_assembly.json +++ b/casts/claude/skills/pipeline-nextflow-to-galaxy/_assembly.json @@ -6,7 +6,7 @@ "required_tools": [ { "tool": "foundry", "origin": "npm", "package": "@galaxy-foundry/foundry", "invoke": "foundry", "invoke_fallback": "npx --package @galaxy-foundry/foundry foundry", "availability_check": "foundry --help", "docs_url": "https://github.com/galaxyproject/foundry/blob/main/packages/foundry/README.md", "source": "referenced" }, { "tool": "gxwf", "origin": "npm", "package": "@galaxy-tool-util/cli", "package_version": "^1.8.1", "invoke": "gxwf", "invoke_fallback": "npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf", "availability_check": "gxwf --help | grep -q draft-validate", "docs_url": "https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli", "source": "implied", "implied_by": ["gxwf convert", "gxwf draft-validate", "gxwf draft-next-step", "gxwf draft-extract", "gxwf validate-tests", "gxwf validate"] }, - { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.44", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.44 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } + { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.45", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.45 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } ], "phases": [ { "phase": 1, "kind": "mold", "skill": "summarize-nextflow", "cast_present": true, "loop": false }, diff --git a/casts/claude/skills/pipeline-paper-to-cwl/SKILL.md b/casts/claude/skills/pipeline-paper-to-cwl/SKILL.md index 7cca8403..e123e530 100644 --- a/casts/claude/skills/pipeline-paper-to-cwl/SKILL.md +++ b/casts/claude/skills/pipeline-paper-to-cwl/SKILL.md @@ -17,12 +17,12 @@ Most of this pipeline's Molds are not yet cast, so this harness is mostly manual Install the harness CLIs every constituent skill invokes before driving the pipeline. Deduped across all phases; bioinformatics tools the constructed workflow installs are out of scope (the discovery phase pins those). -- **`gxwf`** (gxwf). `npm install -g @galaxy-tool-util/cli@^1.8.1`. +- **`gxwf`** (gxwf). `npm install -g '@galaxy-tool-util/cli@^1.8.1'`. Ephemeral run: `npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf`. Check: `gxwf --help | grep -q draft-validate`. Docs: https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli -- **`planemo`** (planemo). `uv tool install planemo==0.75.44` (or `pip install planemo==0.75.44`). - Ephemeral run: `uvx --from planemo==0.75.44 planemo`. +- **`planemo`** (planemo). `uv tool install planemo==0.75.45` (or `pip install planemo==0.75.45`). + Ephemeral run: `uvx --from planemo==0.75.45 planemo`. Check: `planemo --version`. Docs: https://planemo.readthedocs.io/ diff --git a/casts/claude/skills/pipeline-paper-to-cwl/_assembly.json b/casts/claude/skills/pipeline-paper-to-cwl/_assembly.json index 74f356d2..3749f461 100644 --- a/casts/claude/skills/pipeline-paper-to-cwl/_assembly.json +++ b/casts/claude/skills/pipeline-paper-to-cwl/_assembly.json @@ -5,7 +5,7 @@ "options": ["use-subagents", "checkpoint"], "required_tools": [ { "tool": "gxwf", "origin": "npm", "package": "@galaxy-tool-util/cli", "package_version": "^1.8.1", "invoke": "gxwf", "invoke_fallback": "npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf", "availability_check": "gxwf --help | grep -q draft-validate", "docs_url": "https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli", "source": "implied", "implied_by": ["gxwf validate-tests"] }, - { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.44", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.44 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } + { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.45", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.45 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } ], "phases": [ { "phase": 1, "kind": "mold", "skill": "summarize-paper", "cast_present": false, "loop": false }, diff --git a/casts/claude/skills/pipeline-paper-to-galaxy/SKILL.md b/casts/claude/skills/pipeline-paper-to-galaxy/SKILL.md index 9ee3f149..00cc2ec6 100644 --- a/casts/claude/skills/pipeline-paper-to-galaxy/SKILL.md +++ b/casts/claude/skills/pipeline-paper-to-galaxy/SKILL.md @@ -15,12 +15,12 @@ Harness for the **PAPER → GALAXY** Foundry pipeline. Runs the constituent skil Install the harness CLIs every constituent skill invokes before driving the pipeline. Deduped across all phases; bioinformatics tools the constructed workflow installs are out of scope (the discovery phase pins those). -- **`gxwf`** (gxwf). `npm install -g @galaxy-tool-util/cli@^1.8.1`. +- **`gxwf`** (gxwf). `npm install -g '@galaxy-tool-util/cli@^1.8.1'`. Ephemeral run: `npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf`. Check: `gxwf --help | grep -q draft-validate`. Docs: https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli -- **`planemo`** (planemo). `uv tool install planemo==0.75.44` (or `pip install planemo==0.75.44`). - Ephemeral run: `uvx --from planemo==0.75.44 planemo`. +- **`planemo`** (planemo). `uv tool install planemo==0.75.45` (or `pip install planemo==0.75.45`). + Ephemeral run: `uvx --from planemo==0.75.45 planemo`. Check: `planemo --version`. Docs: https://planemo.readthedocs.io/ diff --git a/casts/claude/skills/pipeline-paper-to-galaxy/_assembly.json b/casts/claude/skills/pipeline-paper-to-galaxy/_assembly.json index 5961e161..2ce99206 100644 --- a/casts/claude/skills/pipeline-paper-to-galaxy/_assembly.json +++ b/casts/claude/skills/pipeline-paper-to-galaxy/_assembly.json @@ -5,7 +5,7 @@ "options": ["use-subagents", "checkpoint"], "required_tools": [ { "tool": "gxwf", "origin": "npm", "package": "@galaxy-tool-util/cli", "package_version": "^1.8.1", "invoke": "gxwf", "invoke_fallback": "npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf", "availability_check": "gxwf --help | grep -q draft-validate", "docs_url": "https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli", "source": "implied", "implied_by": ["gxwf convert", "gxwf draft-validate", "gxwf draft-next-step", "gxwf draft-extract", "gxwf validate-tests", "gxwf validate"] }, - { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.44", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.44 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } + { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.45", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.45 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } ], "phases": [ { "phase": 1, "kind": "mold", "skill": "summarize-paper", "cast_present": false, "loop": false }, diff --git a/casts/claude/skills/pipeline-update-interview-to-galaxy/SKILL.md b/casts/claude/skills/pipeline-update-interview-to-galaxy/SKILL.md index f99cdffb..2491e5ab 100644 --- a/casts/claude/skills/pipeline-update-interview-to-galaxy/SKILL.md +++ b/casts/claude/skills/pipeline-update-interview-to-galaxy/SKILL.md @@ -19,12 +19,12 @@ Install the harness CLIs every constituent skill invokes before driving the pipe Ephemeral run: `npx --package @galaxy-foundry/foundry foundry`. Check: `foundry --help`. Docs: https://github.com/galaxyproject/foundry/blob/main/packages/foundry/README.md -- **`gxwf`** (gxwf). `npm install -g @galaxy-tool-util/cli@^1.8.1`. +- **`gxwf`** (gxwf). `npm install -g '@galaxy-tool-util/cli@^1.8.1'`. Ephemeral run: `npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf`. Check: `gxwf --help | grep -q draft-validate`. Docs: https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli -- **`planemo`** (planemo). `uv tool install planemo==0.75.44` (or `pip install planemo==0.75.44`). - Ephemeral run: `uvx --from planemo==0.75.44 planemo`. +- **`planemo`** (planemo). `uv tool install planemo==0.75.45` (or `pip install planemo==0.75.45`). + Ephemeral run: `uvx --from planemo==0.75.45 planemo`. Check: `planemo --version`. Docs: https://planemo.readthedocs.io/ diff --git a/casts/claude/skills/pipeline-update-interview-to-galaxy/_assembly.json b/casts/claude/skills/pipeline-update-interview-to-galaxy/_assembly.json index 3b64b057..35b194e0 100644 --- a/casts/claude/skills/pipeline-update-interview-to-galaxy/_assembly.json +++ b/casts/claude/skills/pipeline-update-interview-to-galaxy/_assembly.json @@ -6,7 +6,7 @@ "required_tools": [ { "tool": "foundry", "origin": "npm", "package": "@galaxy-foundry/foundry", "invoke": "foundry", "invoke_fallback": "npx --package @galaxy-foundry/foundry foundry", "availability_check": "foundry --help", "docs_url": "https://github.com/galaxyproject/foundry/blob/main/packages/foundry/README.md", "source": "referenced" }, { "tool": "gxwf", "origin": "npm", "package": "@galaxy-tool-util/cli", "package_version": "^1.8.1", "invoke": "gxwf", "invoke_fallback": "npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf", "availability_check": "gxwf --help | grep -q draft-validate", "docs_url": "https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli", "source": "implied", "implied_by": ["gxwf convert", "gxwf validate", "gxwf draft-validate", "gxwf draft-next-step", "gxwf draft-extract", "gxwf validate-tests"] }, - { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.44", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.44 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } + { "tool": "planemo", "origin": "pypi", "package": "planemo", "package_version": "0.75.45", "invoke": "planemo", "invoke_fallback": "uvx --from planemo==0.75.45 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "source": "referenced" } ], "phases": [ { "phase": 1, "kind": "mold", "skill": "summarize-galaxy-workflow", "cast_present": true, "loop": false }, diff --git a/casts/claude/skills/run-workflow-test/SKILL.md b/casts/claude/skills/run-workflow-test/SKILL.md index a78cd154..a311a521 100644 --- a/casts/claude/skills/run-workflow-test/SKILL.md +++ b/casts/claude/skills/run-workflow-test/SKILL.md @@ -21,12 +21,12 @@ Follow the procedure below and use the artifact/reference sections as the runtim ## Required Tools -- **`gxwf`** (gxwf). `npm install -g @galaxy-tool-util/cli@^1.8.1`. +- **`gxwf`** (gxwf). `npm install -g '@galaxy-tool-util/cli@^1.8.1'`. Ephemeral run: `npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf`. Check: `gxwf --help | grep -q draft-validate`. Docs: https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli -- **`planemo`** (planemo). `uv tool install planemo==0.75.44` (or `pip install planemo==0.75.44`). - Ephemeral run: `uvx --from planemo==0.75.44 planemo`. +- **`planemo`** (planemo). `uv tool install planemo==0.75.45` (or `pip install planemo==0.75.45`). + Ephemeral run: `uvx --from planemo==0.75.45 planemo`. Check: `planemo --version`. Docs: https://planemo.readthedocs.io/ Bundled reference: `references/cli/planemo.md`. diff --git a/casts/claude/skills/run-workflow-test/_provenance.json b/casts/claude/skills/run-workflow-test/_provenance.json index 5cc11813..5f21367e 100644 --- a/casts/claude/skills/run-workflow-test/_provenance.json +++ b/casts/claude/skills/run-workflow-test/_provenance.json @@ -6,9 +6,18 @@ "path": "content/molds/run-workflow-test/index.md", "revision": 4, "content_hash": "c0c514b739c85722cb89c69cbceb0080ca16833a7f19a6c7aa5555968acd3eca", - "commit": "7e21e08dee76406496df85fe6d41e5096879f55d" + "commit": "39555fca3fd95bf7db8b0191e97135ce20c77cb2" }, - "cast_at": "2026-07-01T23:46:03.464Z", + "cast_at": "2026-07-20T18:41:09.121Z", + "cast_date": "2026-07-20", + "cast_revision": 1, + "cast_history": [ + { + "rev": 1, + "date": "2026-07-20", + "note": "planemo 0.75.45" + } + ], "refs": [ { "kind": "cli-command", @@ -35,8 +44,8 @@ "load": "upfront", "evidence": "corpus-observed", "purpose": "Runtime that executes the Galaxy or CWL workflow test; install before driving the harness.", - "src_hash": "ffd4938907b27307e05fb6b44a76a29c2a111e5b51072ec51442b17865cfffaf", - "dst_hash": "ffd4938907b27307e05fb6b44a76a29c2a111e5b51072ec51442b17865cfffaf", + "src_hash": "0f6cee85c6f90b44e33e0b1e1343648be1058084487a55b037c718f3c036ef4b", + "dst_hash": "0f6cee85c6f90b44e33e0b1e1343648be1058084487a55b037c718f3c036ef4b", "source": "deterministic" }, { diff --git a/casts/claude/skills/run-workflow-test/_required_tools.json b/casts/claude/skills/run-workflow-test/_required_tools.json index 17f898d8..4c75f4e8 100644 --- a/casts/claude/skills/run-workflow-test/_required_tools.json +++ b/casts/claude/skills/run-workflow-test/_required_tools.json @@ -17,9 +17,9 @@ "tool": "planemo", "origin": "pypi", "package": "planemo", - "package_version": "0.75.44", + "package_version": "0.75.45", "invoke": "planemo", - "invoke_fallback": "uvx --from planemo==0.75.44 planemo", + "invoke_fallback": "uvx --from planemo==0.75.45 planemo", "availability_check": "planemo --version", "docs_url": "https://planemo.readthedocs.io/", "reference": "references/cli/planemo.md", diff --git a/casts/claude/skills/run-workflow-test/references/cli/planemo.md b/casts/claude/skills/run-workflow-test/references/cli/planemo.md index f502a358..1b436940 100644 --- a/casts/claude/skills/run-workflow-test/references/cli/planemo.md +++ b/casts/claude/skills/run-workflow-test/references/cli/planemo.md @@ -3,9 +3,9 @@ type: cli-tool tool: planemo origin: pypi package: planemo -package_version: "0.75.44" +package_version: "0.75.45" invoke: planemo -invoke_fallback: "uvx --from planemo==0.75.44 planemo" +invoke_fallback: "uvx --from planemo==0.75.45 planemo" availability_check: "planemo --version" docs_url: "https://planemo.readthedocs.io/" tags: @@ -13,8 +13,8 @@ tags: - cli/planemo status: draft created: 2026-05-10 -revised: 2026-06-18 -revision: 4 +revised: 2026-07-20 +revision: 5 ai_generated: true summary: "Galaxy tool/workflow runtime testing CLI; used by run-workflow-test and friends." --- @@ -25,20 +25,20 @@ Galaxy's runtime testing and authoring CLI. Foundry Molds invoke `planemo test`, ## Pin -`package_version` pins to the released `planemo==0.75.44` from PyPI — base upstream planemo, no fork. +`package_version` pins to the released `planemo==0.75.45` from PyPI — base upstream planemo, no fork. -Released 0.75.44 carries the merged [galaxyproject/planemo#1636](https://github.com/galaxyproject/planemo/pull/1636), so `planemo cli_metadata` and `planemo output_schema` ship in the base release. Every Foundry consumer now runs off this base pin: the workflow-test phases ([[run-workflow-test]], [[implement-galaxy-workflow-test]]) which need only `planemo test --test_output_json`, the convergence loop in [[convert-nfcore-module-to-galaxy-tool]], and the vendored-artifact regeneration story (`packages/planemo-cli-meta/`, `packages/planemo-test-report-schema/`). No fork pin is required. +[galaxyproject/planemo#1636](https://github.com/galaxyproject/planemo/pull/1636) merged 2026-05-14 and first shipped in released **0.75.42**, so `planemo cli_metadata` and `planemo output_schema` are available in every release at or above this pin. Every Foundry consumer runs off this base pin: the workflow-test phases ([[run-workflow-test]], [[implement-galaxy-workflow-test]]) which need only `planemo test --test_output_json`, the convergence loop in [[convert-nfcore-module-to-galaxy-tool]], and the vendored-artifact regeneration story (`packages/planemo-cli-meta/`, `packages/planemo-test-report-schema/`). No fork pin is required. ## Install ```sh -uvx --from planemo==0.75.44 planemo --version +uvx --from planemo==0.75.45 planemo --version ``` For a persistent install: ```sh -uv tool install planemo==0.75.44 +uv tool install planemo==0.75.45 ``` Contributor laptops only need planemo when **regenerating** vendored artifacts (the schema JSON in `packages/planemo-test-report-schema/`, the planemo CLI manual pages under `content/cli/planemo/`). Normal Foundry development — `npm run validate`, `npm run test`, `npm run packages-test` — builds against the vendored JSON and does not invoke planemo. diff --git a/content/Dashboard.md b/content/Dashboard.md index 26f58478..81a266f1 100644 --- a/content/Dashboard.md +++ b/content/Dashboard.md @@ -172,8 +172,8 @@ Generated from `dashboard_sections.json` and content frontmatter. Do not edit by | Name | Summary | Status | Revised | Rev | | --- | --- | --- | --- | --- | +| [[planemo-test-report]] | JSON Schema for the report emitted by `planemo test --test_output_json` (and friends), vendored from upstream planemo. | draft | 2026-07-20 | 3 | | [[summary-galaxy-workflow]] | JSON Schema for the structured summary emitted by the summarize-galaxy-workflow Mold. | draft | 2026-07-01 | 1 | -| [[planemo-test-report]] | JSON Schema for the report emitted by `planemo test --test_output_json` (and friends), vendored from upstream planemo. | draft | 2026-06-18 | 2 | | [[galaxy-workflow-test-plan]] | JSON Schema for the intermediate Galaxy workflow test-plan handoff produced by the test-plan Molds and consumed by implement-galaxy-workflow-test. | draft | 2026-06-16 | 1 | | [[galaxy-workflow-draft]] | JSON Schema for `class: GalaxyWorkflowDraft` — gxformat2 with `TODO_*` sentinels and `_plan_*` planning fields per draft step. | draft | 2026-05-27 | 1 | | [[cast-provenance]] | _provenance.json contract beside every cast: Mold revision, per-ref deterministic-vs-LLM origin, src/dst hashes, artifact handoff. Schema v2. | draft | 2026-05-17 | 1 | diff --git a/content/cli/planemo/index.md b/content/cli/planemo/index.md index f502a358..1b436940 100644 --- a/content/cli/planemo/index.md +++ b/content/cli/planemo/index.md @@ -3,9 +3,9 @@ type: cli-tool tool: planemo origin: pypi package: planemo -package_version: "0.75.44" +package_version: "0.75.45" invoke: planemo -invoke_fallback: "uvx --from planemo==0.75.44 planemo" +invoke_fallback: "uvx --from planemo==0.75.45 planemo" availability_check: "planemo --version" docs_url: "https://planemo.readthedocs.io/" tags: @@ -13,8 +13,8 @@ tags: - cli/planemo status: draft created: 2026-05-10 -revised: 2026-06-18 -revision: 4 +revised: 2026-07-20 +revision: 5 ai_generated: true summary: "Galaxy tool/workflow runtime testing CLI; used by run-workflow-test and friends." --- @@ -25,20 +25,20 @@ Galaxy's runtime testing and authoring CLI. Foundry Molds invoke `planemo test`, ## Pin -`package_version` pins to the released `planemo==0.75.44` from PyPI — base upstream planemo, no fork. +`package_version` pins to the released `planemo==0.75.45` from PyPI — base upstream planemo, no fork. -Released 0.75.44 carries the merged [galaxyproject/planemo#1636](https://github.com/galaxyproject/planemo/pull/1636), so `planemo cli_metadata` and `planemo output_schema` ship in the base release. Every Foundry consumer now runs off this base pin: the workflow-test phases ([[run-workflow-test]], [[implement-galaxy-workflow-test]]) which need only `planemo test --test_output_json`, the convergence loop in [[convert-nfcore-module-to-galaxy-tool]], and the vendored-artifact regeneration story (`packages/planemo-cli-meta/`, `packages/planemo-test-report-schema/`). No fork pin is required. +[galaxyproject/planemo#1636](https://github.com/galaxyproject/planemo/pull/1636) merged 2026-05-14 and first shipped in released **0.75.42**, so `planemo cli_metadata` and `planemo output_schema` are available in every release at or above this pin. Every Foundry consumer runs off this base pin: the workflow-test phases ([[run-workflow-test]], [[implement-galaxy-workflow-test]]) which need only `planemo test --test_output_json`, the convergence loop in [[convert-nfcore-module-to-galaxy-tool]], and the vendored-artifact regeneration story (`packages/planemo-cli-meta/`, `packages/planemo-test-report-schema/`). No fork pin is required. ## Install ```sh -uvx --from planemo==0.75.44 planemo --version +uvx --from planemo==0.75.45 planemo --version ``` For a persistent install: ```sh -uv tool install planemo==0.75.44 +uv tool install planemo==0.75.45 ``` Contributor laptops only need planemo when **regenerating** vendored artifacts (the schema JSON in `packages/planemo-test-report-schema/`, the planemo CLI manual pages under `content/cli/planemo/`). Normal Foundry development — `npm run validate`, `npm run test`, `npm run packages-test` — builds against the vendored JSON and does not invoke planemo. diff --git a/content/cli/planemo/planemo-cli_metadata.md b/content/cli/planemo/planemo-cli_metadata.md index a8181e78..05d7d5db 100644 --- a/content/cli/planemo/planemo-cli_metadata.md +++ b/content/cli/planemo/planemo-cli_metadata.md @@ -3,7 +3,7 @@ type: cli-command tool: planemo command: cli_metadata package: "planemo" -upstream: "https://github.com/galaxyproject/planemo/blob/0.75.44/planemo/commands/cmd_cli_metadata.py" +upstream: "https://github.com/galaxyproject/planemo/blob/0.75.45/planemo/commands/cmd_cli_metadata.py" tags: - cli-command - cli/planemo diff --git a/content/cli/planemo/planemo-lint.md b/content/cli/planemo/planemo-lint.md index 463a3faa..3fbe89be 100644 --- a/content/cli/planemo/planemo-lint.md +++ b/content/cli/planemo/planemo-lint.md @@ -3,7 +3,7 @@ type: cli-command tool: planemo command: lint package: "planemo" -upstream: "https://github.com/galaxyproject/planemo/blob/0.75.44/planemo/commands/cmd_lint.py" +upstream: "https://github.com/galaxyproject/planemo/blob/0.75.45/planemo/commands/cmd_lint.py" tags: - cli-command - cli/planemo diff --git a/content/cli/planemo/planemo-output_schema.md b/content/cli/planemo/planemo-output_schema.md index 0fe5855d..03666cf5 100644 --- a/content/cli/planemo/planemo-output_schema.md +++ b/content/cli/planemo/planemo-output_schema.md @@ -3,7 +3,7 @@ type: cli-command tool: planemo command: output_schema package: "planemo" -upstream: "https://github.com/galaxyproject/planemo/blob/0.75.44/planemo/commands/cmd_output_schema.py" +upstream: "https://github.com/galaxyproject/planemo/blob/0.75.45/planemo/commands/cmd_output_schema.py" tags: - cli-command - cli/planemo diff --git a/content/cli/planemo/planemo-test.md b/content/cli/planemo/planemo-test.md index eecbd166..f8b10290 100644 --- a/content/cli/planemo/planemo-test.md +++ b/content/cli/planemo/planemo-test.md @@ -3,7 +3,7 @@ type: cli-command tool: planemo command: test package: "planemo" -upstream: "https://github.com/galaxyproject/planemo/blob/0.75.44/planemo/commands/cmd_test.py" +upstream: "https://github.com/galaxyproject/planemo/blob/0.75.45/planemo/commands/cmd_test.py" tags: - cli-command - cli/planemo @@ -38,7 +38,8 @@ planemo test [OPTIONS] TOOL_PATH | Option | Type | Default | Required | Help | |---|---|---|---|---| -| --failed | flag | false | — | Re-run only failed tests. This command will read tool_test_output.json to determine which tests failed so this file must have been produced with the same set of tool ids previously. | +| --failed, --lf | flag | false | — | Re-run only failed tests from the previous run. Reads from --failed_json (or --test_output_json if not set) to determine which tests failed. | +| --failed_json | path | — | — | JSON file from a previous planemo test run to read failed test IDs from when using --failed/--lf. Defaults to --test_output_json. | | --test_index | integer | [] | — | Index(es) of specific test(s) to run (1-based). Can be specified multiple times (e.g., --test_index 1 --test_index 3) to run specific tests. If not specified, all tests are run. | | --polling_backoff | integer | 0 | — | Poll resources with an increasing interval between requests. Useful when testing against remote and/or production instances to limit generated traffic. | | --galaxy_root | directory | — | — | Root of development galaxy directory to execute command with. | @@ -89,6 +90,9 @@ planemo test [OPTIONS] TOOL_PATH | --postgres-storage-location | text | — | — | storage path for postgres database, used for local singularity postgres. | | --shed_tool_conf | text | — | — | Location of shed tools conf file for Galaxy. | | --shed_tool_path | text | — | — | Location of shed tools directory for Galaxy. | +| --shed_tool_data_table_config | text | — | — | Location of the shed tool data table config file for Galaxy (records data tables registered by shed-installed repositories). | +| --shed_data_manager_config | text | — | — | Location of the shed data manager config file for Galaxy. | +| --shed_data_dir | directory | — | — | Persistent base directory for shed-install state (local Galaxy engine). Seeds defaults for --shed_tool_conf, --shed_tool_path, --shed_tool_data_table_config and --shed_data_manager_config so shed installs (tools and their data tables) survive Galaxy restarts. Individual options still override. | | --galaxy_single_user, --no_galaxy_single_user | flag | true | — | By default Planemo will configure Galaxy to run in single-user mode where there is just one user and this user is automatically logged it. Use --no_galaxy_single_user to prevent Galaxy from running this way. | | --tool_evaluation_strategy | choice | — | — | Determines which process will evaluate the tool command line. If set to 'local' the tool command line will be templated in the job handler process. If set to 'remote' the tool command line will be built as part of the submitted job (beta). Setting this to 'remote' will also implicitly set metadata_strategy to 'extended', which is required for remote tool evaluation. | | --paste_test_data_paths, --no_paste_test_data_paths | flag | — | — | By default Planemo will use or not use Galaxy's path paste option to load test data into a history based on the engine type it is targeting. This can override the logic to explicitly enable or disable path pasting. | diff --git a/content/cli/planemo/planemo-workflow_test_init.md b/content/cli/planemo/planemo-workflow_test_init.md index a0343657..096eff76 100644 --- a/content/cli/planemo/planemo-workflow_test_init.md +++ b/content/cli/planemo/planemo-workflow_test_init.md @@ -3,7 +3,7 @@ type: cli-command tool: planemo command: workflow_test_init package: "planemo" -upstream: "https://github.com/galaxyproject/planemo/blob/0.75.44/planemo/commands/cmd_workflow_test_init.py" +upstream: "https://github.com/galaxyproject/planemo/blob/0.75.45/planemo/commands/cmd_workflow_test_init.py" tags: - cli-command - cli/planemo diff --git a/content/cli/planemo/planemo-workflow_test_on_invocation.md b/content/cli/planemo/planemo-workflow_test_on_invocation.md index e3ecc87d..f3a5b5f4 100644 --- a/content/cli/planemo/planemo-workflow_test_on_invocation.md +++ b/content/cli/planemo/planemo-workflow_test_on_invocation.md @@ -3,7 +3,7 @@ type: cli-command tool: planemo command: workflow_test_on_invocation package: "planemo" -upstream: "https://github.com/galaxyproject/planemo/blob/0.75.44/planemo/commands/cmd_workflow_test_on_invocation.py" +upstream: "https://github.com/galaxyproject/planemo/blob/0.75.45/planemo/commands/cmd_workflow_test_on_invocation.py" tags: - cli-command - cli/planemo diff --git a/content/schemas/planemo-test-report.md b/content/schemas/planemo-test-report.md index 9d779ed2..810d5255 100644 --- a/content/schemas/planemo-test-report.md +++ b/content/schemas/planemo-test-report.md @@ -5,7 +5,7 @@ title: Planemo test report (JSON) package: "@galaxy-foundry/planemo-test-report-schema" package_export: "planemoTestReportSchema" validator_bin: validate-planemo-test-report -upstream: "https://github.com/galaxyproject/planemo/blob/0.75.44/planemo/test/models.py" +upstream: "https://github.com/galaxyproject/planemo/blob/0.75.45/planemo/test/models.py" license: MIT license_file: LICENSES/planemo.LICENSE tags: @@ -13,8 +13,8 @@ tags: - target/galaxy status: draft created: 2026-05-11 -revised: 2026-06-18 -revision: 2 +revised: 2026-07-20 +revision: 3 ai_generated: true related_notes: - "[[planemo-test]]" @@ -28,10 +28,10 @@ This page describes the JSON Schema that `planemo test --test_output_json out.js **Source-of-truth chain:** -1. `planemo/test/models.py` (`PlanemoTestReport` Pydantic model) in [galaxyproject/planemo](https://github.com/galaxyproject/planemo) — sourced from released `planemo==0.75.44`, which carries the merged [PR #1636](https://github.com/galaxyproject/planemo/pull/1636). +1. `planemo/test/models.py` (`PlanemoTestReport` Pydantic model) in [galaxyproject/planemo](https://github.com/galaxyproject/planemo) — sourced from released `planemo==0.75.45`, which carries the merged [PR #1636](https://github.com/galaxyproject/planemo/pull/1636). 2. `planemo output_schema --schema test-report` emits a versioned envelope (`schema_version`, `planemo_version`, `schemas`). `@galaxy-foundry/planemo-test-report-schema`'s `scripts/sync-from-planemo.mjs` shells out, unwraps, and writes `src/test-report.schema.json` (AJV-ready) + `src/test-report.provenance.json` (planemo_version + schema_version + source release) — mirrors `tests-format-schema`'s integrity-sidecar pattern. 3. `scripts/sync-schema.mjs` regenerates the TS mirrors from the JSON; contributor laptops never need planemo. The cast pipeline imports `planemoTestReportSchema` and serializes it into cast bundles per the casting policy in `docs/COMPILATION_PIPELINE.md`. **At runtime in cast skills:** the convergence loop in [[convert-nfcore-module-to-galaxy-tool]] (and any other Mold that runs `planemo test`) consumes `--test_output_json` output, AJV-validates it against this schema, and classifies failures from structured keys instead of free-text parsing. `validate-planemo-test-report` wraps the AJV gate as a CLI for cast skills. -**Pin.** The schema is sourced from released `planemo==0.75.44` (carries the merged [galaxyproject/planemo#1636](https://github.com/galaxyproject/planemo/pull/1636)); the release recorded in `src/test-report.provenance.json` is the regeneration checkpoint. Bump it alongside `package_version` in `content/cli/planemo/index.md` when adopting a newer planemo. +**Pin.** The schema is sourced from released `planemo==0.75.45` (carries the merged [galaxyproject/planemo#1636](https://github.com/galaxyproject/planemo/pull/1636)); the release recorded in `src/test-report.provenance.json` is the regeneration checkpoint. Bump it alongside `package_version` in `content/cli/planemo/index.md` when adopting a newer planemo. diff --git a/packages/build-cli/package.json b/packages/build-cli/package.json index 4d334b1a..40941813 100644 --- a/packages/build-cli/package.json +++ b/packages/build-cli/package.json @@ -26,7 +26,8 @@ "scripts": { "build": "tsc", "typecheck": "tsc --noEmit", - "test": "tsc --noEmit" + "test": "tsc --noEmit && vitest run", + "test:watch": "vitest" }, "keywords": [ "galaxy", @@ -46,7 +47,8 @@ "devDependencies": { "@types/js-yaml": "^4.0.9", "@types/node": "^22.10.0", - "typescript": "^5.7.0" + "typescript": "^5.7.0", + "vitest": "^2.1.0" }, "engines": { "node": ">=20" diff --git a/packages/build-cli/src/lib/required-tools.ts b/packages/build-cli/src/lib/required-tools.ts index 1c1d0a3d..bc691558 100644 --- a/packages/build-cli/src/lib/required-tools.ts +++ b/packages/build-cli/src/lib/required-tools.ts @@ -119,17 +119,45 @@ export function aggregateRequiredTools( return [...tools.values()].sort((a, b) => a.tool.localeCompare(b.tool)); } +const VCS_OR_URL_RE = /^(?:(?:git|hg|svn|bzr)\+|(?:https?|file):\/\/)/i; +const PEP440_OPERATOR_RE = /^(?:===|==|!=|~=|<=|>=|<|>)/; +const SHELL_SAFE_RE = /^[A-Za-z0-9._@/+=-]+$/; + +function shellQuote(spec: string): string { + if (SHELL_SAFE_RE.test(spec)) return spec; + return `'${spec.replace(/'/g, `'\\''`)}'`; +} + +/** + * Join a package name and `package_version` into an installable spec. `package_version` + * may be a bare version (`1.2.3`), a PEP 440 range (`>=1.2`), or a VCS/URL pin + * (`git+https://...`); only the bare case gets an `==` inserted. + */ +export function renderPackageSpec( + pkg: string, + version: string | undefined, + origin: string, +): string { + if (!version) return pkg; + if (VCS_OR_URL_RE.test(version)) { + // PEP 508 / npm both accept a direct reference, keeping the package name attached. + return origin === "npm" ? `${pkg}@${version}` : `${pkg} @ ${version}`; + } + if (PEP440_OPERATOR_RE.test(version)) { + return origin === "npm" ? `${pkg}@${version}` : `${pkg}${version}`; + } + return origin === "npm" ? `${pkg}@${version}` : `${pkg}==${version}`; +} + export function renderInstallCommand(tool: RequiredTool): string { - const versioned = tool.package_version; + const spec = shellQuote(renderPackageSpec(tool.package, tool.package_version, tool.origin)); if (tool.origin === "pypi") { - const spec = versioned ? `${tool.package}==${versioned}` : tool.package; return `\`uv tool install ${spec}\` (or \`pip install ${spec}\`).`; } if (tool.origin === "npm") { - const spec = versioned ? `${tool.package}@${versioned}` : tool.package; return `\`npm install -g ${spec}\`.`; } - return `Install ${tool.package}${versioned ? `@${versioned}` : ""} from ${tool.origin}.`; + return `Install ${spec} from ${tool.origin}.`; } export function requiredToolRows(tools: RequiredTool[]): string[] { diff --git a/packages/build-cli/test/required-tools.test.ts b/packages/build-cli/test/required-tools.test.ts new file mode 100644 index 00000000..123e6989 --- /dev/null +++ b/packages/build-cli/test/required-tools.test.ts @@ -0,0 +1,80 @@ +import { describe, expect, it } from "vitest"; + +import { + renderInstallCommand, + renderPackageSpec, + type RequiredTool, +} from "../src/lib/required-tools.js"; + +function tool(overrides: Partial): RequiredTool { + return { + tool: "planemo", + origin: "pypi", + package: "planemo", + invoke: "planemo", + source: "referenced", + ...overrides, + }; +} + +describe("renderPackageSpec", () => { + it("pins a bare pypi version with ==", () => { + expect(renderPackageSpec("planemo", "0.75.45", "pypi")).toBe("planemo==0.75.45"); + }); + + it("leaves an unversioned package alone", () => { + expect(renderPackageSpec("planemo", undefined, "pypi")).toBe("planemo"); + }); + + it("does not double up an operator already in the pin", () => { + expect(renderPackageSpec("planemo", ">=0.75", "pypi")).toBe("planemo>=0.75"); + expect(renderPackageSpec("planemo", "~=0.75.45", "pypi")).toBe("planemo~=0.75.45"); + expect(renderPackageSpec("planemo", "==0.75.45", "pypi")).toBe("planemo==0.75.45"); + }); + + it("emits a PEP 508 direct reference for a VCS pin", () => { + expect(renderPackageSpec("planemo", "git+https://github.com/o/planemo@abc123", "pypi")).toBe( + "planemo @ git+https://github.com/o/planemo@abc123", + ); + }); + + it("uses npm's @ separator for versions, ranges, and URLs alike", () => { + expect(renderPackageSpec("gxwf", "1.2.3", "npm")).toBe("gxwf@1.2.3"); + expect(renderPackageSpec("gxwf", "^1.2", "npm")).toBe("gxwf@^1.2"); + expect(renderPackageSpec("gxwf", "git+https://github.com/o/gxwf", "npm")).toBe( + "gxwf@git+https://github.com/o/gxwf", + ); + }); +}); + +describe("renderInstallCommand", () => { + it("renders a bare pypi pin unquoted", () => { + expect(renderInstallCommand(tool({ package_version: "0.75.45" }))).toBe( + "`uv tool install planemo==0.75.45` (or `pip install planemo==0.75.45`).", + ); + }); + + it("quotes a range pin so the shell does not treat > as a redirect", () => { + expect(renderInstallCommand(tool({ package_version: ">=0.75" }))).toBe( + "`uv tool install 'planemo>=0.75'` (or `pip install 'planemo>=0.75'`).", + ); + }); + + it("quotes a VCS direct reference", () => { + const rendered = renderInstallCommand( + tool({ package_version: "git+https://github.com/o/planemo@abc123" }), + ); + expect(rendered).toBe( + "`uv tool install 'planemo @ git+https://github.com/o/planemo@abc123'` " + + "(or `pip install 'planemo @ git+https://github.com/o/planemo@abc123'`).", + ); + }); + + it("renders npm installs", () => { + expect( + renderInstallCommand( + tool({ tool: "gxwf", origin: "npm", package: "gxwf", package_version: "1.2.3" }), + ), + ).toBe("`npm install -g gxwf@1.2.3`."); + }); +}); diff --git a/packages/build-cli/vitest.config.ts b/packages/build-cli/vitest.config.ts new file mode 100644 index 00000000..f624398e --- /dev/null +++ b/packages/build-cli/vitest.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + environment: "node", + }, +}); diff --git a/packages/planemo-cli-meta/scripts/sync-from-planemo.mjs b/packages/planemo-cli-meta/scripts/sync-from-planemo.mjs index 606a5746..a6f4757f 100644 --- a/packages/planemo-cli-meta/scripts/sync-from-planemo.mjs +++ b/packages/planemo-cli-meta/scripts/sync-from-planemo.mjs @@ -5,7 +5,7 @@ // Requires `planemo` on PATH (or PLANEMO_BIN env). The pinned planemo version is // recorded in content/cli/planemo/index.md; install it with: // -// uvx --from planemo==0.75.44 planemo --version +// uvx --from planemo==0.75.45 planemo --version // // This script is NOT run on every build — it is opt-in regeneration. The .ts // mirror is produced from the JSON by scripts/sync-meta.mjs, which runs in @@ -27,7 +27,7 @@ const DST_PROVENANCE = resolve(PKG_ROOT, "src/cli-meta.provenance.json"); const PIN = { repo: "galaxyproject/planemo", - release: "0.75.44", + release: "0.75.45", note: "Released on PyPI; includes merged PR galaxyproject/planemo#1636.", }; diff --git a/packages/planemo-cli-meta/src/cli-meta.generated.ts b/packages/planemo-cli-meta/src/cli-meta.generated.ts index 66fdce53..1dbbf1ce 100644 --- a/packages/planemo-cli-meta/src/cli-meta.generated.ts +++ b/packages/planemo-cli-meta/src/cli-meta.generated.ts @@ -442,7 +442,7 @@ export const planemoCliMeta = { "name": "workflow_upload" } ], - "planemo_version": "0.75.44", + "planemo_version": "0.75.45", "program": "planemo", "schema_version": "0.1" } as const; diff --git a/packages/planemo-cli-meta/src/cli-meta.json b/packages/planemo-cli-meta/src/cli-meta.json index e217d13d..8104cb72 100644 --- a/packages/planemo-cli-meta/src/cli-meta.json +++ b/packages/planemo-cli-meta/src/cli-meta.json @@ -439,7 +439,7 @@ "name": "workflow_upload" } ], - "planemo_version": "0.75.44", + "planemo_version": "0.75.45", "program": "planemo", "schema_version": "0.1" } diff --git a/packages/planemo-cli-meta/src/cli-meta.provenance.generated.ts b/packages/planemo-cli-meta/src/cli-meta.provenance.generated.ts index 943b3956..b59838e2 100644 --- a/packages/planemo-cli-meta/src/cli-meta.provenance.generated.ts +++ b/packages/planemo-cli-meta/src/cli-meta.provenance.generated.ts @@ -1,11 +1,11 @@ // Generated by scripts/sync-meta.mjs. Do not edit. // Source of truth: src/cli-meta.provenance.json. export const planemoCliMetaProvenance = { - "planemo_version": "0.75.44", + "planemo_version": "0.75.45", "schema_version": "0.1", "source": { "note": "Released on PyPI; includes merged PR galaxyproject/planemo#1636.", - "release": "0.75.44", + "release": "0.75.45", "repo": "galaxyproject/planemo" } } as const; diff --git a/packages/planemo-cli-meta/src/cli-meta.provenance.json b/packages/planemo-cli-meta/src/cli-meta.provenance.json index 1546b70d..6fb5eb8f 100644 --- a/packages/planemo-cli-meta/src/cli-meta.provenance.json +++ b/packages/planemo-cli-meta/src/cli-meta.provenance.json @@ -1,9 +1,9 @@ { - "planemo_version": "0.75.44", + "planemo_version": "0.75.45", "schema_version": "0.1", "source": { "note": "Released on PyPI; includes merged PR galaxyproject/planemo#1636.", - "release": "0.75.44", + "release": "0.75.45", "repo": "galaxyproject/planemo" } } diff --git a/packages/planemo-test-report-schema/scripts/sync-from-planemo.mjs b/packages/planemo-test-report-schema/scripts/sync-from-planemo.mjs index e9f41096..578b262a 100644 --- a/packages/planemo-test-report-schema/scripts/sync-from-planemo.mjs +++ b/packages/planemo-test-report-schema/scripts/sync-from-planemo.mjs @@ -5,7 +5,7 @@ // Requires `planemo` on PATH (or PLANEMO_BIN env). The pinned planemo version is // recorded in content/cli/planemo/index.md; install it with: // -// uvx --from planemo==0.75.44 planemo --version +// uvx --from planemo==0.75.45 planemo --version // // This script is NOT run on every build — it is opt-in regeneration. The .ts // mirrors are produced from the JSON by scripts/sync-schema.mjs, which runs in @@ -27,7 +27,7 @@ const DST_PROVENANCE = resolve(PKG_ROOT, "src/test-report.provenance.json"); const PIN = { repo: "galaxyproject/planemo", - release: "0.75.44", + release: "0.75.45", note: "Released on PyPI; includes merged PR galaxyproject/planemo#1636.", }; diff --git a/packages/planemo-test-report-schema/src/test-report.provenance.generated.ts b/packages/planemo-test-report-schema/src/test-report.provenance.generated.ts index 0faee8b2..dcacb57a 100644 --- a/packages/planemo-test-report-schema/src/test-report.provenance.generated.ts +++ b/packages/planemo-test-report-schema/src/test-report.provenance.generated.ts @@ -1,12 +1,12 @@ // Generated by scripts/sync-schema.mjs. Do not edit. // Source of truth: src/test-report.provenance.json. export const planemoTestReportProvenance = { - "planemo_version": "0.75.44", + "planemo_version": "0.75.45", "schema_name": "test-report", "schema_version": "0.1", "source": { "note": "Released on PyPI; includes merged PR galaxyproject/planemo#1636.", - "release": "0.75.44", + "release": "0.75.45", "repo": "galaxyproject/planemo" } } as const; diff --git a/packages/planemo-test-report-schema/src/test-report.provenance.json b/packages/planemo-test-report-schema/src/test-report.provenance.json index 023abb41..bc11b89b 100644 --- a/packages/planemo-test-report-schema/src/test-report.provenance.json +++ b/packages/planemo-test-report-schema/src/test-report.provenance.json @@ -1,10 +1,10 @@ { - "planemo_version": "0.75.44", + "planemo_version": "0.75.45", "schema_name": "test-report", "schema_version": "0.1", "source": { "note": "Released on PyPI; includes merged PR galaxyproject/planemo#1636.", - "release": "0.75.44", + "release": "0.75.45", "repo": "galaxyproject/planemo" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fb1d4e5e..0ad95f25 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -109,6 +109,9 @@ importers: typescript: specifier: ^5.7.0 version: 5.9.3 + vitest: + specifier: ^2.1.0 + version: 2.1.9(@types/node@22.19.17)(lightningcss@1.30.2) packages/foundry: dependencies: diff --git a/scripts/sync-planemo-cli.ts b/scripts/sync-planemo-cli.ts index 56d9c37f..146f6a0a 100644 --- a/scripts/sync-planemo-cli.ts +++ b/scripts/sync-planemo-cli.ts @@ -38,7 +38,7 @@ const SEED_COMMANDS = [ const PIN = { repo: "galaxyproject/planemo", - ref: "0.75.44", + ref: "0.75.45", }; const AUTO_BEGIN = "";