@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,190 @@
1
+ ---
2
+ name: workflow-reports
3
+ description: Use this skill when asked to create, draft, or write a Galaxy workflow report template for the Workflow Editor's Report tab. Triggers on requests like "create a report for this workflow", "draft a workflow report template", "write a Galaxy report for workflow <id/url>".
4
+ metadata:
5
+ surfaces: [loom]
6
+ ---
7
+
8
+ # Galaxy Workflow Report Templates
9
+
10
+ Draft reusable Galaxy markdown report templates for the Workflow Editor's **Report** tab.
11
+
12
+ ## Required Input
13
+
14
+ **This skill requires the full workflow definition.** Two equivalent options:
15
+
16
+ **Option A — `.ga` file** (preferred for local/IWC workflows):
17
+ Read the `.ga` file directly. It is a JSON object with the same structure as the API response. The `report.markdown` field is what this skill writes — it defaults to a minimal template (`invocation_inputs`, `invocation_outputs`, `workflow_display`) that should be replaced.
18
+
19
+ **Option B — Galaxy API**:
20
+ ```
21
+ GET https://<instance>/api/workflows/<id>/download?style=editor
22
+ ```
23
+ > **Critical:** Use the `/download?style=editor` endpoint — not `/api/workflows/<id>`. The regular endpoint does **not** return `step.label` or `workflow_outputs`, which are essential for writing directives. Without them, no `output="..."`, `input="..."`, or `step="..."` references will work.
24
+
25
+ If the user provides a browser URL like `https://usegalaxy.eu/workflows/run?id=abc123`, extract the ID and construct the download URL yourself.
26
+
27
+ **Output:** The drafted report markdown is written into the `report.markdown` field of the `.ga` file (with user confirmation), or presented as a code block for pasting into the Workflow Editor's Report tab.
28
+
29
+ ---
30
+
31
+ ## Core Philosophy
32
+
33
+ Reports are **templates** — they are written before knowing what inputs the user will provide or whether the run will succeed. Never assume:
34
+ - Inputs are valid, in the expected format, or of the expected type
35
+ - The run completed successfully or produced expected outputs
36
+ - Biological/scientific meaning of results (the same workflow can be used in different contexts)
37
+
38
+ Use conditional, descriptive language throughout:
39
+ - Summary: "is designed to", "expects", "should produce"
40
+ - Output sections: "if the run completed successfully, this should show..."
41
+ - Column descriptions: what a column *measures*, not what it *means*
42
+
43
+ ---
44
+
45
+ ## Step 1 — Parse the workflow
46
+
47
+ From the JSON response, extract:
48
+
49
+ **Inputs** — steps where `type` is `data_input` or `data_collection_input`:
50
+ - `steps[N].label` → used in `input="..."` directives
51
+ - `steps[N].annotation` → describes what data is expected (use for prose, not directives)
52
+ - `steps[N].type` → `data_input` (single dataset) vs `data_collection_input` (list/paired collection)
53
+
54
+ **Workflow outputs** — steps where `steps[N].workflow_outputs` is a non-empty array:
55
+ - `steps[N].workflow_outputs[].label` → used in `output="..."` directives
56
+ - `steps[N].label` → the step's short name, used in `step="..."` for `job_parameters`
57
+ - `steps[N].annotation` → use for prose about what this output represents
58
+
59
+ > **Important distinction:** `steps[N].label` is the short identifier (e.g. `"Color Deconvolution"`) used in directives. `steps[N].annotation` is a longer description useful only for prose. Do not confuse them.
60
+
61
+ **Top-level metadata**: `name` (report title), `annotation` (primary source for Summary prose), `tags` (domain context), `license`, `creator`
62
+
63
+ If working from a `.ga` file, also check for a co-located `README.md` in the same directory — IWC workflows often have one with richer descriptions than the `annotation` field.
64
+
65
+ ---
66
+
67
+ ## Step 2 — Select which outputs to feature
68
+
69
+ Not every `workflow_outputs` entry deserves its own section. Apply these rules:
70
+
71
+ **Always include:**
72
+ - The final/terminal tabular output (primary quantitative result)
73
+ - Any output that is the direct basis for the quantitative result (e.g. the binary mask an area measurement is computed from)
74
+
75
+ **Include selectively:**
76
+ - Intermediate images that help the user understand whether the pipeline worked correctly (e.g. a segmentation mask is more informative than a raw deconvolved channel)
77
+ - Prefer outputs closest to the end of the pipeline over early intermediates
78
+
79
+ **Skip or collapse:**
80
+ - Purely intermediate outputs that are only inputs to subsequent steps
81
+ - Outputs that duplicate information already shown
82
+
83
+ **When in doubt:** ask yourself — if the run produced unexpected results, which output would a user look at first to debug it? That's the one to feature.
84
+
85
+ ---
86
+
87
+ ## Step 3 — Classify selected outputs
88
+
89
+ | Output type | Directive |
90
+ |-------------|-----------|
91
+ | Image (TIFF, PNG, JPEG) | `history_dataset_as_image(output="<label>")` |
92
+ | Collection of images | `history_dataset_as_image(output="<label>")` — same directive, works for collections too |
93
+ | Tabular / TSV / CSV | `history_dataset_as_table(output="<label>", show_column_headers=true, compact=true)` + `history_dataset_link(output="<label>", label="Download ...")` |
94
+ | HTML / text | `history_dataset_embedded(output="<label>")` |
95
+ | Unknown | `history_dataset_display(output="<label>")` |
96
+
97
+ For image-type **inputs**, use `history_dataset_as_image(input="<input label>")`.
98
+ For non-image inputs or a general input listing, use `invocation_inputs()`.
99
+
100
+ ---
101
+
102
+ ## Step 4 — Build the report
103
+
104
+ ### Required sections
105
+
106
+ **1. Title + run timestamp**
107
+
108
+ ````
109
+ # <Workflow Name>
110
+
111
+ ```galaxy
112
+ invocation_time()
113
+ ```
114
+ ````
115
+
116
+ **2. Summary**
117
+ - One paragraph: what the workflow is designed to do, what inputs it expects, what outputs it should produce.
118
+ - Use the top-level `annotation` and step annotations to inform the prose — do not copy them verbatim.
119
+ - End the section with `workflow_image()`.
120
+
121
+ **3. Inputs**
122
+ - Brief prose describing what the input(s) represent and what format/type is expected.
123
+ - For image inputs: `history_dataset_as_image(input="<label>")`.
124
+ - For non-image or multiple inputs: `invocation_inputs()`.
125
+
126
+ **4. Key output sections** (one subsection per selected output)
127
+ - Brief prose: what this output represents and how it was produced — phrased conditionally.
128
+ - The appropriate directive immediately follows.
129
+ - For processed images (masks, segmentations): explain the visual encoding conditionally ("in a successful run, white pixels should represent...").
130
+
131
+ **5. Results** (when tabular outputs exist)
132
+ - A markdown table of expected columns: name and description (factual/definitional only) — this goes **before** the directive so the reader understands the columns before seeing the live data.
133
+ - Then `history_dataset_as_table(...)` followed by `history_dataset_link(...)`.
134
+
135
+ **6. Reproducibility**
136
+
137
+ ```galaxy
138
+ history_link()
139
+ ```
140
+
141
+ ### Optional sections
142
+
143
+ - `job_parameters(step="<label>", collapse="Show <step> parameters")` — for analytical steps where the chosen parameters significantly affect interpretation
144
+ - `invocation_outputs()` — useful when the workflow has many outputs and a full listing helps
145
+ - `workflow_display(collapse="Show full workflow details")`
146
+
147
+ ---
148
+
149
+ ## Directive Syntax Rules
150
+
151
+ **Block syntax only — no exceptions:**
152
+
153
+ ```galaxy
154
+ directive_name(arg=value)
155
+ ```
156
+
157
+ One directive per fenced block. Never stack multiple directives in one block. The `${galaxy ...}` inline syntax does **not** work.
158
+
159
+ **Abstract references in workflow templates** (never hardcode IDs):
160
+ - `input="<label>"` — workflow input by its label
161
+ - `output="<label>"` — marked workflow output by its label
162
+ - `step="<label>"` — step by its label
163
+
164
+ Quotes are required when the value contains spaces.
165
+
166
+ See `references/directives.md` for the full directive reference (synced from upstream Galaxy via `make sync-directives`).
167
+
168
+ ---
169
+
170
+ ## Gotchas
171
+
172
+ | Issue | What to do |
173
+ |-------|-----------|
174
+ | `step.label` is null for many steps | Only use `job_parameters(step=...)` for steps that have a non-null `label`. Silently skip others. |
175
+ | `workflow_outputs` is empty for a step that should be an output | Flag to the user: they must open the step in the Workflow Editor, star the output, and save. Then the `output="..."` directive can reference it. |
176
+ | An important terminal output isn't marked (e.g. a final column-computation step) | Flag it specifically — name the step and describe what it produces. Don't silently omit it or use a less complete upstream output as a substitute without noting the limitation. |
177
+ | Step annotations are very long | Use them to inform prose — do not copy them verbatim into the report. |
178
+ | Multiple image outputs at different pipeline stages | Prefer the output closest to the final result. Intermediate outputs can be omitted or mentioned in prose only. |
179
+
180
+ ---
181
+
182
+ ## After drafting
183
+
184
+ Present the template in a code block ready to paste into the Workflow Editor's Report tab.
185
+
186
+ Also explicitly flag:
187
+ 1. Any important steps whose output is **not** marked as a `workflow_output` — name the step, what it produces, and instruct the user to star it in the editor.
188
+ 2. Any steps referenced in prose that have no `label` and therefore cannot be used with `job_parameters`.
189
+
190
+ See `examples/histology-staining.md` for a complete worked example.
@@ -0,0 +1,145 @@
1
+ # Example: Histological Staining Area Quantification
2
+
3
+ A complete worked example of applying the workflow-reports skill to a real imaging analysis workflow.
4
+
5
+ ## Workflow Metadata
6
+
7
+ | Field | Value |
8
+ |-------|-------|
9
+ | Name | histology-stain-area-quantification |
10
+ | Instance | usegalaxy.eu |
11
+ | ID | `e429074ee0a47cb3` |
12
+ | Download URL | `https://usegalaxy.eu/api/workflows/e429074ee0a47cb3/download?style=editor` |
13
+ | Purpose | Quantify staining area in brightfield histological images using colour deconvolution and automated thresholding |
14
+ | Compatible stainings | IHC (DAB chromogen), Masson's Trichrome |
15
+
16
+ ## Extracted Data
17
+
18
+ ### Inputs
19
+
20
+ | Step | Label | Type | Annotation |
21
+ |------|-------|------|-----------|
22
+ | 0 | `ROI image for staining analysis` | `data_collection_input` | Brightfield TIFF images, RGB, one ROI per element |
23
+
24
+ ### Workflow Outputs
25
+
26
+ | Step | Step label | Output label | Type |
27
+ |------|-----------|--------------|------|
28
+ | 3 | `Color Deconvolution` | `Deconvolved Image` | Multi-channel image |
29
+ | 5 | `Split Image Channels for Staining Detection` | `Collection: Individual Deconvolved Channels` | Image collection |
30
+ | 8 | `Collection: Extract Stain Channel from Sub-Collections` | `Selected Stain Channel` | Image collection |
31
+ | 11 | `Threshold Stain Channel Collection` | `Selected Stain Channel Thresholded` | Image collection (binary mask) |
32
+ | 13 | `Extract Image Features` | `Collection of Tabular: Staining Quantification Results` | Tabular collection |
33
+ | 25 | `Tabular: Staining Feature Results` | `Tabular File: Staining Feature Results` | Tabular (TSV) |
34
+
35
+ **Note:** Step 27 (`Percent area computation`) computes the `percent_area` column but its output is **not marked as a workflow output**. The marked output (`Tabular File: Staining Feature Results`, step 25) is the pre-percent-area table. To include `percent_area` in the embedded table, the step 27 output must be starred in the Workflow Editor.
36
+
37
+ ### Key Step Labels (for `job_parameters`)
38
+
39
+ - `Color Deconvolution`
40
+ - `Threshold Stain Channel Collection`
41
+ - `Extract Image Features`
42
+
43
+ ### Output Columns (`Tabular File: Staining Feature Results`)
44
+
45
+ | Column | Description |
46
+ |--------|-------------|
47
+ | `sample_id` | Identifier derived from the input image filename |
48
+ | `label` | Region label assigned by the thresholding step |
49
+ | `mean_intensity` | Average pixel intensity within the detected region |
50
+ | `area` | Pixel count of the positively stained region |
51
+ | `area_filled` | Stained area with internal holes filled |
52
+
53
+ ---
54
+
55
+ ## Resulting Report Template
56
+
57
+ ````markdown
58
+ # Histological Staining Area Quantification
59
+
60
+ ```galaxy
61
+ invocation_time()
62
+ ```
63
+
64
+ ---
65
+
66
+ ## Summary
67
+
68
+ This workflow is designed to quantify the area and intensity of a specific stain in brightfield
69
+ histological images. It takes a collection of input images, applies H-E-DAB colour deconvolution
70
+ to separate the target stain channel from the haematoxylin counterstain, then uses automated
71
+ thresholding to segment positive-staining pixels. Per-sample measurements are collated into a
72
+ single tabular output.
73
+
74
+ Compatible staining types include immunohistochemistry (IHC) with a DAB chromogen and Masson's
75
+ Trichrome (MT). The workflow expects RGB TIFF images — one region of interest (ROI) per
76
+ collection element.
77
+
78
+ ```galaxy
79
+ workflow_image()
80
+ ```
81
+
82
+ ---
83
+
84
+ ## Input Images
85
+
86
+ The input to this workflow is a list collection of brightfield microscopy images. Each element
87
+ should represent one region of interest from a tissue section. The images provided for this
88
+ run are shown below.
89
+
90
+ ```galaxy
91
+ history_dataset_as_image(input="ROI image for staining analysis")
92
+ ```
93
+
94
+ ---
95
+
96
+ ## Staining Mask
97
+
98
+ If the run completed successfully, each input image will have been converted into a binary mask
99
+ via colour deconvolution and automated thresholding. In a successful run, white pixels represent
100
+ regions classified as positively stained and black pixels represent background. This mask is
101
+ what the quantification measurements are derived from.
102
+
103
+ ```galaxy
104
+ history_dataset_as_image(output="Selected Stain Channel Thresholded")
105
+ ```
106
+
107
+ ---
108
+
109
+ ## Results
110
+
111
+ If the workflow completed successfully, the table below shows per-sample staining measurements —
112
+ one row per input image. The expected columns are described below.
113
+
114
+ | Column | Description |
115
+ |--------|-------------|
116
+ | `sample_id` | Identifier derived from the input image filename |
117
+ | `label` | Region label assigned by the thresholding step |
118
+ | `mean_intensity` | Average pixel intensity within the detected region |
119
+ | `area` | Pixel count of the positively stained region |
120
+ | `area_filled` | Stained area with internal holes filled |
121
+
122
+ ```galaxy
123
+ history_dataset_as_table(output="Tabular File: Staining Feature Results", title="Staining Feature Results", show_column_headers=true, compact=true)
124
+ ```
125
+
126
+ ```galaxy
127
+ history_dataset_link(output="Tabular File: Staining Feature Results", label="Download results (TSV)")
128
+ ```
129
+
130
+ ---
131
+
132
+ ## Reproducibility
133
+
134
+ ```galaxy
135
+ history_link()
136
+ ```
137
+ ````
138
+
139
+ ---
140
+
141
+ ## Notes
142
+
143
+ - The `history_dataset_as_image` directive works for both single images and collections — no special handling needed.
144
+ - `Selected Stain Channel Thresholded` was chosen over `Deconvolved Image` or `Selected Stain Channel` as the primary visual output because it directly represents what the quantification is based on.
145
+ - The Methods / `job_parameters` blocks were omitted from this template to keep it focused. They can be added as collapsible sections for workflows where parameter choices significantly affect interpretation.
@@ -0,0 +1,176 @@
1
+ # Example: End-to-End Tissue Microarray Analysis
2
+
3
+ A complete worked example of applying the workflow-reports skill to a multiplex tissue image analysis pipeline.
4
+
5
+ ## Workflow Metadata
6
+
7
+ | Field | Value |
8
+ |-------|-------|
9
+ | Name | End-to-End Tissue Microarray Analysis |
10
+ | Source | `.ga` file |
11
+ | Path | `workflows/imaging/tissue-microarray-analysis/tissue-microarray-analysis/tissue-micro-array-analysis.ga` |
12
+ | Purpose | Complete MTI analysis pipeline for TMA data: illumination correction, stitching, dearray, segmentation, quantification, phenotyping, and interactive visualisation |
13
+
14
+ ## Extracted Data
15
+
16
+ ### Inputs
17
+
18
+ | Step | Label | Type |
19
+ |------|-------|------|
20
+ | 0 | `Raw cycle images` | `data_collection_input` (list of TIFF/OME-TIFF, ordered by cycle) |
21
+ | 1 | `markers.csv` | `data_input` (CSV with columns: round, channel, marker_name) |
22
+ | 2 | `PhenotypeWorkflow` | `data_input` (Scimap-formatted phenotype workflow CSV) |
23
+
24
+ ### Workflow Outputs
25
+
26
+ | Step | Step label | Output label | Selected for report |
27
+ |------|-----------|--------------|---------------------|
28
+ | 3 | `Illumination correction with Basic` | `DFP images`, `FFP images` | No — early intermediates |
29
+ | 4 | `Stitching and registration with Ashlar` | `Registered image` | No — intermediate |
30
+ | 5 | `TMA dearray with UNetCoreograph` | `Dearray images`, `Dearray masks`, `TMA dearray map` | `TMA dearray map` only — most informative for verifying dearray |
31
+ | 6 | `Nuclear segmentation` | `Nuclear mask` | Yes — direct basis for quantification |
32
+ | 7 | `Convert dearray images to OME-TIFF` | `Converted image` | No — format conversion intermediate |
33
+ | 8 | `Cell feature quantification with MC-Quant` | `Primary Mask Quantification` | Yes — primary quantitative result |
34
+ | 9 | `Rename OME-TIFF channels` | `Renamed image` | No — intermediate |
35
+ | 10 | `Convert to Anndata` | `Anndata feature table` | No — superseded by phenotyped output |
36
+ | 11 | `Scimap phenotyping` | `Phenotyped feature table` | Yes — enriched final result |
37
+ | 12 | `Create a Vitessce dashboard` | `Vitessce dashboard`, `Vitessce Dashboard Config` | `Vitessce dashboard` only — config is auxiliary |
38
+
39
+ ### Step Labels Available for `job_parameters`
40
+
41
+ All steps have labels. Key ones used: `Nuclear segmentation`.
42
+
43
+ ---
44
+
45
+ ## Resulting Report Template
46
+
47
+ ````markdown
48
+ # End-to-End Tissue Microarray Analysis
49
+
50
+ ```galaxy
51
+ invocation_time()
52
+ ```
53
+
54
+ ## Summary
55
+
56
+ This workflow is designed to perform a complete multiplex tissue image (MTI) analysis pipeline
57
+ for tissue microarray (TMA) data imaged using cyclic immunofluorescence. It expects a
58
+ round-ordered collection of raw cycle images (TIFF or OME-TIFF), a CSV markers file with
59
+ channel names in the third column, and a Scimap-formatted phenotype workflow file.
60
+
61
+ Starting from raw images, the pipeline applies illumination correction (BaSiC), stitches and
62
+ registers cycles into a single whole-slide OME-TIFF (ASHLAR), and segments TMA cores into
63
+ individual image crops (UNetCoreograph). Each core image then undergoes nuclear segmentation
64
+ (Mesmer), per-cell feature quantification (MCQUANT), cell phenotyping (Scimap), and interactive
65
+ visualisation (Vitessce). If the run completes successfully, it should produce pyramidal
66
+ OME-TIFF images, nuclear segmentation masks, a quantified feature table, a phenotype-annotated
67
+ AnnData object, and an interactive Vitessce dashboard.
68
+
69
+ ```galaxy
70
+ workflow_image()
71
+ ```
72
+
73
+ ## Inputs
74
+
75
+ The workflow expects three inputs:
76
+
77
+ - **Raw cycle images** — a list collection of raw fluorescence cycle images (TIFF or OME-TIFF)
78
+ ordered by acquisition cycle (e.g. `cycle_1.tiff`, `cycle_2.tiff`, ...).
79
+ - **markers.csv** — a comma-separated file with columns `round`, `channel`, and `marker_name`.
80
+ The marker names in the third column are assigned as channel names during stitching.
81
+ - **PhenotypeWorkflow** — a Scimap-formatted phenotype workflow CSV that maps hierarchical
82
+ cell phenotypes to marker combinations.
83
+
84
+ ```galaxy
85
+ invocation_inputs()
86
+ ```
87
+
88
+ ## TMA Dearray Map
89
+
90
+ After stitching and registration, UNetCoreograph segments individual TMA cores and produces a
91
+ map image showing the detected core positions overlaid on the whole-slide image. If dearray
92
+ completed successfully, this image should show each TMA core outlined or labelled within the
93
+ tissue array. It is useful for verifying that the expected number of cores was detected and
94
+ that core boundaries are correct before proceeding with per-core batch analysis.
95
+
96
+ ```galaxy
97
+ history_dataset_as_image(output="TMA dearray map")
98
+ ```
99
+
100
+ ## Nuclear Segmentation Masks
101
+
102
+ Mesmer performs nuclear segmentation on each dearrayed core image and produces a collection of
103
+ labelled nuclear mask TIFFs. If segmentation completed successfully, each mask should show
104
+ individual nuclei as distinct integer-labelled regions against a black background — each unique
105
+ integer corresponds to one segmented nucleus. These masks are the basis for cell boundary
106
+ delineation used in feature quantification.
107
+
108
+ ```galaxy
109
+ history_dataset_as_image(output="Nuclear mask")
110
+ ```
111
+
112
+ ```galaxy
113
+ job_parameters(step="Nuclear segmentation", collapse="Show nuclear segmentation parameters")
114
+ ```
115
+
116
+ ## Cell Feature Quantification
117
+
118
+ MCQUANT quantifies per-cell features from each core image using the nuclear masks, producing a
119
+ CSV table where each row represents one segmented cell and columns contain mean marker
120
+ intensities, spatial coordinates, and morphological measurements.
121
+
122
+ | Column | Description |
123
+ |--------|-------------|
124
+ | `CellID` | Unique integer identifier for each segmented cell |
125
+ | `X_centroid` | X coordinate of the cell centroid in pixels |
126
+ | `Y_centroid` | Y coordinate of the cell centroid in pixels |
127
+ | `<marker>_mean` | Mean fluorescence intensity of the named marker channel within the cell mask |
128
+ | `Area` | Area of the segmented cell nucleus in pixels |
129
+ | `MajorAxisLength` | Length of the major axis of the fitted ellipse |
130
+ | `MinorAxisLength` | Length of the minor axis of the fitted ellipse |
131
+ | `Eccentricity` | Eccentricity of the fitted ellipse (0 = circle, 1 = line) |
132
+ | `Solidity` | Ratio of cell area to convex hull area |
133
+ | `Extent` | Ratio of cell area to bounding box area |
134
+ | `Orientation` | Angle of the major axis relative to the x-axis |
135
+
136
+ ```galaxy
137
+ history_dataset_as_table(output="Primary Mask Quantification", show_column_headers=true, compact=true)
138
+ ```
139
+
140
+ ```galaxy
141
+ history_dataset_link(output="Primary Mask Quantification", label="Download quantification table (CSV)")
142
+ ```
143
+
144
+ ## Phenotyped Feature Table
145
+
146
+ Scimap performs automated GMM-based cell phenotyping using the provided phenotype workflow and
147
+ appends cell type annotations to the quantification data. The output is an AnnData (h5ad)
148
+ object compatible with single-cell and spatial analysis packages. Note that GMM-based
149
+ thresholding works best for highly abundant markers with a strong bimodal distribution;
150
+ results should be reviewed carefully before downstream interpretation.
151
+
152
+ ```galaxy
153
+ history_dataset_link(output="Phenotyped feature table", label="Download phenotyped AnnData (h5ad)")
154
+ ```
155
+
156
+ ## Interactive Vitessce Dashboard
157
+
158
+ Vitessce combines the renamed OME-TIFF core images, nuclear segmentation masks, and phenotyped
159
+ AnnData into an interactive dashboard. If the run completed successfully, the dashboard should
160
+ allow linked exploration of spatial image data alongside single-cell scatter plots and cell
161
+ type visualisations.
162
+
163
+ ```galaxy
164
+ history_dataset_embedded(output="Vitessce dashboard")
165
+ ```
166
+
167
+ ## Reproducibility
168
+
169
+ ```galaxy
170
+ history_link()
171
+ ```
172
+
173
+ ```galaxy
174
+ workflow_display(collapse="Show full workflow details")
175
+ ```
176
+ ````