databricks-tellr-app 0.4.3.dev43__tar.gz → 0.4.3.dev3400__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 (167) hide show
  1. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/PKG-INFO +1 -1
  2. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/databricks_tellr_app.egg-info/PKG-INFO +1 -1
  3. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/pyproject.toml +1 -1
  4. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/export.py +0 -4
  5. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/profiles.py +5 -1
  6. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/services/export_job_queue.py +1 -3
  7. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/image_service.py +2 -31
  8. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/image_tools.py +1 -18
  9. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/utils/image_utils.py +6 -27
  10. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/README.md +0 -0
  11. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/databricks_tellr_app/__init__.py +0 -0
  12. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/databricks_tellr_app/run.py +0 -0
  13. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/databricks_tellr_app.egg-info/SOURCES.txt +0 -0
  14. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/databricks_tellr_app.egg-info/dependency_links.txt +0 -0
  15. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/databricks_tellr_app.egg-info/requires.txt +0 -0
  16. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/databricks_tellr_app.egg-info/top_level.txt +0 -0
  17. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/setup.cfg +0 -0
  18. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/setup.py +0 -0
  19. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/__init__.py +0 -0
  20. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/__init__.py +0 -0
  21. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/_otel_bootstrap.py +0 -0
  22. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/fixtures/tour_demo_deck.json +0 -0
  23. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/main.py +0 -0
  24. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/mcp_auth.py +0 -0
  25. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/mcp_server.py +0 -0
  26. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/middleware/__init__.py +0 -0
  27. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/middleware/csrf.py +0 -0
  28. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/middleware/request_logging.py +0 -0
  29. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/middleware/security_headers.py +0 -0
  30. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/__init__.py +0 -0
  31. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/_authz.py +0 -0
  32. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/admin.py +0 -0
  33. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/admin_usage.py +0 -0
  34. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/agent_config.py +0 -0
  35. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/chat.py +0 -0
  36. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/deck_contributors.py +0 -0
  37. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/feedback.py +0 -0
  38. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/google_slides.py +0 -0
  39. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/images.py +0 -0
  40. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/local_version.py +0 -0
  41. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/sessions.py +0 -0
  42. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/settings/__init__.py +0 -0
  43. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/settings/contributors.py +0 -0
  44. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/settings/deck_prompts.py +0 -0
  45. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/settings/design_systems.py +0 -0
  46. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/settings/identities.py +0 -0
  47. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/settings/slide_styles.py +0 -0
  48. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/setup.py +0 -0
  49. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/slides.py +0 -0
  50. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/tools.py +0 -0
  51. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/tour.py +0 -0
  52. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/verification.py +0 -0
  53. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/routes/version.py +0 -0
  54. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/schemas/__init__.py +0 -0
  55. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/schemas/agent_config.py +0 -0
  56. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/schemas/feedback.py +0 -0
  57. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/schemas/requests.py +0 -0
  58. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/schemas/responses.py +0 -0
  59. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/schemas/settings/__init__.py +0 -0
  60. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/schemas/settings/requests.py +0 -0
  61. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/schemas/settings/responses.py +0 -0
  62. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/schemas/streaming.py +0 -0
  63. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/services/__init__.py +0 -0
  64. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/services/chat_service.py +0 -0
  65. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/services/feedback_service.py +0 -0
  66. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/services/job_queue.py +0 -0
  67. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/services/session_manager.py +0 -0
  68. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/services/session_naming.py +0 -0
  69. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/services/usage_events.py +0 -0
  70. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/services/usage_service.py +0 -0
  71. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/utils/__init__.py +0 -0
  72. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/api/utils/validation.py +0 -0
  73. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/__init__.py +0 -0
  74. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/config_loader.py +0 -0
  75. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/context_utils.py +0 -0
  76. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/database.py +0 -0
  77. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/databricks_client.py +0 -0
  78. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/defaults.py +0 -0
  79. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/encryption.py +0 -0
  80. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/init_default_profile.py +0 -0
  81. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/lakebase.py +0 -0
  82. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/migrate_profiles_to_agent_config.py +0 -0
  83. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/mlflow_agent_spans.py +0 -0
  84. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/mlflow_tracing.py +0 -0
  85. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/otel_logging.py +0 -0
  86. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/permission_context.py +0 -0
  87. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/prompt_modules.py +0 -0
  88. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/settings_db.py +0 -0
  89. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/core/user_context.py +0 -0
  90. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/__init__.py +0 -0
  91. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/__init__.py +0 -0
  92. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/deck_contributor.py +0 -0
  93. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/design_system.py +0 -0
  94. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/encryption_key.py +0 -0
  95. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/feedback.py +0 -0
  96. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/genie_space.py +0 -0
  97. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/google_global_credentials.py +0 -0
  98. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/google_oauth_token.py +0 -0
  99. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/identity.py +0 -0
  100. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/image.py +0 -0
  101. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/profile.py +0 -0
  102. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/profile_contributor.py +0 -0
  103. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/prompts.py +0 -0
  104. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/request_log.py +0 -0
  105. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/session.py +0 -0
  106. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/slide_deck_prompt.py +0 -0
  107. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/slide_style_library.py +0 -0
  108. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/usage_event.py +0 -0
  109. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/models/user_preference.py +0 -0
  110. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/database/types.py +0 -0
  111. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/domain/__init__.py +0 -0
  112. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/domain/slide.py +0 -0
  113. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/domain/slide_deck.py +0 -0
  114. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/__init__.py +0 -0
  115. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/agent.py +0 -0
  116. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/agent_factory.py +0 -0
  117. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/config_service.py +0 -0
  118. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/config_validator.py +0 -0
  119. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/converter_jail/__init__.py +0 -0
  120. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/converter_jail/ast_guard.py +0 -0
  121. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/converter_jail/codeprep.py +0 -0
  122. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/converter_jail/gslides_runner.py +0 -0
  123. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/converter_jail/jail.py +0 -0
  124. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/converter_jail/pptx_runner.py +0 -0
  125. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/converter_jail/protocol.py +0 -0
  126. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/design_system_compiler.py +0 -0
  127. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/design_system_service.py +0 -0
  128. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/design_system_templates.py +0 -0
  129. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/drive_uploader.py +0 -0
  130. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/evaluation/__init__.py +0 -0
  131. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/evaluation/llm_judge.py +0 -0
  132. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/genie_service.py +0 -0
  133. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/google_slides_auth.py +0 -0
  134. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/google_slides_prompts_defaults.py +0 -0
  135. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/html_to_google_slides.py +0 -0
  136. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/html_to_pptx.py +0 -0
  137. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/identity_provider.py +0 -0
  138. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/identity_providers/__init__.py +0 -0
  139. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/identity_providers/account_provider.py +0 -0
  140. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/identity_providers/local_provider.py +0 -0
  141. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/identity_providers/workspace_provider.py +0 -0
  142. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/permission_service.py +0 -0
  143. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/pptx_from_html_huashu.py +0 -0
  144. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/pptx_from_records.py +0 -0
  145. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/pptx_prompts_defaults.py +0 -0
  146. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/profile_service.py +0 -0
  147. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/streaming_callback.py +0 -0
  148. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/tools/__init__.py +0 -0
  149. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/tools/agent_bricks_tool.py +0 -0
  150. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/tools/ds_asset_tool.py +0 -0
  151. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/tools/genie_tool.py +0 -0
  152. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/tools/mcp_tool.py +0 -0
  153. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/tools/model_endpoint_tool.py +0 -0
  154. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/tools/vector_tool.py +0 -0
  155. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/services/validator.py +0 -0
  156. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/utils/__init__.py +0 -0
  157. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/utils/css_utils.py +0 -0
  158. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/utils/ds_asset_utils.py +0 -0
  159. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/utils/error_handling.py +0 -0
  160. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/utils/html_safety.py +0 -0
  161. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/utils/html_utils.py +0 -0
  162. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/utils/js_validator.py +0 -0
  163. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/utils/logging_config.py +0 -0
  164. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/utils/pi_filter.py +0 -0
  165. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/utils/slide_hash.py +0 -0
  166. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/src/utils/spotlight.py +0 -0
  167. {databricks_tellr_app-0.4.3.dev43 → databricks_tellr_app-0.4.3.dev3400}/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.4.3.dev43
3
+ Version: 0.4.3.dev3400
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.4.3.dev43
3
+ Version: 0.4.3.dev3400
4
4
  Summary: Tellr application package for Databricks Apps
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "databricks-tellr-app"
7
- version = "0.4.3.dev43"
7
+ version = "0.4.3.dev3400"
8
8
  description = "Tellr application package for Databricks Apps"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -702,7 +702,6 @@ async def start_pptx_export_async(request: ExportPPTXRequest):
702
702
  enqueue_export_job,
703
703
  generate_job_id,
704
704
  )
705
- from src.services.image_service import resolve_requesting_user
706
705
 
707
706
  import time
708
707
  start_time = time.time()
@@ -760,9 +759,6 @@ async def start_pptx_export_async(request: ExportPPTXRequest):
760
759
  job_id,
761
760
  {
762
761
  "session_id": request.session_id,
763
- # Acting user for {{image:ID}} ownership checks (F-CR-27): the
764
- # worker runs outside this request's user context.
765
- "user_identity": resolve_requesting_user(),
766
762
  "chart_images_per_slide": chart_images_per_slide,
767
763
  "title": slide_deck.get("title", "slides"),
768
764
  "total_slides": total_slides,
@@ -7,7 +7,7 @@ from typing import Any, Optional
7
7
  from fastapi import APIRouter, HTTPException
8
8
  from pydantic import BaseModel, Field
9
9
 
10
- from src.api.routes._authz import _check_deck_permission_for_session
10
+ from src.api.routes._authz import _check_deck_permission_for_session, require_admin
11
11
  from src.api.schemas.agent_config import (
12
12
  AgentConfig,
13
13
  resolve_agent_config,
@@ -282,6 +282,10 @@ async def update_profile(profile_id: int, body: UpdateProfileRequest):
282
282
  perm_service.require_edit_profile(db, profile_id)
283
283
  profile = _get_profile(db, profile_id)
284
284
 
285
+ if body.is_default is not None:
286
+ # is_default is workspace-wide; promoting or demoting it is an admin action.
287
+ require_admin()
288
+
285
289
  if body.name is not None:
286
290
  profile.name = body.name
287
291
  if body.description is not None:
@@ -212,9 +212,7 @@ async def process_export_job(job_id: str, payload: dict) -> None:
212
212
  from src.core.database import get_db_session
213
213
  ds_id = resolve_active_design_system_id(session_id)
214
214
  with get_db_session() as db:
215
- substitute_deck_dict_images(
216
- slide_deck, db, requesting_user=payload.get("user_identity")
217
- )
215
+ substitute_deck_dict_images(slide_deck, db)
218
216
  substitute_deck_dict_ds_assets(slide_deck, db, design_system_id=ds_id)
219
217
 
220
218
  slides = slide_deck.get("slides", [])
@@ -1,7 +1,6 @@
1
1
  """Image upload, thumbnail generation, and retrieval service."""
2
2
  import base64
3
3
  import logging
4
- import os
5
4
  import uuid
6
5
  from io import BytesIO
7
6
  from typing import List, Optional
@@ -87,35 +86,10 @@ def upload_image(
87
86
  return image
88
87
 
89
88
 
90
- def resolve_requesting_user() -> Optional[str]:
91
- """Identity to check image ownership against on non-route fetch paths.
92
-
93
- Mirrors ``routes.images._get_current_user`` (the identity ``upload_image``
94
- stamps into ``uploaded_by``) without an extra API call: the dev/test
95
- ``"system"`` fallback, otherwise the request-scoped username set by the auth
96
- middleware / MCP auth. ``None`` when no identity is bound (fail-closed for
97
- ephemeral images).
98
- """
99
- if os.getenv("ENVIRONMENT") in ("development", "test"):
100
- return "system"
101
- from src.core.user_context import get_current_user
102
-
103
- return get_current_user()
104
-
105
-
106
- def get_image_base64(
107
- db: Session, token: str, *, requesting_user: Optional[str]
108
- ) -> tuple[str, str]:
89
+ def get_image_base64(db: Session, token: str) -> tuple[str, str]:
109
90
  """
110
91
  Get full image as base64 string, keyed by the opaque token (SDR-4437 F-TM-7).
111
92
 
112
- Applies the same privacy guard as the ``GET /api/images/{token}`` routes
113
- (F-CR-27): chat-pasted ("ephemeral") images are private to their uploader,
114
- so a token for another user's ephemeral image is reported not-found. Library
115
- images stay open-read. ``requesting_user`` is mandatory and keyword-only so
116
- every caller makes the acting identity explicit; ``None`` fails closed for
117
- ephemeral images.
118
-
119
93
  Returns:
120
94
  Tuple of (base64_data, mime_type)
121
95
  """
@@ -123,10 +97,7 @@ def get_image_base64(
123
97
  ImageAsset.token == token,
124
98
  ImageAsset.is_active == True,
125
99
  ).first()
126
- if not image or (
127
- image.category == "ephemeral"
128
- and (requesting_user is None or image.uploaded_by != requesting_user)
129
- ):
100
+ if not image:
130
101
  raise ValueError(f"Image {token} not found")
131
102
 
132
103
  b64 = base64.b64encode(image.image_data).decode("utf-8")
@@ -10,8 +10,6 @@ from src.services import image_service
10
10
 
11
11
  logger = logging.getLogger(__name__)
12
12
 
13
- _NO_IMAGES_MESSAGE = "No images found matching your criteria."
14
-
15
13
 
16
14
  class SearchImagesInput(BaseModel):
17
15
  """Input schema for image search tool."""
@@ -43,27 +41,12 @@ def search_images(
43
41
  Returns:
44
42
  JSON list of matching images with id, filename, description, and tags
45
43
  """
46
- # F-CR-27: chat-pasted ("ephemeral") images are private to their uploader and
47
- # are never discoverable through the agent tool. The user's own pastes reach
48
- # the agent via their message, not via search.
49
- if category is not None and category.strip().lower() == "ephemeral":
50
- logger.warning("search_images: refusing category='ephemeral' (private images)")
51
- return json.dumps({"message": _NO_IMAGES_MESSAGE, "images": []})
52
-
53
- # Scope the listing to the caller (same as GET /api/images). Fail closed when
54
- # no identity is bound rather than listing every user's images.
55
- requesting_user = image_service.resolve_requesting_user()
56
- if requesting_user is None:
57
- logger.warning("search_images: no requesting user bound; returning no images")
58
- return json.dumps({"message": _NO_IMAGES_MESSAGE, "images": []})
59
-
60
44
  with get_db_session() as db:
61
45
  images = image_service.search_images(
62
46
  db=db,
63
47
  query=query,
64
48
  category=category,
65
49
  tags=tags,
66
- uploaded_by=requesting_user,
67
50
  )
68
51
 
69
52
  # Return metadata only - NEVER base64
@@ -82,6 +65,6 @@ def search_images(
82
65
  ]
83
66
 
84
67
  if not results:
85
- return json.dumps({"message": _NO_IMAGES_MESSAGE, "images": []})
68
+ return json.dumps({"message": "No images found matching your criteria.", "images": []})
86
69
 
87
70
  return json.dumps({"message": f"Found {len(results)} image(s).", "images": results})
@@ -1,7 +1,6 @@
1
1
  """Image placeholder substitution for generated slides."""
2
2
  import logging
3
3
  import re
4
- from typing import Optional
5
4
 
6
5
  from sqlalchemy.orm import Session
7
6
 
@@ -13,31 +12,20 @@ logger = logging.getLogger(__name__)
13
12
  IMAGE_PLACEHOLDER_PATTERN = re.compile(r"\{\{image:([A-Za-z0-9_-]+)\}\}")
14
13
 
15
14
 
16
- def substitute_image_placeholders(
17
- html: str, db: Session, *, requesting_user: Optional[str] = None
18
- ) -> str:
15
+ def substitute_image_placeholders(html: str, db: Session) -> str:
19
16
  """
20
17
  Replace {{image:ID}} placeholders with base64 data URIs.
21
18
 
22
19
  Called after agent generates HTML, before returning to frontend.
23
20
  Works in both HTML img src and CSS url() contexts.
24
-
25
- Resolution is scoped to the acting user (F-CR-27): another user's ephemeral
26
- image is left as an unresolved placeholder. ``requesting_user`` defaults to
27
- the request-scoped identity (``image_service.resolve_requesting_user``);
28
- background callers without a request context must pass it explicitly.
29
21
  """
30
22
  if not html or "{{image:" not in html:
31
23
  return html
32
- if requesting_user is None:
33
- requesting_user = image_service.resolve_requesting_user()
34
24
 
35
25
  def replace_match(match):
36
26
  image_token = match.group(1)
37
27
  try:
38
- b64_data, mime_type = image_service.get_image_base64(
39
- db, image_token, requesting_user=requesting_user
40
- )
28
+ b64_data, mime_type = image_service.get_image_base64(db, image_token)
41
29
  return f"data:{mime_type};base64,{b64_data}"
42
30
  except Exception as e:
43
31
  logger.warning(f"Failed to resolve image placeholder {{{{image:{image_token}}}}}: {e}")
@@ -53,32 +41,23 @@ def substitute_image_placeholders(
53
41
  _DECK_IMAGE_FIELDS = ("html_content", "css")
54
42
 
55
43
 
56
- def substitute_deck_dict_images(
57
- deck_dict: dict, db: Session, *, requesting_user: Optional[str] = None
58
- ) -> dict:
44
+ def substitute_deck_dict_images(deck_dict: dict, db: Session) -> dict:
59
45
  """Substitute {{image:ID}} placeholders across a deck dict.
60
46
 
61
47
  Covers every field that can carry the placeholder: each slide's ``html``,
62
48
  the deck's ``html_content`` (full knitted HTML) and its top-level ``css``
63
49
  (backgrounds). Deck-level fields are resolved independently of the slides
64
50
  array, mirroring ``substitute_deck_dict_ds_assets`` — the css gap fixed
65
- there existed here too. ``requesting_user`` is as for
66
- ``substitute_image_placeholders``.
51
+ there existed here too.
67
52
  """
68
53
  if not deck_dict:
69
54
  return deck_dict
70
- if requesting_user is None:
71
- requesting_user = image_service.resolve_requesting_user()
72
55
  for slide in deck_dict.get("slides") or []:
73
56
  html = slide.get("html", "")
74
57
  if "{{image:" in html:
75
- slide["html"] = substitute_image_placeholders(
76
- html, db, requesting_user=requesting_user
77
- )
58
+ slide["html"] = substitute_image_placeholders(html, db)
78
59
  for field in _DECK_IMAGE_FIELDS:
79
60
  value = deck_dict.get(field)
80
61
  if value and "{{image:" in value:
81
- deck_dict[field] = substitute_image_placeholders(
82
- value, db, requesting_user=requesting_user
83
- )
62
+ deck_dict[field] = substitute_image_placeholders(value, db)
84
63
  return deck_dict