← NGS Analysis WorkbenchCONTENT HISTORY

Update to NGS Analysis Workbench

Snapshot Oct 8, 2026 · 00:04 UTC · version 0.2.18

WHAT CHANGED · RULE-BASED ANALYSIS

Package or technical metadata updated

Package contents changed in 50 files: .codex-plugin/plugin.json, .mcp.json, README.md, …. Open the file diff to inspect the edits.

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Package file

Before

a32ecaede3ce6d04098191997359900169259682e2b4909200a624fafe2e0ea1

After

5d7af566ffe23ab2d9495c6c7f6cfea3d14156ca2acce06b2ef8f404ed068eef

Package file

Before

687be5b8b5bdabe59b1ba2101faf3de4cd0728dec59c7867e144cb2be29930fb

After

74a083256c6f971fb7b547e610da7cd1c3ad2221b8be49da4d43fc8c47622da7

Package file

Before

1135

After

1333

Package file

Before

c53b836bd73843d02ce68cd59c69ace56e3f03ebd8e1fe96a77de0c49f6a3763

After

30f77cb5c38c752c5b6f934cbc208528e6bb7fb008dd3d6a39fc21ed5e13b9a4

Compare saved observations

Download comparison JSON

README.md

--- before
+++ after
@@ -85,6 +85,10 @@
 execution; the Codex host authorizes the exact tool call; the MCP server
 revalidates it and submits the approved work to the local Workbench daemon.
 
+On the Runs page, **New pipeline run** opens an editable Codex draft with the
+Workbench plugin mentioned. Describe the pipeline and inputs before sending;
+opening the draft does not select a pipeline or start execution.
+
 SQLite under the local plugin state root owns run lifecycle and history. Public `target + run_dir` identifies execution, with scientific outputs under `<run_dir>/results`. Approval records, source staging, and submitted analyses live in internal local state.
 
 Workbench provides controller log tails and structured execution evidence for local and SSH runs. Codex inspects workflow outputs, writes a local Markdown analysis, and submits it with `update_ngs_run_analysis_summary(registry_run_id, summary_path)`. The daemon saves the summary in the run record; detail and history display it on refresh or reopen.
@@ -103,6 +107,19 @@
 test -s mcp/mcp-inline.html
 ```
 
+For a development or internal distribution, set `VITE_NGS_WORKBENCH_PLUGIN_ID`
+to its installed `plugin-name@marketplace-name` when building. For example:
+
+```bash
+VITE_NGS_WORKBENCH_PLUGIN_ID=ngs-analysis-workbench-dev@plugin-development npm run build
+```
+
+This binds **New pipeline run** to that distribution. Without the override,
+release builds mention `ngs-analysis-workbench@openai-curated-remote`. Set it
+in the packager before building, including when renaming the plugin for local
+testing; copying a production bundle into another marketplace does not retarget
+its mention.
+
 If the same development version is already installed, remove and re-add that
 exact marketplace entry so Codex rebuilds its versioned cache:
 
@@ -145,6 +162,17 @@
 input, reference, runtime, and result provenance, and do not treat successful
 execution as support for a biological claim.
 
+## Server telemetry
+
+The three MCP servers and detached workflow daemon send explicit startup and
+failure records to the Rosalind Sentry Logs project. `ROSALIND_SENTRY_DSN`
+overrides the bundled public ingestion DSN; an empty or invalid override, or
+`ROSALIND_SENTRY_ENABLED=0`, disables logging. Records use fixed messages and
+approved scalar metadata only. Workflow failure details, pipeline logs,
+paths, inputs, scientific content, user identity, and hostname stay local.
+Telemetry is best effort and cannot change execution or approval behavior.
+See [shared logging documentation](../rosalind-logging/README.md).
+
 ## Development
 
 Start the Workbench MCP server from `mcp/`:
@@ -163,12 +191,21 @@
 version creates `$CODEX_HOME/cache/ngs-analysis-workbench/venvs/<version>`;
 later launches reuse that environment. Update `mcp/PLUGIN_VENV_VERSION`
 whenever `mcp/requirements.txt` changes. A shared installation lock protects
-concurrent first launches.
+concurrent first launches. Both launchers enforce `--require-hashes` and
+`--only-binary=:all:` before marking the environment ready or running a server.
+The committed `requirements.txt` includes pinned transitive dependencies and
+SHA-256 artifact hashes for macOS, Linux, and Windows. Edit direct dependencies
+in `mcp/requirements.in`, then regenerate the lock from `mcp/`:
+
+```bash
+uv pip compile --universal --python-version 3.10 --generate-hashes \
+  --only-binary :all: --no-header --output-file requirements.txt requirements.in
+```
 
 Run Python tests from the same directory:
 
 ```bash
-PYTHONPATH=. uv run --no-project --isolated \
+PYTHONPATH=. ROSALIND_SENTRY_ENABLED=0 uv run --no-project --isolated \
   --with-requirements ./requirements.txt \
   python -m unittest discover -s ../tests -p 'test_*.py'
 ```
Full technical diff · 92 changed fields

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"a32ecaede3ce6d04098191997359900169259682e2b4909200a624fafe2e0ea1"
AFTER
"5d7af566ffe23ab2d9495c6c7f6cfea3d14156ca2acce06b2ef8f404ed068eef"

changed /files/.mcp.json/sha256

BEFORE
"687be5b8b5bdabe59b1ba2101faf3de4cd0728dec59c7867e144cb2be29930fb"
AFTER
"74a083256c6f971fb7b547e610da7cd1c3ad2221b8be49da4d43fc8c47622da7"

changed /files/.mcp.json/size

BEFORE
1135
AFTER
1333

changed /files/README.md/sha256

BEFORE
"c53b836bd73843d02ce68cd59c69ace56e3f03ebd8e1fe96a77de0c49f6a3763"
AFTER
"30f77cb5c38c752c5b6f934cbc208528e6bb7fb008dd3d6a39fc21ed5e13b9a4"

changed /files/README.md/size

BEFORE
9047
AFTER
11006

added /files/integrity.json

BEFORE
Field was absent
AFTER
{
  "sha256": "1e0a2a20d6a15d40e995c08fc55fd8d8fd2e773b1d2e8c52e4d580c34df00a73",
  "size": 32083
}

changed /files/mcp~1PLUGIN_VENV_VERSION/sha256

BEFORE
"283571d2642fc7b3befd294f45d53b896a1d54d34c86235b13151192b380606a"
AFTER
"011cfdb24c667a75861adfffaabe68e66358d982f437b47270ef09d86c6c6cd7"

changed /files/mcp~1PLUGIN_VENV_VERSION/size

BEFORE
6
AFTER
7

changed /files/mcp~1mcp-app.html/sha256

BEFORE
"f69bddc07fb496fa7cdf43893b15ca726cd36d196a074c54628e0ca6c0d42f09"
AFTER
"b6888081770ad1c7f97ac37e237b7fe2ae8cf6ef21ec0203557b210aaefeabb8"

changed /files/mcp~1mcp-app.html/size

BEFORE
816702
AFTER
822040

changed /files/mcp~1mcp-inline.html/sha256

BEFORE
"cf72868c0c194bfaca422496fb00eee0e94d427a83bc0372a39f8be70c5e9029"
AFTER
"3cde005ece118c8a24a69f0192e6798e9a31aba453d487139551c6a6e65648bb"

changed /files/mcp~1mcp-inline.html/size

BEFORE
597014
AFTER
601042

changed /files/mcp~1ngs_app_mcp~1__main__.py/sha256

BEFORE
"80d790ef877ec7dde109d75e2343c4b15e8c9f24e3027623874eaa2e0a95f9db"
AFTER
"5b90086496868ba4158d6c46b112a233139fda385d65bab6b6d8f21dc6820389"

changed /files/mcp~1ngs_app_mcp~1__main__.py/size

BEFORE
168
AFTER
158

changed /files/mcp~1ngs_app_mcp~1app.py/sha256

BEFORE
"60c39e75a4e6839127e342742251da6753ee22dcb311ac9d44726d97a5e55f19"
AFTER
"426c500e2eeaebba70d5b06f337964ecb8b4401ec07b1d64e0bb32588de16ccb"

changed /files/mcp~1ngs_app_mcp~1app.py/size

BEFORE
6387
AFTER
6475

changed /files/mcp~1ngs_compute_mcp~1__main__.py/sha256

BEFORE
"2ea373ef777bdf8e63a859bbbbd999f17d8eb57773e2936f225eb2b0e86354b0"
AFTER
"3c3b7d4b1b7e45cd8fff12036a46f2c1683821e754d24abe74328f51127c5dfc"

changed /files/mcp~1ngs_compute_mcp~1__main__.py/size

BEFORE
3479
AFTER
3483

changed /files/mcp~1ngs_workbench_daemon~1persistence~1database.py/sha256

BEFORE
"425e0447610e20f6e70d3affe641727bc97ee25a28e514ca311034d946959c8c"
AFTER
"51f4e8b86f55f8ac73ff884b3c8eb198e68d77e5bd00bbab420de1f971179302"

changed /files/mcp~1ngs_workbench_daemon~1persistence~1database.py/size

BEFORE
3321
AFTER
3335

changed /files/mcp~1ngs_workbench_daemon~1runs.py/sha256

BEFORE
"7196471df56e194a6297f83106cf1b8896d4df52b79a996667ca6511fe547a47"
AFTER
"96c7d461b6cc822168c166190a7311d50fe09021f81afa18df2caad6121d7de5"

changed /files/mcp~1ngs_workbench_daemon~1runs.py/size

BEFORE
42747
AFTER
42969

changed /files/mcp~1ngs_workbench_daemon~1server.py/sha256

BEFORE
"dbc11c58207fc88f3b94a1733427834632a3617d89d8c5dd9948ccbe2ec37495"
AFTER
"8c687a321738876ed65ff09e5726ebfc814d56409d8e4d989cb189308cd352c7"

changed /files/mcp~1ngs_workbench_daemon~1server.py/size

BEFORE
11100
AFTER
11371

changed /files/mcp~1ngs_workbench_daemon~1ssh.py/sha256

BEFORE
"15d1435dbc1b9dd1393fcb4506d5f23f3616aa428f0aa579c3dd5edac390f0ca"
AFTER
"4b818912b340096facd85cebc6322a41c79de66e838abec7c5daca54a5c9e4ce"

changed /files/mcp~1ngs_workbench_daemon~1ssh.py/size

BEFORE
11561
AFTER
11575

changed /files/mcp~1ngs_workbench_mcp~1__main__.py/sha256

BEFORE
"61a83c839139eac11782e8cdd6640b55b4edd91737c39af499dfdb965daca902"
AFTER
"0bfe7665d35cc477fc254b3efa3c29c2b2c01f738f8f30da8226aa11b145af75"

changed /files/mcp~1ngs_workbench_mcp~1__main__.py/size

BEFORE
277
AFTER
267

changed /files/mcp~1ngs_workbench_mcp~1app.py/sha256

BEFORE
"6b8c4ca320582112d94c6bbc59744ab893c69814953862b95d05582ea5ae29aa"
AFTER
"bd7339e3f98d3d3d0fa0b066c656d0ee5b85ac5de296ba23b36407a01bc351ce"

changed /files/mcp~1ngs_workbench_mcp~1app.py/size

BEFORE
26500
AFTER
26514

changed /files/mcp~1ngs_workbench_mcp~1approved_execution.py/sha256

BEFORE
"f475a8ea8d571708b3e850cb57091ca862546fbad181fe91e3b8adf0db25fa38"
AFTER
"1f884d953adbe191b26ae08270c81953cd973f63ed171a1c2e99b7acebc00835"

changed /files/mcp~1ngs_workbench_mcp~1approved_execution.py/size

BEFORE
3261
AFTER
3275

added /files/mcp~1requirements.in

BEFORE
Field was absent
AFTER
{
  "sha256": "5d69e5fcd1747710deb57ab06df9792e61d122913fbcbe767afb79d4e75101ff",
  "size": 100
}

changed /files/mcp~1requirements.txt/sha256

BEFORE
"366c7d2657a2b7f705d13154ead039f5c40f314d7c5cf58de7f14d563f1f2929"
AFTER
"1e8b751883bf29bc55830bcdcb840236cf0ff7e5eee1c64ff612aa7aa54ecb1e"

changed /files/mcp~1requirements.txt/size

BEFORE
81
AFTER
75483

added /files/mcp~1rosalind_logging~1__init__.py

BEFORE
Field was absent
AFTER
{
  "sha256": "b22ac601b6728639ddbf90f922d5798388c0a0e3f1f22aa1c75aed2989102ce7",
  "size": 5819
}

added /files/mcp~1rosalind_logging~1mcp.py

BEFORE
Field was absent
AFTER
{
  "sha256": "e5c1aa204021a1e1ce7b7e4384c3493d3b91b584e7371cfd8fd3c7b9ddf8798b",
  "size": 1573
}

changed /files/mcp~1start_server/sha256

BEFORE
"843b56dbf6e57c9078606dca8bbce52d87c0ff0b1a393938e7a52f35258998b7"
AFTER
"27c6091936bc276d9f0003aab45fe76dbd72e51e07d7457c1c648c8655ff663e"

changed /files/mcp~1start_server/size

BEFORE
3843
AFTER
3880

changed /files/mcp~1start_server.cmd/sha256

BEFORE
"1a998fb8abcf9859270190ae6a1624315159c9729871109d5c478a16880831cd"
AFTER
"e62c22e617ecbbb46e394b365e21a16af173436f5824be68ebbc2705a4f5e5be"

changed /files/mcp~1start_server.cmd/size

BEFORE
5904
AFTER
5941

changed /files/package-lock.json/sha256

BEFORE
"1709564ae00740604ab814b6465656f33c2b70ef272297ebdf5176e9efb4829a"
AFTER
"7e23ae962289355c3466e6ef19e1a1e8e029fd2734fd24cad0c6ed0bd1a790c9"

changed /files/package-lock.json/size

BEFORE
132564
AFTER
133429

changed /files/package.json/sha256

BEFORE
"9f3a0e30691f467d0c1a3a0fecd4b5e062221c5a390836c58cc3bade6693e12f"
AFTER
"6b779b9eda95fc086ad24c45549b891e68846c16f90fad99ce2e403dd5a5efca"

changed /files/package.json/size

BEFORE
1259
AFTER
1357

changed /files/scripts~1check-release-ci.sh/sha256

BEFORE
"8fbd003fec1c0ac9ea5567524465e4daa34b90a0709019f5cc6bb1b40ae4d5f4"
AFTER
"e8897ac70013ad85107b13612ecd0003682a5aee47d95c7a9a74dd6067f5ba40"

changed /files/scripts~1check-release-ci.sh/size

BEFORE
1416
AFTER
1853

changed /files/src~1App.stories.tsx/sha256

BEFORE
"63fa0d2fd3cb80fda799aa8fb217f5dbcb1e31d537acab336d7b346d7ec61873"
AFTER
"bb19b60aec154ed706c78dd3d77e5c6c9ccf7e77596c14f783d4fa4e7af99a2d"

changed /files/src~1App.stories.tsx/size

BEFORE
56148
AFTER
56213

changed /files/src~1App.tsx/sha256

BEFORE
"f6b42382d8ca1f1a71a8a8304b4f67fe1d097e6e9d8aab7341c71032eed974bc"
AFTER
"0e666052325ac8b7545c5cfd88d2bdd1165c02b3f9e1067fbe775dbf94df8e86"

changed /files/src~1App.tsx/size

BEFORE
15036
AFTER
15141

changed /files/src~1components~1RunHistory.module.css/sha256

BEFORE
"bf9bbcaa0b03b0c3865b9c0b2b0293001899fef0ff34a4b390e37cba8a38101e"
AFTER
"81c0be4bc2522086361bdefcb828645bde368f87235610f99d4d79e9b5c29502"

changed /files/src~1components~1RunHistory.module.css/size

BEFORE
3322
AFTER
3399

changed /files/src~1components~1RunHistory.stories.tsx/sha256

BEFORE
"a9340a913f1ff51e7802f32db0adf7abf20193fd87a88f9baf3c03fb1d7b1407"
AFTER
"026f965a8507861b924b364500616c9dabaa0a23a8fcd243d6aac83bb5bb48dd"

changed /files/src~1components~1RunHistory.stories.tsx/size

BEFORE
3901
AFTER
3958

changed /files/src~1components~1RunHistory.tsx/sha256

BEFORE
"3d7b8f8d06476c0d1fa65419c013222226af851f02bb0932f244c83c0e3f0f2d"
AFTER
"2ce82953160bd0792520db04052b098e695985edb6cd9ab4ebc8062517552f90"

changed /files/src~1components~1RunHistory.tsx/size

BEFORE
5972
AFTER
6449

changed /files/src~1components~1RunHistorySidebar.tsx/sha256

BEFORE
"9db1386c372f76569ff14289502a7d5471452d8902a80509e2551c8ab3d646f6"
AFTER
"2ae02838a4c6acfc0fbe4e919e477d74cefd82463cc9fb95039645449a098bec"

changed /files/src~1components~1RunHistorySidebar.tsx/size

BEFORE
13787
AFTER
13785

changed /files/src~1design-system~1Icon.tsx/sha256

BEFORE
"22ee71a10dbeb9ed7649d1536175e8db0990a785a4ffb1d52ff8f1c5fade680b"
AFTER
"3ce6b0f872bd63a5ea49b158b2c62b0a05501f1776f8704c051bb6d0974204f9"

changed /files/src~1design-system~1Icon.tsx/size

BEFORE
2681
AFTER
2759

added /files/src~1design-system~1icons~1chat-plus.svg

BEFORE
Field was absent
AFTER
{
  "sha256": "6cab5ec08c7fa0c403cf63d58a7bed751dba2c18bb87a51a3db20a8c031fd932",
  "size": 1006
}

changed /files/src~1hooks~1useNgsWorkbench.ts/sha256

BEFORE
"4af74063e9260f1e736ab1a0ae9c04b937f9d8c7c3718c8c1ca6b4c035a8ed9c"
AFTER
"96b384df8818778cb3a6220a72ed9725c0dfb55bf6cd93b23445c5ae871b047f"

changed /files/src~1hooks~1useNgsWorkbench.ts/size

BEFORE
12784
AFTER
14661

changed /files/src~1inline~1RunReviewApp.tsx/sha256

BEFORE
"208182c4df182e3a502d0f7b8f5023fb0bfeb1fd70207ab6fa7d897b8c8b71e2"
AFTER
"9bf7ff249305b117e857feb9a7d3b28e90c92966550af0a46fa3d598f1bf2f4f"

changed /files/src~1inline~1RunReviewApp.tsx/size

BEFORE
27725
AFTER
27982

changed /files/src~1inline~1client.ts/sha256

BEFORE
"6f7d120c322ad98c1bae03b2b03c19d41b5f621b3bba777f1a0a295accfcfbc7"
AFTER
"b79a94e41ecaae6650caa941ba383146289c752ce6ec16af91d4b10b230e760e"

changed /files/src~1inline~1client.ts/size

BEFORE
3308
AFTER
4576

changed /files/src~1mcp~1client.ts/sha256

BEFORE
"a40b78bc111df79965e258ed8886a7d6136e927471a44ccf2c827a299f90fa60"
AFTER
"aeb57dd10aac56b054d8f582d51d37e7d1b255f8a106cb62c9470d5df8d9ff5e"

changed /files/src~1mcp~1client.ts/size

BEFORE
2654
AFTER
3701

changed /files/src~1mcp~1ngs.ts/sha256

BEFORE
"b78f4e889b0a3ea3a857ed1c7e05d063553e0f3f24431bf4ad0f7475c28e2181"
AFTER
"07ce7aeaf759e74083248dbe829c45870916f1ccc7a373b53392a831a378111f"

changed /files/src~1mcp~1ngs.ts/size

BEFORE
9105
AFTER
9394

changed /files/tests~1daemon_test_case.py/sha256

BEFORE
"35287f31d6a76214919c98d14b4d65136c3017d6acd509a4341a60576982aa0b"
AFTER
"87b9052a1b5f1c0b6bfafc8ed95448827ddeaae023bb1786e30aeadf7de524f1"

changed /files/tests~1daemon_test_case.py/size

BEFORE
3031
AFTER
3110

changed /files/tests~1test_daemon_lifecycle.py/sha256

BEFORE
"a43bb9d13d0a5da3cf8e5ecc81b26fe0e42a094e304597ad0d8581cdd068f263"
AFTER
"14b8f87b92928d813286457db56eadb7a2046a81f6c9615ecc8d6796a533e14d"

changed /files/tests~1test_daemon_lifecycle.py/size

BEFORE
56260
AFTER
56451

changed /files/tests~1test_mcp_ui.py/sha256

BEFORE
"a8c928520f921c9c7741f2ec2e0578ed57f46bc6172cfe32baca014afb57a3e1"
AFTER
"673ec05526d94a32e6fd6fe02bc65fe4d19fbb256edf00e722b951ee660ce523"

changed /files/tests~1test_mcp_ui.py/size

BEFORE
20572
AFTER
22814

changed /files/tests~1test_nextflow_mcp.py/sha256

BEFORE
"d3cc927f3aea00047a48bcc8a16aba9126557a22a32c032e67b697ebe124c11e"
AFTER
"0b6275052cf0dd50d349b52c90db7d7589d4438196fe3e7e576599cd4e135b40"

changed /files/tests~1test_nextflow_mcp.py/size

BEFORE
45661
AFTER
45675

changed /files/tests~1test_run_persistence.py/sha256

BEFORE
"62a9e06ee637600d8f3a450909c0c3303ec87312f81011010b4ede4ef5fe47ec"
AFTER
"1586e84f2bf0fac17d98f7d04223fe465d17a8203f4ddbd8ecb98440e3dde29b"

changed /files/tests~1test_run_persistence.py/size

BEFORE
54192
AFTER
56019

added /files/tests~1test_sentry_logging.py

BEFORE
Field was absent
AFTER
{
  "sha256": "c4a608258a1d83277f2bf5ef2f8c8feabdcfdf02c9ef5e417f5652f874fa08d6",
  "size": 6060
}

added /files/tests_js~1client-logging.test.ts

BEFORE
Field was absent
AFTER
{
  "sha256": "198625e2906ff819d30be4f2f33dda80c7c92927bf6b82027a93e2c6fe58b7b7",
  "size": 4468
}

changed /files/tests_js~1workflow-catalog.test.ts/sha256

BEFORE
"261cd55607c097df3469fb6287b53ef76919ad7086b15bfb2608533c7e7099e8"
AFTER
"73c8a56d398e9d13457ab07683d8418b7b6ff3be41f0fc29af92368a52e3c567"

changed /files/tests_js~1workflow-catalog.test.ts/size

BEFORE
10697
AFTER
13678

changed /files/tsconfig.json/sha256

BEFORE
"9a18ceb7d05691eece7dfe37dc6eac0a893be9ba7adc3dd5668982462f4f7376"
AFTER
"17b7dee39e43dbe332ede5e0608503f0a3067483429ec640295aaddff96cc173"

changed /files/tsconfig.json/size

BEFORE
604
AFTER
634

changed /files/vite.config.ts/sha256

BEFORE
"7f3728468c96ffb4852fe390f5f14abc0549e6e1376aafadbaa1dc60b6f5b889"
AFTER
"f3e57129baf5f823cb0804320cf951cf2491e26da474d54a9a1899e12e4f055e"

changed /files/vite.config.ts/size

BEFORE
298
AFTER
344

changed /files/vite.inline.config.ts/sha256

BEFORE
"273b0decd42d9a07c97d7f971e0ad76f47b8b9dfabb1ba09d93a1bee62e32260"
AFTER
"5e373d10df966d1155d7cdcc4572fcb8bc0f6a9454008a98c9c67b17add5b206"

changed /files/vite.inline.config.ts/size

BEFORE
301
AFTER
347
Full snapshot data
{
  "files": {
    ".codex-plugin/plugin.json": {
      "sha256": "5d7af566ffe23ab2d9495c6c7f6cfea3d14156ca2acce06b2ef8f404ed068eef",
      "size": 1970
    },
    ".gitignore": {
      "sha256": "c62033c875ab6c850d1490b0f77cc039dc9e34f8996ea6d08ad730d3653836e7",
      "size": 302
    },
    ".mcp.json": {
      "sha256": "74a083256c6f971fb7b547e610da7cd1c3ad2221b8be49da4d43fc8c47622da7",
      "size": 1333
    },
    ".npmrc": {
      "sha256": "7e057776e6b71571b59bae3d3d37f802925676e1d9ae94cbcb6fd16698619a10",
      "size": 37
    },
    ".storybook/host-theme-fixtures.ts": {
      "sha256": "ba2341f8bbeae18e76828ebfcdc99478525be7277019d1fa7422c755731076ee",
      "size": 6202
    },
    ".storybook/main.ts": {
      "sha256": "4788bf86b77d191b2cb01c24895d79274aa361db4a1bbce4286a4a95b31524db",
      "size": 435
    },
    ".storybook/preview.tsx": {
      "sha256": "de2fd015edb1b6cb2dee1a7be4dff14d8697cb9d5c5ba6f650769c4833c74dc0",
      "size": 2149
    },
    ".storybook/storybook.css": {
      "sha256": "751d97cd37a88b67190742285ba45a8c5c5118011f03c7010078c123fb870fa5",
      "size": 3955
    },
    ".storybook/vite.storybook.config.ts": {
      "sha256": "0d47288d78f9a853cbf4f7490e760577776159de4eaf4b5f0f9b4366ff1e7cba",
      "size": 95
    },
    "ARCHITECTURE.md": {
      "sha256": "b0e70b26f85ff71d65b66ceff0fde7c41226141fc5d4d14c369aff6a32990471",
      "size": 7440
    },
    "README.md": {
      "sha256": "30f77cb5c38c752c5b6f934cbc208528e6bb7fb008dd3d6a39fc21ed5e13b9a4",
      "size": 11006
    },
    "assets/app-icon.png": {
      "sha256": "de2f5931b97d9b2ce6325208dd514c69ee9bf13201af635d8fb17345a5ef4737",
      "size": 39140
    },
    "integrity.json": {
      "sha256": "1e0a2a20d6a15d40e995c08fc55fd8d8fd2e773b1d2e8c52e4d580c34df00a73",
      "size": 32083
    },
    "mcp-app.html": {
      "sha256": "d435b6464ee3c6127f989058f308b3c2192bd54842ccd9e48c5fd62fb5c0a94e",
      "size": 309
    },
    "mcp-inline.html": {
      "sha256": "868a24812beb875fabb98256c6266cf38ca5b35b0e96d8f2d3e299fca7533a95",
      "size": 308
    },
    "mcp/PLUGIN_VENV_VERSION": {
      "sha256": "011cfdb24c667a75861adfffaabe68e66358d982f437b47270ef09d86c6c6cd7",
      "size": 7
    },
    "mcp/mcp-app.html": {
      "sha256": "b6888081770ad1c7f97ac37e237b7fe2ae8cf6ef21ec0203557b210aaefeabb8",
      "size": 822040
    },
    "mcp/mcp-inline.html": {
      "sha256": "3cde005ece118c8a24a69f0192e6798e9a31aba453d487139551c6a6e65648bb",
      "size": 601042
    },
    "mcp/ngs_app_mcp/__init__.py": {
      "sha256": "ceddffabdd73731bc39ab3cdb2e352998721a8da09efb8cd87f73f30d6e3c1b0",
      "size": 52
    },
    "mcp/ngs_app_mcp/__main__.py": {
      "sha256": "5b90086496868ba4158d6c46b112a233139fda385d65bab6b6d8f21dc6820389",
      "size": 158
    },
    "mcp/ngs_app_mcp/app.py": {
      "sha256": "426c500e2eeaebba70d5b06f337964ecb8b4401ec07b1d64e0bb32588de16ccb",
      "size": 6475
    },
    "mcp/ngs_compute_mcp/README.md": {
      "sha256": "7917e105aaba29183ab3aef8110116cea8fb7124641f79dace12c1177d7fccf2",
      "size": 2452
    },
    "mcp/ngs_compute_mcp/__init__.py": {
      "sha256": "a873adc400e83fc6e5fa200f108d16baf513c2a4805d8e3e24b1b8862d56dd2c",
      "size": 83
    },
    "mcp/ngs_compute_mcp/__main__.py": {
      "sha256": "3c3b7d4b1b7e45cd8fff12036a46f2c1683821e754d24abe74328f51127c5dfc",
      "size": 3483
    },
    "mcp/ngs_workbench_daemon/__init__.py": {
      "sha256": "60e255abf895676c5d5e925cd3079666e68eb3f68c0218c5ff84632d389fbffe",
      "size": 74
    },
    "mcp/ngs_workbench_daemon/__main__.py": {
      "sha256": "463afdbcce585383708ea36bf15390e89049352daa2f6a8b8de70e21c4064ed8",
      "size": 105
    },
    "mcp/ngs_workbench_daemon/client.py": {
      "sha256": "88f41f63dc114d0880f482eac6c7cb6b65be8aa9ed276f74fdfe73480fd59a91",
      "size": 8509
    },
    "mcp/ngs_workbench_daemon/hashing.py": {
      "sha256": "794d06949648ca30256670638f309f1b5db149a85e18474cc20103ec29dc2f0a",
      "size": 2583
    },
    "mcp/ngs_workbench_daemon/input_files.py": {
      "sha256": "0290491a1fb827eb99f9c459f2405de2f5df7d2ed4d862232367cc7f80fe90ce",
      "size": 5655
    },
    "mcp/ngs_workbench_daemon/inspection.py": {
      "sha256": "e298a6507fa97b4f4317554d3c9d4e0c57fb77eee437c355e92d372cd06a4eaf",
      "size": 3262
    },
    "mcp/ngs_workbench_daemon/persistence/__init__.py": {
      "sha256": "9a76605ace517f17108f0458b2f12f16392f1ac6af5e2e6060c400ed58c5d0f7",
      "size": 801
    },
    "mcp/ngs_workbench_daemon/persistence/database.py": {
      "sha256": "51f4e8b86f55f8ac73ff884b3c8eb198e68d77e5bd00bbab420de1f971179302",
      "size": 3335
    },
    "mcp/ngs_workbench_daemon/persistence/migrations/env.py": {
      "sha256": "f61a77a8e69618d1f3cdc876827764587361178bc62b9a9da0466995d155c73b",
      "size": 1192
    },
    "mcp/ngs_workbench_daemon/persistence/migrations/versions/0001_initial_registry.py": {
      "sha256": "8d703d68905cdb9854904719aba00993fe94e618e7a52fbed0ef967e78e81d69",
      "size": 4982
    },
    "mcp/ngs_workbench_daemon/persistence/migrations/versions/0002_saved_workflows.py": {
      "sha256": "299cc122dc4aec7343cbd7f8a1a0a3cdb2a015a5cd85428ec94b835bbd7e1c38",
      "size": 1532
    },
    "mcp/ngs_workbench_daemon/persistence/migrations/versions/0003_run_recovery_lineage.py": {
      "sha256": "427e17f30a5894f79b5567998bf9a61f9bd95b7c8cc392a1274d59362b09f630",
      "size": 3349
    },
    "mcp/ngs_workbench_daemon/persistence/migrations/versions/0004_workflow_versions.py": {
      "sha256": "dff3d67eebef940f013dc7e12ecd54b6589708ea0674086e6a586ed06e9f67ad",
      "size": 3651
    },
    "mcp/ngs_workbench_daemon/persistence/orm.py": {
      "sha256": "006bb11b30d0238944dc0d606b8fcfb0c365db0ee2ab93ed384400d3f98b4441",
      "size": 7130
    },
    "mcp/ngs_workbench_daemon/persistence/paths.py": {
      "sha256": "cdfee5139d27d50bcdad2795327e9166977ce09207abf7cc3c9c8717620083a1",
      "size": 3602
    },
    "mcp/ngs_workbench_daemon/persistence/repository.py": {
      "sha256": "4c7bcde7d119f7522dd95e88e2963321e816f72755a0fdd758d960096fdc4fe0",
      "size": 18468
    },
    "mcp/ngs_workbench_daemon/persistence/unit_of_work.py": {
      "sha256": "a9d14d9b679be9c28c3772382976c98f2fee85fd0a46214fe13b0f4b2ff6e30c",
      "size": 2134
    },
    "mcp/ngs_workbench_daemon/persistence/workflows.py": {
      "sha256": "7e2437bf16c110babc0ea0d380bd5a1b21f119e05d4fe8df31f222c2d6cd6905",
      "size": 6612
    },
    "mcp/ngs_workbench_daemon/protocol.py": {
      "sha256": "18526d00b4a65df57c1b4e13a21213f9d1c054e542390439b5766c0199fcb2ef",
      "size": 8914
    },
    "mcp/ngs_workbench_daemon/remote_controller.py": {
      "sha256": "302efd8345b5c3ed30e6a1b04eda6b25db793bb8a814d3569d258177f47b7ee4",
      "size": 712
    },
    "mcp/ngs_workbench_daemon/remote_operations.py": {
      "sha256": "a4ba212180447040884007cb4debb38ebae3327102ea67251df6be82a285aad9",
      "size": 6914
    },
    "mcp/ngs_workbench_daemon/remote_probe.py": {
      "sha256": "28ad7e11e85964e32fde5dceee10c3a2cf0e38afc6271d2e7d003c9b20eccdb0",
      "size": 10038
    },
    "mcp/ngs_workbench_daemon/runs.py": {
      "sha256": "96c7d461b6cc822168c166190a7311d50fe09021f81afa18df2caad6121d7de5",
      "size": 42969
    },
    "mcp/ngs_workbench_daemon/server.py": {
      "sha256": "8c687a321738876ed65ff09e5726ebfc814d56409d8e4d989cb189308cd352c7",
      "size": 11371
    },
    "mcp/ngs_workbench_daemon/ssh.py": {
      "sha256": "4b818912b340096facd85cebc6322a41c79de66e838abec7c5daca54a5c9e4ce",
      "size": 11575
    },
    "mcp/ngs_workbench_daemon/state.py": {
      "sha256": "24c208bf87719532bfdc82d143506b0dc0faf492d280cb5c7993ded3a21abff2",
      "size": 4891
    },
    "mcp/ngs_workbench_execution_monitoring/__init__.py": {
      "sha256": "6909a497ddb89aa798f0b5fecabf87a831d8c0052850e6d2beada59de8a8ce62",
      "size": 328
    },
    "mcp/ngs_workbench_execution_monitoring/base.py": {
      "sha256": "f8adeea1ccf37669cce3ac1f38b64c5ae22128e07e8cad24c791c4dec7adc623",
      "size": 493
    },
    "mcp/ngs_workbench_execution_monitoring/models.py": {
      "sha256": "b17adfed730154997cf9767378d1fd95034b0384dc0c6be9527b819afe2c6bcd",
      "size": 5094
    },
    "mcp/ngs_workbench_execution_monitoring/nextflow_trace.py": {
      "sha256": "56f37ed6e2c8c3597c2002d9b49c03b927b61ba90322fe2e0d3d1bb49d8ed752",
      "size": 7728
    },
    "mcp/ngs_workbench_execution_monitoring/registry.py": {
      "sha256": "55c75b2adda56b335ff114ccc33d14f9fd0f59e2faeae8805bbeb5cae6c279c2",
      "size": 2062
    },
    "mcp/ngs_workbench_execution_monitoring/snakemake_log.py": {
      "sha256": "a0b5e4d58fde67e3583784e38375b23b134325d3b84deb3e4dc7cd6d63c11d84",
      "size": 9771
    },
    "mcp/ngs_workbench_mcp/__init__.py": {
      "sha256": "44a4f276ca3c2d5791ff057c3d7dad00f52f37f1a065f934bcd29d3e6c341d67",
      "size": 66
    },
    "mcp/ngs_workbench_mcp/__main__.py": {
      "sha256": "0bfe7665d35cc477fc254b3efa3c29c2b2c01f738f8f30da8226aa11b145af75",
      "size": 267
    },
    "mcp/ngs_workbench_mcp/app.py": {
      "sha256": "bd7339e3f98d3d3d0fa0b066c656d0ee5b85ac5de296ba23b36407a01bc351ce",
      "size": 26514
    },
    "mcp/ngs_workbench_mcp/approved_execution.py": {
      "sha256": "1f884d953adbe191b26ae08270c81953cd973f63ed171a1c2e99b7acebc00835",
      "size": 3275
    },
    "mcp/ngs_workbench_mcp/compute_targets.py": {
      "sha256": "f53f8d02c6220489f22ed9c8239409c17fdda328881c74f5ea3f44edd3cb0682",
      "size": 2231
    },
    "mcp/ngs_workbench_mcp/fastq_inputs.py": {
      "sha256": "fb5fc079129974f07384135840fcf54cbd910721299e4280ef274a329f7c2345",
      "size": 7458
    },
    "mcp/ngs_workbench_mcp/json_io.py": {
      "sha256": "642014740a38e68d28a0e0dff95e99d17179df3e8f98c1edb884b6903a7c3528",
      "size": 826
    },
    "mcp/ngs_workbench_mcp/plan_registry.py": {
      "sha256": "d18d0fd89f9027b6be0d350c80f99237afb64dc667e7bcdab4a0770ae48a531f",
      "size": 6563
    },
    "mcp/ngs_workbench_mcp/plans.py": {
      "sha256": "2d6219378c355c265877c4b50eb0073d023aa782e36e0ef2ee6c02a2ac9a8cba",
      "size": 9663
    },
    "mcp/ngs_workbench_mcp/preparation.py": {
      "sha256": "908c5a519cc874d62c81dfb7d35cebcb3995eab5236671cea688d02c0a7440f5",
      "size": 8585
    },
    "mcp/ngs_workbench_mcp/readiness/__init__.py": {
      "sha256": "83b5391510297758c55dbb33ad5f75407db703ac78841b57ebdea22ca9d72882",
      "size": 133
    },
    "mcp/ngs_workbench_mcp/readiness/evaluate.py": {
      "sha256": "be1eb7427be0b3952496dfc515d0df66121e96489b40a6b22992fb285f98462e",
      "size": 11427
    },
    "mcp/ngs_workbench_mcp/readiness/models.py": {
      "sha256": "c5c60069531f81906aea166c76ddbf3eb9b37f65410fba376ba9688106773527",
      "size": 3761
    },
    "mcp/ngs_workbench_mcp/readiness_service.py": {
      "sha256": "a094408107f167a90102a16c7ed28421a181329b402555e482506186fa9fbf60",
      "size": 1886
    },
    "mcp/ngs_workbench_mcp/report/__init__.py": {
      "sha256": "ca6f48dae1128b858f928dc0fb9ef4ffb39848ca627b53632b75c50e2c81bf36",
      "size": 362
    },
    "mcp/ngs_workbench_mcp/report/artifacts.py": {
      "sha256": "c31956c99a867e5404d66a4608fba05ed4b988f33667ce93f324c000899547cf",
      "size": 8654
    },
    "mcp/ngs_workbench_mcp/report/builder.py": {
      "sha256": "2268c0f013adb90ee6aa2dd2080996c7ba73f9f78e181868bd2c45e5d09d068d",
      "size": 14988
    },
    "mcp/ngs_workbench_mcp/report/files.py": {
      "sha256": "5510101578ea15fe40a437f8f7dda079dbd8944a507631029a8275d80ec9e177",
      "size": 1600
    },
    "mcp/ngs_workbench_mcp/runs.py": {
      "sha256": "09a2ca4c1e75b01739fcdc208564c0a64804ee33f3dc68a6b0d5e468925eddaa",
      "size": 20499
    },
    "mcp/ngs_workbench_mcp/runtime/__init__.py": {
      "sha256": "de0673c6398ec551aaa191853b30c05aa21445ccba84dde324214e8a982cbf4e",
      "size": 331
    },
    "mcp/ngs_workbench_mcp/runtime/local.py": {
      "sha256": "cb8485b9fa77f55587a0c348f2690ff76616d55bce785947a3c4e959348b5604",
      "size": 42049
    },
    "mcp/ngs_workbench_mcp/runtime/models.py": {
      "sha256": "2e4f4b4c155d10ab9fcb86d1c83791cdc724e461128dab6a100aa3623f4e7c31",
      "size": 4436
    },
    "mcp/ngs_workbench_mcp/snakemake.py": {
      "sha256": "7cc8026e284112abdd0fc72f9088adca9bed7d017839e83909ed2a5388279cb8",
      "size": 502
    },
    "mcp/ngs_workbench_mcp/ui.py": {
      "sha256": "cdf6e249f8be3707a859073345f383ae1fed144c5c2c1e435e5f6618f969b397",
      "size": 3058
    },
    "mcp/ngs_workbench_mcp/workflows/__init__.py": {
      "sha256": "b2b1ddadfd4bff8a0ed01ac19c3164e0f5bf6d0906f66c04a375402a12d6ab5d",
      "size": 68
    },
    "mcp/ngs_workbench_mcp/workflows/catalog_store.py": {
      "sha256": "fbd2c97a77afddc017d8725966aa3af9d417d5451150f40e58f82fc94656bdc7",
      "size": 12528
    },
    "mcp/ngs_workbench_mcp/workflows/defaults.py": {
      "sha256": "7e7ade2d8f4c83c9dcca24f7213f016ba3a8efec5003b3ccbf46d4caaef8108f",
      "size": 5120
    },
    "mcp/ngs_workbench_mcp/workflows/nextflow.py": {
      "sha256": "f0e1108a123bb4905e9eb9d1ad546133998bf1fb649be4471b763aca851323f5",
      "size": 41784
    },
    "mcp/ngs_workbench_mcp/workflows/remote.py": {
      "sha256": "7fcedf679eeb0a83c40afcf2674fa07f3413c94ce7ba11d50d882b947d46cfb6",
      "size": 907
    },
    "mcp/ngs_workbench_mcp/workflows/resolution.py": {
      "sha256": "aad438fb579dd4813312a16daebeb119ace620bb6ec426114e98f1cd71f7dabd",
      "size": 1884
    },
    "mcp/ngs_workbench_mcp/workflows/snakemake.py": {
      "sha256": "d961d3ab1ce75f541daa1120900194cab5a667f6fb1e2da1bbf3b8a1dcd06a6d",
      "size": 19203
    },
    "mcp/ngs_workbench_mcp/workflows/source.py": {
      "sha256": "7a9e4b49d5b6aec9c119f93603e68f3d863c6c4fde71c2b9a9e66f41d60c1071",
      "size": 1785
    },
    "mcp/requirements.in": {
      "sha256": "5d69e5fcd1747710deb57ab06df9792e61d122913fbcbe767afb79d4e75101ff",
      "size": 100
    },
    "mcp/requirements.txt": {
      "sha256": "1e8b751883bf29bc55830bcdcb840236cf0ff7e5eee1c64ff612aa7aa54ecb1e",
      "size": 75483
    },
    "mcp/rosalind_logging/__init__.py": {
      "sha256": "b22ac601b6728639ddbf90f922d5798388c0a0e3f1f22aa1c75aed2989102ce7",
      "size": 5819
    },
    "mcp/rosalind_logging/mcp.py": {
      "sha256": "e5c1aa204021a1e1ce7b7e4384c3493d3b91b584e7371cfd8fd3c7b9ddf8798b",
      "size": 1573
    },
    "mcp/start_server": {
      "sha256": "27c6091936bc276d9f0003aab45fe76dbd72e51e07d7457c1c648c8655ff663e",
      "size": 3880
    },
    "mcp/start_server.cmd": {
      "sha256": "e62c22e617ecbbb46e394b365e21a16af173436f5824be68ebbc2705a4f5e5be",
      "size": 5941
    },
    "package-lock.json": {
      "sha256": "7e23ae962289355c3466e6ef19e1a1e8e029fd2734fd24cad0c6ed0bd1a790c9",
      "size": 133429
    },
    "package.json": {
      "sha256": "6b779b9eda95fc086ad24c45549b891e68846c16f90fad99ce2e403dd5a5efca",
      "size": 1357
    },
    "references/analysis-context.md": {
      "sha256": "e420afe55caf130787d15da562b860f07ded89fb730f983e1dab4a8d7246cd55",
      "size": 1471
    },
    "references/bcl-demultiplexing.md": {
      "sha256": "ad53e901d9ab771cfee67a07b457fa1ed41be012daf358f6583a0a1eaf66bf76",
      "size": 2000
    },
    "references/bulk-rnaseq.md": {
      "sha256": "b8a7a96ebd0a117722faa967bb6117d820f72f45ad366321c1f535e25be408b0",
      "size": 4608
    },
    "references/default-workflows.json": {
      "sha256": "bad14858ab87510e940cc1f81ebec3f17cb1fdf5f9794833c81d7aa6cbcb610b",
      "size": 3856
    },
    "references/dna-variants.md": {
      "sha256": "410b4fe721b4c5f0e229b93cc48f4b36e7d183c28c495f014749693d4b5f9bc8",
      "size": 2684
    },
    "references/epigenomics.md": {
      "sha256": "6b21452abeefe666befeb65fa66ce2de0505c14486cd1289b3c32a140c912d71",
      "size": 2335
    },
    "references/fastq-qc.md": {
      "sha256": "51c7a98d39559606b21d531fe5d4febbccabd811cf0073663c031aaff244d252",
      "size": 2257
    },
    "references/microbiome.md": {
      "sha256": "04dbb4767fd9d9c4eceb1f2c6abd3fc90c48aefa8318f19be83501d62b00d974",
      "size": 2629
    },
    "references/single-cell-qc-annotation-umap-heuristics.md": {
      "sha256": "dbdd9452d4e25d872933c71ab3b62a6650d6f32880e467d5b6ba79d497a03c27",
      "size": 9326
    },
    "references/single-cell-rnaseq.md": {
      "sha256": "4f45e84a40e3c0ba33a9307e41702d692544e8f171f9f2aef742fa99147bbe33",
      "size": 5126
    },
    "scripts/check-package-lock.mjs": {
      "sha256": "bb873d93b3de1a8210ab05a04c44617d963fd12fb7affadebd81618a9e3c95a7",
      "size": 827
    },
    "scripts/check-release-artifacts.mjs": {
      "sha256": "a95d7269b7c1515e03b3d3ea2e58c6aea3510f45448960f5ca6c1787e103f01a",
      "size": 1751
    },
    "scripts/check-release-ci.sh": {
      "sha256": "e8897ac70013ad85107b13612ecd0003682a5aee47d95c7a9a74dd6067f5ba40",
      "size": 1853
    },
    "skills/design-ngs-analysis/SKILL.md": {
      "sha256": "fb2c6609b47572a8ad29f0fdc189989376fedc984c323613bb36b3f6e333c5cd",
      "size": 3218
    },
    "skills/design-ngs-analysis/agents/openai.yaml": {
      "sha256": "e74e564e191dc76cba5cbe7ce0e30ad3a35cdd39316ca88adef2f3434b5a7894",
      "size": 299
    },
    "skills/ngs-analysis-workbench/SKILL.md": {
      "sha256": "ce2dd71e32c7cafb2906884635e88a019ebb4544e602cc145c87d83bc134a1e4",
      "size": 2360
    },
    "skills/ngs-analysis-workbench/agents/openai.yaml": {
      "sha256": "d0cca5468a24c5b7a3626b53f4965d935bb62fbd48994b8ec99072c702e494ef",
      "size": 262
    },
    "skills/ngs-analysis-workbench/references/guided-entry.md": {
      "sha256": "269e80e7372f0a29ce82423d34060e11c8eec2e1f400e61b7eee0672bee900a0",
      "size": 2141
    },
    "skills/run-ngs-analysis/SKILL.md": {
      "sha256": "fb5e48c66f4557858ae67d440d1046771cd74b961f31be267d79be16bf83d99d",
      "size": 9216
    },
    "skills/run-ngs-analysis/agents/openai.yaml": {
      "sha256": "ed6ada7e34deb501dacb109fe99729c1a41657cbcddc8aeb4df0857a2f66ec94",
      "size": 276
    },
    "skills/run-ngs-analysis/references/nfcore-profile-selection.md": {
      "sha256": "daac111cfe1afdc4c03df29a0e3b03212fbacc58f970a108c45842529836e39a",
      "size": 2776
    },
    "skills/run-ngs-analysis/references/runtime-readiness.md": {
      "sha256": "83546ce700b9bb71a433b4ee4480b4c847f3eb2cdc7332c3928e46e131ce9bc1",
      "size": 3034
    },
    "skills/understand-ngs-data/SKILL.md": {
      "sha256": "cc047c57fa41d11ceb64b21e3a44ba0e69cf07d3829280d08f79b7e59863e215",
      "size": 2866
    },
    "skills/understand-ngs-data/agents/openai.yaml": {
      "sha256": "5886ebe518033d9a341718055ccc8b76e21b2c65cbc162edc0cf225e4a6c7cf0",
      "size": 285
    },
    "skills/understand-ngs-results/SKILL.md": {
      "sha256": "68b60db1155b7357770e5ff8113271f6d77ad21dcd8c1e2a89536380e0cb9e73",
      "size": 11900
    },
    "skills/understand-ngs-results/agents/openai.yaml": {
      "sha256": "8c3ddbe4983b6e85de9b9dad57adb620f8fcb780de6d8bcc7f91ddddd82403bf",
      "size": 285
    },
    "skills/understand-ngs-results/references/analysis-summary.md": {
      "sha256": "8754f7f0b7a9dd5e2ec765a73e65947a61f5b0b05e2567d71201eed89ea4ee38",
      "size": 4018
    },
    "src/App.module.css": {
      "sha256": "2eb634338ad38ea5c3e4cbabcf52212996971ee0ab7cd512a85706b24d832608",
      "size": 5834
    },
    "src/App.stories.tsx": {
      "sha256": "bb19b60aec154ed706c78dd3d77e5c6c9ccf7e77596c14f783d4fa4e7af99a2d",
      "size": 56213
    },
    "src/App.tsx": {
      "sha256": "0e666052325ac8b7545c5cfd88d2bdd1165c02b3f9e1067fbe775dbf94df8e86",
      "size": 15141
    },
    "src/analysisSummary.ts": {
      "sha256": "e12007bfd0556c55aa210086e8b7a9c20bf0045531815e4bb28ca3499cc13bb0",
      "size": 1429
    },
    "src/components/AnalysisSummaryPrompt.tsx": {
      "sha256": "3eda87e6697cb9cc97d1b628c9be5d0a341e94f9e6f3f7cc95c1098105ee8d9b",
      "size": 1367
    },
    "src/components/ComputeTargetCatalog.module.css": {
      "sha256": "ae00506d137984c72d30a47cf61320032df1cd843226df2913ace63de95c6a4f",
      "size": 3259
    },
    "src/components/ComputeTargetCatalog.tsx": {
      "sha256": "ec4e2948d347a433d9627a330021c471dab02d23ec9480878147ba3c369bf1ef",
      "size": 5406
    },
    "src/components/CopyButton.tsx": {
      "sha256": "e4ee4cefb686814e8391d5b0cc6551d5bfb2d686b8bb6eb7791a27763ad78d36",
      "size": 1105
    },
    "src/components/ExecutionObservationPanel.module.css": {
      "sha256": "44a8db216777a82ac3a6277ecdbaec606b3170a7f1629c9a0cfe9c57173fa44f",
      "size": 6631
    },
    "src/components/ExecutionObservationPanel.stories.tsx": {
      "sha256": "b2aafcf211c81403b2ec1c226b3e3bdd1d29a70c1b02fd19e3a054079e9907d2",
      "size": 5719
    },
    "src/components/ExecutionObservationPanel.tsx": {
      "sha256": "db699fda12aaef736930e32febd095cb0dd1e340438e58d9ef51c7994cb981f6",
      "size": 10689
    },
    "src/components/PipelineCatalog.module.css": {
      "sha256": "ab1e97efe683f977270f9d4e893e666a541e3050aab831490f7a1371c44844b0",
      "size": 3684
    },
    "src/components/PipelineCatalog.tsx": {
      "sha256": "f71f6613927d4030e09ce67b701e32ee52d05c094f3efad2bd7c2d18b652b5c5",
      "size": 6886
    },
    "src/components/RunHistory.module.css": {
      "sha256": "81c0be4bc2522086361bdefcb828645bde368f87235610f99d4d79e9b5c29502",
      "size": 3399
    },
    "src/components/RunHistory.stories.tsx": {
      "sha256": "026f965a8507861b924b364500616c9dabaa0a23a8fcd243d6aac83bb5bb48dd",
      "size": 3958
    },
    "src/components/RunHistory.tsx": {
      "sha256": "2ce82953160bd0792520db04052b098e695985edb6cd9ab4ebc8062517552f90",
      "size": 6449
    },
    "src/components/RunHistorySidebar.module.css": {
      "sha256": "5ad773399311de1fd6c972084f6ae848b229993290dd098cb03ac3a00f71f01c",
      "size": 5925
    },
    "src/components/RunHistorySidebar.tsx": {
      "sha256": "2ae02838a4c6acfc0fbe4e919e477d74cefd82463cc9fb95039645449a098bec",
      "size": 13785
    },
    "src/components/RunStatus.module.css": {
      "sha256": "f3276ab4476c323898e2a689a4fc8f0f4dbef88154e231eba60da7187ea3472a",
      "size": 2916
    },
    "src/components/RunStatus.tsx": {
      "sha256": "0402b2c3ec93a5f70e60d1037a10da5524fed2f58951813bfdfcbc794e01e7d0",
      "size": 7518
    },
    "src/design-system/Chip.module.css": {
      "sha256": "347fc813db58e4ed77754bf226df425fc8f153bf51689f2574de8f21c50a1679",
      "size": 856
    },
    "src/design-system/Chip.tsx": {
      "sha256": "74b677d8cc553b3b8006f3ca043ad1c5c60227571e351ef51efcbe8e1fc655ee",
      "size": 867
    },
    "src/design-system/DisclosureSummary.tsx": {
      "sha256": "145d23a33e6e205eba3443148a55f97b4a3db46e32dbe82dfe7f5c6f953e00c8",
      "size": 587
    },
    "src/design-system/Icon.tsx": {
      "sha256": "3ce6b0f872bd63a5ea49b158b2c62b0a05501f1776f8704c051bb6d0974204f9",
      "size": 2759
    },
    "src/design-system/README.md": {
      "sha256": "1973f99a89ac26091ab1d8833524c9f3a8e9c34b5938f76ef2bb20bd3a90884d",
      "size": 9492
    },
    "src/design-system/TooltipIconButton.module.css": {
      "sha256": "4546ed807066c9a155db7b8d31cda77f3820a2a80cdcbefa8abc4f78c5590b63",
      "size": 624
    },
    "src/design-system/TooltipIconButton.tsx": {
      "sha256": "b9791af7c8af606d57b4f6351e661f01d84ade7861bbd3037c266546f6dd4280",
      "size": 1864
    },
    "src/design-system/icons/arrow-left.svg": {
      "sha256": "28beb521d5556baaf3400b4199b416bcf02e094dd4f68c6718d1221e862f9460",
      "size": 664
    },
    "src/design-system/icons/arrow-top-right-sm-thin.svg": {
      "sha256": "0feb8ce429bffc0eb10f3635b1017b93d9a66eceed89597d07cf734547ab9daa",
      "size": 576
    },
    "src/design-system/icons/bar-chart.svg": {
      "sha256": "865db328d3aa1adc2e48f24075fdd058b42a1f55a7478933de5259ab2956f04f",
      "size": 1143
    },
    "src/design-system/icons/building-blocks.svg": {
      "sha256": "b2c90e3e9c3b167463ca5ae549888cdf39b8338016be3c1e1fa1acd37ddb0f8b",
      "size": 722
    },
    "src/design-system/icons/chat-plus.svg": {
      "sha256": "6cab5ec08c7fa0c403cf63d58a7bed751dba2c18bb87a51a3db20a8c031fd932",
      "size": 1006
    },
    "src/design-system/icons/check-md.svg": {
      "sha256": "9b2e0105bc740878f0459212ce28ea7b5a33dab717af2fdc64e05ab69751eb96",
      "size": 587
    },
    "src/design-system/icons/chevron-down-sm.svg": {
      "sha256": "ba379249b1d9e34b61bce1ad24b29c653696936d788d76cf4549a0ca771ae372",
      "size": 524
    },
    "src/design-system/icons/chevron-right-sm.svg": {
      "sha256": "d3876be5f0affb893929afd3455f6c25913bafc912986c8dbc4d0daa86374ee8",
      "size": 509
    },
    "src/design-system/icons/close-medium.svg": {
      "sha256": "30127c1260a87f2323b2e3b5aad02da6c1a0501343ffd089f61d58cf3ba05d74",
      "size": 684
    },
    "src/design-system/icons/close-small.svg": {
      "sha256": "5ed5dea467dc8f02cb9d95627d300af8e9e1c7ddac1a117e3d37978732bd7acf",
      "size": 717
    },
    "src/design-system/icons/copy.svg": {
      "sha256": "ce35441b3c8b98cb51a73b3720cf970a2f707aa629cba1a9a8e36c0901e92afb",
      "size": 3978
    },
    "src/design-system/icons/info-sm.svg": {
      "sha256": "f0ee9895ba84ba880a78e49f8cb1b9d3e4f766e5a85e0dcd302502c7b4a73878",
      "size": 951
    },
    "src/design-system/icons/menu.svg": {
      "sha256": "38e54b78385c939e3ff50e5e9e3b6638cd90557df082c4b5cb4920459b03691e",
      "size": 670
    },
    "src/design-system/icons/provenance.json": {
      "sha256": "70b3fbb990047590a565d3028d8206ff5c33f3337f97156c809c45a1ab18b779",
      "size": 2153
    },
    "src/design-system/icons/regenerate.svg": {
      "sha256": "770fb09081f3ded793b2b5e553d4a254475a258c02e49f87fe70fa464b739a24",
      "size": 1427
    },
    "src/design-system/icons/spinner.svg": {
      "sha256": "4944fe99bc384e860ae3eff2a426727fab23d6f39e4efd2a24b693489a97f5bf",
      "size": 518
    },
    "src/design-system/icons/square-grid.svg": {
      "sha256": "a6ce99986d6f2abafa404c0d3014700599d7459614ac64d8565a29dca832e9c3",
      "size": 2069
    },
    "src/design-system/icons/upload-documents.svg": {
      "sha256": "6e8e3f29d8277ed6df2c4c75a3adfc6144ca522812ee041d0d3c5cc31df6da1b",
      "size": 2805
    },
    "src/design-system/motion.css": {
      "sha256": "01387f0c00db0567aea0b4f3cf3a0065d737c9eef96213baed9f06252b04aaf1",
      "size": 1415
    },
    "src/design-system/tokens.css": {
      "sha256": "692fe3d50d2beb7f27a51104c5d53fc53853a977af9ccc95d4668abd5ceba615",
      "size": 701
    },
    "src/design-system/useDialogMotion.ts": {
      "sha256": "e1bd6934a945a37500b69faa9c7565b61e41a80d6b9b1463b8e8bf73543ecd09",
      "size": 1548
    },
    "src/execution-observation.ts": {
      "sha256": "61a4a10f724702da506c0cfffc57b6daaf08f71c4b1c722cb3d54e3eb4d550d7",
      "size": 4816
    },
    "src/fixtures/executionObservation.ts": {
      "sha256": "afb9f6d234f193893940cb88f061718459e34be883161b56db5ffc499fdf02fa",
      "size": 4021
    },
    "src/hooks/useNgsWorkbench.ts": {
      "sha256": "96b384df8818778cb3a6220a72ed9725c0dfb55bf6cd93b23445c5ae871b047f",
      "size": 14661
    },
    "src/inline-main.tsx": {
      "sha256": "dbe787d3e6c279158d1ac36c1eeb7b2920a0e93d259205c5d2c4efdb2c42a845",
      "size": 261
    },
    "src/inline/RunReviewApp.module.css": {
      "sha256": "dc8111b0516eb22ada9c57603a3c435c358376787ae4b18842616ea9e8532938",
      "size": 9106
    },
    "src/inline/RunReviewApp.stories.tsx": {
      "sha256": "b43c003f78bb8e0f51db4680d8e73617c8650e261bfaf98b7731f56a14f42989",
      "size": 19245
    },
    "src/inline/RunReviewApp.tsx": {
      "sha256": "9bf7ff249305b117e857feb9a7d3b28e90c92966550af0a46fa3d598f1bf2f4f",
      "size": 27982
    },
    "src/inline/client.ts": {
      "sha256": "b79a94e41ecaae6650caa941ba383146289c752ce6ec16af91d4b10b230e760e",
      "size": 4576
    },
    "src/inline/types.ts": {
      "sha256": "472ebb029c0c719665e977dabfb5e1ca02e04e9ebbc43e2aedf7a91edd062f6d",
      "size": 13380
    },
    "src/main.tsx": {
      "sha256": "e946a9f6836222ac728ff49d89fd5df7aad099f72bc1425889e3e36910eb4369",
      "size": 388
    },
    "src/mcp/client.ts": {
      "sha256": "aeb57dd10aac56b054d8f582d51d37e7d1b255f8a106cb62c9470d5df8d9ff5e",
      "size": 3701
    },
    "src/mcp/ngs.ts": {
      "sha256": "07ce7aeaf759e74083248dbe829c45870916f1ccc7a373b53392a831a378111f",
      "size": 9394
    },
    "src/model.ts": {
      "sha256": "503f84cd9a28949e7b34d3fe5c096dab4ba679ab81cf0ef3c006a94803efb71a",
      "size": 4603
    },
    "src/report/AnalysisReport.module.css": {
      "sha256": "dd0effa4cc11ed4f20201d38f1c5a30f3a06de72a6819e1fb77ee51a3d1b2fda",
      "size": 8590
    },
    "src/report/AnalysisReport.tsx": {
      "sha256": "1fbbb90f270223848cd2240204ad097775ad96fb2871793223b247ffce57c88d",
      "size": 1710
    },
    "src/report/ReportArtifactRow.tsx": {
      "sha256": "5e51009774cc344dcc5d855ac2c29b2d95f713d058eb813b7bc3aeb3a20c0234",
      "size": 2095
    },
    "src/report/ReportArtifacts.tsx": {
      "sha256": "7f314a6e3586f8b2c9d7713e5ea6ac246b5c83d5a8ad17b23ecca80916088fa9",
      "size": 1839
    },
    "src/report/ReportDetails.tsx": {
      "sha256": "0dee8d964463066934635e09844949440bde0dc3f5867bd54309335ca42b0a15",
      "size": 4567
    },
    "src/report/ReportHeader.tsx": {
      "sha256": "d104c5b3e0cbf8c7a8b5a0e2d7799591be201d988a4d232b992d654853daa3ef",
      "size": 1904
    },
    "src/report/ReportNarrative.tsx": {
      "sha256": "f278be2f3f4245e44d02b8ddbe57ba985ed817640997cbbb878b86a3d7b252b2",
      "size": 1376
    },
    "src/report/format.ts": {
      "sha256": "7040288f40c3a972e575e028dcf0c9b995701b3a27a5ec23a878fdd674887781",
      "size": 1330
    },
    "src/report/index.ts": {
      "sha256": "a1c9a7853678823c0502c6dcb33c1525d2986387608f77da7ff01258ea8e9fe2",
      "size": 216
    },
    "src/report/parse.ts": {
      "sha256": "d2ce350bd6f94dc479f4e48ec204c73f23d86deff56cdc4d420d38ddcbb0f8dd",
      "size": 5270
    },
    "src/report/types.ts": {
      "sha256": "e31d27fbe194fda76052e8a4a3962da07976a57c8dd6c96fca18bdecee45f54d",
      "size": 868
    },
    "src/runRefresh.ts": {
      "sha256": "025c13c2cc4b6680b7f2d0b3218c681100c5afc8d03c31b9a7080a20e995fc1c",
      "size": 947
    },
    "src/runStatus.ts": {
      "sha256": "a7e7345b0e3ce4629c0e34f182b5600b0069098c1c0a55c75886ec1f1e97ccc6",
      "size": 1661
    },
    "src/styles/base.css": {
      "sha256": "c99e90b349168e6866b67c5d56790223e6d91e07e94268079933ceadd2d2a64f",
      "size": 2374
    },
    "src/styles/inline.css": {
      "sha256": "47bd1e56feee5955ef59c95e1a59bd5fe5d5902a1912c0a763f3fc216ab46345",
      "size": 102
    },
    "src/styles/theme.css": {
      "sha256": "3992d29b9db4c173648106038faa01d00bc82ee04cb1ebad86b614b14e236f20",
      "size": 5305
    },
    "src/styles/ui.module.css": {
      "sha256": "0e242cde2ab423e9693d18d6991b3ad327addb8b2318115d26781570c1de10f2",
      "size": 2637
    },
    "src/vite-env.d.ts": {
      "sha256": "65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5",
      "size": 38
    },
    "tests/daemon_test_case.py": {
      "sha256": "87b9052a1b5f1c0b6bfafc8ed95448827ddeaae023bb1786e30aeadf7de524f1",
      "size": 3110
    },
    "tests/fixtures/execution_observation/README.md": {
      "sha256": "9f2a03bd32950a6a31b6c7b3eb73a948f2460cb1871f96d595b2b389558caa4a",
      "size": 1192
    },
    "tests/fixtures/execution_observation/fixture_manifest.json": {
      "sha256": "0b91a49d3ef12c2922a0af594da45b5202e9e1a1bd6005815b665883241e5730",
      "size": 989
    },
    "tests/fixtures/execution_observation/goldens/nextflow.json": {
      "sha256": "9e32f820c55b110ebe49880be3e11f025abb42393826b69718289dbc8abfa481",
      "size": 3602
    },
    "tests/fixtures/execution_observation/goldens/snakemake.json": {
      "sha256": "182d126195956a1fc4e852613e7f24129c93a940d4b4a4af1e89f2b44c01d3df",
      "size": 4100
    },
    "tests/fixtures/execution_observation/nextflow/workflow/trace.txt": {
      "sha256": "1b949485a35a825f55d904fdf1c624ec4233d325d8336c451d546ce2d3197e20",
      "size": 504
    },
    "tests/fixtures/execution_observation/snakemake/results/.snakemake/log/2026-08-07T180851.803407.snakemake.log": {
      "sha256": "d95c965a54ab3de78e32ea86f60204db9095068dd27a587bb7b2192c7e157b71",
      "size": 4587
    },
    "tests/test_compute_mcp.py": {
      "sha256": "3e67aa81dd1893b00c7bc60c16205601803e68286bff96b9740d0a0e80b2f1c2",
      "size": 4662
    },
    "tests/test_daemon_lifecycle.py": {
      "sha256": "14b8f87b92928d813286457db56eadb7a2046a81f6c9615ecc8d6796a533e14d",
      "size": 56451
    },
    "tests/test_execution_observation.py": {
      "sha256": "5170478ae1e0e5ecac35b558d75cfd1af7fa134478c1937ec22c0ced41575968",
      "size": 11250
    },
    "tests/test_execution_observation_golden.py": {
      "sha256": "a437b9a2b74edc4264f5175eb5bfb665f2aed5c9afaef1bded784619647e6e45",
      "size": 3220
    },
    "tests/test_mcp_ui.py": {
      "sha256": "673ec05526d94a32e6fd6fe02bc65fe4d19fbb256edf00e722b951ee660ce523",
      "size": 22814
    },
    "tests/test_native_approval.py": {
      "sha256": "077426eb9d97e4127a9ef5b4d2cf42ce915d51b67db870d561d6a68d0bd4258d",
      "size": 7062
    },
    "tests/test_nextflow_mcp.py": {
      "sha256": "0b6275052cf0dd50d349b52c90db7d7589d4438196fe3e7e576599cd4e135b40",
      "size": 45675
    },
    "tests/test_preparation.py": {
      "sha256": "5f85a478ab3b3b6dbecc54004f19ad4849000863d6827b336bf865eefa48b827",
      "size": 3527
    },
    "tests/test_readiness.py": {
      "sha256": "2a0221d0214141e6891a0f013a55c34f93fd6dd63bc23c386d4a85c480c23a7e",
      "size": 34539
    },
    "tests/test_report.py": {
      "sha256": "206dafd6caacca515bbba9e710a8b1dfb6abf61eb788cb3ac8ebb1c945ddde41",
      "size": 35351
    },
    "tests/test_run_persistence.py": {
      "sha256": "1586e84f2bf0fac17d98f7d04223fe465d17a8203f4ddbd8ecb98440e3dde29b",
      "size": 56019
    },
    "tests/test_sentry_logging.py": {
      "sha256": "c4a608258a1d83277f2bf5ef2f8c8feabdcfdf02c9ef5e417f5652f874fa08d6",
      "size": 6060
    },
    "tests/test_snakemake_mcp.py": {
      "sha256": "9756d3e527fe28c149a428682f275761a4a6f0e7e398c459b0891c591f273654",
      "size": 41052
    },
    "tests/test_ssh_transport.py": {
      "sha256": "0004bc42163e4cd7da473c7838ead8297e67a2cb1fa7ee867872c4a3ff19e544",
      "size": 32292
    },
    "tests/test_workflow_catalog.py": {
      "sha256": "eca902e790c656df1483aae8e31c625c1e06d503c704a3baee429b0b14eab79a",
      "size": 6249
    },
    "tests/test_workflow_defaults.py": {
      "sha256": "82a017d8645a3335b8e711cb1d1b855068e83ad5107f947b893c73e5c1b5bf5a",
      "size": 6385
    },
    "tests_js/analysis-report.test.ts": {
      "sha256": "55864ddbbb034745ab4cefa1fb9cd876910f935ac9a2be0af8e8d23cbb682f37",
      "size": 2575
    },
    "tests_js/analysis-summary.test.ts": {
      "sha256": "bca164b0d4aca4ebcb3bfdcc372fa22bd50cc18cd997a008f060de3049612a82",
      "size": 3170
    },
    "tests_js/client-logging.test.ts": {
      "sha256": "198625e2906ff819d30be4f2f33dda80c7c92927bf6b82027a93e2c6fe58b7b7",
      "size": 4468
    },
    "tests_js/inline-contract.test.ts": {
      "sha256": "4ad4558c372c384496a12315a20aee8dd0f0a25f2a51ae8e52ee59a5b9a5c90c",
      "size": 10236
    },
    "tests_js/inline-sizing.test.ts": {
      "sha256": "65d03025eaf7d69680ee80ce66c7c4cec1a1a31b9f787a06c038c57e1575f6a6",
      "size": 582
    },
    "tests_js/run-refresh.test.ts": {
      "sha256": "5e6f401c6473682e237577c7cedb7ebdd5834024132db4df44b16d6fa9f74099",
      "size": 1922
    },
    "tests_js/run-status.test.ts": {
      "sha256": "0f5c40bf0d09780f7975d44759052c810790130e610e8a5475224e4e80609df2",
      "size": 1852
    },
    "tests_js/workflow-catalog.test.ts": {
      "sha256": "73c8a56d398e9d13457ab07683d8418b7b6ff3be41f0fc29af92368a52e3c567",
      "size": 13678
    },
    "tsconfig.json": {
      "sha256": "17b7dee39e43dbe332ede5e0608503f0a3067483429ec640295aaddff96cc173",
      "size": 634
    },
    "vite.config.ts": {
      "sha256": "f3e57129baf5f823cb0804320cf951cf2491e26da474d54a9a1899e12e4f055e",
      "size": 344
    },
    "vite.inline.config.ts": {
      "sha256": "5e373d10df966d1155d7cdcc4572fcb8bc0f6a9454008a98c9c67b17add5b206",
      "size": 347
    },
    "workflows/bulk_rnaseq_counts_qc/.snakemake-workflow-catalog.yml": {
      "sha256": "d79b9b2bd71ae49f285568e74a45a441e0c783d025476cf0c16526c317552d14",
      "size": 255
    },
    "workflows/bulk_rnaseq_counts_qc/README.md": {
      "sha256": "657fcd7954b58aafe7a1ac89fdb7ae0c9073be62612ca44eb924aea0e52a520e",
      "size": 1208
    },
    "workflows/bulk_rnaseq_counts_qc/config/README.md": {
      "sha256": "71be86ea89675dc7a18203300cd77cb2d7dadc6a00c3f9edf16d827a0b0a7deb",
      "size": 2132
    },
    "workflows/bulk_rnaseq_counts_qc/config/config.json": {
      "sha256": "4445f46f9caec7e482548ddb4ae17cf8d02d5835e8d024da2625e85987d7ac56",
      "size": 1317
    },
    "workflows/bulk_rnaseq_counts_qc/workflow/Snakefile": {
      "sha256": "69c2b37cbdb722e83114019261b22422b1064bea857b928413bb69e9c6fac9da",
      "size": 7931
    },
    "workflows/bulk_rnaseq_counts_qc/workflow/envs/salmon.yaml": {
      "sha256": "92f3e1a7d0067ef836e5317aa7824da19a7aa7495748993eff2347717c3dd6e2",
      "size": 122
    },
    "workflows/bulk_rnaseq_counts_qc/workflow/scripts/aggregate_salmon_quant.py": {
      "sha256": "d5831c9e38cd70fd860ebe77b9bf355d452ebc3b2c5d72e65794dc9a35342dc4",
      "size": 10646
    },
    "workflows/fastq_qc/.snakemake-workflow-catalog.yml": {
      "sha256": "d79b9b2bd71ae49f285568e74a45a441e0c783d025476cf0c16526c317552d14",
      "size": 255
    },
    "workflows/fastq_qc/README.md": {
      "sha256": "82361c5c138cd94975c9fe509870db4ffd48a059de142496a8fffff2f2583ede",
      "size": 897
    },
    "workflows/fastq_qc/config/README.md": {
      "sha256": "f9f9bf14c12ce9dc7a183cb9aaefb9be4008fe6a6955a3540c7ecd1eebb87c49",
      "size": 1511
    },
    "workflows/fastq_qc/config/config.json": {
      "sha256": "91d0da952bfda3191d54a42da7e3ccbe153eeb13642526606f02d6fa8d6edcfa",
      "size": 389
    },
    "workflows/fastq_qc/workflow/Snakefile": {
      "sha256": "f52cb43519fd5f5f6edd114bc33714e58ca1cd5b4c1364fd089d89d08900f36b",
      "size": 2259
    },
    "workflows/fastq_qc/workflow/envs/fastq_qc.yaml": {
      "sha256": "fc9a416942351cdd619710482143ce385492367927b49dd8d81809689b0a963d",
      "size": 138
    },
    "workflows/fastq_qc/workflow/rules/cutadapt.smk": {
      "sha256": "1309916945bdd7f789db6215740386b66371f8c2fdffb6feff872e0c50fea6b5",
      "size": 1178
    },
    "workflows/fastq_qc/workflow/rules/fastp.smk": {
      "sha256": "476bb997568a44dc492b1fb04b9bc43b642145bbe60bcf662ea6d1984dc8b059",
      "size": 1182
    },
    "workflows/fastq_qc/workflow/rules/none.smk": {
      "sha256": "43cb20c29593b567b0d1541a553f3ac83d6b785d9f307ce9ded40e053c4c2dce",
      "size": 59
    },
    "workflows/fastq_qc/workflow/rules/trimmed_qc.smk": {
      "sha256": "4c989e9f6e1c0c17ce3df67a9e97e73ddcaea73a9abc463c3360ecf4659b7a93",
      "size": 1146
    },
    "workflows/scrnaseq_fastq_to_count/.snakemake-workflow-catalog.yml": {
      "sha256": "70266987cacda70f1f5eb5e307cdb97e4062e9b6c275e3df883d8c7e63e09bec",
      "size": 254
    },
    "workflows/scrnaseq_fastq_to_count/README.md": {
      "sha256": "9ae4903c5d0853eb2f5264a2af24bf240637a23362b6e1b081b699dcfe31fc01",
      "size": 1075
    },
    "workflows/scrnaseq_fastq_to_count/config/README.md": {
      "sha256": "dc379e3f1864aa69e0f63bb21e2f339dfe99fbd722591a523e2cf2a1128099ae",
      "size": 2308
    },
    "workflows/scrnaseq_fastq_to_count/config/config.json": {
      "sha256": "450ae9673958b0936dce097571d9be83f22e5014a232ae37f48d9ec6e54cfcdc",
      "size": 1372
    },
    "workflows/scrnaseq_fastq_to_count/workflow/Snakefile": {
      "sha256": "7bb0d90a4b6ab9f38816feb1d42cffb22547a723e578d0d32637a2f744bee8b1",
      "size": 4826
    },
    "workflows/scrnaseq_fastq_to_count/workflow/envs/star.yaml": {
      "sha256": "866ed3eb7c9991986a1e9f1e661266baba185287b5472be3e58029c5fc6398bb",
      "size": 87
    },
    "workflows/scrnaseq_fastq_to_count/workflow/profiles/container/profile.yaml": {
      "sha256": "8eb7df6a0da52e940106fe9d3f5d7cd214008ae231e259e5f9616dc954d2d6f8",
      "size": 38
    }
  }
}

SHA-256 of public snapshot: c00b8f68f237d558a33ded66afff67c4748c368ae0f6d588e14f28cd932c61c2