databricks-tellr-app 0.4.3.dev14__tar.gz → 0.4.3.dev15__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.dev14 → databricks_tellr_app-0.4.3.dev15}/PKG-INFO +1 -1
  2. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/databricks_tellr_app.egg-info/PKG-INFO +1 -1
  3. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/pyproject.toml +1 -1
  4. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/mcp_auth.py +36 -25
  5. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/README.md +0 -0
  6. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/databricks_tellr_app/__init__.py +0 -0
  7. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/databricks_tellr_app/run.py +0 -0
  8. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/databricks_tellr_app.egg-info/SOURCES.txt +0 -0
  9. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/databricks_tellr_app.egg-info/dependency_links.txt +0 -0
  10. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/databricks_tellr_app.egg-info/requires.txt +0 -0
  11. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/databricks_tellr_app.egg-info/top_level.txt +0 -0
  12. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/setup.cfg +0 -0
  13. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/setup.py +0 -0
  14. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/__init__.py +0 -0
  15. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/__init__.py +0 -0
  16. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/_otel_bootstrap.py +0 -0
  17. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/fixtures/tour_demo_deck.json +0 -0
  18. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/main.py +0 -0
  19. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/mcp_server.py +0 -0
  20. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/middleware/__init__.py +0 -0
  21. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/middleware/csrf.py +0 -0
  22. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/middleware/request_logging.py +0 -0
  23. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/middleware/security_headers.py +0 -0
  24. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/__init__.py +0 -0
  25. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/_authz.py +0 -0
  26. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/admin.py +0 -0
  27. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/admin_usage.py +0 -0
  28. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/agent_config.py +0 -0
  29. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/chat.py +0 -0
  30. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/deck_contributors.py +0 -0
  31. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/export.py +0 -0
  32. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/feedback.py +0 -0
  33. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/google_slides.py +0 -0
  34. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/images.py +0 -0
  35. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/local_version.py +0 -0
  36. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/profiles.py +0 -0
  37. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/sessions.py +0 -0
  38. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/settings/__init__.py +0 -0
  39. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/settings/contributors.py +0 -0
  40. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/settings/deck_prompts.py +0 -0
  41. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/settings/design_systems.py +0 -0
  42. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/settings/identities.py +0 -0
  43. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/settings/slide_styles.py +0 -0
  44. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/setup.py +0 -0
  45. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/slides.py +0 -0
  46. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/tools.py +0 -0
  47. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/tour.py +0 -0
  48. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/verification.py +0 -0
  49. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/routes/version.py +0 -0
  50. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/schemas/__init__.py +0 -0
  51. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/schemas/agent_config.py +0 -0
  52. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/schemas/feedback.py +0 -0
  53. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/schemas/requests.py +0 -0
  54. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/schemas/responses.py +0 -0
  55. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/schemas/settings/__init__.py +0 -0
  56. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/schemas/settings/requests.py +0 -0
  57. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/schemas/settings/responses.py +0 -0
  58. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/schemas/streaming.py +0 -0
  59. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/services/__init__.py +0 -0
  60. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/services/chat_service.py +0 -0
  61. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/services/export_job_queue.py +0 -0
  62. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/services/feedback_service.py +0 -0
  63. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/services/job_queue.py +0 -0
  64. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/services/session_manager.py +0 -0
  65. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/services/session_naming.py +0 -0
  66. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/services/usage_events.py +0 -0
  67. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/services/usage_service.py +0 -0
  68. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/utils/__init__.py +0 -0
  69. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/api/utils/validation.py +0 -0
  70. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/__init__.py +0 -0
  71. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/config_loader.py +0 -0
  72. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/context_utils.py +0 -0
  73. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/database.py +0 -0
  74. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/databricks_client.py +0 -0
  75. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/defaults.py +0 -0
  76. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/encryption.py +0 -0
  77. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/init_default_profile.py +0 -0
  78. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/lakebase.py +0 -0
  79. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/migrate_profiles_to_agent_config.py +0 -0
  80. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/mlflow_agent_spans.py +0 -0
  81. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/mlflow_tracing.py +0 -0
  82. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/otel_logging.py +0 -0
  83. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/permission_context.py +0 -0
  84. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/prompt_modules.py +0 -0
  85. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/settings_db.py +0 -0
  86. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/core/user_context.py +0 -0
  87. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/__init__.py +0 -0
  88. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/__init__.py +0 -0
  89. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/deck_contributor.py +0 -0
  90. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/design_system.py +0 -0
  91. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/encryption_key.py +0 -0
  92. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/feedback.py +0 -0
  93. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/genie_space.py +0 -0
  94. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/google_global_credentials.py +0 -0
  95. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/google_oauth_token.py +0 -0
  96. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/identity.py +0 -0
  97. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/image.py +0 -0
  98. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/profile.py +0 -0
  99. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/profile_contributor.py +0 -0
  100. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/prompts.py +0 -0
  101. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/request_log.py +0 -0
  102. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/session.py +0 -0
  103. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/slide_deck_prompt.py +0 -0
  104. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/slide_style_library.py +0 -0
  105. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/usage_event.py +0 -0
  106. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/models/user_preference.py +0 -0
  107. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/database/types.py +0 -0
  108. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/domain/__init__.py +0 -0
  109. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/domain/slide.py +0 -0
  110. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/domain/slide_deck.py +0 -0
  111. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/__init__.py +0 -0
  112. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/agent.py +0 -0
  113. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/agent_factory.py +0 -0
  114. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/config_service.py +0 -0
  115. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/config_validator.py +0 -0
  116. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/converter_jail/__init__.py +0 -0
  117. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/converter_jail/ast_guard.py +0 -0
  118. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/converter_jail/codeprep.py +0 -0
  119. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/converter_jail/gslides_runner.py +0 -0
  120. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/converter_jail/jail.py +0 -0
  121. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/converter_jail/pptx_runner.py +0 -0
  122. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/converter_jail/protocol.py +0 -0
  123. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/design_system_compiler.py +0 -0
  124. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/design_system_service.py +0 -0
  125. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/design_system_templates.py +0 -0
  126. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/drive_uploader.py +0 -0
  127. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/evaluation/__init__.py +0 -0
  128. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/evaluation/llm_judge.py +0 -0
  129. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/genie_service.py +0 -0
  130. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/google_slides_auth.py +0 -0
  131. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/google_slides_prompts_defaults.py +0 -0
  132. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/html_to_google_slides.py +0 -0
  133. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/html_to_pptx.py +0 -0
  134. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/identity_provider.py +0 -0
  135. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/identity_providers/__init__.py +0 -0
  136. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/identity_providers/account_provider.py +0 -0
  137. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/identity_providers/local_provider.py +0 -0
  138. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/identity_providers/workspace_provider.py +0 -0
  139. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/image_service.py +0 -0
  140. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/image_tools.py +0 -0
  141. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/permission_service.py +0 -0
  142. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/pptx_from_html_huashu.py +0 -0
  143. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/pptx_from_records.py +0 -0
  144. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/pptx_prompts_defaults.py +0 -0
  145. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/profile_service.py +0 -0
  146. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/streaming_callback.py +0 -0
  147. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/tools/__init__.py +0 -0
  148. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/tools/agent_bricks_tool.py +0 -0
  149. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/tools/ds_asset_tool.py +0 -0
  150. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/tools/genie_tool.py +0 -0
  151. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/tools/mcp_tool.py +0 -0
  152. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/tools/model_endpoint_tool.py +0 -0
  153. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/tools/vector_tool.py +0 -0
  154. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/services/validator.py +0 -0
  155. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/utils/__init__.py +0 -0
  156. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/utils/css_utils.py +0 -0
  157. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/utils/ds_asset_utils.py +0 -0
  158. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/utils/error_handling.py +0 -0
  159. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/utils/html_safety.py +0 -0
  160. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/utils/html_utils.py +0 -0
  161. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/utils/image_utils.py +0 -0
  162. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/utils/js_validator.py +0 -0
  163. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/utils/logging_config.py +0 -0
  164. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/utils/pi_filter.py +0 -0
  165. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/utils/slide_hash.py +0 -0
  166. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/src/utils/spotlight.py +0 -0
  167. {databricks_tellr_app-0.4.3.dev14 → databricks_tellr_app-0.4.3.dev15}/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.dev14
3
+ Version: 0.4.3.dev15
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.dev14
3
+ Version: 0.4.3.dev15
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.dev14"
7
+ version = "0.4.3.dev15"
8
8
  description = "Tellr application package for Databricks Apps"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -16,19 +16,22 @@ Accepts three identity sources, evaluated in priority order:
16
16
  identity headers. The receiving app (tellr) trusts those headers
17
17
  because the same proxy sets them, strips any caller-supplied versions,
18
18
  and cannot be bypassed by external traffic. This path has no user
19
- token, so downstream Databricks API calls use tellr's own service
20
- principal credentials; attribution (``created_by`` on decks, etc.)
21
- remains the real user via ``user_name``.
19
+ token, so the user-client ContextVar is left **unset**: agent tools
20
+ that resolve their client via ``get_user_client()`` fail closed rather
21
+ than silently running as tellr's service principal (SDR-4437 / F-CR-3).
22
+ Code that legitimately needs SP credentials on this path must call
23
+ ``get_system_client()`` explicitly. Attribution (``created_by`` on
24
+ decks, etc.) remains the real user via ``user_name``.
22
25
 
23
26
  The priority-3 path is gated on ``TELLR_TRUST_FORWARDED_IDENTITY=true``
24
27
  so the behaviour is explicit at deploy time. Production Databricks Apps
25
28
  deployments enable it; local dev does not.
26
29
 
27
30
  The resolved identity is bound into the same request-scoped ContextVars
28
- the browser flow uses (``set_current_user``, ``set_user_client``,
29
- ``set_permission_context``), so downstream services (session manager,
30
- permission service, MLflow, Google OAuth) see the caller's identity
31
- without any MCP-specific plumbing.
31
+ the browser flow uses (``set_current_user``, ``set_permission_context``,
32
+ and — only when a user token is present — ``set_user_client``), so
33
+ downstream services (session manager, permission service, MLflow, Google
34
+ OAuth) see the caller's identity without any MCP-specific plumbing.
32
35
  """
33
36
 
34
37
  from __future__ import annotations
@@ -43,7 +46,6 @@ from fastapi import Request
43
46
 
44
47
  from src.core.databricks_client import (
45
48
  get_or_create_user_client,
46
- get_system_client,
47
49
  set_user_client,
48
50
  )
49
51
  from src.core.permission_context import (
@@ -150,28 +152,24 @@ def extract_mcp_identity(request: Request) -> MCPIdentity:
150
152
  def mcp_auth_scope(request: Request) -> Iterator[MCPIdentity]:
151
153
  """Authenticate an MCP request and bind identity ContextVars for the block.
152
154
 
153
- On entry: resolves identity, binds ``current_user``, ``user_client``,
154
- and ``permission_context``.
155
+ On entry: resolves identity and binds ``current_user`` and
156
+ ``permission_context``. The ``user_client`` ContextVar is bound only when
157
+ a real user token is present (priority 1/2); on the token-less priority-3
158
+ app-to-app path it is deliberately left unset.
155
159
 
156
160
  On exit: clears all three ContextVars, even if the wrapped block raised.
157
161
 
158
- When the identity was resolved via priority 3 (no user token), the
159
- bound ``user_client`` is tellr's service-principal client — downstream
160
- services still function, but any SDK calls are made with SP credentials
161
- rather than the user's own. Attribution (``created_by``) is unaffected:
162
- it uses ``user_name`` from the forwarded identity headers, which the
163
- proxy attests.
162
+ Leaving ``user_client`` unset on priority 3 makes it true by construction
163
+ that agent tools (which resolve their client via ``get_user_client()``)
164
+ can never execute as tellr's service principal on the app-to-app path —
165
+ they fail closed with ``UserClientRequiredError`` in production
166
+ (SDR-4437 / F-CR-3). Code that legitimately needs SP credentials must call
167
+ ``get_system_client()`` explicitly. Attribution (``created_by``) is
168
+ unaffected: it uses ``user_name`` from the forwarded identity headers,
169
+ which the proxy attests.
164
170
  """
165
171
  identity = extract_mcp_identity(request)
166
172
 
167
- if identity.token is not None:
168
- user_client = get_or_create_user_client(identity.token)
169
- else:
170
- # Priority-3 path: no user token, so downstream Databricks API
171
- # calls use tellr's service principal. Safe because the app-to-app
172
- # model explicitly delegates credentialing to the receiving app.
173
- user_client = get_system_client()
174
-
175
173
  permission_ctx = build_permission_context(
176
174
  user_id=identity.user_id,
177
175
  user_name=identity.user_name,
@@ -179,9 +177,22 @@ def mcp_auth_scope(request: Request) -> Iterator[MCPIdentity]:
179
177
  )
180
178
 
181
179
  set_current_user(identity.user_name)
182
- set_user_client(user_client)
183
180
  set_permission_context(permission_ctx)
184
181
 
182
+ if identity.token is not None:
183
+ # Priority 1/2: a real user token is present. Bind the OBO client so
184
+ # downstream services (agent tools included) act as the user.
185
+ set_user_client(get_or_create_user_client(identity.token))
186
+ else:
187
+ # Priority-3 (app-to-app) path: no user token is available. Do NOT
188
+ # bind any client into the user-client ContextVar. Leaving it unset
189
+ # makes it true by construction that agent tools — which resolve their
190
+ # client via get_user_client() — can never run as the app service
191
+ # principal on this path: they fail closed with UserClientRequiredError
192
+ # in production (SDR-4437 / F-CR-3). Anything that legitimately needs
193
+ # the SP here must call get_system_client() explicitly.
194
+ set_user_client(None)
195
+
185
196
  logger.debug(
186
197
  "MCP auth scope entered",
187
198
  extra={