groundworkers 0.3.3__tar.gz → 0.4.0__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 (299) hide show
  1. groundworkers-0.4.0/.githooks/pre-commit +36 -0
  2. groundworkers-0.4.0/.github/CONTRIBUTING.md +27 -0
  3. groundworkers-0.4.0/.github/ISSUE_TEMPLATE/bug_report.yml +66 -0
  4. groundworkers-0.4.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
  5. groundworkers-0.4.0/.github/ISSUE_TEMPLATE/feature_request.yml +32 -0
  6. groundworkers-0.4.0/.github/ISSUE_TEMPLATE/not_working.yml +65 -0
  7. groundworkers-0.4.0/.github/PULL_REQUEST_TEMPLATE.md +9 -0
  8. groundworkers-0.4.0/.github/release-drafter.yml +31 -0
  9. groundworkers-0.4.0/.github/workflows/ci.yml +10 -0
  10. groundworkers-0.4.0/.github/workflows/docs.yml +10 -0
  11. groundworkers-0.4.0/.github/workflows/merge.yml +13 -0
  12. groundworkers-0.4.0/.github/workflows/publish.yml +21 -0
  13. groundworkers-0.4.0/.gitignore +22 -0
  14. groundworkers-0.4.0/.python-version +1 -0
  15. groundworkers-0.4.0/CHANGELOG.md +500 -0
  16. groundworkers-0.4.0/Makefile +23 -0
  17. {groundworkers-0.3.3 → groundworkers-0.4.0}/PKG-INFO +57 -54
  18. {groundworkers-0.3.3 → groundworkers-0.4.0}/README.md +10 -19
  19. groundworkers-0.4.0/config/docker-compose.yaml +40 -0
  20. groundworkers-0.4.0/config/groundworkers.example.toml +141 -0
  21. groundworkers-0.4.0/config/groundworkers_db.env +5 -0
  22. groundworkers-0.4.0/docs/adapters/cdm.md +53 -0
  23. groundworkers-0.4.0/docs/adapters/omop_emb.md +69 -0
  24. groundworkers-0.4.0/docs/adapters/omop_graph.md +67 -0
  25. groundworkers-0.4.0/docs/architecture.md +181 -0
  26. groundworkers-0.4.0/docs/concepts.md +98 -0
  27. groundworkers-0.4.0/docs/development/extending.md +121 -0
  28. groundworkers-0.4.0/docs/development/integration.md +132 -0
  29. groundworkers-0.4.0/docs/from-scratch.md +102 -0
  30. groundworkers-0.4.0/docs/index.md +66 -0
  31. groundworkers-0.4.0/docs/js/mermaid-init.js +6 -0
  32. groundworkers-0.4.0/docs/reference/ref_adapters.md +17 -0
  33. groundworkers-0.4.0/docs/reference/ref_base.md +13 -0
  34. groundworkers-0.4.0/docs/reference/ref_config.md +3 -0
  35. groundworkers-0.4.0/docs/reference/ref_services.md +61 -0
  36. groundworkers-0.4.0/docs/reference/ref_tools.md +41 -0
  37. groundworkers-0.4.0/docs/services/domain.md +106 -0
  38. groundworkers-0.4.0/docs/services/graph.md +57 -0
  39. groundworkers-0.4.0/docs/services/grounding.md +50 -0
  40. groundworkers-0.4.0/docs/services/mapping.md +106 -0
  41. groundworkers-0.4.0/docs/services/semantic_projection.md +153 -0
  42. groundworkers-0.4.0/docs/services/source_planning.md +39 -0
  43. groundworkers-0.4.0/docs/services/text.md +165 -0
  44. groundworkers-0.4.0/docs/services/vocab.md +168 -0
  45. groundworkers-0.4.0/docs/static/01_create_config.png +0 -0
  46. groundworkers-0.4.0/docs/static/02_empty_config.png +0 -0
  47. groundworkers-0.4.0/docs/static/03_config_wizard.png +0 -0
  48. groundworkers-0.4.0/docs/static/04_test_cnx.png +0 -0
  49. groundworkers-0.4.0/docs/static/04_warnings.png +0 -0
  50. groundworkers-0.4.0/docs/static/05_graph_setup.png +0 -0
  51. groundworkers-0.4.0/docs/static/06_load_predicates.png +0 -0
  52. groundworkers-0.4.0/docs/static/07_vector_store.png +0 -0
  53. groundworkers-0.4.0/docs/static/08_register_embedding.png +0 -0
  54. groundworkers-0.4.0/docs/static/10_setup_complete.png +0 -0
  55. groundworkers-0.4.0/docs/tools/concept.md +318 -0
  56. groundworkers-0.4.0/docs/tools/domain.md +81 -0
  57. groundworkers-0.4.0/docs/tools/embedding.md +95 -0
  58. groundworkers-0.4.0/docs/tools/knowledge.md +46 -0
  59. groundworkers-0.4.0/docs/tools/mapping.md +220 -0
  60. groundworkers-0.4.0/docs/tools/overview.md +54 -0
  61. groundworkers-0.4.0/docs/tools/resolver.md +70 -0
  62. groundworkers-0.4.0/docs/tools/search.md +156 -0
  63. groundworkers-0.4.0/docs/tools/semantic_projection.md +127 -0
  64. groundworkers-0.4.0/docs/tools/source_planning.md +48 -0
  65. groundworkers-0.4.0/docs/tools/system.md +68 -0
  66. groundworkers-0.4.0/docs/tools/text.md +104 -0
  67. groundworkers-0.4.0/docs/usage/configuration.md +345 -0
  68. groundworkers-0.4.0/docs/usage/installation.md +119 -0
  69. groundworkers-0.4.0/docs/usage/integrations.md +138 -0
  70. groundworkers-0.4.0/docs/usage/setup_journey.md +17 -0
  71. groundworkers-0.4.0/docs/usage/testing.md +34 -0
  72. groundworkers-0.4.0/groundworkers.bundle +0 -0
  73. groundworkers-0.4.0/mkdocs.yaml +102 -0
  74. groundworkers-0.4.0/pyproject.toml +120 -0
  75. groundworkers-0.4.0/src/groundworkers/__init__.py +10 -0
  76. groundworkers-0.4.0/src/groundworkers/_env.py +108 -0
  77. groundworkers-0.4.0/src/groundworkers/adapters/llm.py +298 -0
  78. groundworkers-0.4.0/src/groundworkers/adapters/omop_emb.py +473 -0
  79. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/adapters/omop_graph.py +293 -72
  80. groundworkers-0.4.0/src/groundworkers/app.py +186 -0
  81. groundworkers-0.4.0/src/groundworkers/application/__init__.py +1 -0
  82. groundworkers-0.4.0/src/groundworkers/application/setup/__init__.py +6 -0
  83. groundworkers-0.4.0/src/groundworkers/application/setup/configuration.py +229 -0
  84. groundworkers-0.4.0/src/groundworkers/application/setup/configuration_provider.py +2032 -0
  85. groundworkers-0.4.0/src/groundworkers/application/setup/databases.py +940 -0
  86. groundworkers-0.4.0/src/groundworkers/application/setup/embedding_artifacts.py +145 -0
  87. groundworkers-0.4.0/src/groundworkers/application/setup/embedding_capability.py +125 -0
  88. groundworkers-0.4.0/src/groundworkers/application/setup/embedding_coverage.py +118 -0
  89. groundworkers-0.4.0/src/groundworkers/application/setup/embedding_population.py +307 -0
  90. groundworkers-0.4.0/src/groundworkers/application/setup/embedding_reconciliation.py +101 -0
  91. groundworkers-0.4.0/src/groundworkers/application/setup/embedding_registry.py +91 -0
  92. groundworkers-0.4.0/src/groundworkers/application/setup/embedding_setup.py +522 -0
  93. groundworkers-0.4.0/src/groundworkers/application/setup/graph_maintenance.py +249 -0
  94. groundworkers-0.4.0/src/groundworkers/application/setup/integration.py +44 -0
  95. groundworkers-0.4.0/src/groundworkers/application/setup/maintenance.py +85 -0
  96. groundworkers-0.4.0/src/groundworkers/application/setup/maintenance_runs.py +851 -0
  97. groundworkers-0.4.0/src/groundworkers/application/setup/model_inventory.py +83 -0
  98. groundworkers-0.4.0/src/groundworkers/application/setup/models.py +490 -0
  99. groundworkers-0.4.0/src/groundworkers/application/setup/performance_maintenance.py +153 -0
  100. groundworkers-0.4.0/src/groundworkers/application/setup/runtime_setup.py +419 -0
  101. groundworkers-0.4.0/src/groundworkers/base/__init__.py +24 -0
  102. groundworkers-0.4.0/src/groundworkers/base/errors.py +86 -0
  103. groundworkers-0.4.0/src/groundworkers/base/results.py +64 -0
  104. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/base/server.py +92 -7
  105. groundworkers-0.4.0/src/groundworkers/base/sql.py +16 -0
  106. groundworkers-0.4.0/src/groundworkers/bootstrap.py +97 -0
  107. groundworkers-0.4.0/src/groundworkers/config/README +6 -0
  108. groundworkers-0.4.0/src/groundworkers/config/predicate_classification.csv +26 -0
  109. groundworkers-0.4.0/src/groundworkers/config/predicate_mapping.csv +735 -0
  110. groundworkers-0.4.0/src/groundworkers/config.py +322 -0
  111. groundworkers-0.4.0/src/groundworkers/server.py +307 -0
  112. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/domain.py +32 -8
  113. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/graph.py +141 -22
  114. groundworkers-0.4.0/src/groundworkers/services/grounding.py +228 -0
  115. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/knowledge/catalogue.py +2 -1
  116. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/knowledge/models.py +0 -1
  117. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/mapping.py +134 -16
  118. groundworkers-0.4.0/src/groundworkers/services/semantic_projection/__init__.py +25 -0
  119. groundworkers-0.4.0/src/groundworkers/services/semantic_projection/definitions.py +323 -0
  120. groundworkers-0.4.0/src/groundworkers/services/semantic_projection/models.py +82 -0
  121. groundworkers-0.4.0/src/groundworkers/services/semantic_projection/service.py +147 -0
  122. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/__init__.py +18 -15
  123. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/assisted.py +30 -4
  124. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/classifier.py +11 -8
  125. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/csv_.py +4 -2
  126. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/docx_.py +5 -2
  127. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/models.py +13 -3
  128. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/normalisation.py +4 -3
  129. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/service.py +55 -4
  130. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/source_profiles/__init__.py +10 -4
  131. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/source_profiles/redcap.py +3 -1
  132. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/source_profiles/registry.py +6 -2
  133. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/text/prompts.py +0 -1
  134. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/text/service.py +83 -1
  135. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/vocab.py +52 -10
  136. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/concept_tools.py +8 -30
  137. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/domain_tools.py +7 -6
  138. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/embedding_tools.py +7 -15
  139. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/knowledge_tools.py +8 -8
  140. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/mapping_tools.py +8 -24
  141. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/resolver_tools.py +32 -19
  142. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/search_tools.py +3 -9
  143. groundworkers-0.4.0/src/groundworkers/tools/semantic_projection_tools.py +78 -0
  144. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/source_planning_tools.py +5 -10
  145. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/system_tools.py +114 -19
  146. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/text_tools.py +30 -26
  147. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/transports/rest/api.py +28 -4
  148. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/transports/rest/models.py +2 -2
  149. groundworkers-0.4.0/src/groundworkers/tui/__init__.py +5 -0
  150. groundworkers-0.4.0/src/groundworkers/tui/app.py +132 -0
  151. groundworkers-0.4.0/src/groundworkers/tui/pages/__init__.py +5 -0
  152. groundworkers-0.4.0/src/groundworkers/tui/pages/base.py +52 -0
  153. groundworkers-0.4.0/src/groundworkers/tui/pages/setup.py +1000 -0
  154. groundworkers-0.4.0/src/groundworkers/tui/presenters/__init__.py +1 -0
  155. groundworkers-0.4.0/src/groundworkers/tui/presenters/base.py +59 -0
  156. groundworkers-0.4.0/src/groundworkers/tui/presenters/chat.py +45 -0
  157. groundworkers-0.4.0/src/groundworkers/tui/presenters/configuration.py +57 -0
  158. groundworkers-0.4.0/src/groundworkers/tui/presenters/database.py +284 -0
  159. groundworkers-0.4.0/src/groundworkers/tui/presenters/embeddings.py +606 -0
  160. groundworkers-0.4.0/src/groundworkers/tui/presenters/graph.py +116 -0
  161. groundworkers-0.4.0/src/groundworkers/tui/presenters/llm_provider.py +298 -0
  162. groundworkers-0.4.0/src/groundworkers/tui/presenters/overview.py +131 -0
  163. groundworkers-0.4.0/src/groundworkers/tui/presenters/performance.py +173 -0
  164. groundworkers-0.4.0/src/groundworkers/tui/presenters/runs.py +162 -0
  165. groundworkers-0.4.0/src/groundworkers/tui/routes.py +9 -0
  166. groundworkers-0.4.0/src/groundworkers/tui/state.py +80 -0
  167. groundworkers-0.4.0/src/groundworkers/tui/wizards/__init__.py +1 -0
  168. groundworkers-0.4.0/src/groundworkers/tui/wizards/config_location.py +235 -0
  169. groundworkers-0.4.0/src/groundworkers/tui/wizards/embedding_store.py +96 -0
  170. groundworkers-0.4.0/src/groundworkers/tui/wizards/embeddings.py +525 -0
  171. groundworkers-0.4.0/src/groundworkers/tui/wizards/graph_maintenance.py +415 -0
  172. groundworkers-0.4.0/src/groundworkers/tui/wizards/performance_maintenance.py +221 -0
  173. groundworkers-0.4.0/tests/__init__.py +0 -0
  174. groundworkers-0.4.0/tests/conftest.py +33 -0
  175. groundworkers-0.4.0/tests/integration/__init__.py +0 -0
  176. groundworkers-0.4.0/tests/integration/test_omop_emb_adapter.py +94 -0
  177. groundworkers-0.4.0/tests/integration/test_omop_graph_adapter.py +422 -0
  178. groundworkers-0.4.0/tests/support/__init__.py +13 -0
  179. groundworkers-0.4.0/tests/support/stack_config.py +170 -0
  180. groundworkers-0.4.0/tests/test_bootstrap_config.py +276 -0
  181. {groundworkers-0.3.3 → groundworkers-0.4.0}/tests/test_rest_api.py +56 -13
  182. groundworkers-0.4.0/tests/test_server_registry.py +502 -0
  183. groundworkers-0.4.0/tests/unit/__init__.py +0 -0
  184. groundworkers-0.4.0/tests/unit/test_concept_tools.py +746 -0
  185. groundworkers-0.4.0/tests/unit/test_config_location_wizard.py +344 -0
  186. groundworkers-0.4.0/tests/unit/test_configuration_provider.py +617 -0
  187. groundworkers-0.4.0/tests/unit/test_domain_tools.py +118 -0
  188. groundworkers-0.4.0/tests/unit/test_embedding_population_scope.py +212 -0
  189. groundworkers-0.4.0/tests/unit/test_embedding_reconciliation.py +307 -0
  190. groundworkers-0.4.0/tests/unit/test_embedding_registry_step.py +159 -0
  191. groundworkers-0.4.0/tests/unit/test_embedding_tools.py +238 -0
  192. groundworkers-0.4.0/tests/unit/test_env_bootstrap.py +180 -0
  193. groundworkers-0.4.0/tests/unit/test_error_boundary.py +50 -0
  194. groundworkers-0.4.0/tests/unit/test_graph_maintenance.py +194 -0
  195. groundworkers-0.4.0/tests/unit/test_graph_maintenance_wizard.py +265 -0
  196. groundworkers-0.4.0/tests/unit/test_graph_service.py +59 -0
  197. groundworkers-0.4.0/tests/unit/test_graph_status.py +118 -0
  198. groundworkers-0.4.0/tests/unit/test_grounding_constraints.py +603 -0
  199. groundworkers-0.4.0/tests/unit/test_grounding_service.py +202 -0
  200. groundworkers-0.4.0/tests/unit/test_knowledge_catalogue.py +219 -0
  201. groundworkers-0.4.0/tests/unit/test_llm_adapter.py +263 -0
  202. groundworkers-0.4.0/tests/unit/test_maintenance_phase1.py +68 -0
  203. groundworkers-0.4.0/tests/unit/test_maintenance_runs_phase2.py +264 -0
  204. groundworkers-0.4.0/tests/unit/test_mapping_service.py +613 -0
  205. groundworkers-0.4.0/tests/unit/test_mapping_tools.py +142 -0
  206. groundworkers-0.4.0/tests/unit/test_migration_boundaries.py +164 -0
  207. groundworkers-0.4.0/tests/unit/test_omop_emb_adapter.py +336 -0
  208. groundworkers-0.4.0/tests/unit/test_omop_emb_setup_config.py +163 -0
  209. groundworkers-0.4.0/tests/unit/test_omop_graph_adapter.py +236 -0
  210. groundworkers-0.4.0/tests/unit/test_performance.py +65 -0
  211. groundworkers-0.4.0/tests/unit/test_phase3_overview.py +66 -0
  212. groundworkers-0.4.0/tests/unit/test_provider_fields.py +66 -0
  213. groundworkers-0.4.0/tests/unit/test_semantic_projection_service.py +333 -0
  214. groundworkers-0.4.0/tests/unit/test_semantic_projection_tools.py +119 -0
  215. groundworkers-0.4.0/tests/unit/test_setup_artifacts_and_coverage.py +134 -0
  216. groundworkers-0.4.0/tests/unit/test_setup_configuration.py +175 -0
  217. groundworkers-0.4.0/tests/unit/test_setup_configuration_section.py +68 -0
  218. groundworkers-0.4.0/tests/unit/test_setup_databases.py +471 -0
  219. groundworkers-0.4.0/tests/unit/test_setup_embeddings.py +545 -0
  220. groundworkers-0.4.0/tests/unit/test_setup_provider_conformance.py +197 -0
  221. groundworkers-0.4.0/tests/unit/test_setup_runtime.py +276 -0
  222. groundworkers-0.4.0/tests/unit/test_setup_truth.py +185 -0
  223. groundworkers-0.4.0/tests/unit/test_setup_write_flows.py +498 -0
  224. groundworkers-0.4.0/tests/unit/test_source_planning_classifier.py +205 -0
  225. groundworkers-0.4.0/tests/unit/test_source_planning_decomposer.py +134 -0
  226. groundworkers-0.4.0/tests/unit/test_source_planning_detector.py +46 -0
  227. groundworkers-0.4.0/tests/unit/test_source_planning_models.py +141 -0
  228. groundworkers-0.4.0/tests/unit/test_source_planning_normalisation.py +128 -0
  229. groundworkers-0.4.0/tests/unit/test_source_planning_router.py +277 -0
  230. groundworkers-0.4.0/tests/unit/test_source_planning_service.py +403 -0
  231. groundworkers-0.4.0/tests/unit/test_source_planning_tools.py +87 -0
  232. groundworkers-0.4.0/tests/unit/test_stack_config_fixtures.py +55 -0
  233. groundworkers-0.4.0/tests/unit/test_system_tools.py +412 -0
  234. groundworkers-0.4.0/tests/unit/test_text_service.py +262 -0
  235. groundworkers-0.4.0/tests/unit/test_text_tools.py +399 -0
  236. groundworkers-0.4.0/tests/unit/test_tui_app.py +732 -0
  237. groundworkers-0.4.0/tests/unit/test_tui_state.py +475 -0
  238. groundworkers-0.4.0/tests/unit/test_vector_store_setup.py +208 -0
  239. groundworkers-0.4.0/tests/unit/test_vocab_service.py +141 -0
  240. groundworkers-0.4.0/uv.lock +5066 -0
  241. groundworkers-0.3.3/pyproject.toml +0 -86
  242. groundworkers-0.3.3/setup.cfg +0 -4
  243. groundworkers-0.3.3/src/groundworkers/__init__.py +0 -3
  244. groundworkers-0.3.3/src/groundworkers/adapters/llm.py +0 -177
  245. groundworkers-0.3.3/src/groundworkers/adapters/omop_emb.py +0 -304
  246. groundworkers-0.3.3/src/groundworkers/app.py +0 -213
  247. groundworkers-0.3.3/src/groundworkers/base/__init__.py +0 -14
  248. groundworkers-0.3.3/src/groundworkers/base/errors.py +0 -22
  249. groundworkers-0.3.3/src/groundworkers/base/results.py +0 -38
  250. groundworkers-0.3.3/src/groundworkers/bootstrap.py +0 -120
  251. groundworkers-0.3.3/src/groundworkers/config.py +0 -276
  252. groundworkers-0.3.3/src/groundworkers/server.py +0 -133
  253. groundworkers-0.3.3/src/groundworkers/services/grounding.py +0 -118
  254. groundworkers-0.3.3/src/groundworkers.egg-info/PKG-INFO +0 -179
  255. groundworkers-0.3.3/src/groundworkers.egg-info/SOURCES.txt +0 -93
  256. groundworkers-0.3.3/src/groundworkers.egg-info/dependency_links.txt +0 -1
  257. groundworkers-0.3.3/src/groundworkers.egg-info/entry_points.txt +0 -5
  258. groundworkers-0.3.3/src/groundworkers.egg-info/requires.txt +0 -47
  259. groundworkers-0.3.3/src/groundworkers.egg-info/top_level.txt +0 -1
  260. groundworkers-0.3.3/tests/test_bootstrap_config.py +0 -151
  261. groundworkers-0.3.3/tests/test_server_registry.py +0 -419
  262. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/adapters/__init__.py +0 -0
  263. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/adapters/cdm.py +0 -0
  264. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/criteria-gate-yesno/guidance.md +0 -0
  265. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/criteria-gate-yesno/manifest.yaml +0 -0
  266. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/diagnosis-role-modifier/guidance.md +0 -0
  267. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/diagnosis-role-modifier/manifest.yaml +0 -0
  268. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/domain-routing/guidance.md +0 -0
  269. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/domain-routing/manifest.yaml +0 -0
  270. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/domain-routing/rules.yaml +0 -0
  271. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/drug-concept-granularity/guidance.md +0 -0
  272. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/drug-concept-granularity/manifest.yaml +0 -0
  273. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/drug-concept-granularity/rules.yaml +0 -0
  274. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/history-of-event/guidance.md +0 -0
  275. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/history-of-event/manifest.yaml +0 -0
  276. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/standard-concept-preference/guidance.md +0 -0
  277. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/standard-concept-preference/manifest.yaml +0 -0
  278. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/knowledge/packs/core/standard-concept-preference/rules.yaml +0 -0
  279. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/__init__.py +0 -0
  280. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/knowledge/__init__.py +0 -0
  281. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/canonical_headers.py +0 -0
  282. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposer.py +0 -0
  283. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/__init__.py +0 -0
  284. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/ddl_.py +0 -0
  285. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/json_.py +0 -0
  286. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/pdf_.py +0 -0
  287. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/xlsx_.py +0 -0
  288. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/decomposers/xml_.py +0 -0
  289. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/detector.py +0 -0
  290. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/provenance.py +0 -0
  291. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/router.py +0 -0
  292. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/serialisation.py +0 -0
  293. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/source_profiles/base.py +0 -0
  294. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/source_planning/warnings.py +0 -0
  295. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/text/__init__.py +1 -1
  296. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/services/text/models.py +0 -0
  297. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/tools/__init__.py +0 -0
  298. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/transports/__init__.py +0 -0
  299. {groundworkers-0.3.3 → groundworkers-0.4.0}/src/groundworkers/transports/rest/__init__.py +0 -0
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env bash
2
+ # Canonical CAVA pre-commit hook: keeps uv.lock in sync with pyproject.toml.
3
+ #
4
+ # If pyproject.toml is staged, finds the specific dependency line(s) that
5
+ # changed (added, removed, or had their version spec edited) and refreshes
6
+ # only those packages in uv.lock via `uv lock --upgrade-package`. Does not
7
+ # touch any other package -- this is a targeted sync, not a blanket
8
+ # `uv lock`, so it never pulls in an unrelated upstream release.
9
+ set -euo pipefail
10
+
11
+ if ! git diff --cached --name-only | grep -q '^pyproject\.toml$'; then
12
+ exit 0
13
+ fi
14
+
15
+ if ! command -v uv >/dev/null 2>&1; then
16
+ echo "pre-commit: uv not found on PATH, skipping uv.lock sync" >&2
17
+ exit 0
18
+ fi
19
+
20
+ changed_names=$(git diff --cached -- pyproject.toml \
21
+ | sed -nE 's/^[+-][[:space:]]*"([A-Za-z0-9][A-Za-z0-9._-]*).*/\1/p' \
22
+ | sort -u)
23
+
24
+ if [ -z "$changed_names" ]; then
25
+ exit 0
26
+ fi
27
+
28
+ upgrade_args=()
29
+ while IFS= read -r name; do
30
+ upgrade_args+=(--upgrade-package "$name")
31
+ done <<< "$changed_names"
32
+
33
+ echo "pre-commit: syncing uv.lock for changed dependencies:"
34
+ echo "$changed_names" | sed 's/^/ - /'
35
+ uv lock "${upgrade_args[@]}"
36
+ git add uv.lock
@@ -0,0 +1,27 @@
1
+ # Contributing
2
+
3
+ ## Development setup
4
+
5
+ ```bash
6
+ uv sync --all-extras --dev
7
+ uv run pytest -q
8
+ uv run ruff check .
9
+ ```
10
+
11
+ ## Opening a pull request
12
+
13
+ 1. Apply **exactly one** label before merging:
14
+
15
+ | Label | When to use |
16
+ |---|---|
17
+ | `breaking` | Public API change, backward-incompatible |
18
+ | `feature` | New functionality, backward-compatible |
19
+ | `fix` | Bug fix |
20
+ | `dependencies` | Dependency version update |
21
+ | `chore` | CI changes, refactoring, test additions, docs — anything that does not affect the public-facing package. Bypasses the label gate; excluded from the changelog and does not bump the version. |
22
+
23
+ 2. When merging (squash), write a clear extended description in the merge dialog. That text — not the PR's opening description — becomes the changelog entry for this change. Leave it blank for `chore` PRs.
24
+
25
+ ## Versioning and releases
26
+
27
+ Versions are derived from git tags; there is no version string in any source file. Releases are triggered by a maintainer publishing the standing draft release on the repository's Releases page. There is no automated commit-back to `main`.
@@ -0,0 +1,66 @@
1
+ name: "🐞 Bug Report"
2
+ description: Report a reproducible bug.
3
+ type: "Bug"
4
+ body:
5
+ - type: checkboxes
6
+ attributes:
7
+ label: Pre-flight
8
+ options:
9
+ - label: I searched existing issues and this is not a duplicate.
10
+ required: true
11
+
12
+ - type: textarea
13
+ id: summary
14
+ attributes:
15
+ label: Summary
16
+ description: One or two sentences describing the bug.
17
+ validations:
18
+ required: true
19
+
20
+ - type: textarea
21
+ id: reproduction
22
+ attributes:
23
+ label: Reproduction
24
+ description: Steps and/or a minimal code example that reproduces the issue. Wrap code in triple backticks.
25
+ placeholder: |
26
+ 1. Import X and call Y with Z
27
+ 2. Observe error
28
+
29
+ ```python
30
+ # minimal example
31
+ ```
32
+ validations:
33
+ required: true
34
+
35
+ - type: textarea
36
+ id: actual
37
+ attributes:
38
+ label: Actual behaviour
39
+ validations:
40
+ required: true
41
+
42
+ - type: textarea
43
+ id: expected
44
+ attributes:
45
+ label: Expected behaviour
46
+ validations:
47
+ required: true
48
+
49
+ - type: textarea
50
+ id: logs
51
+ attributes:
52
+ label: Error output
53
+ description: Full traceback if applicable. Formatted automatically.
54
+ render: python-traceback
55
+
56
+ - type: textarea
57
+ id: system
58
+ attributes:
59
+ label: System info
60
+ description: |
61
+ Run this in your environment and paste the output:
62
+
63
+ ```shell
64
+ python <(curl -s https://raw.githubusercontent.com/AustralianCancerDataNetwork/cava-devops/main/scripts/cava_system_info.py)
65
+ ```
66
+ render: shell
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Discussions
4
+ url: https://github.com/orgs/AustralianCancerDataNetwork/discussions
5
+ about: Questions and general discussion about the CAVA stack.
@@ -0,0 +1,32 @@
1
+ name: "🚀 Feature Request"
2
+ description: Propose a new feature or enhancement.
3
+ type: "Feature"
4
+ body:
5
+ - type: checkboxes
6
+ attributes:
7
+ label: Pre-flight
8
+ options:
9
+ - label: I searched existing issues and this has not been requested before.
10
+ required: true
11
+
12
+ - type: textarea
13
+ id: problem
14
+ attributes:
15
+ label: Problem or motivation
16
+ description: What are you trying to do that you currently cannot?
17
+ validations:
18
+ required: true
19
+
20
+ - type: textarea
21
+ id: proposal
22
+ attributes:
23
+ label: Proposed solution
24
+ description: How would you like this to work?
25
+ validations:
26
+ required: true
27
+
28
+ - type: textarea
29
+ id: alternatives
30
+ attributes:
31
+ label: Alternatives considered
32
+ description: Other approaches you considered and why you ruled them out.
@@ -0,0 +1,65 @@
1
+ name: "❗ Something is not working"
2
+ description: Something behaves unexpectedly but you are not sure if it is a bug.
3
+ body:
4
+ - type: checkboxes
5
+ attributes:
6
+ label: Pre-flight
7
+ options:
8
+ - label: I searched existing issues for this problem.
9
+ required: true
10
+
11
+ - type: textarea
12
+ id: summary
13
+ attributes:
14
+ label: Problem summary
15
+ description: 1-2 sentences describing what is not working.
16
+ validations:
17
+ required: true
18
+
19
+ - type: textarea
20
+ id: reproduction
21
+ attributes:
22
+ label: Reproduction
23
+ description: Steps and/or a minimal code example. Wrap code in triple backticks.
24
+ placeholder: |
25
+ 1. Import X and call Y with Z
26
+ 2. Observe unexpected behaviour
27
+
28
+ ```python
29
+ # minimal example
30
+ ```
31
+ validations:
32
+ required: true
33
+
34
+ - type: textarea
35
+ id: actual
36
+ attributes:
37
+ label: Actual outcome
38
+ validations:
39
+ required: true
40
+
41
+ - type: textarea
42
+ id: expected
43
+ attributes:
44
+ label: Expected outcome
45
+ validations:
46
+ required: true
47
+
48
+ - type: textarea
49
+ id: logs
50
+ attributes:
51
+ label: Error messages
52
+ description: Full traceback if applicable. Formatted automatically.
53
+ render: python-traceback
54
+
55
+ - type: textarea
56
+ id: system
57
+ attributes:
58
+ label: System info
59
+ description: |
60
+ Run this in your environment and paste the output:
61
+
62
+ ```shell
63
+ python <(curl -s https://raw.githubusercontent.com/AustralianCancerDataNetwork/cava-devops/main/scripts/cava_system_info.py)
64
+ ```
65
+ render: shell
@@ -0,0 +1,9 @@
1
+ ## Summary
2
+
3
+ <!-- What does this PR do? This text becomes the changelog entry — write it for a reader who will see it months from now, not for the reviewer reading the diff. Leave blank for chore PRs. -->
4
+
5
+ ## Checklist
6
+
7
+ - [ ] Applied exactly one label (`breaking`, `feature`, `fix`, `dependencies`, or `chore`)
8
+ - [ ] Tests pass locally (`uv run pytest -q`)
9
+ - [ ] Lint passes (`uv run ruff check .`)
@@ -0,0 +1,31 @@
1
+ name-template: 'v$RESOLVED_VERSION'
2
+ tag-template: 'v$RESOLVED_VERSION'
3
+ commitish: main
4
+
5
+ categories:
6
+ - title: Breaking Changes
7
+ labels: ['breaking']
8
+ - title: Features
9
+ labels: ['feature']
10
+ - title: Fixes
11
+ labels: ['fix']
12
+ - title: Dependencies
13
+ labels: ['dependencies']
14
+
15
+ template: |
16
+ $CHANGES
17
+
18
+ change-template: '- **$TITLE** (#$NUMBER) @$AUTHOR'
19
+
20
+ version-resolver:
21
+ major:
22
+ labels: ['breaking']
23
+ minor:
24
+ labels: ['feature']
25
+ patch:
26
+ labels: ['fix', 'dependencies']
27
+ default: patch
28
+
29
+ exclude-labels: ['chore']
30
+
31
+ autolabeler: []
@@ -0,0 +1,10 @@
1
+ name: CI
2
+ on:
3
+ pull_request:
4
+ branches: [main]
5
+ types: [opened, synchronize, reopened, labeled, unlabeled]
6
+ jobs:
7
+ label-gate:
8
+ uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/label-gate.yml@main
9
+ build-test:
10
+ uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/build-test.yml@main
@@ -0,0 +1,10 @@
1
+ name: Deploy Docs
2
+ on:
3
+ push:
4
+ tags: ['v*']
5
+ workflow_dispatch:
6
+ permissions:
7
+ contents: write
8
+ jobs:
9
+ deploy:
10
+ uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/deploy-docs.yml@main
@@ -0,0 +1,13 @@
1
+ name: Release Update
2
+ on:
3
+ pull_request:
4
+ types: [closed]
5
+ branches: [main]
6
+ permissions:
7
+ contents: write
8
+ pull-requests: read
9
+ jobs:
10
+ draft:
11
+ if: github.event.pull_request.merged == true
12
+ uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/release-drafter.yml@main
13
+ secrets: inherit
@@ -0,0 +1,21 @@
1
+ name: Publish
2
+ on:
3
+ push:
4
+ tags: ['v*']
5
+ jobs:
6
+ build:
7
+ uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/publish.yml@main
8
+ publish:
9
+ # Inline: PyPI OIDC checks job_workflow_ref, which must point to this file.
10
+ # Moving pypa/gh-action-pypi-publish into cava-devops would break the trusted publisher.
11
+ needs: build
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ id-token: write
15
+ environment:
16
+ name: pypi
17
+ url: https://pypi.org/p/groundworkers
18
+ steps:
19
+ - uses: actions/download-artifact@v4
20
+ with: { name: dist, path: dist/ }
21
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,22 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ .venv/
4
+ .pytest_cache/
5
+ .mypy_cache/
6
+ .ruff_cache/
7
+ dist/
8
+ build/
9
+ *.egg-info/
10
+ .DS_Store
11
+ _design/
12
+ *.log
13
+ *.bak
14
+ *.tmp
15
+ .vscode/
16
+ settings.json
17
+ *.local.yaml
18
+ *.local.toml
19
+ site/
20
+ _knowledge/
21
+ data/
22
+ .env
@@ -0,0 +1 @@
1
+ 3.12