mirror of
https://github.com/lfnovo/open-notebook.git
synced 2026-07-31 10:37:53 +00:00
|
Some checks are pending
Development Build / extract-version (push) Waiting to run
Development Build / changes (push) Waiting to run
Tests / Frontend Lint (push) Waiting to run
Tests / Backend Tests (push) Waiting to run
Tests / Backend Lint (push) Waiting to run
Tests / Backend Typecheck (push) Waiting to run
Development Build / build-regular (push) Blocked by required conditions
Development Build / build-single (push) Blocked by required conditions
Development Build / summary (push) Blocked by required conditions
Tests / Frontend Tests (push) Waiting to run
Tests / Frontend Build (push) Waiting to run
* fix(sources): fall back to auto when a selected engine's runtime is absent The content-processing engine choice is persisted in the database; the runtime that serves it (Docling, local Crawl4AI) is installed on demand from environment flags evaluated at boot. The two therefore drift: a redeploy that drops OPEN_NOTEBOOK_ENABLE_CRAWL4AI/_DOCLING, a volume moved to a new deployment, or a failed on-demand install all leave a stored selection pointing at a runtime that is not there. The source graph passed that selection straight to content-core, so every affected extraction failed with "Could not extract any text content from this source" - no mention of the engine, the runtime, or the flag that would fix it. For a URL engine set to crawl4ai this breaks URL ingestion entirely. The graph now checks runtime availability before honoring the stored engine and degrades to content-core's "auto" chain, logging a WARNING that names the engine and the env var that would enable it. Engines with no opt-in runtime (auto/simple/firecrawl/jina) are passed through untouched. The availability probes moved from api/routers/capabilities.py to open_notebook/utils/runtime_capabilities.py so the graph can use them without importing from the API layer; the capabilities endpoint keeps identical behavior and its tests follow the probes to their new home. Found by the smoke-e2e agent during v1.14.0 release testing, on a dev environment that was in exactly this state. Pre-existing since v1.13.0 (#1122 made the runtimes opt-in, #432 made the stored selection take effect), not a v1.14.0 regression. * docs(changelog): record the unavailable-engine fallback fix |
||
|---|---|---|
| .. | ||
| conftest.py | ||
| README.md | ||
| test_add_insight_failure_propagation.py | ||
| test_anthropic_compatible_provider.py | ||
| test_capabilities_api.py | ||
| test_chat_routers_characterization.py | ||
| test_chunking.py | ||
| test_config_endpoint_no_leak.py | ||
| test_connection_test_classification.py | ||
| test_context_endpoint_characterization.py | ||
| test_cors_credentials.py | ||
| test_credential_provider_validation.py | ||
| test_credentials_api.py | ||
| test_crud_404.py | ||
| test_domain.py | ||
| test_embedding.py | ||
| test_error_message_sanitization.py | ||
| test_graphs.py | ||
| test_insight_timestamps.py | ||
| test_max_body_size_middleware.py | ||
| test_model_discovery.py | ||
| test_models_api.py | ||
| test_note_save_embed_resilience.py | ||
| test_notes_api.py | ||
| test_order_by_validation.py | ||
| test_podcast_audio_containment.py | ||
| test_podcast_audio_paths.py | ||
| test_podcast_episode_model_resolution.py | ||
| test_podcast_job_status_batching.py | ||
| test_podcast_legacy_field_removal.py | ||
| test_podcast_path.py | ||
| test_podcast_speaker_profile.py | ||
| test_proxy.py | ||
| test_recently_viewed_api.py | ||
| test_repository_config.py | ||
| test_runtime_capabilities.py | ||
| test_search_api.py | ||
| test_source_create_array_limits.py | ||
| test_source_path_containment.py | ||
| test_sources_api.py | ||
| test_startup_migration_retry.py | ||
| test_transformations_api.py | ||
| test_typed_exceptions_reach_handlers.py | ||
| test_upload_toctou_race.py | ||
| test_upload_type_mitigations.py | ||
| test_url_validation.py | ||
| test_utils.py | ||
| test_vertex_credentials_file_oracle.py | ||
Coming Soon