databao-context-engine 0.1.2__py3-none-any.whl → 0.1.4.dev1__py3-none-any.whl

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 (90) hide show
  1. databao_context_engine/__init__.py +18 -6
  2. databao_context_engine/build_sources/__init__.py +4 -0
  3. databao_context_engine/build_sources/{internal/build_runner.py → build_runner.py} +27 -23
  4. databao_context_engine/build_sources/build_service.py +53 -0
  5. databao_context_engine/build_sources/build_wiring.py +84 -0
  6. databao_context_engine/build_sources/export_results.py +41 -0
  7. databao_context_engine/build_sources/{internal/plugin_execution.py → plugin_execution.py} +3 -7
  8. databao_context_engine/cli/add_datasource_config.py +41 -15
  9. databao_context_engine/cli/commands.py +12 -43
  10. databao_context_engine/cli/info.py +3 -2
  11. databao_context_engine/databao_context_engine.py +137 -0
  12. databao_context_engine/databao_context_project_manager.py +96 -6
  13. databao_context_engine/datasources/add_config.py +34 -0
  14. databao_context_engine/{datasource_config → datasources}/check_config.py +18 -7
  15. databao_context_engine/datasources/datasource_context.py +93 -0
  16. databao_context_engine/{project → datasources}/datasource_discovery.py +17 -16
  17. databao_context_engine/{project → datasources}/types.py +64 -15
  18. databao_context_engine/init_project.py +25 -3
  19. databao_context_engine/introspection/property_extract.py +67 -53
  20. databao_context_engine/llm/errors.py +2 -8
  21. databao_context_engine/llm/install.py +13 -20
  22. databao_context_engine/llm/service.py +1 -3
  23. databao_context_engine/mcp/mcp_runner.py +4 -2
  24. databao_context_engine/mcp/mcp_server.py +10 -10
  25. databao_context_engine/plugin_loader.py +111 -0
  26. databao_context_engine/pluginlib/build_plugin.py +25 -9
  27. databao_context_engine/pluginlib/config.py +16 -2
  28. databao_context_engine/plugins/base_db_plugin.py +5 -2
  29. databao_context_engine/plugins/databases/athena_introspector.py +85 -22
  30. databao_context_engine/plugins/databases/base_introspector.py +5 -3
  31. databao_context_engine/plugins/databases/clickhouse_introspector.py +22 -11
  32. databao_context_engine/plugins/databases/duckdb_introspector.py +3 -5
  33. databao_context_engine/plugins/databases/introspection_model_builder.py +1 -1
  34. databao_context_engine/plugins/databases/introspection_scope.py +11 -9
  35. databao_context_engine/plugins/databases/introspection_scope_matcher.py +2 -5
  36. databao_context_engine/plugins/databases/mssql_introspector.py +26 -17
  37. databao_context_engine/plugins/databases/mysql_introspector.py +23 -12
  38. databao_context_engine/plugins/databases/postgresql_introspector.py +2 -2
  39. databao_context_engine/plugins/databases/snowflake_introspector.py +43 -10
  40. databao_context_engine/plugins/duckdb_tools.py +18 -0
  41. databao_context_engine/plugins/plugin_loader.py +43 -42
  42. databao_context_engine/plugins/resources/parquet_introspector.py +7 -19
  43. databao_context_engine/project/info.py +34 -2
  44. databao_context_engine/project/init_project.py +16 -7
  45. databao_context_engine/project/layout.py +3 -3
  46. databao_context_engine/retrieve_embeddings/__init__.py +3 -0
  47. databao_context_engine/retrieve_embeddings/{internal/export_results.py → export_results.py} +2 -2
  48. databao_context_engine/retrieve_embeddings/{internal/retrieve_runner.py → retrieve_runner.py} +5 -9
  49. databao_context_engine/retrieve_embeddings/{internal/retrieve_service.py → retrieve_service.py} +3 -17
  50. databao_context_engine/retrieve_embeddings/retrieve_wiring.py +49 -0
  51. databao_context_engine/{serialisation → serialization}/yaml.py +1 -1
  52. databao_context_engine/services/chunk_embedding_service.py +23 -11
  53. databao_context_engine/services/factories.py +1 -46
  54. databao_context_engine/services/persistence_service.py +11 -11
  55. databao_context_engine/storage/connection.py +11 -7
  56. databao_context_engine/storage/exceptions/exceptions.py +2 -2
  57. databao_context_engine/storage/migrate.py +2 -4
  58. databao_context_engine/storage/migrations/V01__init.sql +6 -31
  59. databao_context_engine/storage/models.py +2 -23
  60. databao_context_engine/storage/repositories/chunk_repository.py +16 -12
  61. databao_context_engine/storage/repositories/factories.py +1 -12
  62. databao_context_engine/storage/repositories/vector_search_repository.py +8 -13
  63. databao_context_engine/system/properties.py +4 -2
  64. databao_context_engine-0.1.4.dev1.dist-info/METADATA +75 -0
  65. databao_context_engine-0.1.4.dev1.dist-info/RECORD +125 -0
  66. {databao_context_engine-0.1.2.dist-info → databao_context_engine-0.1.4.dev1.dist-info}/WHEEL +1 -1
  67. databao_context_engine/build_sources/internal/build_service.py +0 -77
  68. databao_context_engine/build_sources/internal/build_wiring.py +0 -52
  69. databao_context_engine/build_sources/internal/export_results.py +0 -43
  70. databao_context_engine/build_sources/public/api.py +0 -4
  71. databao_context_engine/databao_engine.py +0 -85
  72. databao_context_engine/datasource_config/__init__.py +0 -0
  73. databao_context_engine/datasource_config/add_config.py +0 -50
  74. databao_context_engine/datasource_config/datasource_context.py +0 -60
  75. databao_context_engine/mcp/all_results_tool.py +0 -5
  76. databao_context_engine/mcp/retrieve_tool.py +0 -22
  77. databao_context_engine/project/runs.py +0 -39
  78. databao_context_engine/retrieve_embeddings/internal/__init__.py +0 -0
  79. databao_context_engine/retrieve_embeddings/internal/retrieve_wiring.py +0 -29
  80. databao_context_engine/retrieve_embeddings/public/__init__.py +0 -0
  81. databao_context_engine/retrieve_embeddings/public/api.py +0 -3
  82. databao_context_engine/serialisation/__init__.py +0 -0
  83. databao_context_engine/services/run_name_policy.py +0 -8
  84. databao_context_engine/storage/repositories/datasource_run_repository.py +0 -136
  85. databao_context_engine/storage/repositories/run_repository.py +0 -157
  86. databao_context_engine-0.1.2.dist-info/METADATA +0 -187
  87. databao_context_engine-0.1.2.dist-info/RECORD +0 -135
  88. /databao_context_engine/{build_sources/internal → datasources}/__init__.py +0 -0
  89. /databao_context_engine/{build_sources/public → serialization}/__init__.py +0 -0
  90. {databao_context_engine-0.1.2.dist-info → databao_context_engine-0.1.4.dev1.dist-info}/entry_points.txt +0 -0
@@ -1,136 +0,0 @@
1
- from typing import Any, Optional, Tuple
2
-
3
- import duckdb
4
- from _duckdb import ConstraintException
5
-
6
- from databao_context_engine.storage.exceptions.exceptions import IntegrityError
7
- from databao_context_engine.storage.models import DatasourceRunDTO
8
-
9
-
10
- class DatasourceRunRepository:
11
- def __init__(self, conn: duckdb.DuckDBPyConnection):
12
- self._conn = conn
13
-
14
- def create(
15
- self,
16
- *,
17
- run_id: int,
18
- plugin: str,
19
- full_type: str,
20
- source_id: str,
21
- storage_directory: str,
22
- ) -> DatasourceRunDTO:
23
- try:
24
- row = self._conn.execute(
25
- """
26
- INSERT INTO
27
- datasource_run(run_id, plugin, full_type, source_id, storage_directory)
28
- VALUES
29
- (?, ?, ?, ?, ?)
30
- RETURNING
31
- *
32
- """,
33
- [run_id, plugin, full_type, source_id, storage_directory],
34
- ).fetchone()
35
- if row is None:
36
- raise RuntimeError("datasource_run creation returned no object")
37
- return self._row_to_dto(row)
38
- except ConstraintException as e:
39
- raise IntegrityError from e
40
-
41
- def get(self, datasource_run_id: int) -> Optional[DatasourceRunDTO]:
42
- row = self._conn.execute(
43
- """
44
- SELECT
45
- *
46
- FROM
47
- datasource_run
48
- WHERE
49
- datasource_run_id = ?
50
- """,
51
- [datasource_run_id],
52
- ).fetchone()
53
- return self._row_to_dto(row) if row else None
54
-
55
- def update(
56
- self,
57
- datasource_run_id: int,
58
- *,
59
- plugin: Optional[str] = None,
60
- full_type: Optional[str] = None,
61
- source_id: Optional[str] = None,
62
- storage_directory: Optional[str] = None,
63
- ) -> Optional[DatasourceRunDTO]:
64
- sets: list[Any] = []
65
- params: list[Any] = []
66
-
67
- if plugin is not None:
68
- sets.append("plugin = ?")
69
- params.append(plugin)
70
- if full_type is not None:
71
- sets.append("full_type = ?")
72
- params.append(full_type)
73
- if source_id is not None:
74
- sets.append("source_id = ?")
75
- params.append(source_id)
76
- if storage_directory is not None:
77
- sets.append("storage_directory = ?")
78
- params.append(storage_directory)
79
-
80
- if not sets:
81
- return self.get(datasource_run_id)
82
-
83
- params.append(datasource_run_id)
84
- self._conn.execute(
85
- f"""
86
- UPDATE
87
- datasource_run
88
- SET
89
- {", ".join(sets)}
90
- WHERE
91
- datasource_run_id = ?
92
- """,
93
- params,
94
- )
95
-
96
- return self.get(datasource_run_id)
97
-
98
- def delete(self, datasource_run_id: int) -> int:
99
- row = self._conn.execute(
100
- """
101
- DELETE FROM
102
- datasource_run
103
- WHERE
104
- datasource_run_id = ?
105
- RETURNING
106
- datasource_run_id
107
- """,
108
- [datasource_run_id],
109
- ).fetchone()
110
- return 1 if row else 0
111
-
112
- def list(self) -> list[DatasourceRunDTO]:
113
- rows = self._conn.execute(
114
- """
115
- SELECT
116
- *
117
- FROM
118
- datasource_run
119
- ORDER BY
120
- datasource_run_id DESC
121
- """
122
- ).fetchall()
123
- return [self._row_to_dto(r) for r in rows]
124
-
125
- @staticmethod
126
- def _row_to_dto(row: Tuple) -> DatasourceRunDTO:
127
- datasource_run_id, run_id, plugin, source_id, storage_directory, created_at, full_type = row
128
- return DatasourceRunDTO(
129
- datasource_run_id=int(datasource_run_id),
130
- run_id=int(run_id),
131
- plugin=str(plugin),
132
- full_type=str(full_type),
133
- source_id=str(source_id),
134
- storage_directory=str(storage_directory),
135
- created_at=created_at,
136
- )
@@ -1,157 +0,0 @@
1
- from datetime import datetime
2
- from typing import Any, Optional
3
-
4
- import duckdb
5
-
6
- from databao_context_engine.services.run_name_policy import RunNamePolicy
7
- from databao_context_engine.storage.models import RunDTO
8
-
9
-
10
- class RunRepository:
11
- def __init__(self, conn: duckdb.DuckDBPyConnection, run_name_policy: RunNamePolicy):
12
- self._conn = conn
13
- self._run_name_policy = run_name_policy
14
-
15
- def create(
16
- self, *, project_id: str, dce_version: Optional[str] = None, started_at: datetime | None = None
17
- ) -> RunDTO:
18
- if started_at is None:
19
- started_at = datetime.now()
20
- run_name = self._run_name_policy.build(run_started_at=started_at)
21
-
22
- row = self._conn.execute(
23
- """
24
- INSERT INTO
25
- run (project_id, nemory_version, started_at, run_name)
26
- VALUES
27
- (?, ?, ?, ?)
28
- RETURNING
29
- *
30
- """,
31
- [project_id, dce_version, started_at, run_name],
32
- ).fetchone()
33
- if row is None:
34
- raise RuntimeError("Run creation returned no object")
35
- return self._row_to_dto(row)
36
-
37
- def get(self, run_id: int) -> Optional[RunDTO]:
38
- row = self._conn.execute(
39
- """
40
- SELECT
41
- *
42
- FROM
43
- run
44
- WHERE
45
- run_id = ?
46
- """,
47
- [run_id],
48
- ).fetchone()
49
- return self._row_to_dto(row) if row else None
50
-
51
- def get_by_run_name(self, *, project_id: str, run_name: str) -> RunDTO | None:
52
- row = self._conn.execute(
53
- """
54
- SELECT
55
- *
56
- FROM
57
- run
58
- WHERE
59
- run.project_id = ? AND run_name = ?
60
- """,
61
- [project_id, run_name],
62
- ).fetchone()
63
- return self._row_to_dto(row) if row else None
64
-
65
- def get_latest_run_for_project(self, project_id: str) -> RunDTO | None:
66
- row = self._conn.execute(
67
- """
68
- SELECT
69
- *
70
- FROM
71
- run
72
- WHERE
73
- run.project_id = ?
74
- ORDER BY run.started_at DESC
75
- LIMIT 1
76
- """,
77
- [project_id],
78
- ).fetchone()
79
- return self._row_to_dto(row) if row else None
80
-
81
- def update(
82
- self,
83
- run_id: int,
84
- *,
85
- project_id: Optional[str] = None,
86
- ended_at: Optional[datetime] = None,
87
- dce_version: Optional[str] = None,
88
- ) -> Optional[RunDTO]:
89
- sets: list[Any] = []
90
- params: list[Any] = []
91
-
92
- if project_id is not None:
93
- sets.append("project_id = ?")
94
- params.append(project_id)
95
- if ended_at is not None:
96
- sets.append("ended_at = ?")
97
- params.append(ended_at)
98
- if dce_version is not None:
99
- sets.append("nemory_version = ?")
100
- params.append(dce_version)
101
-
102
- if not sets:
103
- return self.get(run_id)
104
-
105
- params.append(run_id)
106
- self._conn.execute(
107
- f"""
108
- UPDATE
109
- run
110
- SET
111
- {", ".join(sets)}
112
- WHERE
113
- run_id = ?
114
- """,
115
- params,
116
- )
117
-
118
- return self.get(run_id)
119
-
120
- def delete(self, run_id: int) -> int:
121
- row = self._conn.execute(
122
- """
123
- DELETE FROM
124
- run
125
- WHERE
126
- run_id = ?
127
- RETURNING
128
- run_id
129
- """,
130
- [run_id],
131
- ).fetchone()
132
- return 1 if row else 0
133
-
134
- def list(self) -> list[RunDTO]:
135
- rows = self._conn.execute(
136
- """
137
- SELECT
138
- *
139
- FROM
140
- run
141
- ORDER BY
142
- run_id DESC
143
- """
144
- ).fetchall()
145
- return [self._row_to_dto(r) for r in rows]
146
-
147
- @staticmethod
148
- def _row_to_dto(row: tuple) -> RunDTO:
149
- run_id, project_id, started_at, ended_at, dce_version, run_name = row
150
- return RunDTO(
151
- run_id=int(run_id),
152
- run_name=run_name,
153
- project_id=str(project_id),
154
- started_at=started_at,
155
- ended_at=ended_at,
156
- nemory_version=dce_version,
157
- )
@@ -1,187 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: databao-context-engine
3
- Version: 0.1.2
4
- Summary: Add your description here
5
- Requires-Dist: click>=8.3.0
6
- Requires-Dist: duckdb>=1.4.3
7
- Requires-Dist: pyyaml>=6.0.3
8
- Requires-Dist: requests>=2.32.5
9
- Requires-Dist: pymysql>=1.1.2
10
- Requires-Dist: clickhouse-connect>=0.10.0
11
- Requires-Dist: mcp>=1.23.3
12
- Requires-Dist: pyathena>=3.22.0
13
- Requires-Dist: snowflake-connector-python>=4.1.0
14
- Requires-Dist: pydantic>=2.12.4
15
- Requires-Dist: jinja2>=3.1.6
16
- Requires-Dist: asyncpg>=0.31.0
17
- Requires-Dist: asyncio>=4.0.0
18
- Requires-Dist: asyncpg-stubs>=0.31.1
19
- Requires-Dist: mssql-python>=1.0.0 ; extra == 'mssql'
20
- Requires-Python: >=3.12
21
- Provides-Extra: mssql
22
- Description-Content-Type: text/markdown
23
-
24
- [![official project](https://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
25
- [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/JetBrains/databao-context-engine/blob/main/LICENSE)
26
-
27
- [//]: # ([![PyPI version](https://img.shields.io/pypi/v/databao-context-engine.svg)](https://pypi.org/project/databao-context-engine))
28
-
29
- [//]: # ([![Python versions](https://img.shields.io/pypi/pyversions/databao-context-engine.svg)](https://pypi.org/project/databao-context-engine/))
30
-
31
-
32
- <h1 align="center">Databao Context Engine</h1>
33
- <p align="center">
34
- <b>Semantic context for your LLMs — generated automatically.</b><br/>
35
- No more copying schemas. No manual documentation. Just accurate answers.
36
- </p>
37
- <p align="center">
38
- <a href="https://databao.app">Website</a>
39
-
40
- [//]: # (•)
41
-
42
- [//]: # ( <a href="#quickstart">Quickstart</a> •)
43
-
44
- [//]: # ( <a href="#supported-data-sources">Data Sources</a> •)
45
-
46
- [//]: # ( <a href="#contributing">Contributing</a>)
47
- </p>
48
-
49
- ---
50
-
51
- ## What is Databao Context Engine?
52
-
53
- Databao Context Engine **automatically generates governed semantic context** from your databases, BI tools, documents, and spreadsheets.
54
-
55
- Integrate it with any LLM to deliver **accurate, context-aware answers** — without copying schemas or writing documentation by hand.
56
-
57
- ```
58
- Your data sources → Context Engine → Unified semantic graph → Any LLM
59
- ```
60
-
61
- ## Why choose Databao Context Engine?
62
-
63
- | Feature | What it means for you |
64
- |----------------------------|----------------------------------------------------------------|
65
- | **Auto-generated context** | Extracts schemas, relationships, and semantics automatically |
66
- | **Runs locally** | Your data never leaves your environment |
67
- | **MCP integration** | Works with Claude Desktop, Cursor, and any MCP-compatible tool |
68
- | **Multiple sources** | Databases, dbt projects, spreadsheets, documents |
69
- | **Built-in benchmarks** | Measure and improve context quality over time |
70
- | **LLM agnostic** | OpenAI, Anthropic, Ollama, Gemini — use any model |
71
- | **Governed & versioned** | Track, version, and share context across your team |
72
- | **Dynamic or static** | Serve context via MCP server or export as artifact |
73
-
74
- # Prerequisites
75
-
76
- This README assumes you will use `uv` as your package manager.
77
-
78
- You can install it following the instructions [here](https://docs.astral.sh/uv/getting-started/installation/)
79
-
80
- If you are going to push to the repository, please make sure to install git pre-commit hooks by running
81
-
82
- ```bash
83
- uv run pre-commit install
84
- ```
85
-
86
- # How to run?
87
-
88
- You can run it with:
89
-
90
- ```bash
91
- uv run dce info
92
- ```
93
-
94
- Not providing the `info` subcommand or using the `--help` flag will show the help screen for the command.
95
-
96
- ## Using the dce command directly
97
-
98
- To be able to use the `dce` command directly (without using `uv run` or `python`) there are two options.
99
-
100
- ### Installing dce locally
101
-
102
- For that one needs to:
103
-
104
- 1. Build the project by running
105
-
106
- ```bash
107
- uv build
108
- ```
109
-
110
- 2. Installing the project on our machine by running:
111
-
112
- ```bash
113
- uv tool install -e .
114
- ```
115
-
116
- This second step will install the `dce` script on your machine and add it into your path.
117
-
118
- ### Create dce alias using nix
119
-
120
- This method will simply create a new shell environment with `dce` alias. For that one needs to install `nix` package
121
- manager (https://nixos.org/download/). After that one could simply run in the project root
122
-
123
- ```bash
124
- $ nix-shell
125
- ```
126
-
127
- which is a short version of `$ nix-shell shell.nix`.
128
-
129
- Alternatively, one could specify the path to the project repository
130
-
131
- ```bash
132
- $ nix-shell {path_to_dce_repository}
133
- ```
134
-
135
- After that, you can then directly use:
136
-
137
- ```bash
138
- dce --help
139
- ```
140
-
141
- Note: when we actually release our built Python package, users that don't use `uv` will still be able to install the CLI
142
- by using `pipx install` instead.
143
-
144
- # Running Mypy
145
-
146
- [mypy](https://mypy.readthedocs.io/en/stable/getting_started.html) has been added to the project for type checking.
147
-
148
- You can run it with the following:
149
-
150
- ```bash
151
- uv run mypy src --exclude "test_*" --exclude dist
152
- ```
153
-
154
- NB: the above runs type checking on all files within the `src` directory, excluding all test files.
155
-
156
- # Running tests
157
-
158
- You can run the tests with:
159
-
160
- ```bash
161
- uv run pytest
162
- ```
163
-
164
- (there is currently one test succeeding and one test failing in the project)
165
-
166
- # Generating JSON Schemas for our plugin's config files
167
-
168
- To be able to build a datasource, each plugin requires a yaml config file that describes how to connect to the
169
- datasource,
170
- as well as other information needed to customise the plugin.
171
-
172
- To document what each config file should look like, we can generate a JSON schema describing the fields allowed in that
173
- file.
174
-
175
- You can generate all JSON schemas for all plugins by running:
176
-
177
- ```bash
178
- uv run generate_configs_schemas
179
- ```
180
-
181
- Some options can be provided to the command to choose which plugins to include or exclude from the generation.
182
- To see the options available, you can refer to the help:
183
-
184
- ```bash
185
- uv run generate_configs_schemas --help
186
- ```
187
-
@@ -1,135 +0,0 @@
1
- databao_context_engine/__init__.py,sha256=QCHPU_RIOT76gFU6WX3ry5gO6SV807lbi1-Fvx7pLFE,1532
2
- databao_context_engine/build_sources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- databao_context_engine/build_sources/internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- databao_context_engine/build_sources/internal/build_runner.py,sha256=n-s_WQipPEXIt7pAZwlfDFSb9C5S5x_ZRSGR0uPqbt4,3656
5
- databao_context_engine/build_sources/internal/build_service.py,sha256=J_brFE2M5ICvY9skdPY4sH8qLYlVZybZBXlosN-_Ct4,2706
6
- databao_context_engine/build_sources/internal/build_wiring.py,sha256=ZeNL5xkL5t4stwPH5c1Nr9nFoxWF-0Hsgg645YxF9Lg,2048
7
- databao_context_engine/build_sources/internal/export_results.py,sha256=f3W_NaIvm4z1GF9pgvtaWILx5r-114EtErDglYnU79k,1736
8
- databao_context_engine/build_sources/internal/plugin_execution.py,sha256=ZCDceJD9QCQDdsHdOf7oK7tTTuE_Wwyet3jL400WvJg,2226
9
- databao_context_engine/build_sources/public/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- databao_context_engine/build_sources/public/api.py,sha256=mZRL5V9Z0nU8uF9mjaNrgrulU9boLdPA8-ssuO2_bIc,242
11
- databao_context_engine/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- databao_context_engine/cli/add_datasource_config.py,sha256=TdPftFe1KP_KG8YokqxteEM_gVUts_HPwejsVXzcLVQ,5395
13
- databao_context_engine/cli/commands.py,sha256=PnG4IkuAh07rYVxHlnqbxLMbGXETwNwQrrjAu9it0Q0,7730
14
- databao_context_engine/cli/datasources.py,sha256=kHbXhEnDVaYXTRAE3WeaDGohH1Y9cwyYjjcycQ8eh1U,2376
15
- databao_context_engine/cli/info.py,sha256=Fwj4haOYhnkQ5R2TvrVpw2feUe-ucuMatUxpHIWqIaw,1119
16
- databao_context_engine/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- databao_context_engine/config/log_config.yaml,sha256=hH2NPumufcyig8L-7Z_DbLQ88_G2N6CAEl5fvHafeAw,360
18
- databao_context_engine/config/logging.py,sha256=66k7x3ftEdHx-CKqbOss4pqZfGn4nMFv7AzVPs9aVnY,1525
19
- databao_context_engine/databao_context_project_manager.py,sha256=-xV8bJ8Gjd6eAgH4CFcTT8vnBXXk85uUmJKEAjntTaw,3699
20
- databao_context_engine/databao_engine.py,sha256=EZxVoNJwmOsOdlwtCOS52M07LUg0b7usI_iMQUiz6xw,3113
21
- databao_context_engine/datasource_config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- databao_context_engine/datasource_config/add_config.py,sha256=t9dnfvqU3BQYFilCBztyeneFBFPrvEwW3Z2LS8aQNlE,2112
23
- databao_context_engine/datasource_config/check_config.py,sha256=Bs4_jTovROXKk9dOiL6egSpdTRb0FG8_23xqqJx3f8I,4995
24
- databao_context_engine/datasource_config/datasource_context.py,sha256=jks73wWIF6448ZPd23a2zu_Znwf_pkJmbW0OcQ0ED1M,2403
25
- databao_context_engine/event_journal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- databao_context_engine/event_journal/writer.py,sha256=abkl2SPHYzO8XAUsjbtrcXm6WQk15zWpXhYm86qb6G0,986
27
- databao_context_engine/generate_configs_schemas.py,sha256=OBX1Motg_d-fmZCUnDoF-3c8dYbDcTOJmhD7F0WJHH8,3017
28
- databao_context_engine/init_project.py,sha256=j5y_3sK3ug77rqBFqUEwWbQgg3aJaRbqJoumEYMMaJQ,738
29
- databao_context_engine/introspection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- databao_context_engine/introspection/property_extract.py,sha256=kT1rS_6V8nBjrw-Vc6PtY5bcqZuXsew5eSHjS6XB0Dw,7484
31
- databao_context_engine/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- databao_context_engine/llm/config.py,sha256=geIygR-9maeKbvmcO5J3iNZXKS4LZc7zpKYyaH8vCoI,463
33
- databao_context_engine/llm/descriptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- databao_context_engine/llm/descriptions/ollama.py,sha256=XhXQD8j7OAHiKL0TjZPpNtDDoIV0NI0u92PTksejc5g,657
35
- databao_context_engine/llm/descriptions/provider.py,sha256=nojEI0l55TfFuNooQwGNvfa2k6A1vZ1Oi3PBLAr9eFo,227
36
- databao_context_engine/llm/embeddings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- databao_context_engine/llm/embeddings/ollama.py,sha256=GQzlMBRJGJe_xreY9-Y3REBFWWaOyKhiGQxWxrR6xfY,949
38
- databao_context_engine/llm/embeddings/provider.py,sha256=IVrOptwad2Fr1wf1SBOM3-7y66k08mOZnga1NA6yhbA,300
39
- databao_context_engine/llm/errors.py,sha256=7Dj2bxydWAyF03iHt4NCuxBAmutyGrqapEZavpU0Sd4,430
40
- databao_context_engine/llm/factory.py,sha256=VSCVAWXV6d496SWDyUH4rGYGXQ3Q6yg9Ymc8C6x8EXQ,1765
41
- databao_context_engine/llm/install.py,sha256=YlOAYOGG2pIlAjeNxYjYGrlN7CSEadD_lO628i6i8DQ,6513
42
- databao_context_engine/llm/runtime.py,sha256=jf_sPDF4s_fChFj2enLcEIBXIWjSjaYNh-l6lXIgRd4,2173
43
- databao_context_engine/llm/service.py,sha256=JOI8ZbZm6XQ_ZDj8_jdfiqUOL5SAWwgwMpxbX9Zie68,5995
44
- databao_context_engine/main.py,sha256=3gWwEc9GZJUFANJtW9Fx4smVzib_sDtFkBGPILjisaI,350
45
- databao_context_engine/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
- databao_context_engine/mcp/all_results_tool.py,sha256=1Jc6DZUgbuNSnOqDBjTiW6H-Xag5lg0QY3LdPzZFuj4,239
47
- databao_context_engine/mcp/mcp_runner.py,sha256=sBBNsr3ivJTCYdBwRo3LJdSMWVDVcjVP3v1n5MOWC6A,386
48
- databao_context_engine/mcp/mcp_server.py,sha256=tVyQlE1hJE2hWgd6D_v3Y6D9KpnvHbXk5LfRm2tgOVM,2254
49
- databao_context_engine/mcp/retrieve_tool.py,sha256=rydPXDTPvVPPUMZQuQeUcr9mzqC0MSS5em2xtHsrjKI,719
50
- databao_context_engine/pluginlib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- databao_context_engine/pluginlib/build_plugin.py,sha256=icmGh_6yAyN7DSCLdjS9PPRKETNfkRsK0SzCf8IDMx8,3236
52
- databao_context_engine/pluginlib/config.py,sha256=W3ZUGY2zModUkC-H0v2-aTPiAAKDZbdz_6H8AsPnr80,1174
53
- databao_context_engine/pluginlib/plugin_utils.py,sha256=f76ksdMUG3Wy4KOytUYxLMrq9iOHytu3QF8wc5NzzJE,2471
54
- databao_context_engine/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- databao_context_engine/plugins/athena_db_plugin.py,sha256=53Dui_V7MunJ3jmyYEAmkZofuHtQP-Ic3bNhsxTwAyc,456
56
- databao_context_engine/plugins/base_db_plugin.py,sha256=uuzKSEtszKnxL-cBg5ya6TxQHq8oqlIicUbZlkoyxlI,1562
57
- databao_context_engine/plugins/clickhouse_db_plugin.py,sha256=4J1CNoeWPRvgmgkww7CQALxTP5D9eSLl1TpDRgwHBew,509
58
- databao_context_engine/plugins/databases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
- databao_context_engine/plugins/databases/athena_introspector.py,sha256=k6vRBDA-GnSFvhmso2K4BXf7PdB-4yTnOst2Ih8DfNM,3900
60
- databao_context_engine/plugins/databases/base_introspector.py,sha256=eilvWrIB407N4ALo2DG88lEQ2O28wR6_iJrZHOEfU3U,5750
61
- databao_context_engine/plugins/databases/clickhouse_introspector.py,sha256=uQTimT6kjhMEacyXvfCRGaJpFXfHdHRE7uDaOpl5dXg,6105
62
- databao_context_engine/plugins/databases/database_chunker.py,sha256=dn9Mb9Sw4f8IwBe9RtukQGT0yyKLQt5i4tjvsrFh1ew,2100
63
- databao_context_engine/plugins/databases/databases_types.py,sha256=kYZEaFa_cnROg_n1k7tIonoC2VunLBe5SQR47GOt_8k,2579
64
- databao_context_engine/plugins/databases/duckdb_introspector.py,sha256=LPnK7HeuFJ_VSXZvqoMqeVjXFGvZAviTwc0gNQTbsjY,11440
65
- databao_context_engine/plugins/databases/introspection_model_builder.py,sha256=nfQLKVbwaWY12lnWrpCoVY2rolW263IwvWg7NkLjtk0,10350
66
- databao_context_engine/plugins/databases/introspection_scope.py,sha256=MPCcMpZaf3ENGoaxqHCS-PK9zrLFd9KFqZx4d6qzCH0,2191
67
- databao_context_engine/plugins/databases/introspection_scope_matcher.py,sha256=9Zi5csHNIXET2PVzrSF-bI1LST1sA9N6Nye2WCGpUoo,3620
68
- databao_context_engine/plugins/databases/mssql_introspector.py,sha256=giqwPPB_VuRqJJny7KnsknpzqEeqzxc3etYclcEiHro,18545
69
- databao_context_engine/plugins/databases/mysql_introspector.py,sha256=SD5QADWefbBs1a7Xutq4U0e2VhRXki68yixIUvOk8Uo,14051
70
- databao_context_engine/plugins/databases/postgresql_introspector.py,sha256=3f42ludqg6w0I9iDaubqHKFDNBEcWP3jqd1sctXzfUg,17463
71
- databao_context_engine/plugins/databases/snowflake_introspector.py,sha256=rZ6hQxWciiph8nhHVHHC1glaVoRfS6eLG2PfMtromM0,11065
72
- databao_context_engine/plugins/duckdb_db_plugin.py,sha256=uumf9kXz6U-6QbX0i1ChHHxxvdq5_di3gTNpVDUCYdg,451
73
- databao_context_engine/plugins/mssql_db_plugin.py,sha256=YVor2QMDuL6XOLT8RFPOgs1Uhj1ZVYoFP5DApDJFPaE,446
74
- databao_context_engine/plugins/mysql_db_plugin.py,sha256=wy8HTiYuE8GTxfoc5gdrinEYv7NWHGrslzaAzruQecY,446
75
- databao_context_engine/plugins/parquet_plugin.py,sha256=qlpzQmiEwpb8Jma50HoIvljGV5ZiWkZU7GSiGV7M6kc,1181
76
- databao_context_engine/plugins/plugin_loader.py,sha256=_1I9npMhO26EFjBu8rOCcR13Q2qYuXUpMMcNLR-NJzQ,3952
77
- databao_context_engine/plugins/postgresql_db_plugin.py,sha256=PwLErcbqixsgz4Tqoift0uyerUqP_OaRzMaMAn0TE5A,486
78
- databao_context_engine/plugins/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
- databao_context_engine/plugins/resources/parquet_chunker.py,sha256=R9WCOBqpKRTVN6t5eeOm_mmnKBOxvjIiQ9zTc8vnUb4,848
80
- databao_context_engine/plugins/resources/parquet_introspector.py,sha256=HJzfBEjzAQlUI_-BLBNNMSrMLbVRPPCpjG_Fowy3_40,6175
81
- databao_context_engine/plugins/snowflake_db_plugin.py,sha256=ApiVE212DU9F4Zj1HPof6JQ66n4LUeYRRwhlTWRCxek,486
82
- databao_context_engine/plugins/unstructured_files_plugin.py,sha256=TWV3fluusizul2YEN-YZ-K-C3s5W-5B8353-bjP53L8,2424
83
- databao_context_engine/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
- databao_context_engine/project/datasource_discovery.py,sha256=uNMp5-HzmYQLzSZhc4IxtO8_ChDeyyZXdtZNGDYqII0,5015
85
- databao_context_engine/project/info.py,sha256=7cbNTxHfah-2nTcMa4wZt1M3lxgp9voiKMY7LWw4tGk,1155
86
- databao_context_engine/project/init_project.py,sha256=TAVLGX7WlIsLvd4KAsB5Qf0NOXZfXl_CknuxRzr_-5w,3736
87
- databao_context_engine/project/layout.py,sha256=Q7AyiBwPnks98IfDKXB8eCzdwnMbkg8x1wd_1xCjfVo,4291
88
- databao_context_engine/project/project_config.py,sha256=rI-Wkll7lca7RlYIaFScs5CIKIZ8uujtKRxSjibGIt8,1132
89
- databao_context_engine/project/resources/examples/src/databases/example_postgres.yaml,sha256=5o6jF_zR4WSvS9QcZnGW-S2FmahsjNp-tMbAkzbNabo,139
90
- databao_context_engine/project/resources/examples/src/files/documentation.md,sha256=k5G5lrN4S_ie2o7CBxXgLiWGIGtb3v-77c_3n4C7Lvw,1090
91
- databao_context_engine/project/resources/examples/src/files/notes.txt,sha256=0T1u8lIwIRwNopEsfWmqfIbhfRl-DN3XuiIN7suRAiE,3668
92
- databao_context_engine/project/runs.py,sha256=HjoIhAIy3iTQQCvGtf2j-uuoRJL_66ODCyTLOE_Popc,1733
93
- databao_context_engine/project/types.py,sha256=STCLEVd8b_Kwmv_ajwOgBheSyE8enbAfYPxjGogzRFI,4758
94
- databao_context_engine/retrieve_embeddings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
- databao_context_engine/retrieve_embeddings/internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
- databao_context_engine/retrieve_embeddings/internal/export_results.py,sha256=q4ztCIEjUSA4lHq3ju1jBzSM3isEqng6m65HkitH09E,331
97
- databao_context_engine/retrieve_embeddings/internal/retrieve_runner.py,sha256=MWDWCI6C7d2rTSAKSPvNsWMpTAlg3pcoPyd7WiovLB4,1264
98
- databao_context_engine/retrieve_embeddings/internal/retrieve_service.py,sha256=EoP3SvaQzdIBKARFBj1OAHw4hz626FxFhHx74sWR4Zc,2732
99
- databao_context_engine/retrieve_embeddings/internal/retrieve_wiring.py,sha256=ZlKV6nls7yDAAdjai6Lg6LZDBEopygFGQXhh5E9HpA4,1386
100
- databao_context_engine/retrieve_embeddings/public/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
- databao_context_engine/retrieve_embeddings/public/api.py,sha256=cR0FnnVaLXGY0wEm3y-nCCj8NwdRWRBnuT2oFbjEfVM,135
102
- databao_context_engine/serialisation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
- databao_context_engine/serialisation/yaml.py,sha256=_NTW1qDdtX9PstCftNnzFa5B05B9ZJXjQBI6OXv0N24,1255
104
- databao_context_engine/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
- databao_context_engine/services/chunk_embedding_service.py,sha256=vtnZ48QcWggfELuJgHgfSsyuvSjlrwXr9LRMC-M5xis,4427
106
- databao_context_engine/services/embedding_shard_resolver.py,sha256=6oOVm6QJb74lEIbYXijWMqISTx1VfmKQaQjdSHr8zDA,2289
107
- databao_context_engine/services/factories.py,sha256=oEKWa9zzHq8BpDNIXMmtpTL8i6MpzEAAcvd6AuMIRvc,3319
108
- databao_context_engine/services/models.py,sha256=wHmk4eheoSopXkCs3v2ggoDAGoTPdHYcADMZ4gdtSCI,299
109
- databao_context_engine/services/persistence_service.py,sha256=WFDr84Yw5-yKvdCaVh_UJ-_CrgwOXwEQthdrm76zqKA,2329
110
- databao_context_engine/services/run_name_policy.py,sha256=2z7HZFG-danHVTJgTTx1bUvZLMYLRKo_ZlIlwpcpIWA,229
111
- databao_context_engine/services/table_name_policy.py,sha256=q0scAQ_ZoTrV8V0J6cmxvsMYxTcmUlAqEWpzZUitpLQ,567
112
- databao_context_engine/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
- databao_context_engine/storage/connection.py,sha256=FsDJeDfQMmQbPvXUDZ2YDf_IWO9WDwPc59ADbhAgyco,870
114
- databao_context_engine/storage/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
- databao_context_engine/storage/exceptions/exceptions.py,sha256=clk0OnpFqVqJTe0lXj-yNN2V7LFw30Nv1Ckz9gA-eyw,172
116
- databao_context_engine/storage/migrate.py,sha256=C2M7Kfk6yKd8LM4Pc7RFiU3TT0HaR4a1JN0l9PomQwI,4691
117
- databao_context_engine/storage/migrations/V01__init.sql,sha256=5Cf2NxnOPYFgkXFolFUFuqbYIVoMSlvuGNeuX_-KE50,2475
118
- databao_context_engine/storage/models.py,sha256=7Gs8CHlXXjbjaqfq2CS9CM0LlL-7w9Yp9exhvqsjrdY,971
119
- databao_context_engine/storage/repositories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
- databao_context_engine/storage/repositories/chunk_repository.py,sha256=1I6aqYwmZybfI9aGF3hrFykPNQV9z1kNbvwUwgab8DE,3671
121
- databao_context_engine/storage/repositories/datasource_run_repository.py,sha256=k9kfAwEnEiYZoeasLzo-4AI-l8WAEUl3r9M9qVAkmVI,3952
122
- databao_context_engine/storage/repositories/embedding_model_registry_repository.py,sha256=g91WCflYRc5jPDbW9RBp5HxWFsSIta4n8OYNwgoLv9c,2413
123
- databao_context_engine/storage/repositories/embedding_repository.py,sha256=UCvr5mf2jTJgX_uMdLIMiN5NWa8Zn1U3HEr19TQRXAw,3278
124
- databao_context_engine/storage/repositories/factories.py,sha256=oA7UugL0rshMsV323h6F7yFYHHIPuZg22U1VUrFrEz8,1506
125
- databao_context_engine/storage/repositories/run_repository.py,sha256=gTlkPoESdfJJgqeHtV4ge17LGljzdRPbwIwX2ORjfkQ,4348
126
- databao_context_engine/storage/repositories/vector_search_repository.py,sha256=Y87CPreJcVVUvWmcq4YyzdpthP8K42ag5_TrpovWqCw,2187
127
- databao_context_engine/storage/transaction.py,sha256=QpfE1VtgDd3_7OBzFYI3HPJJ7ESXkgCdcWukFkAjbSg,270
128
- databao_context_engine/system/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
- databao_context_engine/system/properties.py,sha256=RoEemdpD30blMyw5bRpzH0jjbS42TCODFdBpVD8jEG4,333
130
- databao_context_engine/templating/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
- databao_context_engine/templating/renderer.py,sha256=W2-0IGStAp6oxANmsKs_Z-UoIR6Gt_c4ILYFa3Hruo4,662
132
- databao_context_engine-0.1.2.dist-info/WHEEL,sha256=eycQt0QpYmJMLKpE3X9iDk8R04v2ZF0x82ogq-zP6bQ,79
133
- databao_context_engine-0.1.2.dist-info/entry_points.txt,sha256=5EeQJ1W8zEFh4HuF1bs2zBeoP408oiwuM9UrkJiurgI,138
134
- databao_context_engine-0.1.2.dist-info/METADATA,sha256=66akrE--e-4DKjDOAGnuXFRn_fRNrkr5a187jMifHog,5956
135
- databao_context_engine-0.1.2.dist-info/RECORD,,