databricks-tellr-app 0.3.10.dev1__tar.gz → 0.3.10.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 (144) hide show
  1. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/PKG-INFO +1 -1
  2. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/databricks_tellr_app.egg-info/PKG-INFO +1 -1
  3. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/pyproject.toml +1 -1
  4. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/database.py +55 -10
  5. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/README.md +0 -0
  6. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/databricks_tellr_app/__init__.py +0 -0
  7. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/databricks_tellr_app/run.py +0 -0
  8. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/databricks_tellr_app.egg-info/SOURCES.txt +0 -0
  9. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/databricks_tellr_app.egg-info/dependency_links.txt +0 -0
  10. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/databricks_tellr_app.egg-info/requires.txt +0 -0
  11. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/databricks_tellr_app.egg-info/top_level.txt +0 -0
  12. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/setup.cfg +0 -0
  13. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/setup.py +0 -0
  14. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/__init__.py +0 -0
  15. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/__init__.py +0 -0
  16. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/_otel_bootstrap.py +0 -0
  17. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/fixtures/tour_demo_deck.json +0 -0
  18. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/main.py +0 -0
  19. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/mcp_auth.py +0 -0
  20. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/mcp_server.py +0 -0
  21. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/middleware/__init__.py +0 -0
  22. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/middleware/request_logging.py +0 -0
  23. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/__init__.py +0 -0
  24. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/admin.py +0 -0
  25. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/agent_config.py +0 -0
  26. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/chat.py +0 -0
  27. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/deck_contributors.py +0 -0
  28. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/export.py +0 -0
  29. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/feedback.py +0 -0
  30. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/google_slides.py +0 -0
  31. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/images.py +0 -0
  32. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/local_version.py +0 -0
  33. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/profiles.py +0 -0
  34. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/sessions.py +0 -0
  35. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/settings/__init__.py +0 -0
  36. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/settings/contributors.py +0 -0
  37. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/settings/deck_prompts.py +0 -0
  38. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/settings/identities.py +0 -0
  39. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/settings/slide_styles.py +0 -0
  40. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/setup.py +0 -0
  41. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/slides.py +0 -0
  42. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/tools.py +0 -0
  43. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/tour.py +0 -0
  44. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/verification.py +0 -0
  45. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/routes/version.py +0 -0
  46. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/schemas/__init__.py +0 -0
  47. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/schemas/agent_config.py +0 -0
  48. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/schemas/feedback.py +0 -0
  49. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/schemas/requests.py +0 -0
  50. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/schemas/responses.py +0 -0
  51. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/schemas/settings/__init__.py +0 -0
  52. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/schemas/settings/requests.py +0 -0
  53. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/schemas/settings/responses.py +0 -0
  54. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/schemas/streaming.py +0 -0
  55. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/services/__init__.py +0 -0
  56. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/services/chat_service.py +0 -0
  57. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/services/export_job_queue.py +0 -0
  58. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/services/feedback_service.py +0 -0
  59. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/services/job_queue.py +0 -0
  60. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/services/session_manager.py +0 -0
  61. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/services/session_naming.py +0 -0
  62. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/utils/__init__.py +0 -0
  63. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/api/utils/validation.py +0 -0
  64. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/__init__.py +0 -0
  65. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/config_loader.py +0 -0
  66. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/context_utils.py +0 -0
  67. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/databricks_client.py +0 -0
  68. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/defaults.py +0 -0
  69. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/encryption.py +0 -0
  70. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/init_default_profile.py +0 -0
  71. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/lakebase.py +0 -0
  72. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/migrate_profiles_to_agent_config.py +0 -0
  73. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/mlflow_agent_spans.py +0 -0
  74. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/mlflow_tracing.py +0 -0
  75. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/otel_logging.py +0 -0
  76. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/permission_context.py +0 -0
  77. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/prompt_modules.py +0 -0
  78. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/settings_db.py +0 -0
  79. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/core/user_context.py +0 -0
  80. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/__init__.py +0 -0
  81. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/__init__.py +0 -0
  82. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/deck_contributor.py +0 -0
  83. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/feedback.py +0 -0
  84. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/genie_space.py +0 -0
  85. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/google_global_credentials.py +0 -0
  86. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/google_oauth_token.py +0 -0
  87. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/identity.py +0 -0
  88. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/image.py +0 -0
  89. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/profile.py +0 -0
  90. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/profile_contributor.py +0 -0
  91. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/prompts.py +0 -0
  92. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/request_log.py +0 -0
  93. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/session.py +0 -0
  94. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/slide_deck_prompt.py +0 -0
  95. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/slide_style_library.py +0 -0
  96. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/database/models/user_preference.py +0 -0
  97. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/domain/__init__.py +0 -0
  98. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/domain/slide.py +0 -0
  99. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/domain/slide_deck.py +0 -0
  100. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/__init__.py +0 -0
  101. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/agent.py +0 -0
  102. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/agent_factory.py +0 -0
  103. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/config_service.py +0 -0
  104. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/config_validator.py +0 -0
  105. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/drive_uploader.py +0 -0
  106. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/evaluation/__init__.py +0 -0
  107. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/evaluation/llm_judge.py +0 -0
  108. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/genie_service.py +0 -0
  109. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/google_slides_auth.py +0 -0
  110. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/google_slides_prompts_defaults.py +0 -0
  111. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/html_to_google_slides.py +0 -0
  112. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/html_to_pptx.py +0 -0
  113. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/identity_provider.py +0 -0
  114. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/identity_providers/__init__.py +0 -0
  115. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/identity_providers/account_provider.py +0 -0
  116. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/identity_providers/local_provider.py +0 -0
  117. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/identity_providers/workspace_provider.py +0 -0
  118. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/image_service.py +0 -0
  119. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/image_tools.py +0 -0
  120. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/permission_service.py +0 -0
  121. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/pptx_from_html_huashu.py +0 -0
  122. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/pptx_from_records.py +0 -0
  123. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/pptx_prompts_defaults.py +0 -0
  124. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/profile_service.py +0 -0
  125. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/streaming_callback.py +0 -0
  126. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/tools/__init__.py +0 -0
  127. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/tools/agent_bricks_tool.py +0 -0
  128. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/tools/genie_tool.py +0 -0
  129. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/tools/mcp_tool.py +0 -0
  130. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/tools/model_endpoint_tool.py +0 -0
  131. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/tools/vector_tool.py +0 -0
  132. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/services/validator.py +0 -0
  133. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/utils/__init__.py +0 -0
  134. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/utils/css_utils.py +0 -0
  135. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/utils/error_handling.py +0 -0
  136. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/utils/html_safety.py +0 -0
  137. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/utils/html_utils.py +0 -0
  138. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/utils/image_utils.py +0 -0
  139. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/utils/js_validator.py +0 -0
  140. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/utils/logging_config.py +0 -0
  141. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/utils/pi_filter.py +0 -0
  142. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/utils/slide_hash.py +0 -0
  143. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.dev2}/src/utils/spotlight.py +0 -0
  144. {databricks_tellr_app-0.3.10.dev1 → databricks_tellr_app-0.3.10.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.dev1
3
+ Version: 0.3.10.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.dev1
3
+ Version: 0.3.10.dev2
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.3.10.dev1"
7
+ version = "0.3.10.dev2"
8
8
  description = "Tellr application package for Databricks Apps"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -474,16 +474,10 @@ def _run_migrations(engine, schema: str | None = None):
474
474
  f"ALTER TABLE {qualified_table} ADD COLUMN llm_judge_backend VARCHAR(32) "
475
475
  "DEFAULT 'mlflow' NOT NULL"
476
476
  ))
477
- elif not is_sqlite:
478
- try:
479
- conn.execute(text(
480
- f"ALTER TABLE {qualified_table} ALTER COLUMN llm_judge_backend "
481
- "SET DEFAULT 'mlflow'"
482
- ))
483
- except Exception as ex:
484
- logger.debug(
485
- "Migration: skip llm_judge_backend server default alter: %s", ex
486
- )
477
+ else:
478
+ _ensure_llm_judge_backend_default(
479
+ conn, table_name, qualified_table, schema, is_sqlite
480
+ )
487
481
  # --- config_profiles: migrate is_global bool to global_permission ---
488
482
  if "is_global" in columns:
489
483
  logger.info(f"Migration: migrating is_global to global_permission")
@@ -528,6 +522,57 @@ def _run_migrations(engine, schema: str | None = None):
528
522
  _migrate_image_assets_tags_json_to_jsonb(conn, schema, _qual, is_sqlite)
529
523
 
530
524
 
525
+ def _ensure_llm_judge_backend_default(
526
+ conn, table_name, qualified_table, schema, is_sqlite
527
+ ) -> None:
528
+ """Ensure config_profiles.llm_judge_backend has server default 'mlflow'.
529
+
530
+ Idempotent and fork-safe. SQLite sets the default at column creation, so
531
+ there is nothing to do there. On PostgreSQL, only issue the ALTER when the
532
+ current default is NOT already 'mlflow' — re-issuing it on every startup is
533
+ needless ownership-gated DDL that fails on a copy-on-write branch where the
534
+ app's service principal does not own the inherited table, and (because the
535
+ whole migration runs in one transaction) a swallowed failure would poison
536
+ every later migration statement. Skipping when already-correct makes a
537
+ same-schema branch a true no-op; the rare real backfill runs inside a
538
+ SAVEPOINT so its failure is contained rather than aborting the outer
539
+ transaction.
540
+ """
541
+ from sqlalchemy import text
542
+
543
+ if is_sqlite:
544
+ return
545
+
546
+ current_default = None
547
+ try:
548
+ sql = (
549
+ "SELECT column_default FROM information_schema.columns "
550
+ "WHERE table_name = :t AND column_name = 'llm_judge_backend'"
551
+ )
552
+ params = {"t": table_name}
553
+ if schema:
554
+ sql += " AND table_schema = :s"
555
+ params["s"] = schema
556
+ current_default = conn.execute(text(sql), params).scalar()
557
+ except Exception:
558
+ current_default = None
559
+
560
+ if current_default is not None and "mlflow" in str(current_default):
561
+ return # already correct — no DDL needed
562
+
563
+ logger.info("Migration: setting llm_judge_backend server default to 'mlflow'")
564
+ try:
565
+ with conn.begin_nested():
566
+ conn.execute(text(
567
+ f"ALTER TABLE {qualified_table} ALTER COLUMN llm_judge_backend "
568
+ "SET DEFAULT 'mlflow'"
569
+ ))
570
+ except Exception as ex:
571
+ logger.debug(
572
+ "Migration: skip llm_judge_backend server default alter: %s", ex
573
+ )
574
+
575
+
531
576
  def _migrate_image_assets_tags_json_to_jsonb(conn, schema, _qual, is_sqlite) -> None:
532
577
  """Alter image_assets.tags from json to jsonb on PostgreSQL (idempotent).
533
578