evalvault 1.73.2__py3-none-any.whl → 1.75.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. evalvault/adapters/inbound/api/adapter.py +66 -17
  2. evalvault/adapters/inbound/api/routers/calibration.py +9 -9
  3. evalvault/adapters/inbound/api/routers/chat.py +604 -37
  4. evalvault/adapters/inbound/api/routers/domain.py +10 -5
  5. evalvault/adapters/inbound/api/routers/pipeline.py +3 -3
  6. evalvault/adapters/inbound/api/routers/runs.py +23 -4
  7. evalvault/adapters/inbound/cli/commands/analyze.py +10 -12
  8. evalvault/adapters/inbound/cli/commands/benchmark.py +10 -8
  9. evalvault/adapters/inbound/cli/commands/calibrate.py +2 -7
  10. evalvault/adapters/inbound/cli/commands/calibrate_judge.py +2 -7
  11. evalvault/adapters/inbound/cli/commands/compare.py +2 -7
  12. evalvault/adapters/inbound/cli/commands/debug.py +3 -2
  13. evalvault/adapters/inbound/cli/commands/domain.py +12 -12
  14. evalvault/adapters/inbound/cli/commands/experiment.py +9 -8
  15. evalvault/adapters/inbound/cli/commands/gate.py +3 -2
  16. evalvault/adapters/inbound/cli/commands/graph_rag.py +2 -2
  17. evalvault/adapters/inbound/cli/commands/history.py +3 -12
  18. evalvault/adapters/inbound/cli/commands/method.py +1 -2
  19. evalvault/adapters/inbound/cli/commands/ops.py +2 -2
  20. evalvault/adapters/inbound/cli/commands/pipeline.py +2 -2
  21. evalvault/adapters/inbound/cli/commands/profile_difficulty.py +3 -12
  22. evalvault/adapters/inbound/cli/commands/prompts.py +4 -18
  23. evalvault/adapters/inbound/cli/commands/regress.py +5 -4
  24. evalvault/adapters/inbound/cli/commands/run.py +42 -31
  25. evalvault/adapters/inbound/cli/commands/run_helpers.py +24 -15
  26. evalvault/adapters/inbound/cli/commands/stage.py +6 -25
  27. evalvault/adapters/inbound/cli/utils/options.py +10 -4
  28. evalvault/adapters/inbound/mcp/tools.py +11 -8
  29. evalvault/adapters/outbound/analysis/embedding_analyzer_module.py +17 -1
  30. evalvault/adapters/outbound/analysis/embedding_searcher_module.py +14 -0
  31. evalvault/adapters/outbound/domain_memory/__init__.py +8 -4
  32. evalvault/adapters/outbound/domain_memory/factory.py +68 -0
  33. evalvault/adapters/outbound/domain_memory/postgres_adapter.py +1062 -0
  34. evalvault/adapters/outbound/domain_memory/postgres_domain_memory_schema.sql +177 -0
  35. evalvault/adapters/outbound/llm/vllm_adapter.py +23 -0
  36. evalvault/adapters/outbound/nlp/korean/dense_retriever.py +10 -7
  37. evalvault/adapters/outbound/nlp/korean/toolkit.py +15 -4
  38. evalvault/adapters/outbound/ops/__init__.py +5 -0
  39. evalvault/adapters/outbound/ops/report_renderer.py +159 -0
  40. evalvault/adapters/outbound/retriever/pgvector_store.py +165 -0
  41. evalvault/adapters/outbound/storage/base_sql.py +3 -2
  42. evalvault/adapters/outbound/storage/factory.py +53 -0
  43. evalvault/adapters/outbound/storage/postgres_adapter.py +90 -0
  44. evalvault/adapters/outbound/storage/postgres_schema.sql +15 -0
  45. evalvault/adapters/outbound/storage/schema.sql +14 -0
  46. evalvault/adapters/outbound/storage/sqlite_adapter.py +77 -0
  47. evalvault/config/settings.py +31 -7
  48. evalvault/domain/entities/ops_report.py +40 -0
  49. evalvault/domain/services/domain_learning_hook.py +2 -1
  50. evalvault/domain/services/ops_report_service.py +192 -0
  51. evalvault/ports/inbound/web_port.py +3 -1
  52. evalvault/ports/outbound/storage_port.py +2 -0
  53. evalvault-1.75.0.dist-info/METADATA +221 -0
  54. {evalvault-1.73.2.dist-info → evalvault-1.75.0.dist-info}/RECORD +57 -48
  55. evalvault-1.73.2.dist-info/METADATA +0 -585
  56. {evalvault-1.73.2.dist-info → evalvault-1.75.0.dist-info}/WHEEL +0 -0
  57. {evalvault-1.73.2.dist-info → evalvault-1.75.0.dist-info}/entry_points.txt +0 -0
  58. {evalvault-1.73.2.dist-info → evalvault-1.75.0.dist-info}/licenses/LICENSE.md +0 -0
@@ -0,0 +1,68 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+ from pathlib import Path
5
+ from typing import TYPE_CHECKING
6
+
7
+ from evalvault.adapters.outbound.domain_memory.postgres_adapter import PostgresDomainMemoryAdapter
8
+ from evalvault.adapters.outbound.domain_memory.sqlite_adapter import SQLiteDomainMemoryAdapter
9
+
10
+ if TYPE_CHECKING:
11
+ from evalvault.config.settings import Settings
12
+ from evalvault.ports.outbound.domain_memory_port import DomainMemoryPort
13
+
14
+ logger = logging.getLogger(__name__)
15
+
16
+
17
+ def build_domain_memory_adapter(
18
+ *,
19
+ settings: Settings | None = None,
20
+ db_path: Path | None = None,
21
+ fallback_to_sqlite: bool = True,
22
+ ) -> DomainMemoryPort:
23
+ """Build domain memory adapter based on settings and parameters.
24
+
25
+ Args:
26
+ settings: Application settings (uses default if None)
27
+ db_path: Explicit SQLite database path (forces SQLite if provided)
28
+ fallback_to_sqlite: Fall back to SQLite if Postgres fails
29
+
30
+ Returns:
31
+ DomainMemoryPort implementation (Postgres by default, SQLite if specified)
32
+ """
33
+ from evalvault.config.settings import Settings
34
+
35
+ resolved_settings = settings or Settings()
36
+
37
+ if db_path is not None:
38
+ return SQLiteDomainMemoryAdapter(db_path=db_path)
39
+
40
+ backend = getattr(resolved_settings, "db_backend", "postgres")
41
+ if backend == "sqlite":
42
+ resolved_db_path = resolved_settings.evalvault_memory_db_path
43
+ if resolved_db_path is None:
44
+ raise RuntimeError("SQLite backend selected but evalvault_memory_db_path is not set.")
45
+ return SQLiteDomainMemoryAdapter(db_path=resolved_db_path)
46
+
47
+ conn_string = resolved_settings.postgres_connection_string
48
+ if not conn_string:
49
+ host = resolved_settings.postgres_host or "localhost"
50
+ port = resolved_settings.postgres_port
51
+ database = resolved_settings.postgres_database
52
+ user = resolved_settings.postgres_user or "postgres"
53
+ password = resolved_settings.postgres_password or ""
54
+ conn_string = f"host={host} port={port} dbname={database} user={user} password={password}"
55
+
56
+ try:
57
+ return PostgresDomainMemoryAdapter(connection_string=conn_string)
58
+ except Exception as exc:
59
+ if not fallback_to_sqlite:
60
+ raise
61
+ logger.warning("PostgreSQL domain memory adapter failed (%s). Falling back to SQLite.", exc)
62
+ resolved_db_path = resolved_settings.evalvault_memory_db_path
63
+ if resolved_db_path is None:
64
+ raise
65
+ return SQLiteDomainMemoryAdapter(db_path=resolved_db_path)
66
+
67
+
68
+ __all__ = ["build_domain_memory_adapter"]