databricks-tellr-app 0.3.11.dev4__tar.gz → 0.3.11.dev6__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.
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/PKG-INFO +1 -1
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/databricks_tellr_app.egg-info/PKG-INFO +1 -1
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/databricks_tellr_app.egg-info/SOURCES.txt +0 -10
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/pyproject.toml +1 -1
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/main.py +0 -2
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/agent_config.py +2 -17
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/export.py +2 -4
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/google_slides.py +1 -5
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/sessions.py +0 -2
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/settings/__init__.py +0 -2
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/schemas/agent_config.py +0 -3
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/services/chat_service.py +5 -29
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/services/export_job_queue.py +2 -4
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/services/session_manager.py +1 -3
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/database.py +0 -71
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/__init__.py +1 -8
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/agent_factory.py +3 -42
- databricks_tellr_app-0.3.11.dev4/src/api/routes/settings/design_systems.py +0 -517
- databricks_tellr_app-0.3.11.dev4/src/database/models/design_system.py +0 -193
- databricks_tellr_app-0.3.11.dev4/src/services/design_system_compiler.py +0 -277
- databricks_tellr_app-0.3.11.dev4/src/services/design_system_service.py +0 -482
- databricks_tellr_app-0.3.11.dev4/src/utils/ds_asset_utils.py +0 -58
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/README.md +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/databricks_tellr_app/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/databricks_tellr_app/run.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/databricks_tellr_app.egg-info/dependency_links.txt +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/databricks_tellr_app.egg-info/requires.txt +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/databricks_tellr_app.egg-info/top_level.txt +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/setup.cfg +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/setup.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/_otel_bootstrap.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/fixtures/tour_demo_deck.json +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/mcp_auth.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/mcp_server.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/middleware/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/middleware/request_logging.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/admin.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/chat.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/deck_contributors.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/feedback.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/images.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/local_version.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/profiles.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/settings/contributors.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/settings/deck_prompts.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/settings/identities.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/settings/slide_styles.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/setup.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/slides.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/tools.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/tour.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/verification.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/version.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/schemas/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/schemas/feedback.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/schemas/requests.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/schemas/responses.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/schemas/settings/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/schemas/settings/requests.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/schemas/settings/responses.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/schemas/streaming.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/services/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/services/feedback_service.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/services/job_queue.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/services/session_naming.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/utils/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/utils/validation.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/config_loader.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/context_utils.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/databricks_client.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/defaults.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/encryption.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/init_default_profile.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/lakebase.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/migrate_profiles_to_agent_config.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/mlflow_agent_spans.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/mlflow_tracing.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/otel_logging.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/permission_context.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/prompt_modules.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/settings_db.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/core/user_context.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/deck_contributor.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/feedback.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/genie_space.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/google_global_credentials.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/google_oauth_token.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/identity.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/image.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/profile.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/profile_contributor.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/prompts.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/request_log.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/session.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/slide_deck_prompt.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/slide_style_library.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/database/models/user_preference.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/domain/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/domain/slide.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/domain/slide_deck.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/agent.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/config_service.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/config_validator.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/drive_uploader.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/evaluation/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/evaluation/llm_judge.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/genie_service.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/google_slides_auth.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/google_slides_prompts_defaults.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/html_to_google_slides.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/html_to_pptx.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/identity_provider.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/identity_providers/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/identity_providers/account_provider.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/identity_providers/local_provider.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/identity_providers/workspace_provider.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/image_service.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/image_tools.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/permission_service.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/pptx_from_html_huashu.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/pptx_from_records.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/pptx_prompts_defaults.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/profile_service.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/streaming_callback.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/tools/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/tools/agent_bricks_tool.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/tools/genie_tool.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/tools/mcp_tool.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/tools/model_endpoint_tool.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/tools/vector_tool.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/validator.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/utils/__init__.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/utils/css_utils.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/utils/error_handling.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/utils/html_safety.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/utils/html_utils.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/utils/image_utils.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/utils/js_validator.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/utils/logging_config.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/utils/pi_filter.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/utils/slide_hash.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/utils/spotlight.py +0 -0
- {databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/utils/text_caps.py +0 -0
|
@@ -33,7 +33,6 @@ setup.py
|
|
|
33
33
|
./src/api/routes/settings/__init__.py
|
|
34
34
|
./src/api/routes/settings/contributors.py
|
|
35
35
|
./src/api/routes/settings/deck_prompts.py
|
|
36
|
-
./src/api/routes/settings/design_systems.py
|
|
37
36
|
./src/api/routes/settings/identities.py
|
|
38
37
|
./src/api/routes/settings/slide_styles.py
|
|
39
38
|
./src/api/schemas/__init__.py
|
|
@@ -74,7 +73,6 @@ setup.py
|
|
|
74
73
|
./src/database/__init__.py
|
|
75
74
|
./src/database/models/__init__.py
|
|
76
75
|
./src/database/models/deck_contributor.py
|
|
77
|
-
./src/database/models/design_system.py
|
|
78
76
|
./src/database/models/feedback.py
|
|
79
77
|
./src/database/models/genie_space.py
|
|
80
78
|
./src/database/models/google_global_credentials.py
|
|
@@ -97,8 +95,6 @@ setup.py
|
|
|
97
95
|
./src/services/agent_factory.py
|
|
98
96
|
./src/services/config_service.py
|
|
99
97
|
./src/services/config_validator.py
|
|
100
|
-
./src/services/design_system_compiler.py
|
|
101
|
-
./src/services/design_system_service.py
|
|
102
98
|
./src/services/drive_uploader.py
|
|
103
99
|
./src/services/genie_service.py
|
|
104
100
|
./src/services/google_slides_auth.py
|
|
@@ -129,7 +125,6 @@ setup.py
|
|
|
129
125
|
./src/services/tools/vector_tool.py
|
|
130
126
|
./src/utils/__init__.py
|
|
131
127
|
./src/utils/css_utils.py
|
|
132
|
-
./src/utils/ds_asset_utils.py
|
|
133
128
|
./src/utils/error_handling.py
|
|
134
129
|
./src/utils/html_safety.py
|
|
135
130
|
./src/utils/html_utils.py
|
|
@@ -177,7 +172,6 @@ src/api/routes/version.py
|
|
|
177
172
|
src/api/routes/settings/__init__.py
|
|
178
173
|
src/api/routes/settings/contributors.py
|
|
179
174
|
src/api/routes/settings/deck_prompts.py
|
|
180
|
-
src/api/routes/settings/design_systems.py
|
|
181
175
|
src/api/routes/settings/identities.py
|
|
182
176
|
src/api/routes/settings/slide_styles.py
|
|
183
177
|
src/api/schemas/__init__.py
|
|
@@ -218,7 +212,6 @@ src/core/user_context.py
|
|
|
218
212
|
src/database/__init__.py
|
|
219
213
|
src/database/models/__init__.py
|
|
220
214
|
src/database/models/deck_contributor.py
|
|
221
|
-
src/database/models/design_system.py
|
|
222
215
|
src/database/models/feedback.py
|
|
223
216
|
src/database/models/genie_space.py
|
|
224
217
|
src/database/models/google_global_credentials.py
|
|
@@ -241,8 +234,6 @@ src/services/agent.py
|
|
|
241
234
|
src/services/agent_factory.py
|
|
242
235
|
src/services/config_service.py
|
|
243
236
|
src/services/config_validator.py
|
|
244
|
-
src/services/design_system_compiler.py
|
|
245
|
-
src/services/design_system_service.py
|
|
246
237
|
src/services/drive_uploader.py
|
|
247
238
|
src/services/genie_service.py
|
|
248
239
|
src/services/google_slides_auth.py
|
|
@@ -273,7 +264,6 @@ src/services/tools/model_endpoint_tool.py
|
|
|
273
264
|
src/services/tools/vector_tool.py
|
|
274
265
|
src/utils/__init__.py
|
|
275
266
|
src/utils/css_utils.py
|
|
276
|
-
src/utils/ds_asset_utils.py
|
|
277
267
|
src/utils/error_handling.py
|
|
278
268
|
src/utils/html_safety.py
|
|
279
269
|
src/utils/html_utils.py
|
|
@@ -27,7 +27,6 @@ from src.core.permission_context import (
|
|
|
27
27
|
from src.api.routes.settings import (
|
|
28
28
|
contributors_router,
|
|
29
29
|
deck_prompts_router,
|
|
30
|
-
design_systems_router,
|
|
31
30
|
identities_router,
|
|
32
31
|
slide_styles_router,
|
|
33
32
|
)
|
|
@@ -435,7 +434,6 @@ app.include_router(contributors_router, prefix="/api/settings", tags=["settings"
|
|
|
435
434
|
app.include_router(deck_prompts_router, prefix="/api/settings", tags=["settings"])
|
|
436
435
|
app.include_router(identities_router, prefix="/api/settings", tags=["settings"])
|
|
437
436
|
app.include_router(slide_styles_router, prefix="/api/settings", tags=["settings"])
|
|
438
|
-
app.include_router(design_systems_router, prefix="/api/settings", tags=["settings"])
|
|
439
437
|
|
|
440
438
|
# MCP server — mount the FastMCP streamable-HTTP ASGI app at /mcp.
|
|
441
439
|
# Must be registered before the SPA catch-all (which is added lazily by
|
{databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/agent_config.py
RENAMED
|
@@ -21,25 +21,10 @@ router = APIRouter(prefix="/api/sessions/{session_id}/agent-config", tags=["agen
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
def _validate_references(config: AgentConfig) -> None:
|
|
24
|
-
"""Validate that
|
|
25
|
-
|
|
26
|
-
from src.database.models import DesignSystem, SlideDeckPromptLibrary, SlideStyleLibrary
|
|
24
|
+
"""Validate that slide_style_id and deck_prompt_id reference existing library entries."""
|
|
25
|
+
from src.database.models import SlideStyleLibrary, SlideDeckPromptLibrary
|
|
27
26
|
|
|
28
27
|
with get_db_session() as db:
|
|
29
|
-
if config.design_system_id is not None:
|
|
30
|
-
design_system = (
|
|
31
|
-
db.query(DesignSystem)
|
|
32
|
-
.filter(
|
|
33
|
-
DesignSystem.id == config.design_system_id,
|
|
34
|
-
DesignSystem.is_active == True, # noqa: E712
|
|
35
|
-
)
|
|
36
|
-
.first()
|
|
37
|
-
)
|
|
38
|
-
if not design_system:
|
|
39
|
-
raise HTTPException(
|
|
40
|
-
status_code=422,
|
|
41
|
-
detail=f"design_system_id {config.design_system_id} not found",
|
|
42
|
-
)
|
|
43
28
|
if config.slide_style_id is not None:
|
|
44
29
|
style = (
|
|
45
30
|
db.query(SlideStyleLibrary)
|
{databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/export.py
RENAMED
|
@@ -405,14 +405,12 @@ async def export_to_pptx(request: ExportPPTXRequest):
|
|
|
405
405
|
if not slide_deck or not slide_deck.get("slides"):
|
|
406
406
|
raise HTTPException(status_code=404, detail="No slides available")
|
|
407
407
|
|
|
408
|
-
# Substitute {{image:ID}}
|
|
409
|
-
# so the PPTX converter can extract and embed the actual images
|
|
410
|
-
from src.utils.ds_asset_utils import substitute_deck_dict_ds_assets
|
|
408
|
+
# Substitute {{image:ID}} placeholders with base64 data URIs
|
|
409
|
+
# so the PPTX converter can extract and embed the actual images
|
|
411
410
|
from src.utils.image_utils import substitute_deck_dict_images
|
|
412
411
|
from src.core.database import get_db_session
|
|
413
412
|
with get_db_session() as db:
|
|
414
413
|
substitute_deck_dict_images(slide_deck, db)
|
|
415
|
-
substitute_deck_dict_ds_assets(slide_deck, db)
|
|
416
414
|
|
|
417
415
|
slide_count = len(slide_deck.get("slides", []))
|
|
418
416
|
log_msg = (
|
|
@@ -276,13 +276,11 @@ async def start_google_slides_export(
|
|
|
276
276
|
if not slide_deck or not slide_deck.get("slides"):
|
|
277
277
|
raise HTTPException(status_code=404, detail="No slides available")
|
|
278
278
|
|
|
279
|
-
# Substitute {{image:ID}}
|
|
280
|
-
from src.utils.ds_asset_utils import substitute_deck_dict_ds_assets
|
|
279
|
+
# Substitute {{image:ID}} placeholders with base64 data URIs
|
|
281
280
|
from src.utils.image_utils import substitute_deck_dict_images
|
|
282
281
|
from src.core.database import get_db_session
|
|
283
282
|
with get_db_session() as db:
|
|
284
283
|
substitute_deck_dict_images(slide_deck, db)
|
|
285
|
-
substitute_deck_dict_ds_assets(slide_deck, db)
|
|
286
284
|
|
|
287
285
|
slides_data = slide_deck.get("slides", [])
|
|
288
286
|
total = len(slides_data)
|
|
@@ -504,11 +502,9 @@ async def export_google_slides_from_huashu(
|
|
|
504
502
|
# legacy /export route). Use a fresh session because the request's `db`
|
|
505
503
|
# is held by the route's transaction context.
|
|
506
504
|
from src.core.database import get_db_session
|
|
507
|
-
from src.utils.ds_asset_utils import substitute_deck_dict_ds_assets
|
|
508
505
|
from src.utils.image_utils import substitute_deck_dict_images
|
|
509
506
|
with get_db_session() as imdb:
|
|
510
507
|
substitute_deck_dict_images(slide_deck, imdb)
|
|
511
|
-
substitute_deck_dict_ds_assets(slide_deck, imdb)
|
|
512
508
|
|
|
513
509
|
title = slide_deck.get("title") or "Presentation"
|
|
514
510
|
slides_data = slide_deck.get("slides") or []
|
{databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/api/routes/sessions.py
RENAMED
|
@@ -149,12 +149,10 @@ def _check_deck_permission_for_session(
|
|
|
149
149
|
def _substitute_deck_images(deck_dict: dict) -> None:
|
|
150
150
|
"""Substitute {{image:ID}} placeholders in a deck dict with base64 data URIs."""
|
|
151
151
|
from src.core.database import get_db_session
|
|
152
|
-
from src.utils.ds_asset_utils import substitute_deck_dict_ds_assets
|
|
153
152
|
from src.utils.image_utils import substitute_deck_dict_images
|
|
154
153
|
|
|
155
154
|
with get_db_session() as db:
|
|
156
155
|
substitute_deck_dict_images(deck_dict, db)
|
|
157
|
-
substitute_deck_dict_ds_assets(deck_dict, db)
|
|
158
156
|
|
|
159
157
|
|
|
160
158
|
@router.post("")
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"""Configuration API routes."""
|
|
2
2
|
from src.api.routes.settings.contributors import router as contributors_router
|
|
3
3
|
from src.api.routes.settings.deck_prompts import router as deck_prompts_router
|
|
4
|
-
from src.api.routes.settings.design_systems import router as design_systems_router
|
|
5
4
|
from src.api.routes.settings.identities import router as identities_router
|
|
6
5
|
from src.api.routes.settings.slide_styles import router as slide_styles_router
|
|
7
6
|
|
|
8
7
|
__all__ = [
|
|
9
8
|
"contributors_router",
|
|
10
9
|
"deck_prompts_router",
|
|
11
|
-
"design_systems_router",
|
|
12
10
|
"identities_router",
|
|
13
11
|
"slide_styles_router",
|
|
14
12
|
]
|
|
@@ -59,9 +59,6 @@ class AgentConfig(BaseModel):
|
|
|
59
59
|
"""Agent configuration stored as JSON on sessions and profiles."""
|
|
60
60
|
tools: list[ToolEntry] = Field(default_factory=list)
|
|
61
61
|
slide_style_id: Optional[int] = None
|
|
62
|
-
# A selected design system compiles to prompt text and, when set, takes
|
|
63
|
-
# precedence over slide_style_id (see agent_factory._get_prompt_content).
|
|
64
|
-
design_system_id: Optional[int] = None
|
|
65
62
|
deck_prompt_id: Optional[int] = None
|
|
66
63
|
system_prompt: Optional[str] = None
|
|
67
64
|
slide_editing_instructions: Optional[str] = None
|
|
@@ -35,10 +35,6 @@ from src.utils.html_utils import (
|
|
|
35
35
|
extract_canvas_ids_from_html,
|
|
36
36
|
split_script_by_canvas,
|
|
37
37
|
)
|
|
38
|
-
from src.utils.ds_asset_utils import (
|
|
39
|
-
substitute_deck_dict_ds_assets,
|
|
40
|
-
substitute_ds_asset_placeholders,
|
|
41
|
-
)
|
|
42
38
|
from src.utils.image_utils import substitute_deck_dict_images, substitute_image_placeholders
|
|
43
39
|
|
|
44
40
|
logger = logging.getLogger(__name__)
|
|
@@ -87,13 +83,11 @@ class ChatService:
|
|
|
87
83
|
logger.info("ChatService initialized successfully")
|
|
88
84
|
|
|
89
85
|
def _substitute_images_for_response(self, deck_dict, raw_html=None):
|
|
90
|
-
"""Apply image
|
|
86
|
+
"""Apply image placeholder substitution before sending to client.
|
|
91
87
|
|
|
92
|
-
Converts {{image:ID}} placeholders
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
keeps lightweight placeholders (avoiding LLM context bloat). The two
|
|
96
|
-
namespaces are resolved independently.
|
|
88
|
+
Converts {{image:ID}} placeholders to base64 data URIs in deck dicts
|
|
89
|
+
and raw HTML. Called at API response boundaries so that stored/cached
|
|
90
|
+
HTML keeps lightweight placeholders (avoiding LLM context bloat).
|
|
97
91
|
"""
|
|
98
92
|
from src.core.database import get_db_session
|
|
99
93
|
|
|
@@ -103,30 +97,12 @@ class ChatService:
|
|
|
103
97
|
needs_html = raw_html and "{{image:" in raw_html
|
|
104
98
|
needs_deck_html = deck_dict and deck_dict.get("html_content") and "{{image:" in deck_dict.get("html_content", "")
|
|
105
99
|
|
|
106
|
-
|
|
107
|
-
ds_needs_deck = deck_dict and any(
|
|
108
|
-
"{{ds-asset:" in s.get("html", "") for s in deck_dict.get("slides", [])
|
|
109
|
-
)
|
|
110
|
-
ds_needs_html = raw_html and "{{ds-asset:" in raw_html
|
|
111
|
-
ds_needs_deck_html = bool(
|
|
112
|
-
deck_dict
|
|
113
|
-
and deck_dict.get("html_content")
|
|
114
|
-
and "{{ds-asset:" in deck_dict.get("html_content", "")
|
|
115
|
-
)
|
|
116
|
-
|
|
117
|
-
if (
|
|
118
|
-
needs_deck or needs_html or needs_deck_html
|
|
119
|
-
or ds_needs_deck or ds_needs_html or ds_needs_deck_html
|
|
120
|
-
):
|
|
100
|
+
if needs_deck or needs_html or needs_deck_html:
|
|
121
101
|
with get_db_session() as db:
|
|
122
102
|
if needs_deck or needs_deck_html:
|
|
123
103
|
substitute_deck_dict_images(deck_dict, db)
|
|
124
104
|
if needs_html:
|
|
125
105
|
raw_html = substitute_image_placeholders(raw_html, db)
|
|
126
|
-
if ds_needs_deck or ds_needs_deck_html:
|
|
127
|
-
substitute_deck_dict_ds_assets(deck_dict, db)
|
|
128
|
-
if ds_needs_html:
|
|
129
|
-
raw_html = substitute_ds_asset_placeholders(raw_html, db)
|
|
130
106
|
return deck_dict, raw_html
|
|
131
107
|
|
|
132
108
|
def _build_agent_for_session(
|
|
@@ -203,14 +203,12 @@ async def process_export_job(job_id: str, payload: dict) -> None:
|
|
|
203
203
|
if not slide_deck or not slide_deck.get("slides"):
|
|
204
204
|
raise ValueError("No slides available")
|
|
205
205
|
|
|
206
|
-
# Substitute {{image:ID}}
|
|
207
|
-
# so the PPTX converter can extract and embed the actual images
|
|
208
|
-
from src.utils.ds_asset_utils import substitute_deck_dict_ds_assets
|
|
206
|
+
# Substitute {{image:ID}} placeholders with base64 data URIs
|
|
207
|
+
# so the PPTX converter can extract and embed the actual images
|
|
209
208
|
from src.utils.image_utils import substitute_deck_dict_images
|
|
210
209
|
from src.core.database import get_db_session
|
|
211
210
|
with get_db_session() as db:
|
|
212
211
|
substitute_deck_dict_images(slide_deck, db)
|
|
213
|
-
substitute_deck_dict_ds_assets(slide_deck, db)
|
|
214
212
|
|
|
215
213
|
slides = slide_deck.get("slides", [])
|
|
216
214
|
total_slides = len(slides)
|
|
@@ -1142,12 +1142,10 @@ class SessionManager:
|
|
|
1142
1142
|
slide["verification"] = verification_map.get(content_hash)
|
|
1143
1143
|
slide["content_hash"] = content_hash
|
|
1144
1144
|
|
|
1145
|
-
# Substitute {{image:ID}}
|
|
1146
|
-
from src.utils.ds_asset_utils import substitute_deck_dict_ds_assets
|
|
1145
|
+
# Substitute {{image:ID}} placeholders with base64 for client
|
|
1147
1146
|
from src.utils.image_utils import substitute_deck_dict_images
|
|
1148
1147
|
|
|
1149
1148
|
substitute_deck_dict_images(deck_dict, db)
|
|
1150
|
-
substitute_deck_dict_ds_assets(deck_dict, db)
|
|
1151
1149
|
|
|
1152
1150
|
# Parse chat history for preview
|
|
1153
1151
|
chat_history = (
|
|
@@ -524,81 +524,10 @@ def _run_migrations(engine, schema: str | None = None):
|
|
|
524
524
|
# --- image_assets.tags: json → jsonb (PostgreSQL) for native @> queries ---
|
|
525
525
|
_migrate_image_assets_tags_json_to_jsonb(conn, schema, _qual, is_sqlite)
|
|
526
526
|
|
|
527
|
-
# --- design system library: additive design_system(+asset/+token) tables ---
|
|
528
|
-
_migrate_design_system_tables(conn, schema)
|
|
529
|
-
|
|
530
|
-
# --- design system: add is_active (soft-delete) to pre-existing tables ---
|
|
531
|
-
_migrate_design_system_soft_delete(conn, inspector, schema, _qual, is_sqlite)
|
|
532
|
-
|
|
533
527
|
# --- keep newly created objects owned by the shared role (prod forks) ---
|
|
534
528
|
_reassign_new_objects_to_shared_owner(conn, is_sqlite)
|
|
535
529
|
|
|
536
530
|
|
|
537
|
-
def _migrate_design_system_tables(conn, schema: str | None = None) -> None:
|
|
538
|
-
"""Create the additive design-system tables (idempotent, dialect-safe).
|
|
539
|
-
|
|
540
|
-
Phase 1 of the Design System Library. Adds three NEW tables — ``design_system``,
|
|
541
|
-
``design_system_asset``, ``design_system_token`` — without touching
|
|
542
|
-
``slide_style_library`` or any existing table, so the current slide-style
|
|
543
|
-
prompt path is unaffected.
|
|
544
|
-
|
|
545
|
-
``Base.metadata.create_all()`` (run first in ``init_db``) already creates these
|
|
546
|
-
on fresh installs; this hand-rolled step guarantees they also exist on
|
|
547
|
-
already-provisioned Lakebase/Postgres databases and lets the migration be
|
|
548
|
-
exercised on its own. Creation is driven from the ORM metadata via
|
|
549
|
-
``Table.create(checkfirst=True)`` — a single source of truth for the schema,
|
|
550
|
-
idempotent (a no-op when the table exists) and correctly compiled for both
|
|
551
|
-
PostgreSQL/Lakebase and the SQLite used in tests. Parent table is created
|
|
552
|
-
first so the child foreign keys resolve.
|
|
553
|
-
"""
|
|
554
|
-
from src.database.models.design_system import (
|
|
555
|
-
DesignSystem,
|
|
556
|
-
DesignSystemAsset,
|
|
557
|
-
DesignSystemToken,
|
|
558
|
-
)
|
|
559
|
-
|
|
560
|
-
for model in (DesignSystem, DesignSystemAsset, DesignSystemToken):
|
|
561
|
-
table = model.__table__
|
|
562
|
-
# Match init_db()'s schema handling so a qualified deployment creates the
|
|
563
|
-
# tables in the Lakebase schema; guarded so it stays a no-op on repeat.
|
|
564
|
-
# NOTE: this mutates the module-global Table.schema on the shared ORM
|
|
565
|
-
# metadata — intentional, and identical to what init_db() already does.
|
|
566
|
-
if schema and table.schema is None:
|
|
567
|
-
table.schema = schema
|
|
568
|
-
table.create(bind=conn, checkfirst=True)
|
|
569
|
-
|
|
570
|
-
logger.info("Migration: design_system tables ensured")
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
def _migrate_design_system_soft_delete(conn, inspector, schema, _qual, is_sqlite) -> None:
|
|
574
|
-
"""Add ``is_active`` to ``design_system`` for Phase-3 soft-delete (idempotent).
|
|
575
|
-
|
|
576
|
-
Phase 3 introduces soft-delete on design systems, mirroring
|
|
577
|
-
``slide_style_library.is_active``. ``Base.metadata.create_all()`` adds the
|
|
578
|
-
column on fresh installs, but it does NOT alter an already-provisioned
|
|
579
|
-
``design_system`` table (created by an earlier Phase 1/2 deploy). This
|
|
580
|
-
hand-rolled ALTER backfills it. Defaults to TRUE so every existing design
|
|
581
|
-
system remains visible/usable. Column existence is probed with the inspector
|
|
582
|
-
passed from ``_run_migrations`` (or a fresh one when called standalone);
|
|
583
|
-
``get_columns`` reflects the live table even when it was created earlier in
|
|
584
|
-
this same migration transaction.
|
|
585
|
-
"""
|
|
586
|
-
from sqlalchemy import inspect, text
|
|
587
|
-
|
|
588
|
-
insp = inspector or inspect(conn)
|
|
589
|
-
try:
|
|
590
|
-
cols = {c["name"] for c in insp.get_columns("design_system", schema=schema)}
|
|
591
|
-
except Exception:
|
|
592
|
-
return
|
|
593
|
-
if not cols or "is_active" in cols:
|
|
594
|
-
return
|
|
595
|
-
|
|
596
|
-
logger.info("Migration: adding is_active column to design_system")
|
|
597
|
-
conn.execute(text(
|
|
598
|
-
f"ALTER TABLE {_qual('design_system')} ADD COLUMN is_active BOOLEAN DEFAULT TRUE NOT NULL"
|
|
599
|
-
))
|
|
600
|
-
|
|
601
|
-
|
|
602
531
|
def _reassign_new_objects_to_shared_owner(
|
|
603
532
|
conn, is_sqlite: bool, owning_role: str = "tellr_app_owners"
|
|
604
533
|
) -> None:
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
"""Database models."""
|
|
2
2
|
|
|
3
3
|
from src.database.models.deck_contributor import DeckContributor
|
|
4
|
-
from src.database.models.design_system import (
|
|
5
|
-
DesignSystem,
|
|
6
|
-
DesignSystemAsset,
|
|
7
|
-
DesignSystemToken,
|
|
8
|
-
)
|
|
9
4
|
from src.database.models.feedback import FeedbackConversation, SurveyResponse
|
|
10
5
|
from src.database.models.genie_space import ConfigGenieSpace
|
|
11
6
|
from src.database.models.google_global_credentials import GoogleGlobalCredentials
|
|
@@ -41,9 +36,6 @@ __all__ = [
|
|
|
41
36
|
"ConfigProfile",
|
|
42
37
|
"ConfigProfileContributor",
|
|
43
38
|
"ConfigPrompts",
|
|
44
|
-
"DesignSystem",
|
|
45
|
-
"DesignSystemAsset",
|
|
46
|
-
"DesignSystemToken",
|
|
47
39
|
"ExportJob",
|
|
48
40
|
"FeedbackConversation",
|
|
49
41
|
"GoogleGlobalCredentials",
|
|
@@ -62,3 +54,4 @@ __all__ = [
|
|
|
62
54
|
"UserProfilePreference",
|
|
63
55
|
"UserSession",
|
|
64
56
|
]
|
|
57
|
+
|
{databricks_tellr_app-0.3.11.dev4 → databricks_tellr_app-0.3.11.dev6}/src/services/agent_factory.py
RENAMED
|
@@ -89,18 +89,10 @@ def _get_prompt_content(
|
|
|
89
89
|
|
|
90
90
|
Resolution order for each prompt field:
|
|
91
91
|
1. Explicit value in config (system_prompt, slide_editing_instructions)
|
|
92
|
-
2. Library lookup by ID (
|
|
92
|
+
2. Library lookup by ID (slide_style_id, deck_prompt_id)
|
|
93
93
|
3. Modular assembly via prompt_modules (mode-aware)
|
|
94
94
|
4. Backend defaults from DEFAULT_CONFIG / DEFAULT_SLIDE_STYLE (legacy)
|
|
95
95
|
|
|
96
|
-
Slide-style source precedence (Design System Library, spec §8):
|
|
97
|
-
design_system_id (if set) -> slide_style_id -> DEFAULT_SLIDE_STYLE.
|
|
98
|
-
A selected design system contributes its ``compiled_style_content`` — the
|
|
99
|
-
serialized artifact produced by ``design_system_compiler`` — which flows
|
|
100
|
-
through the identical ``build_generation_system_prompt`` seam as a legacy
|
|
101
|
-
``style_content`` blob. When no design system is selected the legacy
|
|
102
|
-
slide_style_id path is used unchanged, so the feature is backward compatible.
|
|
103
|
-
|
|
104
96
|
Args:
|
|
105
97
|
config: The AgentConfig for this request
|
|
106
98
|
mode: ``"generate"`` or ``"edit"``
|
|
@@ -113,38 +105,8 @@ def _get_prompt_content(
|
|
|
113
105
|
deck_prompt: Optional[str] = None
|
|
114
106
|
image_guidelines: Optional[str] = None
|
|
115
107
|
|
|
116
|
-
# Resolve
|
|
117
|
-
|
|
118
|
-
# on lookup failure rather than crashing generation.
|
|
119
|
-
if config.design_system_id is not None:
|
|
120
|
-
try:
|
|
121
|
-
from src.core.database import get_db_session
|
|
122
|
-
from src.database.models import DesignSystem
|
|
123
|
-
|
|
124
|
-
with get_db_session() as db:
|
|
125
|
-
design_system = (
|
|
126
|
-
db.query(DesignSystem)
|
|
127
|
-
.filter_by(id=config.design_system_id, is_active=True)
|
|
128
|
-
.first()
|
|
129
|
-
)
|
|
130
|
-
if (
|
|
131
|
-
design_system
|
|
132
|
-
and design_system.compiled_style_content
|
|
133
|
-
and design_system.compiled_style_content.strip()
|
|
134
|
-
):
|
|
135
|
-
# compiled_style_content is the design system's drop-in
|
|
136
|
-
# equivalent of slide_style_library.style_content.
|
|
137
|
-
slide_style = design_system.compiled_style_content
|
|
138
|
-
else:
|
|
139
|
-
logger.warning(
|
|
140
|
-
"Design system not found or not compiled, using default",
|
|
141
|
-
extra={"design_system_id": config.design_system_id},
|
|
142
|
-
)
|
|
143
|
-
except Exception as e:
|
|
144
|
-
logger.error(f"Failed to resolve design_system_id: {e}")
|
|
145
|
-
# Resolve slide_style_id from library (legacy path — unchanged; used only when
|
|
146
|
-
# no design system is selected).
|
|
147
|
-
elif config.slide_style_id is not None:
|
|
108
|
+
# Resolve slide_style_id from library
|
|
109
|
+
if config.slide_style_id is not None:
|
|
148
110
|
try:
|
|
149
111
|
from src.core.database import get_db_session
|
|
150
112
|
from src.database.models import SlideStyleLibrary
|
|
@@ -369,7 +331,6 @@ def build_agent_for_request(
|
|
|
369
331
|
"has_custom_system_prompt": config.system_prompt is not None,
|
|
370
332
|
"has_custom_editing_instructions": config.slide_editing_instructions is not None,
|
|
371
333
|
"slide_style_id": config.slide_style_id,
|
|
372
|
-
"design_system_id": config.design_system_id,
|
|
373
334
|
"deck_prompt_id": config.deck_prompt_id,
|
|
374
335
|
"mode": mode,
|
|
375
336
|
},
|