@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.
Files changed (451) hide show
  1. package/CHANGELOG.md +123 -0
  2. package/LICENSE +21 -0
  3. package/README.md +760 -5
  4. package/bin/legacy-mcp-config.js +363 -0
  5. package/bin/orbit.js +810 -0
  6. package/bin/pi-extension-path.d.ts +4 -0
  7. package/bin/pi-extension-path.js +44 -0
  8. package/bin/provider-auth.d.ts +22 -0
  9. package/bin/provider-auth.js +77 -0
  10. package/bin/thinking-pref.js +38 -0
  11. package/bin/update-check.d.ts +15 -0
  12. package/bin/update-check.js +137 -0
  13. package/extensions/cli-update/index.ts +32 -0
  14. package/extensions/orbit/activity-hooks.ts +141 -0
  15. package/extensions/orbit/activity.ts +116 -0
  16. package/extensions/orbit/agent-dir.ts +11 -0
  17. package/extensions/orbit/auto-resume.ts +352 -0
  18. package/extensions/orbit/config.ts +3 -0
  19. package/extensions/orbit/confusables.ts +1 -0
  20. package/extensions/orbit/context.ts +957 -0
  21. package/extensions/orbit/dashboard-commands.ts +191 -0
  22. package/extensions/orbit/dashboard-store.ts +473 -0
  23. package/extensions/orbit/dashboard-tools.ts +1185 -0
  24. package/extensions/orbit/empty-completion.ts +99 -0
  25. package/extensions/orbit/evidence-gate.ts +1276 -0
  26. package/extensions/orbit/evidence-override-command.ts +294 -0
  27. package/extensions/orbit/exec-guard/bash-risk.ts +1408 -0
  28. package/extensions/orbit/exec-guard/gate.ts +181 -0
  29. package/extensions/orbit/exec-guard/guardian-config.ts +54 -0
  30. package/extensions/orbit/exec-guard/index.ts +1 -0
  31. package/extensions/orbit/exec-guard/model-tier.ts +36 -0
  32. package/extensions/orbit/exec-guard/path-jail.ts +54 -0
  33. package/extensions/orbit/exec-guard/policy.ts +342 -0
  34. package/extensions/orbit/exec-guard/runtime-state.ts +15 -0
  35. package/extensions/orbit/exec-guard/sensitive-read.ts +525 -0
  36. package/extensions/orbit/exec-guard/types.ts +42 -0
  37. package/extensions/orbit/execution-commands.ts +134 -0
  38. package/extensions/orbit/feedback-command.ts +81 -0
  39. package/extensions/orbit/feedback.ts +96 -0
  40. package/extensions/orbit/galaxy-api.test.ts +122 -0
  41. package/extensions/orbit/galaxy-api.ts +606 -0
  42. package/extensions/orbit/galaxy-artifact-link-guidance.ts +5 -0
  43. package/extensions/orbit/galaxy-destructive-gate.ts +113 -0
  44. package/extensions/orbit/galaxy-enrich.ts +1108 -0
  45. package/extensions/orbit/galaxy-failure.ts +101 -0
  46. package/extensions/orbit/galaxy-fixture.ts +126 -0
  47. package/extensions/orbit/galaxy-history-guard.ts +233 -0
  48. package/extensions/orbit/galaxy-job-block.ts +347 -0
  49. package/extensions/orbit/galaxy-job-ops.ts +288 -0
  50. package/extensions/orbit/galaxy-live-source.ts +929 -0
  51. package/extensions/orbit/galaxy-markdown-adapter.ts +248 -0
  52. package/extensions/orbit/galaxy-op-policy.ts +332 -0
  53. package/extensions/orbit/galaxy-ops-tools.ts +326 -0
  54. package/extensions/orbit/galaxy-output-store.ts +80 -0
  55. package/extensions/orbit/galaxy-output.ts +346 -0
  56. package/extensions/orbit/galaxy-page-binding.ts +222 -0
  57. package/extensions/orbit/galaxy-page-markdown-guidance.ts +15 -0
  58. package/extensions/orbit/galaxy-page-ops.ts +159 -0
  59. package/extensions/orbit/galaxy-page-sync.test.ts +417 -0
  60. package/extensions/orbit/galaxy-page-sync.ts +318 -0
  61. package/extensions/orbit/galaxy-pages-api.ts +203 -0
  62. package/extensions/orbit/galaxy-pages-sync.ts +409 -0
  63. package/extensions/orbit/galaxy-poll-guard.ts +189 -0
  64. package/extensions/orbit/galaxy-poller.ts +706 -0
  65. package/extensions/orbit/galaxy-provenance.ts +623 -0
  66. package/extensions/orbit/galaxy-reconcile.ts +956 -0
  67. package/extensions/orbit/galaxy-recovery.ts +176 -0
  68. package/extensions/orbit/galaxy-repeat-guard.ts +55 -0
  69. package/extensions/orbit/galaxy-submission-capture.ts +707 -0
  70. package/extensions/orbit/galaxy-submission.ts +502 -0
  71. package/extensions/orbit/galaxy-tool-source.ts +78 -0
  72. package/extensions/orbit/galaxy-tool-wrap.ts +234 -0
  73. package/extensions/orbit/galaxy-udt-block.ts +127 -0
  74. package/extensions/orbit/galaxy-upload-tus.ts +334 -0
  75. package/extensions/orbit/galaxy-upload.ts +300 -0
  76. package/extensions/orbit/galaxy-version-capture.ts +65 -0
  77. package/extensions/orbit/git.ts +173 -0
  78. package/extensions/orbit/harness-block-fields.ts +597 -0
  79. package/extensions/orbit/index.ts +593 -0
  80. package/extensions/orbit/init-gate.ts +284 -0
  81. package/extensions/orbit/instructions-command.ts +136 -0
  82. package/extensions/orbit/invocation-failure-hint.ts +57 -0
  83. package/extensions/orbit/iwc-plan-check.ts +94 -0
  84. package/extensions/orbit/lesson-command.ts +303 -0
  85. package/extensions/orbit/lesson-hint.ts +245 -0
  86. package/extensions/orbit/lesson-nudge.ts +106 -0
  87. package/extensions/orbit/lessons/compose.ts +177 -0
  88. package/extensions/orbit/lessons/counters.ts +120 -0
  89. package/extensions/orbit/lessons/enabled.ts +116 -0
  90. package/extensions/orbit/lessons/matcher.ts +346 -0
  91. package/extensions/orbit/lessons/paths.ts +286 -0
  92. package/extensions/orbit/lessons/pi-event-contract.ts +105 -0
  93. package/extensions/orbit/lessons/propose-replay.ts +103 -0
  94. package/extensions/orbit/lessons/propose-tool.ts +222 -0
  95. package/extensions/orbit/lessons/propose.ts +502 -0
  96. package/extensions/orbit/lessons/replay.ts +89 -0
  97. package/extensions/orbit/lessons/reproduction-index.ts +83 -0
  98. package/extensions/orbit/lessons/search-tool.ts +99 -0
  99. package/extensions/orbit/lessons/search.ts +136 -0
  100. package/extensions/orbit/lessons/store.ts +415 -0
  101. package/extensions/orbit/lessons/text.ts +36 -0
  102. package/extensions/orbit/lessons/types.ts +69 -0
  103. package/extensions/orbit/lessons/user-dir.ts +24 -0
  104. package/extensions/orbit/lessons/user-lesson.ts +88 -0
  105. package/extensions/orbit/lessons/wrapper.ts +61 -0
  106. package/extensions/orbit/lessons-command.ts +147 -0
  107. package/extensions/orbit/local-exec.ts +39 -0
  108. package/extensions/orbit/mcp-output.ts +179 -0
  109. package/extensions/orbit/mcp-servers.test.ts +24 -0
  110. package/extensions/orbit/mcp-servers.ts +25 -0
  111. package/extensions/orbit/model-script.ts +351 -0
  112. package/extensions/orbit/notebook-anchors.ts +342 -0
  113. package/extensions/orbit/notebook-writer.ts +863 -0
  114. package/extensions/orbit/observation-allowlists.ts +1109 -0
  115. package/extensions/orbit/observation-replay.ts +148 -0
  116. package/extensions/orbit/observation-triggers.ts +563 -0
  117. package/extensions/orbit/observation-ui.ts +175 -0
  118. package/extensions/orbit/observations-command.ts +421 -0
  119. package/extensions/orbit/observations-config.ts +200 -0
  120. package/extensions/orbit/observations.ts +1381 -0
  121. package/extensions/orbit/profiles.ts +270 -0
  122. package/extensions/orbit/progress-updates.ts +95 -0
  123. package/extensions/orbit/proposal-commands.ts +882 -0
  124. package/extensions/orbit/provenance-fs-file.ts +59 -0
  125. package/extensions/orbit/provenance-fs.ts +32 -0
  126. package/extensions/orbit/provenance-memory-fs.ts +59 -0
  127. package/extensions/orbit/record-store-file.ts +177 -0
  128. package/extensions/orbit/record-store-page.ts +77 -0
  129. package/extensions/orbit/record-store-seam.ts +47 -0
  130. package/extensions/orbit/record-store.ts +149 -0
  131. package/extensions/orbit/registry-carrier.ts +107 -0
  132. package/extensions/orbit/registry-eligibility.ts +95 -0
  133. package/extensions/orbit/registry-evaluation.ts +403 -0
  134. package/extensions/orbit/registry-evaluator.ts +519 -0
  135. package/extensions/orbit/registry-import.ts +91 -0
  136. package/extensions/orbit/registry-lock.ts +221 -0
  137. package/extensions/orbit/registry-memory-fs.ts +42 -0
  138. package/extensions/orbit/registry-page-carrier.ts +103 -0
  139. package/extensions/orbit/registry-proposal.ts +1348 -0
  140. package/extensions/orbit/registry-runtime.ts +234 -0
  141. package/extensions/orbit/registry-schema.ts +735 -0
  142. package/extensions/orbit/registry-submitter.ts +59 -0
  143. package/extensions/orbit/registry-templates.ts +346 -0
  144. package/extensions/orbit/registry.ts +476 -0
  145. package/extensions/orbit/sandbox/index.ts +120 -0
  146. package/extensions/orbit/sandbox/sandbox-bash.ts +93 -0
  147. package/extensions/orbit/sandbox/sandbox-config.ts +87 -0
  148. package/extensions/orbit/sandbox/sandbox-init-message.ts +28 -0
  149. package/extensions/orbit/secret-redaction.ts +247 -0
  150. package/extensions/orbit/session-index/cwd.ts +18 -0
  151. package/extensions/orbit/session-index/db.ts +56 -0
  152. package/extensions/orbit/session-index/indexer.ts +154 -0
  153. package/extensions/orbit/session-index/is-enabled.ts +17 -0
  154. package/extensions/orbit/session-index/parse.ts +254 -0
  155. package/extensions/orbit/session-index/query.ts +209 -0
  156. package/extensions/orbit/session-index/schema.ts +72 -0
  157. package/extensions/orbit/session-index/tools.ts +152 -0
  158. package/extensions/orbit/session-lifecycle.ts +321 -0
  159. package/extensions/orbit/skill-triggers.ts +159 -0
  160. package/extensions/orbit/skills-command.ts +48 -0
  161. package/extensions/orbit/skills-discovery.ts +435 -0
  162. package/extensions/orbit/skills.ts +84 -0
  163. package/extensions/orbit/sra-import-gate.ts +77 -0
  164. package/extensions/orbit/state.ts +265 -0
  165. package/extensions/orbit/submission-replay.ts +147 -0
  166. package/extensions/orbit/sync-command.ts +157 -0
  167. package/extensions/orbit/teams/critic-parser.ts +93 -0
  168. package/extensions/orbit/teams/dispatcher.ts +210 -0
  169. package/extensions/orbit/teams/is-enabled.ts +22 -0
  170. package/extensions/orbit/teams/tool.ts +187 -0
  171. package/extensions/orbit/teams/types.ts +57 -0
  172. package/extensions/orbit/teams/validate.ts +42 -0
  173. package/extensions/orbit/tester-id-command.ts +133 -0
  174. package/extensions/orbit/tools-sync.ts +279 -0
  175. package/extensions/orbit/tools.ts +1300 -0
  176. package/extensions/orbit/types.ts +41 -0
  177. package/extensions/orbit/ui-bridge.ts +55 -0
  178. package/extensions/orbit/ulid.ts +60 -0
  179. package/extensions/orbit/user-instructions.ts +388 -0
  180. package/extensions/orbit/vendor/skills/_catalog.json +68 -0
  181. package/extensions/orbit/vendor/skills/_manifest.json +1106 -0
  182. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/SKILL.md +112 -0
  183. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/_provenance.json +218 -0
  184. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/_required_tools.json +33 -0
  185. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/_verify.json +4 -0
  186. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/add.json +50 -0
  187. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/draft-extract.json +51 -0
  188. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/draft-next-step.json +42 -0
  189. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/draft-validate.json +140 -0
  190. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/list.json +32 -0
  191. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/notes/galaxy-tool-job-failure-reference.md +137 -0
  192. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/notes/open-requirements-ledger.md +173 -0
  193. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/schemas/galaxy-tool-summary.schema.json +175 -0
  194. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/schemas/galaxy-workflow-draft.schema.json +2727 -0
  195. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/SKILL.md +82 -0
  196. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/_provenance.json +133 -0
  197. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/_required_tools.json +16 -0
  198. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/_verify.json +4 -0
  199. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/cli/draft-validate.json +140 -0
  200. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/notes/galaxy-workflow-draft-format.md +135 -0
  201. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/notes/open-requirements-ledger.md +173 -0
  202. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/schemas/galaxy-workflow-draft.schema.json +2727 -0
  203. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/SKILL.md +84 -0
  204. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/_provenance.json +166 -0
  205. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/_verify.json +29 -0
  206. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/galaxy-workflow-testability-design.md +136 -0
  207. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
  208. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/iwc-test-data-conventions.md +308 -0
  209. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/planemo-asserts-idioms.md +246 -0
  210. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/planemo-workflow-test-architecture.md +151 -0
  211. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/schemas/galaxy-workflow-test-plan.schema.json +552 -0
  212. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/schemas/summary-galaxy-workflow.schema.json +687 -0
  213. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/schemas/tests-format.schema.json +7328 -0
  214. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/SKILL.md +127 -0
  215. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/_provenance.json +198 -0
  216. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/_required_tools.json +16 -0
  217. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/_verify.json +4 -0
  218. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/cli/convert.json +123 -0
  219. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/galaxy-data-flow-draft-contract.md +129 -0
  220. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
  221. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/iwc-test-data-conventions.md +308 -0
  222. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/open-requirements-ledger.md +173 -0
  223. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/SKILL.md +73 -0
  224. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/_provenance.json +160 -0
  225. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/_verify.json +4 -0
  226. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-collection-semantics.md +43 -0
  227. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-collection-semantics.yml +1250 -0
  228. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-tool-job-failure-reference.md +137 -0
  229. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-workflow-invocation-failure-reference.md +138 -0
  230. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
  231. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/nextflow-operators-to-galaxy-collection-recipes.md +98 -0
  232. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/planemo-asserts-idioms.md +246 -0
  233. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/planemo-workflow-test-architecture.md +151 -0
  234. package/extensions/orbit/vendor/skills/discover-shed-tool/SKILL.md +174 -0
  235. package/extensions/orbit/vendor/skills/discover-shed-tool/_provenance.json +130 -0
  236. package/extensions/orbit/vendor/skills/discover-shed-tool/_required_tools.json +18 -0
  237. package/extensions/orbit/vendor/skills/discover-shed-tool/_verify.json +17 -0
  238. package/extensions/orbit/vendor/skills/discover-shed-tool/references/cli/tool-revisions.json +48 -0
  239. package/extensions/orbit/vendor/skills/discover-shed-tool/references/cli/tool-search.json +95 -0
  240. package/extensions/orbit/vendor/skills/discover-shed-tool/references/cli/tool-versions.json +39 -0
  241. package/extensions/orbit/vendor/skills/discover-shed-tool/references/notes/component-tool-shed-search.md +230 -0
  242. package/extensions/orbit/vendor/skills/discover-shed-tool/references/schemas/galaxy-tool-discovery.schema.json +231 -0
  243. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/SKILL.md +93 -0
  244. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/_provenance.json +201 -0
  245. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/_required_tools.json +28 -0
  246. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/_verify.json +17 -0
  247. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/cli/planemo.md +44 -0
  248. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/cli/validate-tests.json +40 -0
  249. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/galaxy-workflow-testability-design.md +136 -0
  250. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
  251. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/iwc-test-data-conventions.md +308 -0
  252. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/planemo-asserts-idioms.md +246 -0
  253. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/planemo-workflow-test-architecture.md +151 -0
  254. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/schemas/galaxy-workflow-test-plan.schema.json +552 -0
  255. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/schemas/tests-format.schema.json +7328 -0
  256. package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/SKILL.md +81 -0
  257. package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/_provenance.json +93 -0
  258. package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/_verify.json +17 -0
  259. package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/references/notes/open-requirements-ledger.md +173 -0
  260. package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/references/schemas/summary-galaxy-workflow.schema.json +687 -0
  261. package/extensions/orbit/vendor/skills/pipeline-update-interview-to-galaxy/SKILL.md +81 -0
  262. package/extensions/orbit/vendor/skills/pipeline-update-interview-to-galaxy/_assembly.json +23 -0
  263. package/extensions/orbit/vendor/skills/run-workflow-test/SKILL.md +79 -0
  264. package/extensions/orbit/vendor/skills/run-workflow-test/_provenance.json +125 -0
  265. package/extensions/orbit/vendor/skills/run-workflow-test/_required_tools.json +28 -0
  266. package/extensions/orbit/vendor/skills/run-workflow-test/_verify.json +4 -0
  267. package/extensions/orbit/vendor/skills/run-workflow-test/references/cli/planemo.md +44 -0
  268. package/extensions/orbit/vendor/skills/run-workflow-test/references/cli/validate-tests.json +40 -0
  269. package/extensions/orbit/vendor/skills/run-workflow-test/references/notes/galaxy-workflow-invocation-failure-reference.md +138 -0
  270. package/extensions/orbit/vendor/skills/run-workflow-test/references/notes/planemo-asserts-idioms.md +246 -0
  271. package/extensions/orbit/vendor/skills/run-workflow-test/references/notes/planemo-workflow-test-architecture.md +151 -0
  272. package/extensions/orbit/vendor/skills/run-workflow-test/references/schemas/tests-format.schema.json +7328 -0
  273. package/extensions/orbit/vendor/skills/skills/LICENSE +21 -0
  274. package/extensions/orbit/vendor/skills/skills/collection-manipulation/README.md +39 -0
  275. package/extensions/orbit/vendor/skills/skills/collection-manipulation/SKILL.md +892 -0
  276. package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/api-patterns.md +927 -0
  277. package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/apply-rules.md +1482 -0
  278. package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/test-patterns.md +996 -0
  279. package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/tools.md +609 -0
  280. package/extensions/orbit/vendor/skills/skills/galaxy-data-libraries/SKILL.md +170 -0
  281. package/extensions/orbit/vendor/skills/skills/galaxy-integration/README.md +162 -0
  282. package/extensions/orbit/vendor/skills/skills/galaxy-integration/SKILL.md +99 -0
  283. package/extensions/orbit/vendor/skills/skills/galaxy-integration/examples/README.md +119 -0
  284. package/extensions/orbit/vendor/skills/skills/galaxy-integration/examples/tool-checking.md +419 -0
  285. package/extensions/orbit/vendor/skills/skills/galaxy-integration/examples/workflow-testing.md +617 -0
  286. package/extensions/orbit/vendor/skills/skills/galaxy-integration/galaxy-integration.md +614 -0
  287. package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/SKILL.md +144 -0
  288. package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/average_col3.ipynb +68 -0
  289. package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/extract_sample_metadata.ipynb +190 -0
  290. package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/variant_annotation.ipynb +816 -0
  291. package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/vcp_variant_map.ipynb +443 -0
  292. package/extensions/orbit/vendor/skills/skills/galaxy-integration/scripts/README.md +165 -0
  293. package/extensions/orbit/vendor/skills/skills/galaxy-integration/scripts/galaxy_tool_checker.py +521 -0
  294. package/extensions/orbit/vendor/skills/skills/galaxy-mcp-reference/SKILL.md +128 -0
  295. package/extensions/orbit/vendor/skills/skills/galaxy-mcp-reference/gotchas.md +135 -0
  296. package/extensions/orbit/vendor/skills/skills/galaxy-mcp-reference/history-access.md +132 -0
  297. package/extensions/orbit/vendor/skills/skills/reproduciblify/SKILL.md +146 -0
  298. package/extensions/orbit/vendor/skills/skills/reproduciblify/references/directives.yml +496 -0
  299. package/extensions/orbit/vendor/skills/skills/udt-authoring/SKILL.md +245 -0
  300. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/01-minimal-echo.yml +27 -0
  301. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/02-single-data-in-out.yml +27 -0
  302. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/03-multiple-data-js.yml +28 -0
  303. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/04-select-integer-boolean.yml +41 -0
  304. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/05-resource-requirements.yml +25 -0
  305. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/06-biocontainer-tool.yml +38 -0
  306. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/07-inline-python-script.yml +56 -0
  307. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/08-configfile-script.yml +74 -0
  308. package/extensions/orbit/vendor/skills/skills/udt-authoring/references/common-mistakes.md +76 -0
  309. package/extensions/orbit/vendor/skills/skills/udt-authoring/references/schema-reference.md +155 -0
  310. package/extensions/orbit/vendor/skills/skills/udt-authoring/references/templating.md +196 -0
  311. package/extensions/orbit/vendor/skills/skills/udt-authoring/scripts/validate.py +109 -0
  312. package/extensions/orbit/vendor/skills/skills/workflow-reports/README.md +71 -0
  313. package/extensions/orbit/vendor/skills/skills/workflow-reports/SKILL.md +190 -0
  314. package/extensions/orbit/vendor/skills/skills/workflow-reports/examples/histology-staining.md +145 -0
  315. package/extensions/orbit/vendor/skills/skills/workflow-reports/examples/tissue-microarray-analysis.md +176 -0
  316. package/extensions/orbit/vendor/skills/skills/workflow-reports/references/directives.md +415 -0
  317. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/SKILL.md +98 -0
  318. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/_provenance.json +93 -0
  319. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/_required_tools.json +28 -0
  320. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/_verify.json +17 -0
  321. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/cli/convert.json +123 -0
  322. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/cli/foundry.md +25 -0
  323. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/cli/validate.json +142 -0
  324. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/schemas/summary-galaxy-workflow.schema.json +687 -0
  325. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/SKILL.md +74 -0
  326. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/_provenance.json +71 -0
  327. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/_required_tools.json +16 -0
  328. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/_verify.json +4 -0
  329. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/references/cli/validate.json +142 -0
  330. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/references/notes/galaxy-workflow-invocation-failure-reference.md +138 -0
  331. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/references/notes/galaxy-workflow-testability-design.md +136 -0
  332. package/extensions/orbit/vendor-skills.ts +283 -0
  333. package/extensions/orbit/workspace-state-dir.ts +46 -0
  334. package/extensions/orbit-handoff/index.ts +73 -0
  335. package/extensions/orbit-handoff/orbit-launcher.ts +142 -0
  336. package/extensions/whats-new/index.ts +98 -0
  337. package/lessons/LICENSE +17 -0
  338. package/lessons/README.md +117 -0
  339. package/lessons/SCHEMA.md +187 -0
  340. package/lessons/build-snapshot.mjs +311 -0
  341. package/lessons/data/downloaded-file-is-not-what-its-extension-says.md +61 -0
  342. package/lessons/galaxy-api/403-history-is-a-hard-stop.md +57 -0
  343. package/lessons/galaxy-api/collection-into-single-dataset-input.md +61 -0
  344. package/lessons/galaxy-api/connectedvalue-in-command-line.md +62 -0
  345. package/lessons/galaxy-api/hid-is-not-an-id.md +59 -0
  346. package/lessons/galaxy-api/invoke-workflow-inputs-not-params.md +60 -0
  347. package/lessons/galaxy-api/repeat-param-pipe-keys.md +63 -0
  348. package/lessons/galaxy-api/run-tool-returns-on-submit.md +61 -0
  349. package/lessons/galaxy-tools/reference-index-not-on-server.md +62 -0
  350. package/lessons/log.md +42 -0
  351. package/lessons/reproduction/input-population-mismatch.md +59 -0
  352. package/lessons/reproduction/methods-text-vs-executed-parameters.md +62 -0
  353. package/lessons/snapshot.json +1004 -0
  354. package/lessons/stats/de-contrast-direction-and-sample-labels.md +63 -0
  355. package/lessons/stats/na-coerced-to-zero-in-filters.md +59 -0
  356. package/lessons/validate.mjs +1219 -0
  357. package/package.json +103 -5
  358. package/shared/agent-prompt.d.ts +8 -0
  359. package/shared/agent-prompt.js +15 -0
  360. package/shared/approval-prompt.d.ts +4 -0
  361. package/shared/approval-prompt.js +61 -0
  362. package/shared/brain-env.d.ts +14 -0
  363. package/shared/brain-env.js +108 -0
  364. package/shared/brain-exit.d.ts +20 -0
  365. package/shared/brain-exit.js +149 -0
  366. package/shared/capability-profile.d.ts +16 -0
  367. package/shared/capability-profile.js +75 -0
  368. package/shared/config-source.d.ts +13 -0
  369. package/shared/config-source.js +17 -0
  370. package/shared/confusables.d.ts +3 -0
  371. package/shared/confusables.js +93 -0
  372. package/shared/custom-provider.d.ts +45 -0
  373. package/shared/custom-provider.js +169 -0
  374. package/shared/dashboard-contract.d.ts +123 -0
  375. package/shared/dashboard-contract.js +560 -0
  376. package/shared/dashboard-layout-store.d.ts +44 -0
  377. package/shared/dashboard-layout-store.js +281 -0
  378. package/shared/feedback-contract.d.ts +61 -0
  379. package/shared/feedback-contract.js +146 -0
  380. package/shared/galaxy-artifact-links.d.ts +30 -0
  381. package/shared/galaxy-artifact-links.js +166 -0
  382. package/shared/galaxy-credentials.d.ts +26 -0
  383. package/shared/galaxy-credentials.js +71 -0
  384. package/shared/galaxy-destructive.d.ts +21 -0
  385. package/shared/galaxy-destructive.js +269 -0
  386. package/shared/galaxy-guidance.d.ts +2 -0
  387. package/shared/galaxy-guidance.js +53 -0
  388. package/shared/galaxy-live-contract.d.ts +92 -0
  389. package/shared/galaxy-live-contract.js +180 -0
  390. package/shared/galaxy-page-cells.d.ts +2 -0
  391. package/shared/galaxy-page-cells.js +22 -0
  392. package/shared/galaxy-tool-family.d.ts +5 -0
  393. package/shared/galaxy-tool-family.js +27 -0
  394. package/shared/galaxy-url.d.ts +1 -0
  395. package/shared/galaxy-url.js +48 -0
  396. package/shared/gtn.d.ts +31 -0
  397. package/shared/gtn.js +253 -0
  398. package/shared/handled-prompt.d.ts +3 -0
  399. package/shared/handled-prompt.js +26 -0
  400. package/shared/known-provider.d.ts +11 -0
  401. package/shared/known-provider.js +89 -0
  402. package/shared/lesson-hint-marker.d.ts +7 -0
  403. package/shared/lesson-hint-marker.js +32 -0
  404. package/shared/lesson-rules.d.ts +150 -0
  405. package/shared/lesson-rules.js +203 -0
  406. package/shared/malformed-object-ids.d.ts +1 -0
  407. package/shared/malformed-object-ids.js +37 -0
  408. package/shared/markdown-sections.d.ts +10 -0
  409. package/shared/markdown-sections.js +118 -0
  410. package/shared/notebook-fences.d.ts +12 -0
  411. package/shared/notebook-fences.js +53 -0
  412. package/shared/observation-contract.d.ts +91 -0
  413. package/shared/observation-contract.js +544 -0
  414. package/shared/orbit-config.d.ts +226 -0
  415. package/shared/orbit-config.js +189 -0
  416. package/shared/orbit-env.d.ts +13 -0
  417. package/shared/orbit-env.js +124 -0
  418. package/shared/orbit-shell-contract.d.ts +74 -0
  419. package/shared/orbit-shell-contract.js +30 -0
  420. package/shared/page-content-hash.d.ts +1 -0
  421. package/shared/page-content-hash.js +13 -0
  422. package/shared/pi-default-model.d.ts +7 -0
  423. package/shared/pi-default-model.js +41 -0
  424. package/shared/prompt-blocks.d.ts +87 -0
  425. package/shared/prompt-blocks.js +898 -0
  426. package/shared/provider-auth-caps.d.ts +22 -0
  427. package/shared/provider-auth-caps.js +57 -0
  428. package/shared/random.d.ts +2 -0
  429. package/shared/random.js +15 -0
  430. package/shared/record-excerpt.d.ts +4 -0
  431. package/shared/record-excerpt.js +16 -0
  432. package/shared/redirect-guard.d.ts +36 -0
  433. package/shared/redirect-guard.js +235 -0
  434. package/shared/skills-pin.d.ts +8 -0
  435. package/shared/skills-pin.js +9 -0
  436. package/shared/skills-router.d.ts +17 -0
  437. package/shared/skills-router.js +63 -0
  438. package/shared/sra-import.d.ts +34 -0
  439. package/shared/sra-import.js +206 -0
  440. package/shared/state-dir.d.ts +21 -0
  441. package/shared/state-dir.js +240 -0
  442. package/shared/team-dispatch-contract.d.ts +28 -0
  443. package/shared/team-dispatch-contract.js +1 -0
  444. package/shared/truncate-middle.d.ts +11 -0
  445. package/shared/truncate-middle.js +68 -0
  446. package/shared/version-compare.d.ts +10 -0
  447. package/shared/version-compare.js +74 -0
  448. package/shared/whats-new.d.ts +31 -0
  449. package/shared/whats-new.js +83 -0
  450. package/shared/wsl.d.ts +10 -0
  451. 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