@galaxyproject/orbit 0.0.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +123 -0
- package/LICENSE +21 -0
- package/README.md +760 -5
- package/bin/legacy-mcp-config.js +363 -0
- package/bin/orbit.js +810 -0
- package/bin/pi-extension-path.d.ts +4 -0
- package/bin/pi-extension-path.js +44 -0
- package/bin/provider-auth.d.ts +22 -0
- package/bin/provider-auth.js +77 -0
- package/bin/thinking-pref.js +38 -0
- package/bin/update-check.d.ts +15 -0
- package/bin/update-check.js +137 -0
- package/extensions/cli-update/index.ts +32 -0
- package/extensions/orbit/activity-hooks.ts +141 -0
- package/extensions/orbit/activity.ts +116 -0
- package/extensions/orbit/agent-dir.ts +11 -0
- package/extensions/orbit/auto-resume.ts +352 -0
- package/extensions/orbit/config.ts +3 -0
- package/extensions/orbit/confusables.ts +1 -0
- package/extensions/orbit/context.ts +957 -0
- package/extensions/orbit/dashboard-commands.ts +191 -0
- package/extensions/orbit/dashboard-store.ts +473 -0
- package/extensions/orbit/dashboard-tools.ts +1185 -0
- package/extensions/orbit/empty-completion.ts +99 -0
- package/extensions/orbit/evidence-gate.ts +1276 -0
- package/extensions/orbit/evidence-override-command.ts +294 -0
- package/extensions/orbit/exec-guard/bash-risk.ts +1408 -0
- package/extensions/orbit/exec-guard/gate.ts +181 -0
- package/extensions/orbit/exec-guard/guardian-config.ts +54 -0
- package/extensions/orbit/exec-guard/index.ts +1 -0
- package/extensions/orbit/exec-guard/model-tier.ts +36 -0
- package/extensions/orbit/exec-guard/path-jail.ts +54 -0
- package/extensions/orbit/exec-guard/policy.ts +342 -0
- package/extensions/orbit/exec-guard/runtime-state.ts +15 -0
- package/extensions/orbit/exec-guard/sensitive-read.ts +525 -0
- package/extensions/orbit/exec-guard/types.ts +42 -0
- package/extensions/orbit/execution-commands.ts +134 -0
- package/extensions/orbit/feedback-command.ts +81 -0
- package/extensions/orbit/feedback.ts +96 -0
- package/extensions/orbit/galaxy-api.test.ts +122 -0
- package/extensions/orbit/galaxy-api.ts +606 -0
- package/extensions/orbit/galaxy-artifact-link-guidance.ts +5 -0
- package/extensions/orbit/galaxy-destructive-gate.ts +113 -0
- package/extensions/orbit/galaxy-enrich.ts +1108 -0
- package/extensions/orbit/galaxy-failure.ts +101 -0
- package/extensions/orbit/galaxy-fixture.ts +126 -0
- package/extensions/orbit/galaxy-history-guard.ts +233 -0
- package/extensions/orbit/galaxy-job-block.ts +347 -0
- package/extensions/orbit/galaxy-job-ops.ts +288 -0
- package/extensions/orbit/galaxy-live-source.ts +929 -0
- package/extensions/orbit/galaxy-markdown-adapter.ts +248 -0
- package/extensions/orbit/galaxy-op-policy.ts +332 -0
- package/extensions/orbit/galaxy-ops-tools.ts +326 -0
- package/extensions/orbit/galaxy-output-store.ts +80 -0
- package/extensions/orbit/galaxy-output.ts +346 -0
- package/extensions/orbit/galaxy-page-binding.ts +222 -0
- package/extensions/orbit/galaxy-page-markdown-guidance.ts +15 -0
- package/extensions/orbit/galaxy-page-ops.ts +159 -0
- package/extensions/orbit/galaxy-page-sync.test.ts +417 -0
- package/extensions/orbit/galaxy-page-sync.ts +318 -0
- package/extensions/orbit/galaxy-pages-api.ts +203 -0
- package/extensions/orbit/galaxy-pages-sync.ts +409 -0
- package/extensions/orbit/galaxy-poll-guard.ts +189 -0
- package/extensions/orbit/galaxy-poller.ts +706 -0
- package/extensions/orbit/galaxy-provenance.ts +623 -0
- package/extensions/orbit/galaxy-reconcile.ts +956 -0
- package/extensions/orbit/galaxy-recovery.ts +176 -0
- package/extensions/orbit/galaxy-repeat-guard.ts +55 -0
- package/extensions/orbit/galaxy-submission-capture.ts +707 -0
- package/extensions/orbit/galaxy-submission.ts +502 -0
- package/extensions/orbit/galaxy-tool-source.ts +78 -0
- package/extensions/orbit/galaxy-tool-wrap.ts +234 -0
- package/extensions/orbit/galaxy-udt-block.ts +127 -0
- package/extensions/orbit/galaxy-upload-tus.ts +334 -0
- package/extensions/orbit/galaxy-upload.ts +300 -0
- package/extensions/orbit/galaxy-version-capture.ts +65 -0
- package/extensions/orbit/git.ts +173 -0
- package/extensions/orbit/harness-block-fields.ts +597 -0
- package/extensions/orbit/index.ts +593 -0
- package/extensions/orbit/init-gate.ts +284 -0
- package/extensions/orbit/instructions-command.ts +136 -0
- package/extensions/orbit/invocation-failure-hint.ts +57 -0
- package/extensions/orbit/iwc-plan-check.ts +94 -0
- package/extensions/orbit/lesson-command.ts +303 -0
- package/extensions/orbit/lesson-hint.ts +245 -0
- package/extensions/orbit/lesson-nudge.ts +106 -0
- package/extensions/orbit/lessons/compose.ts +177 -0
- package/extensions/orbit/lessons/counters.ts +120 -0
- package/extensions/orbit/lessons/enabled.ts +116 -0
- package/extensions/orbit/lessons/matcher.ts +346 -0
- package/extensions/orbit/lessons/paths.ts +286 -0
- package/extensions/orbit/lessons/pi-event-contract.ts +105 -0
- package/extensions/orbit/lessons/propose-replay.ts +103 -0
- package/extensions/orbit/lessons/propose-tool.ts +222 -0
- package/extensions/orbit/lessons/propose.ts +502 -0
- package/extensions/orbit/lessons/replay.ts +89 -0
- package/extensions/orbit/lessons/reproduction-index.ts +83 -0
- package/extensions/orbit/lessons/search-tool.ts +99 -0
- package/extensions/orbit/lessons/search.ts +136 -0
- package/extensions/orbit/lessons/store.ts +415 -0
- package/extensions/orbit/lessons/text.ts +36 -0
- package/extensions/orbit/lessons/types.ts +69 -0
- package/extensions/orbit/lessons/user-dir.ts +24 -0
- package/extensions/orbit/lessons/user-lesson.ts +88 -0
- package/extensions/orbit/lessons/wrapper.ts +61 -0
- package/extensions/orbit/lessons-command.ts +147 -0
- package/extensions/orbit/local-exec.ts +39 -0
- package/extensions/orbit/mcp-output.ts +179 -0
- package/extensions/orbit/mcp-servers.test.ts +24 -0
- package/extensions/orbit/mcp-servers.ts +25 -0
- package/extensions/orbit/model-script.ts +351 -0
- package/extensions/orbit/notebook-anchors.ts +342 -0
- package/extensions/orbit/notebook-writer.ts +863 -0
- package/extensions/orbit/observation-allowlists.ts +1109 -0
- package/extensions/orbit/observation-replay.ts +148 -0
- package/extensions/orbit/observation-triggers.ts +563 -0
- package/extensions/orbit/observation-ui.ts +175 -0
- package/extensions/orbit/observations-command.ts +421 -0
- package/extensions/orbit/observations-config.ts +200 -0
- package/extensions/orbit/observations.ts +1381 -0
- package/extensions/orbit/profiles.ts +270 -0
- package/extensions/orbit/progress-updates.ts +95 -0
- package/extensions/orbit/proposal-commands.ts +882 -0
- package/extensions/orbit/provenance-fs-file.ts +59 -0
- package/extensions/orbit/provenance-fs.ts +32 -0
- package/extensions/orbit/provenance-memory-fs.ts +59 -0
- package/extensions/orbit/record-store-file.ts +177 -0
- package/extensions/orbit/record-store-page.ts +77 -0
- package/extensions/orbit/record-store-seam.ts +47 -0
- package/extensions/orbit/record-store.ts +149 -0
- package/extensions/orbit/registry-carrier.ts +107 -0
- package/extensions/orbit/registry-eligibility.ts +95 -0
- package/extensions/orbit/registry-evaluation.ts +403 -0
- package/extensions/orbit/registry-evaluator.ts +519 -0
- package/extensions/orbit/registry-import.ts +91 -0
- package/extensions/orbit/registry-lock.ts +221 -0
- package/extensions/orbit/registry-memory-fs.ts +42 -0
- package/extensions/orbit/registry-page-carrier.ts +103 -0
- package/extensions/orbit/registry-proposal.ts +1348 -0
- package/extensions/orbit/registry-runtime.ts +234 -0
- package/extensions/orbit/registry-schema.ts +735 -0
- package/extensions/orbit/registry-submitter.ts +59 -0
- package/extensions/orbit/registry-templates.ts +346 -0
- package/extensions/orbit/registry.ts +476 -0
- package/extensions/orbit/sandbox/index.ts +120 -0
- package/extensions/orbit/sandbox/sandbox-bash.ts +93 -0
- package/extensions/orbit/sandbox/sandbox-config.ts +87 -0
- package/extensions/orbit/sandbox/sandbox-init-message.ts +28 -0
- package/extensions/orbit/secret-redaction.ts +247 -0
- package/extensions/orbit/session-index/cwd.ts +18 -0
- package/extensions/orbit/session-index/db.ts +56 -0
- package/extensions/orbit/session-index/indexer.ts +154 -0
- package/extensions/orbit/session-index/is-enabled.ts +17 -0
- package/extensions/orbit/session-index/parse.ts +254 -0
- package/extensions/orbit/session-index/query.ts +209 -0
- package/extensions/orbit/session-index/schema.ts +72 -0
- package/extensions/orbit/session-index/tools.ts +152 -0
- package/extensions/orbit/session-lifecycle.ts +321 -0
- package/extensions/orbit/skill-triggers.ts +159 -0
- package/extensions/orbit/skills-command.ts +48 -0
- package/extensions/orbit/skills-discovery.ts +435 -0
- package/extensions/orbit/skills.ts +84 -0
- package/extensions/orbit/sra-import-gate.ts +77 -0
- package/extensions/orbit/state.ts +265 -0
- package/extensions/orbit/submission-replay.ts +147 -0
- package/extensions/orbit/sync-command.ts +157 -0
- package/extensions/orbit/teams/critic-parser.ts +93 -0
- package/extensions/orbit/teams/dispatcher.ts +210 -0
- package/extensions/orbit/teams/is-enabled.ts +22 -0
- package/extensions/orbit/teams/tool.ts +187 -0
- package/extensions/orbit/teams/types.ts +57 -0
- package/extensions/orbit/teams/validate.ts +42 -0
- package/extensions/orbit/tester-id-command.ts +133 -0
- package/extensions/orbit/tools-sync.ts +279 -0
- package/extensions/orbit/tools.ts +1300 -0
- package/extensions/orbit/types.ts +41 -0
- package/extensions/orbit/ui-bridge.ts +55 -0
- package/extensions/orbit/ulid.ts +60 -0
- package/extensions/orbit/user-instructions.ts +388 -0
- package/extensions/orbit/vendor/skills/_catalog.json +68 -0
- package/extensions/orbit/vendor/skills/_manifest.json +1106 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/SKILL.md +112 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/_provenance.json +218 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/_required_tools.json +33 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/_verify.json +4 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/add.json +50 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/draft-extract.json +51 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/draft-next-step.json +42 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/draft-validate.json +140 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/list.json +32 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/notes/galaxy-tool-job-failure-reference.md +137 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/notes/open-requirements-ledger.md +173 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/schemas/galaxy-tool-summary.schema.json +175 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/schemas/galaxy-workflow-draft.schema.json +2727 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/SKILL.md +82 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/_provenance.json +133 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/_required_tools.json +16 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/_verify.json +4 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/cli/draft-validate.json +140 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/notes/galaxy-workflow-draft-format.md +135 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/notes/open-requirements-ledger.md +173 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/schemas/galaxy-workflow-draft.schema.json +2727 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/SKILL.md +84 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/_provenance.json +166 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/_verify.json +29 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/galaxy-workflow-testability-design.md +136 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/iwc-test-data-conventions.md +308 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/planemo-asserts-idioms.md +246 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/planemo-workflow-test-architecture.md +151 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/schemas/galaxy-workflow-test-plan.schema.json +552 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/schemas/summary-galaxy-workflow.schema.json +687 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/schemas/tests-format.schema.json +7328 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/SKILL.md +127 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/_provenance.json +198 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/_required_tools.json +16 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/_verify.json +4 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/cli/convert.json +123 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/galaxy-data-flow-draft-contract.md +129 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/iwc-test-data-conventions.md +308 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/open-requirements-ledger.md +173 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/SKILL.md +73 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/_provenance.json +160 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/_verify.json +4 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-collection-semantics.md +43 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-collection-semantics.yml +1250 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-tool-job-failure-reference.md +137 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-workflow-invocation-failure-reference.md +138 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/nextflow-operators-to-galaxy-collection-recipes.md +98 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/planemo-asserts-idioms.md +246 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/planemo-workflow-test-architecture.md +151 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/SKILL.md +174 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/_provenance.json +130 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/_required_tools.json +18 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/_verify.json +17 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/references/cli/tool-revisions.json +48 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/references/cli/tool-search.json +95 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/references/cli/tool-versions.json +39 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/references/notes/component-tool-shed-search.md +230 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/references/schemas/galaxy-tool-discovery.schema.json +231 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/SKILL.md +93 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/_provenance.json +201 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/_required_tools.json +28 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/_verify.json +17 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/cli/planemo.md +44 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/cli/validate-tests.json +40 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/galaxy-workflow-testability-design.md +136 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/iwc-test-data-conventions.md +308 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/planemo-asserts-idioms.md +246 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/planemo-workflow-test-architecture.md +151 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/schemas/galaxy-workflow-test-plan.schema.json +552 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/schemas/tests-format.schema.json +7328 -0
- package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/SKILL.md +81 -0
- package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/_provenance.json +93 -0
- package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/_verify.json +17 -0
- package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/references/notes/open-requirements-ledger.md +173 -0
- package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/references/schemas/summary-galaxy-workflow.schema.json +687 -0
- package/extensions/orbit/vendor/skills/pipeline-update-interview-to-galaxy/SKILL.md +81 -0
- package/extensions/orbit/vendor/skills/pipeline-update-interview-to-galaxy/_assembly.json +23 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/SKILL.md +79 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/_provenance.json +125 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/_required_tools.json +28 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/_verify.json +4 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/references/cli/planemo.md +44 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/references/cli/validate-tests.json +40 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/references/notes/galaxy-workflow-invocation-failure-reference.md +138 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/references/notes/planemo-asserts-idioms.md +246 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/references/notes/planemo-workflow-test-architecture.md +151 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/references/schemas/tests-format.schema.json +7328 -0
- package/extensions/orbit/vendor/skills/skills/LICENSE +21 -0
- package/extensions/orbit/vendor/skills/skills/collection-manipulation/README.md +39 -0
- package/extensions/orbit/vendor/skills/skills/collection-manipulation/SKILL.md +892 -0
- package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/api-patterns.md +927 -0
- package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/apply-rules.md +1482 -0
- package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/test-patterns.md +996 -0
- package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/tools.md +609 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-data-libraries/SKILL.md +170 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/README.md +162 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/SKILL.md +99 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/examples/README.md +119 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/examples/tool-checking.md +419 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/examples/workflow-testing.md +617 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/galaxy-integration.md +614 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/SKILL.md +144 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/average_col3.ipynb +68 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/extract_sample_metadata.ipynb +190 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/variant_annotation.ipynb +816 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/vcp_variant_map.ipynb +443 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/scripts/README.md +165 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/scripts/galaxy_tool_checker.py +521 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-mcp-reference/SKILL.md +128 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-mcp-reference/gotchas.md +135 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-mcp-reference/history-access.md +132 -0
- package/extensions/orbit/vendor/skills/skills/reproduciblify/SKILL.md +146 -0
- package/extensions/orbit/vendor/skills/skills/reproduciblify/references/directives.yml +496 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/SKILL.md +245 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/01-minimal-echo.yml +27 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/02-single-data-in-out.yml +27 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/03-multiple-data-js.yml +28 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/04-select-integer-boolean.yml +41 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/05-resource-requirements.yml +25 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/06-biocontainer-tool.yml +38 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/07-inline-python-script.yml +56 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/08-configfile-script.yml +74 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/references/common-mistakes.md +76 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/references/schema-reference.md +155 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/references/templating.md +196 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/scripts/validate.py +109 -0
- package/extensions/orbit/vendor/skills/skills/workflow-reports/README.md +71 -0
- package/extensions/orbit/vendor/skills/skills/workflow-reports/SKILL.md +190 -0
- package/extensions/orbit/vendor/skills/skills/workflow-reports/examples/histology-staining.md +145 -0
- package/extensions/orbit/vendor/skills/skills/workflow-reports/examples/tissue-microarray-analysis.md +176 -0
- package/extensions/orbit/vendor/skills/skills/workflow-reports/references/directives.md +415 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/SKILL.md +98 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/_provenance.json +93 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/_required_tools.json +28 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/_verify.json +17 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/cli/convert.json +123 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/cli/foundry.md +25 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/cli/validate.json +142 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/schemas/summary-galaxy-workflow.schema.json +687 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/SKILL.md +74 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/_provenance.json +71 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/_required_tools.json +16 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/_verify.json +4 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/references/cli/validate.json +142 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/references/notes/galaxy-workflow-invocation-failure-reference.md +138 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/references/notes/galaxy-workflow-testability-design.md +136 -0
- package/extensions/orbit/vendor-skills.ts +283 -0
- package/extensions/orbit/workspace-state-dir.ts +46 -0
- package/extensions/orbit-handoff/index.ts +73 -0
- package/extensions/orbit-handoff/orbit-launcher.ts +142 -0
- package/extensions/whats-new/index.ts +98 -0
- package/lessons/LICENSE +17 -0
- package/lessons/README.md +117 -0
- package/lessons/SCHEMA.md +187 -0
- package/lessons/build-snapshot.mjs +311 -0
- package/lessons/data/downloaded-file-is-not-what-its-extension-says.md +61 -0
- package/lessons/galaxy-api/403-history-is-a-hard-stop.md +57 -0
- package/lessons/galaxy-api/collection-into-single-dataset-input.md +61 -0
- package/lessons/galaxy-api/connectedvalue-in-command-line.md +62 -0
- package/lessons/galaxy-api/hid-is-not-an-id.md +59 -0
- package/lessons/galaxy-api/invoke-workflow-inputs-not-params.md +60 -0
- package/lessons/galaxy-api/repeat-param-pipe-keys.md +63 -0
- package/lessons/galaxy-api/run-tool-returns-on-submit.md +61 -0
- package/lessons/galaxy-tools/reference-index-not-on-server.md +62 -0
- package/lessons/log.md +42 -0
- package/lessons/reproduction/input-population-mismatch.md +59 -0
- package/lessons/reproduction/methods-text-vs-executed-parameters.md +62 -0
- package/lessons/snapshot.json +1004 -0
- package/lessons/stats/de-contrast-direction-and-sample-labels.md +63 -0
- package/lessons/stats/na-coerced-to-zero-in-filters.md +59 -0
- package/lessons/validate.mjs +1219 -0
- package/package.json +103 -5
- package/shared/agent-prompt.d.ts +8 -0
- package/shared/agent-prompt.js +15 -0
- package/shared/approval-prompt.d.ts +4 -0
- package/shared/approval-prompt.js +61 -0
- package/shared/brain-env.d.ts +14 -0
- package/shared/brain-env.js +108 -0
- package/shared/brain-exit.d.ts +20 -0
- package/shared/brain-exit.js +149 -0
- package/shared/capability-profile.d.ts +16 -0
- package/shared/capability-profile.js +75 -0
- package/shared/config-source.d.ts +13 -0
- package/shared/config-source.js +17 -0
- package/shared/confusables.d.ts +3 -0
- package/shared/confusables.js +93 -0
- package/shared/custom-provider.d.ts +45 -0
- package/shared/custom-provider.js +169 -0
- package/shared/dashboard-contract.d.ts +123 -0
- package/shared/dashboard-contract.js +560 -0
- package/shared/dashboard-layout-store.d.ts +44 -0
- package/shared/dashboard-layout-store.js +281 -0
- package/shared/feedback-contract.d.ts +61 -0
- package/shared/feedback-contract.js +146 -0
- package/shared/galaxy-artifact-links.d.ts +30 -0
- package/shared/galaxy-artifact-links.js +166 -0
- package/shared/galaxy-credentials.d.ts +26 -0
- package/shared/galaxy-credentials.js +71 -0
- package/shared/galaxy-destructive.d.ts +21 -0
- package/shared/galaxy-destructive.js +269 -0
- package/shared/galaxy-guidance.d.ts +2 -0
- package/shared/galaxy-guidance.js +53 -0
- package/shared/galaxy-live-contract.d.ts +92 -0
- package/shared/galaxy-live-contract.js +180 -0
- package/shared/galaxy-page-cells.d.ts +2 -0
- package/shared/galaxy-page-cells.js +22 -0
- package/shared/galaxy-tool-family.d.ts +5 -0
- package/shared/galaxy-tool-family.js +27 -0
- package/shared/galaxy-url.d.ts +1 -0
- package/shared/galaxy-url.js +48 -0
- package/shared/gtn.d.ts +31 -0
- package/shared/gtn.js +253 -0
- package/shared/handled-prompt.d.ts +3 -0
- package/shared/handled-prompt.js +26 -0
- package/shared/known-provider.d.ts +11 -0
- package/shared/known-provider.js +89 -0
- package/shared/lesson-hint-marker.d.ts +7 -0
- package/shared/lesson-hint-marker.js +32 -0
- package/shared/lesson-rules.d.ts +150 -0
- package/shared/lesson-rules.js +203 -0
- package/shared/malformed-object-ids.d.ts +1 -0
- package/shared/malformed-object-ids.js +37 -0
- package/shared/markdown-sections.d.ts +10 -0
- package/shared/markdown-sections.js +118 -0
- package/shared/notebook-fences.d.ts +12 -0
- package/shared/notebook-fences.js +53 -0
- package/shared/observation-contract.d.ts +91 -0
- package/shared/observation-contract.js +544 -0
- package/shared/orbit-config.d.ts +226 -0
- package/shared/orbit-config.js +189 -0
- package/shared/orbit-env.d.ts +13 -0
- package/shared/orbit-env.js +124 -0
- package/shared/orbit-shell-contract.d.ts +74 -0
- package/shared/orbit-shell-contract.js +30 -0
- package/shared/page-content-hash.d.ts +1 -0
- package/shared/page-content-hash.js +13 -0
- package/shared/pi-default-model.d.ts +7 -0
- package/shared/pi-default-model.js +41 -0
- package/shared/prompt-blocks.d.ts +87 -0
- package/shared/prompt-blocks.js +898 -0
- package/shared/provider-auth-caps.d.ts +22 -0
- package/shared/provider-auth-caps.js +57 -0
- package/shared/random.d.ts +2 -0
- package/shared/random.js +15 -0
- package/shared/record-excerpt.d.ts +4 -0
- package/shared/record-excerpt.js +16 -0
- package/shared/redirect-guard.d.ts +36 -0
- package/shared/redirect-guard.js +235 -0
- package/shared/skills-pin.d.ts +8 -0
- package/shared/skills-pin.js +9 -0
- package/shared/skills-router.d.ts +17 -0
- package/shared/skills-router.js +63 -0
- package/shared/sra-import.d.ts +34 -0
- package/shared/sra-import.js +206 -0
- package/shared/state-dir.d.ts +21 -0
- package/shared/state-dir.js +240 -0
- package/shared/team-dispatch-contract.d.ts +28 -0
- package/shared/team-dispatch-contract.js +1 -0
- package/shared/truncate-middle.d.ts +11 -0
- package/shared/truncate-middle.js +68 -0
- package/shared/version-compare.d.ts +10 -0
- package/shared/version-compare.js +74 -0
- package/shared/whats-new.d.ts +31 -0
- package/shared/whats-new.js +83 -0
- package/shared/wsl.d.ts +10 -0
- package/shared/wsl.js +24 -0
|
@@ -0,0 +1,617 @@
|
|
|
1
|
+
# Workflow Testing with Galaxy MCP and BioBlend
|
|
2
|
+
|
|
3
|
+
Generic guide for testing and validating workflows on Galaxy instances.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
After creating a Galaxy workflow, test it on a Galaxy instance to verify functionality. This guide covers two methods: interactive (Galaxy MCP) and automated (BioBlend script).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Method 1: Interactive Workflow Testing with Galaxy MCP
|
|
14
|
+
|
|
15
|
+
### When to Use
|
|
16
|
+
|
|
17
|
+
- First-time workflow testing
|
|
18
|
+
- Debugging workflow issues
|
|
19
|
+
- Need real-time monitoring
|
|
20
|
+
- Complex workflows requiring iteration
|
|
21
|
+
|
|
22
|
+
### Step 1: Connect to Galaxy
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
# Check connection
|
|
26
|
+
get_server_info()
|
|
27
|
+
|
|
28
|
+
# Connect if needed
|
|
29
|
+
connect(url="https://usegalaxy.org", api_key="YOUR_API_KEY")
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Step 2: Import Workflow
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
# Import workflow from file
|
|
36
|
+
workflow = import_workflow(path="my_workflow.ga")
|
|
37
|
+
|
|
38
|
+
# Returns workflow ID and details
|
|
39
|
+
# Note: This validates that all tools exist
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**If import fails**:
|
|
43
|
+
- Check tool availability (see `tool-checking.md`)
|
|
44
|
+
- Verify workflow JSON structure
|
|
45
|
+
- Check for missing tool versions
|
|
46
|
+
|
|
47
|
+
### Step 3: Create Test History
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
# Create new history for testing
|
|
51
|
+
history = create_history(name="Test: My Workflow")
|
|
52
|
+
|
|
53
|
+
# Get history ID for later use
|
|
54
|
+
history_id = history["id"]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Step 4: Upload Test Data
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
# Upload test input file
|
|
61
|
+
upload_result = upload_file(
|
|
62
|
+
history_id=history_id,
|
|
63
|
+
path="test_data/input.fasta",
|
|
64
|
+
file_type="fasta"
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
# Get dataset ID
|
|
68
|
+
input_dataset_id = upload_result["outputs"][0]["id"]
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Step 5: Invoke Workflow
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
# Invoke workflow with inputs
|
|
75
|
+
invocation = invoke_workflow(
|
|
76
|
+
workflow_id=workflow["id"],
|
|
77
|
+
history_id=history_id,
|
|
78
|
+
inputs={
|
|
79
|
+
"0": {"id": input_dataset_id, "src": "hda"}
|
|
80
|
+
},
|
|
81
|
+
parameters={}
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
# Returns invocation ID
|
|
85
|
+
invocation_id = invocation["id"]
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Input mapping**:
|
|
89
|
+
- `"0"` = workflow step number (input step)
|
|
90
|
+
- `"id"` = dataset ID from upload
|
|
91
|
+
- `"src"` = source type ("hda" = history dataset)
|
|
92
|
+
|
|
93
|
+
### Step 6: Monitor Execution
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
# Check invocation status
|
|
97
|
+
status = get_invocation(
|
|
98
|
+
workflow_id=workflow["id"],
|
|
99
|
+
invocation_id=invocation_id
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
# Check state: "new", "ready", "scheduled", "running", "ok", "error"
|
|
103
|
+
print(f"State: {status['state']}")
|
|
104
|
+
|
|
105
|
+
# Monitor until complete
|
|
106
|
+
while status["state"] in ["new", "ready", "scheduled", "running"]:
|
|
107
|
+
time.sleep(10)
|
|
108
|
+
status = get_invocation(workflow_id=workflow["id"], invocation_id=invocation_id)
|
|
109
|
+
print(f"State: {status['state']}")
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Step 7: Check Results
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
# Get history contents
|
|
116
|
+
contents = get_history_contents(
|
|
117
|
+
history_id=history_id,
|
|
118
|
+
order="create_time-dsc",
|
|
119
|
+
limit=10
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
# Check for errors
|
|
123
|
+
errors = [d for d in contents if d["state"] == "error"]
|
|
124
|
+
if errors:
|
|
125
|
+
print(f"❌ {len(errors)} datasets failed")
|
|
126
|
+
for dataset in errors:
|
|
127
|
+
print(f" - {dataset['name']}: {dataset.get('misc_info', 'Unknown error')}")
|
|
128
|
+
else:
|
|
129
|
+
print("✅ All datasets completed successfully")
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Step 8: Verify Outputs
|
|
133
|
+
|
|
134
|
+
```python
|
|
135
|
+
# Download output for inspection
|
|
136
|
+
output_dataset = [d for d in contents if d["name"] == "Expected Output"][0]
|
|
137
|
+
|
|
138
|
+
# Get dataset details
|
|
139
|
+
details = get_dataset_details(
|
|
140
|
+
history_id=history_id,
|
|
141
|
+
dataset_id=output_dataset["id"]
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
# Verify:
|
|
145
|
+
# - Correct file type
|
|
146
|
+
# - Expected size range
|
|
147
|
+
# - No error messages
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Method 2: Automated Workflow Testing with BioBlend Script
|
|
153
|
+
|
|
154
|
+
### When to Use
|
|
155
|
+
|
|
156
|
+
- Automated validation
|
|
157
|
+
- CI/CD integration
|
|
158
|
+
- Batch testing multiple workflows
|
|
159
|
+
- Quick validation checks
|
|
160
|
+
|
|
161
|
+
### Step 1: Validate Workflow Structure
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# Check workflow without running
|
|
165
|
+
python ../scripts/galaxy_tool_checker.py \
|
|
166
|
+
--url https://usegalaxy.org \
|
|
167
|
+
--api-key $GALAXY_API_KEY \
|
|
168
|
+
--workflow my_workflow.ga \
|
|
169
|
+
--verbose
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Output**:
|
|
173
|
+
```
|
|
174
|
+
============================================================
|
|
175
|
+
Workflow Validation Report
|
|
176
|
+
Workflow: My Workflow
|
|
177
|
+
Galaxy: https://usegalaxy.org
|
|
178
|
+
============================================================
|
|
179
|
+
|
|
180
|
+
Workflow is valid
|
|
181
|
+
- 5/5 tools available
|
|
182
|
+
|
|
183
|
+
Step 0: Input Dataset
|
|
184
|
+
Type: data_input
|
|
185
|
+
|
|
186
|
+
Step 1: Quality Filter
|
|
187
|
+
Tool: toolshed.g2.bx.psu.edu/repos/iuc/fastqc/fastqc/0.12.1+galaxy0
|
|
188
|
+
Status: ✅
|
|
189
|
+
|
|
190
|
+
Step 2: Alignment
|
|
191
|
+
Tool: toolshed.g2.bx.psu.edu/repos/iuc/bwa_mem/bwa_mem/0.7.17+galaxy1
|
|
192
|
+
Status: ✅
|
|
193
|
+
|
|
194
|
+
[...]
|
|
195
|
+
|
|
196
|
+
============================================================
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Step 2: Test Workflow Execution
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
# Import and optionally run workflow
|
|
203
|
+
python ../scripts/galaxy_tool_checker.py \
|
|
204
|
+
--url https://usegalaxy.org \
|
|
205
|
+
--api-key $GALAXY_API_KEY \
|
|
206
|
+
--workflow my_workflow.ga \
|
|
207
|
+
--test \
|
|
208
|
+
--history "Test: My Workflow" \
|
|
209
|
+
--wait
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**Flags**:
|
|
213
|
+
- `--test` - Actually import and invoke workflow
|
|
214
|
+
- `--history` - Create history with this name
|
|
215
|
+
- `--wait` - Wait for workflow completion
|
|
216
|
+
|
|
217
|
+
**Output**:
|
|
218
|
+
```
|
|
219
|
+
============================================================
|
|
220
|
+
Workflow Test Report
|
|
221
|
+
Workflow: My Workflow
|
|
222
|
+
Galaxy: https://usegalaxy.org
|
|
223
|
+
============================================================
|
|
224
|
+
|
|
225
|
+
Workflow is valid
|
|
226
|
+
- 5/5 tools available
|
|
227
|
+
|
|
228
|
+
Workflow imported successfully
|
|
229
|
+
Workflow ID: wf_abc123
|
|
230
|
+
|
|
231
|
+
Workflow invoked
|
|
232
|
+
Invocation ID: inv_def456
|
|
233
|
+
History ID: hist_789xyz
|
|
234
|
+
|
|
235
|
+
Waiting for completion...
|
|
236
|
+
State: scheduled
|
|
237
|
+
State: running
|
|
238
|
+
State: ok
|
|
239
|
+
|
|
240
|
+
Final state: ok ✅
|
|
241
|
+
|
|
242
|
+
============================================================
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Step 3: Parse Results Programmatically
|
|
246
|
+
|
|
247
|
+
```python
|
|
248
|
+
import json
|
|
249
|
+
import subprocess
|
|
250
|
+
|
|
251
|
+
# Run validation
|
|
252
|
+
result = subprocess.run([
|
|
253
|
+
"python", "../scripts/galaxy_tool_checker.py",
|
|
254
|
+
"--url", "https://usegalaxy.org",
|
|
255
|
+
"--api-key", api_key,
|
|
256
|
+
"--workflow", "my_workflow.ga",
|
|
257
|
+
"--output", "validation.json"
|
|
258
|
+
], capture_output=True)
|
|
259
|
+
|
|
260
|
+
# Check exit code
|
|
261
|
+
if result.returncode == 0:
|
|
262
|
+
print("✅ Workflow is valid")
|
|
263
|
+
else:
|
|
264
|
+
print("❌ Workflow validation failed")
|
|
265
|
+
|
|
266
|
+
# Parse results
|
|
267
|
+
with open("validation.json", "r") as f:
|
|
268
|
+
validation = json.load(f)
|
|
269
|
+
|
|
270
|
+
# Check each step
|
|
271
|
+
for step_id, step_info in validation["steps"].items():
|
|
272
|
+
if step_info["status"] != "ok":
|
|
273
|
+
print(f"Problem in step {step_id}: {step_info['error']}")
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Decision Matrix: MCP vs BioBlend Script
|
|
279
|
+
|
|
280
|
+
| Aspect | Galaxy MCP | BioBlend Script |
|
|
281
|
+
|--------|-----------|-----------------|
|
|
282
|
+
| **Validation** | Interactive, step-by-step | Automated, batch |
|
|
283
|
+
| **Execution** | Manual invocation | Can automate with --test |
|
|
284
|
+
| **Monitoring** | Real-time queries | Polling or --wait flag |
|
|
285
|
+
| **Debugging** | Interactive exploration | Log-based |
|
|
286
|
+
| **Iteration** | Agent-driven | Script-driven |
|
|
287
|
+
| **Best For** | Complex debugging | CI/CD, batch testing |
|
|
288
|
+
| **Token usage** | Higher | Lower |
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## Common Workflows
|
|
293
|
+
|
|
294
|
+
### Workflow 1: Initial Testing
|
|
295
|
+
|
|
296
|
+
```
|
|
297
|
+
1. Validate workflow structure (BioBlend script)
|
|
298
|
+
└─ Verify all tools exist
|
|
299
|
+
|
|
300
|
+
2. Import workflow (MCP)
|
|
301
|
+
└─ Check for import errors
|
|
302
|
+
|
|
303
|
+
3. Test with minimal data (MCP)
|
|
304
|
+
└─ Quick validation
|
|
305
|
+
|
|
306
|
+
4. Iterate on failures (MCP)
|
|
307
|
+
└─ Debug interactively
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### Workflow 2: Automated Testing
|
|
311
|
+
|
|
312
|
+
```
|
|
313
|
+
1. Validate structure (BioBlend script)
|
|
314
|
+
└─ --workflow file.ga
|
|
315
|
+
|
|
316
|
+
2. Test execution (BioBlend script)
|
|
317
|
+
└─ --workflow file.ga --test --wait
|
|
318
|
+
|
|
319
|
+
3. Parse results (Python)
|
|
320
|
+
└─ Check exit code and JSON output
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### Workflow 3: Iterative Development
|
|
324
|
+
|
|
325
|
+
```
|
|
326
|
+
1. Create workflow
|
|
327
|
+
2. Test with MCP (interactive)
|
|
328
|
+
3. Fix issues
|
|
329
|
+
4. Repeat until working
|
|
330
|
+
5. Final validation with BioBlend script
|
|
331
|
+
6. Commit workflow
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## Automated Iteration Pattern
|
|
337
|
+
|
|
338
|
+
For complex workflows requiring multiple iterations:
|
|
339
|
+
|
|
340
|
+
```python
|
|
341
|
+
def test_workflow_iteratively(workflow_path, max_iterations=5):
|
|
342
|
+
"""Test workflow and fix issues automatically"""
|
|
343
|
+
|
|
344
|
+
for iteration in range(max_iterations):
|
|
345
|
+
print(f"\n=== Iteration {iteration + 1} ===")
|
|
346
|
+
|
|
347
|
+
# 1. Import workflow
|
|
348
|
+
workflow = import_workflow(path=workflow_path)
|
|
349
|
+
|
|
350
|
+
# 2. Create test history
|
|
351
|
+
history = create_history(name=f"Test iteration {iteration + 1}")
|
|
352
|
+
|
|
353
|
+
# 3. Upload test data
|
|
354
|
+
upload_result = upload_file(
|
|
355
|
+
history_id=history["id"],
|
|
356
|
+
path="test_data/input.fasta",
|
|
357
|
+
file_type="fasta"
|
|
358
|
+
)
|
|
359
|
+
|
|
360
|
+
# 4. Invoke workflow
|
|
361
|
+
invocation = invoke_workflow(
|
|
362
|
+
workflow_id=workflow["id"],
|
|
363
|
+
history_id=history["id"],
|
|
364
|
+
inputs={"0": {"id": upload_result["outputs"][0]["id"], "src": "hda"}}
|
|
365
|
+
)
|
|
366
|
+
|
|
367
|
+
# 5. Wait for completion
|
|
368
|
+
status = wait_for_invocation(workflow["id"], invocation["id"])
|
|
369
|
+
|
|
370
|
+
# 6. Check results
|
|
371
|
+
contents = get_history_contents(history["id"])
|
|
372
|
+
|
|
373
|
+
errors = [d for d in contents if d["state"] == "error"]
|
|
374
|
+
if not errors:
|
|
375
|
+
print("✅ Workflow executed successfully!")
|
|
376
|
+
return True
|
|
377
|
+
|
|
378
|
+
# 7. Analyze and fix errors
|
|
379
|
+
print(f"❌ Found {len(errors)} errors")
|
|
380
|
+
for dataset in errors:
|
|
381
|
+
fix_dataset_error(workflow_path, dataset)
|
|
382
|
+
|
|
383
|
+
return False
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## Troubleshooting
|
|
389
|
+
|
|
390
|
+
### Workflow Import Fails
|
|
391
|
+
|
|
392
|
+
**Causes**:
|
|
393
|
+
- Tool not available on Galaxy instance
|
|
394
|
+
- Invalid workflow JSON structure
|
|
395
|
+
- Tool version mismatch
|
|
396
|
+
|
|
397
|
+
**Solutions**:
|
|
398
|
+
```python
|
|
399
|
+
# Check tool availability first
|
|
400
|
+
python ../scripts/galaxy_tool_checker.py \
|
|
401
|
+
--workflow my_workflow.ga \
|
|
402
|
+
--url https://usegalaxy.org
|
|
403
|
+
|
|
404
|
+
# Validate JSON structure
|
|
405
|
+
import json
|
|
406
|
+
with open("my_workflow.ga") as f:
|
|
407
|
+
workflow = json.load(f)
|
|
408
|
+
# Check for required fields
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### Workflow Execution Fails
|
|
412
|
+
|
|
413
|
+
**Causes**:
|
|
414
|
+
- Invalid input data
|
|
415
|
+
- Tool parameter errors
|
|
416
|
+
- Resource limitations
|
|
417
|
+
|
|
418
|
+
**Solutions**:
|
|
419
|
+
```python
|
|
420
|
+
# Check dataset states
|
|
421
|
+
contents = get_history_contents(history_id=history_id)
|
|
422
|
+
for dataset in contents:
|
|
423
|
+
if dataset["state"] == "error":
|
|
424
|
+
# Get error details
|
|
425
|
+
details = get_dataset_details(history_id, dataset["id"])
|
|
426
|
+
print(f"Error: {details.get('misc_info', 'Unknown')}")
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
### Workflow Hangs
|
|
430
|
+
|
|
431
|
+
**Causes**:
|
|
432
|
+
- Long-running job
|
|
433
|
+
- Queue delays
|
|
434
|
+
- Resource allocation issues
|
|
435
|
+
|
|
436
|
+
**Solutions**:
|
|
437
|
+
```python
|
|
438
|
+
# Check invocation state
|
|
439
|
+
status = get_invocation(workflow_id, invocation_id)
|
|
440
|
+
print(f"State: {status['state']}")
|
|
441
|
+
|
|
442
|
+
# Check individual job states
|
|
443
|
+
for step in status["steps"]:
|
|
444
|
+
print(f"Step {step['order_index']}: {step['state']}")
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
---
|
|
448
|
+
|
|
449
|
+
## Output Comparison
|
|
450
|
+
|
|
451
|
+
### Comparing Workflow Outputs
|
|
452
|
+
|
|
453
|
+
```python
|
|
454
|
+
def compare_outputs(history_id, expected_patterns):
|
|
455
|
+
"""Compare workflow outputs against expected patterns"""
|
|
456
|
+
|
|
457
|
+
contents = get_history_contents(history_id=history_id)
|
|
458
|
+
|
|
459
|
+
results = {}
|
|
460
|
+
for pattern_name, pattern in expected_patterns.items():
|
|
461
|
+
matching = [d for d in contents if pattern in d["name"]]
|
|
462
|
+
results[pattern_name] = {
|
|
463
|
+
"found": len(matching) > 0,
|
|
464
|
+
"count": len(matching),
|
|
465
|
+
"datasets": matching
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
return results
|
|
469
|
+
|
|
470
|
+
# Usage
|
|
471
|
+
expected = {
|
|
472
|
+
"alignment": "aligned",
|
|
473
|
+
"statistics": "stats",
|
|
474
|
+
"filtered": "filtered"
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
results = compare_outputs(history_id, expected)
|
|
478
|
+
for name, result in results.items():
|
|
479
|
+
if result["found"]:
|
|
480
|
+
print(f"✅ {name}: {result['count']} dataset(s)")
|
|
481
|
+
else:
|
|
482
|
+
print(f"❌ {name}: not found")
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
## Best Practices
|
|
488
|
+
|
|
489
|
+
### Pre-Test Checklist
|
|
490
|
+
|
|
491
|
+
- [ ] All tools validated with tool checker
|
|
492
|
+
- [ ] Test data prepared or identified
|
|
493
|
+
- [ ] Test history created
|
|
494
|
+
- [ ] Workflow imported to Galaxy
|
|
495
|
+
|
|
496
|
+
### During Testing
|
|
497
|
+
|
|
498
|
+
1. **Start simple** - Test with minimal input first
|
|
499
|
+
2. **Check each step** - Don't wait for full workflow to fail
|
|
500
|
+
3. **Monitor states** - Use `get_history_contents` frequently
|
|
501
|
+
4. **Document issues** - Keep track of what you fix
|
|
502
|
+
|
|
503
|
+
### Post-Test
|
|
504
|
+
|
|
505
|
+
1. **Verify outputs** - Check file formats and content
|
|
506
|
+
2. **Clean up** - Delete test histories if not needed
|
|
507
|
+
3. **Document tool IDs** - Record exact versions used
|
|
508
|
+
4. **Update workflow** - Commit working `.ga` file
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
512
|
+
## CI/CD Integration
|
|
513
|
+
|
|
514
|
+
### GitHub Actions Example
|
|
515
|
+
|
|
516
|
+
```yaml
|
|
517
|
+
name: Test Galaxy Workflow
|
|
518
|
+
|
|
519
|
+
on: [push, pull_request]
|
|
520
|
+
|
|
521
|
+
jobs:
|
|
522
|
+
test:
|
|
523
|
+
runs-on: ubuntu-latest
|
|
524
|
+
steps:
|
|
525
|
+
- uses: actions/checkout@v2
|
|
526
|
+
|
|
527
|
+
- name: Install dependencies
|
|
528
|
+
run: |
|
|
529
|
+
pip install bioblend
|
|
530
|
+
|
|
531
|
+
- name: Validate workflow
|
|
532
|
+
env:
|
|
533
|
+
GALAXY_API_KEY: ${{ secrets.GALAXY_API_KEY }}
|
|
534
|
+
run: |
|
|
535
|
+
python galaxy_tool_checker.py \
|
|
536
|
+
--url https://usegalaxy.org \
|
|
537
|
+
--workflow workflow.ga \
|
|
538
|
+
--output validation.json
|
|
539
|
+
|
|
540
|
+
- name: Upload results
|
|
541
|
+
uses: actions/upload-artifact@v2
|
|
542
|
+
with:
|
|
543
|
+
name: validation-results
|
|
544
|
+
path: validation.json
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
---
|
|
548
|
+
|
|
549
|
+
## Related Documentation
|
|
550
|
+
|
|
551
|
+
- **Main guide**: `../galaxy-integration.md` - Complete Galaxy integration guide
|
|
552
|
+
- **Tool checking**: `tool-checking.md` - Verify tool availability
|
|
553
|
+
- **BioBlend script**: `../scripts/README.md` - galaxy_tool_checker.py usage
|
|
554
|
+
- **Planemo testing**: `../../../dev-skills/tool-dev/references/testing.md` - Tool-level testing
|
|
555
|
+
|
|
556
|
+
---
|
|
557
|
+
|
|
558
|
+
## Common Issues and Fixes
|
|
559
|
+
|
|
560
|
+
### Issue 1: Tool Not Found
|
|
561
|
+
|
|
562
|
+
**Symptom**: `Tool 'xyz' not found`
|
|
563
|
+
|
|
564
|
+
**Fix**:
|
|
565
|
+
```python
|
|
566
|
+
# Find correct tool ID
|
|
567
|
+
tools = search_tools_by_name(query="xyz")
|
|
568
|
+
# Update .ga file with correct tool_id
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
### Issue 2: Datatype Mismatch
|
|
572
|
+
|
|
573
|
+
**Symptom**: `Incompatible datatype: expected fasta, got txt`
|
|
574
|
+
|
|
575
|
+
**Fix**:
|
|
576
|
+
```python
|
|
577
|
+
# Check tool requirements
|
|
578
|
+
details = get_tool_details(tool_id="...", io_details=True)
|
|
579
|
+
# Update workflow connection or add format conversion step
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
### Issue 3: Missing Parameters
|
|
583
|
+
|
|
584
|
+
**Symptom**: `Required parameter 'threads' not provided`
|
|
585
|
+
|
|
586
|
+
**Fix**:
|
|
587
|
+
```json
|
|
588
|
+
{
|
|
589
|
+
"tool_state": {
|
|
590
|
+
"threads": "4"
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
### Issue 4: Input Mapping Error
|
|
596
|
+
|
|
597
|
+
**Symptom**: `Input step 0 not found`
|
|
598
|
+
|
|
599
|
+
**Fix**:
|
|
600
|
+
```python
|
|
601
|
+
# Check workflow input steps
|
|
602
|
+
# Ensure input mapping matches step indices in .ga file
|
|
603
|
+
inputs = {
|
|
604
|
+
"0": {"id": "dataset_id", "src": "hda"} # Step index must match
|
|
605
|
+
}
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
---
|
|
609
|
+
|
|
610
|
+
## Next Steps
|
|
611
|
+
|
|
612
|
+
After successful testing:
|
|
613
|
+
|
|
614
|
+
1. **Document the workflow** - Add description, annotations
|
|
615
|
+
2. **Create test data** - Package example inputs
|
|
616
|
+
3. **Share workflow** - Export to IWC or local repository
|
|
617
|
+
4. **Integrate with pipeline** - Connect to other workflows if needed
|