An Open Source implementation of Notebook LM with more flexibility and features
771 matches across 13 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | open_notebook/ai/key_provider.py | 23 | # ============================================================================= |
| MEDIUM | open_notebook/ai/key_provider.py | 25 | # ============================================================================= |
| MEDIUM | open_notebook/ai/model_discovery.py | 663 | # ============================================================================= |
| MEDIUM | open_notebook/ai/model_discovery.py | 665 | # ============================================================================= |
| MEDIUM | open_notebook/ai/model_discovery.py | 31 | # ============================================================================= |
| MEDIUM | open_notebook/ai/model_discovery.py | 33 | # ============================================================================= |
| MEDIUM | open_notebook/ai/model_discovery.py | 178 | # ============================================================================= |
| MEDIUM | open_notebook/ai/model_discovery.py | 180 | # ============================================================================= |
| MEDIUM | tests/test_utils.py | 130 | # ============================================================================ |
| MEDIUM | tests/test_utils.py | 132 | # ============================================================================ |
| MEDIUM | tests/test_utils.py | 177 | # ============================================================================ |
| MEDIUM | tests/test_utils.py | 179 | # ============================================================================ |
| MEDIUM | tests/test_utils.py | 247 | # ============================================================================ |
| MEDIUM | tests/test_utils.py | 249 | # ============================================================================ |
| MEDIUM | tests/test_utils.py | 21 | # ============================================================================ |
| MEDIUM | tests/test_utils.py | 23 | # ============================================================================ |
| MEDIUM | tests/test_graphs.py | 25 | # ============================================================================ |
| MEDIUM | tests/test_graphs.py | 27 | # ============================================================================ |
| MEDIUM | tests/test_graphs.py | 72 | # ============================================================================ |
| MEDIUM | tests/test_graphs.py | 74 | # ============================================================================ |
| MEDIUM | tests/test_graphs.py | 100 | # ============================================================================ |
| MEDIUM | tests/test_graphs.py | 102 | # ============================================================================ |
| MEDIUM | tests/test_graphs.py | 157 | # ============================================================================ |
| MEDIUM | tests/test_graphs.py | 159 | # ============================================================================ |
| MEDIUM | tests/test_chunking.py | 44 | # ============================================================================ |
| MEDIUM | tests/test_chunking.py | 46 | # ============================================================================ |
| MEDIUM | tests/test_chunking.py | 98 | # ============================================================================ |
| MEDIUM | tests/test_chunking.py | 100 | # ============================================================================ |
| MEDIUM | tests/test_chunking.py | 188 | # ============================================================================ |
| MEDIUM | tests/test_chunking.py | 190 | # ============================================================================ |
| MEDIUM | tests/test_chunking.py | 230 | # ============================================================================ |
| MEDIUM | tests/test_chunking.py | 232 | # ============================================================================ |
| MEDIUM | tests/test_embedding.py | 25 | # ============================================================================ |
| MEDIUM | tests/test_embedding.py | 27 | # ============================================================================ |
| MEDIUM | tests/test_embedding.py | 110 | # ============================================================================ |
| MEDIUM | tests/test_embedding.py | 112 | # ============================================================================ |
| MEDIUM | tests/test_embedding.py | 157 | # ============================================================================ |
| MEDIUM | tests/test_embedding.py | 159 | # ============================================================================ |
| MEDIUM | tests/test_embedding.py | 327 | # ============================================================================ |
| MEDIUM | tests/test_embedding.py | 329 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 23 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 25 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 54 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 56 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 72 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 74 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 103 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 105 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 242 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 244 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 282 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 284 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 339 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 341 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 361 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 363 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 380 | # ============================================================================ |
| MEDIUM | tests/test_domain.py | 382 | # ============================================================================ |
| MEDIUM | examples/docker-compose-speaches.yml | 75 | # ========================================== |
| MEDIUM | examples/docker-compose-speaches.yml | 77 | # ========================================== |
| 38 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | open_notebook/database/async_migrate.py | 47 | except Exception as e: |
| LOW | open_notebook/database/async_migrate.py | 190 | except Exception as e: |
| LOW | open_notebook/database/async_migrate.py | 205 | except Exception: |
| LOW | open_notebook/database/async_migrate.py | 215 | except Exception: |
| LOW | open_notebook/database/repository.py | 80 | except Exception as e: |
| LOW | open_notebook/database/repository.py | 101 | except Exception as e: |
| LOW | open_notebook/database/repository.py | 154 | except Exception as e: |
| LOW | open_notebook/database/repository.py | 164 | except Exception as e: |
| LOW | open_notebook/database/repository.py | 190 | except Exception as e: |
| LOW | open_notebook/utils/chunking.py | 161 | except Exception: |
| LOW | open_notebook/utils/encryption.py | 55 | except Exception as e: |
| LOW | open_notebook/utils/encryption.py | 163 | except Exception: |
| LOW | open_notebook/utils/encryption.py | 196 | except Exception as e: |
| LOW | open_notebook/utils/embedding.py | 184 | except Exception as e: |
| LOW | open_notebook/utils/context_builder.py | 138 | except Exception as e: |
| LOW | open_notebook/utils/context_builder.py | 206 | except Exception as e: |
| LOW | open_notebook/utils/context_builder.py | 250 | except Exception as e: |
| LOW | open_notebook/utils/context_builder.py | 293 | except Exception as e: |
| LOW | open_notebook/utils/graph_utils.py | 21 | except Exception as e: |
| LOW | open_notebook/podcasts/models.py | 241 | except Exception: |
| LOW | open_notebook/podcasts/models.py | 259 | except Exception: |
| LOW | open_notebook/podcasts/migration.py | 132 | except Exception as e: |
| LOW | open_notebook/podcasts/migration.py | 181 | except Exception as e: |
| LOW | open_notebook/ai/models.py | 57 | except Exception: |
| LOW | open_notebook/ai/models.py | 109 | except Exception: |
| LOW | open_notebook/ai/connection_tester.py | 95 | except Exception as e: |
| LOW | open_notebook/ai/connection_tester.py | 130 | except Exception as e: |
| LOW | open_notebook/ai/connection_tester.py | 169 | except Exception as e: |
| LOW | open_notebook/ai/connection_tester.py | 205 | except Exception: |
| LOW | open_notebook/ai/connection_tester.py | 279 | except Exception as e: |
| LOW | open_notebook/ai/connection_tester.py | 412 | except Exception: |
| LOW | open_notebook/ai/connection_tester.py | 436 | except Exception as e: |
| LOW | open_notebook/ai/key_provider.py | 80 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 657 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 747 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 211 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 272 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 306 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 340 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 379 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 413 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 447 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 482 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 559 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 593 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 615 | except Exception as e: |
| LOW | open_notebook/ai/model_discovery.py | 769 | except Exception as e: |
| LOW | open_notebook/graphs/transformation.py | 66 | except Exception as e: |
| LOW | open_notebook/graphs/ask.py | 78 | except Exception as e: |
| LOW | open_notebook/graphs/ask.py | 122 | except Exception as e: |
| LOW | open_notebook/graphs/ask.py | 141 | except Exception as e: |
| LOW | open_notebook/graphs/source_chat.py | 49 | except Exception as e: |
| LOW | open_notebook/graphs/chat.py | 83 | except Exception as e: |
| LOW | open_notebook/graphs/source.py | 74 | except Exception as e: |
| LOW | open_notebook/graphs/CLAUDE.md | 34 | except Exception as e: |
| LOW | open_notebook/domain/provider_config.py | 268 | except Exception: |
| MEDIUM | open_notebook/domain/notebook.py | 29 | def get_sources(self) -> List["Source"]: |
| MEDIUM | open_notebook/domain/notebook.py | 46 | def get_notes(self) -> List["Note"]: |
| MEDIUM | open_notebook/domain/notebook.py | 63 | def get_chat_sessions(self) -> List["ChatSession"]: |
| MEDIUM | open_notebook/domain/notebook.py | 242 | def get_source(self) -> "Source": |
| 239 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …nsformations/components/TransformationEditorDialog.tsx | 36 | export function TransformationEditorDialog({ open, onOpenChange, transformation }: TransformationEditorDialogProps) { |
| LOW | …src/components/settings/EmbeddingModelChangeDialog.tsx | 27 | export function EmbeddingModelChangeDialog({ |
| LOW | frontend/src/lib/utils/source-references.tsx | 174 | export function convertReferencesToMarkdownLinks(text: string): string { |
| LOW | frontend/src/lib/utils/source-references.tsx | 266 | export function createReferenceLinkComponent( |
| LOW | frontend/src/lib/utils/source-references.tsx | 339 | export function convertReferencesToCompactMarkdown(text: string, referencesLabel: string = 'References'): string { |
| LOW | frontend/src/lib/utils/source-references.tsx | 431 | export function createCompactReferenceLinkComponent( |
| LOW | frontend/src/lib/utils/source-references.tsx | 482 | export function convertSourceReferencesLegacy(text: string): React.ReactNode { |
| LOW | frontend/src/lib/hooks/use-podcasts.ts | 233 | export function useDuplicateEpisodeProfile() { |
| LOW | frontend/src/lib/hooks/use-podcasts.ts | 364 | export function useDuplicateSpeakerProfile() { |
| LOW | frontend/src/lib/hooks/use-sources.ts | 354 | export function useRemoveSourceFromNotebook() { |
| LOW | frontend/src/lib/hooks/use-credentials.ts | 340 | export function useMigrateFromProviderConfig() { |
| LOW | open_notebook/utils/version_utils.py | 14 | async def get_version_from_github_async(repo_url: str, branch: str = "main") -> str: |
| LOW | open_notebook/utils/chunking.py | 143 | def detect_content_type_from_extension( |
| LOW | open_notebook/utils/chunking.py | 165 | def detect_content_type_from_heuristics(text: str) -> Tuple[ContentType, float]: |
| LOW | open_notebook/utils/chunking.py | 236 | def _calculate_markdown_score(text: str) -> float: |
| LOW | open_notebook/utils/chunking.py | 368 | def _apply_secondary_chunking(chunks: List[str]) -> List[str]: |
| LOW | open_notebook/utils/encryption.py | 62 | def _get_or_create_encryption_key() -> str: |
| LOW | open_notebook/utils/embedding.py | 24 | def _get_embedding_batch_size() -> int: |
| LOW | open_notebook/utils/graph_utils.py | 7 | async def get_session_message_count(graph, session_id: str) -> int: |
| LOW | open_notebook/podcasts/models.py | 106 | async def resolve_transcript_config(self) -> Tuple[str, str, dict]: |
| LOW | open_notebook/ai/connection_tester.py | 134 | async def _test_openai_compatible_connection(base_url: str, api_key: Optional[str] = None) -> Tuple[bool, str]: |
| LOW | open_notebook/ai/key_provider.py | 111 | async def _provision_simple_provider(provider: str) -> bool: |
| LOW | open_notebook/ai/key_provider.py | 219 | async def _provision_openai_compatible() -> bool: |
| LOW | open_notebook/ai/provision.py | 10 | async def provision_langchain_model( |
| LOW | open_notebook/ai/model_discovery.py | 217 | async def discover_anthropic_models() -> List[DiscoveredModel]: |
| LOW | open_notebook/ai/model_discovery.py | 453 | async def discover_openrouter_models() -> List[DiscoveredModel]: |
| LOW | open_notebook/ai/model_discovery.py | 510 | async def discover_elevenlabs_models() -> List[DiscoveredModel]: |
| LOW | open_notebook/ai/model_discovery.py | 531 | async def discover_dashscope_models() -> List[DiscoveredModel]: |
| LOW | open_notebook/ai/model_discovery.py | 599 | async def discover_openai_compatible_models() -> List[DiscoveredModel]: |
| LOW | open_notebook/graphs/source_chat.py | 33 | def call_model_with_source_context( |
| LOW | open_notebook/graphs/source_chat.py | 54 | def _call_model_with_source_context_inner( |
| LOW | open_notebook/domain/notebook.py | 565 | def content_must_not_be_empty(cls, v): |
| LOW | tests/test_utils.py | 57 | def test_remove_non_printable_preserves_newlines(self): |
| LOW | tests/test_utils.py | 64 | def test_parse_thinking_content_basic(self): |
| LOW | tests/test_utils.py | 72 | def test_parse_thinking_content_multiple_tags(self): |
| LOW | tests/test_utils.py | 83 | def test_parse_thinking_content_no_tags(self): |
| LOW | tests/test_utils.py | 91 | def test_parse_thinking_content_malformed_no_open_tag(self): |
| LOW | tests/test_utils.py | 99 | def test_parse_thinking_content_invalid_input(self): |
| LOW | tests/test_utils.py | 111 | def test_parse_thinking_content_large_content(self): |
| LOW | tests/test_utils.py | 120 | def test_clean_thinking_content(self): |
| LOW | tests/test_utils.py | 138 | def test_token_count_fallback(self): |
| LOW | tests/test_utils.py | 185 | def test_compare_versions_equal(self): |
| LOW | tests/test_utils.py | 190 | def test_compare_versions_less_than(self): |
| LOW | tests/test_utils.py | 212 | def test_compare_versions_prerelease(self): |
| LOW | tests/test_utils.py | 220 | def test_get_installed_version_success(self): |
| LOW | tests/test_utils.py | 229 | def test_get_installed_version_not_found(self): |
| LOW | tests/test_utils.py | 236 | def test_get_version_from_github_invalid_url(self): |
| LOW | tests/test_utils.py | 255 | def test_context_config_defaults(self): |
| LOW | tests/test_utils.py | 40 | def test_remove_non_ascii_pure_ascii(self): |
| LOW | tests/test_utils.py | 46 | def test_remove_non_printable(self): |
| LOW | tests/test_utils.py | 154 | def test_token_count_network_error_fallback(self): |
| LOW | tests/test_utils.py | 201 | def test_compare_versions_greater_than(self): |
| LOW | tests/test_utils.py | 268 | def test_context_builder_initialization(self): |
| LOW | tests/test_graphs.py | 33 | def test_get_current_timestamp_format(self): |
| LOW | tests/test_graphs.py | 41 | def test_get_current_timestamp_validity(self): |
| LOW | tests/test_graphs.py | 65 | def test_get_current_timestamp_is_tool(self): |
| LOW | tests/test_graphs.py | 80 | def test_pattern_chain_state_structure(self): |
| LOW | tests/test_graphs.py | 91 | def test_prompt_graph_compilation(self): |
| LOW | tests/test_graphs.py | 108 | def test_transformation_state_structure(self): |
| LOW | tests/test_graphs.py | 131 | async def test_run_transformation_assertion_no_content(self): |
| 140 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | open_notebook/utils/version_utils.py | 60 | Fetch and parse the version from pyproject.toml in a public GitHub repository. Args: repo_url (str): U |
| HIGH | open_notebook/utils/version_utils.py | 114 | Get the version of an installed package. Args: package_name (str): Name of the installed package |
| HIGH | open_notebook/utils/encryption.py | 129 | Encrypt a string value using Fernet symmetric encryption. Args: value: The plain text string to encryp |
| HIGH | open_notebook/utils/encryption.py | 168 | Decrypt a Fernet-encrypted string value. Handles graceful fallback for legacy unencrypted data. Args: |
| HIGH | open_notebook/utils/embedding.py | 56 | Combine multiple embeddings into a single embedding using mean pooling. Algorithm: 1. Normalize each embed |
| HIGH | open_notebook/utils/embedding.py | 114 | Generate embeddings for multiple texts with automatic batching and retry. Texts are split into batches of EMBE |
| HIGH | open_notebook/utils/embedding.py | 215 | Generate a single embedding for text, handling large content via chunking and mean pooling. For short text (<= |
| HIGH | open_notebook/domain/notebook.py | 460 | Submit insight creation as an async command (fire-and-forget). Submits a create_insight command that h |
| HIGH | docs/7-DEVELOPMENT/code-standards.md | 79 | Perform vector search across embedded content. Args: query: Search query string limit: Maximum numb |
| HIGH | docs/7-DEVELOPMENT/code-standards.md | 131 | Create a new notebook with validation. Args: name: The notebook name (required, non-empty) descript |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | open_notebook/utils/embedding.py | 52 | |
| LOW | open_notebook/utils/context_builder.py | 8 | |
| LOW | open_notebook/utils/__init__.py | 12 | |
| LOW | open_notebook/utils/__init__.py | 12 | |
| LOW | open_notebook/utils/__init__.py | 12 | |
| LOW | open_notebook/utils/__init__.py | 12 | |
| LOW | open_notebook/utils/__init__.py | 12 | |
| LOW | open_notebook/utils/__init__.py | 12 | |
| LOW | open_notebook/utils/__init__.py | 20 | |
| LOW | open_notebook/utils/__init__.py | 20 | |
| LOW | open_notebook/utils/__init__.py | 20 | |
| LOW | open_notebook/utils/__init__.py | 25 | |
| LOW | open_notebook/utils/__init__.py | 25 | |
| LOW | open_notebook/utils/__init__.py | 29 | |
| LOW | open_notebook/utils/__init__.py | 29 | |
| LOW | open_notebook/utils/__init__.py | 29 | |
| LOW | open_notebook/utils/__init__.py | 29 | |
| LOW | open_notebook/utils/__init__.py | 35 | |
| LOW | open_notebook/utils/__init__.py | 35 | |
| LOW | open_notebook/utils/__init__.py | 36 | |
| LOW | open_notebook/utils/__init__.py | 36 | |
| LOW | open_notebook/utils/__init__.py | 36 | |
| LOW | open_notebook/podcasts/models.py | 3 | |
| LOW | open_notebook/ai/connection_tester.py | 11 | |
| LOW | open_notebook/graphs/source_chat.py | 6 | |
| LOW | open_notebook/graphs/chat.py | 6 | |
| LOW | open_notebook/domain/provider_config.py | 15 | |
| LOW | open_notebook/domain/notebook.py | 1 | |
| LOW | open_notebook/domain/notebook.py | 4 | |
| LOW | open_notebook/domain/credential.py | 18 | |
| LOW | tests/test_embedding.py | 244 | |
| LOW | api/command_service.py | 22 | |
| LOW | api/auth.py | 5 | |
| LOW | api/credentials_service.py | 13 | |
| LOW | api/podcast_service.py | 90 | |
| LOW | api/routers/config.py | 2 | |
| LOW | api/routers/embedding.py | 39 | |
| LOW | api/routers/sources.py | 880 | |
| LOW | api/routers/sources.py | 396 | |
| LOW | api/routers/sources.py | 459 | |
| LOW | api/routers/embedding_rebuild.py | 34 | |
| LOW | commands/__init__.py | 3 | |
| LOW | commands/__init__.py | 3 | |
| LOW | commands/__init__.py | 3 | |
| LOW | commands/__init__.py | 3 | |
| LOW | commands/__init__.py | 9 | |
| LOW | commands/__init__.py | 9 | |
| LOW | commands/__init__.py | 10 | |
| LOW | commands/__init__.py | 11 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | open_notebook/utils/encryption.py | 29 | |
| LOW | open_notebook/utils/text_utils.py | 122 | |
| LOW | open_notebook/utils/embedding.py | 111 | |
| LOW | open_notebook/utils/context_builder.py | 210 | |
| LOW | open_notebook/utils/context_builder.py | 367 | |
| LOW | open_notebook/podcasts/migration.py | 65 | |
| LOW | open_notebook/ai/models.py | 102 | |
| LOW | open_notebook/ai/models.py | 221 | |
| LOW | open_notebook/ai/connection_tester.py | 42 | |
| LOW | open_notebook/ai/connection_tester.py | 99 | |
| LOW | open_notebook/ai/connection_tester.py | 134 | |
| LOW | open_notebook/ai/connection_tester.py | 172 | |
| LOW | open_notebook/ai/connection_tester.py | 351 | |
| LOW | open_notebook/ai/connection_tester.py | 371 | |
| LOW | open_notebook/ai/model_discovery.py | 236 | |
| LOW | open_notebook/ai/model_discovery.py | 346 | |
| LOW | open_notebook/graphs/source_chat.py | 190 | |
| LOW | open_notebook/domain/provider_config.py | 198 | |
| LOW | open_notebook/domain/notebook.py | 138 | |
| LOW | open_notebook/domain/credential.py | 136 | |
| LOW | open_notebook/domain/base.py | 39 | |
| LOW | open_notebook/domain/base.py | 146 | |
| LOW | open_notebook/domain/base.py | 282 | |
| LOW | api/credentials_service.py | 89 | |
| LOW | api/credentials_service.py | 248 | |
| LOW | api/credentials_service.py | 361 | |
| LOW | api/credentials_service.py | 703 | |
| LOW | api/credentials_service.py | 811 | |
| LOW | api/routers/models.py | 366 | |
| LOW | api/routers/models.py | 643 | |
| LOW | api/routers/embedding.py | 13 | |
| LOW | api/routers/credentials.py | 256 | |
| LOW | api/routers/podcasts.py | 87 | |
| LOW | api/routers/podcasts.py | 216 | |
| LOW | api/routers/podcasts.py | 273 | |
| LOW | api/routers/source_chat.py | 135 | |
| LOW | api/routers/source_chat.py | 197 | |
| LOW | api/routers/source_chat.py | 417 | |
| LOW | api/routers/sources.py | 162 | |
| LOW | api/routers/sources.py | 290 | |
| LOW | api/routers/sources.py | 718 | |
| LOW | api/routers/sources.py | 822 | |
| LOW | api/routers/chat.py | 422 | |
| LOW | api/routers/embedding_rebuild.py | 19 | |
| LOW | api/routers/context.py | 13 | |
| LOW | api/routers/search.py | 61 | |
| LOW | api/routers/notebooks.py | 21 | |
| LOW | api/routers/languages.py | 38 | |
| LOW | api/routers/commands.py | 123 | |
| LOW | commands/example_commands.py | 44 | |
| LOW | commands/podcast_commands.py | 70 | |
| LOW | commands/embedding_commands.py | 623 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | open_notebook/utils/embedding.py | 245 | # Check if chunking is needed |
| LOW | open_notebook/ai/model_discovery.py | 754 | # Check if model already exists using pre-fetched data |
| LOW | .github/workflows/build-dev.yml | 66 | # Check if this is a push to main (not a PR) |
| LOW | api/sources_service.py | 197 | # Check if this is an async processing response |
| LOW | api/credentials_service.py | 729 | # Check if a credential already exists for this provider with same name |
| LOW | api/podcast_service.py | 170 | # Check if profiles already exist |
| LOW | api/podcast_service.py | 191 | # Check if profiles already exist |
| LOW | api/routers/config.py | 54 | # Check if cache is still valid (within TTL) |
| LOW | api/routers/embedding.py | 16 | # Check if embedding model is available |
| LOW | api/routers/sources.py | 55 | # Check if file exists and generate unique name |
| LOW | api/routers/sources.py | 726 | # Check if this is a legacy source (no command) |
| LOW | api/routers/sources.py | 830 | # Check if source already has a running command |
| LOW | api/routers/sources.py | 870 | # Check if it's a text source by trying to get full_text |
| LOW | api/routers/search.py | 22 | # Check if embedding model is available for vector search |
| LOW | api/routers/search.py | 138 | # Check if embedding model is available |
| LOW | api/routers/search.py | 185 | # Check if embedding model is available |
| LOW | api/routers/notebooks.py | 249 | # Check if notebook exists |
| LOW | api/routers/notebooks.py | 254 | # Check if source exists |
| LOW | api/routers/notebooks.py | 259 | # Check if reference already exists (idempotency) |
| LOW | api/routers/notebooks.py | 294 | # Check if notebook exists |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tests/test_sources_api.py | 0 | create test client after environment variables have been cleared by conftest. |
| HIGH | tests/test_models_api.py | 0 | create test client after environment variables have been cleared by conftest. |
| HIGH | tests/test_credentials_api.py | 0 | create test client after environment variables have been cleared by conftest. |
| HIGH | tests/test_notes_api.py | 0 | create test client after environment variables have been cleared by conftest. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | open_notebook/ai/model_discovery.py | 743 | # Create a set of (name, type) tuples for O(1) lookup |
| MEDIUM | open_notebook/graphs/source_chat.py | 250 | # Create the StateGraph |
| MEDIUM | open_notebook/graphs/source.py | 178 | # Define the graph edges |
| MEDIUM | open_notebook/domain/credential.py | 152 | # Create a minimal credential with error info from raw DB fields |
| MEDIUM | tests/test_domain.py | 129 | # Create a temporary file |
| MEDIUM | commands/podcast_commands.py | 215 | # Create the record for the episode and associate with the ongoing command |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | frontend/src/lib/utils/source-references.tsx | 175 | // Step 1: Find ALL references using simple greedy pattern |
| LOW | frontend/src/lib/utils/source-references.tsx | 201 | // Step 2: Process references from end to start (to preserve indices) |
| LOW | frontend/src/lib/utils/source-references.tsx | 209 | // Step 3: Analyze context around the reference |
| LOW | frontend/src/lib/utils/source-references.tsx | 249 | // Step 4: Build the markdown link |
| LOW | frontend/src/lib/utils/source-references.tsx | 253 | // Step 5: Replace in the result string |
| LOW | frontend/src/lib/utils/source-references.tsx | 340 | // Step 1: Parse all references using existing function |
| LOW | frontend/src/lib/utils/source-references.tsx | 343 | // Step 2: If no references found, return original text |
| LOW | frontend/src/lib/utils/source-references.tsx | 348 | // Step 3: Build reference map (deduplicate and assign numbers) |
| LOW | frontend/src/lib/utils/source-references.tsx | 363 | // Step 4: Replace references with numbered citations (process from end to start) |
| LOW | frontend/src/lib/utils/source-references.tsx | 399 | // Step 5: Build reference list |
| LOW | frontend/src/lib/utils/source-references.tsx | 408 | // Step 6: Append reference list to result |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | open_notebook/podcasts/__init__.py | 1 | # Podcasts module |
| LOW | open_notebook/ai/__init__.py | 1 | # AI infrastructure module |
| LOW | docs/6-TROUBLESHOOTING/connection-issues.md | 61 | |
| LOW | docs/6-TROUBLESHOOTING/quick-fixes.md | 121 | **Solution (1 minute):** |
| LOW | docs/6-TROUBLESHOOTING/quick-fixes.md | 181 | **Solution (1 minute):** |
| LOW | examples/docker-compose-speaches.yml | 1 | # Docker Compose with Speaches (Local TTS/STT) |
| LOW | examples/docker-compose-speaches.yml | 81 | # |
| LOW | examples/docker-compose-speaches.yml | 101 | # - Model Name: speaches-ai/Kokoro-82M-v1.0-ONNX |
| LOW | examples/docker-compose-speaches.yml | 121 | # -F "file=@test.mp3" \ |
| LOW | examples/docker-compose-ollama.yml | 1 | # Docker Compose with Ollama (Free Local AI) |
| LOW | examples/docker-compose-full-local.yml | 1 | # Docker Compose - 100% Local AI Setup |
| LOW | examples/docker-compose-full-local.yml | 101 | # ========================================== |
| LOW | examples/docker-compose-full-local.yml | 121 | # CONFIGURATION IN OPEN NOTEBOOK |
| LOW | examples/docker-compose-full-local.yml | 141 | # - Select and register the models you need (e.g. TTS and STT) |
| LOW | examples/docker-compose-full-local.yml | 161 | # |
| LOW | examples/docker-compose-full-local.yml | 181 | # |
| LOW | examples/docker-compose-single.yml | 21 | # - Next.js UI: http://localhost:8502 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | frontend/src/lib/api/source-chat.ts | 66 | // Use relative URL to leverage Next.js rewrites |
| MEDIUM | frontend/src/lib/api/search.ts | 29 | // Use relative URL to leverage Next.js rewrites |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | examples/docker-compose-speaches.yml | 13 | # Usage: |
| LOW | examples/docker-compose-ollama.yml | 6 | # Usage: |
| LOW | examples/docker-compose-full-local.yml | 16 | # Usage: |