databricks-tellr-app 0.4.2.dev15__tar.gz → 0.4.2.dev17__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.2.dev15 → databricks_tellr_app-0.4.2.dev17}/PKG-INFO +1 -1
  2. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/databricks_tellr_app.egg-info/PKG-INFO +1 -1
  3. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/pyproject.toml +1 -1
  4. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/export.py +50 -5
  5. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/utils/html_safety.py +41 -0
  6. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/README.md +0 -0
  7. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/databricks_tellr_app/__init__.py +0 -0
  8. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/databricks_tellr_app/run.py +0 -0
  9. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/databricks_tellr_app.egg-info/SOURCES.txt +0 -0
  10. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/databricks_tellr_app.egg-info/dependency_links.txt +0 -0
  11. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/databricks_tellr_app.egg-info/requires.txt +0 -0
  12. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/databricks_tellr_app.egg-info/top_level.txt +0 -0
  13. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/setup.cfg +0 -0
  14. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/setup.py +0 -0
  15. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/__init__.py +0 -0
  16. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/__init__.py +0 -0
  17. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/_otel_bootstrap.py +0 -0
  18. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/fixtures/tour_demo_deck.json +0 -0
  19. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/main.py +0 -0
  20. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/mcp_auth.py +0 -0
  21. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/mcp_server.py +0 -0
  22. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/middleware/__init__.py +0 -0
  23. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/middleware/csrf.py +0 -0
  24. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/middleware/request_logging.py +0 -0
  25. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/middleware/security_headers.py +0 -0
  26. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/__init__.py +0 -0
  27. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/_authz.py +0 -0
  28. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/admin.py +0 -0
  29. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/admin_usage.py +0 -0
  30. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/agent_config.py +0 -0
  31. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/chat.py +0 -0
  32. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/deck_contributors.py +0 -0
  33. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/feedback.py +0 -0
  34. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/google_slides.py +0 -0
  35. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/images.py +0 -0
  36. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/local_version.py +0 -0
  37. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/profiles.py +0 -0
  38. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/sessions.py +0 -0
  39. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/settings/__init__.py +0 -0
  40. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/settings/contributors.py +0 -0
  41. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/settings/deck_prompts.py +0 -0
  42. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/settings/design_systems.py +0 -0
  43. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/settings/identities.py +0 -0
  44. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/settings/slide_styles.py +0 -0
  45. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/setup.py +0 -0
  46. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/slides.py +0 -0
  47. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/tools.py +0 -0
  48. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/tour.py +0 -0
  49. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/verification.py +0 -0
  50. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/routes/version.py +0 -0
  51. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/schemas/__init__.py +0 -0
  52. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/schemas/agent_config.py +0 -0
  53. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/schemas/feedback.py +0 -0
  54. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/schemas/requests.py +0 -0
  55. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/schemas/responses.py +0 -0
  56. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/schemas/settings/__init__.py +0 -0
  57. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/schemas/settings/requests.py +0 -0
  58. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/schemas/settings/responses.py +0 -0
  59. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/schemas/streaming.py +0 -0
  60. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/services/__init__.py +0 -0
  61. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/services/chat_service.py +0 -0
  62. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/services/export_job_queue.py +0 -0
  63. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/services/feedback_service.py +0 -0
  64. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/services/job_queue.py +0 -0
  65. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/services/session_manager.py +0 -0
  66. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/services/session_naming.py +0 -0
  67. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/services/usage_events.py +0 -0
  68. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/services/usage_service.py +0 -0
  69. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/utils/__init__.py +0 -0
  70. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/api/utils/validation.py +0 -0
  71. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/__init__.py +0 -0
  72. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/config_loader.py +0 -0
  73. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/context_utils.py +0 -0
  74. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/database.py +0 -0
  75. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/databricks_client.py +0 -0
  76. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/defaults.py +0 -0
  77. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/encryption.py +0 -0
  78. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/init_default_profile.py +0 -0
  79. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/lakebase.py +0 -0
  80. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/migrate_profiles_to_agent_config.py +0 -0
  81. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/mlflow_agent_spans.py +0 -0
  82. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/mlflow_tracing.py +0 -0
  83. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/otel_logging.py +0 -0
  84. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/permission_context.py +0 -0
  85. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/prompt_modules.py +0 -0
  86. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/settings_db.py +0 -0
  87. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/core/user_context.py +0 -0
  88. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/__init__.py +0 -0
  89. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/__init__.py +0 -0
  90. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/deck_contributor.py +0 -0
  91. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/design_system.py +0 -0
  92. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/encryption_key.py +0 -0
  93. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/feedback.py +0 -0
  94. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/genie_space.py +0 -0
  95. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/google_global_credentials.py +0 -0
  96. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/google_oauth_token.py +0 -0
  97. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/identity.py +0 -0
  98. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/image.py +0 -0
  99. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/profile.py +0 -0
  100. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/profile_contributor.py +0 -0
  101. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/prompts.py +0 -0
  102. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/request_log.py +0 -0
  103. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/session.py +0 -0
  104. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/slide_deck_prompt.py +0 -0
  105. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/slide_style_library.py +0 -0
  106. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/usage_event.py +0 -0
  107. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/models/user_preference.py +0 -0
  108. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/database/types.py +0 -0
  109. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/domain/__init__.py +0 -0
  110. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/domain/slide.py +0 -0
  111. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/domain/slide_deck.py +0 -0
  112. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/__init__.py +0 -0
  113. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/agent.py +0 -0
  114. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/agent_factory.py +0 -0
  115. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/config_service.py +0 -0
  116. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/config_validator.py +0 -0
  117. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/converter_jail/__init__.py +0 -0
  118. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/converter_jail/ast_guard.py +0 -0
  119. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/converter_jail/codeprep.py +0 -0
  120. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/converter_jail/gslides_runner.py +0 -0
  121. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/converter_jail/jail.py +0 -0
  122. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/converter_jail/pptx_runner.py +0 -0
  123. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/converter_jail/protocol.py +0 -0
  124. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/design_system_compiler.py +0 -0
  125. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/design_system_service.py +0 -0
  126. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/design_system_templates.py +0 -0
  127. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/drive_uploader.py +0 -0
  128. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/evaluation/__init__.py +0 -0
  129. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/evaluation/llm_judge.py +0 -0
  130. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/genie_service.py +0 -0
  131. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/google_slides_auth.py +0 -0
  132. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/google_slides_prompts_defaults.py +0 -0
  133. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/html_to_google_slides.py +0 -0
  134. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/html_to_pptx.py +0 -0
  135. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/identity_provider.py +0 -0
  136. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/identity_providers/__init__.py +0 -0
  137. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/identity_providers/account_provider.py +0 -0
  138. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/identity_providers/local_provider.py +0 -0
  139. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/identity_providers/workspace_provider.py +0 -0
  140. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/image_service.py +0 -0
  141. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/image_tools.py +0 -0
  142. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/permission_service.py +0 -0
  143. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/pptx_from_html_huashu.py +0 -0
  144. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/pptx_from_records.py +0 -0
  145. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/pptx_prompts_defaults.py +0 -0
  146. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/profile_service.py +0 -0
  147. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/streaming_callback.py +0 -0
  148. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/tools/__init__.py +0 -0
  149. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/tools/agent_bricks_tool.py +0 -0
  150. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/tools/ds_asset_tool.py +0 -0
  151. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/tools/genie_tool.py +0 -0
  152. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/tools/mcp_tool.py +0 -0
  153. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/tools/model_endpoint_tool.py +0 -0
  154. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/tools/vector_tool.py +0 -0
  155. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/services/validator.py +0 -0
  156. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/utils/__init__.py +0 -0
  157. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/utils/css_utils.py +0 -0
  158. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/utils/ds_asset_utils.py +0 -0
  159. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/utils/error_handling.py +0 -0
  160. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/utils/html_utils.py +0 -0
  161. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/utils/image_utils.py +0 -0
  162. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/utils/js_validator.py +0 -0
  163. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/utils/logging_config.py +0 -0
  164. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/utils/pi_filter.py +0 -0
  165. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/utils/slide_hash.py +0 -0
  166. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/src/utils/spotlight.py +0 -0
  167. {databricks_tellr_app-0.4.2.dev15 → databricks_tellr_app-0.4.2.dev17}/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.2.dev15
3
+ Version: 0.4.2.dev17
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.2.dev15
3
+ Version: 0.4.2.dev17
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.2.dev15"
7
+ version = "0.4.2.dev17"
8
8
  description = "Tellr application package for Databricks Apps"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -22,6 +22,7 @@ from src.utils.html_safety import (
22
22
  SLIDE_CSP_META,
23
23
  SLIDE_ROOT_RESET_STYLE,
24
24
  scan_html_for_unsafe_patterns,
25
+ slide_host_frame_style,
25
26
  )
26
27
 
27
28
  logger = logging.getLogger(__name__)
@@ -165,6 +166,52 @@ def build_slide_html(slide: dict, slide_deck: dict) -> str:
165
166
  extra={"slide_id": slide_id, "patterns": findings},
166
167
  )
167
168
 
169
+ # THE FIRST RESET SHEET BELOW IS SCOPED TO `html, body`, NEVER UNIVERSAL.
170
+ #
171
+ # A universal reset — border-box plus zeroed margin and padding, on every
172
+ # element — used to sit there. It laid slide DESCENDANTS out border-box and
173
+ # margin-free in the export while every preview surface lays them out
174
+ # content-box with UA margins, which is the box model Claude Design ground
175
+ # truth uses. That cost up to 69.87 px of per-component drift here, on the
176
+ # same 6 live slides the standalone builder diverged on by the same mechanism.
177
+ #
178
+ # This shell needs no box model of its own: it is a fixed 1280x720 document
179
+ # whose padding is zeroed both above and (after deck CSS) below, so the two
180
+ # box models are provably identical for html/body here. The standalone
181
+ # MULTI-slide builder does pad `body`, so it keeps `box-sizing` on its shell —
182
+ # see buildStandaloneDeckDocument in frontend/src/services/slideDocument.ts.
183
+ #
184
+ # Deliberately a `#` comment and NOT part of the f-string. Anything inside the
185
+ # f-string is EMITTED into every exported document, where it displaces useful
186
+ # deck CSS from the ~15,000-char budget `_truncate_html` hands the LLM — an
187
+ # oversize injected stylesheet driving that budget negative is what produced
188
+ # the all-placeholder export bug (WF-01). Keep every rendered comment to one
189
+ # short line and put the reasoning here instead.
190
+ #
191
+ # There is NO 2000-char sheet-role classifier, despite what this comment used
192
+ # to claim. Nothing in src/ or tests/ keys off a stylesheet's length; the tests
193
+ # identify sheets POSITIONALLY (`blocks[0..2]`, `len(blocks) == 3`) and by
194
+ # content (the deck's sheet is the one equal to the deck's CSS verbatim). This
195
+ # sheet is already over that supposed cap at 2,098 chars, so budgeting against
196
+ # it would be budgeting against nothing. The real cost is the LLM budget above.
197
+ # Pinned by tests/unit/test_preview_box_model_parity.py.
198
+ #
199
+ # THE FRAME CONTRACT GOES IN THIS SHEET ONLY, NEVER SHEET 2 (WF-03). Sheet 2
200
+ # must stay byte-equal to the deck's own CSS, or a deck whose CSS opens with
201
+ # `@import url(fonts.googleapis…)` loses its webfont: `@import` is only valid
202
+ # before every other rule of ITS OWN stylesheet. Pinned by
203
+ # tests/unit/test_export_deck_stylesheet.py.
204
+ #
205
+ # WHY THE CONTRACT IS HERE AT ALL. A design-system-pinned deck nests the slide
206
+ # two levels deep: a `<section>` carries the slide ground via a bare TYPE
207
+ # selector, and inside it `.slide` is `position: absolute; inset: 0`. The
208
+ # wrapper holds no in-flow content, collapses to height 0, and the ground it
209
+ # carries never paints — the deck's own dark `html, body` shows through at
210
+ # contrast 1.3025. Five preview surfaces injected this contract; no export
211
+ # builder did. Latent on this path today (the huashu sidecar reads
212
+ # `getComputedStyle(root).backgroundColor`, and a 1280x0 element still computes
213
+ # the right colour, so the .pptx was immune BY CONSTRUCTION) — but the
214
+ # divergence is real and this is where it stops being one.
168
215
  complete_html = f"""<!DOCTYPE html>
169
216
  <html lang="en">
170
217
  <head>
@@ -174,11 +221,7 @@ def build_slide_html(slide: dict, slide_deck: dict) -> str:
174
221
  <title>{slide_deck.get("title", "Slide")} - Slide {slide.get("slide_id", "")}</title>
175
222
  {scripts_html}
176
223
  <style>
177
- * {{
178
- box-sizing: border-box;
179
- margin: 0;
180
- padding: 0;
181
- }}
224
+ /* Shell-scoped, never universal: slide content stays content-box, as in every preview. */
182
225
  html, body {{
183
226
  width: 1280px;
184
227
  height: 720px;
@@ -220,6 +263,8 @@ def build_slide_html(slide: dict, slide_deck: dict) -> str:
220
263
  shifts content past the clip and truncates the export's bottom edge
221
264
  (same neutralization as every other surface). */
222
265
  {SLIDE_ROOT_RESET_STYLE}
266
+ /* After deck CSS: the shared slide-host frame contract. */
267
+ {slide_host_frame_style("body")}
223
268
  </style>
224
269
  </head>
225
270
  <body>
@@ -52,6 +52,47 @@ SLIDE_ROOT_RESET_STYLE = """
52
52
  }
53
53
  """
54
54
 
55
+ # The fixed 16:9 frame every slide surface renders into. Mirrors the frontend's
56
+ # SLIDE_FRAME_W / SLIDE_FRAME_H; tests/unit/test_export_csp.py pins both.
57
+ SLIDE_FRAME_W = 1280
58
+ SLIDE_FRAME_H = 720
59
+
60
+
61
+ def slide_host_frame_style(host_selector: str) -> str:
62
+ """The slide-host frame contract: frame ``host_selector``, STRETCH ITS CHILD.
63
+
64
+ Byte-identical mirror of the frontend builder's ``slideHostFrameStyle``
65
+ (frontend/src/services/slideDocument.ts), which carries the full rationale and
66
+ the per-declaration measurements. ``tests/unit/test_export_csp.py`` asserts
67
+ this renders exactly what the TS function renders, so the two cannot drift.
68
+
69
+ Why any of it is needed: a design-system-pinned deck nests the slide two
70
+ levels deep — a ``<section>`` carries the slide ground via a bare TYPE
71
+ selector, and inside it ``.slide`` is ``position: absolute; inset: 0``. The
72
+ wrapper therefore holds no in-flow content and collapses to ``height: 0``, so
73
+ the ground it carries never paints and the deck's own dark ``html, body``
74
+ shows through instead. Colour and font still inherit, which is why the result
75
+ is readable DARK-ON-DARK rather than an obviously blank slide. Sizing the ROOT
76
+ does not fix it; only stretching the host's CHILD gives the
77
+ background-carrying element area.
78
+ """
79
+ return f"""
80
+ {host_selector} {{
81
+ position: relative !important;
82
+ width: {SLIDE_FRAME_W}px !important;
83
+ height: {SLIDE_FRAME_H}px !important;
84
+ overflow: hidden;
85
+ }}
86
+ {host_selector} > :not(#tellr-host-frame-boost):not(.slide-wrapper) {{
87
+ position: absolute !important;
88
+ inset: 0 !important;
89
+ width: 100% !important;
90
+ height: 100% !important;
91
+ box-sizing: border-box !important;
92
+ overflow: hidden;
93
+ }}
94
+ """
95
+
55
96
  # Script sources allowed in slides (Chart.js + Tailwind Play CDN + Google Fonts).
56
97
  # Google Fonts <link>s are allowed by the slide CSP `style-src`/`font-src` at
57
98
  # runtime, so the scanner must not flag them as external resources.