typedef-data-intelligence 0.2.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.
- typedef_data_intelligence-0.2.0/.dockerignore +101 -0
- typedef_data_intelligence-0.2.0/.env.example +191 -0
- typedef_data_intelligence-0.2.0/.gitignore +54 -0
- typedef_data_intelligence-0.2.0/.justfile_help.txt +60 -0
- typedef_data_intelligence-0.2.0/CHANGELOG.md +31 -0
- typedef_data_intelligence-0.2.0/Dockerfile +60 -0
- typedef_data_intelligence-0.2.0/Dockerfile.dev +35 -0
- typedef_data_intelligence-0.2.0/Justfile +65 -0
- typedef_data_intelligence-0.2.0/MODEL_USAGE.md +198 -0
- typedef_data_intelligence-0.2.0/PKG-INFO +121 -0
- typedef_data_intelligence-0.2.0/README.md +282 -0
- typedef_data_intelligence-0.2.0/README.pypi.md +50 -0
- typedef_data_intelligence-0.2.0/config.api.yml +61 -0
- typedef_data_intelligence-0.2.0/config.cli.yml +79 -0
- typedef_data_intelligence-0.2.0/config.ingest.yml +106 -0
- typedef_data_intelligence-0.2.0/docker-entrypoint.dev.sh +10 -0
- typedef_data_intelligence-0.2.0/docs/LINEAR_TICKETING_BACKEND.md +209 -0
- typedef_data_intelligence-0.2.0/docs/architecture/SEMANTIC_SCHEMA_DESIGN.md +309 -0
- typedef_data_intelligence-0.2.0/docs/examples/memory_usage_examples.py +426 -0
- typedef_data_intelligence-0.2.0/docs/examples/pydantic_tool_customization_example.py +110 -0
- typedef_data_intelligence-0.2.0/docs/reference/ADDING_LINEAGE_BACKEND.md +911 -0
- typedef_data_intelligence-0.2.0/docs/reference/CLI_USAGE_EXAMPLES.md +251 -0
- typedef_data_intelligence-0.2.0/docs/reference/MEMORY_SYSTEM.md +492 -0
- typedef_data_intelligence-0.2.0/docs/reference/SEMANTIC_DIMENSIONS_GUIDE.md +205 -0
- typedef_data_intelligence-0.2.0/docs/reference/TYPE_ENUMS.md +345 -0
- typedef_data_intelligence-0.2.0/pyproject.toml +118 -0
- typedef_data_intelligence-0.2.0/pytest.ini +2 -0
- typedef_data_intelligence-0.2.0/scripts/data_generation/utils.py +330 -0
- typedef_data_intelligence-0.2.0/scripts/refingerprint_cache.py +137 -0
- typedef_data_intelligence-0.2.0/scripts/replay_events.py +104 -0
- typedef_data_intelligence-0.2.0/scripts/reset_demo_git_workspace.py +177 -0
- typedef_data_intelligence-0.2.0/scripts/reset_demo_linear.py +157 -0
- typedef_data_intelligence-0.2.0/scripts/snowflake_server.py +135 -0
- typedef_data_intelligence-0.2.0/snowflake-mcp-config.yaml +42 -0
- typedef_data_intelligence-0.2.0/src/lineage/__init__.py +9 -0
- typedef_data_intelligence-0.2.0/src/lineage/ag_ui/client.py +225 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/README.md +407 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/__init__.py +1 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/prompt_loader.py +163 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/__main__.py +10 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/ag_ui_handler.py +144 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/cli_agents.py +339 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/cli_runner.py +152 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/memory_observer.py +282 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/orchestrator.py +886 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/prompts/data_analyst.yaml.j2 +206 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/prompts/data_engineer_copilot.yaml.j2 +305 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/prompts/data_engineer_copilot_cost_optimized.yaml.j2 +171 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/prompts/data_engineer_reconciler.yaml.j2 +273 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/prompts/data_engineer_reconciler_cost_optimized.yaml.j2 +157 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/prompts/data_insights.yaml.j2 +185 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/prompts/data_investigator.yaml.j2 +221 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/prompts/data_quality.yaml.j2 +176 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/subagents.py +77 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/summary.py +166 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/tools/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/tools/bash.py +419 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/tools/common.py +6 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/tools/data.py +487 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/tools/dbt.py +290 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/tools/filesystem.py +505 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/tools/git.py +368 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/tools/graph.py +499 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/tools/memory.py +679 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/tools/presentation.py +1022 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/tools/ticketing.py +436 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/tools/todos.py +93 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/types.py +464 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/pydantic/utils.py +200 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/utils/__init__.py +12 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/utils/backend_hints.py +51 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/utils/cursor.py +258 -0
- typedef_data_intelligence-0.2.0/src/lineage/agent/utils/visualization.py +315 -0
- typedef_data_intelligence-0.2.0/src/lineage/api/app.py +385 -0
- typedef_data_intelligence-0.2.0/src/lineage/api/collector.py +87 -0
- typedef_data_intelligence-0.2.0/src/lineage/api/pydantic.py +730 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/README.md +660 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/config.py +687 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/data_query/__init__.py +18 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/data_query/duckdb_backend.py +761 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/data_query/factory.py +87 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/data_query/mcp.py +51 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/data_query/protocol.py +501 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/data_query/snowflake_native_backend.py +2512 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/__init__.py +49 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/_base_falkordb_adapter.py +1022 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/base.py +1209 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/factory.py +100 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/falkordb_adapter.py +104 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/falkordblite_adapter.py +72 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/models/__init__.py +218 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/models/base.py +217 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/models/clustering.py +118 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/models/dbt.py +271 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/models/dto.py +28 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/models/edges.py +765 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/models/openlineage.py +214 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/models/physical.py +233 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/models/profiling.py +77 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/models/semantic_analysis.py +619 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/models/semantic_views.py +265 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/models/tickets.py +49 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/protocol.py +981 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/schema.yaml +1195 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/lineage/schema_loader.py +588 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/mcp_auto.py +147 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/memory/__init__.py +51 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/memory/factory.py +151 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/memory/falkordb_adapter.py +213 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/memory/falkordblite_backend.py +118 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/memory/graphiti_adapter.py +465 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/memory/models.py +494 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/memory/protocol.py +320 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/reports/__init__.py +7 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/reports/factory.py +28 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/reports/filesystem.py +247 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/reports/protocol.py +73 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/threads/__init__.py +36 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/threads/models.py +79 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/threads/protocol.py +103 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/threads/sqlite.py +258 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/tickets/__init__.py +14 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/tickets/factory.py +197 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/tickets/filesystem_backend.py +189 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/tickets/linear_backend.py +697 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/tickets/protocol.py +210 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/todos/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/todos/todo_manager.py +220 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/types.py +295 -0
- typedef_data_intelligence-0.2.0/src/lineage/backends/utils.py +73 -0
- typedef_data_intelligence-0.2.0/src/lineage/cli.py +490 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/README.md +711 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/config.py +343 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/openlineage/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/openlineage/loader.py +123 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/openlineage/models.py +6 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/openlineage/parser.py +113 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/progress.py +233 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/change_detection.py +216 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/clustering/__init__.py +18 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/clustering/algorithms.py +288 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/clustering/enrichment.py +221 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/clustering/orchestrator.py +209 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/clustering/summarizer.py +225 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/dbt/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/dbt/builder.py +1153 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/dbt/config.py +51 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/dbt/dbt_loader.py +583 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/profiling/__init__.py +5 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/profiling/loader.py +232 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/__init__.py +36 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/config/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/config/session.py +127 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/loader.py +1128 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/models/__init__.py +105 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/models/analytical.py +353 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/models/base.py +28 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/models/business.py +215 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/models/technical.py +409 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/models/validation.py +134 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/output/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/output/exporters.py +192 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/output/reporters.py +40 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/__init__.py +31 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/base.py +93 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/pass_01_relations.py +44 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/pass_02_columns.py +43 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/pass_03_joins.py +49 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/pass_04_filters.py +51 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/pass_05_grouping.py +97 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/pass_06_time.py +113 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/pass_07_windows.py +109 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/pass_08_output.py +76 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/pass_09_audit.py +68 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/pass_10_business.py +62 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/pass_10a_grain.py +177 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/passes/pass_11_summary.py +108 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/pipeline/__init__.py +11 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/pipeline/dag.py +155 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/pipeline/dependencies.py +84 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/pipeline/executor.py +328 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/prompts/__init__.py +40 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/prompts/analytical.py +286 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/prompts/business.py +83 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/prompts/technical.py +95 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/prompts/validation.py +97 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/runner.py +159 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/utils/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/utils/data_loaders.py +58 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/utils/extractors.py +56 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic/utils/sql_operations.py +107 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic_views/__init__.py +7 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic_views/loader.py +266 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/semantic_views/parser.py +128 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/sqlglot/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/sqlglot/config.py +10 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/sqlglot/sqlglot_lineage.py +328 -0
- typedef_data_intelligence-0.2.0/src/lineage/ingest/static_loaders/sqlglot/types.py +192 -0
- typedef_data_intelligence-0.2.0/src/lineage/integration.py +1742 -0
- typedef_data_intelligence-0.2.0/src/lineage/schema.py +105 -0
- typedef_data_intelligence-0.2.0/src/lineage/snapshot.py +17 -0
- typedef_data_intelligence-0.2.0/src/lineage/templates/__init__.py +156 -0
- typedef_data_intelligence-0.2.0/src/lineage/templates/typedef_config.yaml.j2 +163 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/__init__.py +2 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/app.py +306 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/backend.py +137 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/screens/__init__.py +2 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/screens/chat.py +1689 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/screens/daemon.py +542 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/screens/tickets.py +283 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/styles.tcss +318 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/widgets/__init__.py +2 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/widgets/artifacts.py +2104 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/widgets/image.py +252 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/wizards/__init__.py +5 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/wizards/base.py +345 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/wizards/init.py +1790 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/wizards/project_selector.py +96 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/wizards/styles.tcss +346 -0
- typedef_data_intelligence-0.2.0/src/lineage/tui/wizards/sync_progress.py +114 -0
- typedef_data_intelligence-0.2.0/src/lineage/typedef_cli.py +1243 -0
- typedef_data_intelligence-0.2.0/src/lineage/utils/__init__.py +0 -0
- typedef_data_intelligence-0.2.0/src/lineage/utils/dbt.py +54 -0
- typedef_data_intelligence-0.2.0/src/lineage/utils/drop_snowflake_objects.py +144 -0
- typedef_data_intelligence-0.2.0/src/lineage/utils/env.py +115 -0
- typedef_data_intelligence-0.2.0/src/lineage/utils/git.py +52 -0
- typedef_data_intelligence-0.2.0/src/lineage/utils/gitignore.py +63 -0
- typedef_data_intelligence-0.2.0/src/lineage/utils/run_snowflake_query.py +119 -0
- typedef_data_intelligence-0.2.0/src/lineage/utils/snowflake.py +210 -0
- typedef_data_intelligence-0.2.0/tests/__init__.py +2 -0
- typedef_data_intelligence-0.2.0/tests/backends/__init__.py +2 -0
- typedef_data_intelligence-0.2.0/tests/backends/data_query/test_semantic_view_detection.py +50 -0
- typedef_data_intelligence-0.2.0/tests/backends/data_query/test_snowflake_native_backend_security.py +308 -0
- typedef_data_intelligence-0.2.0/tests/backends/lineage/__init__.py +2 -0
- typedef_data_intelligence-0.2.0/tests/backends/lineage/test_cascade_deletion.py +423 -0
- typedef_data_intelligence-0.2.0/tests/backends/lineage/test_cypher_escaping.py +72 -0
- typedef_data_intelligence-0.2.0/tests/conftest.py +186 -0
- typedef_data_intelligence-0.2.0/tests/ingest/__init__.py +2 -0
- typedef_data_intelligence-0.2.0/tests/ingest/static_loaders/__init__.py +2 -0
- typedef_data_intelligence-0.2.0/tests/ingest/static_loaders/change_detection/__init__.py +2 -0
- typedef_data_intelligence-0.2.0/tests/ingest/static_loaders/change_detection/test_change_detection.py +463 -0
- typedef_data_intelligence-0.2.0/tests/ingest/static_loaders/dbt/__init__.py +2 -0
- typedef_data_intelligence-0.2.0/tests/ingest/static_loaders/dbt/test_builder_incremental.py +691 -0
- typedef_data_intelligence-0.2.0/tests/ingest/static_loaders/semantic/__init__.py +3 -0
- typedef_data_intelligence-0.2.0/tests/ingest/static_loaders/semantic/test_semantic_loader_model_domains.py +54 -0
- typedef_data_intelligence-0.2.0/tests/ingest/test_progress.py +24 -0
- typedef_data_intelligence-0.2.0/tests/integration/__init__.py +2 -0
- typedef_data_intelligence-0.2.0/tests/integration/test_clustering_failure_behavior.py +62 -0
- typedef_data_intelligence-0.2.0/tests/integration/test_incremental_loading.py +333 -0
- typedef_data_intelligence-0.2.0/tests/integration/test_reanalyze_sets_sqlglot_schema.py +100 -0
- typedef_data_intelligence-0.2.0/tests/integration/test_sync_planner.py +146 -0
- typedef_data_intelligence-0.2.0/tests/linear/conftest.py +41 -0
- typedef_data_intelligence-0.2.0/tests/linear/test_linear_mcp_direct.py +426 -0
- typedef_data_intelligence-0.2.0/tests/test_bash_validation.py +486 -0
- typedef_data_intelligence-0.2.0/tests/test_gitignore_utils.py +32 -0
- typedef_data_intelligence-0.2.0/tests/test_helpers.py +157 -0
- typedef_data_intelligence-0.2.0/tests/test_semantic_view_detection.py +50 -0
- typedef_data_intelligence-0.2.0/tests/test_template_yaml_escaping.py +125 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.Python
|
|
7
|
+
build/
|
|
8
|
+
develop-eggs/
|
|
9
|
+
dist/
|
|
10
|
+
downloads/
|
|
11
|
+
eggs/
|
|
12
|
+
.eggs/
|
|
13
|
+
lib/
|
|
14
|
+
lib64/
|
|
15
|
+
parts/
|
|
16
|
+
sdist/
|
|
17
|
+
var/
|
|
18
|
+
wheels/
|
|
19
|
+
*.egg-info/
|
|
20
|
+
.installed.cfg
|
|
21
|
+
*.egg
|
|
22
|
+
MANIFEST
|
|
23
|
+
.venv/
|
|
24
|
+
|
|
25
|
+
# Node.js
|
|
26
|
+
node_modules/
|
|
27
|
+
npm-debug.log*
|
|
28
|
+
yarn-debug.log*
|
|
29
|
+
yarn-error.log*
|
|
30
|
+
.npm
|
|
31
|
+
.yarn-integrity
|
|
32
|
+
|
|
33
|
+
# Next.js
|
|
34
|
+
.next/
|
|
35
|
+
out/
|
|
36
|
+
|
|
37
|
+
# Testing
|
|
38
|
+
.pytest_cache/
|
|
39
|
+
.coverage
|
|
40
|
+
htmlcov/
|
|
41
|
+
.tox/
|
|
42
|
+
.nox/
|
|
43
|
+
|
|
44
|
+
# IDEs
|
|
45
|
+
.vscode/
|
|
46
|
+
.idea/
|
|
47
|
+
*.swp
|
|
48
|
+
*.swo
|
|
49
|
+
*~
|
|
50
|
+
|
|
51
|
+
# OS
|
|
52
|
+
.DS_Store
|
|
53
|
+
.DS_Store?
|
|
54
|
+
._*
|
|
55
|
+
.Spotlight-V100
|
|
56
|
+
.Trashes
|
|
57
|
+
ehthumbs.db
|
|
58
|
+
Thumbs.db
|
|
59
|
+
|
|
60
|
+
# Git
|
|
61
|
+
.git/
|
|
62
|
+
.gitignore
|
|
63
|
+
|
|
64
|
+
# Environment
|
|
65
|
+
.env
|
|
66
|
+
.env.local
|
|
67
|
+
.env.development.local
|
|
68
|
+
.env.test.local
|
|
69
|
+
.env.production.local
|
|
70
|
+
|
|
71
|
+
# Logs
|
|
72
|
+
*.log
|
|
73
|
+
logs/
|
|
74
|
+
|
|
75
|
+
# Database files
|
|
76
|
+
*.db
|
|
77
|
+
*.duckdb
|
|
78
|
+
*.sqlite
|
|
79
|
+
*.sqlite3
|
|
80
|
+
lineage_store/
|
|
81
|
+
*.kuzu
|
|
82
|
+
|
|
83
|
+
# Development artifacts
|
|
84
|
+
tickets/
|
|
85
|
+
reports/
|
|
86
|
+
agent_memory/
|
|
87
|
+
captured_events/
|
|
88
|
+
|
|
89
|
+
# Docker
|
|
90
|
+
Dockerfile*
|
|
91
|
+
docker-compose*.yml
|
|
92
|
+
.dockerignore
|
|
93
|
+
|
|
94
|
+
# Documentation
|
|
95
|
+
docs/
|
|
96
|
+
*.md
|
|
97
|
+
README*
|
|
98
|
+
|
|
99
|
+
# Temporary files
|
|
100
|
+
*.tmp
|
|
101
|
+
*.temp
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# TypeDef Data Intelligence - Environment Configuration
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# This file provides example values for all environment variables used by the
|
|
5
|
+
# typedef data intelligence platform. Copy this file to .env and fill in your
|
|
6
|
+
# actual values.
|
|
7
|
+
#
|
|
8
|
+
# Configuration files reference these variables using ${VAR_NAME} syntax.
|
|
9
|
+
#
|
|
10
|
+
# IMPORTANT: Never commit the actual .env file - it contains secrets!
|
|
11
|
+
# =============================================================================
|
|
12
|
+
|
|
13
|
+
# -----------------------------------------------------------------------------
|
|
14
|
+
# LLM API Keys
|
|
15
|
+
# -----------------------------------------------------------------------------
|
|
16
|
+
# Required for semantic analysis and agent operations.
|
|
17
|
+
# At minimum, set ANTHROPIC_API_KEY (used by default for agents).
|
|
18
|
+
|
|
19
|
+
# Anthropic Claude (primary - used by agents)
|
|
20
|
+
ANTHROPIC_API_KEY=sk-ant-...
|
|
21
|
+
|
|
22
|
+
# OpenAI (optional - for GPT models in semantic analysis)
|
|
23
|
+
OPENAI_API_KEY=sk-proj-...
|
|
24
|
+
|
|
25
|
+
# Google API Key (optional - for Gemini models)
|
|
26
|
+
GOOGLE_API_KEY=...
|
|
27
|
+
|
|
28
|
+
# OpenRouter (optional - for multi-model access, used by semantic analysis)
|
|
29
|
+
OPENROUTER_API_KEY=sk-or-v1-...
|
|
30
|
+
|
|
31
|
+
# Pydantic AI Gateway (optional, used for agents in the future)
|
|
32
|
+
PYDANTIC_AI_GATEWAY_API_KEY=paig_...
|
|
33
|
+
|
|
34
|
+
# -----------------------------------------------------------------------------
|
|
35
|
+
# AWS Bedrock Configuration (Optional)
|
|
36
|
+
# -----------------------------------------------------------------------------
|
|
37
|
+
# Use AWS Bedrock as an alternative LLM provider for PydanticAI agents.
|
|
38
|
+
# Bedrock uses IAM authentication - credentials are resolved via boto3's
|
|
39
|
+
# default credential chain:
|
|
40
|
+
# 1. Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
|
|
41
|
+
# 2. AWS credentials file (~/.aws/credentials)
|
|
42
|
+
# 3. IAM role (when running on AWS infrastructure like EC2, ECS, Lambda)
|
|
43
|
+
#
|
|
44
|
+
# Model format in config: bedrock:anthropic.claude-3-sonnet-20240229-v1:0
|
|
45
|
+
# With explicit region: bedrock:us-east-1/anthropic.claude-3-sonnet-20240229-v1:0
|
|
46
|
+
|
|
47
|
+
# AWS Region for Bedrock (defaults to us-east-1 if not set)
|
|
48
|
+
AWS_DEFAULT_REGION=us-west-2
|
|
49
|
+
|
|
50
|
+
# AWS credentials (optional if using IAM roles or ~/.aws/credentials)
|
|
51
|
+
# AWS_ACCESS_KEY_ID=AKIA...
|
|
52
|
+
# AWS_SECRET_ACCESS_KEY=...
|
|
53
|
+
|
|
54
|
+
# AWS Session Token (for temporary credentials only)
|
|
55
|
+
# AWS_SESSION_TOKEN=...
|
|
56
|
+
|
|
57
|
+
# AWS Profile (if using named profiles in ~/.aws/credentials)
|
|
58
|
+
# AWS_PROFILE=default
|
|
59
|
+
|
|
60
|
+
# -----------------------------------------------------------------------------
|
|
61
|
+
# dbt Project Configuration
|
|
62
|
+
# -----------------------------------------------------------------------------
|
|
63
|
+
# These variables define which dbt project to analyze and where it's located.
|
|
64
|
+
#
|
|
65
|
+
# The platform supports external git-managed dbt projects via environment vars.
|
|
66
|
+
# Example projects: medallion-reference, mattermost-data-warehouse
|
|
67
|
+
#
|
|
68
|
+
# Usage: just medallion-quickstart (handles git clone + setup automatically)
|
|
69
|
+
|
|
70
|
+
# Parent directory containing your dbt projects
|
|
71
|
+
GITHUB_DBT_PROJECT_LOCAL_PATH=/Users/you/dev/dbt-workspace
|
|
72
|
+
|
|
73
|
+
# =============================================================================
|
|
74
|
+
# OPTION 1: Medallion Reference Test Project (simpler setup)
|
|
75
|
+
# =============================================================================
|
|
76
|
+
# A demo SaaS finance analytics project for testing
|
|
77
|
+
GITHUB_DBT_PROJECT_REPO_NAME=medallion-reference
|
|
78
|
+
DBT_PROJECT_ROOT=.
|
|
79
|
+
|
|
80
|
+
# =============================================================================
|
|
81
|
+
# OPTION 2: Mattermost Analytics (production-scale example)
|
|
82
|
+
# =============================================================================
|
|
83
|
+
# Uncomment these and comment out the medallion settings above
|
|
84
|
+
# GITHUB_DBT_PROJECT_REPO_NAME=mattermost-data-warehouse
|
|
85
|
+
# DBT_PROJECT_NAME_OVERRIDE=mattermost-analytics
|
|
86
|
+
# DBT_PROJECT_ROOT=transform/mattermost-analytics
|
|
87
|
+
# DBT_PROFILES_DIR=profile
|
|
88
|
+
|
|
89
|
+
# -----------------------------------------------------------------------------
|
|
90
|
+
# Snowflake Configuration
|
|
91
|
+
# -----------------------------------------------------------------------------
|
|
92
|
+
# Data warehouse credentials for:
|
|
93
|
+
# - Querying semantic models
|
|
94
|
+
# - Profiling tables/columns
|
|
95
|
+
# - Running data quality checks
|
|
96
|
+
# - Agent SQL execution
|
|
97
|
+
|
|
98
|
+
SNOWFLAKE_ACCOUNT=your-account.region
|
|
99
|
+
SNOWFLAKE_USER=your-username
|
|
100
|
+
SNOWFLAKE_ROLE=ANALYST
|
|
101
|
+
SNOWFLAKE_WAREHOUSE=COMPUTE_WH
|
|
102
|
+
SNOWFLAKE_DATABASE=ANALYTICS
|
|
103
|
+
SNOWFLAKE_SCHEMA=MARTS
|
|
104
|
+
|
|
105
|
+
# Path to private key file for key-pair authentication
|
|
106
|
+
# Generate: openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out key.p8 -nocrypt
|
|
107
|
+
SNOWFLAKE_PRIVATE_KEY_PATH=/Users/you/.dbt/snowflake_key.p8
|
|
108
|
+
|
|
109
|
+
# -----------------------------------------------------------------------------
|
|
110
|
+
# Mattermost-specific Snowflake Configuration (Optional)
|
|
111
|
+
# -----------------------------------------------------------------------------
|
|
112
|
+
# Additional databases/schemas for mattermost-analytics project
|
|
113
|
+
# SNOWFLAKE_TRANSFORM_DATABASE=ANALYTICS
|
|
114
|
+
# SNOWFLAKE_TRANSFORM_SCHEMA=MATTERMOST_ANALYTICS
|
|
115
|
+
# SNOWFLAKE_TRANSFORM_ROLE=ENGINEER
|
|
116
|
+
# MATTERMOST_RAW_DB=RAW
|
|
117
|
+
# MATTERMOST_ANALYTICS_DB=ANALYTICS
|
|
118
|
+
|
|
119
|
+
# -----------------------------------------------------------------------------
|
|
120
|
+
# User Context
|
|
121
|
+
# -----------------------------------------------------------------------------
|
|
122
|
+
# Default user/org for agent operations
|
|
123
|
+
DEFAULT_USER_ID=your-username
|
|
124
|
+
DEFAULT_ORG_ID=your-org
|
|
125
|
+
|
|
126
|
+
# -----------------------------------------------------------------------------
|
|
127
|
+
# Linear Configuration (Optional)
|
|
128
|
+
# -----------------------------------------------------------------------------
|
|
129
|
+
# Ticket management for agent collaboration.
|
|
130
|
+
# If not set, falls back to filesystem-based tickets.
|
|
131
|
+
#
|
|
132
|
+
# Setup:
|
|
133
|
+
# 1. Create Linear team: https://linear.app/
|
|
134
|
+
# 2. Get team ID from URL or API
|
|
135
|
+
# 3. Generate API keys: Settings -> API -> Personal API Keys
|
|
136
|
+
|
|
137
|
+
LINEAR_TEAM_ID=your-team-uuid
|
|
138
|
+
LINEAR_ANALYST_API_KEY=lin_api_...
|
|
139
|
+
LINEAR_DATA_ENGINEER_API_KEY=lin_api_...
|
|
140
|
+
|
|
141
|
+
# -----------------------------------------------------------------------------
|
|
142
|
+
# GitHub Configuration (Optional)
|
|
143
|
+
# -----------------------------------------------------------------------------
|
|
144
|
+
# For data-engineer agent git operations
|
|
145
|
+
# If unset, agent uses your local git credentials
|
|
146
|
+
# GITHUB_TOKEN=ghp_...
|
|
147
|
+
|
|
148
|
+
# -----------------------------------------------------------------------------
|
|
149
|
+
# Observability (Optional)
|
|
150
|
+
# -----------------------------------------------------------------------------
|
|
151
|
+
# Logfire token for Pydantic AI observability
|
|
152
|
+
# Get from: https://logfire.pydantic.dev/
|
|
153
|
+
LOGFIRE_TOKEN=pylf_v1_...
|
|
154
|
+
|
|
155
|
+
# -----------------------------------------------------------------------------
|
|
156
|
+
# Slack Integration (Optional)
|
|
157
|
+
# -----------------------------------------------------------------------------
|
|
158
|
+
# For Slack bot notifications
|
|
159
|
+
SLACK_SIGNING_SECRET=your-signing-secret
|
|
160
|
+
SLACK_BOT_TOKEN=xoxb-...
|
|
161
|
+
|
|
162
|
+
# AG UI base URL (for agent UI)
|
|
163
|
+
AG_UI_BASE_URL=http://localhost:8000
|
|
164
|
+
|
|
165
|
+
# -----------------------------------------------------------------------------
|
|
166
|
+
# OpenLineage Configuration (Optional)
|
|
167
|
+
# -----------------------------------------------------------------------------
|
|
168
|
+
# For collecting runtime lineage from dbt runs.
|
|
169
|
+
# Enables tracking actual execution patterns vs static DAG.
|
|
170
|
+
|
|
171
|
+
# OpenLineage collection endpoint (if using lineage serve)
|
|
172
|
+
# OPENLINEAGE_URL=http://localhost:8080/api/v1/lineage
|
|
173
|
+
|
|
174
|
+
# Namespace for grouping lineage events
|
|
175
|
+
# OPENLINEAGE_NAMESPACE=dbt://demo_finance
|
|
176
|
+
|
|
177
|
+
# Set to false to enable collection
|
|
178
|
+
# OPENLINEAGE_DISABLED=false
|
|
179
|
+
|
|
180
|
+
# -----------------------------------------------------------------------------
|
|
181
|
+
# Configuration File Selection
|
|
182
|
+
# -----------------------------------------------------------------------------
|
|
183
|
+
# The platform uses different config files for different modes:
|
|
184
|
+
#
|
|
185
|
+
# config.ingest.yml - For loading dbt projects (just medallion-full)
|
|
186
|
+
# config.cli.yml - For CLI agent operations (lineage-agent-anthropic)
|
|
187
|
+
# config.api.yml - For web API + UI (just dev-webui)
|
|
188
|
+
#
|
|
189
|
+
# Each file can reference these environment variables using ${VAR_NAME} syntax.
|
|
190
|
+
# See the individual config files for specific variable usage.
|
|
191
|
+
# -----------------------------------------------------------------------------
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Generated reports and charts (from agent visualization tools)
|
|
2
|
+
/charts/
|
|
3
|
+
/reports/
|
|
4
|
+
|
|
5
|
+
# Python
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.py[cod]
|
|
8
|
+
*$py.class
|
|
9
|
+
*.so
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
*.egg-info/
|
|
24
|
+
.installed.cfg
|
|
25
|
+
*.egg
|
|
26
|
+
|
|
27
|
+
# Virtual environments
|
|
28
|
+
venv/
|
|
29
|
+
ENV/
|
|
30
|
+
env/
|
|
31
|
+
|
|
32
|
+
# IDEs
|
|
33
|
+
.vscode/
|
|
34
|
+
.idea/
|
|
35
|
+
*.swp
|
|
36
|
+
*.swo
|
|
37
|
+
*~
|
|
38
|
+
|
|
39
|
+
# OS
|
|
40
|
+
.DS_Store
|
|
41
|
+
Thumbs.db
|
|
42
|
+
|
|
43
|
+
# Database files
|
|
44
|
+
*.db
|
|
45
|
+
*.duckdb
|
|
46
|
+
*.duckdb.wal
|
|
47
|
+
*.kuzu
|
|
48
|
+
|
|
49
|
+
# Logs
|
|
50
|
+
*.log
|
|
51
|
+
|
|
52
|
+
# Environment variables
|
|
53
|
+
.env
|
|
54
|
+
.env.local
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# CLI Agents Quick Reference
|
|
2
|
+
|
|
3
|
+
## From typedef_data_intelligence/ directory:
|
|
4
|
+
|
|
5
|
+
Interactive Mode:
|
|
6
|
+
just cli-analyst # Start analyst agent (REPL)
|
|
7
|
+
just cli-engineer # Start data engineering agent
|
|
8
|
+
just cli-quality # Start data quality agent
|
|
9
|
+
|
|
10
|
+
Single Question:
|
|
11
|
+
just ask-analyst "question" # Ask analyst
|
|
12
|
+
just ask-engineer "question" # Ask engineer
|
|
13
|
+
just ask-quality "question" # Ask quality agent
|
|
14
|
+
|
|
15
|
+
## From dbt_projects/ directory:
|
|
16
|
+
|
|
17
|
+
Interactive Mode:
|
|
18
|
+
just analyst # Start analyst agent
|
|
19
|
+
just engineer # Start engineer agent
|
|
20
|
+
just quality # Start quality agent
|
|
21
|
+
|
|
22
|
+
Single Question:
|
|
23
|
+
just ask "question" # Ask analyst
|
|
24
|
+
just ask-eng "question" # Ask engineer
|
|
25
|
+
just ask-qa "question" # Ask quality agent
|
|
26
|
+
|
|
27
|
+
## Configuration:
|
|
28
|
+
|
|
29
|
+
Default config (config.example.yml):
|
|
30
|
+
just cli-analyst
|
|
31
|
+
|
|
32
|
+
Custom config:
|
|
33
|
+
just cli-analyst CONFIG=myconfig.yml
|
|
34
|
+
|
|
35
|
+
Environment variables:
|
|
36
|
+
export UNIFIED_CONFIG=/path/to/config.yml
|
|
37
|
+
export CLI_USER_ID=your_user@example.com
|
|
38
|
+
export CLI_ORG_ID=your_org
|
|
39
|
+
|
|
40
|
+
## Example Questions:
|
|
41
|
+
|
|
42
|
+
Analyst:
|
|
43
|
+
"What semantic views are available?"
|
|
44
|
+
"Show me total ARR by month for 2024"
|
|
45
|
+
"Create a chart of revenue trends"
|
|
46
|
+
|
|
47
|
+
Engineer:
|
|
48
|
+
"What models depend on dim_customers?"
|
|
49
|
+
"Show me the grain of fct_arr_reporting_monthly"
|
|
50
|
+
"What tables are in the marts schema?"
|
|
51
|
+
|
|
52
|
+
Quality:
|
|
53
|
+
"Find any failed dbt runs"
|
|
54
|
+
"Show error patterns from the last week"
|
|
55
|
+
"Check for null values in critical columns"
|
|
56
|
+
|
|
57
|
+
## More Info:
|
|
58
|
+
|
|
59
|
+
just cli-info # Show detailed usage
|
|
60
|
+
cat docs/webui/cli-testing.md # Read full documentation
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.2.0](https://github.com/typedef-ai/data-intelligence/compare/v0.1.0...v0.2.0) (2026-01-13)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* Add Data Engineer tools/prompts to Pydantic CLI Agent, improved stability of logfire ([#32](https://github.com/typedef-ai/data-intelligence/issues/32)) ([08efbb1](https://github.com/typedef-ai/data-intelligence/commit/08efbb1fead1fd7727f641d42c85ec4086e8ca85))
|
|
9
|
+
* add rich progress tracking to ingest pipeline ([#47](https://github.com/typedef-ai/data-intelligence/issues/47)) ([91adc20](https://github.com/typedef-ai/data-intelligence/commit/91adc200a4d8f1e71756a31cf7024913545e973f))
|
|
10
|
+
* Add smart autoscroll control in TUI and enforce feature branch workflow for DE copilot ([#81](https://github.com/typedef-ai/data-intelligence/issues/81)) ([42e787d](https://github.com/typedef-ai/data-intelligence/commit/42e787db12d90585d9fc85559f4ebf464f76f385))
|
|
11
|
+
* Add support for bedrock models ([#58](https://github.com/typedef-ai/data-intelligence/issues/58)) ([7711bcc](https://github.com/typedef-ai/data-intelligence/commit/7711bcc37b33c13e940d275c171c07f63cdf6a62))
|
|
12
|
+
* add the daemon ticket based experience to the tui ([#70](https://github.com/typedef-ai/data-intelligence/issues/70)) ([fc87df8](https://github.com/typedef-ai/data-intelligence/commit/fc87df83100ad4f86189c6fc36d4dcb7f212169c))
|
|
13
|
+
* add TUI setup wizard with Textual (prototype) ([#49](https://github.com/typedef-ai/data-intelligence/issues/49)) ([6147e8c](https://github.com/typedef-ai/data-intelligence/commit/6147e8c5d5340144719d2e690f4b49a60065eb68))
|
|
14
|
+
* adding a webui for data analyst ([#2](https://github.com/typedef-ai/data-intelligence/issues/2)) ([9096a18](https://github.com/typedef-ai/data-intelligence/commit/9096a186c56087c101ec46c1a82ccebd90103593))
|
|
15
|
+
* dev docker compose ([#4](https://github.com/typedef-ai/data-intelligence/issues/4)) ([97e1d73](https://github.com/typedef-ai/data-intelligence/commit/97e1d73aa6de637eebe5f245e41ad71ad597ba97))
|
|
16
|
+
* falkordb full text search, snowflake db visibility filtering ([#46](https://github.com/typedef-ai/data-intelligence/issues/46)) ([5110928](https://github.com/typedef-ai/data-intelligence/commit/5110928ae576303fbe25456ae718e93d136213f5))
|
|
17
|
+
* full clustering implementation ([#10](https://github.com/typedef-ai/data-intelligence/issues/10)) ([71bebad](https://github.com/typedef-ai/data-intelligence/commit/71bebad07d0060dc0a07224472bffd0c0db4db88))
|
|
18
|
+
* Improve demo workflow with benchmark branch preservation and session management cleanup ([#64](https://github.com/typedef-ai/data-intelligence/issues/64)) ([df015f8](https://github.com/typedef-ai/data-intelligence/commit/df015f8613d532a14b7eada0b7c7c05c7719edf9))
|
|
19
|
+
* Mattermost clones working plus tasks for scenarios ([#43](https://github.com/typedef-ai/data-intelligence/issues/43)) ([fd77b49](https://github.com/typedef-ai/data-intelligence/commit/fd77b49b4ebd5f2905f9c227c0479a20f5c09d98))
|
|
20
|
+
* prototype benchmark for data-intelligence ([#26](https://github.com/typedef-ai/data-intelligence/issues/26)) ([de2871a](https://github.com/typedef-ai/data-intelligence/commit/de2871afdd78d586fbcd3da86d82d9bf1522d616))
|
|
21
|
+
* separate logical and physical concepts ([#20](https://github.com/typedef-ai/data-intelligence/issues/20)) ([3a9bd05](https://github.com/typedef-ai/data-intelligence/commit/3a9bd05cd6b07328d5098893574a1ab7477a17ef))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
* **backend/docker:** misc path/entrypoint fixes to get it running ([#22](https://github.com/typedef-ai/data-intelligence/issues/22)) ([aa47c3f](https://github.com/typedef-ai/data-intelligence/commit/aa47c3fba30895bde9f107d3f9bea4014fb2a8b1))
|
|
27
|
+
* daemon only grabs labeled tickets ([#18](https://github.com/typedef-ai/data-intelligence/issues/18)) ([748f6c3](https://github.com/typedef-ai/data-intelligence/commit/748f6c332cb5fac490f4c6645a2bdab7d4749e07))
|
|
28
|
+
* if the dbt project gets cloned with git, enable git in the config ([#73](https://github.com/typedef-ai/data-intelligence/issues/73)) ([6e99162](https://github.com/typedef-ai/data-intelligence/commit/6e9916232ab569c4385cbf54d6651c1312517c92))
|
|
29
|
+
* limit the daemon to only process tickets assigned to data-engineer-agent ([#74](https://github.com/typedef-ai/data-intelligence/issues/74)) ([ac94267](https://github.com/typedef-ai/data-intelligence/commit/ac94267c4965b040977cdf3933f39ace67cd06e1))
|
|
30
|
+
* minor fixes to get medallion + frontend to work ([#59](https://github.com/typedef-ai/data-intelligence/issues/59)) ([1444285](https://github.com/typedef-ai/data-intelligence/commit/1444285ba030a4a2f242a4494e102f106d81d868))
|
|
31
|
+
* readme ([#1](https://github.com/typedef-ai/data-intelligence/issues/1)) ([172767a](https://github.com/typedef-ai/data-intelligence/commit/172767a78d33c963e5a09685b34f5016bd7a9714))
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Production Dockerfile for FastAPI Backend
|
|
2
|
+
# Multi-stage build for optimized image size
|
|
3
|
+
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder
|
|
4
|
+
|
|
5
|
+
WORKDIR /workspace
|
|
6
|
+
|
|
7
|
+
# Copy workspace configuration
|
|
8
|
+
COPY pyproject.toml uv.lock ./
|
|
9
|
+
COPY typedef_data_intelligence/pyproject.toml ./typedef_data_intelligence/
|
|
10
|
+
|
|
11
|
+
# Copy source code
|
|
12
|
+
COPY typedef_data_intelligence/src ./typedef_data_intelligence/src
|
|
13
|
+
|
|
14
|
+
# Install minimal runtime dependencies
|
|
15
|
+
RUN apt-get update && apt-get install -y \
|
|
16
|
+
curl git build-essential
|
|
17
|
+
|
|
18
|
+
# Install dependencies with frozen lockfile (reproducible builds)
|
|
19
|
+
# Use FalkorDB backend for production
|
|
20
|
+
# --all-packages ensures workspace members are installed
|
|
21
|
+
RUN uv sync --frozen --package typedef-data-intelligence
|
|
22
|
+
|
|
23
|
+
# ============================================================================
|
|
24
|
+
# Runtime Stage
|
|
25
|
+
# ============================================================================
|
|
26
|
+
FROM python:3.12-slim
|
|
27
|
+
|
|
28
|
+
# Install minimal runtime dependencies
|
|
29
|
+
RUN apt-get update && apt-get install -y \
|
|
30
|
+
curl \
|
|
31
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
32
|
+
|
|
33
|
+
WORKDIR /workspace
|
|
34
|
+
|
|
35
|
+
# Copy virtual environment from builder
|
|
36
|
+
COPY --from=builder /workspace/.venv /workspace/.venv
|
|
37
|
+
|
|
38
|
+
# Copy source code
|
|
39
|
+
COPY --from=builder /workspace/typedef_data_intelligence /workspace/typedef_data_intelligence
|
|
40
|
+
|
|
41
|
+
# Set environment
|
|
42
|
+
ENV PATH="/workspace/.venv/bin:$PATH"
|
|
43
|
+
ENV PYTHONPATH="/workspace/typedef_data_intelligence/src"
|
|
44
|
+
|
|
45
|
+
# Create non-root user for security
|
|
46
|
+
RUN useradd -m -u 1000 appuser && \
|
|
47
|
+
chown -R appuser:appuser /workspace
|
|
48
|
+
|
|
49
|
+
USER appuser
|
|
50
|
+
|
|
51
|
+
# Expose FastAPI port
|
|
52
|
+
EXPOSE 8000
|
|
53
|
+
|
|
54
|
+
# Health check
|
|
55
|
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
56
|
+
CMD curl -f http://localhost:8000/health || exit 1
|
|
57
|
+
|
|
58
|
+
# Run backend server
|
|
59
|
+
# Config file should be mounted at runtime via volume
|
|
60
|
+
CMD ["python", "-m", "lineage.api.pydantic"]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Development Dockerfile for FastAPI Backend
|
|
2
|
+
# This runs in dev mode with hot reloading - no production optimization
|
|
3
|
+
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
|
|
4
|
+
|
|
5
|
+
# Install system dependencies
|
|
6
|
+
RUN apt-get update && apt-get install -y \
|
|
7
|
+
curl git build-essential \
|
|
8
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
9
|
+
|
|
10
|
+
WORKDIR /workspace/typedef_data_intelligence
|
|
11
|
+
|
|
12
|
+
# Copy package metadata and lock file
|
|
13
|
+
COPY pyproject.toml ./
|
|
14
|
+
# Copy source code so uv sync can install the package
|
|
15
|
+
# (This will be overridden by volume mount at runtime for hot reload)
|
|
16
|
+
COPY src ./src
|
|
17
|
+
|
|
18
|
+
# Install package and dependencies with FalkorDB backend
|
|
19
|
+
RUN uv sync
|
|
20
|
+
|
|
21
|
+
# Set environment
|
|
22
|
+
ENV PATH="/workspace/typedef_data_intelligence/.venv/bin:$PATH"
|
|
23
|
+
ENV PYTHONPATH="/workspace/typedef_data_intelligence/src"
|
|
24
|
+
|
|
25
|
+
# Copy entrypoint script
|
|
26
|
+
COPY docker-entrypoint.dev.sh /entrypoint.sh
|
|
27
|
+
RUN chmod +x /entrypoint.sh
|
|
28
|
+
|
|
29
|
+
# Expose FastAPI port
|
|
30
|
+
EXPOSE 8000
|
|
31
|
+
|
|
32
|
+
# Run backend server in development mode with hot reload
|
|
33
|
+
# Note: Source code is mounted via volumes at runtime (see docker-compose.yml)
|
|
34
|
+
# The entrypoint script reinstalls the package in editable mode after volumes are mounted
|
|
35
|
+
ENTRYPOINT ["/entrypoint.sh"]
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
set shell := ["bash", "-eu", "-o", "pipefail", "-c"]
|
|
2
|
+
|
|
3
|
+
# Default config file
|
|
4
|
+
CONFIG_FILE := "config.example.yml"
|
|
5
|
+
|
|
6
|
+
# Default recipe - show available commands
|
|
7
|
+
default:
|
|
8
|
+
@just --list
|
|
9
|
+
|
|
10
|
+
# ============================================================================
|
|
11
|
+
# Backend Management
|
|
12
|
+
# ============================================================================
|
|
13
|
+
|
|
14
|
+
# Show current backend configuration
|
|
15
|
+
config-info:
|
|
16
|
+
@echo "Configuration System"
|
|
17
|
+
@echo "==================="
|
|
18
|
+
@echo ""
|
|
19
|
+
@echo "Unified config file approach - all settings in one YAML file"
|
|
20
|
+
@echo ""
|
|
21
|
+
@echo "Example configs:"
|
|
22
|
+
@echo " - config.example.yml (FalkorDB + DuckDB)"
|
|
23
|
+
@echo " - config.production.example.yml (Neo4j + Snowflake)"
|
|
24
|
+
@echo " - config.postgres.example.yml (PostgreSQL AGE + DuckDB)"
|
|
25
|
+
@echo ""
|
|
26
|
+
@echo "Config structure:"
|
|
27
|
+
@echo " lineage: # Graph database config"
|
|
28
|
+
@echo " backend: falkordb|falkordblite|neo4j|postgres-age|arcadedb"
|
|
29
|
+
@echo " population: # Data loading settings"
|
|
30
|
+
@echo " model: google/gemini-2.5-flash-lite"
|
|
31
|
+
@echo " max_workers: 64"
|
|
32
|
+
@echo " data: # Data warehouse config"
|
|
33
|
+
@echo " backend: duckdb|snowflake"
|
|
34
|
+
@echo " agent: # Agent runtime config"
|
|
35
|
+
@echo " model: anthropic:claude-sonnet-4-5-20250929"
|
|
36
|
+
@echo ""
|
|
37
|
+
@echo "Environment variables:"
|
|
38
|
+
@echo " Use \$${VAR_NAME} syntax in config.yml for sensitive data"
|
|
39
|
+
@echo " Example: password: \$${NEO4J_PASSWORD}"
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# ============================================================================
|
|
43
|
+
# Development
|
|
44
|
+
# ============================================================================
|
|
45
|
+
|
|
46
|
+
# Run tests
|
|
47
|
+
test:
|
|
48
|
+
uv run pytest
|
|
49
|
+
|
|
50
|
+
# Run tests with coverage
|
|
51
|
+
test-cov:
|
|
52
|
+
uv run pytest --cov=src/lineage
|
|
53
|
+
|
|
54
|
+
# Format code
|
|
55
|
+
fmt:
|
|
56
|
+
uv run ruff format .
|
|
57
|
+
|
|
58
|
+
# Lint code
|
|
59
|
+
lint:
|
|
60
|
+
uv run ruff check .
|
|
61
|
+
|
|
62
|
+
# Install dependencies
|
|
63
|
+
install:
|
|
64
|
+
uv sync --all-extras
|
|
65
|
+
|