typedef-data-intelligence 0.32.0__tar.gz → 0.34.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.32.0 → typedef_data_intelligence-0.34.0}/CHANGELOG.md +59 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/PKG-INFO +1 -1
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/examples/memory_usage_examples.py +72 -101
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/examples/pydantic_tool_customization_example.py +1 -1
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/pyproject.toml +1 -1
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/app.py +57 -1
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/desktop_agents.py +223 -21
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/desktop_context.py +25 -8
- typedef_data_intelligence-0.34.0/src/lineage/api/desktop_logs.py +189 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/desktop_quickstart.py +28 -21
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/desktop_setup.py +77 -11
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/desktop_sync.py +124 -1
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/desktop_wizard_sync.py +6 -3
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/desktop_workspaces.py +347 -61
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/desktop_worktree.py +763 -154
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/unified_cli.py +2 -1
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/utils/dbt.py +237 -7
- typedef_data_intelligence-0.34.0/tests/api/test_desktop_agents_clone_backend.py +418 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_airflow_snapshot.py +143 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_context_reader_cache.py +33 -0
- typedef_data_intelligence-0.34.0/tests/api/test_desktop_databases_edit.py +275 -0
- typedef_data_intelligence-0.34.0/tests/api/test_desktop_logs.py +182 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_orphan_flags.py +65 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_quickstart.py +42 -15
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_setup.py +115 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_sync.py +95 -19
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_workspaces_summary.py +103 -9
- typedef_data_intelligence-0.34.0/tests/api/test_desktop_workspaces_target_scope.py +116 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_worktree.py +260 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_worktree_clone.py +398 -9
- typedef_data_intelligence-0.34.0/tests/api/test_desktop_worktree_clone_token_scope.py +44 -0
- typedef_data_intelligence-0.34.0/tests/api/test_desktop_worktree_kind_target.py +144 -0
- typedef_data_intelligence-0.34.0/tests/api/test_desktop_worktree_resolution_scope.py +229 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_workspace_clone_settings.py +72 -0
- typedef_data_intelligence-0.34.0/tests/devtools/test_typedef_home_provision.py +1593 -0
- typedef_data_intelligence-0.34.0/tests/devtools/test_worktree_reclaim.py +202 -0
- typedef_data_intelligence-0.34.0/tests/test_model_tier_validation.py +55 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/test_unified_cli_fast.py +6 -0
- typedef_data_intelligence-0.34.0/tests/test_unified_cli_semantic.py +40 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/context_projects/test_dbt_plugin.py +13 -9
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/devtools/test_semdiff_harness_units.py +61 -22
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/devtools/test_semdiff_lifecycle.py +15 -6
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/utils/test_dbt_docs_generate.py +107 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/utils/test_run_dbt_command.py +46 -0
- typedef_data_intelligence-0.32.0/tests/test_model_tier_validation.py +0 -70
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/.dockerignore +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/.env.example +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/.gitignore +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/.justfile_help.txt +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/Dockerfile +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/Dockerfile.dev +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/Justfile +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/README.pypi.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/config.api.yml +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/config.cli.yml +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/config.desktop.yml +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/config.ingest.unified.yml +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/config.ingest.yml +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docker-entrypoint.dev.sh +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/LINEAR_TICKETING_BACKEND.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/architecture/BUSINESS_CONCEPT_INDEX.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/architecture/CLUSTERING_ALGORITHM_DECISION.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/architecture/GENERIC_REPORT_SCHEMA.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/architecture/HYBRID_ANALYSIS_ARCHITECTURE.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/architecture/PHASE2_IR_STITCHING.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/architecture/PIPELINE_PRIMITIVES_USECASES.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/architecture/SALESFORCE_REPORT_IR.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/architecture/SEMANTIC_JOIN_RESOLUTION.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/architecture/SEMANTIC_SCHEMA_DESIGN.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/design/AGENT_DESIGN_NOTES.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/design/COLUMN_PROFILING.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/design/COLUMN_PROFILING_IMPLEMENTATION.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/design/EXTRACTION_DETECTION.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/design/PERFORMANCE_AND_QUALITY_SPECIALISTS.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/design/STREAMING_SUBAGENT_ARCHITECTURE.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/reference/AGENT_USER_GUIDE.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/reference/GETTING_STARTED.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/reference/MIGRATION_THREE_SQL.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/reference/SCOPE_LEVEL_LINEAGE_GUIDE.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/reference/SEMANTIC_DIFF_HARNESS.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/reference/SEMANTIC_DIMENSIONS_GUIDE.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/docs/reference/TYPE_ENUMS.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/pytest.ini +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/scripts/create_salesforce_reports.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/scripts/data_generation/utils.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/scripts/databricks-smoke.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/scripts/delete_salesforce_reports.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/scripts/populate_salesforce_schema.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/scripts/reset_demo_git_workspace.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/scripts/reset_demo_linear.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/scripts/snowflake_server.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/scripts/surreal-engine-bench.sh +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/scripts/surreal-fts-b2-corpus.sh +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/scripts/surreal-fts-bench.sh +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/scripts/surreal-fts-quality.sh +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/snowflake-mcp-config.yaml +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/auth_context.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/concept_cards.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/controlplane_identity.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/desktop_runtime.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/desktop_semdiff_provision.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/graph_availability.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/posthog_analytics.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/semantic_runtime.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/serve.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/context_projects/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/context_projects/dbt_plugin.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/backward_dryrun.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/clustering_metrics.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/drop_snowflake_tables.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/ephemeral_lineage_report.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/eval_clustering.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/list_ephemeral_models.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/refingerprint_cache.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/regen_semantic_goldens.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/reset_git_workspace.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/reset_linear_workspace.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/reset_project.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/run_dbt_workflow.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/seed_census.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/semantic_goldens.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/fts_bench.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/fts_cells.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/fts_corpus.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/fts_corpus_dump.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/fts_coverage.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/fts_coverage_report.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/fts_oracle.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/fts_quality.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/fts_quality_bench.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/log_parse.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/report.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/surreal_bench/runner.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/README.md +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/cli.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/db_names.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/dbt_compile.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/diff_runner.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/expected_changes.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures/column_rename_downstream/fixture.yaml +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures/column_rename_downstream/mutation.diff +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures/grain_coarsen/fixture.yaml +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures/grain_coarsen/mutation.diff +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures/grain_deleted_leaf_model/fixture.yaml +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures/grain_deleted_leaf_model/mutation.diff +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures/grain_fanout_compound_oli/fixture.yaml +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures/grain_fanout_compound_oli/mutation.diff +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures/grain_gold_control/fixture.yaml +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures/grain_gold_control/mutation.diff +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures/grain_v1_003_user_telemetry/fixture.yaml +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures/grain_v1_003_user_telemetry/mutation.diff +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/fixtures_loader.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/ingest.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/lifecycle.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/semantic_diff/source_prep.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/surreal/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/devtools/unified_graph/surreal/desktop_mcp.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/mcp/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/mcp/runner.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/mcp/server.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/templates/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/templates/typedef_config.yaml.j2 +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/typedef_cli.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/utils/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/utils/databricks.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/utils/databricks_oauth.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/utils/dbt_profile.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/utils/env.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/utils/git.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/utils/gitignore.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/utils/logging.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/utils/snowflake.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_concept_cards.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_databricks_auth_wiring.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_agents_runtime.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_agents_ticket_resolution.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_clerk_auth.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_databases_delete.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_databricks_oauth.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_databricks_setup.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_delete_endpoints.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_diagnostics.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_posthog.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_runtime.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_salesforce.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_save_env_credentials.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_search.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_secondary_roles_hook.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_semdiff_provision.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_setup_clone.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_setup_env_vars.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_sync_render_profile.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_telemetry.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_workspaces.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_workspaces_adopt.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_workspaces_context_kinds.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_workspaces_delete.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_workspaces_gold_triggers.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_workspaces_integrations.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_workspaces_preview_name.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_workspaces_projects_and_repos.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_workspaces_r3_r10.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_workspaces_wizard.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_desktop_worktree_gold_queue.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_graph_availability_any_sentinel.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_no_legacy_surface.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_surreal_graph_availability.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_target_envelope_reads.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_validate_project_collisions.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_wizard_create_project_integration_persistence.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/api/test_worktree_registry_workspaces_shape.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/backends/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/backends/lineage/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/backends/lineage/test_search_enum_coverage.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/backends/lineage/test_surreal_search.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/conftest.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/devtools/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/devtools/surreal_bench/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/devtools/surreal_bench/test_fts_cells.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/devtools/surreal_bench/test_fts_coverage.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/devtools/surreal_bench/test_fts_quality.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/devtools/surreal_bench/test_log_parse.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/devtools/surreal_bench/test_report.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/docs/test_desktop_posthog_event_docs.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/integration/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/integration/test_semantic_diff_harness.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/mcp/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/mcp/test_desktop_mcp_retry.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/mcp/test_list_projects.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/mcp/test_server.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/test_git_utils.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/test_gitignore_utils.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/test_helpers_semantic.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/test_template_yaml_escaping.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/test_typedef_cli_import_budget.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/test_unified_cli_airflow.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/devtools/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/devtools/test_semdiff_expected_changes.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/devtools/test_semdiff_lifecycle_io.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/devtools/test_semdiff_lifecycle_provisioning.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/formula/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/utils/__init__.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/utils/test_databricks_utils.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/utils/test_dbt_profile.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/utils/test_logging.py +0 -0
- {typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/tests/unit/utils/test_snowflake_utils.py +0 -0
|
@@ -1,5 +1,64 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.34.0](https://github.com/typedef-ai/typedef/compare/typedef-data-intelligence-v0.33.0...typedef-data-intelligence-v0.34.0) (2026-07-01)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Miscellaneous Chores
|
|
7
|
+
|
|
8
|
+
* **agent:** prune dead PydanticAI orchestrator builders + .yaml.j2 prompts (TD-3776) ([#1065](https://github.com/typedef-ai/typedef/issues/1065)) ([0d05b9d](https://github.com/typedef-ai/typedef/commit/0d05b9d195a921db341252314fed5c286356a5ce))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **desktop:** Airflow additional catalogs/databases allowlist + fix DatabaseRef allowlist PATCH (TD-3770, TD-3772) ([#1060](https://github.com/typedef-ai/typedef/issues/1060)) ([60d550c](https://github.com/typedef-ai/typedef/commit/60d550c7beacb9d202e18c2bd93b7901b15e4f50))
|
|
14
|
+
* **desktop:** capture frontend webview console logs (TD-3711) ([#1041](https://github.com/typedef-ai/typedef/issues/1041)) ([cc1a345](https://github.com/typedef-ai/typedef/commit/cc1a345a4f11d6757b4e18334a4f5ac297f58dc4))
|
|
15
|
+
* **testing:** add portable test-home overlays ([#1047](https://github.com/typedef-ai/typedef/issues/1047)) ([56bc013](https://github.com/typedef-ai/typedef/commit/56bc01367995a9c53c66531914302c744548c1bc))
|
|
16
|
+
* **testing:** clone referenced repos during test-home provisioning ([#1048](https://github.com/typedef-ai/typedef/issues/1048)) ([1f38adf](https://github.com/typedef-ai/typedef/commit/1f38adfbd85ad321638429451334069799802794))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* **core:** remove silent config/workspace fallbacks — fail-fast (TD-3515) ([#1053](https://github.com/typedef-ai/typedef/issues/1053)) ([b599d0a](https://github.com/typedef-ai/typedef/commit/b599d0a111abd9c57ef20ba7e963002c61d468f8))
|
|
22
|
+
* **desktop:** name failing preflight step and pin error banner by Continue (TD-3657) ([#1039](https://github.com/typedef-ai/typedef/issues/1039)) ([8a0c004](https://github.com/typedef-ai/typedef/commit/8a0c004fc4178edba294771caf3160b4cd848ec7))
|
|
23
|
+
* **desktop:** resolve worktree repo from active worktree (TD-3514) ([#1026](https://github.com/typedef-ai/typedef/issues/1026)) ([d033653](https://github.com/typedef-ai/typedef/commit/d0336531c3d723a7194e5491e729c640098b03f0))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Code Refactoring
|
|
27
|
+
|
|
28
|
+
* **ingest:** move dbt core behind graph source boundary (TD-3432) ([#1074](https://github.com/typedef-ai/typedef/issues/1074)) ([6c471c5](https://github.com/typedef-ai/typedef/commit/6c471c51e78803568cb52db1fee5d66d023385fc))
|
|
29
|
+
|
|
30
|
+
## [0.33.0](https://github.com/typedef-ai/typedef/compare/typedef-data-intelligence-v0.32.0...typedef-data-intelligence-v0.33.0) (2026-06-26)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Miscellaneous Chores
|
|
34
|
+
|
|
35
|
+
* **typecheck:** bootstrap shared ty burndown helpers (TD-3643) ([#1027](https://github.com/typedef-ai/typedef/issues/1027)) ([8661932](https://github.com/typedef-ai/typedef/commit/866193281039c974cae3b4b8d41b5adc28452dee))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### Features
|
|
39
|
+
|
|
40
|
+
* **desktop-sync:** add request-scoped matrix sync overrides (TD-3629) ([#1022](https://github.com/typedef-ai/typedef/issues/1022)) ([5db8f29](https://github.com/typedef-ai/typedef/commit/5db8f2945f41b92772bb3786052d2d843822d209))
|
|
41
|
+
* **desktop:** add isolated test home tooling ([#996](https://github.com/typedef-ai/typedef/issues/996)) ([309a5f3](https://github.com/typedef-ai/typedef/commit/309a5f30f944309414e6ee1489fc816e87fe1d60))
|
|
42
|
+
* **desktop:** kind-aware Airflow worktree + project-relative RTIF snapshot (TD-3446, TD-3409) ([#1018](https://github.com/typedef-ai/typedef/issues/1018)) ([edd4ae4](https://github.com/typedef-ai/typedef/commit/edd4ae4d76c792ef48e3fe59566baf82c41309a2))
|
|
43
|
+
* **just:** worktree disk reclaim recipes (tdh-clean + worktree-reclaim) (TD-3660) ([#1036](https://github.com/typedef-ai/typedef/issues/1036)) ([a1d7e7e](https://github.com/typedef-ai/typedef/commit/a1d7e7e9899f5ed0168130a8b6a44d8f67798424))
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
### Bug Fixes
|
|
47
|
+
|
|
48
|
+
* **agent:** await memory observer org writes (TD-3645) ([#1032](https://github.com/typedef-ai/typedef/issues/1032)) ([70abe66](https://github.com/typedef-ai/typedef/commit/70abe66ee1d93adcd715ade66ae7f09a68094299))
|
|
49
|
+
* **core:** refuse to guess workspace for graph reads (TD-3378) ([#978](https://github.com/typedef-ai/typedef/issues/978)) ([036c6bf](https://github.com/typedef-ai/typedef/commit/036c6bf7c26061d8161b71542cf2bb2c03c42f81))
|
|
50
|
+
* **desktop:** make worktree DB clone usable by the agent (TD-3507) ([#974](https://github.com/typedef-ai/typedef/issues/974)) ([beb8e2e](https://github.com/typedef-ai/typedef/commit/beb8e2e60d2c216147259e32624048c5493519df))
|
|
51
|
+
* **desktop:** strip server-owned `unused` flag before connector validation (TD-3632) ([#1013](https://github.com/typedef-ai/typedef/issues/1013)) ([557f832](https://github.com/typedef-ai/typedef/commit/557f832aea36cdce13651472311fafa405105853))
|
|
52
|
+
* **desktop:** workspace-key clone state at the source (TD-3565) ([#1000](https://github.com/typedef-ai/typedef/issues/1000)) ([b8f526b](https://github.com/typedef-ai/typedef/commit/b8f526be3fec093b6d68b53a413355221326a9d0))
|
|
53
|
+
* **desktop:** workspace-scope all worktree-keyed state (TD-3562) ([#988](https://github.com/typedef-ai/typedef/issues/988)) ([b7df8d5](https://github.com/typedef-ai/typedef/commit/b7df8d54485518dcb1eed8d4bf109d62fb940c1c))
|
|
54
|
+
* **desktop:** workspace-scope worktree resolution + write-target guard (TD-3610, TD-3623) ([#1005](https://github.com/typedef-ai/typedef/issues/1005)) ([66e56ec](https://github.com/typedef-ai/typedef/commit/66e56ecf591492ffb6cceea741eae7ee0047210c))
|
|
55
|
+
* **ingest:** lock semantic scoped-write contract and surface failures (TD-3633) ([#1031](https://github.com/typedef-ai/typedef/issues/1031)) ([b804356](https://github.com/typedef-ai/typedef/commit/b8043568ea4fc7e85fde505374ad1005268a0036))
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
### Code Refactoring
|
|
59
|
+
|
|
60
|
+
* **desktop:** collapse worktree clone state into one carrier (TD-3507) ([#998](https://github.com/typedef-ai/typedef/issues/998)) ([a9f25f1](https://github.com/typedef-ai/typedef/commit/a9f25f12410b017e0db67629130a73acd0ee72ed))
|
|
61
|
+
|
|
3
62
|
## [0.32.0](https://github.com/typedef-ai/typedef/compare/typedef-data-intelligence-v0.31.1...typedef-data-intelligence-v0.32.0) (2026-06-20)
|
|
4
63
|
|
|
5
64
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: typedef-data-intelligence
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.34.0
|
|
4
4
|
Summary: Unified lineage management and AI-powered analytics platform for dbt projects
|
|
5
5
|
Project-URL: Homepage, https://typedef.ai
|
|
6
6
|
Project-URL: Repository, https://github.com/typedef-ai/data-intelligence
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
"""Memory System Usage Examples.
|
|
2
2
|
|
|
3
|
-
This module demonstrates
|
|
3
|
+
This module demonstrates the async MemoryStorage protocol shape in different
|
|
4
|
+
scenarios.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
Note:
|
|
7
|
+
The FalkorDB-backed memory adapters were removed in M6 (TD-3358), and no
|
|
8
|
+
concrete replacement backend is currently registered. This script exits
|
|
9
|
+
early until create_memory_backend() can return a real MemoryStorage backend.
|
|
9
10
|
"""
|
|
10
11
|
|
|
12
|
+
import asyncio
|
|
11
13
|
|
|
12
14
|
from agent.memory_observer import MemoryObserver
|
|
15
|
+
from core.backends.config import MemoryConfig
|
|
13
16
|
from core.backends.memory.factory import create_memory_backend
|
|
14
17
|
from core.backends.memory.models import (
|
|
15
18
|
DataPattern,
|
|
@@ -17,32 +20,32 @@ from core.backends.memory.models import (
|
|
|
17
20
|
EpisodeType,
|
|
18
21
|
UserPreference,
|
|
19
22
|
)
|
|
23
|
+
from core.backends.memory.protocol import MemoryStorage
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def create_example_memory_backend() -> MemoryStorage | None:
|
|
27
|
+
"""Return the example backend, or None until a post-M6 backend exists."""
|
|
28
|
+
return create_memory_backend(
|
|
29
|
+
MemoryConfig(
|
|
30
|
+
backend="none",
|
|
31
|
+
enabled=False,
|
|
32
|
+
default_org_id="example_org",
|
|
33
|
+
default_user_id="local-user",
|
|
34
|
+
)
|
|
35
|
+
)
|
|
36
|
+
|
|
20
37
|
|
|
21
38
|
# ============================================================================
|
|
22
39
|
# Example 1: Basic Memory Backend Usage
|
|
23
40
|
# ============================================================================
|
|
24
41
|
|
|
25
42
|
|
|
26
|
-
def example_basic_usage():
|
|
43
|
+
async def example_basic_usage(memory: MemoryStorage):
|
|
27
44
|
"""Basic memory backend initialization and usage."""
|
|
28
45
|
print("=" * 60)
|
|
29
46
|
print("Example 1: Basic Memory Backend Usage")
|
|
30
47
|
print("=" * 60)
|
|
31
48
|
|
|
32
|
-
# Create memory backend
|
|
33
|
-
memory = create_memory_backend(
|
|
34
|
-
backend="falkordb",
|
|
35
|
-
host="localhost",
|
|
36
|
-
port=6379,
|
|
37
|
-
username="",
|
|
38
|
-
password="",
|
|
39
|
-
default_org_id="example_org",
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
if not memory:
|
|
43
|
-
print("❌ Memory backend not available")
|
|
44
|
-
return
|
|
45
|
-
|
|
46
49
|
print("✅ Memory backend initialized")
|
|
47
50
|
|
|
48
51
|
# Store a user preference
|
|
@@ -54,18 +57,15 @@ def example_basic_usage():
|
|
|
54
57
|
learned_from="Interactive session with Alice",
|
|
55
58
|
)
|
|
56
59
|
|
|
57
|
-
memory.store_user_memory(user_id="alice", episode=preference.to_episode())
|
|
60
|
+
await memory.store_user_memory(user_id="alice", episode=preference.to_episode())
|
|
58
61
|
print("✅ Stored user preference: default_chart_type=bar")
|
|
59
62
|
|
|
60
63
|
# Search user memory
|
|
61
|
-
results = memory.search_user_memory(user_id="alice", query="chart", limit=5)
|
|
64
|
+
results = await memory.search_user_memory(user_id="alice", query="chart", limit=5)
|
|
62
65
|
print(f"✅ Found {len(results)} memories for alice")
|
|
63
66
|
|
|
64
67
|
for result in results:
|
|
65
|
-
print(
|
|
66
|
-
f" - {result.episode.name} (score: {result.score:.2f}): "
|
|
67
|
-
f"{result.episode.content[:50]}..."
|
|
68
|
-
)
|
|
68
|
+
print(f" - {result.rank}. {result.fact[:80]}...")
|
|
69
69
|
|
|
70
70
|
# Store organization pattern
|
|
71
71
|
pattern = DataPattern(
|
|
@@ -78,17 +78,17 @@ def example_basic_usage():
|
|
|
78
78
|
confidence=0.95,
|
|
79
79
|
)
|
|
80
80
|
|
|
81
|
-
memory.store_org_memory(org_id="example_org", episode=pattern.to_episode())
|
|
81
|
+
await memory.store_org_memory(org_id="example_org", episode=pattern.to_episode())
|
|
82
82
|
print("✅ Stored organization pattern: customers_to_orders join")
|
|
83
83
|
|
|
84
84
|
# Search organization memory
|
|
85
|
-
results = memory.search_org_memory(
|
|
85
|
+
results = await memory.search_org_memory(
|
|
86
86
|
org_id="example_org", query="customer joins", limit=5
|
|
87
87
|
)
|
|
88
88
|
print(f"✅ Found {len(results)} org patterns")
|
|
89
89
|
|
|
90
90
|
# Hybrid search (both user and org)
|
|
91
|
-
results = memory.search_all(
|
|
91
|
+
results = await memory.search_all(
|
|
92
92
|
user_id="alice", org_id="example_org", query="customer", limit=10
|
|
93
93
|
)
|
|
94
94
|
print(f"✅ Hybrid search found {len(results)} total memories")
|
|
@@ -101,29 +101,19 @@ def example_basic_usage():
|
|
|
101
101
|
# ============================================================================
|
|
102
102
|
|
|
103
103
|
|
|
104
|
-
def example_memory_observer():
|
|
104
|
+
async def example_memory_observer(memory: MemoryStorage):
|
|
105
105
|
"""Demonstrate automatic pattern capture with MemoryObserver."""
|
|
106
106
|
print("=" * 60)
|
|
107
107
|
print("Example 2: Memory Observer for Auto-Capture")
|
|
108
108
|
print("=" * 60)
|
|
109
109
|
|
|
110
|
-
memory = create_memory_backend(
|
|
111
|
-
backend="falkordb",
|
|
112
|
-
host="localhost",
|
|
113
|
-
port=6379,
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
if not memory:
|
|
117
|
-
print("❌ Memory backend not available")
|
|
118
|
-
return
|
|
119
|
-
|
|
120
110
|
# Create observer
|
|
121
111
|
observer = MemoryObserver(memory_backend=memory)
|
|
122
112
|
print("✅ Memory observer initialized")
|
|
123
113
|
|
|
124
114
|
# Scenario 1: User queries a semantic view
|
|
125
115
|
print("\n📊 Scenario: User queries ARR by customer segment")
|
|
126
|
-
observer.observe_semantic_query(
|
|
116
|
+
await observer.observe_semantic_query(
|
|
127
117
|
org_id="example_org",
|
|
128
118
|
view_name="sv_arr_reporting",
|
|
129
119
|
query_pattern="Group by customer_segment, aggregate total_arr",
|
|
@@ -135,7 +125,7 @@ def example_memory_observer():
|
|
|
135
125
|
|
|
136
126
|
# Scenario 2: Agent discovers a join
|
|
137
127
|
print("\n🔗 Scenario: Agent joins ARR to customer dimension")
|
|
138
|
-
observer.observe_join_pattern(
|
|
128
|
+
await observer.observe_join_pattern(
|
|
139
129
|
org_id="example_org",
|
|
140
130
|
models=["fct_arr_reporting", "dim_customers"],
|
|
141
131
|
join_condition="customer_id",
|
|
@@ -145,7 +135,7 @@ def example_memory_observer():
|
|
|
145
135
|
|
|
146
136
|
# Scenario 3: Agent defines a metric
|
|
147
137
|
print("\n📈 Scenario: Agent calculates MRR metric")
|
|
148
|
-
observer.observe_metric_definition(
|
|
138
|
+
await observer.observe_metric_definition(
|
|
149
139
|
org_id="example_org",
|
|
150
140
|
metric_name="MRR",
|
|
151
141
|
calculation="SUM(subscription_amount) / 12",
|
|
@@ -156,7 +146,7 @@ def example_memory_observer():
|
|
|
156
146
|
|
|
157
147
|
# Scenario 4: Agent finds data quality issue
|
|
158
148
|
print("\n⚠️ Scenario: Agent finds null email addresses")
|
|
159
|
-
observer.observe_data_quality_issue(
|
|
149
|
+
await observer.observe_data_quality_issue(
|
|
160
150
|
org_id="example_org",
|
|
161
151
|
issue_type="null_values",
|
|
162
152
|
description="dim_customers has approximately 5% null email addresses",
|
|
@@ -166,7 +156,9 @@ def example_memory_observer():
|
|
|
166
156
|
print("✅ Auto-captured data quality issue")
|
|
167
157
|
|
|
168
158
|
# Verify patterns were stored
|
|
169
|
-
results = memory.search_org_memory(
|
|
159
|
+
results = await memory.search_org_memory(
|
|
160
|
+
org_id="example_org", query="patterns", limit=10
|
|
161
|
+
)
|
|
170
162
|
print(f"\n✅ Total patterns stored: {len(results)}")
|
|
171
163
|
|
|
172
164
|
print()
|
|
@@ -177,27 +169,17 @@ def example_memory_observer():
|
|
|
177
169
|
# ============================================================================
|
|
178
170
|
|
|
179
171
|
|
|
180
|
-
def example_user_personalization():
|
|
172
|
+
async def example_user_personalization(memory: MemoryStorage):
|
|
181
173
|
"""Demonstrate building user personalization over time."""
|
|
182
174
|
print("=" * 60)
|
|
183
175
|
print("Example 3: User Personalization Flow")
|
|
184
176
|
print("=" * 60)
|
|
185
177
|
|
|
186
|
-
memory = create_memory_backend(
|
|
187
|
-
backend="falkordb",
|
|
188
|
-
host="localhost",
|
|
189
|
-
port=6379,
|
|
190
|
-
)
|
|
191
|
-
|
|
192
|
-
if not memory:
|
|
193
|
-
print("❌ Memory backend not available")
|
|
194
|
-
return
|
|
195
|
-
|
|
196
178
|
user_id = "bob@example.com"
|
|
197
179
|
|
|
198
180
|
# Session 1: User asks about ARR
|
|
199
181
|
print("\n📅 Session 1: Bob asks about ARR trends")
|
|
200
|
-
memory.store_user_memory(
|
|
182
|
+
await memory.store_user_memory(
|
|
201
183
|
user_id=user_id,
|
|
202
184
|
episode=Episode(
|
|
203
185
|
name="arr_trends_query",
|
|
@@ -210,7 +192,7 @@ def example_user_personalization():
|
|
|
210
192
|
|
|
211
193
|
# Session 2: User expresses chart preference
|
|
212
194
|
print("\n📅 Session 2: Bob mentions chart preference")
|
|
213
|
-
memory.store_user_memory(
|
|
195
|
+
await memory.store_user_memory(
|
|
214
196
|
user_id=user_id,
|
|
215
197
|
episode=UserPreference(
|
|
216
198
|
key="preferred_chart_for_trends",
|
|
@@ -224,7 +206,7 @@ def example_user_personalization():
|
|
|
224
206
|
|
|
225
207
|
# Session 3: User sets default date range
|
|
226
208
|
print("\n📅 Session 3: Bob sets default date range")
|
|
227
|
-
memory.store_user_memory(
|
|
209
|
+
await memory.store_user_memory(
|
|
228
210
|
user_id=user_id,
|
|
229
211
|
episode=UserPreference(
|
|
230
212
|
key="default_date_range",
|
|
@@ -238,11 +220,13 @@ def example_user_personalization():
|
|
|
238
220
|
|
|
239
221
|
# Session 4: Recall context for personalization
|
|
240
222
|
print("\n📅 Session 4: Bob returns, agent recalls preferences")
|
|
241
|
-
results = memory.search_user_memory(
|
|
223
|
+
results = await memory.search_user_memory(
|
|
224
|
+
user_id=user_id, query="preferences", limit=5
|
|
225
|
+
)
|
|
242
226
|
|
|
243
227
|
print(f"✅ Recalled {len(results)} preferences:")
|
|
244
228
|
for result in results:
|
|
245
|
-
print(f" - {result.
|
|
229
|
+
print(f" - {result.rank}. {result.fact[:80]}...")
|
|
246
230
|
|
|
247
231
|
# Agent can now personalize:
|
|
248
232
|
# - Use line charts for trend queries (not bar charts)
|
|
@@ -257,22 +241,12 @@ def example_user_personalization():
|
|
|
257
241
|
# ============================================================================
|
|
258
242
|
|
|
259
243
|
|
|
260
|
-
def example_org_knowledge_building():
|
|
244
|
+
async def example_org_knowledge_building(memory: MemoryStorage):
|
|
261
245
|
"""Demonstrate building organization-wide knowledge base."""
|
|
262
246
|
print("=" * 60)
|
|
263
247
|
print("Example 4: Organization Knowledge Building")
|
|
264
248
|
print("=" * 60)
|
|
265
249
|
|
|
266
|
-
memory = create_memory_backend(
|
|
267
|
-
backend="falkordb",
|
|
268
|
-
host="localhost",
|
|
269
|
-
port=6379,
|
|
270
|
-
)
|
|
271
|
-
|
|
272
|
-
if not memory:
|
|
273
|
-
print("❌ Memory backend not available")
|
|
274
|
-
return
|
|
275
|
-
|
|
276
250
|
org_id = "acme_corp"
|
|
277
251
|
|
|
278
252
|
# Pattern 1: Common fact-to-dimension joins
|
|
@@ -294,7 +268,7 @@ def example_org_knowledge_building():
|
|
|
294
268
|
discovered_by="data_engineer_agent",
|
|
295
269
|
confidence=0.95,
|
|
296
270
|
)
|
|
297
|
-
memory.store_org_memory(org_id=org_id, episode=pattern.to_episode())
|
|
271
|
+
await memory.store_org_memory(org_id=org_id, episode=pattern.to_episode())
|
|
298
272
|
|
|
299
273
|
print(f"✅ Stored {len(common_joins)} common join patterns")
|
|
300
274
|
|
|
@@ -320,7 +294,7 @@ def example_org_knowledge_building():
|
|
|
320
294
|
discovered_by="analyst_agent",
|
|
321
295
|
confidence=0.99,
|
|
322
296
|
)
|
|
323
|
-
memory.store_org_memory(org_id=org_id, episode=pattern.to_episode())
|
|
297
|
+
await memory.store_org_memory(org_id=org_id, episode=pattern.to_episode())
|
|
324
298
|
|
|
325
299
|
print(f"✅ Stored {len(metrics)} metric definitions")
|
|
326
300
|
|
|
@@ -341,20 +315,17 @@ def example_org_knowledge_building():
|
|
|
341
315
|
discovered_by="data_engineer_agent",
|
|
342
316
|
confidence=0.90,
|
|
343
317
|
)
|
|
344
|
-
memory.store_org_memory(org_id=org_id, episode=pattern.to_episode())
|
|
318
|
+
await memory.store_org_memory(org_id=org_id, episode=pattern.to_episode())
|
|
345
319
|
|
|
346
320
|
print(f"✅ Stored {len(grains)} grain patterns")
|
|
347
321
|
|
|
348
322
|
# Query the built knowledge
|
|
349
323
|
print("\n🔍 Querying organization knowledge")
|
|
350
|
-
results = memory.search_org_memory(org_id=org_id, query="ARR metric", limit=5)
|
|
324
|
+
results = await memory.search_org_memory(org_id=org_id, query="ARR metric", limit=5)
|
|
351
325
|
print(f"✅ ARR metric search: {len(results)} results")
|
|
352
326
|
|
|
353
327
|
for result in results:
|
|
354
|
-
print(
|
|
355
|
-
f" - {result.episode.metadata.get('pattern_type', 'unknown')}: "
|
|
356
|
-
f"{result.episode.name} (confidence: {result.episode.metadata.get('confidence', 0):.2f})"
|
|
357
|
-
)
|
|
328
|
+
print(f" - {result.rank}. {result.fact[:80]}...")
|
|
358
329
|
|
|
359
330
|
print()
|
|
360
331
|
|
|
@@ -364,39 +335,29 @@ def example_org_knowledge_building():
|
|
|
364
335
|
# ============================================================================
|
|
365
336
|
|
|
366
337
|
|
|
367
|
-
def example_memory_management():
|
|
338
|
+
async def example_memory_management(memory: MemoryStorage):
|
|
368
339
|
"""Demonstrate memory statistics and management."""
|
|
369
340
|
print("=" * 60)
|
|
370
341
|
print("Example 5: Memory Statistics and Management")
|
|
371
342
|
print("=" * 60)
|
|
372
343
|
|
|
373
|
-
memory = create_memory_backend(
|
|
374
|
-
backend="falkordb",
|
|
375
|
-
host="localhost",
|
|
376
|
-
port=6379,
|
|
377
|
-
)
|
|
378
|
-
|
|
379
|
-
if not memory:
|
|
380
|
-
print("❌ Memory backend not available")
|
|
381
|
-
return
|
|
382
|
-
|
|
383
344
|
# Get user statistics
|
|
384
345
|
print("\n📊 User Memory Statistics")
|
|
385
|
-
stats = memory.get_stats(user_id="alice")
|
|
346
|
+
stats = await memory.get_stats(user_id="alice")
|
|
386
347
|
print(f"User memory: {stats}")
|
|
387
348
|
|
|
388
349
|
# Get organization statistics
|
|
389
350
|
print("\n📊 Organization Memory Statistics")
|
|
390
|
-
stats = memory.get_stats(org_id="example_org")
|
|
351
|
+
stats = await memory.get_stats(org_id="example_org")
|
|
391
352
|
print(f"Org memory: {stats}")
|
|
392
353
|
|
|
393
354
|
# Clear user memory (GDPR compliance example)
|
|
394
355
|
print("\n🗑️ GDPR: User requests memory deletion")
|
|
395
|
-
memory.clear_user_memory(user_id="alice")
|
|
356
|
+
await memory.clear_user_memory(user_id="alice")
|
|
396
357
|
print("✅ Alice's memory cleared")
|
|
397
358
|
|
|
398
359
|
# Verify deletion
|
|
399
|
-
stats = memory.get_stats(user_id="alice")
|
|
360
|
+
stats = await memory.get_stats(user_id="alice")
|
|
400
361
|
print(f"Alice's memory after deletion: {stats}")
|
|
401
362
|
|
|
402
363
|
print()
|
|
@@ -407,18 +368,28 @@ def example_memory_management():
|
|
|
407
368
|
# ============================================================================
|
|
408
369
|
|
|
409
370
|
|
|
410
|
-
|
|
371
|
+
async def main():
|
|
372
|
+
"""Run all memory usage examples."""
|
|
411
373
|
print("\n" + "=" * 60)
|
|
412
374
|
print("MEMORY SYSTEM USAGE EXAMPLES")
|
|
413
375
|
print("=" * 60 + "\n")
|
|
414
376
|
|
|
377
|
+
memory = create_example_memory_backend()
|
|
378
|
+
if memory is None:
|
|
379
|
+
print("❌ Memory backend not available; examples skipped")
|
|
380
|
+
return
|
|
381
|
+
|
|
415
382
|
# Run all examples
|
|
416
|
-
example_basic_usage()
|
|
417
|
-
example_memory_observer()
|
|
418
|
-
example_user_personalization()
|
|
419
|
-
example_org_knowledge_building()
|
|
420
|
-
example_memory_management()
|
|
383
|
+
await example_basic_usage(memory)
|
|
384
|
+
await example_memory_observer(memory)
|
|
385
|
+
await example_user_personalization(memory)
|
|
386
|
+
await example_org_knowledge_building(memory)
|
|
387
|
+
await example_memory_management(memory)
|
|
421
388
|
|
|
422
389
|
print("=" * 60)
|
|
423
390
|
print("All examples completed!")
|
|
424
391
|
print("=" * 60)
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
if __name__ == "__main__":
|
|
395
|
+
asyncio.run(main())
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
This demonstrates how the same tool can have different descriptions
|
|
4
4
|
depending on which specialist is using it.
|
|
5
5
|
"""
|
|
6
|
-
from agent.orchestrator import AgentDeps
|
|
7
6
|
from agent.toolsets.data import add_execute_query_tool
|
|
8
7
|
from agent.toolsets.graph import add_query_graph_tool
|
|
8
|
+
from agent.types import AgentDeps
|
|
9
9
|
from pydantic_ai import Agent
|
|
10
10
|
|
|
11
11
|
|
{typedef_data_intelligence-0.32.0 → typedef_data_intelligence-0.34.0}/src/lineage/api/app.py
RENAMED
|
@@ -52,6 +52,15 @@ _HAS_DESKTOP_API = _API_PROFILE.has(ApiCapability.DESKTOP_ROUTES) and _API_PROFI
|
|
|
52
52
|
ApiCapability.UNIFIED_GRAPH
|
|
53
53
|
)
|
|
54
54
|
_NEEDS_LEGACY_STATE = False
|
|
55
|
+
DYNAMIC_LOCAL_CORS_REGEX = r"^https?://(localhost|127\.0\.0\.1)(:\d+)?$"
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _dynamic_local_cors_regex() -> str | None:
|
|
59
|
+
"""Allow arbitrary local dev ports only when explicitly enabled."""
|
|
60
|
+
enabled = os.environ.get("TYPEDEF_ENABLE_DYNAMIC_LOCAL_CORS", "").lower()
|
|
61
|
+
if _HAS_DESKTOP_API and enabled in {"1", "true", "yes"}:
|
|
62
|
+
return DYNAMIC_LOCAL_CORS_REGEX
|
|
63
|
+
return None
|
|
55
64
|
|
|
56
65
|
|
|
57
66
|
def _legacy_state_from_request(request: Request) -> Any | None:
|
|
@@ -296,7 +305,10 @@ async def lifespan(app: FastAPI):
|
|
|
296
305
|
logger.debug("gold-build temp dir cleanup failed", exc_info=True)
|
|
297
306
|
|
|
298
307
|
try:
|
|
299
|
-
from core.paths import
|
|
308
|
+
from core.paths import (
|
|
309
|
+
cleanup_stale_frontend_logs,
|
|
310
|
+
cleanup_stale_wizard_scratch,
|
|
311
|
+
)
|
|
300
312
|
|
|
301
313
|
removed_wizard_scratch = cleanup_stale_wizard_scratch()
|
|
302
314
|
if removed_wizard_scratch:
|
|
@@ -305,6 +317,15 @@ async def lifespan(app: FastAPI):
|
|
|
305
317
|
len(removed_wizard_scratch),
|
|
306
318
|
)
|
|
307
319
|
|
|
320
|
+
# TD-3711: prune captured frontend (webview) logs by age + total size
|
|
321
|
+
# so optional capture can never grow unbounded.
|
|
322
|
+
removed_frontend_logs = cleanup_stale_frontend_logs()
|
|
323
|
+
if removed_frontend_logs:
|
|
324
|
+
logger.info(
|
|
325
|
+
"Removed %d stale frontend log file(s) on startup",
|
|
326
|
+
len(removed_frontend_logs),
|
|
327
|
+
)
|
|
328
|
+
|
|
308
329
|
# TD-3200 Phase 3: convert any already-workspaces-shape config from the
|
|
309
330
|
# pre-envelope ContextEntry/flat-LineageTarget shape to the
|
|
310
331
|
# ContextProject/BuildTarget envelope. Operates only on
|
|
@@ -408,6 +429,9 @@ async def lifespan(app: FastAPI):
|
|
|
408
429
|
"Initialized standalone threads backend: %s",
|
|
409
430
|
_ucfg_for_threads.threads.db_path,
|
|
410
431
|
)
|
|
432
|
+
_migrate_threads_workspace_scope(
|
|
433
|
+
app.state.standalone_threads_backend, _ucfg_for_threads
|
|
434
|
+
)
|
|
411
435
|
except Exception as exc:
|
|
412
436
|
logger.warning(
|
|
413
437
|
"Could not initialize threads backend for desktop: %s", exc
|
|
@@ -1060,6 +1084,35 @@ def initialize_app_state() -> AppState:
|
|
|
1060
1084
|
)
|
|
1061
1085
|
|
|
1062
1086
|
|
|
1087
|
+
def _migrate_threads_workspace_scope(
|
|
1088
|
+
threads_backend: ThreadsBackend, cfg: UnifiedConfig
|
|
1089
|
+
) -> None:
|
|
1090
|
+
"""Run the one-time TD-3562 worktree-scope re-key on the desktop threads DB.
|
|
1091
|
+
|
|
1092
|
+
Re-keys existing chat history from bare worktree ids to workspace-scoped
|
|
1093
|
+
keys so it isn't silently orphaned by the new scoping. Idempotent (the
|
|
1094
|
+
backend guards on a versioned sentinel). Never breaks boot — a migration
|
|
1095
|
+
failure degrades to "history may appear under the wrong key" rather than a
|
|
1096
|
+
dead backend. TEMPORARY: remove with the migration module one release
|
|
1097
|
+
later (TD-3564).
|
|
1098
|
+
"""
|
|
1099
|
+
from core.backends.threads.migration import migrate_workspace_scope
|
|
1100
|
+
|
|
1101
|
+
try:
|
|
1102
|
+
workspaces = getattr(cfg, "workspaces", None) or {}
|
|
1103
|
+
workspace_worktrees = {
|
|
1104
|
+
ws_name: list((getattr(ws, "worktrees", None) or {}).keys())
|
|
1105
|
+
for ws_name, ws in workspaces.items()
|
|
1106
|
+
}
|
|
1107
|
+
migrate_workspace_scope(threads_backend, workspace_worktrees)
|
|
1108
|
+
except Exception: # noqa: BLE001 — never break boot on migration issues
|
|
1109
|
+
logger.warning(
|
|
1110
|
+
"[td-3562] threads worktree-scope migration failed; existing chat "
|
|
1111
|
+
"history may appear under its pre-migration key until resolved",
|
|
1112
|
+
exc_info=True,
|
|
1113
|
+
)
|
|
1114
|
+
|
|
1115
|
+
|
|
1063
1116
|
def _load_unified_config() -> UnifiedConfig:
|
|
1064
1117
|
"""Load UnifiedConfig for desktop profile mode.
|
|
1065
1118
|
|
|
@@ -1182,6 +1235,7 @@ app.add_middleware(
|
|
|
1182
1235
|
"tauri://localhost",
|
|
1183
1236
|
"https://tauri.localhost",
|
|
1184
1237
|
],
|
|
1238
|
+
allow_origin_regex=_dynamic_local_cors_regex(),
|
|
1185
1239
|
allow_credentials=True,
|
|
1186
1240
|
allow_methods=["*"],
|
|
1187
1241
|
allow_headers=["*"],
|
|
@@ -1271,6 +1325,7 @@ if _HAS_DESKTOP_API:
|
|
|
1271
1325
|
)
|
|
1272
1326
|
from agent.api.desktop_pty import router as desktop_pty_router # noqa: E402
|
|
1273
1327
|
from lineage.api.desktop_agents import router as desktop_agents_router # noqa: E402
|
|
1328
|
+
from lineage.api.desktop_logs import router as desktop_logs_router # noqa: E402
|
|
1274
1329
|
from lineage.api.desktop_quickstart import (
|
|
1275
1330
|
router as desktop_quickstart_router, # noqa: E402
|
|
1276
1331
|
)
|
|
@@ -1305,6 +1360,7 @@ if _HAS_DESKTOP_API:
|
|
|
1305
1360
|
app.include_router(desktop_quickstart_router)
|
|
1306
1361
|
app.include_router(desktop_sync_router)
|
|
1307
1362
|
app.include_router(desktop_debug_router)
|
|
1363
|
+
app.include_router(desktop_logs_router)
|
|
1308
1364
|
|
|
1309
1365
|
# Mount desktop-graph MCP server at /mcp/ via streamable-http transport.
|
|
1310
1366
|
# When running inside the desktop app, the sidecar is always available —
|