databricks-tellr-app 0.4.3.dev35__tar.gz → 0.4.3.dev36__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.dev35 → databricks_tellr_app-0.4.3.dev36}/PKG-INFO +9 -14
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app/run.py +0 -79
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app.egg-info/PKG-INFO +9 -14
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app.egg-info/SOURCES.txt +0 -126
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app.egg-info/requires.txt +8 -13
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/pyproject.toml +9 -24
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/fixtures/tour_demo_deck.json +1 -52
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/main.py +8 -46
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/mcp_server.py +0 -1
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/chat.py +29 -194
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/google_slides.py +56 -6
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/sessions.py +4 -199
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/setup.py +22 -2
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/slides.py +4 -133
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/tour.py +0 -34
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/verification.py +9 -9
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/agent_config.py +10 -4
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/requests.py +0 -4
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/settings/requests.py +11 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/settings/responses.py +2 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/streaming.py +0 -23
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/services/chat_service.py +24 -1155
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/services/job_queue.py +11 -66
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/services/session_manager.py +69 -1426
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/services/session_naming.py +0 -27
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/config_loader.py +11 -4
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/database.py +38 -949
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/defaults.py +0 -13
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/init_default_profile.py +5 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/migrate_profiles_to_agent_config.py +28 -4
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/settings_db.py +2 -3
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/__init__.py +0 -26
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/prompts.py +6 -7
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/session.py +1 -279
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/domain/slide_deck.py +4 -10
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/agent.py +5 -24
- databricks_tellr_app-0.4.3.dev35/src/services/agent_resolution.py → databricks_tellr_app-0.4.3.dev36/src/services/agent_factory.py +181 -145
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/config_service.py +12 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/html_to_google_slides.py +3 -4
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/html_to_pptx.py +8 -9
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/profile_service.py +7 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/validator.py +10 -6
- databricks_tellr_app-0.4.3.dev36/src/utils/css_utils.py +78 -0
- databricks_tellr_app-0.4.3.dev35/src/api/routes/agent_definitions.py +0 -2112
- databricks_tellr_app-0.4.3.dev35/src/api/schemas/agent_definitions.py +0 -763
- databricks_tellr_app-0.4.3.dev35/src/api/schemas/graph_release_history.py +0 -261
- databricks_tellr_app-0.4.3.dev35/src/api/schemas/graph_releases.py +0 -192
- databricks_tellr_app-0.4.3.dev35/src/api/services/deck_level_writer.py +0 -424
- databricks_tellr_app-0.4.3.dev35/src/api/services/slide_repository.py +0 -431
- databricks_tellr_app-0.4.3.dev35/src/core/backfill_session_slides_startup.py +0 -315
- databricks_tellr_app-0.4.3.dev35/src/core/checkpointer.py +0 -488
- databricks_tellr_app-0.4.3.dev35/src/core/skills/__init__.py +0 -147
- databricks_tellr_app-0.4.3.dev35/src/core/skills/architect.py +0 -64
- databricks_tellr_app-0.4.3.dev35/src/core/skills/build_reviewer.py +0 -93
- databricks_tellr_app-0.4.3.dev35/src/core/skills/builder.py +0 -54
- databricks_tellr_app-0.4.3.dev35/src/core/skills/data_analyst.py +0 -38
- databricks_tellr_app-0.4.3.dev35/src/core/skills/deck_reviewer.py +0 -24
- databricks_tellr_app-0.4.3.dev35/src/core/skills/fix_reviewer.py +0 -22
- databricks_tellr_app-0.4.3.dev35/src/core/skills/fixer.py +0 -52
- databricks_tellr_app-0.4.3.dev35/src/core/strip_retired_prompt_keys.py +0 -210
- databricks_tellr_app-0.4.3.dev35/src/database/models/deck_review.py +0 -77
- databricks_tellr_app-0.4.3.dev35/src/database/models/graph_checkpoint.py +0 -104
- databricks_tellr_app-0.4.3.dev35/src/database/models/graph_configuration.py +0 -537
- databricks_tellr_app-0.4.3.dev35/src/domain/conversation_engine.py +0 -10
- databricks_tellr_app-0.4.3.dev35/src/domain/deck_spec.py +0 -166
- databricks_tellr_app-0.4.3.dev35/src/domain/finding.py +0 -313
- databricks_tellr_app-0.4.3.dev35/src/domain/skill_io.py +0 -259
- databricks_tellr_app-0.4.3.dev35/src/services/agent_definition_manifest_v1.py +0 -3
- databricks_tellr_app-0.4.3.dev35/src/services/agent_factory.py +0 -150
- databricks_tellr_app-0.4.3.dev35/src/services/agent_model_payload.py +0 -129
- databricks_tellr_app-0.4.3.dev35/src/services/agent_runtime.py +0 -916
- databricks_tellr_app-0.4.3.dev35/src/services/agent_runtime_identity.py +0 -181
- databricks_tellr_app-0.4.3.dev35/src/services/agent_schema_registry.py +0 -669
- databricks_tellr_app-0.4.3.dev35/src/services/agent_schema_types.py +0 -404
- databricks_tellr_app-0.4.3.dev35/src/services/agent_test_workbench.py +0 -1865
- databricks_tellr_app-0.4.3.dev35/src/services/collaboration_history.py +0 -366
- databricks_tellr_app-0.4.3.dev35/src/services/conversation_pins.py +0 -211
- databricks_tellr_app-0.4.3.dev35/src/services/deck_css_aggregator.py +0 -211
- databricks_tellr_app-0.4.3.dev35/src/services/deck_review_store.py +0 -263
- databricks_tellr_app-0.4.3.dev35/src/services/foreman_service.py +0 -307
- databricks_tellr_app-0.4.3.dev35/src/services/gateway_openai.py +0 -12
- databricks_tellr_app-0.4.3.dev35/src/services/graph/__init__.py +0 -6
- databricks_tellr_app-0.4.3.dev35/src/services/graph/builder.py +0 -384
- databricks_tellr_app-0.4.3.dev35/src/services/graph/event_emitter.py +0 -226
- databricks_tellr_app-0.4.3.dev35/src/services/graph/nodes.py +0 -3078
- databricks_tellr_app-0.4.3.dev35/src/services/graph/routers.py +0 -234
- databricks_tellr_app-0.4.3.dev35/src/services/graph/state.py +0 -331
- databricks_tellr_app-0.4.3.dev35/src/services/graph_configuration.py +0 -179
- databricks_tellr_app-0.4.3.dev35/src/services/graph_configuration_bootstrap.py +0 -337
- databricks_tellr_app-0.4.3.dev35/src/services/graph_configuration_content.py +0 -212
- databricks_tellr_app-0.4.3.dev35/src/services/graph_configuration_draft.py +0 -1088
- databricks_tellr_app-0.4.3.dev35/src/services/graph_configuration_publication.py +0 -659
- databricks_tellr_app-0.4.3.dev35/src/services/graph_configuration_rollback.py +0 -607
- databricks_tellr_app-0.4.3.dev35/src/services/graph_configuration_seed.py +0 -108
- databricks_tellr_app-0.4.3.dev35/src/services/graph_configuration_workbench.py +0 -418
- databricks_tellr_app-0.4.3.dev35/src/services/graph_definition_manifest.py +0 -370
- databricks_tellr_app-0.4.3.dev35/src/services/graph_release_evidence.py +0 -265
- databricks_tellr_app-0.4.3.dev35/src/services/graph_release_history.py +0 -307
- databricks_tellr_app-0.4.3.dev35/src/services/model_endpoint_catalog.py +0 -306
- databricks_tellr_app-0.4.3.dev35/src/services/model_endpoint_probe.py +0 -298
- databricks_tellr_app-0.4.3.dev35/src/services/persisted_graph_release.py +0 -252
- databricks_tellr_app-0.4.3.dev35/src/services/prompt_assembler.py +0 -875
- databricks_tellr_app-0.4.3.dev35/src/services/shared_deck_attribution.py +0 -131
- databricks_tellr_app-0.4.3.dev35/src/services/spec_sync.py +0 -756
- databricks_tellr_app-0.4.3.dev35/src/services/template_sections.py +0 -512
- databricks_tellr_app-0.4.3.dev35/src/utils/css_utils.py +0 -289
- databricks_tellr_app-0.4.3.dev35/src/utils/graph_safety.py +0 -100
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/README.md +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app.egg-info/dependency_links.txt +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app.egg-info/top_level.txt +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/setup.cfg +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/setup.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/_otel_bootstrap.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/mcp_auth.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/middleware/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/middleware/csrf.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/middleware/request_logging.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/middleware/security_headers.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/_authz.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/admin.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/admin_usage.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/agent_config.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/deck_contributors.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/export.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/feedback.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/images.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/local_version.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/profiles.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/settings/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/settings/contributors.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/settings/deck_prompts.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/settings/design_systems.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/settings/identities.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/settings/slide_styles.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/tools.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/version.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/feedback.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/responses.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/settings/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/services/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/services/export_job_queue.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/services/feedback_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/services/usage_events.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/services/usage_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/utils/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/api/utils/validation.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/context_utils.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/databricks_client.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/encryption.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/lakebase.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/mlflow_agent_spans.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/mlflow_tracing.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/otel_logging.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/permission_context.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/prompt_modules.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/core/user_context.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/deck_contributor.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/design_system.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/encryption_key.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/feedback.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/genie_space.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/google_global_credentials.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/google_oauth_token.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/identity.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/image.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/profile.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/profile_contributor.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/request_log.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/slide_deck_prompt.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/slide_style_library.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/usage_event.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/models/user_preference.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/database/types.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/domain/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/domain/slide.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/config_validator.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/ast_guard.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/codeprep.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/gslides_runner.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/jail.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/pptx_runner.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/protocol.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/design_system_compiler.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/design_system_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/design_system_templates.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/drive_uploader.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/evaluation/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/evaluation/llm_judge.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/genie_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/google_slides_auth.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/google_slides_prompts_defaults.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/identity_provider.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/identity_providers/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/identity_providers/account_provider.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/identity_providers/local_provider.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/identity_providers/workspace_provider.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/image_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/image_tools.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/permission_service.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/pptx_from_html_huashu.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/pptx_from_records.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/pptx_prompts_defaults.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/streaming_callback.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/agent_bricks_tool.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/ds_asset_tool.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/genie_tool.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/mcp_tool.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/model_endpoint_tool.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/vector_tool.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/utils/__init__.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/utils/ds_asset_utils.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/utils/error_handling.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/utils/html_safety.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/utils/html_utils.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/utils/image_utils.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/utils/js_validator.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/utils/logging_config.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/utils/pi_filter.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/utils/slide_hash.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/src/utils/spotlight.py +0 -0
- {databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/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.
|
|
3
|
+
Version: 0.4.3.dev36
|
|
4
4
|
Summary: Tellr application package for Databricks Apps
|
|
5
5
|
Requires-Python: >=3.10
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -9,16 +9,13 @@ Requires-Dist: uvicorn==0.38.0
|
|
|
9
9
|
Requires-Dist: python-multipart==0.0.20
|
|
10
10
|
Requires-Dist: pydantic==2.12.4
|
|
11
11
|
Requires-Dist: pydantic-settings==2.12.0
|
|
12
|
-
Requires-Dist: databricks-langchain==0.
|
|
13
|
-
Requires-Dist:
|
|
14
|
-
Requires-Dist: langchain==1.
|
|
15
|
-
Requires-Dist: langchain-
|
|
16
|
-
Requires-Dist: langchain-
|
|
17
|
-
Requires-Dist: langchain-text-splitters==1.1.2
|
|
12
|
+
Requires-Dist: databricks-langchain==0.9.0
|
|
13
|
+
Requires-Dist: langchain==1.0.5
|
|
14
|
+
Requires-Dist: langchain-core==1.0.4
|
|
15
|
+
Requires-Dist: langchain-community==0.4.1
|
|
16
|
+
Requires-Dist: langchain-text-splitters==1.0.0
|
|
18
17
|
Requires-Dist: litellm==1.80.11
|
|
19
18
|
Requires-Dist: mcp==1.27.0
|
|
20
|
-
Requires-Dist: openai==3.19.2
|
|
21
|
-
Requires-Dist: openai-agents==0.22.2
|
|
22
19
|
Requires-Dist: opentelemetry-api==1.38.0
|
|
23
20
|
Requires-Dist: opentelemetry-sdk==1.38.0
|
|
24
21
|
Requires-Dist: beautifulsoup4==4.14.2
|
|
@@ -50,11 +47,9 @@ Requires-Dist: databricks-ai-bridge==0.21.0
|
|
|
50
47
|
Requires-Dist: databricks-ai-search==0.76
|
|
51
48
|
Requires-Dist: databricks-connect==16.1.7
|
|
52
49
|
Requires-Dist: databricks-vectorsearch==0.75
|
|
53
|
-
Requires-Dist: langchain-classic==1.0.
|
|
54
|
-
Requires-Dist: langgraph==1.
|
|
55
|
-
Requires-Dist: langgraph-
|
|
56
|
-
Requires-Dist: langgraph-prebuilt==1.1.0
|
|
57
|
-
Requires-Dist: langgraph-sdk==0.4.2
|
|
50
|
+
Requires-Dist: langchain-classic==1.0.0
|
|
51
|
+
Requires-Dist: langgraph==1.0.10
|
|
52
|
+
Requires-Dist: langgraph-prebuilt==1.0.10
|
|
58
53
|
Requires-Dist: langsmith==0.9.5
|
|
59
54
|
Requires-Dist: unitycatalog-ai==0.3.2
|
|
60
55
|
Requires-Dist: unitycatalog-langchain==0.3.0
|
{databricks_tellr_app-0.4.3.dev35 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app/run.py
RENAMED
|
@@ -51,40 +51,6 @@ def init_database(seed_databricks_defaults: bool = False) -> None:
|
|
|
51
51
|
logger.error(f"Failed to initialize database tables: {e}\n{tb}")
|
|
52
52
|
raise SystemExit(1) from e
|
|
53
53
|
|
|
54
|
-
logger.info("Bootstrapping Graph Configuration...")
|
|
55
|
-
try:
|
|
56
|
-
from src.core.database import get_session_local
|
|
57
|
-
from src.services.graph_configuration import bootstrap_graph_configuration
|
|
58
|
-
|
|
59
|
-
result = bootstrap_graph_configuration(get_session_local())
|
|
60
|
-
logger.info(
|
|
61
|
-
"Graph Configuration ready: release_id=%s version=%s created=%s",
|
|
62
|
-
result.release_id,
|
|
63
|
-
result.version_number,
|
|
64
|
-
result.created,
|
|
65
|
-
)
|
|
66
|
-
except Exception as e:
|
|
67
|
-
tb = traceback.format_exc()
|
|
68
|
-
logger.error(f"Failed to bootstrap Graph Configuration: {e}\n{tb}")
|
|
69
|
-
raise SystemExit(1) from e
|
|
70
|
-
|
|
71
|
-
logger.info("Backfilling Conversation Pins...")
|
|
72
|
-
try:
|
|
73
|
-
from src.core.database import get_session_local
|
|
74
|
-
from src.services.conversation_pins import backfill_conversation_pins
|
|
75
|
-
|
|
76
|
-
result = backfill_conversation_pins(get_session_local())
|
|
77
|
-
logger.info(
|
|
78
|
-
"Conversation Pins ready: release_id=%s version=%s pinned=%s",
|
|
79
|
-
result.graph_release_id,
|
|
80
|
-
result.graph_version,
|
|
81
|
-
result.pinned_count,
|
|
82
|
-
)
|
|
83
|
-
except Exception as e:
|
|
84
|
-
tb = traceback.format_exc()
|
|
85
|
-
logger.error(f"Failed to backfill Conversation Pins: {e}\n{tb}")
|
|
86
|
-
raise SystemExit(1) from e
|
|
87
|
-
|
|
88
54
|
# Data migrations/backfills that used to run in the FastAPI lifespan now run
|
|
89
55
|
# HERE, once, before the server forks its workers — the uvicorn workers must
|
|
90
56
|
# never execute migration code (4 of them racing the migration chain on boot
|
|
@@ -108,29 +74,6 @@ def init_database(seed_databricks_defaults: bool = False) -> None:
|
|
|
108
74
|
logger.error(f"Failed to migrate profiles/sessions to agent_config: {e}\n{tb}")
|
|
109
75
|
raise SystemExit(1) from e
|
|
110
76
|
|
|
111
|
-
# Row-per-slide (PR1): migrate historical deck_json blobs into session_slides
|
|
112
|
-
# rows. Runs HERE, pre-fork, for the same reason as the two migrations above —
|
|
113
|
-
# the uvicorn workers must never execute migration code. It originally lived in
|
|
114
|
-
# the FastAPI lifespan; main moved migrations out of the lifespan while this
|
|
115
|
-
# branch was in flight, so it was relocated on merge rather than dropped.
|
|
116
|
-
#
|
|
117
|
-
# Guarded by a per-deck NOT EXISTS anti-join over session_slides (index-only
|
|
118
|
-
# against its composite PK), so it is a no-op scan once every deck has rows.
|
|
119
|
-
# A deck whose blob will not parse is logged and skipped, never raised — one
|
|
120
|
-
# bad row must not abort startup.
|
|
121
|
-
logger.info("Backfilling session_slides rows...")
|
|
122
|
-
try:
|
|
123
|
-
from src.core.backfill_session_slides_startup import backfill_unmigrated_decks
|
|
124
|
-
from src.core.database import get_session_local
|
|
125
|
-
|
|
126
|
-
slide_decks = backfill_unmigrated_decks(get_session_local())
|
|
127
|
-
if slide_decks:
|
|
128
|
-
logger.info(f"Backfilled {slide_decks} deck(s) into session_slides rows")
|
|
129
|
-
except Exception as e:
|
|
130
|
-
tb = traceback.format_exc()
|
|
131
|
-
logger.error(f"Failed to backfill session_slides rows: {e}\n{tb}")
|
|
132
|
-
raise SystemExit(1) from e
|
|
133
|
-
|
|
134
77
|
# Seed default content
|
|
135
78
|
logger.info(f"Seeding defaults (include_databricks={seed_databricks_defaults})...")
|
|
136
79
|
try:
|
|
@@ -154,28 +97,6 @@ def init_database(seed_databricks_defaults: bool = False) -> None:
|
|
|
154
97
|
logger.error(f"Failed to ensure encryption key: {e}\n{tb}")
|
|
155
98
|
raise SystemExit(1) from e
|
|
156
99
|
|
|
157
|
-
# Retired prompt overrides: strip 'system_prompt' and
|
|
158
|
-
# 'slide_editing_instructions' out of every stored agent_config blob. The
|
|
159
|
-
# physical columns are dropped inside init_db()'s migration chain, early,
|
|
160
|
-
# because a database that still has them cannot insert a profile; the BLOB
|
|
161
|
-
# strip runs LAST, deliberately — it is the one position no later step can
|
|
162
|
-
# undo by writing a fresh blob (seed_defaults above creates profiles).
|
|
163
|
-
# A blob that will not parse is logged and skipped, never raised, so one bad
|
|
164
|
-
# row cannot abort startup; anything else here is SystemExit(1) like the five
|
|
165
|
-
# steps above.
|
|
166
|
-
logger.info("Stripping retired prompt keys from agent_config blobs...")
|
|
167
|
-
try:
|
|
168
|
-
from src.core.database import get_session_local
|
|
169
|
-
from src.core.strip_retired_prompt_keys import strip_retired_prompt_keys
|
|
170
|
-
|
|
171
|
-
stripped = strip_retired_prompt_keys(get_session_local())
|
|
172
|
-
if stripped:
|
|
173
|
-
logger.info(f"Stripped retired prompt keys from {stripped} row(s)")
|
|
174
|
-
except Exception as e:
|
|
175
|
-
tb = traceback.format_exc()
|
|
176
|
-
logger.error(f"Failed to strip retired prompt keys from agent_config: {e}\n{tb}")
|
|
177
|
-
raise SystemExit(1) from e
|
|
178
|
-
|
|
179
100
|
|
|
180
101
|
def main() -> None:
|
|
181
102
|
"""Start the uvicorn server."""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: databricks-tellr-app
|
|
3
|
-
Version: 0.4.3.
|
|
3
|
+
Version: 0.4.3.dev36
|
|
4
4
|
Summary: Tellr application package for Databricks Apps
|
|
5
5
|
Requires-Python: >=3.10
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -9,16 +9,13 @@ Requires-Dist: uvicorn==0.38.0
|
|
|
9
9
|
Requires-Dist: python-multipart==0.0.20
|
|
10
10
|
Requires-Dist: pydantic==2.12.4
|
|
11
11
|
Requires-Dist: pydantic-settings==2.12.0
|
|
12
|
-
Requires-Dist: databricks-langchain==0.
|
|
13
|
-
Requires-Dist:
|
|
14
|
-
Requires-Dist: langchain==1.
|
|
15
|
-
Requires-Dist: langchain-
|
|
16
|
-
Requires-Dist: langchain-
|
|
17
|
-
Requires-Dist: langchain-text-splitters==1.1.2
|
|
12
|
+
Requires-Dist: databricks-langchain==0.9.0
|
|
13
|
+
Requires-Dist: langchain==1.0.5
|
|
14
|
+
Requires-Dist: langchain-core==1.0.4
|
|
15
|
+
Requires-Dist: langchain-community==0.4.1
|
|
16
|
+
Requires-Dist: langchain-text-splitters==1.0.0
|
|
18
17
|
Requires-Dist: litellm==1.80.11
|
|
19
18
|
Requires-Dist: mcp==1.27.0
|
|
20
|
-
Requires-Dist: openai==3.19.2
|
|
21
|
-
Requires-Dist: openai-agents==0.22.2
|
|
22
19
|
Requires-Dist: opentelemetry-api==1.38.0
|
|
23
20
|
Requires-Dist: opentelemetry-sdk==1.38.0
|
|
24
21
|
Requires-Dist: beautifulsoup4==4.14.2
|
|
@@ -50,11 +47,9 @@ Requires-Dist: databricks-ai-bridge==0.21.0
|
|
|
50
47
|
Requires-Dist: databricks-ai-search==0.76
|
|
51
48
|
Requires-Dist: databricks-connect==16.1.7
|
|
52
49
|
Requires-Dist: databricks-vectorsearch==0.75
|
|
53
|
-
Requires-Dist: langchain-classic==1.0.
|
|
54
|
-
Requires-Dist: langgraph==1.
|
|
55
|
-
Requires-Dist: langgraph-
|
|
56
|
-
Requires-Dist: langgraph-prebuilt==1.1.0
|
|
57
|
-
Requires-Dist: langgraph-sdk==0.4.2
|
|
50
|
+
Requires-Dist: langchain-classic==1.0.0
|
|
51
|
+
Requires-Dist: langgraph==1.0.10
|
|
52
|
+
Requires-Dist: langgraph-prebuilt==1.0.10
|
|
58
53
|
Requires-Dist: langsmith==0.9.5
|
|
59
54
|
Requires-Dist: unitycatalog-ai==0.3.2
|
|
60
55
|
Requires-Dist: unitycatalog-langchain==0.3.0
|
|
@@ -19,7 +19,6 @@ setup.py
|
|
|
19
19
|
./src/api/routes/admin.py
|
|
20
20
|
./src/api/routes/admin_usage.py
|
|
21
21
|
./src/api/routes/agent_config.py
|
|
22
|
-
./src/api/routes/agent_definitions.py
|
|
23
22
|
./src/api/routes/chat.py
|
|
24
23
|
./src/api/routes/deck_contributors.py
|
|
25
24
|
./src/api/routes/export.py
|
|
@@ -43,10 +42,7 @@ setup.py
|
|
|
43
42
|
./src/api/routes/settings/slide_styles.py
|
|
44
43
|
./src/api/schemas/__init__.py
|
|
45
44
|
./src/api/schemas/agent_config.py
|
|
46
|
-
./src/api/schemas/agent_definitions.py
|
|
47
45
|
./src/api/schemas/feedback.py
|
|
48
|
-
./src/api/schemas/graph_release_history.py
|
|
49
|
-
./src/api/schemas/graph_releases.py
|
|
50
46
|
./src/api/schemas/requests.py
|
|
51
47
|
./src/api/schemas/responses.py
|
|
52
48
|
./src/api/schemas/streaming.py
|
|
@@ -55,20 +51,16 @@ setup.py
|
|
|
55
51
|
./src/api/schemas/settings/responses.py
|
|
56
52
|
./src/api/services/__init__.py
|
|
57
53
|
./src/api/services/chat_service.py
|
|
58
|
-
./src/api/services/deck_level_writer.py
|
|
59
54
|
./src/api/services/export_job_queue.py
|
|
60
55
|
./src/api/services/feedback_service.py
|
|
61
56
|
./src/api/services/job_queue.py
|
|
62
57
|
./src/api/services/session_manager.py
|
|
63
58
|
./src/api/services/session_naming.py
|
|
64
|
-
./src/api/services/slide_repository.py
|
|
65
59
|
./src/api/services/usage_events.py
|
|
66
60
|
./src/api/services/usage_service.py
|
|
67
61
|
./src/api/utils/__init__.py
|
|
68
62
|
./src/api/utils/validation.py
|
|
69
63
|
./src/core/__init__.py
|
|
70
|
-
./src/core/backfill_session_slides_startup.py
|
|
71
|
-
./src/core/checkpointer.py
|
|
72
64
|
./src/core/config_loader.py
|
|
73
65
|
./src/core/context_utils.py
|
|
74
66
|
./src/core/database.py
|
|
@@ -84,29 +76,17 @@ setup.py
|
|
|
84
76
|
./src/core/permission_context.py
|
|
85
77
|
./src/core/prompt_modules.py
|
|
86
78
|
./src/core/settings_db.py
|
|
87
|
-
./src/core/strip_retired_prompt_keys.py
|
|
88
79
|
./src/core/user_context.py
|
|
89
|
-
./src/core/skills/__init__.py
|
|
90
|
-
./src/core/skills/architect.py
|
|
91
|
-
./src/core/skills/build_reviewer.py
|
|
92
|
-
./src/core/skills/builder.py
|
|
93
|
-
./src/core/skills/data_analyst.py
|
|
94
|
-
./src/core/skills/deck_reviewer.py
|
|
95
|
-
./src/core/skills/fix_reviewer.py
|
|
96
|
-
./src/core/skills/fixer.py
|
|
97
80
|
./src/database/__init__.py
|
|
98
81
|
./src/database/types.py
|
|
99
82
|
./src/database/models/__init__.py
|
|
100
83
|
./src/database/models/deck_contributor.py
|
|
101
|
-
./src/database/models/deck_review.py
|
|
102
84
|
./src/database/models/design_system.py
|
|
103
85
|
./src/database/models/encryption_key.py
|
|
104
86
|
./src/database/models/feedback.py
|
|
105
87
|
./src/database/models/genie_space.py
|
|
106
88
|
./src/database/models/google_global_credentials.py
|
|
107
89
|
./src/database/models/google_oauth_token.py
|
|
108
|
-
./src/database/models/graph_checkpoint.py
|
|
109
|
-
./src/database/models/graph_configuration.py
|
|
110
90
|
./src/database/models/identity.py
|
|
111
91
|
./src/database/models/image.py
|
|
112
92
|
./src/database/models/profile.py
|
|
@@ -119,67 +99,31 @@ setup.py
|
|
|
119
99
|
./src/database/models/usage_event.py
|
|
120
100
|
./src/database/models/user_preference.py
|
|
121
101
|
./src/domain/__init__.py
|
|
122
|
-
./src/domain/conversation_engine.py
|
|
123
|
-
./src/domain/deck_spec.py
|
|
124
|
-
./src/domain/finding.py
|
|
125
|
-
./src/domain/skill_io.py
|
|
126
102
|
./src/domain/slide.py
|
|
127
103
|
./src/domain/slide_deck.py
|
|
128
104
|
./src/services/__init__.py
|
|
129
105
|
./src/services/agent.py
|
|
130
|
-
./src/services/agent_definition_manifest_v1.py
|
|
131
106
|
./src/services/agent_factory.py
|
|
132
|
-
./src/services/agent_model_payload.py
|
|
133
|
-
./src/services/agent_resolution.py
|
|
134
|
-
./src/services/agent_runtime.py
|
|
135
|
-
./src/services/agent_runtime_identity.py
|
|
136
|
-
./src/services/agent_schema_registry.py
|
|
137
|
-
./src/services/agent_schema_types.py
|
|
138
|
-
./src/services/agent_test_workbench.py
|
|
139
|
-
./src/services/collaboration_history.py
|
|
140
107
|
./src/services/config_service.py
|
|
141
108
|
./src/services/config_validator.py
|
|
142
|
-
./src/services/conversation_pins.py
|
|
143
|
-
./src/services/deck_css_aggregator.py
|
|
144
|
-
./src/services/deck_review_store.py
|
|
145
109
|
./src/services/design_system_compiler.py
|
|
146
110
|
./src/services/design_system_service.py
|
|
147
111
|
./src/services/design_system_templates.py
|
|
148
112
|
./src/services/drive_uploader.py
|
|
149
|
-
./src/services/foreman_service.py
|
|
150
|
-
./src/services/gateway_openai.py
|
|
151
113
|
./src/services/genie_service.py
|
|
152
114
|
./src/services/google_slides_auth.py
|
|
153
115
|
./src/services/google_slides_prompts_defaults.py
|
|
154
|
-
./src/services/graph_configuration.py
|
|
155
|
-
./src/services/graph_configuration_bootstrap.py
|
|
156
|
-
./src/services/graph_configuration_content.py
|
|
157
|
-
./src/services/graph_configuration_draft.py
|
|
158
|
-
./src/services/graph_configuration_publication.py
|
|
159
|
-
./src/services/graph_configuration_rollback.py
|
|
160
|
-
./src/services/graph_configuration_seed.py
|
|
161
|
-
./src/services/graph_configuration_workbench.py
|
|
162
|
-
./src/services/graph_definition_manifest.py
|
|
163
|
-
./src/services/graph_release_evidence.py
|
|
164
|
-
./src/services/graph_release_history.py
|
|
165
116
|
./src/services/html_to_google_slides.py
|
|
166
117
|
./src/services/html_to_pptx.py
|
|
167
118
|
./src/services/identity_provider.py
|
|
168
119
|
./src/services/image_service.py
|
|
169
120
|
./src/services/image_tools.py
|
|
170
|
-
./src/services/model_endpoint_catalog.py
|
|
171
|
-
./src/services/model_endpoint_probe.py
|
|
172
121
|
./src/services/permission_service.py
|
|
173
|
-
./src/services/persisted_graph_release.py
|
|
174
122
|
./src/services/pptx_from_html_huashu.py
|
|
175
123
|
./src/services/pptx_from_records.py
|
|
176
124
|
./src/services/pptx_prompts_defaults.py
|
|
177
125
|
./src/services/profile_service.py
|
|
178
|
-
./src/services/prompt_assembler.py
|
|
179
|
-
./src/services/shared_deck_attribution.py
|
|
180
|
-
./src/services/spec_sync.py
|
|
181
126
|
./src/services/streaming_callback.py
|
|
182
|
-
./src/services/template_sections.py
|
|
183
127
|
./src/services/validator.py
|
|
184
128
|
./src/services/converter_jail/__init__.py
|
|
185
129
|
./src/services/converter_jail/ast_guard.py
|
|
@@ -190,12 +134,6 @@ setup.py
|
|
|
190
134
|
./src/services/converter_jail/protocol.py
|
|
191
135
|
./src/services/evaluation/__init__.py
|
|
192
136
|
./src/services/evaluation/llm_judge.py
|
|
193
|
-
./src/services/graph/__init__.py
|
|
194
|
-
./src/services/graph/builder.py
|
|
195
|
-
./src/services/graph/event_emitter.py
|
|
196
|
-
./src/services/graph/nodes.py
|
|
197
|
-
./src/services/graph/routers.py
|
|
198
|
-
./src/services/graph/state.py
|
|
199
137
|
./src/services/identity_providers/__init__.py
|
|
200
138
|
./src/services/identity_providers/account_provider.py
|
|
201
139
|
./src/services/identity_providers/local_provider.py
|
|
@@ -211,7 +149,6 @@ setup.py
|
|
|
211
149
|
./src/utils/css_utils.py
|
|
212
150
|
./src/utils/ds_asset_utils.py
|
|
213
151
|
./src/utils/error_handling.py
|
|
214
|
-
./src/utils/graph_safety.py
|
|
215
152
|
./src/utils/html_safety.py
|
|
216
153
|
./src/utils/html_utils.py
|
|
217
154
|
./src/utils/image_utils.py
|
|
@@ -244,7 +181,6 @@ src/api/routes/_authz.py
|
|
|
244
181
|
src/api/routes/admin.py
|
|
245
182
|
src/api/routes/admin_usage.py
|
|
246
183
|
src/api/routes/agent_config.py
|
|
247
|
-
src/api/routes/agent_definitions.py
|
|
248
184
|
src/api/routes/chat.py
|
|
249
185
|
src/api/routes/deck_contributors.py
|
|
250
186
|
src/api/routes/export.py
|
|
@@ -268,10 +204,7 @@ src/api/routes/settings/identities.py
|
|
|
268
204
|
src/api/routes/settings/slide_styles.py
|
|
269
205
|
src/api/schemas/__init__.py
|
|
270
206
|
src/api/schemas/agent_config.py
|
|
271
|
-
src/api/schemas/agent_definitions.py
|
|
272
207
|
src/api/schemas/feedback.py
|
|
273
|
-
src/api/schemas/graph_release_history.py
|
|
274
|
-
src/api/schemas/graph_releases.py
|
|
275
208
|
src/api/schemas/requests.py
|
|
276
209
|
src/api/schemas/responses.py
|
|
277
210
|
src/api/schemas/streaming.py
|
|
@@ -280,20 +213,16 @@ src/api/schemas/settings/requests.py
|
|
|
280
213
|
src/api/schemas/settings/responses.py
|
|
281
214
|
src/api/services/__init__.py
|
|
282
215
|
src/api/services/chat_service.py
|
|
283
|
-
src/api/services/deck_level_writer.py
|
|
284
216
|
src/api/services/export_job_queue.py
|
|
285
217
|
src/api/services/feedback_service.py
|
|
286
218
|
src/api/services/job_queue.py
|
|
287
219
|
src/api/services/session_manager.py
|
|
288
220
|
src/api/services/session_naming.py
|
|
289
|
-
src/api/services/slide_repository.py
|
|
290
221
|
src/api/services/usage_events.py
|
|
291
222
|
src/api/services/usage_service.py
|
|
292
223
|
src/api/utils/__init__.py
|
|
293
224
|
src/api/utils/validation.py
|
|
294
225
|
src/core/__init__.py
|
|
295
|
-
src/core/backfill_session_slides_startup.py
|
|
296
|
-
src/core/checkpointer.py
|
|
297
226
|
src/core/config_loader.py
|
|
298
227
|
src/core/context_utils.py
|
|
299
228
|
src/core/database.py
|
|
@@ -309,29 +238,17 @@ src/core/otel_logging.py
|
|
|
309
238
|
src/core/permission_context.py
|
|
310
239
|
src/core/prompt_modules.py
|
|
311
240
|
src/core/settings_db.py
|
|
312
|
-
src/core/strip_retired_prompt_keys.py
|
|
313
241
|
src/core/user_context.py
|
|
314
|
-
src/core/skills/__init__.py
|
|
315
|
-
src/core/skills/architect.py
|
|
316
|
-
src/core/skills/build_reviewer.py
|
|
317
|
-
src/core/skills/builder.py
|
|
318
|
-
src/core/skills/data_analyst.py
|
|
319
|
-
src/core/skills/deck_reviewer.py
|
|
320
|
-
src/core/skills/fix_reviewer.py
|
|
321
|
-
src/core/skills/fixer.py
|
|
322
242
|
src/database/__init__.py
|
|
323
243
|
src/database/types.py
|
|
324
244
|
src/database/models/__init__.py
|
|
325
245
|
src/database/models/deck_contributor.py
|
|
326
|
-
src/database/models/deck_review.py
|
|
327
246
|
src/database/models/design_system.py
|
|
328
247
|
src/database/models/encryption_key.py
|
|
329
248
|
src/database/models/feedback.py
|
|
330
249
|
src/database/models/genie_space.py
|
|
331
250
|
src/database/models/google_global_credentials.py
|
|
332
251
|
src/database/models/google_oauth_token.py
|
|
333
|
-
src/database/models/graph_checkpoint.py
|
|
334
|
-
src/database/models/graph_configuration.py
|
|
335
252
|
src/database/models/identity.py
|
|
336
253
|
src/database/models/image.py
|
|
337
254
|
src/database/models/profile.py
|
|
@@ -344,67 +261,31 @@ src/database/models/slide_style_library.py
|
|
|
344
261
|
src/database/models/usage_event.py
|
|
345
262
|
src/database/models/user_preference.py
|
|
346
263
|
src/domain/__init__.py
|
|
347
|
-
src/domain/conversation_engine.py
|
|
348
|
-
src/domain/deck_spec.py
|
|
349
|
-
src/domain/finding.py
|
|
350
|
-
src/domain/skill_io.py
|
|
351
264
|
src/domain/slide.py
|
|
352
265
|
src/domain/slide_deck.py
|
|
353
266
|
src/services/__init__.py
|
|
354
267
|
src/services/agent.py
|
|
355
|
-
src/services/agent_definition_manifest_v1.py
|
|
356
268
|
src/services/agent_factory.py
|
|
357
|
-
src/services/agent_model_payload.py
|
|
358
|
-
src/services/agent_resolution.py
|
|
359
|
-
src/services/agent_runtime.py
|
|
360
|
-
src/services/agent_runtime_identity.py
|
|
361
|
-
src/services/agent_schema_registry.py
|
|
362
|
-
src/services/agent_schema_types.py
|
|
363
|
-
src/services/agent_test_workbench.py
|
|
364
|
-
src/services/collaboration_history.py
|
|
365
269
|
src/services/config_service.py
|
|
366
270
|
src/services/config_validator.py
|
|
367
|
-
src/services/conversation_pins.py
|
|
368
|
-
src/services/deck_css_aggregator.py
|
|
369
|
-
src/services/deck_review_store.py
|
|
370
271
|
src/services/design_system_compiler.py
|
|
371
272
|
src/services/design_system_service.py
|
|
372
273
|
src/services/design_system_templates.py
|
|
373
274
|
src/services/drive_uploader.py
|
|
374
|
-
src/services/foreman_service.py
|
|
375
|
-
src/services/gateway_openai.py
|
|
376
275
|
src/services/genie_service.py
|
|
377
276
|
src/services/google_slides_auth.py
|
|
378
277
|
src/services/google_slides_prompts_defaults.py
|
|
379
|
-
src/services/graph_configuration.py
|
|
380
|
-
src/services/graph_configuration_bootstrap.py
|
|
381
|
-
src/services/graph_configuration_content.py
|
|
382
|
-
src/services/graph_configuration_draft.py
|
|
383
|
-
src/services/graph_configuration_publication.py
|
|
384
|
-
src/services/graph_configuration_rollback.py
|
|
385
|
-
src/services/graph_configuration_seed.py
|
|
386
|
-
src/services/graph_configuration_workbench.py
|
|
387
|
-
src/services/graph_definition_manifest.py
|
|
388
|
-
src/services/graph_release_evidence.py
|
|
389
|
-
src/services/graph_release_history.py
|
|
390
278
|
src/services/html_to_google_slides.py
|
|
391
279
|
src/services/html_to_pptx.py
|
|
392
280
|
src/services/identity_provider.py
|
|
393
281
|
src/services/image_service.py
|
|
394
282
|
src/services/image_tools.py
|
|
395
|
-
src/services/model_endpoint_catalog.py
|
|
396
|
-
src/services/model_endpoint_probe.py
|
|
397
283
|
src/services/permission_service.py
|
|
398
|
-
src/services/persisted_graph_release.py
|
|
399
284
|
src/services/pptx_from_html_huashu.py
|
|
400
285
|
src/services/pptx_from_records.py
|
|
401
286
|
src/services/pptx_prompts_defaults.py
|
|
402
287
|
src/services/profile_service.py
|
|
403
|
-
src/services/prompt_assembler.py
|
|
404
|
-
src/services/shared_deck_attribution.py
|
|
405
|
-
src/services/spec_sync.py
|
|
406
288
|
src/services/streaming_callback.py
|
|
407
|
-
src/services/template_sections.py
|
|
408
289
|
src/services/validator.py
|
|
409
290
|
src/services/converter_jail/__init__.py
|
|
410
291
|
src/services/converter_jail/ast_guard.py
|
|
@@ -415,12 +296,6 @@ src/services/converter_jail/pptx_runner.py
|
|
|
415
296
|
src/services/converter_jail/protocol.py
|
|
416
297
|
src/services/evaluation/__init__.py
|
|
417
298
|
src/services/evaluation/llm_judge.py
|
|
418
|
-
src/services/graph/__init__.py
|
|
419
|
-
src/services/graph/builder.py
|
|
420
|
-
src/services/graph/event_emitter.py
|
|
421
|
-
src/services/graph/nodes.py
|
|
422
|
-
src/services/graph/routers.py
|
|
423
|
-
src/services/graph/state.py
|
|
424
299
|
src/services/identity_providers/__init__.py
|
|
425
300
|
src/services/identity_providers/account_provider.py
|
|
426
301
|
src/services/identity_providers/local_provider.py
|
|
@@ -436,7 +311,6 @@ src/utils/__init__.py
|
|
|
436
311
|
src/utils/css_utils.py
|
|
437
312
|
src/utils/ds_asset_utils.py
|
|
438
313
|
src/utils/error_handling.py
|
|
439
|
-
src/utils/graph_safety.py
|
|
440
314
|
src/utils/html_safety.py
|
|
441
315
|
src/utils/html_utils.py
|
|
442
316
|
src/utils/image_utils.py
|
|
@@ -3,16 +3,13 @@ uvicorn==0.38.0
|
|
|
3
3
|
python-multipart==0.0.20
|
|
4
4
|
pydantic==2.12.4
|
|
5
5
|
pydantic-settings==2.12.0
|
|
6
|
-
databricks-langchain==0.
|
|
7
|
-
|
|
8
|
-
langchain==1.
|
|
9
|
-
langchain-
|
|
10
|
-
langchain-
|
|
11
|
-
langchain-text-splitters==1.1.2
|
|
6
|
+
databricks-langchain==0.9.0
|
|
7
|
+
langchain==1.0.5
|
|
8
|
+
langchain-core==1.0.4
|
|
9
|
+
langchain-community==0.4.1
|
|
10
|
+
langchain-text-splitters==1.0.0
|
|
12
11
|
litellm==1.80.11
|
|
13
12
|
mcp==1.27.0
|
|
14
|
-
openai==3.19.2
|
|
15
|
-
openai-agents==0.22.2
|
|
16
13
|
opentelemetry-api==1.38.0
|
|
17
14
|
opentelemetry-sdk==1.38.0
|
|
18
15
|
beautifulsoup4==4.14.2
|
|
@@ -44,11 +41,9 @@ databricks-ai-bridge==0.21.0
|
|
|
44
41
|
databricks-ai-search==0.76
|
|
45
42
|
databricks-connect==16.1.7
|
|
46
43
|
databricks-vectorsearch==0.75
|
|
47
|
-
langchain-classic==1.0.
|
|
48
|
-
langgraph==1.
|
|
49
|
-
langgraph-
|
|
50
|
-
langgraph-prebuilt==1.1.0
|
|
51
|
-
langgraph-sdk==0.4.2
|
|
44
|
+
langchain-classic==1.0.0
|
|
45
|
+
langgraph==1.0.10
|
|
46
|
+
langgraph-prebuilt==1.0.10
|
|
52
47
|
langsmith==0.9.5
|
|
53
48
|
unitycatalog-ai==0.3.2
|
|
54
49
|
unitycatalog-langchain==0.3.0
|
|
@@ -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.
|
|
7
|
+
version = "0.4.3.dev36"
|
|
8
8
|
description = "Tellr application package for Databricks Apps"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -14,19 +14,13 @@ dependencies = [
|
|
|
14
14
|
"python-multipart==0.0.20",
|
|
15
15
|
"pydantic==2.12.4",
|
|
16
16
|
"pydantic-settings==2.12.0",
|
|
17
|
-
"databricks-langchain==0.
|
|
18
|
-
"
|
|
19
|
-
"langchain==1.
|
|
20
|
-
"langchain-
|
|
21
|
-
"langchain-
|
|
22
|
-
"langchain-text-splitters==1.1.2",
|
|
17
|
+
"databricks-langchain==0.9.0",
|
|
18
|
+
"langchain==1.0.5",
|
|
19
|
+
"langchain-core==1.0.4",
|
|
20
|
+
"langchain-community==0.4.1",
|
|
21
|
+
"langchain-text-splitters==1.0.0",
|
|
23
22
|
"litellm==1.80.11",
|
|
24
23
|
"mcp==1.27.0",
|
|
25
|
-
# agent_runtime.py and model_endpoint_probe.py import openai at module level;
|
|
26
|
-
# openai and openai-agents pinned to the versions databricks-openai 0.17.1 resolves
|
|
27
|
-
# to so the Apps build matches local tests.
|
|
28
|
-
"openai==3.19.2",
|
|
29
|
-
"openai-agents==0.22.2",
|
|
30
24
|
"opentelemetry-api==1.38.0",
|
|
31
25
|
"opentelemetry-sdk==1.38.0",
|
|
32
26
|
"beautifulsoup4==4.14.2",
|
|
@@ -79,13 +73,6 @@ dependencies = [
|
|
|
79
73
|
# `pip install databricks-tellr-app` is safe.
|
|
80
74
|
# SDR-4437 MEDIUM-7 (July 2026): the 7 formerly-ranged direct deps above
|
|
81
75
|
# this block are now exact-pinned too; same refresh discipline.
|
|
82
|
-
# PR2 LangGraph stack bump (August 2026): updated langchain 1.0.5→1.3.14,
|
|
83
|
-
# langchain-core 1.0.4→1.5.3, langchain-community 0.4.1→0.4.2,
|
|
84
|
-
# langchain-text-splitters 1.0.0→1.1.2, langchain-classic 1.0.0→1.0.8,
|
|
85
|
-
# langgraph 1.0.10→1.2.10, added langgraph-checkpoint==4.1.1,
|
|
86
|
-
# langgraph-prebuilt 1.0.10→1.1.0, added langgraph-sdk==0.4.2. These match
|
|
87
|
-
# the repo-root requirements.txt and pyproject.toml. MUST be re-verified via
|
|
88
|
-
# a devloop deploy on db-tellr-dev-pinfix or equivalent before PR3 ships.
|
|
89
76
|
"databricks-sdk==0.120.0",
|
|
90
77
|
"mlflow[databricks]==3.14.0",
|
|
91
78
|
"mlflow-skinny==3.14.0",
|
|
@@ -94,11 +81,9 @@ dependencies = [
|
|
|
94
81
|
"databricks-ai-search==0.76",
|
|
95
82
|
"databricks-connect==16.1.7",
|
|
96
83
|
"databricks-vectorsearch==0.75",
|
|
97
|
-
"langchain-classic==1.0.
|
|
98
|
-
"langgraph==1.
|
|
99
|
-
"langgraph-
|
|
100
|
-
"langgraph-prebuilt==1.1.0",
|
|
101
|
-
"langgraph-sdk==0.4.2",
|
|
84
|
+
"langchain-classic==1.0.0",
|
|
85
|
+
"langgraph==1.0.10",
|
|
86
|
+
"langgraph-prebuilt==1.0.10",
|
|
102
87
|
"langsmith==0.9.5",
|
|
103
88
|
"unitycatalog-ai==0.3.2",
|
|
104
89
|
"unitycatalog-langchain==0.3.0",
|
|
@@ -24,56 +24,5 @@
|
|
|
24
24
|
}
|
|
25
25
|
],
|
|
26
26
|
"chat_prompt": "Create 3 slides about the benefits of AI in modern healthcare, with a title slide, key advantages, and future outlook.",
|
|
27
|
-
"chat_reply": "Here's your deck with 3 slides! I've created:\n\n1. **Title Slide** — introducing AI in healthcare\n2. **Key Advantages** — early detection, personalized treatment, operational efficiency, and drug discovery\n3. **Future Outlook** — predictive monitoring, AI-assisted surgery, and global health equity\n\nFeel free to ask me to refine any slide, add new ones, or change the style."
|
|
28
|
-
"deck_spec": {
|
|
29
|
-
"title": "Example Deck — AI in Healthcare",
|
|
30
|
-
"audience": "A first-time Tellr user taking the product tour: a general business audience, with no clinical or machine-learning background assumed.",
|
|
31
|
-
"purpose": "Show a new user what a finished Tellr deck looks like, on a subject that needs no domain briefing, so they can see structure and styling before they write their own prompt.",
|
|
32
|
-
"argument": "AI already delivers concrete benefits across diagnosis, treatment and research, and its near-term trajectory points at prevention and wider access, so it is worth engaging with now rather than watching.",
|
|
33
|
-
"call_to_action": "Ask the assistant to refine a slide, add a new one, or change the style: the next step of the tour.",
|
|
34
|
-
"narrative_arc": [
|
|
35
|
-
"Frame the subject: AI is already changing patient care, diagnostics and medical research, a transformation under way rather than a forecast.",
|
|
36
|
-
"Ground that claim in four advantages visible today: earlier disease detection, personalized treatment, operational efficiency, and faster drug discovery.",
|
|
37
|
-
"Extend today's gains into the near future and land on access: predictive monitoring, AI-assisted surgery, and specialist-level care reaching underserved communities."
|
|
38
|
-
],
|
|
39
|
-
"design_contract": {
|
|
40
|
-
"design_system_id": null,
|
|
41
|
-
"template_id": null,
|
|
42
|
-
"slide_style_id": null
|
|
43
|
-
},
|
|
44
|
-
"resolved_data": {
|
|
45
|
-
"synthesis": "No live data was resolved for this deck. The tour ships fixed illustrative bytes so every user sees the same three slides; the claims are widely reported general benefits of AI in healthcare, not figures drawn from a source system.",
|
|
46
|
-
"figures": [],
|
|
47
|
-
"gaps": [
|
|
48
|
-
"No quantitative source: the deck cites no measured figure, so no claim in it is traceable to a dataset.",
|
|
49
|
-
"No organisation context: the tour deck is deliberately generic and names no customer, hospital or vendor."
|
|
50
|
-
]
|
|
51
|
-
},
|
|
52
|
-
"slides": [
|
|
53
|
-
{
|
|
54
|
-
"position": 0,
|
|
55
|
-
"purpose": "Open the deck: name the subject and frame AI in healthcare as a transformation already under way.",
|
|
56
|
-
"content_brief": "Title slide. Badge reading 'AI & Healthcare', headline 'The Benefits of AI in Modern Healthcare', and a one-line standfirst naming the three areas the deck covers: patient care, diagnostics, and medical research.",
|
|
57
|
-
"assumes": "Nothing. This is the deck's first slide.",
|
|
58
|
-
"hands_off": "The reader knows the subject and expects concrete advantages next.",
|
|
59
|
-
"data_references": []
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"position": 1,
|
|
63
|
-
"purpose": "Make the case with four concrete present-day advantages, so the benefit claim is specific rather than atmospheric.",
|
|
64
|
-
"content_brief": "Four bolded items, one explanatory clause each: early disease detection (imaging patterns a human reader can miss), personalized treatment plans (genetics, lifestyle, history), operational efficiency (scheduling, documentation, triage), and drug discovery acceleration (molecular simulation at scale).",
|
|
65
|
-
"assumes": "The reader has accepted the framing from the title slide.",
|
|
66
|
-
"hands_off": "The present-tense case is made; the reader is ready to look forward.",
|
|
67
|
-
"data_references": []
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"position": 2,
|
|
71
|
-
"purpose": "Extend the argument from today's gains to the near future and close on access, so the deck ends on consequence rather than a list.",
|
|
72
|
-
"content_brief": "Three bolded forward-looking items: predictive health monitoring (wearables shifting medicine from reactive to proactive), AI-assisted surgery (robotics guided by real-time analysis), and global health equity (mobile diagnostics for underserved communities). Close on the italic line about healthcare becoming intelligent, personalized and accessible to all.",
|
|
73
|
-
"assumes": "The reader accepts the four present-day advantages from the previous slide.",
|
|
74
|
-
"hands_off": "The deck ends; the reader leaves with the equity claim as the takeaway.",
|
|
75
|
-
"data_references": []
|
|
76
|
-
}
|
|
77
|
-
]
|
|
78
|
-
}
|
|
27
|
+
"chat_reply": "Here's your deck with 3 slides! I've created:\n\n1. **Title Slide** — introducing AI in healthcare\n2. **Key Advantages** — early detection, personalized treatment, operational efficiency, and drug discovery\n3. **Future Outlook** — predictive monitoring, AI-assisted surgery, and global health equity\n\nFeel free to ask me to refine any slide, add new ones, or change the style."
|
|
79
28
|
}
|