clio-kit 2.10.0__tar.gz → 2.10.2__tar.gz

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 (538) hide show
  1. {clio_kit-2.10.0 → clio_kit-2.10.2}/PKG-INFO +2 -2
  2. {clio_kit-2.10.0 → clio_kit-2.10.2}/README.md +1 -1
  3. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/server.json +1 -1
  4. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/server.json +1 -1
  5. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/server.json +1 -1
  6. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/server.json +1 -1
  7. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/darshan/server.json +1 -1
  8. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/server.json +1 -1
  9. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geojson/server.json +1 -1
  10. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/server.json +1 -1
  11. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/.claude-plugin/plugin.json +1 -1
  12. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/pyproject.toml +1 -1
  13. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/server.json +2 -2
  14. clio_kit-2.10.2/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/artifact_content.py +184 -0
  15. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/artifacts.py +178 -1
  16. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/capabilities/__init__.py +2 -2
  17. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/capabilities/jarvis_handler.py +28 -1
  18. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/models/artifact_documents.py +23 -2
  19. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/uv.lock +1 -38
  20. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/lmod/server.json +1 -1
  21. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/ndp/server.json +1 -1
  22. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/server.json +1 -1
  23. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/server.json +1 -1
  24. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/server.json +1 -1
  25. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/server.json +1 -1
  26. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/server.json +1 -1
  27. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/server.json +1 -1
  28. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/sac/server.json +1 -1
  29. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/scientific-catalog/server.json +1 -1
  30. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/seismic/server.json +1 -1
  31. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/server.json +1 -1
  32. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/spack/server.json +1 -1
  33. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/server.json +1 -1
  34. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/server.json +1 -1
  35. {clio_kit-2.10.0 → clio_kit-2.10.2}/mcp-server-versions.toml +2 -2
  36. {clio_kit-2.10.0 → clio_kit-2.10.2}/pyproject.toml +1 -1
  37. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/index.json +23 -5
  38. clio_kit-2.10.2/src/clio_kit/_mcp_contracts/jarvis-user-v3.7.1.json +3893 -0
  39. clio_kit-2.10.2/src/clio_kit/_mcp_contracts/jarvis-user-v3.7.json +3891 -0
  40. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/env_cache.py +45 -118
  41. clio_kit-2.10.2/src/clio_kit/environment_locks.py +150 -0
  42. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/mcp_contracts.py +4 -2
  43. {clio_kit-2.10.0 → clio_kit-2.10.2}/.gitignore +0 -0
  44. {clio_kit-2.10.0 → clio_kit-2.10.2}/LICENSE +0 -0
  45. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/README.md +0 -0
  46. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/pyproject.toml +0 -0
  47. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/__init__.py +0 -0
  48. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/api/__init__.py +0 -0
  49. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/api/app.py +0 -0
  50. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/cli/__init__.py +0 -0
  51. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/cli/main.py +0 -0
  52. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/connectors/__init__.py +0 -0
  53. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/connectors/filesystem/__init__.py +0 -0
  54. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/connectors/filesystem/connector.py +0 -0
  55. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/connectors/graph_store/__init__.py +0 -0
  56. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/connectors/graph_store/connector.py +0 -0
  57. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/connectors/kv_log_store/__init__.py +0 -0
  58. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/connectors/kv_log_store/connector.py +0 -0
  59. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/connectors/object_store/__init__.py +0 -0
  60. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/connectors/object_store/connector.py +0 -0
  61. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/connectors/vector_store/__init__.py +0 -0
  62. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/connectors/vector_store/connector.py +0 -0
  63. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/core/__init__.py +0 -0
  64. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/core/connectors.py +0 -0
  65. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/core/namespace_config.py +0 -0
  66. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/core/namespace_registry.py +0 -0
  67. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/core/seeding.py +0 -0
  68. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/evals/__init__.py +0 -0
  69. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/evals/quality_gate.py +0 -0
  70. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/evals/scientific.py +0 -0
  71. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/indexing/__init__.py +0 -0
  72. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/indexing/lexical.py +0 -0
  73. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/indexing/scientific.py +0 -0
  74. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/indexing/text_features.py +0 -0
  75. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/jobs.py +0 -0
  76. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/models/__init__.py +0 -0
  77. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/models/contracts.py +0 -0
  78. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/retrieval/__init__.py +0 -0
  79. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/retrieval/ann.py +0 -0
  80. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/retrieval/capabilities.py +0 -0
  81. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/retrieval/coordinator.py +0 -0
  82. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/retrieval/rerank.py +0 -0
  83. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/retrieval/scientific.py +0 -0
  84. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/retry.py +0 -0
  85. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/storage/__init__.py +0 -0
  86. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/storage/contracts.py +0 -0
  87. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/storage/duckdb_store.py +0 -0
  88. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/tasks.py +0 -0
  89. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/src/clio_agentic_search/telemetry/__init__.py +0 -0
  90. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-agentic-search/uv.lock +0 -0
  91. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-clients/wrp_bin/README.md +0 -0
  92. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/.claude-plugin/plugin.json +0 -0
  93. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/.mcp.json +0 -0
  94. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/README.md +0 -0
  95. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/docs/adios_setup.md +0 -0
  96. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/docs/basic_install.md +0 -0
  97. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/docs/example_uses.md +0 -0
  98. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/pyproject.toml +0 -0
  99. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data1.bp/data.0 +0 -0
  100. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data1.bp/md.0 +0 -0
  101. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data1.bp/md.idx +0 -0
  102. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data1.bp/mmd.0 +0 -0
  103. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data2.bp/data.0 +0 -0
  104. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data2.bp/md.0 +0 -0
  105. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data2.bp/md.idx +0 -0
  106. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data2.bp/mmd.0 +0 -0
  107. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data3.bp/data.0 +0 -0
  108. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data3.bp/md.0 +0 -0
  109. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data3.bp/md.idx +0 -0
  110. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data3.bp/mmd.0 +0 -0
  111. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data4.bp/data.0 +0 -0
  112. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data4.bp/md.0 +0 -0
  113. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data4.bp/md.idx +0 -0
  114. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/sample_data/data4.bp/mmd.0 +0 -0
  115. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/src/adios_mcp/__init__.py +0 -0
  116. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/src/adios_mcp/implementation/__init__.py +0 -0
  117. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/src/adios_mcp/implementation/bp5_attributes.py +0 -0
  118. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/src/adios_mcp/implementation/bp5_inspect_variables.py +0 -0
  119. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/src/adios_mcp/implementation/bp5_inspect_variables_at_step.py +0 -0
  120. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/src/adios_mcp/implementation/bp5_list.py +0 -0
  121. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/src/adios_mcp/implementation/bp5_read_variable_at_step.py +0 -0
  122. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/src/adios_mcp/mcp_handlers.py +0 -0
  123. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/src/adios_mcp/server.py +0 -0
  124. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/adios/uv.lock +0 -0
  125. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/.claude-plugin/plugin.json +0 -0
  126. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/.mcp.json +0 -0
  127. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/README.md +0 -0
  128. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/demo.py +0 -0
  129. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/docs/basic_install.md +0 -0
  130. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/pyproject.toml +0 -0
  131. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/src/arxiv_mcp/__init__.py +0 -0
  132. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/src/arxiv_mcp/capabilities/__init__.py +0 -0
  133. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/src/arxiv_mcp/capabilities/arxiv_base.py +0 -0
  134. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/src/arxiv_mcp/capabilities/category_search.py +0 -0
  135. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/src/arxiv_mcp/capabilities/date_search.py +0 -0
  136. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/src/arxiv_mcp/capabilities/download_paper.py +0 -0
  137. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/src/arxiv_mcp/capabilities/export_utils.py +0 -0
  138. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/src/arxiv_mcp/capabilities/paper_details.py +0 -0
  139. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/src/arxiv_mcp/capabilities/text_search.py +0 -0
  140. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/src/arxiv_mcp/mcp_handlers.py +0 -0
  141. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/src/arxiv_mcp/server.py +0 -0
  142. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/arxiv/uv.lock +0 -0
  143. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/.claude-plugin/plugin.json +0 -0
  144. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/.mcp.json +0 -0
  145. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/README.md +0 -0
  146. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/assets/mcp-client.png +0 -0
  147. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/assets/mcp-clientstartchronolog.png +0 -0
  148. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/assets/mcp-retievecopilot.png +0 -0
  149. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/assets/mcp-retrieve-diseasepred.png +0 -0
  150. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/docs/Chronolog_setup.md +0 -0
  151. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/pyproject.toml +0 -0
  152. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/src/chronomcp/__init__.py +0 -0
  153. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/src/chronomcp/capabilities/__init__.py +0 -0
  154. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/src/chronomcp/capabilities/record_handler.py +0 -0
  155. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/src/chronomcp/capabilities/retrieve_handler.py +0 -0
  156. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/src/chronomcp/capabilities/start_handler.py +0 -0
  157. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/src/chronomcp/capabilities/stop_handler.py +0 -0
  158. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/src/chronomcp/reader_script/CMakeLists.txt +0 -0
  159. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/src/chronomcp/reader_script/HDF5ArchiveReadingAgent.h +0 -0
  160. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/src/chronomcp/reader_script/reader.cpp +0 -0
  161. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/src/chronomcp/server.py +0 -0
  162. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/src/chronomcp/utils/config.py +0 -0
  163. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/src/chronomcp/utils/helpers.py +0 -0
  164. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/chronolog/uv.lock +0 -0
  165. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/.claude-plugin/plugin.json +0 -0
  166. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/.mcp.json +0 -0
  167. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/README.md +0 -0
  168. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/data/sample_data.csv +0 -0
  169. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/data/sample_log.txt +0 -0
  170. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/pyproject.toml +0 -0
  171. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/pytest.ini +0 -0
  172. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/src/compression_mcp/__init__.py +0 -0
  173. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/src/compression_mcp/capabilities/__init__.py +0 -0
  174. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/src/compression_mcp/capabilities/compression_base.py +0 -0
  175. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/src/compression_mcp/mcp_handlers.py +0 -0
  176. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/src/compression_mcp/server.py +0 -0
  177. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/compression/uv.lock +0 -0
  178. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/darshan/.claude-plugin/plugin.json +0 -0
  179. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/darshan/.mcp.json +0 -0
  180. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/darshan/README.md +0 -0
  181. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/darshan/pyproject.toml +0 -0
  182. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/darshan/src/darshan_mcp/__init__.py +0 -0
  183. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/darshan/src/darshan_mcp/capabilities/__init__.py +0 -0
  184. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/darshan/src/darshan_mcp/capabilities/darshan_parser.py +0 -0
  185. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/darshan/src/darshan_mcp/server.py +0 -0
  186. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/darshan/uv.lock +0 -0
  187. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/.claude-plugin/plugin.json +0 -0
  188. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/.mcp.json +0 -0
  189. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/README.md +0 -0
  190. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/pyproject.toml +0 -0
  191. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/src/geo_mcp/__init__.py +0 -0
  192. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/src/geo_mcp/implementation/__init__.py +0 -0
  193. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/src/geo_mcp/implementation/arcgis.py +0 -0
  194. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/src/geo_mcp/implementation/geocode.py +0 -0
  195. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/src/geo_mcp/implementation/map_render.py +0 -0
  196. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/src/geo_mcp/implementation/overlap.py +0 -0
  197. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/src/geo_mcp/implementation/proximity.py +0 -0
  198. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/src/geo_mcp/server.py +0 -0
  199. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geo/uv.lock +0 -0
  200. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geojson/.claude-plugin/plugin.json +0 -0
  201. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geojson/.mcp.json +0 -0
  202. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geojson/README.md +0 -0
  203. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geojson/pyproject.toml +0 -0
  204. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geojson/src/geojson_mcp/__init__.py +0 -0
  205. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geojson/src/geojson_mcp/implementation/__init__.py +0 -0
  206. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geojson/src/geojson_mcp/implementation/inspect.py +0 -0
  207. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geojson/src/geojson_mcp/server.py +0 -0
  208. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/geojson/uv.lock +0 -0
  209. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/.claude-plugin/plugin.json +0 -0
  210. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/.mcp.json +0 -0
  211. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/README.md +0 -0
  212. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/TESTING.md +0 -0
  213. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/docs/ARCHITECTURE.md +0 -0
  214. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/docs/EXAMPLES.md +0 -0
  215. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/docs/MIGRATION.md +0 -0
  216. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/docs/TOOLS.md +0 -0
  217. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/docs/TRANSPORTS.md +0 -0
  218. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/examples/README.md +0 -0
  219. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/examples/create_demo_data.py +0 -0
  220. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/examples/demo_script.py +0 -0
  221. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/pyproject.toml +0 -0
  222. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/src/hdf5_mcp/__init__.py +0 -0
  223. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/src/hdf5_mcp/config.py +0 -0
  224. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/src/hdf5_mcp/resources.py +0 -0
  225. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/src/hdf5_mcp/server.py +0 -0
  226. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/src/hdf5_mcp/utils.py +0 -0
  227. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/hdf5/uv.lock +0 -0
  228. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/.mcp.json +0 -0
  229. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/README.md +0 -0
  230. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/docs/GUIDE.md +0 -0
  231. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/docs/assets/Screenshot 2025-05-15 160800.png +0 -0
  232. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/docs/assets/Screenshot 2025-05-15 162219.png +0 -0
  233. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/docs/assets/Screenshot 2025-05-15 162322.png +0 -0
  234. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/docs/assets/Screenshot 2025-05-15 162545.png +0 -0
  235. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/docs/assets/Screenshot 2025-05-15 162922.png +0 -0
  236. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/docs/assets/Screenshot 2025-05-15 163023.png +0 -0
  237. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/docs/assets/Screenshot 2025-05-15 163516.png +0 -0
  238. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/docs/assets/Screenshot 2025-05-15 163651.png +0 -0
  239. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/docs/assets/Screenshot 2025-05-15 163759.png +0 -0
  240. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/docs/basic_install.md +0 -0
  241. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/requirements.txt +0 -0
  242. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/scripts/live_ares_semantic_mcp_probe.py +0 -0
  243. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/__init__.py +0 -0
  244. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/admin_server.py +0 -0
  245. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/models/__init__.py +0 -0
  246. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/models/_base.py +0 -0
  247. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/models/compat.py +0 -0
  248. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/models/datasets.py +0 -0
  249. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/models/describe.py +0 -0
  250. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/models/execution.py +0 -0
  251. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/models/packages.py +0 -0
  252. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/models/progress.py +0 -0
  253. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/models/service_runtime.py +0 -0
  254. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/package_discovery.py +0 -0
  255. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/progress.py +0 -0
  256. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/server.py +0 -0
  257. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/user_server.py +0 -0
  258. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/jarvis/src/jarvis_mcp/windows_job.py +0 -0
  259. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/lmod/.claude-plugin/plugin.json +0 -0
  260. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/lmod/.mcp.json +0 -0
  261. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/lmod/README.md +0 -0
  262. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/lmod/pyproject.toml +0 -0
  263. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/lmod/src/lmod_mcp/__init__.py +0 -0
  264. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/lmod/src/lmod_mcp/capabilities/__init__.py +0 -0
  265. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/lmod/src/lmod_mcp/capabilities/lmod_handler.py +0 -0
  266. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/lmod/src/lmod_mcp/server.py +0 -0
  267. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/lmod/uv.lock +0 -0
  268. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/ndp/.claude-plugin/plugin.json +0 -0
  269. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/ndp/.mcp.json +0 -0
  270. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/ndp/README.md +0 -0
  271. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/ndp/docs/mcp_development_guide.md +0 -0
  272. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/ndp/docs/ndp_api.md +0 -0
  273. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/ndp/docs/ndp_docs.md +0 -0
  274. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/ndp/pyproject.toml +0 -0
  275. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/ndp/src/ndp_mcp/__init__.py +0 -0
  276. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/ndp/src/ndp_mcp/server.py +0 -0
  277. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/ndp/uv.lock +0 -0
  278. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/.claude-plugin/plugin.json +0 -0
  279. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/.mcp.json +0 -0
  280. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/README.md +0 -0
  281. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/pyproject.toml +0 -0
  282. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/__init__.py +0 -0
  283. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/__init__.py +0 -0
  284. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/cpu_info.py +0 -0
  285. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/disk_info.py +0 -0
  286. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/gpu_info.py +0 -0
  287. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/hardware_summary.py +0 -0
  288. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/memory_info.py +0 -0
  289. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/network_info.py +0 -0
  290. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/performance_monitor.py +0 -0
  291. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/process_info.py +0 -0
  292. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/remote_node_info.py +0 -0
  293. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/sensor_info.py +0 -0
  294. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/system_info.py +0 -0
  295. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/capabilities/utils.py +0 -0
  296. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/mcp_handlers.py +0 -0
  297. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/server.py +0 -0
  298. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/utils/__init__.py +0 -0
  299. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/src/node_hardware_mcp/utils/output_formatter.py +0 -0
  300. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/node-hardware/uv.lock +0 -0
  301. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/.claude-plugin/plugin.json +0 -0
  302. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/.mcp.json +0 -0
  303. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/README.md +0 -0
  304. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/example_script/create_sample_data.py +0 -0
  305. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/pyproject.toml +0 -0
  306. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/pytest.ini +0 -0
  307. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/__init__.py +0 -0
  308. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/implementation/__init__.py +0 -0
  309. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/implementation/csv_profiling.py +0 -0
  310. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/implementation/data_cleaning.py +0 -0
  311. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/implementation/data_io.py +0 -0
  312. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/implementation/data_profiling.py +0 -0
  313. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/implementation/filtering.py +0 -0
  314. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/implementation/memory_optimization.py +0 -0
  315. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/implementation/output_formatter.py +0 -0
  316. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/implementation/pandas_statistics.py +0 -0
  317. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/implementation/time_series.py +0 -0
  318. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/implementation/transformations.py +0 -0
  319. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/implementation/validation.py +0 -0
  320. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/mcp_handlers.py +0 -0
  321. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/src/pandas_mcp/server.py +0 -0
  322. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/pandas/uv.lock +0 -0
  323. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/.claude-plugin/plugin.json +0 -0
  324. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/.mcp.json +0 -0
  325. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/README.md +0 -0
  326. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/USAGE_GUIDE.md +0 -0
  327. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/pyproject.toml +0 -0
  328. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/pytest.ini +0 -0
  329. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/src/parallel_sort_mcp/__init__.py +0 -0
  330. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/src/parallel_sort_mcp/implementation/__init__.py +0 -0
  331. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/src/parallel_sort_mcp/implementation/export_handler.py +0 -0
  332. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/src/parallel_sort_mcp/implementation/filter_handler.py +0 -0
  333. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/src/parallel_sort_mcp/implementation/parallel_processor.py +0 -0
  334. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/src/parallel_sort_mcp/implementation/pattern_detection.py +0 -0
  335. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/src/parallel_sort_mcp/implementation/sort_handler.py +0 -0
  336. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/src/parallel_sort_mcp/implementation/statistics_handler.py +0 -0
  337. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/src/parallel_sort_mcp/mcp_handlers.py +0 -0
  338. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/src/parallel_sort_mcp/server.py +0 -0
  339. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parallel-sort/uv.lock +0 -0
  340. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/.claude-plugin/plugin.json +0 -0
  341. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/.mcp.json +0 -0
  342. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/LICENSE +0 -0
  343. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/README.md +0 -0
  344. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/USAGE_README.md +0 -0
  345. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/prompt.md +0 -0
  346. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/pyproject.toml +0 -0
  347. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/pytest.ini +0 -0
  348. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/requirements.txt +0 -0
  349. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/scripts/__init__.py +0 -0
  350. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/scripts/automate_setup.py +0 -0
  351. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/scripts/build_paraview.py +0 -0
  352. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/scripts/configure_paraview.py +0 -0
  353. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/scripts/install_deps.py +0 -0
  354. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/scripts/installation_example.py +0 -0
  355. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/scripts/launch_gui.py +0 -0
  356. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/scripts/launch_server.py +0 -0
  357. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/scripts/test_installation.py +0 -0
  358. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/src/paraview_mcp/__init__.py +0 -0
  359. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/src/paraview_mcp/implementation/__init__.py +0 -0
  360. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/src/paraview_mcp/implementation/paraview_capabilities.py +0 -0
  361. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/src/paraview_mcp/server.py +0 -0
  362. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/src/paraview_mcp/viz.html +0 -0
  363. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/paraview/uv.lock +0 -0
  364. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/.claude-plugin/plugin.json +0 -0
  365. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/.mcp.json +0 -0
  366. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/README.md +0 -0
  367. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/data/data.csv +0 -0
  368. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/data/huge_log.txt +0 -0
  369. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/data/small_log.txt +0 -0
  370. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/data/weather_data.parquet +0 -0
  371. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/datasets/batch_1.parquet +0 -0
  372. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/datasets/batch_large_strings.parquet +0 -0
  373. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/evaluation.xml +0 -0
  374. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/images/compress.png +0 -0
  375. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/images/getResource.png +0 -0
  376. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/images/listResources.png +0 -0
  377. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/images/listTools.png +0 -0
  378. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/images/pandas.png +0 -0
  379. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/images/parquet.png +0 -0
  380. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/images/sort.png +0 -0
  381. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/images/tests.png +0 -0
  382. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/pyproject.toml +0 -0
  383. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/pytest.ini +0 -0
  384. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/src/__init__.py +0 -0
  385. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/src/parquet_mcp/__init__.py +0 -0
  386. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/src/parquet_mcp/capabilities/__init__.py +0 -0
  387. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/src/parquet_mcp/capabilities/parquet_handler.py +0 -0
  388. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/src/parquet_mcp/server.py +0 -0
  389. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/parquet/uv.lock +0 -0
  390. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/.claude-plugin/plugin.json +0 -0
  391. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/.mcp.json +0 -0
  392. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/README.md +0 -0
  393. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/data/sample_data.csv +0 -0
  394. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/data/temperature.csv +0 -0
  395. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/pyproject.toml +0 -0
  396. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/pytest.ini +0 -0
  397. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/src/plot_mcp/__init__.py +0 -0
  398. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/src/plot_mcp/implementation/__init__.py +0 -0
  399. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/src/plot_mcp/implementation/plot_capabilities.py +0 -0
  400. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/src/plot_mcp/server.py +0 -0
  401. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/plot/uv.lock +0 -0
  402. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/sac/.claude-plugin/plugin.json +0 -0
  403. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/sac/.mcp.json +0 -0
  404. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/sac/README.md +0 -0
  405. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/sac/pyproject.toml +0 -0
  406. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/sac/src/sac_mcp/__init__.py +0 -0
  407. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/sac/src/sac_mcp/implementation/__init__.py +0 -0
  408. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/sac/src/sac_mcp/implementation/analysis.py +0 -0
  409. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/sac/src/sac_mcp/implementation/sac_io.py +0 -0
  410. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/sac/src/sac_mcp/server.py +0 -0
  411. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/sac/uv.lock +0 -0
  412. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/scientific-catalog/.claude-plugin/plugin.json +0 -0
  413. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/scientific-catalog/.mcp.json +0 -0
  414. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/scientific-catalog/README.md +0 -0
  415. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/scientific-catalog/pyproject.toml +0 -0
  416. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/scientific-catalog/src/scientific_catalog_mcp/__init__.py +0 -0
  417. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/scientific-catalog/src/scientific_catalog_mcp/backend.py +0 -0
  418. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/scientific-catalog/src/scientific_catalog_mcp/models.py +0 -0
  419. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/scientific-catalog/src/scientific_catalog_mcp/server.py +0 -0
  420. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/scientific-catalog/uv.lock +0 -0
  421. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/seismic/.claude-plugin/plugin.json +0 -0
  422. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/seismic/.mcp.json +0 -0
  423. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/seismic/README.md +0 -0
  424. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/seismic/pyproject.toml +0 -0
  425. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/seismic/src/seismic_mcp/__init__.py +0 -0
  426. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/seismic/src/seismic_mcp/implementation/__init__.py +0 -0
  427. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/seismic/src/seismic_mcp/implementation/analysis.py +0 -0
  428. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/seismic/src/seismic_mcp/implementation/catalog_io.py +0 -0
  429. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/seismic/src/seismic_mcp/implementation/plotting.py +0 -0
  430. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/seismic/src/seismic_mcp/server.py +0 -0
  431. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/seismic/uv.lock +0 -0
  432. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/.claude-plugin/plugin.json +0 -0
  433. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/.mcp.json +0 -0
  434. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/README.md +0 -0
  435. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/docs/MCP_SERVER_GUIDE.md +0 -0
  436. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/docs/agent-contract-v3.md +0 -0
  437. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/docs/basic_install.md +0 -0
  438. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/docs/run.md +0 -0
  439. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/docs/slurm_installation/NATIVE_SLURM_SUCCESS_REPORT.md +0 -0
  440. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/docs/slurm_installation/SLURM_INSTALLATION_GUIDE.md +0 -0
  441. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/docs/slurm_installation/final_verification.sh +0 -0
  442. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/docs/slurm_installation/install_slurm.sh +0 -0
  443. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/docs/slurm_installation/parallel_job.sh +0 -0
  444. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/docs/slurm_installation/quick_native_test.sh +0 -0
  445. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/docs/slurm_installation/slurm.conf +0 -0
  446. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/docs/slurm_installation/slurm_config.conf +0 -0
  447. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/example_scripts/README.md +0 -0
  448. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/example_scripts/SLURM_SCRIPT_GENERATION_PROMPT.md +0 -0
  449. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/example_scripts/array_job.sh +0 -0
  450. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/example_scripts/data_processing.sh +0 -0
  451. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/example_scripts/generate_slurm_script.sh +0 -0
  452. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/example_scripts/hello_world.sh +0 -0
  453. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/example_scripts/long_simulation.sh +0 -0
  454. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/example_scripts/python_computation.sh +0 -0
  455. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/logs/README.md +0 -0
  456. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/pyproject.toml +0 -0
  457. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/pytest.ini +0 -0
  458. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/__init__.py +0 -0
  459. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/agent_contract.py +0 -0
  460. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/__init__.py +0 -0
  461. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/array_jobs.py +0 -0
  462. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/cluster_info.py +0 -0
  463. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/job_cancellation.py +0 -0
  464. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/job_details.py +0 -0
  465. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/job_listing.py +0 -0
  466. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/job_output.py +0 -0
  467. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/job_status.py +0 -0
  468. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/job_submission.py +0 -0
  469. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/node_allocation.py +0 -0
  470. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/node_info.py +0 -0
  471. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/queue_info.py +0 -0
  472. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/slurm_handler.py +0 -0
  473. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/implementation/utils.py +0 -0
  474. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/mcp_handlers.py +0 -0
  475. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/src/slurm_mcp/server.py +0 -0
  476. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/slurm/uv.lock +0 -0
  477. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/spack/.claude-plugin/plugin.json +0 -0
  478. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/spack/.mcp.json +0 -0
  479. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/spack/README.md +0 -0
  480. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/spack/pyproject.toml +0 -0
  481. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/spack/src/spack_mcp/__init__.py +0 -0
  482. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/spack/src/spack_mcp/admin_server.py +0 -0
  483. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/spack/src/spack_mcp/backend.py +0 -0
  484. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/spack/src/spack_mcp/server.py +0 -0
  485. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/spack/src/spack_mcp/user_server.py +0 -0
  486. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/spack/src/spack_mcp/windows_job.py +0 -0
  487. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/spack/uv.lock +0 -0
  488. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/.claude-plugin/plugin.json +0 -0
  489. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/.mcp.json +0 -0
  490. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/README.md +0 -0
  491. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/pyproject.toml +0 -0
  492. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/src/terrain_mcp/__init__.py +0 -0
  493. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/src/terrain_mcp/implementation/__init__.py +0 -0
  494. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/src/terrain_mcp/implementation/_common.py +0 -0
  495. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/src/terrain_mcp/implementation/dem.py +0 -0
  496. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/src/terrain_mcp/implementation/errors.py +0 -0
  497. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/src/terrain_mcp/implementation/pointcloud.py +0 -0
  498. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/src/terrain_mcp/server.py +0 -0
  499. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/terrain/uv.lock +0 -0
  500. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/.claude-plugin/plugin.json +0 -0
  501. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/.mcp.json +0 -0
  502. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/README.md +0 -0
  503. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/docs/web_tools.md +0 -0
  504. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/pyproject.toml +0 -0
  505. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/src/web_mcp/__init__.py +0 -0
  506. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/src/web_mcp/config.py +0 -0
  507. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/src/web_mcp/document_service.py +0 -0
  508. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/src/web_mcp/fetch.py +0 -0
  509. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/src/web_mcp/fetch_utils.py +0 -0
  510. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/src/web_mcp/search.py +0 -0
  511. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/src/web_mcp/searxng.py +0 -0
  512. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/src/web_mcp/server.py +0 -0
  513. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/src/web_mcp/task_runtime.py +0 -0
  514. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-mcp-servers/web/uv.lock +0 -0
  515. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-website/README.md +0 -0
  516. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-website/src/components/HomepageFeatures/index.js +0 -0
  517. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-website/src/components/HomepageFeatures/styles.module.css +0 -0
  518. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-website/src/components/MCPDetail/index.js +0 -0
  519. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-website/src/components/MCPDetail/styles.module.css +0 -0
  520. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-website/src/components/MCPShowcase/index.js +0 -0
  521. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-website/src/components/MCPShowcase/styles.module.css +0 -0
  522. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-website/src/css/custom.css +0 -0
  523. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-website/src/data/mcpData.js +0 -0
  524. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-website/src/pages/index.js +0 -0
  525. {clio_kit-2.10.0 → clio_kit-2.10.2}/clio-kit-website/src/pages/index.module.css +0 -0
  526. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/__init__.py +0 -0
  527. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/jarvis-user-v3.1.json +0 -0
  528. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/jarvis-user-v3.2.json +0 -0
  529. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/jarvis-user-v3.3.json +0 -0
  530. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/jarvis-user-v3.4.json +0 -0
  531. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/jarvis-user-v3.5.json +0 -0
  532. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/jarvis-user-v3.6.json +0 -0
  533. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/jarvis-user-v3.json +0 -0
  534. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/scientific-catalog-user-v1.1.json +0 -0
  535. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/scientific-catalog-user-v1.json +0 -0
  536. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/slurm-user-v3.json +0 -0
  537. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/spack-user-v2.1.json +0 -0
  538. {clio_kit-2.10.0 → clio_kit-2.10.2}/src/clio_kit/_mcp_contracts/spack-user-v2.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clio-kit
3
- Version: 2.10.0
3
+ Version: 2.10.2
4
4
  Summary: CLIO Kit - MCP Servers, Clients, and Tools for AI Agents
5
5
  Project-URL: Homepage, https://github.com/iowarp/clio-kit
6
6
  Project-URL: Repository, https://github.com/iowarp/clio-kit
@@ -276,7 +276,7 @@ distinct `not_installed` semantic, while real Spack failures remain errors.
276
276
  | **`geo`** | 2.2.3 | Geospatial | Render GeoJSON vector layers with basemaps | `clio-kit mcp-server geo` |
277
277
  | **`geojson`** | 2.2.3 | Geospatial | Inspect, validate, and summarize GeoJSON | `clio-kit mcp-server geojson` |
278
278
  | **`hdf5`** | 2.2.3 | Data I/O | HPC-optimized scientific data with 27 tools, AI insights, caching, streaming | `clio-kit mcp-server hdf5` |
279
- | **`jarvis`** | 3.6.2 | Workflow | Durable pipeline, bounded package discovery, progress, artifact, and service-runtime management | `clio-kit mcp-server jarvis` |
279
+ | **`jarvis`** | 3.7.1 | Workflow | Durable pipeline, bounded package discovery, progress, artifact, and service-runtime management | `clio-kit mcp-server jarvis` |
280
280
  | **`lmod`** | 2.2.3 | Environment | Environment module management | `clio-kit mcp-server lmod` |
281
281
  | **`ndp`** | 2.2.3 | Data Protocol | Search and discover datasets across CKAN instances | `clio-kit mcp-server ndp` |
282
282
  | **`node-hardware`** | 2.2.3 | System | System hardware information | `clio-kit mcp-server node-hardware` |
@@ -250,7 +250,7 @@ distinct `not_installed` semantic, while real Spack failures remain errors.
250
250
  | **`geo`** | 2.2.3 | Geospatial | Render GeoJSON vector layers with basemaps | `clio-kit mcp-server geo` |
251
251
  | **`geojson`** | 2.2.3 | Geospatial | Inspect, validate, and summarize GeoJSON | `clio-kit mcp-server geojson` |
252
252
  | **`hdf5`** | 2.2.3 | Data I/O | HPC-optimized scientific data with 27 tools, AI insights, caching, streaming | `clio-kit mcp-server hdf5` |
253
- | **`jarvis`** | 3.6.2 | Workflow | Durable pipeline, bounded package discovery, progress, artifact, and service-runtime management | `clio-kit mcp-server jarvis` |
253
+ | **`jarvis`** | 3.7.1 | Workflow | Durable pipeline, bounded package discovery, progress, artifact, and service-runtime management | `clio-kit mcp-server jarvis` |
254
254
  | **`lmod`** | 2.2.3 | Environment | Environment module management | `clio-kit mcp-server lmod` |
255
255
  | **`ndp`** | 2.2.3 | Data Protocol | Search and discover datasets across CKAN instances | `clio-kit mcp-server ndp` |
256
256
  | **`node-hardware`** | 2.2.3 | System | System hardware information | `clio-kit mcp-server node-hardware` |
@@ -12,7 +12,7 @@
12
12
  {
13
13
  "registryType": "pypi",
14
14
  "identifier": "clio-kit",
15
- "version": "2.10.0",
15
+ "version": "2.10.2",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
@@ -12,7 +12,7 @@
12
12
  {
13
13
  "registryType": "pypi",
14
14
  "identifier": "clio-kit",
15
- "version": "2.10.0",
15
+ "version": "2.10.2",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
@@ -12,7 +12,7 @@
12
12
  {
13
13
  "registryType": "pypi",
14
14
  "identifier": "clio-kit",
15
- "version": "2.10.0",
15
+ "version": "2.10.2",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
@@ -12,7 +12,7 @@
12
12
  {
13
13
  "registryType": "pypi",
14
14
  "identifier": "clio-kit",
15
- "version": "2.10.0",
15
+ "version": "2.10.2",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
@@ -12,7 +12,7 @@
12
12
  {
13
13
  "registryType": "pypi",
14
14
  "identifier": "clio-kit",
15
- "version": "2.10.0",
15
+ "version": "2.10.2",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
@@ -12,7 +12,7 @@
12
12
  {
13
13
  "registryType": "pypi",
14
14
  "identifier": "clio-kit",
15
- "version": "2.10.0",
15
+ "version": "2.10.2",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
@@ -12,7 +12,7 @@
12
12
  {
13
13
  "registryType": "pypi",
14
14
  "identifier": "clio-kit",
15
- "version": "2.10.0",
15
+ "version": "2.10.2",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
@@ -12,7 +12,7 @@
12
12
  {
13
13
  "registryType": "pypi",
14
14
  "identifier": "clio-kit",
15
- "version": "2.10.0",
15
+ "version": "2.10.2",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "clio-jarvis",
3
3
  "description": "JARVIS-CD MCP with a compact user pipeline contract and explicit admin compatibility profiles",
4
- "version": "3.6.2"
4
+ "version": "3.7.1"
5
5
  }
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "jarvis-mcp"
3
- version = "3.6.2"
3
+ version = "3.7.1"
4
4
  description = "JARVIS-CD MCP with a compact user pipeline contract and explicit admin compatibility profiles"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -3,7 +3,7 @@
3
3
  "name": "io.github.iowarp/jarvis-mcp",
4
4
  "title": "CLIO Jarvis",
5
5
  "description": "JARVIS-CD MCP with a compact user pipeline contract and explicit admin compatibility profiles",
6
- "version": "3.6.2",
6
+ "version": "3.7.1",
7
7
  "repository": {
8
8
  "url": "https://github.com/iowarp/clio-kit",
9
9
  "source": "github"
@@ -12,7 +12,7 @@
12
12
  {
13
13
  "registryType": "pypi",
14
14
  "identifier": "clio-kit",
15
- "version": "2.10.0",
15
+ "version": "2.10.2",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
@@ -0,0 +1,184 @@
1
+ """Bounded inline content reads for JARVIS-owned ``role="log"`` artifacts.
2
+
3
+ Companion to :mod:`jarvis_mcp.artifacts`, which owns artifact snapshot
4
+ validation and paging: that module's artifact page is a content-free
5
+ manifest by design (identity, role, state, location only). This module adds
6
+ one narrow, additive capability on top of it -- reading a bounded tail of a
7
+ log artifact's own file -- kept in its own module rather than appended to
8
+ either ``artifacts.py`` or the already-oversized ``jarvis_handler.py`` (see
9
+ ``scripts/check_file_size.py``'s per-file ratchet).
10
+
11
+ A failed execution's own generated logs are the single most useful thing an
12
+ agent can read after a terminal failure. Only ``role="log"`` artifacts are
13
+ eligible: this is a deliberate, narrow scope, not a general remote-file-read
14
+ primitive.
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ from collections.abc import Mapping
20
+ from pathlib import Path
21
+ from typing import Any, cast
22
+
23
+ ARTIFACT_MAX_CONTENT_BYTES = 64 * 1024
24
+
25
+
26
+ class ArtifactContentError(RuntimeError):
27
+ """One artifact's bounded inline content could not be resolved or read.
28
+
29
+ Always caught per-artifact by :func:`artifact_with_content` -- a single
30
+ unreadable log must never fail the whole bounded page.
31
+ """
32
+
33
+ def __init__(self, code: str, message: str) -> None:
34
+ """Create a stable per-artifact content error."""
35
+ super().__init__(message)
36
+ self.code = code
37
+ self.message = message
38
+
39
+
40
+ def artifact_with_content(
41
+ item: dict[str, Any],
42
+ *,
43
+ execution_root: Path | None,
44
+ max_bytes: int,
45
+ ) -> dict[str, Any]:
46
+ """Return one page item enriched with a bounded inline content read.
47
+
48
+ Scoped to ``role="log"`` artifacts only -- this is a narrow, bounded log
49
+ reader, not a general remote-file-read primitive. Every other artifact,
50
+ and every log artifact whose content genuinely could not be resolved,
51
+ gets a typed ``content_error`` -- the caller always sees why, never a
52
+ silent gap where content might have been.
53
+ """
54
+ enriched = dict(item)
55
+ role = item.get("role")
56
+ if role != "log":
57
+ enriched.update(
58
+ content=None,
59
+ content_truncated=False,
60
+ content_bytes_read=0,
61
+ content_error=(
62
+ f"artifact role {role!r} is not eligible for inline content "
63
+ '(role must be "log")'
64
+ ),
65
+ )
66
+ return enriched
67
+ location = item.get("location")
68
+ if not isinstance(location, dict):
69
+ enriched.update(
70
+ content=None,
71
+ content_truncated=False,
72
+ content_bytes_read=0,
73
+ content_error="log artifact has no location to read content from",
74
+ )
75
+ return enriched
76
+ try:
77
+ path = resolve_artifact_path(location, execution_root=execution_root)
78
+ text, truncated, bytes_read = read_artifact_tail(path, max_bytes=max_bytes)
79
+ except ArtifactContentError as exc:
80
+ enriched.update(
81
+ content=None,
82
+ content_truncated=False,
83
+ content_bytes_read=0,
84
+ content_error=exc.message,
85
+ )
86
+ return enriched
87
+ enriched.update(
88
+ content=text,
89
+ content_truncated=truncated,
90
+ content_bytes_read=bytes_read,
91
+ content_error=None,
92
+ )
93
+ return enriched
94
+
95
+
96
+ def execution_root_from_record(record_document: Mapping[str, Any]) -> Path | None:
97
+ """Resolve one execution's own root directory from its durable metadata.
98
+
99
+ Grounded, not guessed: ``pipeline_snapshot_path`` is written by JARVIS-CD
100
+ itself as ``execution_root / "runtime"`` for every execution (see
101
+ ``jarvis_cd.core.pipeline.Pipeline._launch``, which also places
102
+ ``stdout.log``/``stderr.log`` directly under that same ``execution_root``
103
+ -- this is the one durable field already present on every record that
104
+ names it, so no path is invented here. Falls back to ``script_path``
105
+ (present instead of ``pipeline_snapshot_path`` for scheduler-submitted
106
+ executions -- see the terminal execution-output declaration path) when
107
+ the primary field is absent or malformed. Returns ``None`` (never a
108
+ guess) when neither field resolves; callers must treat that as
109
+ "execution-scoped content is not resolvable for this record", not retry
110
+ with a fabricated path.
111
+ """
112
+ metadata = record_document.get("metadata")
113
+ if not isinstance(metadata, Mapping):
114
+ return None
115
+ for key in ("pipeline_snapshot_path", "script_path"):
116
+ raw_path = metadata.get(key)
117
+ if not isinstance(raw_path, str) or not raw_path.strip():
118
+ continue
119
+ candidate = Path(raw_path)
120
+ if candidate.name:
121
+ return candidate.parent
122
+ return None
123
+
124
+
125
+ def resolve_artifact_path(
126
+ location: Mapping[str, Any],
127
+ *,
128
+ execution_root: Path | None,
129
+ ) -> Path:
130
+ """Resolve one already-validated artifact location to a real filesystem path.
131
+
132
+ ``execution_path`` locations were validated on the way in
133
+ (``artifacts.py::_validate_execution_path``) to contain no
134
+ ``..``/absolute component, so joining them onto ``execution_root`` can
135
+ never escape it. ``cluster_path`` locations are already validated
136
+ absolute paths on this same host -- ``jarvis_mcp`` runs co-located with
137
+ the execution it is reporting on, so this is a local read, never a
138
+ second network hop.
139
+ """
140
+ kind = location["kind"]
141
+ value = cast(str, location["value"])
142
+ if kind == "cluster_path":
143
+ return Path(value)
144
+ if kind == "execution_path":
145
+ if execution_root is None:
146
+ raise ArtifactContentError(
147
+ "jarvis_artifact_execution_root_unavailable",
148
+ "this execution's own root directory could not be resolved, "
149
+ "so its relative log path cannot be read",
150
+ )
151
+ return execution_root / value
152
+ raise ArtifactContentError(
153
+ "jarvis_artifact_content_unsupported_location",
154
+ f"artifact location kind {kind!r} does not support inline content",
155
+ )
156
+
157
+
158
+ def read_artifact_tail(path: Path, *, max_bytes: int) -> tuple[str, bool, int]:
159
+ """Read up to ``max_bytes`` from the END of one file (tail semantics).
160
+
161
+ A log's most recent lines -- the ones nearest a crash -- are read, not
162
+ its head. Decoded permissively (``errors="replace"``): a partially
163
+ written multi-byte sequence at the tail boundary must not turn a
164
+ genuinely useful read into a hard failure.
165
+ """
166
+ try:
167
+ size = path.stat().st_size
168
+ except OSError as exc:
169
+ raise ArtifactContentError(
170
+ "jarvis_artifact_content_unreadable",
171
+ f"artifact file could not be read: {exc}",
172
+ ) from exc
173
+ truncated = size > max_bytes
174
+ offset = max(0, size - max_bytes)
175
+ try:
176
+ with path.open("rb") as handle:
177
+ handle.seek(offset)
178
+ raw = handle.read(max_bytes)
179
+ except OSError as exc:
180
+ raise ArtifactContentError(
181
+ "jarvis_artifact_content_unreadable",
182
+ f"artifact file could not be read: {exc}",
183
+ ) from exc
184
+ return raw.decode("utf-8", errors="replace"), truncated, len(raw)
@@ -13,11 +13,21 @@ import hashlib
13
13
  import json
14
14
  import math
15
15
  import re
16
+ import stat
17
+ import time
16
18
  from collections.abc import Mapping
17
- from pathlib import PurePosixPath
19
+ from pathlib import Path, PurePosixPath
18
20
  from typing import Any, cast
19
21
  from urllib.parse import urlsplit
20
22
 
23
+ # Content-reading (``ArtifactContentError``/``artifact_with_content``) lives
24
+ # in ``artifact_content.py``, not here: this module owns snapshot VALIDATION
25
+ # and paging; that one owns the bounded, ``role="log"``-only file read
26
+ # layered on top of a page's results.
27
+ from jarvis_mcp.artifact_content import (
28
+ ARTIFACT_MAX_CONTENT_BYTES,
29
+ artifact_with_content,
30
+ )
21
31
 
22
32
  ARTIFACT_SNAPSHOT_SCHEMA = "jarvis.execution.artifacts.v1"
23
33
  ARTIFACT_EVENT_SCHEMA = "jarvis.artifact.v1"
@@ -55,6 +65,7 @@ _ARTIFACT_ROLES = {
55
65
  "intermediate",
56
66
  "output",
57
67
  "log",
68
+ "frame",
58
69
  "checkpoint",
59
70
  "provenance",
60
71
  "validation",
@@ -87,6 +98,28 @@ _OPTIONAL_EVENT_FIELDS = {
87
98
  "checksum",
88
99
  "message",
89
100
  }
101
+ MAX_EXECUTION_OUTPUT_FILES = 64
102
+ _EXECUTION_OUTPUT_TRUNCATION_SCHEMA = "jarvis.execution-output-truncation.v1"
103
+ _EXECUTION_OUTPUT_CONTROL_FILES = frozenset({"submit.slurm"})
104
+ _EXECUTION_OUTPUT_ROLE_BY_SUFFIX = {
105
+ ".err": "log",
106
+ ".log": "log",
107
+ ".out": "log",
108
+ ".bp": "frame",
109
+ ".dcd": "frame",
110
+ ".dump": "frame",
111
+ ".h5": "frame",
112
+ ".hdf5": "frame",
113
+ ".lammpstrj": "frame",
114
+ ".nc": "frame",
115
+ ".npy": "frame",
116
+ ".npz": "frame",
117
+ ".pdb": "frame",
118
+ ".vti": "frame",
119
+ ".vtk": "frame",
120
+ ".vtu": "frame",
121
+ ".xyz": "frame",
122
+ }
90
123
 
91
124
 
92
125
  class ArtifactSnapshotError(RuntimeError):
@@ -110,6 +143,119 @@ class ArtifactQueryError(RuntimeError):
110
143
  self.retryable = retryable
111
144
 
112
145
 
146
+ def execution_output_artifact_events(
147
+ execution_root: Path,
148
+ *,
149
+ execution_id: str,
150
+ observed_at_epoch: float | None = None,
151
+ ) -> tuple[list[dict[str, Any]], dict[str, object] | None]:
152
+ """Declare bounded regular files directly under one terminal execution root.
153
+
154
+ Discovery is deliberately shallow: the execution root is listed once and
155
+ nested directories are never traversed. File contents are hashed for
156
+ identity, but never embedded in the returned manifest.
157
+ """
158
+ if not execution_root.is_dir():
159
+ return [], None
160
+ observed = time.time() if observed_at_epoch is None else observed_at_epoch
161
+ candidates: list[Path] = []
162
+ for path in sorted(execution_root.iterdir(), key=lambda item: item.name):
163
+ try:
164
+ path_stat = path.lstat()
165
+ except OSError:
166
+ continue
167
+ if (
168
+ path.name.startswith(".")
169
+ or path.name in _EXECUTION_OUTPUT_CONTROL_FILES
170
+ or stat.S_ISLNK(path_stat.st_mode)
171
+ or not stat.S_ISREG(path_stat.st_mode)
172
+ ):
173
+ continue
174
+ candidates.append(path)
175
+
176
+ events: list[dict[str, Any]] = []
177
+ for sequence, path in enumerate(candidates[:MAX_EXECUTION_OUTPUT_FILES], start=1):
178
+ digest, size = _hash_regular_file(path)
179
+ relative_path = path.relative_to(execution_root).as_posix()
180
+ role = _EXECUTION_OUTPUT_ROLE_BY_SUFFIX.get(path.suffix.lower(), "output")
181
+ artifact_id = (
182
+ "art_"
183
+ + hashlib.sha256(f"{execution_id}:{relative_path}".encode()).hexdigest()
184
+ )
185
+ events.append(
186
+ {
187
+ "schema_version": ARTIFACT_EVENT_SCHEMA,
188
+ "package_name": "jarvis.execution",
189
+ "package_id": "jarvis.execution",
190
+ "execution_id": execution_id,
191
+ "artifact_id": artifact_id,
192
+ "logical_name": relative_path,
193
+ "kind": "execution-file",
194
+ "role": role,
195
+ "structure": "file",
196
+ "ownership": "execution",
197
+ "state": "finalized",
198
+ "location": {"kind": "execution_path", "value": relative_path},
199
+ "size_bytes": size,
200
+ "checksum": f"sha256:{digest}",
201
+ "revision": 1,
202
+ "sequence": sequence,
203
+ "observed_at_epoch": observed,
204
+ "metadata": {"discovery": "execution-root-direct-file"},
205
+ }
206
+ )
207
+
208
+ truncation = None
209
+ if len(candidates) > MAX_EXECUTION_OUTPUT_FILES:
210
+ truncation = {
211
+ "schema_version": _EXECUTION_OUTPUT_TRUNCATION_SCHEMA,
212
+ "limit": MAX_EXECUTION_OUTPUT_FILES,
213
+ "observed_count": len(candidates),
214
+ "omitted_count": len(candidates) - MAX_EXECUTION_OUTPUT_FILES,
215
+ }
216
+ events.append(
217
+ {
218
+ "schema_version": ARTIFACT_EVENT_SCHEMA,
219
+ "package_name": "jarvis.execution",
220
+ "package_id": "jarvis.execution",
221
+ "execution_id": execution_id,
222
+ "artifact_id": "art_"
223
+ + hashlib.sha256(
224
+ f"{execution_id}:execution-output-truncation".encode()
225
+ ).hexdigest(),
226
+ "logical_name": "__execution-output-truncation__",
227
+ "kind": "execution-output-truncation",
228
+ "role": "validation",
229
+ "structure": "file",
230
+ "ownership": "execution",
231
+ "state": "failed",
232
+ "revision": 1,
233
+ "sequence": len(events) + 1,
234
+ "observed_at_epoch": observed,
235
+ "message": "execution output file declaration cap exceeded",
236
+ "metadata": truncation,
237
+ }
238
+ )
239
+ return events, truncation
240
+
241
+
242
+ def _hash_regular_file(path: Path) -> tuple[str, int]:
243
+ """Hash one stable regular file without retaining its content."""
244
+ digest = hashlib.sha256()
245
+ size = 0
246
+ with path.open("rb") as stream:
247
+ before = path.stat()
248
+ while chunk := stream.read(1024 * 1024):
249
+ digest.update(chunk)
250
+ size += len(chunk)
251
+ after = path.stat()
252
+ if not stat.S_ISREG(before.st_mode) or not stat.S_ISREG(after.st_mode):
253
+ raise RuntimeError("execution output changed from a regular file")
254
+ if before.st_size != size or after.st_size != size:
255
+ raise RuntimeError("execution output changed while hashing")
256
+ return digest.hexdigest(), size
257
+
258
+
113
259
  def artifact_snapshot_document(
114
260
  snapshot: object,
115
261
  *,
@@ -194,12 +340,24 @@ def artifact_query_page(
194
340
  artifact_id: str | None = None,
195
341
  page_size: int = ARTIFACT_DEFAULT_PAGE_SIZE,
196
342
  cursor: str | None = None,
343
+ content_max_bytes: int | None = None,
344
+ execution_root: Path | None = None,
197
345
  ) -> dict[str, Any]:
198
346
  """Filter and page one previously validated native artifact snapshot.
199
347
 
200
348
  Cursors bind the exact filters and a digest of the filtered producer
201
349
  snapshot. A changed artifact, execution state, or terminal flag makes an
202
350
  existing cursor stale instead of silently shifting an offset-based page.
351
+
352
+ ``content_max_bytes`` is a response-enrichment knob, not a filter: it is
353
+ deliberately excluded from the cursor's filter digest so a cursor minted
354
+ without it stays valid on a follow-up call that requests it (or vice
355
+ versa). When set, every ``role="log"`` artifact in the returned page gets
356
+ a bounded tail read of its own file (``content``/``content_truncated``/
357
+ ``content_bytes_read``); every other artifact, and every log artifact
358
+ whose content could not be resolved, gets a typed ``content_error``
359
+ instead -- never a silent omission, never a page-wide failure for one
360
+ unreadable file.
203
361
  """
204
362
  _validate_query_filters(
205
363
  package_id=package_id,
@@ -207,6 +365,7 @@ def artifact_query_page(
207
365
  state=state,
208
366
  artifact_id=artifact_id,
209
367
  page_size=page_size,
368
+ content_max_bytes=content_max_bytes,
210
369
  )
211
370
  filters = {
212
371
  "package_id": package_id,
@@ -309,6 +468,13 @@ def artifact_query_page(
309
468
  filter_digest=filter_digest,
310
469
  snapshot_digest=snapshot_digest,
311
470
  )
471
+ if content_max_bytes is not None:
472
+ page = [
473
+ artifact_with_content(
474
+ item, execution_root=execution_root, max_bytes=content_max_bytes
475
+ )
476
+ for item in page
477
+ ]
312
478
  return {
313
479
  "producer_schema_version": snapshot["schema_version"],
314
480
  "pipeline_id": snapshot["pipeline_id"],
@@ -329,7 +495,18 @@ def _validate_query_filters(
329
495
  state: str | None,
330
496
  artifact_id: str | None,
331
497
  page_size: int,
498
+ content_max_bytes: int | None = None,
332
499
  ) -> None:
500
+ if content_max_bytes is not None and (
501
+ isinstance(content_max_bytes, bool)
502
+ or not isinstance(content_max_bytes, int)
503
+ or not 1 <= content_max_bytes <= ARTIFACT_MAX_CONTENT_BYTES
504
+ ):
505
+ raise ArtifactQueryError(
506
+ "jarvis_artifact_content_max_bytes_invalid",
507
+ f"JARVIS artifact content_max_bytes must be between 1 and "
508
+ f"{ARTIFACT_MAX_CONTENT_BYTES}",
509
+ )
333
510
  if package_id is not None:
334
511
  try:
335
512
  _validate_text(package_id, field="package_id filter", maximum=256)
@@ -3,12 +3,12 @@ Jarvis MCP Server
3
3
 
4
4
  Jarvis-CD MCP - Pipeline Management for High-Performance Computing with comprehensive workflow operations
5
5
 
6
- Version: 3.6.2
6
+ Version: 3.7.1
7
7
  Author: IoWarp Team - Gnosis Research Center
8
8
  License: BSD-3-Clause
9
9
  """
10
10
 
11
- __version__ = "3.6.2"
11
+ __version__ = "3.7.1"
12
12
  __author__ = "IoWarp Team - Gnosis Research Center"
13
13
  __email__ = "grc@illinoistech.edu"
14
14
  __license__ = "BSD-3-Clause"
@@ -25,11 +25,13 @@ from uuid import uuid4
25
25
  from fastapi import HTTPException
26
26
  from fastmcp.exceptions import ToolError
27
27
 
28
+ from jarvis_mcp.artifact_content import execution_root_from_record
28
29
  from jarvis_mcp.artifacts import (
29
30
  ArtifactQueryError,
30
31
  ArtifactSnapshotError,
31
32
  artifact_query_page,
32
33
  artifact_snapshot_document,
34
+ execution_output_artifact_events,
33
35
  )
34
36
  from jarvis_mcp.progress import (
35
37
  NativeProgressExecution,
@@ -37,7 +39,6 @@ from jarvis_mcp.progress import (
37
39
  progress_snapshot_document,
38
40
  )
39
41
 
40
-
41
42
  RUNTIME_METADATA_SCHEMA = "jarvis.runtime.v1"
42
43
  RUNTIME_ERROR_SCHEMA = "jarvis.error.v1"
43
44
  RUN_RESULT_SCHEMA = "clio-kit.jarvis-run.v1"
@@ -891,6 +892,25 @@ async def get_execution(
891
892
  expected_execution_id=validated_execution,
892
893
  expected_pipeline_id=validated_pipeline,
893
894
  )
895
+ if artifact_snapshot is not None and record_document["terminal"]:
896
+ execution_root = execution_root_from_record(record_document)
897
+ if execution_root is not None:
898
+ discovered, _truncation = execution_output_artifact_events(
899
+ execution_root,
900
+ execution_id=validated_execution,
901
+ )
902
+ if discovered:
903
+ artifact_snapshot = artifact_snapshot_document(
904
+ {
905
+ **artifact_snapshot,
906
+ "artifacts": [
907
+ *artifact_snapshot["artifacts"],
908
+ *discovered,
909
+ ],
910
+ },
911
+ expected_execution_id=validated_execution,
912
+ expected_pipeline_id=validated_pipeline,
913
+ )
894
914
  handle_document = _execution_handle_document(
895
915
  getattr(record, "handle", None),
896
916
  expected_execution_id=validated_execution,
@@ -923,6 +943,7 @@ async def get_execution(
923
943
  if artifacts is not None:
924
944
  if artifact_snapshot is None:
925
945
  raise RuntimeError("JARVIS artifact query omitted its snapshot")
946
+ content_max_bytes = artifacts.get("content_max_bytes")
926
947
  artifact_page = artifact_query_page(
927
948
  artifact_snapshot,
928
949
  package_id=artifacts.get("package_id"),
@@ -931,6 +952,12 @@ async def get_execution(
931
952
  artifact_id=artifacts.get("artifact_id"),
932
953
  page_size=artifacts.get("page_size", 50),
933
954
  cursor=artifacts.get("cursor"),
955
+ content_max_bytes=content_max_bytes,
956
+ execution_root=(
957
+ execution_root_from_record(record_document)
958
+ if content_max_bytes is not None
959
+ else None
960
+ ),
934
961
  )
935
962
  query_submit, query_wait = _execution_query_flags(record_document)
936
963
  runtime_metadata = _runtime_metadata_from_documents(