databricks-tellr-app 0.4.3.dev40__tar.gz → 0.4.3.dev42__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.
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/PKG-INFO +1 -1
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/databricks_tellr_app.egg-info/PKG-INFO +1 -1
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/pyproject.toml +1 -1
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/main.py +2 -19
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/export.py +8 -2
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/services/export_job_queue.py +0 -31
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/converter_jail/jail.py +5 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/html_to_google_slides.py +9 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/README.md +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/databricks_tellr_app/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/databricks_tellr_app/run.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/databricks_tellr_app.egg-info/SOURCES.txt +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/databricks_tellr_app.egg-info/dependency_links.txt +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/databricks_tellr_app.egg-info/requires.txt +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/databricks_tellr_app.egg-info/top_level.txt +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/setup.cfg +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/setup.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/_otel_bootstrap.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/fixtures/tour_demo_deck.json +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/mcp_auth.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/mcp_server.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/middleware/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/middleware/csrf.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/middleware/request_logging.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/middleware/security_headers.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/_authz.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/admin.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/admin_usage.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/agent_config.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/chat.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/deck_contributors.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/feedback.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/google_slides.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/images.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/local_version.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/profiles.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/sessions.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/settings/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/settings/contributors.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/settings/deck_prompts.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/settings/design_systems.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/settings/identities.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/settings/slide_styles.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/setup.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/slides.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/tools.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/tour.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/verification.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/version.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/agent_config.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/feedback.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/requests.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/responses.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/settings/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/settings/requests.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/settings/responses.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/streaming.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/services/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/services/chat_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/services/feedback_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/services/job_queue.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/services/session_manager.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/services/session_naming.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/services/usage_events.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/services/usage_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/utils/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/utils/validation.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/config_loader.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/context_utils.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/database.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/databricks_client.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/defaults.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/encryption.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/init_default_profile.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/lakebase.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/migrate_profiles_to_agent_config.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/mlflow_agent_spans.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/mlflow_tracing.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/otel_logging.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/permission_context.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/prompt_modules.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/settings_db.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/user_context.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/deck_contributor.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/design_system.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/encryption_key.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/feedback.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/genie_space.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/google_global_credentials.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/google_oauth_token.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/identity.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/image.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/profile.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/profile_contributor.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/prompts.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/request_log.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/session.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/slide_deck_prompt.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/slide_style_library.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/usage_event.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/user_preference.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/types.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/domain/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/domain/slide.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/domain/slide_deck.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/agent.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/agent_factory.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/config_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/config_validator.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/converter_jail/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/converter_jail/ast_guard.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/converter_jail/codeprep.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/converter_jail/gslides_runner.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/converter_jail/pptx_runner.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/converter_jail/protocol.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/design_system_compiler.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/design_system_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/design_system_templates.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/drive_uploader.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/evaluation/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/evaluation/llm_judge.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/genie_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/google_slides_auth.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/google_slides_prompts_defaults.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/html_to_pptx.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/identity_provider.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/identity_providers/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/identity_providers/account_provider.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/identity_providers/local_provider.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/identity_providers/workspace_provider.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/image_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/image_tools.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/permission_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/pptx_from_html_huashu.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/pptx_from_records.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/pptx_prompts_defaults.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/profile_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/streaming_callback.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/tools/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/tools/agent_bricks_tool.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/tools/ds_asset_tool.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/tools/genie_tool.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/tools/mcp_tool.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/tools/model_endpoint_tool.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/tools/vector_tool.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/validator.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/css_utils.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/ds_asset_utils.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/error_handling.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/html_safety.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/html_utils.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/image_utils.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/js_validator.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/logging_config.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/pi_filter.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/slide_hash.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/spotlight.py +0 -0
- {databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/text_caps.py +0 -0
|
@@ -31,10 +31,7 @@ from src.api.routes.settings import (
|
|
|
31
31
|
identities_router,
|
|
32
32
|
slide_styles_router,
|
|
33
33
|
)
|
|
34
|
-
from src.api.services.export_job_queue import
|
|
35
|
-
start_export_cleanup_worker,
|
|
36
|
-
start_export_worker,
|
|
37
|
-
)
|
|
34
|
+
from src.api.services.export_job_queue import start_export_worker
|
|
38
35
|
from src.api.services.job_queue import recover_stuck_requests, start_worker
|
|
39
36
|
from src.core.database import (
|
|
40
37
|
is_lakebase_environment,
|
|
@@ -52,7 +49,6 @@ IS_TESTING = ENVIRONMENT == "test"
|
|
|
52
49
|
# Worker task references for cleanup
|
|
53
50
|
_worker_task = None
|
|
54
51
|
_export_worker_task = None
|
|
55
|
-
_export_cleanup_task: asyncio.Task | None = None
|
|
56
52
|
_cleanup_task = None
|
|
57
53
|
_timeout_task = None
|
|
58
54
|
_frontend_assets_stack: ExitStack | None = None
|
|
@@ -61,8 +57,7 @@ _frontend_assets_stack: ExitStack | None = None
|
|
|
61
57
|
@asynccontextmanager
|
|
62
58
|
async def lifespan(app: FastAPI):
|
|
63
59
|
"""Lifespan context manager for startup/shutdown events."""
|
|
64
|
-
global _worker_task, _export_worker_task,
|
|
65
|
-
global _cleanup_task, _timeout_task, _frontend_assets_stack
|
|
60
|
+
global _worker_task, _export_worker_task, _cleanup_task, _timeout_task, _frontend_assets_stack
|
|
66
61
|
|
|
67
62
|
# Startup
|
|
68
63
|
logger.info(f"Starting AI Slide Generator API (environment: {ENVIRONMENT})")
|
|
@@ -129,10 +124,6 @@ async def lifespan(app: FastAPI):
|
|
|
129
124
|
_export_worker_task = await start_export_worker()
|
|
130
125
|
logger.info("Export job queue worker started")
|
|
131
126
|
|
|
132
|
-
# Start the export job TTL cleanup worker
|
|
133
|
-
_export_cleanup_task = await start_export_cleanup_worker()
|
|
134
|
-
logger.info("Export job cleanup worker started")
|
|
135
|
-
|
|
136
127
|
# Start the MCP job timeout sweeper
|
|
137
128
|
from src.api.services.job_queue import mark_timed_out_jobs_loop
|
|
138
129
|
_timeout_task = asyncio.create_task(mark_timed_out_jobs_loop())
|
|
@@ -178,14 +169,6 @@ async def lifespan(app: FastAPI):
|
|
|
178
169
|
pass
|
|
179
170
|
logger.info("Export job queue worker stopped")
|
|
180
171
|
|
|
181
|
-
if _export_cleanup_task:
|
|
182
|
-
_export_cleanup_task.cancel()
|
|
183
|
-
try:
|
|
184
|
-
await _export_cleanup_task
|
|
185
|
-
except asyncio.CancelledError:
|
|
186
|
-
pass
|
|
187
|
-
logger.info("Export job cleanup worker stopped")
|
|
188
|
-
|
|
189
172
|
if _cleanup_task:
|
|
190
173
|
_cleanup_task.cancel()
|
|
191
174
|
try:
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/export.py
RENAMED
|
@@ -807,11 +807,13 @@ async def poll_pptx_export(job_id: str):
|
|
|
807
807
|
|
|
808
808
|
|
|
809
809
|
@router.get("/pptx/download/{job_id}")
|
|
810
|
-
async def download_pptx_export(job_id: str):
|
|
810
|
+
async def download_pptx_export(job_id: str, background_tasks: BackgroundTasks):
|
|
811
811
|
"""Download completed PPTX export.
|
|
812
812
|
|
|
813
813
|
Args:
|
|
814
814
|
job_id: Job ID from start_pptx_export_async
|
|
815
|
+
background_tasks: FastAPI background tasks for cleanup
|
|
816
|
+
|
|
815
817
|
Returns:
|
|
816
818
|
FileResponse with PPTX file
|
|
817
819
|
|
|
@@ -822,6 +824,7 @@ async def download_pptx_export(job_id: str):
|
|
|
822
824
|
_require_export_job_access(job_id)
|
|
823
825
|
from src.api.services.export_job_queue import (
|
|
824
826
|
get_export_job_status,
|
|
827
|
+
cleanup_export_job,
|
|
825
828
|
)
|
|
826
829
|
|
|
827
830
|
job = get_export_job_status(job_id)
|
|
@@ -849,6 +852,9 @@ async def download_pptx_export(job_id: str):
|
|
|
849
852
|
extra={"job_id": job_id, "pptx_filename": filename},
|
|
850
853
|
)
|
|
851
854
|
|
|
855
|
+
# Schedule cleanup after download
|
|
856
|
+
background_tasks.add_task(cleanup_export_job, job_id)
|
|
857
|
+
|
|
852
858
|
return FileResponse(
|
|
853
859
|
path=output_path,
|
|
854
860
|
filename=filename,
|
|
@@ -1289,4 +1295,4 @@ async def export_pptx_huashu_from_html(request: ExportPPTXEditableRequest):
|
|
|
1289
1295
|
content=pptx_bytes,
|
|
1290
1296
|
media_type="application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
1291
1297
|
headers=headers,
|
|
1292
|
-
)
|
|
1298
|
+
)
|
|
@@ -29,9 +29,6 @@ logger = logging.getLogger(__name__)
|
|
|
29
29
|
# Only needs to work within a single process.
|
|
30
30
|
export_queue: asyncio.Queue = asyncio.Queue()
|
|
31
31
|
|
|
32
|
-
EXPORT_CLEANUP_INTERVAL_SECONDS = 300
|
|
33
|
-
EXPORT_JOB_MAX_AGE_MINUTES = 30
|
|
34
|
-
|
|
35
32
|
|
|
36
33
|
def generate_job_id() -> str:
|
|
37
34
|
"""Generate a unique job ID."""
|
|
@@ -513,34 +510,6 @@ async def start_export_worker() -> asyncio.Task:
|
|
|
513
510
|
return asyncio.create_task(export_worker())
|
|
514
511
|
|
|
515
512
|
|
|
516
|
-
async def export_cleanup_loop() -> None:
|
|
517
|
-
"""Periodically remove terminal export jobs that have exceeded their TTL."""
|
|
518
|
-
logger.info("Export job cleanup worker started")
|
|
519
|
-
while True:
|
|
520
|
-
try:
|
|
521
|
-
await asyncio.sleep(EXPORT_CLEANUP_INTERVAL_SECONDS)
|
|
522
|
-
cleaned = await asyncio.to_thread(
|
|
523
|
-
cleanup_stale_jobs,
|
|
524
|
-
EXPORT_JOB_MAX_AGE_MINUTES,
|
|
525
|
-
)
|
|
526
|
-
if cleaned:
|
|
527
|
-
logger.info("Cleaned up %d stale export job(s)", cleaned)
|
|
528
|
-
except asyncio.CancelledError:
|
|
529
|
-
logger.info("Export job cleanup worker shutting down")
|
|
530
|
-
raise
|
|
531
|
-
except Exception as e:
|
|
532
|
-
logger.warning(
|
|
533
|
-
"Export job cleanup iteration failed",
|
|
534
|
-
exc_info=True,
|
|
535
|
-
extra={"error": str(e)},
|
|
536
|
-
)
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
async def start_export_cleanup_worker() -> asyncio.Task:
|
|
540
|
-
"""Start the background export job cleanup task."""
|
|
541
|
-
return asyncio.create_task(export_cleanup_loop())
|
|
542
|
-
|
|
543
|
-
|
|
544
513
|
def cleanup_export_job(job_id: str) -> None:
|
|
545
514
|
"""Clean up job data and temporary files.
|
|
546
515
|
|
|
@@ -115,6 +115,11 @@ def netns_available() -> bool:
|
|
|
115
115
|
except Exception:
|
|
116
116
|
result = False
|
|
117
117
|
_netns_cache = result
|
|
118
|
+
# NOTE (F-CR-30): in Databricks Apps `unshare --net` is typically
|
|
119
|
+
# unavailable. We deliberately do NOT fail closed: that would disable all
|
|
120
|
+
# PPTX/GSlides production conversion. Residual risk is accepted because the
|
|
121
|
+
# child env is whitelisted via build_scrubbed_env (no credentials) and the
|
|
122
|
+
# host-side AST import allowlist runs before every jail exec.
|
|
118
123
|
if not result:
|
|
119
124
|
logger.warning(
|
|
120
125
|
"Network namespace unavailable — converter jail runs without netns. "
|
|
@@ -1355,6 +1355,15 @@ class HtmlToGoogleSlidesConverter:
|
|
|
1355
1355
|
import shutil as _shutil
|
|
1356
1356
|
import tempfile as _tempfile
|
|
1357
1357
|
from src.services.converter_jail import protocol, run_gslides_jail
|
|
1358
|
+
from src.services.converter_jail.ast_guard import DisallowedImport, check_imports
|
|
1359
|
+
|
|
1360
|
+
# Same host-side AST allowlist as _build_gslides_job_dir (F-CR-30): a
|
|
1361
|
+
# rejected snippet is never written or exec'd; caller falls back.
|
|
1362
|
+
try:
|
|
1363
|
+
check_imports(code)
|
|
1364
|
+
except (DisallowedImport, SyntaxError) as exc:
|
|
1365
|
+
logger.warning("GSlides retry snippet rejected pre-jail: %s", exc)
|
|
1366
|
+
return None
|
|
1358
1367
|
|
|
1359
1368
|
job_dir = _tempfile.mkdtemp(prefix="gslides_retry_")
|
|
1360
1369
|
try:
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/databricks_tellr_app/run.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/_otel_bootstrap.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/middleware/__init__.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/middleware/csrf.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/__init__.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/_authz.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/admin.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/admin_usage.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/agent_config.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/chat.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/feedback.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/images.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/profiles.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/sessions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/setup.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/slides.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/tools.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/tour.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/verification.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/routes/version.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/feedback.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/requests.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/responses.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/schemas/streaming.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/services/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/services/job_queue.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/utils/__init__.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/api/utils/validation.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/config_loader.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/context_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/databricks_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/encryption.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/mlflow_agent_spans.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/mlflow_tracing.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/otel_logging.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/permission_context.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/prompt_modules.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/settings_db.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/core/user_context.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/image.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/profile.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/prompts.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/database/models/session.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/domain/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/domain/slide_deck.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/agent_factory.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/config_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/drive_uploader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/genie_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/html_to_pptx.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/image_service.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/image_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/tools/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/tools/mcp_tool.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/services/validator.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/css_utils.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/ds_asset_utils.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/error_handling.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/html_safety.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/html_utils.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/image_utils.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/js_validator.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/logging_config.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/pi_filter.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/slide_hash.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/spotlight.py
RENAMED
|
File without changes
|
{databricks_tellr_app-0.4.3.dev40 → databricks_tellr_app-0.4.3.dev42}/src/utils/text_caps.py
RENAMED
|
File without changes
|