databao-context-engine 0.7.0__tar.gz → 0.7.1.dev1__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 (192) hide show
  1. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/PKG-INFO +15 -12
  2. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/README.md +13 -9
  3. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/pyproject.toml +3 -3
  4. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/__init__.py +8 -0
  5. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/build_sources/build_runner.py +86 -80
  6. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/build_sources/build_service.py +63 -37
  7. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/build_sources/build_wiring.py +4 -7
  8. databao_context_engine-0.7.1.dev1/src/databao_context_engine/build_sources/context_loader.py +88 -0
  9. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/cli/commands.py +71 -0
  10. databao_context_engine-0.7.1.dev1/src/databao_context_engine/cli/datasources.py +119 -0
  11. databao_context_engine-0.7.1.dev1/src/databao_context_engine/cli/user_input_cb_impl.py +42 -0
  12. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/databao_context_domain_manager.py +1 -1
  13. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/databao_context_engine.py +41 -0
  14. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/datasources/datasource_context.py +12 -4
  15. databao_context_engine-0.7.1.dev1/src/databao_context_engine/mcp/mcp_server.py +165 -0
  16. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/pluginlib/build_plugin.py +3 -0
  17. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/pluginlib/config.py +1 -2
  18. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/athena/athena_connector.py +20 -0
  19. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/athena/athena_db_plugin.py +3 -1
  20. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/athena/athena_introspector.py +0 -12
  21. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/base_connector.py +27 -0
  22. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/base_db_plugin.py +18 -8
  23. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/base_introspector.py +148 -92
  24. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/bigquery/bigquery_connector.py +85 -0
  25. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/bigquery/bigquery_db_plugin.py +3 -1
  26. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/bigquery/bigquery_introspector.py +1 -75
  27. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/clickhouse/clickhouse_connector.py +23 -0
  28. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/clickhouse/clickhouse_db_plugin.py +3 -1
  29. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/clickhouse/clickhouse_introspector.py +0 -11
  30. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/database_context_explorer.py +93 -0
  31. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/databases_types.py +45 -5
  32. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/duckdb/duckdb_connector.py +25 -0
  33. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/duckdb/duckdb_db_plugin.py +3 -1
  34. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/duckdb/duckdb_introspector.py +69 -78
  35. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/introspection_model_builder.py +4 -47
  36. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/introspection_scope_matcher.py +21 -17
  37. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/mssql/mssql_connector.py +60 -0
  38. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/mssql/mssql_db_plugin.py +3 -1
  39. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/mssql/mssql_introspector.py +2 -52
  40. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/mysql/mysql_connector.py +32 -0
  41. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/mysql/mysql_db_plugin.py +3 -1
  42. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/mysql/mysql_introspector.py +66 -78
  43. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/postgresql/postgresql_connector.py +39 -0
  44. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/postgresql/postgresql_db_plugin.py +4 -4
  45. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/postgresql/postgresql_introspector.py +66 -233
  46. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/postgresql/sync_asyncpg_connection.py +153 -0
  47. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/profiling_config.py +19 -0
  48. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/snowflake/snowflake_connector.py +36 -0
  49. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/snowflake/snowflake_db_plugin.py +3 -1
  50. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/snowflake/snowflake_introspector.py +48 -66
  51. databao_context_engine-0.7.1.dev1/src/databao_context_engine/plugins/databases/sqlite/sqlite_connector.py +43 -0
  52. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/sqlite/sqlite_db_plugin.py +3 -1
  53. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/sqlite/sqlite_introspector.py +0 -35
  54. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/dbt/types.py +1 -1
  55. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/duckdb_tools.py +10 -1
  56. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/plugin_loader.py +19 -3
  57. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/resources/parquet_introspector.py +1 -1
  58. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/project/init_project.py +2 -0
  59. databao_context_engine-0.7.1.dev1/src/databao_context_engine/serialization/yaml.py +84 -0
  60. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/repositories/chunk_repository.py +25 -31
  61. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/repositories/datasource_context_repository.py +23 -20
  62. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/repositories/embedding_model_registry_repository.py +33 -32
  63. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/repositories/embedding_repository.py +36 -30
  64. databao_context_engine-0.7.0/src/databao_context_engine/cli/datasources.py +0 -20
  65. databao_context_engine-0.7.0/src/databao_context_engine/mcp/mcp_server.py +0 -106
  66. databao_context_engine-0.7.0/src/databao_context_engine/serialization/yaml.py +0 -54
  67. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/LICENSE.md +0 -0
  68. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/build_sources/__init__.py +0 -0
  69. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/build_sources/export_results.py +0 -0
  70. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/build_sources/plugin_execution.py +0 -0
  71. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/build_sources/types.py +0 -0
  72. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/cli/__init__.py +0 -0
  73. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/cli/info.py +0 -0
  74. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/config/__init__.py +0 -0
  75. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/config/log_config.yaml +0 -0
  76. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/config/logging.py +0 -0
  77. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/datasources/__init__.py +0 -0
  78. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/datasources/check_config.py +0 -0
  79. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/datasources/config_wizard.py +0 -0
  80. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/datasources/datasource_discovery.py +0 -0
  81. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/datasources/execute_sql_query.py +0 -0
  82. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/datasources/sql_read_only.py +0 -0
  83. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/datasources/types.py +0 -0
  84. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/event_journal/__init__.py +0 -0
  85. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/event_journal/writer.py +0 -0
  86. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/generate_configs_schemas.py +0 -0
  87. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/init_domain.py +0 -0
  88. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/introspection/__init__.py +0 -0
  89. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/introspection/property_extract.py +0 -0
  90. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/__init__.py +0 -0
  91. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/api.py +0 -0
  92. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/config.py +0 -0
  93. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/descriptions/__init__.py +0 -0
  94. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/descriptions/ollama.py +0 -0
  95. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/descriptions/provider.py +0 -0
  96. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/embeddings/__init__.py +0 -0
  97. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/embeddings/ollama.py +0 -0
  98. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/embeddings/provider.py +0 -0
  99. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/errors.py +0 -0
  100. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/factory.py +0 -0
  101. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/install.py +0 -0
  102. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/prompts/__init__.py +0 -0
  103. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/prompts/ollama.py +0 -0
  104. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/prompts/provider.py +0 -0
  105. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/runtime.py +0 -0
  106. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/llm/service.py +0 -0
  107. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/main.py +0 -0
  108. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/mcp/__init__.py +0 -0
  109. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/mcp/mcp_runner.py +0 -0
  110. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/perf/core.py +0 -0
  111. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/pluginlib/__init__.py +0 -0
  112. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/pluginlib/plugin_utils.py +0 -0
  113. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/pluginlib/sql/__init__.py +0 -0
  114. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/pluginlib/sql/sql_types.py +0 -0
  115. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/__init__.py +0 -0
  116. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/__init__.py +0 -0
  117. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/athena/__init__.py +0 -0
  118. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/athena/config_file.py +0 -0
  119. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/bigquery/__init__.py +0 -0
  120. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/bigquery/config_file.py +0 -0
  121. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/clickhouse/__init__.py +0 -0
  122. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/clickhouse/config_file.py +0 -0
  123. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/context_enricher.py +0 -0
  124. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/database_chunker.py +0 -0
  125. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/duckdb/__init__.py +0 -0
  126. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/duckdb/config_file.py +0 -0
  127. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/introspection_scope.py +0 -0
  128. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/mssql/__init__.py +0 -0
  129. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/mssql/config_file.py +0 -0
  130. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/mysql/__init__.py +0 -0
  131. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/mysql/config_file.py +0 -0
  132. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/postgresql/__init__.py +0 -0
  133. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/postgresql/config_file.py +0 -0
  134. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/sampling_scope.py +0 -0
  135. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/sampling_scope_matcher.py +0 -0
  136. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/snowflake/__init__.py +0 -0
  137. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/snowflake/config_file.py +0 -0
  138. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/sqlite/__init__.py +0 -0
  139. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/databases/sqlite/config_file.py +0 -0
  140. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/dbt/__init__.py +0 -0
  141. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/dbt/context_filtering.py +0 -0
  142. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/dbt/dbt_chunker.py +0 -0
  143. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/dbt/dbt_context_extractor.py +0 -0
  144. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/dbt/dbt_plugin.py +0 -0
  145. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/dbt/types_artifacts.py +0 -0
  146. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/files/__init__.py +0 -0
  147. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/files/docling_chunker.py +0 -0
  148. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/files/pdf_plugin.py +0 -0
  149. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/files/unstructured_files_plugin.py +0 -0
  150. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/resources/__init__.py +0 -0
  151. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/resources/parquet_chunker.py +0 -0
  152. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/resources/parquet_plugin.py +0 -0
  153. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/plugins/resources/types.py +0 -0
  154. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/progress/progress.py +0 -0
  155. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/project/__init__.py +0 -0
  156. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/project/info.py +0 -0
  157. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/project/layout.py +0 -0
  158. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/project/project_config.py +0 -0
  159. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/project/resources/examples/src/databases/example_postgres.yaml +0 -0
  160. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/project/resources/examples/src/files/documentation.md +0 -0
  161. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/project/resources/examples/src/files/notes.txt +0 -0
  162. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/py.typed +0 -0
  163. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/search_context/__init__.py +0 -0
  164. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/search_context/chunk_search_repository.py +0 -0
  165. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/search_context/search_runner.py +0 -0
  166. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/search_context/search_service.py +0 -0
  167. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/search_context/search_wiring.py +0 -0
  168. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/serialization/__init__.py +0 -0
  169. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/services/__init__.py +0 -0
  170. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/services/chunk_embedding_service.py +0 -0
  171. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/services/embedding_shard_resolver.py +0 -0
  172. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/services/factories.py +0 -0
  173. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/services/models.py +0 -0
  174. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/services/persistence_service.py +0 -0
  175. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/services/table_name_policy.py +0 -0
  176. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/__init__.py +0 -0
  177. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/connection.py +0 -0
  178. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/exceptions/__init__.py +0 -0
  179. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/exceptions/exceptions.py +0 -0
  180. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/migrate.py +0 -0
  181. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/migrations/V01__init.sql +0 -0
  182. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/migrations/V02__add_keyword_index_text.sql +0 -0
  183. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/migrations/V03__add_indexed_datasource_table.py +0 -0
  184. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/migrations/V03__add_indexed_datasource_table.sql +0 -0
  185. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/models.py +0 -0
  186. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/repositories/__init__.py +0 -0
  187. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/repositories/factories.py +0 -0
  188. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/storage/transaction.py +0 -0
  189. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/system/__init__.py +0 -0
  190. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/system/properties.py +0 -0
  191. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/templating/__init__.py +0 -0
  192. {databao_context_engine-0.7.0 → databao_context_engine-0.7.1.dev1}/src/databao_context_engine/templating/renderer.py +0 -0
@@ -1,10 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: databao-context-engine
3
- Version: 0.7.0
3
+ Version: 0.7.1.dev1
4
4
  Summary: Semantic context for your LLMs — generated automatically
5
5
  License-Expression: Apache-2.0 AND LicenseRef-Additional-Terms
6
6
  License-File: LICENSE.md
7
- Requires-Dist: click>=8.3.0
8
7
  Requires-Dist: duckdb>=1.4.3
9
8
  Requires-Dist: pyyaml>=6.0.3
10
9
  Requires-Dist: requests>=2.32.5
@@ -23,7 +22,7 @@ Requires-Dist: docling>=2.70.0 ; extra == 'pdf'
23
22
  Requires-Dist: asyncpg>=0.31.0 ; extra == 'postgresql'
24
23
  Requires-Dist: snowflake-connector-python>=4.2.0 ; extra == 'snowflake'
25
24
  Requires-Python: >=3.11
26
- Project-URL: Homepage, https://databao.app/
25
+ Project-URL: Homepage, https://jetbrains.com/databao/
27
26
  Project-URL: Source, https://github.com/JetBrains/databao-context-engine
28
27
  Provides-Extra: athena
29
28
  Provides-Extra: bigquery
@@ -48,10 +47,10 @@ Description-Content-Type: text/markdown
48
47
  No more copying schemas. No manual documentation. Just accurate answers.
49
48
  </p>
50
49
  <p align="center">
51
- <a href="https://databao.app">Website</a> •
50
+ <a href="https://jetbrains.com/databao">Website</a> •
52
51
  <a href="#quickstart">Quickstart</a> •
53
- <a href="#supported-data-sources">Data Sources</a> •
54
- <a href="#contributing">Contributing</a>
52
+ <a href="https://docs.databao.app">Docs</a> •
53
+ <a href="https://discord.gg/hEUqCcWdVh">Discord</a>
55
54
  </p>
56
55
 
57
56
  ---
@@ -124,22 +123,26 @@ pip install databao-context-engine
124
123
  ### 1. Create a domain
125
124
 
126
125
  ```python
127
- # Initialize the domain in an existing directory
126
+ # Initialize the domain in a temporary directory
128
127
  from databao_context_engine import init_dce_domain
128
+ from pathlib import Path
129
+ import tempfile
129
130
 
130
131
  domain_manager = init_dce_domain(Path(tempfile.mkdtemp()))
131
132
 
132
133
  # Or use an existing project
133
134
  from databao_context_engine import DatabaoContextDomainManager
134
135
 
135
- domain_manager = DatabaoContextDomainManager(domain_dir=Path("path/to/project"))
136
+ domain_manager = DatabaoContextDomainManager(domain_dir=Path("domain_dir"))
136
137
  ```
137
138
 
138
139
  ### 2. Configure data sources
139
140
 
140
141
  ```python
141
142
  from databao_context_engine import (
143
+ CheckDatasourceConnectionResult,
142
144
  DatasourceConnectionStatus,
145
+ DatasourceId,
143
146
  DatasourceType,
144
147
  )
145
148
 
@@ -153,11 +156,10 @@ postgres_datasource_id = domain_manager.create_datasource_config(
153
156
  ).datasource.id
154
157
 
155
158
  # Check the connection to the datasource is valid
156
- check_result = domain_manager.check_datasource_connection()
159
+ check_result: dict[DatasourceId, CheckDatasourceConnectionResult] = domain_manager.check_datasource_connection()
157
160
 
158
161
  assert len(check_result) == 1
159
- assert check_result[0].datasource_id == postgres_datasource_id
160
- assert check_result[0].connection_status == DatasourceConnectionStatus.VALID
162
+ assert check_result[postgres_datasource_id].connection_status == DatasourceConnectionStatus.VALID
161
163
  ```
162
164
 
163
165
  ### 3. Build context
@@ -236,6 +238,7 @@ Apache 2.0 — use it however you want. See the [LICENSE](LICENSE.md) file for d
236
238
  </p>
237
239
 
238
240
  <p align="center">
239
- <a href="https://databao.app">Website</a> •
241
+ <a href="https://jetbrains.com/databao">Website</a> •
242
+ <a href="https://docs.databao.app">Docs</a> •
240
243
  <a href="https://discord.gg/hEUqCcWdVh">Discord</a>
241
244
  </p>
@@ -11,10 +11,10 @@
11
11
  No more copying schemas. No manual documentation. Just accurate answers.
12
12
  </p>
13
13
  <p align="center">
14
- <a href="https://databao.app">Website</a> •
14
+ <a href="https://jetbrains.com/databao">Website</a> •
15
15
  <a href="#quickstart">Quickstart</a> •
16
- <a href="#supported-data-sources">Data Sources</a> •
17
- <a href="#contributing">Contributing</a>
16
+ <a href="https://docs.databao.app">Docs</a> •
17
+ <a href="https://discord.gg/hEUqCcWdVh">Discord</a>
18
18
  </p>
19
19
 
20
20
  ---
@@ -87,22 +87,26 @@ pip install databao-context-engine
87
87
  ### 1. Create a domain
88
88
 
89
89
  ```python
90
- # Initialize the domain in an existing directory
90
+ # Initialize the domain in a temporary directory
91
91
  from databao_context_engine import init_dce_domain
92
+ from pathlib import Path
93
+ import tempfile
92
94
 
93
95
  domain_manager = init_dce_domain(Path(tempfile.mkdtemp()))
94
96
 
95
97
  # Or use an existing project
96
98
  from databao_context_engine import DatabaoContextDomainManager
97
99
 
98
- domain_manager = DatabaoContextDomainManager(domain_dir=Path("path/to/project"))
100
+ domain_manager = DatabaoContextDomainManager(domain_dir=Path("domain_dir"))
99
101
  ```
100
102
 
101
103
  ### 2. Configure data sources
102
104
 
103
105
  ```python
104
106
  from databao_context_engine import (
107
+ CheckDatasourceConnectionResult,
105
108
  DatasourceConnectionStatus,
109
+ DatasourceId,
106
110
  DatasourceType,
107
111
  )
108
112
 
@@ -116,11 +120,10 @@ postgres_datasource_id = domain_manager.create_datasource_config(
116
120
  ).datasource.id
117
121
 
118
122
  # Check the connection to the datasource is valid
119
- check_result = domain_manager.check_datasource_connection()
123
+ check_result: dict[DatasourceId, CheckDatasourceConnectionResult] = domain_manager.check_datasource_connection()
120
124
 
121
125
  assert len(check_result) == 1
122
- assert check_result[0].datasource_id == postgres_datasource_id
123
- assert check_result[0].connection_status == DatasourceConnectionStatus.VALID
126
+ assert check_result[postgres_datasource_id].connection_status == DatasourceConnectionStatus.VALID
124
127
  ```
125
128
 
126
129
  ### 3. Build context
@@ -199,6 +202,7 @@ Apache 2.0 — use it however you want. See the [LICENSE](LICENSE.md) file for d
199
202
  </p>
200
203
 
201
204
  <p align="center">
202
- <a href="https://databao.app">Website</a> •
205
+ <a href="https://jetbrains.com/databao">Website</a> •
206
+ <a href="https://docs.databao.app">Docs</a> •
203
207
  <a href="https://discord.gg/hEUqCcWdVh">Discord</a>
204
208
  </p>
@@ -1,13 +1,12 @@
1
1
  [project]
2
2
  name = "databao-context-engine"
3
- version = "0.7.0"
3
+ version = "0.7.1.dev1"
4
4
  description = "Semantic context for your LLMs — generated automatically"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
7
7
  license = "Apache-2.0 AND LicenseRef-Additional-Terms"
8
8
  license-files = ["LICENSE.md"]
9
9
  dependencies = [
10
- "click>=8.3.0",
11
10
  "duckdb>=1.4.3",
12
11
  "pyyaml>=6.0.3",
13
12
  "requests>=2.32.5",
@@ -24,7 +23,7 @@ default-optional-dependency-keys = [
24
23
  ]
25
24
 
26
25
  [project.urls]
27
- Homepage = "https://databao.app/"
26
+ Homepage = "https://jetbrains.com/databao/"
28
27
  Source = "https://github.com/JetBrains/databao-context-engine"
29
28
 
30
29
  [project.optional-dependencies]
@@ -59,6 +58,7 @@ build-backend = "uv_build"
59
58
 
60
59
  [dependency-groups]
61
60
  dev = [
61
+ "click>=8.3.0",
62
62
  "mypy>=1.18.2",
63
63
  "pre-commit>=4.5.1",
64
64
  "pytest>=9.0.2",
@@ -41,6 +41,11 @@ from databao_context_engine.plugins.databases.clickhouse.config_file import (
41
41
  ClickhouseConfigFile,
42
42
  ClickhouseConnectionProperties,
43
43
  )
44
+ from databao_context_engine.plugins.databases.database_context_explorer import (
45
+ DatabaseSchemaLite,
46
+ DatabaseTableDetails,
47
+ DatabaseTableLite,
48
+ )
44
49
  from databao_context_engine.plugins.databases.duckdb.config_file import DuckDBConfigFile, DuckDBConnectionConfig
45
50
  from databao_context_engine.plugins.databases.mssql.config_file import MSSQLConfigFile, MSSQLConnectionProperties
46
51
  from databao_context_engine.plugins.databases.mysql.config_file import MySQLConfigFile, MySQLConnectionProperties
@@ -138,4 +143,7 @@ __all__ = [
138
143
  "DbtContextFilterStructuredRule",
139
144
  "DbtContextFilterRule",
140
145
  "ParquetConfigFile",
146
+ "DatabaseSchemaLite",
147
+ "DatabaseTableLite",
148
+ "DatabaseTableDetails",
141
149
  ]
@@ -18,12 +18,11 @@ from databao_context_engine.build_sources.types import (
18
18
  from databao_context_engine.datasources.datasource_context import (
19
19
  DatasourceContext,
20
20
  hash_context_file,
21
- read_datasource_type_from_context,
22
21
  )
23
22
  from databao_context_engine.datasources.datasource_discovery import discover_datasources, prepare_source
24
- from databao_context_engine.datasources.types import PreparedConfig, PreparedDatasource
23
+ from databao_context_engine.datasources.types import DatasourceId, PreparedConfig, PreparedDatasource
25
24
  from databao_context_engine.pluginlib.build_plugin import DatasourceType
26
- from databao_context_engine.plugins.plugin_loader import DatabaoContextPluginLoader
25
+ from databao_context_engine.plugins.plugin_loader import NoPluginFoundForDatasource
27
26
  from databao_context_engine.progress.progress import ProgressCallback, ProgressEmitter, ProgressStep
28
27
  from databao_context_engine.project.layout import ProjectLayout
29
28
 
@@ -44,6 +43,21 @@ def _build_step_plan(*, should_index: bool, should_enrich_context: bool) -> tupl
44
43
  return tuple(steps)
45
44
 
46
45
 
46
+ def _emit_all_build_step_as_completed(
47
+ *,
48
+ progress: ProgressCallback | None,
49
+ datasource_id: str | DatasourceId,
50
+ should_index: bool,
51
+ should_enrich_context: bool,
52
+ ) -> None:
53
+ emitter = ProgressEmitter(progress)
54
+ for step in _build_step_plan(should_index=should_index, should_enrich_context=should_enrich_context):
55
+ emitter.datasource_step_completed(
56
+ datasource_id=str(datasource_id),
57
+ step=step,
58
+ )
59
+
60
+
47
61
  @perf.perf_run(
48
62
  operation="build",
49
63
  attrs=lambda *, should_index, should_enrich_context, **_: {
@@ -55,8 +69,8 @@ def _build_step_plan(*, should_index: bool, should_enrich_context: bool) -> tupl
55
69
  def build(
56
70
  *,
57
71
  project_layout: ProjectLayout,
58
- plugin_loader: DatabaoContextPluginLoader,
59
72
  build_service: BuildService,
73
+ datasource_ids: list[DatasourceId] | None,
60
74
  should_index: bool,
61
75
  should_enrich_context: bool,
62
76
  progress: ProgressCallback | None = None,
@@ -73,7 +87,8 @@ def build(
73
87
  Returns:
74
88
  A list of per-datasource build results.
75
89
  """
76
- datasource_ids = discover_datasources(project_layout)
90
+ if not datasource_ids:
91
+ datasource_ids = discover_datasources(project_layout)
77
92
 
78
93
  emitter = ProgressEmitter(progress)
79
94
 
@@ -98,7 +113,6 @@ def build(
98
113
  try:
99
114
  result = _build_one_datasource(
100
115
  project_layout=project_layout,
101
- plugin_loader=plugin_loader,
102
116
  build_service=build_service,
103
117
  datasource_id=datasource_id,
104
118
  should_index=should_index,
@@ -151,7 +165,6 @@ def build(
151
165
  def _build_one_datasource(
152
166
  *,
153
167
  project_layout: ProjectLayout,
154
- plugin_loader: DatabaoContextPluginLoader,
155
168
  build_service: BuildService,
156
169
  datasource_id,
157
170
  should_index: bool,
@@ -169,15 +182,6 @@ def _build_one_datasource(
169
182
  f'Found datasource of type "{prepared_source.datasource_type.full_type}" with name {prepared_source.datasource_id.datasource_path}'
170
183
  )
171
184
 
172
- plugin = plugin_loader.get_plugin_for_datasource_type(prepared_source.datasource_type)
173
- if plugin is None:
174
- logger.warning(
175
- "No plugin for '%s' (datasource=%s) — skipping.",
176
- prepared_source.datasource_type.full_type,
177
- prepared_source.datasource_id.relative_path_to_config_file(),
178
- )
179
- return BuildDatasourceResult(datasource_id=datasource_id, status=DatasourceStatus.SKIPPED)
180
-
181
185
  ProgressEmitter(progress).datasource_step_plan_set(
182
186
  datasource_id=str(datasource_id),
183
187
  step_plan=_build_step_plan(
@@ -186,33 +190,48 @@ def _build_one_datasource(
186
190
  ),
187
191
  )
188
192
 
189
- result = build_service.build_context(
190
- prepared_source=prepared_source,
191
- plugin=plugin,
192
- progress=progress,
193
- )
193
+ try:
194
+ result = build_service.build_context(
195
+ prepared_source=prepared_source,
196
+ progress=progress,
197
+ )
194
198
 
195
- if should_enrich_context:
196
- result = build_service.enrich_built_context(result, plugin, progress)
199
+ if should_enrich_context:
200
+ result = build_service.enrich_built_context(built_context=result, progress=progress)
197
201
 
198
- output_dir = project_layout.output_dir
199
- context_file_path = export_build_result(output_dir, result)
202
+ output_dir = project_layout.output_dir
203
+ context_file_path = export_build_result(output_dir, result)
200
204
 
201
- perf.set_attribute("context_size_bytes", context_file_path.stat().st_size)
205
+ perf.set_attribute("context_size_bytes", context_file_path.stat().st_size)
202
206
 
203
- if should_index:
204
- context_hash = hash_context_file(datasource_id=prepared_source.datasource_id, context_path=context_file_path)
205
- build_service.index_built_context(
206
- built_context=result, plugin=plugin, context_hash=context_hash, progress=progress
207
+ if should_index:
208
+ context_hash = hash_context_file(
209
+ datasource_id=prepared_source.datasource_id, context_path=context_file_path
210
+ )
211
+ build_service.index_built_context(built_context=result, context_hash=context_hash, progress=progress)
212
+
213
+ return BuildDatasourceResult(
214
+ datasource_id=datasource_id,
215
+ status=DatasourceStatus.OK,
216
+ datasource_type=DatasourceType(full_type=result.datasource_type),
217
+ context_built_at=datetime.now(),
218
+ context_file_path=context_file_path,
207
219
  )
208
-
209
- return BuildDatasourceResult(
210
- datasource_id=datasource_id,
211
- status=DatasourceStatus.OK,
212
- datasource_type=DatasourceType(full_type=result.datasource_type),
213
- context_built_at=datetime.now(),
214
- context_file_path=context_file_path,
215
- )
220
+ except NoPluginFoundForDatasource as e:
221
+ logger.warning(
222
+ "No plugin for '%s' (datasource=%s) — skipping.",
223
+ e.datasource_type.full_type,
224
+ prepared_source.datasource_id.relative_path_to_config_file(),
225
+ )
226
+ # Since the plugin was not found, no build steps were emitted but the plan was set:
227
+ # we need to emit all steps as completed
228
+ _emit_all_build_step_as_completed(
229
+ progress=progress,
230
+ datasource_id=datasource_id,
231
+ should_index=should_index,
232
+ should_enrich_context=should_enrich_context,
233
+ )
234
+ return BuildDatasourceResult(datasource_id=datasource_id, status=DatasourceStatus.SKIPPED)
216
235
 
217
236
 
218
237
  def _is_datasource_enabled(prepared_source: PreparedDatasource) -> bool:
@@ -233,7 +252,6 @@ def _is_datasource_enabled(prepared_source: PreparedDatasource) -> bool:
233
252
  def run_enrich_context(
234
253
  *,
235
254
  project_layout: ProjectLayout,
236
- plugin_loader: DatabaoContextPluginLoader,
237
255
  build_service: BuildService,
238
256
  contexts: list[DatasourceContext],
239
257
  should_index: bool,
@@ -250,7 +268,6 @@ def run_enrich_context(
250
268
  result = _enrich_one_context(
251
269
  project_layout=project_layout,
252
270
  context=context,
253
- plugin_loader=plugin_loader,
254
271
  build_service=build_service,
255
272
  should_index=should_index,
256
273
  )
@@ -286,46 +303,40 @@ def _enrich_one_context(
286
303
  *,
287
304
  project_layout: ProjectLayout,
288
305
  context: DatasourceContext,
289
- plugin_loader: DatabaoContextPluginLoader,
290
306
  build_service: BuildService,
291
307
  should_index: bool,
292
308
  ) -> EnrichContextResult:
293
309
  perf.set_attribute("context_size_bytes", len(context.context.encode("utf-8")))
294
310
 
295
- datasource_type = read_datasource_type_from_context(context)
296
- perf.set_attribute("datasource_type", getattr(datasource_type, "full_type", datasource_type))
311
+ try:
312
+ enriched_context = build_service.enrich_datasource_context(context=context)
297
313
 
298
- plugin = plugin_loader.get_plugin_for_datasource_type(datasource_type)
299
- if plugin is None:
314
+ output_dir = project_layout.output_dir
315
+ context_file_path = export_build_result(output_dir, enriched_context)
316
+
317
+ if should_index:
318
+ context_hash = hash_context_file(datasource_id=context.datasource_id, context_path=context_file_path)
319
+ build_service.index_built_context(built_context=enriched_context, context_hash=context_hash)
320
+
321
+ return EnrichContextResult(
322
+ datasource_id=context.datasource_id,
323
+ status=DatasourceStatus.OK,
324
+ context_file_path=context_file_path,
325
+ )
326
+ except NoPluginFoundForDatasource as e:
300
327
  logger.warning(
301
328
  "No plugin for datasource type '%s' — skipping context enrichment for datasource %s.",
302
- getattr(datasource_type, "full_type", datasource_type),
329
+ e.datasource_type.full_type,
303
330
  context.datasource_id,
304
331
  )
305
332
  return EnrichContextResult(datasource_id=context.datasource_id, status=DatasourceStatus.SKIPPED)
306
333
 
307
- enriched_context = build_service.enrich_datasource_context(context=context, plugin=plugin)
308
-
309
- output_dir = project_layout.output_dir
310
- context_file_path = export_build_result(output_dir, enriched_context)
311
-
312
- if should_index:
313
- context_hash = hash_context_file(datasource_id=context.datasource_id, context_path=context_file_path)
314
- build_service.index_built_context(built_context=enriched_context, plugin=plugin, context_hash=context_hash)
315
-
316
- return EnrichContextResult(
317
- datasource_id=context.datasource_id,
318
- status=DatasourceStatus.OK,
319
- context_file_path=context_file_path,
320
- )
321
-
322
334
 
323
335
  @perf.perf_run(operation="index")
324
336
  @perf.perf_span("index.total")
325
337
  def run_indexing(
326
338
  *,
327
339
  project_layout: ProjectLayout,
328
- plugin_loader: DatabaoContextPluginLoader,
329
340
  build_service: BuildService,
330
341
  contexts: list[DatasourceContext],
331
342
  progress: ProgressCallback | None = None,
@@ -356,9 +367,7 @@ def run_indexing(
356
367
  try:
357
368
  logger.info(f"Indexing datasource {context.datasource_id}")
358
369
 
359
- result = _index_one_context(
360
- context=context, plugin_loader=plugin_loader, build_service=build_service, progress=progress
361
- )
370
+ result = _index_one_context(context=context, build_service=build_service, progress=progress)
362
371
 
363
372
  results.append(result)
364
373
  if result.status == DatasourceStatus.OK:
@@ -406,28 +415,25 @@ def run_indexing(
406
415
  def _index_one_context(
407
416
  *,
408
417
  context: DatasourceContext,
409
- plugin_loader: DatabaoContextPluginLoader,
410
418
  build_service: BuildService,
411
419
  progress: ProgressCallback | None = None,
412
420
  ) -> IndexDatasourceResult:
413
421
  perf.set_attribute("context_size_bytes", len(context.context.encode("utf-8")))
414
422
 
415
- datasource_type = read_datasource_type_from_context(context)
416
- perf.set_attribute("datasource_type", getattr(datasource_type, "full_type", datasource_type))
417
-
418
- plugin = plugin_loader.get_plugin_for_datasource_type(datasource_type)
419
- if plugin is None:
423
+ ProgressEmitter(progress).datasource_step_plan_set(
424
+ datasource_id=str(context.datasource_id),
425
+ step_plan=BuildService.index_step_plan(),
426
+ )
427
+ try:
428
+ build_service.index_datasource_context(context=context, progress=progress)
429
+ return IndexDatasourceResult(datasource_id=context.datasource_id, status=DatasourceStatus.OK)
430
+ except NoPluginFoundForDatasource as e:
420
431
  logger.warning(
421
432
  "No plugin for datasource type '%s' — skipping indexing for %s.",
422
- getattr(datasource_type, "full_type", datasource_type),
433
+ e.datasource_type.full_type,
423
434
  context.datasource_id,
424
435
  )
436
+ # Since the plugin was not found, no index steps were emitted but the plan was set:
437
+ # we need to emit all steps as completed
438
+ BuildService.emit_all_index_step_as_completed(progress=progress, datasource_id=context.datasource_id)
425
439
  return IndexDatasourceResult(datasource_id=context.datasource_id, status=DatasourceStatus.SKIPPED)
426
-
427
- ProgressEmitter(progress).datasource_step_plan_set(
428
- datasource_id=str(context.datasource_id),
429
- step_plan=BuildService.index_step_plan(),
430
- )
431
-
432
- build_service.index_datasource_context(context=context, plugin=plugin, progress=progress)
433
- return IndexDatasourceResult(datasource_id=context.datasource_id, status=DatasourceStatus.OK)