databricks-tellr-app 0.3.10.dev5__tar.gz → 0.3.11.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/PKG-INFO +1 -1
  2. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/databricks_tellr_app.egg-info/PKG-INFO +1 -1
  3. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/databricks_tellr_app.egg-info/SOURCES.txt +10 -0
  4. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/pyproject.toml +1 -1
  5. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/main.py +2 -0
  6. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/agent_config.py +17 -2
  7. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/export.py +4 -2
  8. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/google_slides.py +5 -1
  9. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/sessions.py +2 -0
  10. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/settings/__init__.py +2 -0
  11. databricks_tellr_app-0.3.11.dev2/src/api/routes/settings/design_systems.py +517 -0
  12. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/schemas/agent_config.py +3 -0
  13. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/services/chat_service.py +29 -5
  14. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/services/export_job_queue.py +4 -2
  15. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/services/session_manager.py +3 -1
  16. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/database.py +71 -0
  17. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/__init__.py +8 -1
  18. databricks_tellr_app-0.3.11.dev2/src/database/models/design_system.py +193 -0
  19. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/agent_factory.py +42 -3
  20. databricks_tellr_app-0.3.11.dev2/src/services/design_system_compiler.py +277 -0
  21. databricks_tellr_app-0.3.11.dev2/src/services/design_system_service.py +482 -0
  22. databricks_tellr_app-0.3.11.dev2/src/utils/ds_asset_utils.py +58 -0
  23. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/README.md +0 -0
  24. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/databricks_tellr_app/__init__.py +0 -0
  25. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/databricks_tellr_app/run.py +0 -0
  26. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/databricks_tellr_app.egg-info/dependency_links.txt +0 -0
  27. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/databricks_tellr_app.egg-info/requires.txt +0 -0
  28. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/databricks_tellr_app.egg-info/top_level.txt +0 -0
  29. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/setup.cfg +0 -0
  30. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/setup.py +0 -0
  31. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/__init__.py +0 -0
  32. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/__init__.py +0 -0
  33. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/_otel_bootstrap.py +0 -0
  34. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/fixtures/tour_demo_deck.json +0 -0
  35. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/mcp_auth.py +0 -0
  36. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/mcp_server.py +0 -0
  37. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/middleware/__init__.py +0 -0
  38. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/middleware/request_logging.py +0 -0
  39. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/__init__.py +0 -0
  40. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/admin.py +0 -0
  41. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/chat.py +0 -0
  42. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/deck_contributors.py +0 -0
  43. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/feedback.py +0 -0
  44. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/images.py +0 -0
  45. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/local_version.py +0 -0
  46. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/profiles.py +0 -0
  47. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/settings/contributors.py +0 -0
  48. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/settings/deck_prompts.py +0 -0
  49. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/settings/identities.py +0 -0
  50. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/settings/slide_styles.py +0 -0
  51. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/setup.py +0 -0
  52. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/slides.py +0 -0
  53. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/tools.py +0 -0
  54. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/tour.py +0 -0
  55. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/verification.py +0 -0
  56. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/routes/version.py +0 -0
  57. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/schemas/__init__.py +0 -0
  58. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/schemas/feedback.py +0 -0
  59. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/schemas/requests.py +0 -0
  60. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/schemas/responses.py +0 -0
  61. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/schemas/settings/__init__.py +0 -0
  62. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/schemas/settings/requests.py +0 -0
  63. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/schemas/settings/responses.py +0 -0
  64. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/schemas/streaming.py +0 -0
  65. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/services/__init__.py +0 -0
  66. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/services/feedback_service.py +0 -0
  67. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/services/job_queue.py +0 -0
  68. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/services/session_naming.py +0 -0
  69. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/utils/__init__.py +0 -0
  70. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/api/utils/validation.py +0 -0
  71. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/__init__.py +0 -0
  72. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/config_loader.py +0 -0
  73. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/context_utils.py +0 -0
  74. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/databricks_client.py +0 -0
  75. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/defaults.py +0 -0
  76. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/encryption.py +0 -0
  77. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/init_default_profile.py +0 -0
  78. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/lakebase.py +0 -0
  79. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/migrate_profiles_to_agent_config.py +0 -0
  80. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/mlflow_agent_spans.py +0 -0
  81. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/mlflow_tracing.py +0 -0
  82. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/otel_logging.py +0 -0
  83. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/permission_context.py +0 -0
  84. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/prompt_modules.py +0 -0
  85. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/settings_db.py +0 -0
  86. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/core/user_context.py +0 -0
  87. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/__init__.py +0 -0
  88. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/deck_contributor.py +0 -0
  89. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/feedback.py +0 -0
  90. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/genie_space.py +0 -0
  91. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/google_global_credentials.py +0 -0
  92. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/google_oauth_token.py +0 -0
  93. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/identity.py +0 -0
  94. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/image.py +0 -0
  95. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/profile.py +0 -0
  96. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/profile_contributor.py +0 -0
  97. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/prompts.py +0 -0
  98. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/request_log.py +0 -0
  99. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/session.py +0 -0
  100. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/slide_deck_prompt.py +0 -0
  101. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/slide_style_library.py +0 -0
  102. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/database/models/user_preference.py +0 -0
  103. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/domain/__init__.py +0 -0
  104. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/domain/slide.py +0 -0
  105. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/domain/slide_deck.py +0 -0
  106. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/__init__.py +0 -0
  107. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/agent.py +0 -0
  108. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/config_service.py +0 -0
  109. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/config_validator.py +0 -0
  110. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/drive_uploader.py +0 -0
  111. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/evaluation/__init__.py +0 -0
  112. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/evaluation/llm_judge.py +0 -0
  113. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/genie_service.py +0 -0
  114. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/google_slides_auth.py +0 -0
  115. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/google_slides_prompts_defaults.py +0 -0
  116. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/html_to_google_slides.py +0 -0
  117. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/html_to_pptx.py +0 -0
  118. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/identity_provider.py +0 -0
  119. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/identity_providers/__init__.py +0 -0
  120. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/identity_providers/account_provider.py +0 -0
  121. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/identity_providers/local_provider.py +0 -0
  122. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/identity_providers/workspace_provider.py +0 -0
  123. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/image_service.py +0 -0
  124. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/image_tools.py +0 -0
  125. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/permission_service.py +0 -0
  126. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/pptx_from_html_huashu.py +0 -0
  127. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/pptx_from_records.py +0 -0
  128. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/pptx_prompts_defaults.py +0 -0
  129. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/profile_service.py +0 -0
  130. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/streaming_callback.py +0 -0
  131. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/tools/__init__.py +0 -0
  132. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/tools/agent_bricks_tool.py +0 -0
  133. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/tools/genie_tool.py +0 -0
  134. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/tools/mcp_tool.py +0 -0
  135. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/tools/model_endpoint_tool.py +0 -0
  136. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/tools/vector_tool.py +0 -0
  137. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/services/validator.py +0 -0
  138. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/utils/__init__.py +0 -0
  139. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/utils/css_utils.py +0 -0
  140. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/utils/error_handling.py +0 -0
  141. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/utils/html_safety.py +0 -0
  142. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/utils/html_utils.py +0 -0
  143. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/utils/image_utils.py +0 -0
  144. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/utils/js_validator.py +0 -0
  145. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/utils/logging_config.py +0 -0
  146. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/utils/pi_filter.py +0 -0
  147. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/utils/slide_hash.py +0 -0
  148. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/utils/spotlight.py +0 -0
  149. {databricks_tellr_app-0.3.10.dev5 → databricks_tellr_app-0.3.11.dev2}/src/utils/text_caps.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: databricks-tellr-app
3
- Version: 0.3.10.dev5
3
+ Version: 0.3.11.dev2
4
4
  Summary: Tellr application package for Databricks Apps
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: databricks-tellr-app
3
- Version: 0.3.10.dev5
3
+ Version: 0.3.11.dev2
4
4
  Summary: Tellr application package for Databricks Apps
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -33,6 +33,7 @@ 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
36
37
  ./src/api/routes/settings/identities.py
37
38
  ./src/api/routes/settings/slide_styles.py
38
39
  ./src/api/schemas/__init__.py
@@ -73,6 +74,7 @@ setup.py
73
74
  ./src/database/__init__.py
74
75
  ./src/database/models/__init__.py
75
76
  ./src/database/models/deck_contributor.py
77
+ ./src/database/models/design_system.py
76
78
  ./src/database/models/feedback.py
77
79
  ./src/database/models/genie_space.py
78
80
  ./src/database/models/google_global_credentials.py
@@ -95,6 +97,8 @@ setup.py
95
97
  ./src/services/agent_factory.py
96
98
  ./src/services/config_service.py
97
99
  ./src/services/config_validator.py
100
+ ./src/services/design_system_compiler.py
101
+ ./src/services/design_system_service.py
98
102
  ./src/services/drive_uploader.py
99
103
  ./src/services/genie_service.py
100
104
  ./src/services/google_slides_auth.py
@@ -125,6 +129,7 @@ setup.py
125
129
  ./src/services/tools/vector_tool.py
126
130
  ./src/utils/__init__.py
127
131
  ./src/utils/css_utils.py
132
+ ./src/utils/ds_asset_utils.py
128
133
  ./src/utils/error_handling.py
129
134
  ./src/utils/html_safety.py
130
135
  ./src/utils/html_utils.py
@@ -172,6 +177,7 @@ src/api/routes/version.py
172
177
  src/api/routes/settings/__init__.py
173
178
  src/api/routes/settings/contributors.py
174
179
  src/api/routes/settings/deck_prompts.py
180
+ src/api/routes/settings/design_systems.py
175
181
  src/api/routes/settings/identities.py
176
182
  src/api/routes/settings/slide_styles.py
177
183
  src/api/schemas/__init__.py
@@ -212,6 +218,7 @@ src/core/user_context.py
212
218
  src/database/__init__.py
213
219
  src/database/models/__init__.py
214
220
  src/database/models/deck_contributor.py
221
+ src/database/models/design_system.py
215
222
  src/database/models/feedback.py
216
223
  src/database/models/genie_space.py
217
224
  src/database/models/google_global_credentials.py
@@ -234,6 +241,8 @@ src/services/agent.py
234
241
  src/services/agent_factory.py
235
242
  src/services/config_service.py
236
243
  src/services/config_validator.py
244
+ src/services/design_system_compiler.py
245
+ src/services/design_system_service.py
237
246
  src/services/drive_uploader.py
238
247
  src/services/genie_service.py
239
248
  src/services/google_slides_auth.py
@@ -264,6 +273,7 @@ src/services/tools/model_endpoint_tool.py
264
273
  src/services/tools/vector_tool.py
265
274
  src/utils/__init__.py
266
275
  src/utils/css_utils.py
276
+ src/utils/ds_asset_utils.py
267
277
  src/utils/error_handling.py
268
278
  src/utils/html_safety.py
269
279
  src/utils/html_utils.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "databricks-tellr-app"
7
- version = "0.3.10.dev5"
7
+ version = "0.3.11.dev2"
8
8
  description = "Tellr application package for Databricks Apps"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -27,6 +27,7 @@ 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,
30
31
  identities_router,
31
32
  slide_styles_router,
32
33
  )
@@ -434,6 +435,7 @@ app.include_router(contributors_router, prefix="/api/settings", tags=["settings"
434
435
  app.include_router(deck_prompts_router, prefix="/api/settings", tags=["settings"])
435
436
  app.include_router(identities_router, prefix="/api/settings", tags=["settings"])
436
437
  app.include_router(slide_styles_router, prefix="/api/settings", tags=["settings"])
438
+ app.include_router(design_systems_router, prefix="/api/settings", tags=["settings"])
437
439
 
438
440
  # MCP server — mount the FastMCP streamable-HTTP ASGI app at /mcp.
439
441
  # Must be registered before the SPA catch-all (which is added lazily by
@@ -21,10 +21,25 @@ 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 slide_style_id and deck_prompt_id reference existing library entries."""
25
- from src.database.models import SlideStyleLibrary, SlideDeckPromptLibrary
24
+ """Validate that design_system_id, slide_style_id and deck_prompt_id reference
25
+ existing (active) library entries."""
26
+ from src.database.models import DesignSystem, SlideDeckPromptLibrary, SlideStyleLibrary
26
27
 
27
28
  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
+ )
28
43
  if config.slide_style_id is not None:
29
44
  style = (
30
45
  db.query(SlideStyleLibrary)
@@ -405,12 +405,14 @@ 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}} placeholders with base64 data URIs
409
- # so the PPTX converter can extract and embed the actual images
408
+ # Substitute {{image:ID}} + {{ds-asset:ID}} placeholders with base64 data URIs
409
+ # so the PPTX converter can extract and embed the actual images/brand assets
410
+ from src.utils.ds_asset_utils import substitute_deck_dict_ds_assets
410
411
  from src.utils.image_utils import substitute_deck_dict_images
411
412
  from src.core.database import get_db_session
412
413
  with get_db_session() as db:
413
414
  substitute_deck_dict_images(slide_deck, db)
415
+ substitute_deck_dict_ds_assets(slide_deck, db)
414
416
 
415
417
  slide_count = len(slide_deck.get("slides", []))
416
418
  log_msg = (
@@ -276,11 +276,13 @@ 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}} placeholders with base64 data URIs
279
+ # Substitute {{image:ID}} + {{ds-asset:ID}} placeholders with base64 data URIs
280
+ from src.utils.ds_asset_utils import substitute_deck_dict_ds_assets
280
281
  from src.utils.image_utils import substitute_deck_dict_images
281
282
  from src.core.database import get_db_session
282
283
  with get_db_session() as db:
283
284
  substitute_deck_dict_images(slide_deck, db)
285
+ substitute_deck_dict_ds_assets(slide_deck, db)
284
286
 
285
287
  slides_data = slide_deck.get("slides", [])
286
288
  total = len(slides_data)
@@ -502,9 +504,11 @@ async def export_google_slides_from_huashu(
502
504
  # legacy /export route). Use a fresh session because the request's `db`
503
505
  # is held by the route's transaction context.
504
506
  from src.core.database import get_db_session
507
+ from src.utils.ds_asset_utils import substitute_deck_dict_ds_assets
505
508
  from src.utils.image_utils import substitute_deck_dict_images
506
509
  with get_db_session() as imdb:
507
510
  substitute_deck_dict_images(slide_deck, imdb)
511
+ substitute_deck_dict_ds_assets(slide_deck, imdb)
508
512
 
509
513
  title = slide_deck.get("title") or "Presentation"
510
514
  slides_data = slide_deck.get("slides") or []
@@ -149,10 +149,12 @@ 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
152
153
  from src.utils.image_utils import substitute_deck_dict_images
153
154
 
154
155
  with get_db_session() as db:
155
156
  substitute_deck_dict_images(deck_dict, db)
157
+ substitute_deck_dict_ds_assets(deck_dict, db)
156
158
 
157
159
 
158
160
  @router.post("")
@@ -1,12 +1,14 @@
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
4
5
  from src.api.routes.settings.identities import router as identities_router
5
6
  from src.api.routes.settings.slide_styles import router as slide_styles_router
6
7
 
7
8
  __all__ = [
8
9
  "contributors_router",
9
10
  "deck_prompts_router",
11
+ "design_systems_router",
10
12
  "identities_router",
11
13
  "slide_styles_router",
12
14
  ]