databricks-tellr-app 0.4.3.dev17__tar.gz → 0.4.3.dev19__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.dev17 → databricks_tellr_app-0.4.3.dev19}/PKG-INFO +1 -1
  2. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/databricks_tellr_app.egg-info/PKG-INFO +1 -1
  3. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/pyproject.toml +1 -1
  4. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/main.py +5 -1
  5. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/sessions.py +5 -22
  6. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/version.py +6 -2
  7. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/services/session_manager.py +0 -35
  8. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/databricks_client.py +50 -0
  9. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/README.md +0 -0
  10. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/databricks_tellr_app/__init__.py +0 -0
  11. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/databricks_tellr_app/run.py +0 -0
  12. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/databricks_tellr_app.egg-info/SOURCES.txt +0 -0
  13. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/databricks_tellr_app.egg-info/dependency_links.txt +0 -0
  14. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/databricks_tellr_app.egg-info/requires.txt +0 -0
  15. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/databricks_tellr_app.egg-info/top_level.txt +0 -0
  16. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/setup.cfg +0 -0
  17. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/setup.py +0 -0
  18. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/__init__.py +0 -0
  19. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/__init__.py +0 -0
  20. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/_otel_bootstrap.py +0 -0
  21. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/fixtures/tour_demo_deck.json +0 -0
  22. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/mcp_auth.py +0 -0
  23. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/mcp_server.py +0 -0
  24. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/middleware/__init__.py +0 -0
  25. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/middleware/csrf.py +0 -0
  26. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/middleware/request_logging.py +0 -0
  27. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/middleware/security_headers.py +0 -0
  28. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/__init__.py +0 -0
  29. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/_authz.py +0 -0
  30. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/admin.py +0 -0
  31. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/admin_usage.py +0 -0
  32. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/agent_config.py +0 -0
  33. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/chat.py +0 -0
  34. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/deck_contributors.py +0 -0
  35. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/export.py +0 -0
  36. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/feedback.py +0 -0
  37. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/google_slides.py +0 -0
  38. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/images.py +0 -0
  39. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/local_version.py +0 -0
  40. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/profiles.py +0 -0
  41. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/settings/__init__.py +0 -0
  42. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/settings/contributors.py +0 -0
  43. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/settings/deck_prompts.py +0 -0
  44. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/settings/design_systems.py +0 -0
  45. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/settings/identities.py +0 -0
  46. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/settings/slide_styles.py +0 -0
  47. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/setup.py +0 -0
  48. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/slides.py +0 -0
  49. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/tools.py +0 -0
  50. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/tour.py +0 -0
  51. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/routes/verification.py +0 -0
  52. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/schemas/__init__.py +0 -0
  53. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/schemas/agent_config.py +0 -0
  54. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/schemas/feedback.py +0 -0
  55. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/schemas/requests.py +0 -0
  56. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/schemas/responses.py +0 -0
  57. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/schemas/settings/__init__.py +0 -0
  58. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/schemas/settings/requests.py +0 -0
  59. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/schemas/settings/responses.py +0 -0
  60. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/schemas/streaming.py +0 -0
  61. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/services/__init__.py +0 -0
  62. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/services/chat_service.py +0 -0
  63. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/services/export_job_queue.py +0 -0
  64. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/services/feedback_service.py +0 -0
  65. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/services/job_queue.py +0 -0
  66. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/services/session_naming.py +0 -0
  67. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/services/usage_events.py +0 -0
  68. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/services/usage_service.py +0 -0
  69. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/utils/__init__.py +0 -0
  70. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/api/utils/validation.py +0 -0
  71. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/__init__.py +0 -0
  72. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/config_loader.py +0 -0
  73. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/context_utils.py +0 -0
  74. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/database.py +0 -0
  75. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/defaults.py +0 -0
  76. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/encryption.py +0 -0
  77. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/init_default_profile.py +0 -0
  78. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/lakebase.py +0 -0
  79. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/migrate_profiles_to_agent_config.py +0 -0
  80. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/mlflow_agent_spans.py +0 -0
  81. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/mlflow_tracing.py +0 -0
  82. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/otel_logging.py +0 -0
  83. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/permission_context.py +0 -0
  84. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/prompt_modules.py +0 -0
  85. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/settings_db.py +0 -0
  86. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/core/user_context.py +0 -0
  87. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/__init__.py +0 -0
  88. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/__init__.py +0 -0
  89. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/deck_contributor.py +0 -0
  90. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/design_system.py +0 -0
  91. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/encryption_key.py +0 -0
  92. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/feedback.py +0 -0
  93. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/genie_space.py +0 -0
  94. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/google_global_credentials.py +0 -0
  95. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/google_oauth_token.py +0 -0
  96. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/identity.py +0 -0
  97. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/image.py +0 -0
  98. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/profile.py +0 -0
  99. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/profile_contributor.py +0 -0
  100. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/prompts.py +0 -0
  101. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/request_log.py +0 -0
  102. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/session.py +0 -0
  103. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/slide_deck_prompt.py +0 -0
  104. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/slide_style_library.py +0 -0
  105. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/usage_event.py +0 -0
  106. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/models/user_preference.py +0 -0
  107. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/database/types.py +0 -0
  108. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/domain/__init__.py +0 -0
  109. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/domain/slide.py +0 -0
  110. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/domain/slide_deck.py +0 -0
  111. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/__init__.py +0 -0
  112. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/agent.py +0 -0
  113. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/agent_factory.py +0 -0
  114. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/config_service.py +0 -0
  115. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/config_validator.py +0 -0
  116. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/converter_jail/__init__.py +0 -0
  117. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/converter_jail/ast_guard.py +0 -0
  118. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/converter_jail/codeprep.py +0 -0
  119. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/converter_jail/gslides_runner.py +0 -0
  120. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/converter_jail/jail.py +0 -0
  121. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/converter_jail/pptx_runner.py +0 -0
  122. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/converter_jail/protocol.py +0 -0
  123. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/design_system_compiler.py +0 -0
  124. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/design_system_service.py +0 -0
  125. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/design_system_templates.py +0 -0
  126. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/drive_uploader.py +0 -0
  127. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/evaluation/__init__.py +0 -0
  128. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/evaluation/llm_judge.py +0 -0
  129. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/genie_service.py +0 -0
  130. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/google_slides_auth.py +0 -0
  131. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/google_slides_prompts_defaults.py +0 -0
  132. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/html_to_google_slides.py +0 -0
  133. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/html_to_pptx.py +0 -0
  134. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/identity_provider.py +0 -0
  135. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/identity_providers/__init__.py +0 -0
  136. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/identity_providers/account_provider.py +0 -0
  137. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/identity_providers/local_provider.py +0 -0
  138. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/identity_providers/workspace_provider.py +0 -0
  139. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/image_service.py +0 -0
  140. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/image_tools.py +0 -0
  141. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/permission_service.py +0 -0
  142. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/pptx_from_html_huashu.py +0 -0
  143. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/pptx_from_records.py +0 -0
  144. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/pptx_prompts_defaults.py +0 -0
  145. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/profile_service.py +0 -0
  146. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/streaming_callback.py +0 -0
  147. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/tools/__init__.py +0 -0
  148. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/tools/agent_bricks_tool.py +0 -0
  149. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/tools/ds_asset_tool.py +0 -0
  150. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/tools/genie_tool.py +0 -0
  151. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/tools/mcp_tool.py +0 -0
  152. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/tools/model_endpoint_tool.py +0 -0
  153. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/tools/vector_tool.py +0 -0
  154. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/services/validator.py +0 -0
  155. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/utils/__init__.py +0 -0
  156. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/utils/css_utils.py +0 -0
  157. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/utils/ds_asset_utils.py +0 -0
  158. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/utils/error_handling.py +0 -0
  159. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/utils/html_safety.py +0 -0
  160. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/utils/html_utils.py +0 -0
  161. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/utils/image_utils.py +0 -0
  162. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/utils/js_validator.py +0 -0
  163. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/utils/logging_config.py +0 -0
  164. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/utils/pi_filter.py +0 -0
  165. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/utils/slide_hash.py +0 -0
  166. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/src/utils/spotlight.py +0 -0
  167. {databricks_tellr_app-0.4.3.dev17 → databricks_tellr_app-0.4.3.dev19}/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.dev17
3
+ Version: 0.4.3.dev19
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.dev17
3
+ Version: 0.4.3.dev19
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.dev17"
7
+ version = "0.4.3.dev19"
8
8
  description = "Tellr application package for Databricks Apps"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -494,13 +494,17 @@ async def health():
494
494
  ``encryption_key_source`` is load-bearing for deployment: ``tellr.update``
495
495
  polls it to confirm a relocated app is reading the secret before it deletes
496
496
  the Lakebase key row. Reports the source only — never the key.
497
+
498
+ ``version`` comes from the installed wheel's metadata, so it tracks the
499
+ deployed release; it reads "unknown" from a source checkout.
497
500
  """
501
+ from src.api.routes.version import get_installed_version
498
502
  from src.core.encryption import key_source
499
503
 
500
504
  return {
501
505
  "status": "healthy",
502
506
  "environment": ENVIRONMENT,
503
- "version": "0.3.0",
507
+ "version": get_installed_version(),
504
508
  "encryption_key_source": key_source(),
505
509
  }
506
510
 
@@ -743,28 +743,11 @@ async def get_session_slides(session_id: str):
743
743
  ) from e
744
744
 
745
745
 
746
- @router.post("/cleanup")
747
- async def cleanup_expired_sessions():
748
- """Clean up expired sessions.
749
-
750
- Returns:
751
- Number of sessions deleted
752
- """
753
- try:
754
- session_manager = get_session_manager()
755
- count = await asyncio.to_thread(session_manager.cleanup_expired_sessions)
756
-
757
- logger.info("Session cleanup completed", extra={"deleted_count": count})
758
-
759
- return {"status": "completed", "deleted_count": count}
760
-
761
- except Exception as e:
762
- logger.error(f"Failed to cleanup sessions: {e}", exc_info=True)
763
- raise HTTPException(
764
- status_code=500,
765
- detail="Cleanup failed",
766
- ) from e
767
-
746
+ # F-CR-16 (SDR-4437): the POST /cleanup endpoint was removed — it had no
747
+ # authorization check and allowed any authenticated CAN_USE user to delete all
748
+ # sessions older than 24h (cascading to decks, chat history, etc.). The endpoint
749
+ # was unused (no frontend caller, no scheduler, no script), so removal was safer
750
+ # than gating. See SDR-4437 for details.
768
751
 
769
752
  # F-CR-10 (SDR-4437): the debug-only POST /{session_id}/export endpoint was
770
753
  # removed — it was unused by the frontend and dumped full session data (all chat
@@ -39,9 +39,13 @@ class VersionCheckResponse(BaseModel):
39
39
  package_name: str
40
40
 
41
41
 
42
- def _get_installed_version() -> str:
42
+ def get_installed_version() -> str:
43
43
  """Get the installed version of databricks-tellr-app.
44
44
 
45
+ Shared with the ``/api/health`` handler in ``src.api.main``, which reports
46
+ the same value. Returns "unknown" when running from a source checkout
47
+ rather than an installed wheel.
48
+
45
49
  Returns:
46
50
  Version string or "unknown" if not installed
47
51
  """
@@ -129,7 +133,7 @@ async def check_version() -> VersionCheckResponse:
129
133
  - update_available: Whether an update is available
130
134
  - update_type: "patch" (redeploy) or "major" (run tellr.update())
131
135
  """
132
- installed = _get_installed_version()
136
+ installed = get_installed_version()
133
137
  latest = _get_latest_version_from_pypi()
134
138
 
135
139
  update_available = False
@@ -2073,41 +2073,6 @@ class SessionManager:
2073
2073
 
2074
2074
  return count
2075
2075
 
2076
- # Cleanup operations
2077
- def cleanup_expired_sessions(self) -> int:
2078
- """Delete sessions that have exceeded TTL.
2079
-
2080
- WARNING: user_sessions is the app's durable usage history. This
2081
- method is intentionally NOT scheduled anywhere — it is only
2082
- reachable via the manual POST /api/sessions/cleanup endpoint.
2083
- Do not wire it to a scheduler; doing so would destroy the
2084
- history that the /admin usage dashboard's pre-event-log
2085
- aggregations rely on.
2086
-
2087
- Returns:
2088
- Number of sessions deleted
2089
- """
2090
- cutoff = datetime.utcnow() - timedelta(hours=self.session_ttl_hours)
2091
-
2092
- with get_db_session() as db:
2093
- expired = (
2094
- db.query(UserSession)
2095
- .filter(UserSession.last_activity < cutoff)
2096
- .all()
2097
- )
2098
-
2099
- count = len(expired)
2100
- for session in expired:
2101
- db.delete(session)
2102
-
2103
- if count > 0:
2104
- logger.info(
2105
- "Cleaned up expired sessions",
2106
- extra={"count": count, "cutoff": cutoff.isoformat()},
2107
- )
2108
-
2109
- return count
2110
-
2111
2076
  def _get_session_or_raise(self, db: Session, session_id: str) -> UserSession:
2112
2077
  """Get session by ID or raise error.
2113
2078
 
@@ -191,6 +191,36 @@ def _refresh_oauth_env_token() -> None:
191
191
  pass # non-critical; existing token may still be valid
192
192
 
193
193
 
194
+ def sp_auth_diagnostics(client: WorkspaceClient) -> dict:
195
+ """Report which SP credential material the platform supplied, and what the SDK chose.
196
+
197
+ SDR-4437 F-CR-18: the SDK credential chain is ordered pat -> basic ->
198
+ metadata-service -> oauth-m2m, so a ``DATABRICKS_TOKEN`` in the environment
199
+ silently wins over the platform-injected client id/secret. ``app.yaml``
200
+ currently supplies that token via ``valueFrom: system.databricks_token``.
201
+
202
+ Whether the token can simply be dropped from ``app.yaml`` turns on whether
203
+ the platform also supplies a usable ``DATABRICKS_CLIENT_SECRET``: the SDK's
204
+ oauth-m2m provider requires host + client_id + client_secret together, and
205
+ MLflow delegates to this same chain (it needs no token of its own when
206
+ ``MLFLOW_ENABLE_DB_SDK`` is on, which is its default). This records the
207
+ answer from a running deployment instead of inferring it.
208
+
209
+ Presence booleans only — never any part of a credential value.
210
+ """
211
+ try:
212
+ resolved_auth_type = client.config.auth_type
213
+ except Exception as e: # pragma: no cover - defensive; config access is local
214
+ resolved_auth_type = f"unavailable: {type(e).__name__}"
215
+
216
+ return {
217
+ "has_client_id": bool(os.getenv("DATABRICKS_CLIENT_ID")),
218
+ "has_client_secret": bool(os.getenv("DATABRICKS_CLIENT_SECRET")),
219
+ "has_token": bool(os.getenv("DATABRICKS_TOKEN")),
220
+ "resolved_auth_type": resolved_auth_type,
221
+ }
222
+
223
+
194
224
  def get_system_client(force_new: bool = False) -> WorkspaceClient:
195
225
  """
196
226
  Get the system-level WorkspaceClient (service principal).
@@ -271,6 +301,26 @@ def get_system_client(force_new: bool = False) -> WorkspaceClient:
271
301
  product_version=version,
272
302
  )
273
303
 
304
+ # SDR-4437 F-CR-18: record which credential material the platform
305
+ # supplied and which auth the SDK actually selected. Logged before
306
+ # the dev/test early return so it is available in every environment.
307
+ # Values go in the message, not ``extra``: the app boots on
308
+ # ``logging.basicConfig`` with a "%(message)s" format, so extra
309
+ # fields never reach the log.
310
+ # The Apps log scrubber redacts any field whose NAME contains
311
+ # "secret" or "token", so these labels are deliberately indirect:
312
+ # "has_client_secret=True" rendered in /logz as
313
+ # "has_client_REDACTED_SECRET" and could not be read.
314
+ diag = sp_auth_diagnostics(_system_client)
315
+ logger.info(
316
+ "System SP auth resolution: resolved_auth_type=%s "
317
+ "client_id_present=%s m2m_credential_present=%s pat_credential_present=%s",
318
+ diag["resolved_auth_type"],
319
+ diag["has_client_id"],
320
+ diag["has_client_secret"],
321
+ diag["has_token"],
322
+ )
323
+
274
324
  # Skip verification in dev/test mode
275
325
  # Allows local dev and tests without valid token
276
326
  if os.getenv("ENVIRONMENT") in ("development", "test"):