evalvault 1.73.1__tar.gz → 1.74.0__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.
Files changed (893) hide show
  1. {evalvault-1.73.1 → evalvault-1.74.0}/.env.offline.example +9 -0
  2. {evalvault-1.73.1 → evalvault-1.74.0}/Dockerfile +9 -3
  3. {evalvault-1.73.1 → evalvault-1.74.0}/PKG-INFO +1 -1
  4. {evalvault-1.73.1 → evalvault-1.74.0}/docker-compose.offline.yml +10 -1
  5. {evalvault-1.73.1 → evalvault-1.74.0}/docs/api/adapters/inbound.md +2 -2
  6. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/OFFLINE_DOCKER.md +19 -2
  7. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/appendix-file-inventory.md +1 -1
  8. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/Dockerfile +4 -2
  9. evalvault-1.74.0/frontend/src/components/ToastProvider.tsx +89 -0
  10. evalvault-1.74.0/frontend/src/pages/AiSdkChat.tsx +282 -0
  11. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/services/api.ts +27 -0
  12. {evalvault-1.73.1 → evalvault-1.74.0}/pyproject.toml +1 -1
  13. evalvault-1.74.0/scripts/offline/export_base_images.sh +54 -0
  14. evalvault-1.74.0/scripts/offline/export_images.sh +58 -0
  15. evalvault-1.74.0/scripts/offline/load_base_images.sh +33 -0
  16. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/adapter.py +38 -0
  17. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/routers/chat.py +301 -20
  18. evalvault-1.74.0/src/evalvault/adapters/outbound/ops/__init__.py +5 -0
  19. evalvault-1.74.0/src/evalvault/adapters/outbound/ops/report_renderer.py +159 -0
  20. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/storage/postgres_adapter.py +90 -0
  21. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/storage/postgres_schema.sql +13 -0
  22. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/storage/schema.sql +14 -0
  23. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/storage/sqlite_adapter.py +77 -0
  24. evalvault-1.74.0/src/evalvault/domain/entities/ops_report.py +40 -0
  25. evalvault-1.74.0/src/evalvault/domain/services/ops_report_service.py +192 -0
  26. {evalvault-1.73.1 → evalvault-1.74.0}/uv.lock +1 -1
  27. evalvault-1.73.1/scripts/offline/export_images.sh +0 -26
  28. {evalvault-1.73.1 → evalvault-1.74.0}/.dockerignore +0 -0
  29. {evalvault-1.73.1 → evalvault-1.74.0}/.env.example +0 -0
  30. {evalvault-1.73.1 → evalvault-1.74.0}/.github/workflows/ci.yml +0 -0
  31. {evalvault-1.73.1 → evalvault-1.74.0}/.github/workflows/regression-gate.yml +0 -0
  32. {evalvault-1.73.1 → evalvault-1.74.0}/.github/workflows/release.yml +0 -0
  33. {evalvault-1.73.1 → evalvault-1.74.0}/.github/workflows/stale.yml +0 -0
  34. {evalvault-1.73.1 → evalvault-1.74.0}/.gitignore +0 -0
  35. {evalvault-1.73.1 → evalvault-1.74.0}/.pre-commit-config.yaml +0 -0
  36. {evalvault-1.73.1 → evalvault-1.74.0}/.python-version +0 -0
  37. {evalvault-1.73.1 → evalvault-1.74.0}/AGENTS.md +0 -0
  38. {evalvault-1.73.1 → evalvault-1.74.0}/CHANGELOG.md +0 -0
  39. {evalvault-1.73.1 → evalvault-1.74.0}/CLAUDE.md +0 -0
  40. {evalvault-1.73.1 → evalvault-1.74.0}/CODE_OF_CONDUCT.md +0 -0
  41. {evalvault-1.73.1 → evalvault-1.74.0}/CONTRIBUTING.md +0 -0
  42. {evalvault-1.73.1 → evalvault-1.74.0}/LICENSE.md +0 -0
  43. {evalvault-1.73.1 → evalvault-1.74.0}/README.en.md +0 -0
  44. {evalvault-1.73.1 → evalvault-1.74.0}/README.md +0 -0
  45. {evalvault-1.73.1 → evalvault-1.74.0}/SECURITY.md +0 -0
  46. {evalvault-1.73.1 → evalvault-1.74.0}/agent/README.md +0 -0
  47. {evalvault-1.73.1 → evalvault-1.74.0}/agent/agent.py +0 -0
  48. {evalvault-1.73.1 → evalvault-1.74.0}/agent/client.py +0 -0
  49. {evalvault-1.73.1 → evalvault-1.74.0}/agent/config.py +0 -0
  50. {evalvault-1.73.1 → evalvault-1.74.0}/agent/main.py +0 -0
  51. {evalvault-1.73.1 → evalvault-1.74.0}/agent/memory/README.md +0 -0
  52. {evalvault-1.73.1 → evalvault-1.74.0}/agent/memory/shared/decisions.md +0 -0
  53. {evalvault-1.73.1 → evalvault-1.74.0}/agent/memory/shared/dependencies.md +0 -0
  54. {evalvault-1.73.1 → evalvault-1.74.0}/agent/memory/templates/coordinator_guide.md +0 -0
  55. {evalvault-1.73.1 → evalvault-1.74.0}/agent/memory/templates/work_log_template.md +0 -0
  56. {evalvault-1.73.1 → evalvault-1.74.0}/agent/memory_integration.py +0 -0
  57. {evalvault-1.73.1 → evalvault-1.74.0}/agent/progress.py +0 -0
  58. {evalvault-1.73.1 → evalvault-1.74.0}/agent/prompts/app_spec.txt +0 -0
  59. {evalvault-1.73.1 → evalvault-1.74.0}/agent/prompts/baseline.txt +0 -0
  60. {evalvault-1.73.1 → evalvault-1.74.0}/agent/prompts/coding_prompt.md +0 -0
  61. {evalvault-1.73.1 → evalvault-1.74.0}/agent/prompts/existing_project_prompt.md +0 -0
  62. {evalvault-1.73.1 → evalvault-1.74.0}/agent/prompts/improvement/architecture_prompt.md +0 -0
  63. {evalvault-1.73.1 → evalvault-1.74.0}/agent/prompts/improvement/base_prompt.md +0 -0
  64. {evalvault-1.73.1 → evalvault-1.74.0}/agent/prompts/improvement/coordinator_prompt.md +0 -0
  65. {evalvault-1.73.1 → evalvault-1.74.0}/agent/prompts/improvement/observability_prompt.md +0 -0
  66. {evalvault-1.73.1 → evalvault-1.74.0}/agent/prompts/initializer_prompt.md +0 -0
  67. {evalvault-1.73.1 → evalvault-1.74.0}/agent/prompts/prompt_manifest.json +0 -0
  68. {evalvault-1.73.1 → evalvault-1.74.0}/agent/prompts/system.txt +0 -0
  69. {evalvault-1.73.1 → evalvault-1.74.0}/agent/prompts.py +0 -0
  70. {evalvault-1.73.1 → evalvault-1.74.0}/agent/requirements.txt +0 -0
  71. {evalvault-1.73.1 → evalvault-1.74.0}/agent/security.py +0 -0
  72. {evalvault-1.73.1 → evalvault-1.74.0}/config/domains/insurance/memory.yaml +0 -0
  73. {evalvault-1.73.1 → evalvault-1.74.0}/config/domains/insurance/terms_dictionary_en.json +0 -0
  74. {evalvault-1.73.1 → evalvault-1.74.0}/config/domains/insurance/terms_dictionary_ko.json +0 -0
  75. {evalvault-1.73.1 → evalvault-1.74.0}/config/methods.yaml +0 -0
  76. {evalvault-1.73.1 → evalvault-1.74.0}/config/models.yaml +0 -0
  77. {evalvault-1.73.1 → evalvault-1.74.0}/config/ragas_prompts_override.yaml +0 -0
  78. {evalvault-1.73.1 → evalvault-1.74.0}/config/regressions/ci.json +0 -0
  79. {evalvault-1.73.1 → evalvault-1.74.0}/config/regressions/default.json +0 -0
  80. {evalvault-1.73.1 → evalvault-1.74.0}/config/regressions/ux.json +0 -0
  81. {evalvault-1.73.1 → evalvault-1.74.0}/config/stage_metric_playbook.yaml +0 -0
  82. {evalvault-1.73.1 → evalvault-1.74.0}/config/stage_metric_thresholds.json +0 -0
  83. {evalvault-1.73.1 → evalvault-1.74.0}/data/datasets/dummy_test_dataset.json +0 -0
  84. {evalvault-1.73.1 → evalvault-1.74.0}/data/datasets/insurance_qa_korean.csv +0 -0
  85. {evalvault-1.73.1 → evalvault-1.74.0}/data/datasets/insurance_qa_korean.json +0 -0
  86. {evalvault-1.73.1 → evalvault-1.74.0}/data/datasets/insurance_qa_korean_2.json +0 -0
  87. {evalvault-1.73.1 → evalvault-1.74.0}/data/datasets/insurance_qa_korean_3.json +0 -0
  88. {evalvault-1.73.1 → evalvault-1.74.0}/data/datasets/ragas_ko90_en10.json +0 -0
  89. {evalvault-1.73.1 → evalvault-1.74.0}/data/datasets/sample.json +0 -0
  90. {evalvault-1.73.1 → evalvault-1.74.0}/data/datasets/visualization_20q_cluster_map.csv +0 -0
  91. {evalvault-1.73.1 → evalvault-1.74.0}/data/datasets/visualization_20q_korean.json +0 -0
  92. {evalvault-1.73.1 → evalvault-1.74.0}/data/datasets/visualization_2q_cluster_map.csv +0 -0
  93. {evalvault-1.73.1 → evalvault-1.74.0}/data/datasets/visualization_2q_korean.json +0 -0
  94. {evalvault-1.73.1 → evalvault-1.74.0}/data/kg/knowledge_graph.json +0 -0
  95. {evalvault-1.73.1 → evalvault-1.74.0}/data/rag/user_guide_bm25.json +0 -0
  96. {evalvault-1.73.1 → evalvault-1.74.0}/dataset_templates/dataset_template.csv +0 -0
  97. {evalvault-1.73.1 → evalvault-1.74.0}/dataset_templates/dataset_template.json +0 -0
  98. {evalvault-1.73.1 → evalvault-1.74.0}/dataset_templates/dataset_template.xlsx +0 -0
  99. {evalvault-1.73.1 → evalvault-1.74.0}/dataset_templates/method_input_template.json +0 -0
  100. {evalvault-1.73.1 → evalvault-1.74.0}/docker-compose.langfuse.yml +0 -0
  101. {evalvault-1.73.1 → evalvault-1.74.0}/docker-compose.phoenix.yaml +0 -0
  102. {evalvault-1.73.1 → evalvault-1.74.0}/docker-compose.yml +0 -0
  103. {evalvault-1.73.1 → evalvault-1.74.0}/docs/INDEX.md +0 -0
  104. {evalvault-1.73.1 → evalvault-1.74.0}/docs/README.ko.md +0 -0
  105. {evalvault-1.73.1 → evalvault-1.74.0}/docs/ROADMAP.md +0 -0
  106. {evalvault-1.73.1 → evalvault-1.74.0}/docs/STATUS.md +0 -0
  107. {evalvault-1.73.1 → evalvault-1.74.0}/docs/api/adapters/outbound.md +0 -0
  108. {evalvault-1.73.1 → evalvault-1.74.0}/docs/api/config.md +0 -0
  109. {evalvault-1.73.1 → evalvault-1.74.0}/docs/api/domain/entities.md +0 -0
  110. {evalvault-1.73.1 → evalvault-1.74.0}/docs/api/domain/metrics.md +0 -0
  111. {evalvault-1.73.1 → evalvault-1.74.0}/docs/api/domain/services.md +0 -0
  112. {evalvault-1.73.1 → evalvault-1.74.0}/docs/api/ports/inbound.md +0 -0
  113. {evalvault-1.73.1 → evalvault-1.74.0}/docs/api/ports/outbound.md +0 -0
  114. {evalvault-1.73.1 → evalvault-1.74.0}/docs/architecture/open-rag-trace-collector.md +0 -0
  115. {evalvault-1.73.1 → evalvault-1.74.0}/docs/architecture/open-rag-trace-spec.md +0 -0
  116. {evalvault-1.73.1 → evalvault-1.74.0}/docs/getting-started/INSTALLATION.md +0 -0
  117. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/AGENTS_SYSTEM_GUIDE.md +0 -0
  118. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/CHAINLIT_INTEGRATION_PLAN.md +0 -0
  119. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/CI_REGRESSION_GATE.md +0 -0
  120. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/CLI_MCP_PLAN.md +0 -0
  121. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/CLI_PARALLEL_FEATURES_SPEC.md +0 -0
  122. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/CLI_UX_REDESIGN.md +0 -0
  123. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/DEV_GUIDE.md +0 -0
  124. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/DOCS_REFRESH_PLAN.md +0 -0
  125. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/EVALVAULT_DIAGNOSTIC_PLAYBOOK.md +0 -0
  126. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/EVALVAULT_RUN_EXCEL_SHEETS.md +0 -0
  127. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/EVALVAULT_WORK_PLAN.md +0 -0
  128. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/EXTERNAL_TRACE_API_SPEC.md +0 -0
  129. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/Extension_2.md +0 -0
  130. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/Extension_Data_Difficulty_Profiling_Custom_Judge_Model.md +0 -0
  131. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/INSURANCE_SUMMARY_METRICS_PLAN.md +0 -0
  132. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/LENA_MVP_IMPLEMENTATION_PLAN.md +0 -0
  133. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/LENA_RAGAS_CALIBRATION_DEV_PLAN.md +0 -0
  134. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/MULTITURN_EVAL_GUIDE.md +0 -0
  135. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/NEXT_STEPS_EXECUTION_PLAN.md +0 -0
  136. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/OPEN_RAG_TRACE_INTERNAL_ADAPTER.md +0 -0
  137. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/OPEN_RAG_TRACE_SAMPLES.md +0 -0
  138. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/P0_P3_EXECUTION_REPORT.md +0 -0
  139. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/P1_P4_WORK_PLAN.md +0 -0
  140. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/PARALLEL_WORK_APPROVAL_RULES.md +0 -0
  141. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/PRD_LENA.md +0 -0
  142. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/PROJECT_STATUS_AND_PLAN.md +0 -0
  143. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/RAGAS_HUMAN_FEEDBACK_CALIBRATION_GUIDE.md +0 -0
  144. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/RAG_CLI_WORKFLOW_TEMPLATES.md +0 -0
  145. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/RAG_NOISE_REDUCTION_GUIDE.md +0 -0
  146. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/RAG_PERFORMANCE_IMPLEMENTATION_LOG.md +0 -0
  147. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/RAG_PERFORMANCE_IMPROVEMENT_PROPOSAL.md +0 -0
  148. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/RELEASE_CHECKLIST.md +0 -0
  149. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/USER_GUIDE.md +0 -0
  150. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/WEBUI_CLI_ROLLOUT_PLAN.md +0 -0
  151. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/WORKLOG_LAST_2_DAYS.md +0 -0
  152. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/cli_process.md +0 -0
  153. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/prompt_suggestions_design.md +0 -0
  154. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/rag_human_feedback_calibration_implementation_plan.md +0 -0
  155. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/refactoring_strategy.md +0 -0
  156. {evalvault-1.73.1 → evalvault-1.74.0}/docs/guides/repeat_query.md +0 -0
  157. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/CHAPTERS/00_overview.md +0 -0
  158. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/CHAPTERS/01_architecture.md +0 -0
  159. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/CHAPTERS/02_data_and_metrics.md +0 -0
  160. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/CHAPTERS/03_workflows.md +0 -0
  161. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/CHAPTERS/04_operations.md +0 -0
  162. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/CHAPTERS/05_security.md +0 -0
  163. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/CHAPTERS/06_quality_and_testing.md +0 -0
  164. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/CHAPTERS/07_ux_and_product.md +0 -0
  165. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/CHAPTERS/08_roadmap.md +0 -0
  166. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/CHAPTERS/09_competitive_positioning.md +0 -0
  167. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/EXTERNAL.md +0 -0
  168. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/INDEX.md +0 -0
  169. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/appendix-coverage-matrix.md +0 -0
  170. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/appendix-roadmap.md +0 -0
  171. {evalvault-1.73.1 → evalvault-1.74.0}/docs/handbook/appendix-taxonomy.md +0 -0
  172. {evalvault-1.73.1 → evalvault-1.74.0}/docs/mapping/component-to-whitepaper.yaml +0 -0
  173. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/00_frontmatter.md +0 -0
  174. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/01_overview.md +0 -0
  175. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/02_architecture.md +0 -0
  176. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/03_data_flow.md +0 -0
  177. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/04_components.md +0 -0
  178. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/05_expert_lenses.md +0 -0
  179. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/06_implementation.md +0 -0
  180. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/07_advanced.md +0 -0
  181. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/08_customization.md +0 -0
  182. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/09_quality.md +0 -0
  183. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/10_performance.md +0 -0
  184. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/11_security.md +0 -0
  185. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/12_operations.md +0 -0
  186. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/13_standards.md +0 -0
  187. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/14_roadmap.md +0 -0
  188. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/INDEX.md +0 -0
  189. {evalvault-1.73.1 → evalvault-1.74.0}/docs/new_whitepaper/STYLE_GUIDE.md +0 -0
  190. {evalvault-1.73.1 → evalvault-1.74.0}/docs/refactor/REFAC_000_master_plan.md +0 -0
  191. {evalvault-1.73.1 → evalvault-1.74.0}/docs/refactor/REFAC_010_agent_playbook.md +0 -0
  192. {evalvault-1.73.1 → evalvault-1.74.0}/docs/refactor/REFAC_020_logging_policy.md +0 -0
  193. {evalvault-1.73.1 → evalvault-1.74.0}/docs/refactor/REFAC_030_phase0_responsibility_map.md +0 -0
  194. {evalvault-1.73.1 → evalvault-1.74.0}/docs/refactor/REFAC_040_wbs_parallel_plan.md +0 -0
  195. {evalvault-1.73.1 → evalvault-1.74.0}/docs/refactor/logs/phase-0-baseline.md +0 -0
  196. {evalvault-1.73.1 → evalvault-1.74.0}/docs/refactor/logs/phase-1-evaluator.md +0 -0
  197. {evalvault-1.73.1 → evalvault-1.74.0}/docs/refactor/logs/phase-2-cli-run.md +0 -0
  198. {evalvault-1.73.1 → evalvault-1.74.0}/docs/refactor/logs/phase-3-analysis.md +0 -0
  199. {evalvault-1.73.1 → evalvault-1.74.0}/docs/security_audit_worklog.md +0 -0
  200. {evalvault-1.73.1 → evalvault-1.74.0}/docs/stylesheets/extra.css +0 -0
  201. {evalvault-1.73.1 → evalvault-1.74.0}/docs/templates/dataset_template.csv +0 -0
  202. {evalvault-1.73.1 → evalvault-1.74.0}/docs/templates/dataset_template.json +0 -0
  203. {evalvault-1.73.1 → evalvault-1.74.0}/docs/templates/dataset_template.xlsx +0 -0
  204. {evalvault-1.73.1 → evalvault-1.74.0}/docs/templates/eval_report_templates.md +0 -0
  205. {evalvault-1.73.1 → evalvault-1.74.0}/docs/templates/kg_template.json +0 -0
  206. {evalvault-1.73.1 → evalvault-1.74.0}/docs/templates/otel_openinference_trace_example.json +0 -0
  207. {evalvault-1.73.1 → evalvault-1.74.0}/docs/templates/ragas_dataset_example_ko90_en10.json +0 -0
  208. {evalvault-1.73.1 → evalvault-1.74.0}/docs/templates/retriever_docs_template.json +0 -0
  209. {evalvault-1.73.1 → evalvault-1.74.0}/docs/tools/generate-whitepaper.py +0 -0
  210. {evalvault-1.73.1 → evalvault-1.74.0}/docs/web_ui_analysis_migration_plan.md +0 -0
  211. {evalvault-1.73.1 → evalvault-1.74.0}/dummy_test_dataset.json +0 -0
  212. {evalvault-1.73.1 → evalvault-1.74.0}/examples/README.md +0 -0
  213. {evalvault-1.73.1 → evalvault-1.74.0}/examples/benchmarks/README.md +0 -0
  214. {evalvault-1.73.1 → evalvault-1.74.0}/examples/benchmarks/korean_rag/faithfulness_test.json +0 -0
  215. {evalvault-1.73.1 → evalvault-1.74.0}/examples/benchmarks/korean_rag/insurance_qa_100.json +0 -0
  216. {evalvault-1.73.1 → evalvault-1.74.0}/examples/benchmarks/korean_rag/keyword_extraction_test.json +0 -0
  217. {evalvault-1.73.1 → evalvault-1.74.0}/examples/benchmarks/korean_rag/retrieval_test.json +0 -0
  218. {evalvault-1.73.1 → evalvault-1.74.0}/examples/benchmarks/output/comparison.json +0 -0
  219. {evalvault-1.73.1 → evalvault-1.74.0}/examples/benchmarks/output/full_results.json +0 -0
  220. {evalvault-1.73.1 → evalvault-1.74.0}/examples/benchmarks/output/leaderboard.json +0 -0
  221. {evalvault-1.73.1 → evalvault-1.74.0}/examples/benchmarks/output/results_mteb.json +0 -0
  222. {evalvault-1.73.1 → evalvault-1.74.0}/examples/benchmarks/output/retrieval_result.json +0 -0
  223. {evalvault-1.73.1 → evalvault-1.74.0}/examples/benchmarks/run_korean_benchmark.py +0 -0
  224. {evalvault-1.73.1 → evalvault-1.74.0}/examples/kg_generator_demo.py +0 -0
  225. {evalvault-1.73.1 → evalvault-1.74.0}/examples/method_plugin_template/README.md +0 -0
  226. {evalvault-1.73.1 → evalvault-1.74.0}/examples/method_plugin_template/pyproject.toml +0 -0
  227. {evalvault-1.73.1 → evalvault-1.74.0}/examples/method_plugin_template/src/method_plugin_template/__init__.py +0 -0
  228. {evalvault-1.73.1 → evalvault-1.74.0}/examples/method_plugin_template/src/method_plugin_template/methods.py +0 -0
  229. {evalvault-1.73.1 → evalvault-1.74.0}/examples/stage_events.jsonl +0 -0
  230. {evalvault-1.73.1 → evalvault-1.74.0}/examples/usecase/comprehensive_workflow_test.py +0 -0
  231. {evalvault-1.73.1 → evalvault-1.74.0}/examples/usecase/insurance_eval_dataset.json +0 -0
  232. {evalvault-1.73.1 → evalvault-1.74.0}/examples/usecase/output/comprehensive_report.html +0 -0
  233. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/.env.example +0 -0
  234. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/.gitignore +0 -0
  235. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/README.md +0 -0
  236. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/e2e/analysis-compare.spec.ts +0 -0
  237. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/e2e/analysis-lab.spec.ts +0 -0
  238. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/e2e/compare-runs.spec.ts +0 -0
  239. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/e2e/dashboard.spec.ts +0 -0
  240. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/e2e/domain-memory.spec.ts +0 -0
  241. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/e2e/evaluation-studio.spec.ts +0 -0
  242. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/e2e/judge-calibration.spec.ts +0 -0
  243. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/e2e/knowledge-base.spec.ts +0 -0
  244. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/e2e/mocks/intents.json +0 -0
  245. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/e2e/mocks/run_details.json +0 -0
  246. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/e2e/mocks/runs.json +0 -0
  247. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/e2e/run-details.spec.ts +0 -0
  248. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/eslint.config.js +0 -0
  249. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/index.html +0 -0
  250. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/nginx.conf +0 -0
  251. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/package-lock.json +0 -0
  252. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/package.json +0 -0
  253. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/playwright.config.ts +0 -0
  254. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/public/vite.svg +0 -0
  255. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/App.css +0 -0
  256. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/App.tsx +0 -0
  257. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/assets/react.svg +0 -0
  258. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/AnalysisNodeOutputs.tsx +0 -0
  259. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/InsightSpacePanel.tsx +0 -0
  260. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/Layout.tsx +0 -0
  261. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/MarkdownContent.tsx +0 -0
  262. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/PrioritySummaryPanel.tsx +0 -0
  263. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/SpaceLegend.tsx +0 -0
  264. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/SpacePlot2D.tsx +0 -0
  265. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/SpacePlot3D.tsx +0 -0
  266. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/StatusBadge.tsx +0 -0
  267. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/VirtualizedText.tsx +0 -0
  268. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/ai-elements/Conversation.tsx +0 -0
  269. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/ai-elements/Message.tsx +0 -0
  270. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/ai-elements/PromptInput.tsx +0 -0
  271. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/ai-elements/Response.tsx +0 -0
  272. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/components/ai-elements/index.ts +0 -0
  273. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/config/ui.ts +0 -0
  274. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/config.ts +0 -0
  275. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/hooks/useInsightSpace.ts +0 -0
  276. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/index.css +0 -0
  277. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/main.tsx +0 -0
  278. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/AnalysisCompareView.tsx +0 -0
  279. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/AnalysisLab.tsx +0 -0
  280. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/AnalysisResultView.tsx +0 -0
  281. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/Chat.tsx +0 -0
  282. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/CompareRuns.tsx +0 -0
  283. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/ComprehensiveAnalysis.tsx +0 -0
  284. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/CustomerReport.tsx +0 -0
  285. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/Dashboard.tsx +0 -0
  286. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/DomainMemory.tsx +0 -0
  287. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/EvaluationStudio.tsx +0 -0
  288. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/JudgeCalibration.tsx +0 -0
  289. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/KnowledgeBase.tsx +0 -0
  290. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/RunDetails.tsx +0 -0
  291. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/Settings.tsx +0 -0
  292. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/Visualization.tsx +0 -0
  293. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/pages/VisualizationHome.tsx +0 -0
  294. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/types/plotly.d.ts +0 -0
  295. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/utils/cliCommandBuilder.ts +0 -0
  296. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/utils/clipboard.ts +0 -0
  297. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/utils/format.ts +0 -0
  298. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/utils/phoenix.ts +0 -0
  299. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/utils/runAnalytics.ts +0 -0
  300. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/utils/score.ts +0 -0
  301. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/src/utils/summaryMetrics.ts +0 -0
  302. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/tailwind.config.js +0 -0
  303. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/tsconfig.app.json +0 -0
  304. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/tsconfig.json +0 -0
  305. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/tsconfig.node.json +0 -0
  306. {evalvault-1.73.1 → evalvault-1.74.0}/frontend/vite.config.ts +0 -0
  307. {evalvault-1.73.1 → evalvault-1.74.0}/mkdocs.yml +0 -0
  308. {evalvault-1.73.1 → evalvault-1.74.0}/package-lock.json +0 -0
  309. {evalvault-1.73.1 → evalvault-1.74.0}/prompts/system_override.txt +0 -0
  310. {evalvault-1.73.1 → evalvault-1.74.0}/reports/.gitkeep +0 -0
  311. {evalvault-1.73.1 → evalvault-1.74.0}/reports/README.md +0 -0
  312. {evalvault-1.73.1 → evalvault-1.74.0}/reports/debug_report_r1_smoke.md +0 -0
  313. {evalvault-1.73.1 → evalvault-1.74.0}/reports/debug_report_r2_graphrag.md +0 -0
  314. {evalvault-1.73.1 → evalvault-1.74.0}/reports/debug_report_r2_graphrag_openai.md +0 -0
  315. {evalvault-1.73.1 → evalvault-1.74.0}/reports/debug_report_r3_bm25.md +0 -0
  316. {evalvault-1.73.1 → evalvault-1.74.0}/reports/debug_report_r3_bm25_langfuse3.md +0 -0
  317. {evalvault-1.73.1 → evalvault-1.74.0}/reports/debug_report_r3_dense_faiss.md +0 -0
  318. {evalvault-1.73.1 → evalvault-1.74.0}/reports/feature_verification_report.md +0 -0
  319. {evalvault-1.73.1 → evalvault-1.74.0}/reports/improvement_1d91a667-4288-4742-be3a-a8f5310c5140.md +0 -0
  320. {evalvault-1.73.1 → evalvault-1.74.0}/reports/r2_graphrag_openai_stage_events.jsonl +0 -0
  321. {evalvault-1.73.1 → evalvault-1.74.0}/reports/r2_graphrag_openai_stage_report.txt +0 -0
  322. {evalvault-1.73.1 → evalvault-1.74.0}/reports/r2_graphrag_stage_events.jsonl +0 -0
  323. {evalvault-1.73.1 → evalvault-1.74.0}/reports/r2_graphrag_stage_report.txt +0 -0
  324. {evalvault-1.73.1 → evalvault-1.74.0}/reports/r3_bm25_langfuse2_stage_events.jsonl +0 -0
  325. {evalvault-1.73.1 → evalvault-1.74.0}/reports/r3_bm25_langfuse3_stage_events.jsonl +0 -0
  326. {evalvault-1.73.1 → evalvault-1.74.0}/reports/r3_bm25_langfuse_stage_events.jsonl +0 -0
  327. {evalvault-1.73.1 → evalvault-1.74.0}/reports/r3_bm25_phoenix_stage_events.jsonl +0 -0
  328. {evalvault-1.73.1 → evalvault-1.74.0}/reports/r3_bm25_stage_events.jsonl +0 -0
  329. {evalvault-1.73.1 → evalvault-1.74.0}/reports/r3_bm25_stage_report.txt +0 -0
  330. {evalvault-1.73.1 → evalvault-1.74.0}/reports/r3_dense_faiss_stage_events.jsonl +0 -0
  331. {evalvault-1.73.1 → evalvault-1.74.0}/reports/r3_dense_faiss_stage_report.txt +0 -0
  332. {evalvault-1.73.1 → evalvault-1.74.0}/reports/retrieval_benchmark_smoke_precision.csv +0 -0
  333. {evalvault-1.73.1 → evalvault-1.74.0}/reports/retrieval_benchmark_smoke_precision_graphrag.csv +0 -0
  334. {evalvault-1.73.1 → evalvault-1.74.0}/reports/retrieval_benchmark_smoke_precision_multi.csv +0 -0
  335. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/benchmark/download_kmmlu.py +0 -0
  336. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/ci/run_regression_gate.py +0 -0
  337. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/dev/open_rag_trace_demo.py +0 -0
  338. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/dev/open_rag_trace_integration_template.py +0 -0
  339. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/dev/otel-collector-config.yaml +0 -0
  340. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/dev/start_web_ui_with_phoenix.sh +0 -0
  341. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/dev/validate_open_rag_trace.py +0 -0
  342. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/dev/verify_dashboard_endpoint.sh +0 -0
  343. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/dev_seed_pipeline_results.py +0 -0
  344. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/docs/__init__.py +0 -0
  345. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/docs/analyzer/__init__.py +0 -0
  346. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/docs/analyzer/ast_scanner.py +0 -0
  347. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/docs/analyzer/confidence_scorer.py +0 -0
  348. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/docs/analyzer/graph_builder.py +0 -0
  349. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/docs/analyzer/side_effect_detector.py +0 -0
  350. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/docs/generate_api_docs.py +0 -0
  351. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/docs/models/__init__.py +0 -0
  352. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/docs/models/schema.py +0 -0
  353. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/docs/renderer/__init__.py +0 -0
  354. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/docs/renderer/html_generator.py +0 -0
  355. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/offline/bundle_datasets.sh +0 -0
  356. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/offline/import_images.sh +0 -0
  357. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/offline/restore_datasets.sh +0 -0
  358. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/offline/smoke_test.sh +0 -0
  359. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/ops/phoenix_watch.py +0 -0
  360. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/perf/backfill_langfuse_trace_url.py +0 -0
  361. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/perf/r3_dense_smoke.py +0 -0
  362. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/perf/r3_evalvault_run_dataset.json +0 -0
  363. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/perf/r3_retriever_docs.json +0 -0
  364. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/perf/r3_smoke_real.jsonl +0 -0
  365. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/perf/r3_stage_events_sample.jsonl +0 -0
  366. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/pipeline_template_inspect.py +0 -0
  367. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/reports/generate_release_notes.py +0 -0
  368. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/run_with_timeout.py +0 -0
  369. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/test_full_evaluation.py +0 -0
  370. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/tests/run_regressions.py +0 -0
  371. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/tests/run_retriever_stage_report_smoke.sh +0 -0
  372. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/validate_tutorials.py +0 -0
  373. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/verify_ragas_compliance.py +0 -0
  374. {evalvault-1.73.1 → evalvault-1.74.0}/scripts/verify_workflows.py +0 -0
  375. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/__init__.py +0 -0
  376. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/__init__.py +0 -0
  377. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/__init__.py +0 -0
  378. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/__init__.py +0 -0
  379. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/main.py +0 -0
  380. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/routers/__init__.py +0 -0
  381. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/routers/benchmark.py +0 -0
  382. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/routers/calibration.py +0 -0
  383. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/routers/config.py +0 -0
  384. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/routers/domain.py +0 -0
  385. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/routers/knowledge.py +0 -0
  386. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/routers/mcp.py +0 -0
  387. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/routers/pipeline.py +0 -0
  388. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/api/routers/runs.py +0 -0
  389. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/__init__.py +0 -0
  390. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/app.py +0 -0
  391. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/__init__.py +0 -0
  392. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/agent.py +0 -0
  393. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/analyze.py +0 -0
  394. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/api.py +0 -0
  395. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/artifacts.py +0 -0
  396. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/benchmark.py +0 -0
  397. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/calibrate.py +0 -0
  398. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/calibrate_judge.py +0 -0
  399. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/compare.py +0 -0
  400. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/config.py +0 -0
  401. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/debug.py +0 -0
  402. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/domain.py +0 -0
  403. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/experiment.py +0 -0
  404. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/gate.py +0 -0
  405. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/generate.py +0 -0
  406. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/graph_rag.py +0 -0
  407. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/history.py +0 -0
  408. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/init.py +0 -0
  409. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/kg.py +0 -0
  410. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/langfuse.py +0 -0
  411. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/method.py +0 -0
  412. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/ops.py +0 -0
  413. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/phoenix.py +0 -0
  414. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/pipeline.py +0 -0
  415. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/profile_difficulty.py +0 -0
  416. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/prompts.py +0 -0
  417. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/regress.py +0 -0
  418. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/run.py +0 -0
  419. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/run_helpers.py +0 -0
  420. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/commands/stage.py +0 -0
  421. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/utils/__init__.py +0 -0
  422. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/utils/analysis_io.py +0 -0
  423. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/utils/console.py +0 -0
  424. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/utils/errors.py +0 -0
  425. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/utils/formatters.py +0 -0
  426. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/utils/options.py +0 -0
  427. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/utils/presets.py +0 -0
  428. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/utils/progress.py +0 -0
  429. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/cli/utils/validators.py +0 -0
  430. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/mcp/__init__.py +0 -0
  431. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/mcp/schemas.py +0 -0
  432. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/inbound/mcp/tools.py +0 -0
  433. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/__init__.py +0 -0
  434. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/__init__.py +0 -0
  435. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/analysis_report_module.py +0 -0
  436. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/base_module.py +0 -0
  437. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/bm25_searcher_module.py +0 -0
  438. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/causal_adapter.py +0 -0
  439. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/causal_analyzer_module.py +0 -0
  440. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/common.py +0 -0
  441. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/comparison_pipeline_adapter.py +0 -0
  442. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/comparison_report_module.py +0 -0
  443. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/data_loader_module.py +0 -0
  444. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/dataset_feature_analyzer_module.py +0 -0
  445. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/detailed_report_module.py +0 -0
  446. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/diagnostic_playbook_module.py +0 -0
  447. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/embedding_analyzer_module.py +0 -0
  448. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/embedding_distribution_module.py +0 -0
  449. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/embedding_searcher_module.py +0 -0
  450. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/hybrid_rrf_module.py +0 -0
  451. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/hybrid_weighted_module.py +0 -0
  452. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/hypothesis_generator_module.py +0 -0
  453. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/llm_report_module.py +0 -0
  454. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/low_performer_extractor_module.py +0 -0
  455. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/model_analyzer_module.py +0 -0
  456. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/morpheme_analyzer_module.py +0 -0
  457. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/morpheme_quality_checker_module.py +0 -0
  458. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/multiturn_analyzer_module.py +0 -0
  459. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/network_analyzer_module.py +0 -0
  460. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/nlp_adapter.py +0 -0
  461. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/nlp_analyzer_module.py +0 -0
  462. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/pattern_detector_module.py +0 -0
  463. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/pipeline_factory.py +0 -0
  464. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/pipeline_helpers.py +0 -0
  465. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/priority_summary_module.py +0 -0
  466. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/ragas_evaluator_module.py +0 -0
  467. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/retrieval_analyzer_module.py +0 -0
  468. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/retrieval_benchmark_module.py +0 -0
  469. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/retrieval_quality_checker_module.py +0 -0
  470. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/root_cause_analyzer_module.py +0 -0
  471. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/run_analyzer_module.py +0 -0
  472. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/run_change_detector_module.py +0 -0
  473. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/run_comparator_module.py +0 -0
  474. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/run_loader_module.py +0 -0
  475. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/run_metric_comparator_module.py +0 -0
  476. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/search_comparator_module.py +0 -0
  477. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/statistical_adapter.py +0 -0
  478. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/statistical_analyzer_module.py +0 -0
  479. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/statistical_comparator_module.py +0 -0
  480. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/summary_report_module.py +0 -0
  481. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/time_series_analyzer_module.py +0 -0
  482. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/timeseries_advanced_module.py +0 -0
  483. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/trend_detector_module.py +0 -0
  484. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/analysis/verification_report_module.py +0 -0
  485. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/artifact_fs.py +0 -0
  486. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/benchmark/__init__.py +0 -0
  487. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/benchmark/lm_eval_adapter.py +0 -0
  488. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/cache/__init__.py +0 -0
  489. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/cache/hybrid_cache.py +0 -0
  490. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/cache/memory_cache.py +0 -0
  491. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/dataset/__init__.py +0 -0
  492. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/dataset/base.py +0 -0
  493. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/dataset/csv_loader.py +0 -0
  494. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/dataset/excel_loader.py +0 -0
  495. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/dataset/json_loader.py +0 -0
  496. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/dataset/loader_factory.py +0 -0
  497. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/dataset/method_input_loader.py +0 -0
  498. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/dataset/multiturn_json_loader.py +0 -0
  499. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/dataset/streaming_loader.py +0 -0
  500. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/dataset/templates.py +0 -0
  501. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/dataset/thresholds.py +0 -0
  502. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/debug/__init__.py +0 -0
  503. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/debug/report_renderer.py +0 -0
  504. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/documents/__init__.py +0 -0
  505. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/documents/ocr/__init__.py +0 -0
  506. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/documents/ocr/paddleocr_backend.py +0 -0
  507. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/documents/pdf_extractor.py +0 -0
  508. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/documents/versioned_loader.py +0 -0
  509. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/domain_memory/__init__.py +0 -0
  510. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/domain_memory/domain_memory_schema.sql +0 -0
  511. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/domain_memory/sqlite_adapter.py +0 -0
  512. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/filesystem/__init__.py +0 -0
  513. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/filesystem/difficulty_profile_writer.py +0 -0
  514. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/filesystem/ops_snapshot_writer.py +0 -0
  515. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/improvement/__init__.py +0 -0
  516. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/improvement/insight_generator.py +0 -0
  517. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/improvement/pattern_detector.py +0 -0
  518. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/improvement/playbook_loader.py +0 -0
  519. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/improvement/stage_metric_playbook_loader.py +0 -0
  520. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/judge_calibration_adapter.py +0 -0
  521. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/judge_calibration_reporter.py +0 -0
  522. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/kg/__init__.py +0 -0
  523. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/kg/graph_rag_retriever.py +0 -0
  524. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/kg/networkx_adapter.py +0 -0
  525. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/kg/parallel_kg_builder.py +0 -0
  526. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/kg/query_strategies.py +0 -0
  527. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/llm/__init__.py +0 -0
  528. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/llm/anthropic_adapter.py +0 -0
  529. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/llm/azure_adapter.py +0 -0
  530. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/llm/base.py +0 -0
  531. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/llm/factory.py +0 -0
  532. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/llm/instructor_factory.py +0 -0
  533. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/llm/llm_relation_augmenter.py +0 -0
  534. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/llm/ollama_adapter.py +0 -0
  535. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/llm/openai_adapter.py +0 -0
  536. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/llm/token_aware_chat.py +0 -0
  537. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/llm/vllm_adapter.py +0 -0
  538. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/methods/__init__.py +0 -0
  539. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/methods/baseline_oracle.py +0 -0
  540. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/methods/external_command.py +0 -0
  541. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/methods/registry.py +0 -0
  542. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/nlp/__init__.py +0 -0
  543. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/nlp/korean/__init__.py +0 -0
  544. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/nlp/korean/bm25_retriever.py +0 -0
  545. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/nlp/korean/dense_retriever.py +0 -0
  546. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/nlp/korean/document_chunker.py +0 -0
  547. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/nlp/korean/hybrid_retriever.py +0 -0
  548. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/nlp/korean/kiwi_tokenizer.py +0 -0
  549. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/nlp/korean/korean_evaluation.py +0 -0
  550. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/nlp/korean/korean_stopwords.py +0 -0
  551. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/nlp/korean/toolkit.py +0 -0
  552. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/nlp/korean/toolkit_factory.py +0 -0
  553. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/phoenix/sync_service.py +0 -0
  554. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/report/__init__.py +0 -0
  555. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/report/ci_report_formatter.py +0 -0
  556. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/report/dashboard_generator.py +0 -0
  557. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/report/llm_report_generator.py +0 -0
  558. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/report/markdown_adapter.py +0 -0
  559. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/report/pr_comment_formatter.py +0 -0
  560. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/retriever/__init__.py +0 -0
  561. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/retriever/graph_rag_adapter.py +0 -0
  562. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/storage/__init__.py +0 -0
  563. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/storage/base_sql.py +0 -0
  564. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/storage/benchmark_storage_adapter.py +0 -0
  565. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/tracer/__init__.py +0 -0
  566. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/tracer/open_rag_log_handler.py +0 -0
  567. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/tracer/open_rag_trace_adapter.py +0 -0
  568. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/tracer/open_rag_trace_decorators.py +0 -0
  569. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/tracer/open_rag_trace_helpers.py +0 -0
  570. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/tracer/phoenix_tracer_adapter.py +0 -0
  571. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/tracker/__init__.py +0 -0
  572. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/tracker/langfuse_adapter.py +0 -0
  573. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/tracker/log_sanitizer.py +0 -0
  574. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/tracker/mlflow_adapter.py +0 -0
  575. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/adapters/outbound/tracker/phoenix_adapter.py +0 -0
  576. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/config/__init__.py +0 -0
  577. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/config/agent_types.py +0 -0
  578. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/config/domain_config.py +0 -0
  579. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/config/instrumentation.py +0 -0
  580. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/config/langfuse_support.py +0 -0
  581. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/config/model_config.py +0 -0
  582. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/config/phoenix_support.py +0 -0
  583. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/config/playbooks/improvement_playbook.yaml +0 -0
  584. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/config/secret_manager.py +0 -0
  585. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/config/settings.py +0 -0
  586. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/debug_ragas.py +0 -0
  587. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/debug_ragas_real.py +0 -0
  588. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/__init__.py +0 -0
  589. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/__init__.py +0 -0
  590. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/analysis.py +0 -0
  591. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/analysis_pipeline.py +0 -0
  592. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/benchmark.py +0 -0
  593. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/benchmark_run.py +0 -0
  594. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/dataset.py +0 -0
  595. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/debug.py +0 -0
  596. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/experiment.py +0 -0
  597. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/feedback.py +0 -0
  598. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/graph_rag.py +0 -0
  599. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/improvement.py +0 -0
  600. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/judge_calibration.py +0 -0
  601. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/kg.py +0 -0
  602. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/memory.py +0 -0
  603. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/method.py +0 -0
  604. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/multiturn.py +0 -0
  605. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/prompt.py +0 -0
  606. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/prompt_suggestion.py +0 -0
  607. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/rag_trace.py +0 -0
  608. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/result.py +0 -0
  609. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/entities/stage.py +0 -0
  610. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/__init__.py +0 -0
  611. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/analysis_registry.py +0 -0
  612. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/confidence.py +0 -0
  613. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/contextual_relevancy.py +0 -0
  614. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/entity_preservation.py +0 -0
  615. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/insurance.py +0 -0
  616. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/multiturn_metrics.py +0 -0
  617. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/no_answer.py +0 -0
  618. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/registry.py +0 -0
  619. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/retrieval_rank.py +0 -0
  620. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/summary_accuracy.py +0 -0
  621. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/summary_needs_followup.py +0 -0
  622. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/summary_non_definitive.py +0 -0
  623. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/summary_risk_coverage.py +0 -0
  624. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/terms_dictionary.json +0 -0
  625. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/metrics/text_match.py +0 -0
  626. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/__init__.py +0 -0
  627. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/analysis_service.py +0 -0
  628. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/artifact_lint_service.py +0 -0
  629. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/async_batch_executor.py +0 -0
  630. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/batch_executor.py +0 -0
  631. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/benchmark_report_service.py +0 -0
  632. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/benchmark_runner.py +0 -0
  633. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/benchmark_service.py +0 -0
  634. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/cache_metrics.py +0 -0
  635. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/cluster_map_builder.py +0 -0
  636. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/custom_metric_snapshot.py +0 -0
  637. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/dataset_preprocessor.py +0 -0
  638. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/debug_report_service.py +0 -0
  639. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/difficulty_profile_reporter.py +0 -0
  640. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/difficulty_profiling_service.py +0 -0
  641. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/document_chunker.py +0 -0
  642. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/document_versioning.py +0 -0
  643. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/domain_learning_hook.py +0 -0
  644. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/embedding_overlay.py +0 -0
  645. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/entity_extractor.py +0 -0
  646. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/evaluator.py +0 -0
  647. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/experiment_comparator.py +0 -0
  648. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/experiment_manager.py +0 -0
  649. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/experiment_reporter.py +0 -0
  650. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/experiment_repository.py +0 -0
  651. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/experiment_statistics.py +0 -0
  652. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/graph_rag_experiment.py +0 -0
  653. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/holdout_splitter.py +0 -0
  654. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/improvement_guide_service.py +0 -0
  655. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/intent_classifier.py +0 -0
  656. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/judge_calibration_service.py +0 -0
  657. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/kg_generator.py +0 -0
  658. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/memory_aware_evaluator.py +0 -0
  659. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/memory_based_analysis.py +0 -0
  660. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/method_runner.py +0 -0
  661. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/multiturn_evaluator.py +0 -0
  662. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/ops_snapshot_service.py +0 -0
  663. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/pipeline_orchestrator.py +0 -0
  664. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/pipeline_template_registry.py +0 -0
  665. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/prompt_candidate_service.py +0 -0
  666. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/prompt_manifest.py +0 -0
  667. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/prompt_registry.py +0 -0
  668. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/prompt_scoring_service.py +0 -0
  669. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/prompt_status.py +0 -0
  670. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/prompt_suggestion_reporter.py +0 -0
  671. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/ragas_prompt_overrides.py +0 -0
  672. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/regression_gate_service.py +0 -0
  673. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/retrieval_metrics.py +0 -0
  674. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/retriever_context.py +0 -0
  675. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/run_comparison_service.py +0 -0
  676. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/satisfaction_calibration_service.py +0 -0
  677. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/stage_event_builder.py +0 -0
  678. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/stage_metric_guide_service.py +0 -0
  679. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/stage_metric_service.py +0 -0
  680. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/stage_summary_service.py +0 -0
  681. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/synthetic_qa_generator.py +0 -0
  682. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/testset_generator.py +0 -0
  683. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/threshold_profiles.py +0 -0
  684. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/unified_report_service.py +0 -0
  685. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/domain/services/visual_space_service.py +0 -0
  686. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/mkdocs_helpers.py +0 -0
  687. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/__init__.py +0 -0
  688. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/inbound/__init__.py +0 -0
  689. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/inbound/analysis_pipeline_port.py +0 -0
  690. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/inbound/evaluator_port.py +0 -0
  691. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/inbound/learning_hook_port.py +0 -0
  692. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/inbound/multiturn_port.py +0 -0
  693. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/inbound/web_port.py +0 -0
  694. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/__init__.py +0 -0
  695. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/analysis_cache_port.py +0 -0
  696. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/analysis_module_port.py +0 -0
  697. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/analysis_port.py +0 -0
  698. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/artifact_fs_port.py +0 -0
  699. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/benchmark_port.py +0 -0
  700. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/causal_analysis_port.py +0 -0
  701. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/comparison_pipeline_port.py +0 -0
  702. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/dataset_port.py +0 -0
  703. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/difficulty_profile_port.py +0 -0
  704. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/domain_memory_port.py +0 -0
  705. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/embedding_port.py +0 -0
  706. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/graph_retriever_port.py +0 -0
  707. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/improvement_port.py +0 -0
  708. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/intent_classifier_port.py +0 -0
  709. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/judge_calibration_port.py +0 -0
  710. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/korean_nlp_port.py +0 -0
  711. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/llm_factory_port.py +0 -0
  712. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/llm_port.py +0 -0
  713. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/method_port.py +0 -0
  714. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/nlp_analysis_port.py +0 -0
  715. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/ops_snapshot_port.py +0 -0
  716. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/relation_augmenter_port.py +0 -0
  717. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/report_port.py +0 -0
  718. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/stage_storage_port.py +0 -0
  719. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/storage_port.py +0 -0
  720. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/tracer_port.py +0 -0
  721. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/ports/outbound/tracker_port.py +0 -0
  722. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/reports/__init__.py +0 -0
  723. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/reports/release_notes.py +0 -0
  724. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/scripts/__init__.py +0 -0
  725. {evalvault-1.73.1 → evalvault-1.74.0}/src/evalvault/scripts/regression_runner.py +0 -0
  726. {evalvault-1.73.1 → evalvault-1.74.0}/tests/__init__.py +0 -0
  727. {evalvault-1.73.1 → evalvault-1.74.0}/tests/conftest.py +0 -0
  728. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/README.md +0 -0
  729. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/benchmark/retrieval_ground_truth_min.json +0 -0
  730. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/benchmark/retrieval_ground_truth_multi.json +0 -0
  731. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/auto_insurance_qa_korean_full.json +0 -0
  732. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/callcenter_summary_5cases.json +0 -0
  733. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/comprehensive_dataset.json +0 -0
  734. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/edge_cases.json +0 -0
  735. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/edge_cases.xlsx +0 -0
  736. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/evaluation_test_sample.json +0 -0
  737. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/graphrag_benchmark.json +0 -0
  738. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/graphrag_multi_sample.json +0 -0
  739. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/graphrag_retriever_docs.json +0 -0
  740. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/graphrag_smoke.json +0 -0
  741. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/insurance_document.txt +0 -0
  742. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/insurance_qa_english.csv +0 -0
  743. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/insurance_qa_english.json +0 -0
  744. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/insurance_qa_english.xlsx +0 -0
  745. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/insurance_qa_korean.csv +0 -0
  746. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/insurance_qa_korean.json +0 -0
  747. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/insurance_qa_korean.xlsx +0 -0
  748. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/insurance_qa_korean_versioned_pdf.json +0 -0
  749. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/multiturn_benchmark.json +0 -0
  750. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/regression_baseline.json +0 -0
  751. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/run_mode_full_domain_memory.json +0 -0
  752. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/run_mode_simple.json +0 -0
  753. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/e2e/summary_eval_minimal.json +0 -0
  754. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/kg/minimal_graph.json +0 -0
  755. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/sample_dataset.csv +0 -0
  756. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/sample_dataset.json +0 -0
  757. {evalvault-1.73.1 → evalvault-1.74.0}/tests/fixtures/sample_dataset.xlsx +0 -0
  758. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/__init__.py +0 -0
  759. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/benchmark/test_benchmark_service_integration.py +0 -0
  760. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/conftest.py +0 -0
  761. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/test_cli_integration.py +0 -0
  762. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/test_data_flow.py +0 -0
  763. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/test_e2e_scenarios.py +0 -0
  764. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/test_evaluation_flow.py +0 -0
  765. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/test_full_workflow.py +0 -0
  766. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/test_langfuse_flow.py +0 -0
  767. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/test_phoenix_flow.py +0 -0
  768. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/test_pipeline_api_contracts.py +0 -0
  769. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/test_storage_flow.py +0 -0
  770. {evalvault-1.73.1 → evalvault-1.74.0}/tests/integration/test_summary_eval_fixture.py +0 -0
  771. {evalvault-1.73.1 → evalvault-1.74.0}/tests/optional_deps.py +0 -0
  772. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/__init__.py +0 -0
  773. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/inbound/mcp/test_execute_tools.py +0 -0
  774. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/inbound/mcp/test_read_tools.py +0 -0
  775. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/outbound/documents/test_pdf_extractor.py +0 -0
  776. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/outbound/documents/test_versioned_loader.py +0 -0
  777. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/outbound/improvement/__init__.py +0 -0
  778. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/outbound/improvement/test_insight_generator.py +0 -0
  779. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/outbound/improvement/test_pattern_detector.py +0 -0
  780. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/outbound/improvement/test_playbook_loader.py +0 -0
  781. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/outbound/improvement/test_stage_metric_playbook_loader.py +0 -0
  782. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/outbound/kg/test_graph_rag_retriever.py +0 -0
  783. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/outbound/kg/test_parallel_kg_builder.py +0 -0
  784. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/outbound/retriever/test_graph_rag_adapter.py +0 -0
  785. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/adapters/outbound/storage/test_benchmark_storage_adapter.py +0 -0
  786. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/config/test_phoenix_support.py +0 -0
  787. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/conftest.py +0 -0
  788. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/metrics/test_analysis_metric_registry.py +0 -0
  789. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/metrics/test_confidence.py +0 -0
  790. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/metrics/test_contextual_relevancy.py +0 -0
  791. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/metrics/test_entity_preservation.py +0 -0
  792. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/metrics/test_metric_registry.py +0 -0
  793. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/metrics/test_multiturn_metrics.py +0 -0
  794. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/metrics/test_no_answer.py +0 -0
  795. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/metrics/test_retrieval_rank.py +0 -0
  796. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/metrics/test_text_match.py +0 -0
  797. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_cache_metrics.py +0 -0
  798. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_claim_level.py +0 -0
  799. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_dataset_preprocessor.py +0 -0
  800. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_document_versioning.py +0 -0
  801. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_evaluator_comprehensive.py +0 -0
  802. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_holdout_splitter.py +0 -0
  803. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_improvement_guide_service.py +0 -0
  804. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_judge_calibration_service.py +0 -0
  805. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_ops_snapshot_service.py +0 -0
  806. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_regression_gate_service.py +0 -0
  807. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_retrieval_metrics.py +0 -0
  808. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_retriever_context.py +0 -0
  809. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_stage_event_builder.py +0 -0
  810. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_stage_metric_guide_service.py +0 -0
  811. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/services/test_synthetic_qa_generator.py +0 -0
  812. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/test_embedding_overlay.py +0 -0
  813. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/test_prompt_manifest.py +0 -0
  814. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/domain/test_prompt_status.py +0 -0
  815. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/reports/test_release_notes.py +0 -0
  816. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/scripts/test_regression_runner.py +0 -0
  817. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_agent_types.py +0 -0
  818. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_analysis_entities.py +0 -0
  819. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_analysis_modules.py +0 -0
  820. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_analysis_pipeline.py +0 -0
  821. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_analysis_service.py +0 -0
  822. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_anthropic_adapter.py +0 -0
  823. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_artifact_lint_service.py +0 -0
  824. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_async_batch_executor.py +0 -0
  825. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_azure_adapter.py +0 -0
  826. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_benchmark_helpers.py +0 -0
  827. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_benchmark_runner.py +0 -0
  828. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_causal_adapter.py +0 -0
  829. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_ci_gate_cli.py +0 -0
  830. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_cli.py +0 -0
  831. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_cli_artifacts.py +0 -0
  832. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_cli_calibrate_judge.py +0 -0
  833. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_cli_domain.py +0 -0
  834. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_cli_init.py +0 -0
  835. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_cli_ops.py +0 -0
  836. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_cli_progress.py +0 -0
  837. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_cli_utils.py +0 -0
  838. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_data_loaders.py +0 -0
  839. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_difficulty_profiling_service.py +0 -0
  840. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_domain_config.py +0 -0
  841. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_domain_memory.py +0 -0
  842. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_entities.py +0 -0
  843. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_entities_kg.py +0 -0
  844. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_entity_extractor.py +0 -0
  845. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_evaluator.py +0 -0
  846. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_experiment.py +0 -0
  847. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_hybrid_cache.py +0 -0
  848. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_instrumentation.py +0 -0
  849. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_insurance_metric.py +0 -0
  850. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_intent_classifier.py +0 -0
  851. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_kg_generator.py +0 -0
  852. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_kg_networkx.py +0 -0
  853. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_kiwi_tokenizer.py +0 -0
  854. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_kiwi_warning_suppression.py +0 -0
  855. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_korean_dense.py +0 -0
  856. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_korean_evaluation.py +0 -0
  857. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_korean_retrieval.py +0 -0
  858. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_langfuse_tracker.py +0 -0
  859. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_llm_relation_augmenter.py +0 -0
  860. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_lm_eval_adapter.py +0 -0
  861. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_markdown_report.py +0 -0
  862. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_memory_cache.py +0 -0
  863. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_memory_services.py +0 -0
  864. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_method_plugins.py +0 -0
  865. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_mlflow_tracker.py +0 -0
  866. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_model_config.py +0 -0
  867. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_nlp_adapter.py +0 -0
  868. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_nlp_entities.py +0 -0
  869. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_ollama_adapter.py +0 -0
  870. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_openai_adapter.py +0 -0
  871. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_phoenix_adapter.py +0 -0
  872. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_pipeline_orchestrator.py +0 -0
  873. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_ports.py +0 -0
  874. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_postgres_storage.py +0 -0
  875. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_pr_comment_formatter.py +0 -0
  876. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_prompt_candidate_service.py +0 -0
  877. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_rag_trace_entities.py +0 -0
  878. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_regress_cli.py +0 -0
  879. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_run_comparison_service.py +0 -0
  880. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_run_memory_helpers.py +0 -0
  881. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_run_mode_fixtures.py +0 -0
  882. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_settings.py +0 -0
  883. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_sqlite_storage.py +0 -0
  884. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_stage_cli.py +0 -0
  885. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_stage_event_schema.py +0 -0
  886. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_stage_metric_service.py +0 -0
  887. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_stage_storage.py +0 -0
  888. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_stage_summary_service.py +0 -0
  889. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_statistical_adapter.py +0 -0
  890. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_streaming_loader.py +0 -0
  891. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_summary_eval_fixture.py +0 -0
  892. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_testset_generator.py +0 -0
  893. {evalvault-1.73.1 → evalvault-1.74.0}/tests/unit/test_web_adapter.py +0 -0
@@ -14,6 +14,7 @@ EVALVAULT_PROFILE=dev
14
14
  # ================================================
15
15
  # PostgreSQL (core stack)
16
16
  # ================================================
17
+ POSTGRES_IMAGE=postgres:16.4-alpine
17
18
  POSTGRES_USER=evalvault
18
19
  POSTGRES_PASSWORD=evalvault
19
20
  POSTGRES_DB=evalvault
@@ -29,6 +30,14 @@ EVALVAULT_MEMORY_DB_PATH=data/db/evalvault_memory.db
29
30
  # ================================================
30
31
  CORS_ORIGINS=http://localhost:5173,http://127.0.0.1:5173
31
32
 
33
+ # ================================================
34
+ # Docker Base Images (offline builds)
35
+ # ================================================
36
+ EVALVAULT_PYTHON_IMAGE=python:3.12.6-slim
37
+ EVALVAULT_UV_IMAGE=ghcr.io/astral-sh/uv:0.4.28
38
+ EVALVAULT_NODE_IMAGE=node:20.19-alpine
39
+ EVALVAULT_NGINX_IMAGE=nginx:1.27.3-alpine
40
+
32
41
  # API_AUTH_TOKENS=
33
42
  # KNOWLEDGE_READ_TOKENS=
34
43
  # KNOWLEDGE_WRITE_TOKENS=
@@ -1,11 +1,16 @@
1
1
  # EvalVault Dockerfile
2
2
  # Multi-stage build for optimized production image
3
3
 
4
+ # Stage 0: uv binary
5
+ ARG PYTHON_IMAGE=python:3.12.6-slim
6
+ ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.4.28
7
+ FROM ${UV_IMAGE} AS uv
8
+
4
9
  # Stage 1: Build stage
5
- FROM python:3.12-slim AS builder
10
+ FROM ${PYTHON_IMAGE} AS builder
6
11
 
7
12
  # Install uv
8
- COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
13
+ COPY --from=uv /uv /usr/local/bin/uv
9
14
 
10
15
  # Set working directory
11
16
  WORKDIR /app
@@ -25,7 +30,8 @@ RUN uv sync --frozen --no-dev
25
30
 
26
31
 
27
32
  # Stage 2: Runtime stage
28
- FROM python:3.12-slim AS runtime
33
+ ARG PYTHON_IMAGE=python:3.12.6-slim
34
+ FROM ${PYTHON_IMAGE} AS runtime
29
35
 
30
36
  # Create non-root user for security
31
37
  RUN useradd --create-home --shell /bin/bash evalvault
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evalvault
3
- Version: 1.73.1
3
+ Version: 1.74.0
4
4
  Summary: RAG evaluation system using Ragas with Phoenix/Langfuse tracing
5
5
  Project-URL: Homepage, https://github.com/ntts9990/EvalVault
6
6
  Project-URL: Documentation, https://github.com/ntts9990/EvalVault#readme
@@ -17,8 +17,9 @@
17
17
  services:
18
18
  # PostgreSQL database for evaluation storage
19
19
  postgres:
20
- image: postgres:16-alpine
20
+ image: ${POSTGRES_IMAGE:-postgres:16.4-alpine}
21
21
  container_name: evalvault-postgres
22
+ pull_policy: never
22
23
  restart: unless-stopped
23
24
  environment:
24
25
  POSTGRES_USER: ${POSTGRES_USER:-evalvault}
@@ -40,8 +41,12 @@ services:
40
41
  build:
41
42
  context: .
42
43
  dockerfile: Dockerfile
44
+ args:
45
+ PYTHON_IMAGE: ${EVALVAULT_PYTHON_IMAGE:-python:3.12.6-slim}
46
+ UV_IMAGE: ${EVALVAULT_UV_IMAGE:-ghcr.io/astral-sh/uv:0.4.28}
43
47
  container_name: evalvault-api
44
48
  restart: unless-stopped
49
+ pull_policy: never
45
50
  depends_on:
46
51
  postgres:
47
52
  condition: service_healthy
@@ -96,8 +101,12 @@ services:
96
101
  build:
97
102
  context: ./frontend
98
103
  dockerfile: Dockerfile
104
+ args:
105
+ NODE_IMAGE: ${EVALVAULT_NODE_IMAGE:-node:20.19-alpine}
106
+ NGINX_IMAGE: ${EVALVAULT_NGINX_IMAGE:-nginx:1.27.3-alpine}
99
107
  container_name: evalvault-web
100
108
  restart: unless-stopped
109
+ pull_policy: never
101
110
  depends_on:
102
111
  evalvault-api:
103
112
  condition: service_healthy
@@ -19,7 +19,7 @@ The CLI provides various commands for evaluation, analysis, and management:
19
19
  - **gate** - Quality gates
20
20
  - **experiment** - A/B testing
21
21
 
22
- For detailed CLI usage, see the [User Guide](../../../guides/USER_GUIDE.md).
22
+ For detailed CLI usage, see the [User Guide](../../guides/USER_GUIDE.md).
23
23
 
24
24
  ## Web API Adapter + React Frontend
25
25
 
@@ -82,4 +82,4 @@ npm install
82
82
  npm run dev
83
83
  ```
84
84
 
85
- For detailed CLI usage, see the [User Guide](../../../guides/USER_GUIDE.md).
85
+ For detailed CLI usage, see the [User Guide](../../guides/USER_GUIDE.md).
@@ -16,6 +16,7 @@ EvalVault를 외부망 없이 운영하기 위한 **오프라인 Docker 패키
16
16
  - `frontend/Dockerfile`: Web UI 정적 서빙 이미지
17
17
  - `frontend/nginx.conf`: `/api/*` 프록시 + SPA 라우팅
18
18
  - `scripts/offline/*.sh`: 이미지 export/import/smoke-test
19
+ - `.env.offline.example`: 오프라인 빌드용 베이스 이미지 고정
19
20
 
20
21
  ## 1) 환경 파일 준비
21
22
 
@@ -93,8 +94,22 @@ chmod +x scripts/offline/*.sh
93
94
  ./scripts/offline/export_images.sh
94
95
  ```
95
96
 
96
- - 산출물: `dist/evalvault_offline.tar`
97
- - 체크섬: `dist/evalvault_offline.tar.sha256`
97
+ - 산출물: `dist/evalvault_offline_<timestamp>.tar`
98
+ - 체크섬: `dist/evalvault_offline_<timestamp>.tar.sha256`
99
+
100
+ 파일명을 고정하려면 `OUTPUT_TAR`를 지정하세요.
101
+
102
+ ```bash
103
+ OUTPUT_TAR=dist/evalvault_offline_legacy.tar ./scripts/offline/export_images.sh
104
+ ```
105
+
106
+ 이미지 태그를 고정하려면 `.env.offline` 또는 환경 변수로 다음을 지정합니다.
107
+
108
+ - `EVALVAULT_PYTHON_IMAGE`
109
+ - `EVALVAULT_UV_IMAGE`
110
+ - `EVALVAULT_NODE_IMAGE`
111
+ - `EVALVAULT_NGINX_IMAGE`
112
+ - `POSTGRES_IMAGE` (옵션)
98
113
 
99
114
  Postgres 이미지를 함께 포함하려면:
100
115
 
@@ -114,6 +129,8 @@ INCLUDE_POSTGRES=1 ./scripts/offline/export_images.sh
114
129
  docker compose --env-file .env.offline -f docker-compose.offline.yml up -d
115
130
  ```
116
131
 
132
+ 주의: 폐쇄망에서는 외부 레지스트리 접근이 불가하므로, 반드시 `import_images.sh`로 이미지를 로드한 뒤 실행해야 합니다.
133
+
117
134
  - API: `http://localhost:8000`
118
135
  - Web UI: `http://localhost:8080`
119
136
 
@@ -2684,7 +2684,7 @@
2684
2684
  | `./prompts/system_override.txt` | Text | misc | lens:제품;type:소스 | 포함 | - | 2026-01-28T17:54:02 | read-full | last: 너는 정확한 지식 기반의 도우미다. 질문에 대해 간결하고 근거 중심으로 답하라. | Text text file: system_override.txt | 내부 |
2685
2685
  | `./pyproject.toml` | TOML | infra | lens:운영;type:설정 | 포함 | - | 2026-01-28T17:54:02 | read-full | last: upload_to_vcs_release = true | TOML text file: pyproject.toml | 내부 |
2686
2686
  | `./reports/.gitkeep` | File | reports | lens:QA;type:보고서 | 포함 | - | 2026-01-28T17:54:02 | binary-scan | size: 86 bytes | File binary file (86 bytes) | 내부 |
2687
- | `./reports/README.md` | Markdown | reports | lens:QA;type:보고서 | 포함 | - | 2026-01-28T17:54:02 | read-full | last: - \[STRUCTURE_REVIEW.md\](../STRUCTURE_REVIEW.md) - 프로젝트 구조 리뷰 | Markdown text file: Reports | 내부 |
2687
+ | `./reports/README.md` | Markdown | reports | lens:QA;type:보고서 | 포함 | - | 2026-01-28T17:54:02 | read-full | last: - STRUCTURE_REVIEW.md - 프로젝트 구조 리뷰 | Markdown text file: Reports | 내부 |
2688
2688
  | `./reports/analysis/analysis_0aa9fab0-6c2c-4c1c-b228-202a38a2f00c.json` | JSON | reports | pending | 제외 | 실행 산출물 디렉터리 | - | - | - | - | - |
2689
2689
  | `./reports/analysis/analysis_0aa9fab0-6c2c-4c1c-b228-202a38a2f00c.md` | Markdown | reports | pending | 제외 | 실행 산출물 디렉터리 | - | - | - | - | - |
2690
2690
  | `./reports/analysis/analysis_2163f844-ee2c-4630-9ba8-35cd9954d92e.json` | JSON | reports | pending | 제외 | 실행 산출물 디렉터리 | - | - | - | - | - |
@@ -1,6 +1,8 @@
1
1
  # syntax=docker/dockerfile:1
2
2
 
3
- FROM node:20-alpine AS build
3
+ ARG NODE_IMAGE=node:20.19-alpine
4
+ ARG NGINX_IMAGE=nginx:1.27.3-alpine
5
+ FROM ${NODE_IMAGE} AS build
4
6
 
5
7
  WORKDIR /app
6
8
 
@@ -10,7 +12,7 @@ RUN npm ci
10
12
  COPY . ./
11
13
  RUN npm run build
12
14
 
13
- FROM nginx:1.27-alpine
15
+ FROM ${NGINX_IMAGE}
14
16
 
15
17
  COPY nginx.conf /etc/nginx/conf.d/default.conf
16
18
  COPY --from=build /app/dist /usr/share/nginx/html
@@ -0,0 +1,89 @@
1
+ import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
2
+
3
+ type ToastVariant = "info" | "success" | "warning" | "error";
4
+
5
+ type ToastItem = {
6
+ id: string;
7
+ message: string;
8
+ variant: ToastVariant;
9
+ };
10
+
11
+ type ToastOptions = {
12
+ variant?: ToastVariant;
13
+ durationMs?: number;
14
+ };
15
+
16
+ type ToastContextValue = {
17
+ pushToast: (message: string, options?: ToastOptions) => void;
18
+ };
19
+
20
+ const ToastContext = createContext<ToastContextValue | null>(null);
21
+
22
+ export function ToastProvider({ children }: { children: React.ReactNode }) {
23
+ const [toasts, setToasts] = useState<ToastItem[]>([]);
24
+ const timersRef = useRef<Map<string, number>>(new Map());
25
+ const counterRef = useRef(0);
26
+
27
+ const removeToast = useCallback((id: string) => {
28
+ setToasts((prev) => prev.filter((toast) => toast.id !== id));
29
+ const timer = timersRef.current.get(id);
30
+ if (timer) {
31
+ window.clearTimeout(timer);
32
+ timersRef.current.delete(id);
33
+ }
34
+ }, []);
35
+
36
+ const pushToast = useCallback((message: string, options?: ToastOptions) => {
37
+ const id = `${Date.now()}-${counterRef.current++}`;
38
+ const variant = options?.variant ?? "info";
39
+ const durationMs = options?.durationMs ?? 2200;
40
+
41
+ setToasts((prev) => [...prev, { id, message, variant }]);
42
+ const timer = window.setTimeout(() => removeToast(id), durationMs);
43
+ timersRef.current.set(id, timer);
44
+ }, [removeToast]);
45
+
46
+ useEffect(() => () => {
47
+ timersRef.current.forEach((timer) => window.clearTimeout(timer));
48
+ timersRef.current.clear();
49
+ }, []);
50
+
51
+ const contextValue = useMemo(() => ({ pushToast }), [pushToast]);
52
+
53
+ return (
54
+ <ToastContext.Provider value={contextValue}>
55
+ {children}
56
+ <div className="fixed right-6 top-6 z-50 space-y-2">
57
+ {toasts.map((toast) => (
58
+ <div
59
+ key={toast.id}
60
+ className={`rounded-lg border px-3 py-2 text-xs shadow-md backdrop-blur bg-background/95 ${variantClass(toast.variant)}`}
61
+ >
62
+ {toast.message}
63
+ </div>
64
+ ))}
65
+ </div>
66
+ </ToastContext.Provider>
67
+ );
68
+ }
69
+
70
+ export function useToast() {
71
+ const context = useContext(ToastContext);
72
+ if (!context) {
73
+ throw new Error("useToast must be used within ToastProvider");
74
+ }
75
+ return context;
76
+ }
77
+
78
+ function variantClass(variant: ToastVariant) {
79
+ if (variant === "success") {
80
+ return "border-emerald-500/30 text-emerald-600 bg-emerald-500/10";
81
+ }
82
+ if (variant === "warning") {
83
+ return "border-amber-500/30 text-amber-600 bg-amber-500/10";
84
+ }
85
+ if (variant === "error") {
86
+ return "border-rose-500/30 text-rose-600 bg-rose-500/10";
87
+ }
88
+ return "border-border text-muted-foreground";
89
+ }
@@ -0,0 +1,282 @@
1
+ import { useEffect, useMemo, useState, type FormEvent } from "react";
2
+ import { MessageSquare } from "lucide-react";
3
+ import { useChat } from "@ai-sdk/react";
4
+ import { DefaultChatTransport, type UIMessage } from "ai";
5
+ import { Layout } from "../components/Layout";
6
+ import { Conversation, Message, PromptInput } from "../components/ai-elements";
7
+ import { fetchRuns, type RunSummary } from "../services/api";
8
+
9
+ type ChatDataParts = {
10
+ status: { message: string };
11
+ };
12
+
13
+ type ChatUiMessage = UIMessage<unknown, ChatDataParts>;
14
+
15
+ type ChatCategory = "dataset" | "analysis_method" | "result_interpretation" | "improvement_direction";
16
+
17
+ const categoryOptions: { value: ChatCategory; label: string; hint: string }[] = [
18
+ {
19
+ value: "dataset",
20
+ label: "데이터셋 질문",
21
+ hint: "데이터셋 구성/필드/전처리 관련",
22
+ },
23
+ {
24
+ value: "analysis_method",
25
+ label: "분석 방식",
26
+ hint: "메트릭/평가/분석 흐름 질문",
27
+ },
28
+ {
29
+ value: "result_interpretation",
30
+ label: "결과 해석",
31
+ hint: "특정 run 결과 요약/해석",
32
+ },
33
+ {
34
+ value: "improvement_direction",
35
+ label: "개선 방향",
36
+ hint: "특정 run 개선/다음 액션",
37
+ },
38
+ ];
39
+
40
+ const getMessageText = (message: ChatUiMessage) => {
41
+ return message.parts
42
+ .filter((part) => part.type === "text")
43
+ .map((part) => part.text)
44
+ .join("")
45
+ .trim();
46
+ };
47
+
48
+ export function AiSdkChat() {
49
+ const [input, setInput] = useState("");
50
+ const [statusMessage, setStatusMessage] = useState<string | null>(null);
51
+ const [runs, setRuns] = useState<RunSummary[]>([]);
52
+ const [runsError, setRunsError] = useState<string | null>(null);
53
+ const [runId, setRunId] = useState("");
54
+ const [category, setCategory] = useState<ChatCategory>("result_interpretation");
55
+
56
+ const trimmedRunId = runId.trim();
57
+ const selectedRun = useMemo(
58
+ () => runs.find((run) => run.run_id === trimmedRunId),
59
+ [runs, trimmedRunId]
60
+ );
61
+ const hasRun = Boolean(selectedRun);
62
+ const hasCases = (selectedRun?.total_test_cases ?? 0) > 0;
63
+ const hasMetrics = (selectedRun?.metrics_evaluated?.length ?? 0) > 0;
64
+ const isUnknownRun = Boolean(trimmedRunId) && !hasRun;
65
+
66
+ const categoryAvailability = useMemo(
67
+ () => ({
68
+ dataset: { enabled: true, reason: "" },
69
+ analysis_method: {
70
+ enabled: !trimmedRunId || hasMetrics,
71
+ reason: trimmedRunId && !hasMetrics ? "메트릭 정보 없음" : "",
72
+ },
73
+ result_interpretation: {
74
+ enabled: hasRun && hasCases,
75
+ reason: !trimmedRunId
76
+ ? "run 선택 필요"
77
+ : !hasRun
78
+ ? "run_id 확인 필요"
79
+ : "테스트 케이스 없음",
80
+ },
81
+ improvement_direction: {
82
+ enabled: hasRun && hasCases && hasMetrics,
83
+ reason: !trimmedRunId
84
+ ? "run 선택 필요"
85
+ : !hasRun
86
+ ? "run_id 확인 필요"
87
+ : !hasCases
88
+ ? "테스트 케이스 없음"
89
+ : "메트릭 정보 없음",
90
+ },
91
+ }),
92
+ [trimmedRunId, hasRun, hasCases, hasMetrics]
93
+ );
94
+
95
+ useEffect(() => {
96
+ if (categoryAvailability[category].enabled) {
97
+ return;
98
+ }
99
+ const next = categoryOptions.find((option) => categoryAvailability[option.value].enabled);
100
+ if (next) {
101
+ setCategory(next.value);
102
+ }
103
+ }, [category, categoryAvailability]);
104
+
105
+ useEffect(() => {
106
+ let active = true;
107
+ fetchRuns()
108
+ .then((items) => {
109
+ if (!active) return;
110
+ setRuns(items);
111
+ })
112
+ .catch((err) => {
113
+ if (!active) return;
114
+ setRunsError(err instanceof Error ? err.message : "run 목록을 불러오지 못했습니다.");
115
+ });
116
+ return () => {
117
+ active = false;
118
+ };
119
+ }, []);
120
+
121
+ const transport = useMemo(() => {
122
+ return new DefaultChatTransport({
123
+ api: "/api/v1/chat/ai-stream",
124
+ body: () => ({
125
+ run_id: trimmedRunId ? trimmedRunId : null,
126
+ category,
127
+ }),
128
+ });
129
+ }, [runId, category]);
130
+
131
+ const { messages, sendMessage, status, error, stop } = useChat<ChatUiMessage>({
132
+ transport,
133
+ onData: (dataPart) => {
134
+ if (dataPart.type === "data-status" && typeof dataPart.data.message === "string") {
135
+ setStatusMessage(dataPart.data.message);
136
+ }
137
+ },
138
+ onError: (err) => {
139
+ setStatusMessage(err.message);
140
+ },
141
+ });
142
+
143
+ const isLoading = status === "submitted" || status === "streaming";
144
+
145
+ const handleSubmit = (event: FormEvent<HTMLFormElement>) => {
146
+ event.preventDefault();
147
+ if (!input.trim() || isLoading) {
148
+ return;
149
+ }
150
+ if (!categoryAvailability[category].enabled) {
151
+ setStatusMessage("선택한 분류를 사용할 수 없습니다. 다른 분류를 선택해주세요.");
152
+ return;
153
+ }
154
+ const text = input.trim();
155
+ setInput("");
156
+ setStatusMessage(null);
157
+ sendMessage(
158
+ { text },
159
+ {
160
+ body: {
161
+ run_id: runId.trim() ? runId.trim() : null,
162
+ category,
163
+ },
164
+ }
165
+ );
166
+ };
167
+
168
+ const handleStop = () => {
169
+ stop();
170
+ };
171
+
172
+ return (
173
+ <Layout>
174
+ <div className="-m-4 lg:-m-8 flex h-[calc(100vh-6rem)] flex-col">
175
+ <div className="px-4 lg:px-8 pt-4 lg:pt-6">
176
+ <div className="rounded-2xl border border-border/60 bg-background/70 backdrop-blur-sm p-4 lg:p-5">
177
+ <div className="flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between">
178
+ <div className="text-sm text-muted-foreground">
179
+ <p className="font-semibold text-foreground">대상 run과 질문 분류를 먼저 선택하세요.</p>
180
+ <p className="text-xs">선택 정보는 서버에 함께 전송됩니다.</p>
181
+ </div>
182
+ {runsError && (
183
+ <div className="text-xs text-destructive">{runsError}</div>
184
+ )}
185
+ </div>
186
+ <div className="mt-4 grid gap-4 lg:grid-cols-2">
187
+ <div className="space-y-2">
188
+ <label className="text-xs font-semibold text-muted-foreground">run_id 선택</label>
189
+ <div className="flex flex-col gap-2">
190
+ <select
191
+ value={runId}
192
+ onChange={(event) => setRunId(event.target.value)}
193
+ className="w-full rounded-lg border border-border/60 bg-background/60 px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary/30"
194
+ >
195
+ <option value="">선택 안 함</option>
196
+ {runs.slice(0, 20).map((run) => (
197
+ <option key={run.run_id} value={run.run_id}>
198
+ {run.run_id} · {run.dataset_name} · {run.model_name}
199
+ </option>
200
+ ))}
201
+ </select>
202
+ <input
203
+ value={runId}
204
+ onChange={(event) => setRunId(event.target.value)}
205
+ placeholder="run_id를 직접 입력하세요"
206
+ className="w-full rounded-lg border border-border/60 bg-background/60 px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary/30"
207
+ />
208
+ </div>
209
+ </div>
210
+ <div className="space-y-2">
211
+ <label className="text-xs font-semibold text-muted-foreground">질문 분류</label>
212
+ <select
213
+ value={category}
214
+ onChange={(event) => setCategory(event.target.value as ChatCategory)}
215
+ className="w-full rounded-lg border border-border/60 bg-background/60 px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary/30"
216
+ >
217
+ {categoryOptions.map((option) => (
218
+ <option
219
+ key={option.value}
220
+ value={option.value}
221
+ disabled={!categoryAvailability[option.value].enabled}
222
+ >
223
+ {option.label}
224
+ {!categoryAvailability[option.value].enabled
225
+ ? ` · ${categoryAvailability[option.value].reason}`
226
+ : ""}
227
+ </option>
228
+ ))}
229
+ </select>
230
+ <p className="text-xs text-muted-foreground">
231
+ {categoryOptions.find((option) => option.value === category)?.hint}
232
+ </p>
233
+ {isUnknownRun && (
234
+ <p className="text-xs text-destructive">
235
+ 선택한 run_id가 목록에 없습니다. run 의존 분류는 비활성화됩니다.
236
+ </p>
237
+ )}
238
+ </div>
239
+ </div>
240
+ </div>
241
+ </div>
242
+ <div className="flex-1 relative bg-background/50">
243
+ {messages.length === 0 ? (
244
+ <div className="h-full flex flex-col items-center justify-center text-center p-8 space-y-4 opacity-70">
245
+ <div className="w-16 h-16 rounded-2xl bg-primary/10 flex items-center justify-center mb-4">
246
+ <MessageSquare className="w-8 h-8 text-primary" />
247
+ </div>
248
+ <h3 className="text-lg font-semibold text-foreground">AI SDK 채팅을 시작해보세요</h3>
249
+ <p className="text-sm text-muted-foreground max-w-sm">
250
+ AI SDK 스트리밍 프로토콜로 동작하는 챗봇입니다. 분석 결과 해석과 개선 아이디어를
251
+ 바로 질문해볼 수 있습니다.
252
+ </p>
253
+ </div>
254
+ ) : (
255
+ <Conversation>
256
+ {messages.map((msg) => {
257
+ const content = getMessageText(msg);
258
+ if (!content) {
259
+ return null;
260
+ }
261
+ const role = msg.role === "user" ? "user" : "assistant";
262
+ return <Message key={msg.id} role={role} content={content} />;
263
+ })}
264
+ {(statusMessage || error) && (
265
+ <div className="p-4 rounded-lg bg-secondary/60 border border-border/60 text-sm text-muted-foreground text-center">
266
+ {statusMessage ?? error?.message}
267
+ </div>
268
+ )}
269
+ </Conversation>
270
+ )}
271
+ </div>
272
+ <PromptInput
273
+ input={input}
274
+ handleInputChange={(event) => setInput(event.target.value)}
275
+ handleSubmit={handleSubmit}
276
+ isLoading={isLoading}
277
+ stop={handleStop}
278
+ />
279
+ </div>
280
+ </Layout>
281
+ );
282
+ }
@@ -352,6 +352,25 @@ export interface DebugReport {
352
352
  langfuse_trace_url?: string | null;
353
353
  }
354
354
 
355
+ export interface OpsReportResponse {
356
+ run_summary: Record<string, unknown>;
357
+ ops_kpis: {
358
+ total_test_cases?: number | null;
359
+ pass_rate?: number | null;
360
+ failure_rate?: number | null;
361
+ stage_error_rate?: number | null;
362
+ stage_error_severity?: "ok" | "warning" | "critical" | string | null;
363
+ duration_seconds?: number | null;
364
+ total_tokens?: number | null;
365
+ total_cost_usd?: number | null;
366
+ avg_latency_ms?: number | null;
367
+ p95_latency_ms?: number | null;
368
+ avg_tokens_per_case?: number | null;
369
+ avg_cost_per_case_usd?: number | null;
370
+ };
371
+ metadata?: Record<string, unknown>;
372
+ }
373
+
355
374
  export interface PromptDiffSummaryItem {
356
375
  role: string;
357
376
  base_checksum?: string | null;
@@ -832,6 +851,14 @@ export async function fetchDebugReportMarkdown(runId: string): Promise<Blob> {
832
851
  return response.blob();
833
852
  }
834
853
 
854
+ export async function fetchOpsReport(runId: string): Promise<OpsReportResponse> {
855
+ const response = await fetch(`${API_BASE_URL}/runs/${runId}/ops-report?format=json&save=false`);
856
+ if (!response.ok) {
857
+ throw new Error(`Failed to fetch ops report: ${response.statusText}`);
858
+ }
859
+ return response.json();
860
+ }
861
+
835
862
  export async function fetchPromptDiff(
836
863
  baseRunId: string,
837
864
  targetRunId: string,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "evalvault"
3
- version = "1.73.1"
3
+ version = "1.74.0"
4
4
  description = "RAG evaluation system using Ragas with Phoenix/Langfuse tracing"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # 베이스 이미지 export 스크립트
5
+ # 폐쇄망에서 빌드하기 위해 필요한 모든 베이스 이미지를 export합니다.
6
+
7
+ ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)
8
+ cd "$ROOT_DIR"
9
+
10
+ OUTPUT_TAR=${OUTPUT_TAR:-dist/evalvault_base_images.tar}
11
+ INCLUDE_POSTGRES=${INCLUDE_POSTGRES:-1}
12
+
13
+ # .env.offline에서 이미지 태그 읽기 (없으면 기본값 사용)
14
+ if [ -f .env.offline ]; then
15
+ source .env.offline
16
+ fi
17
+
18
+ BASE_IMAGES=(
19
+ "${EVALVAULT_PYTHON_IMAGE:-python:3.12.6-slim}"
20
+ "${EVALVAULT_UV_IMAGE:-ghcr.io/astral-sh/uv:0.4.28}"
21
+ "${EVALVAULT_NODE_IMAGE:-node:20.11-alpine}"
22
+ "${EVALVAULT_NGINX_IMAGE:-nginx:1.27.3-alpine}"
23
+ )
24
+
25
+ if [ "$INCLUDE_POSTGRES" = "1" ]; then
26
+ BASE_IMAGES+=("${POSTGRES_IMAGE:-postgres:16.4-alpine}")
27
+ fi
28
+
29
+ echo "다음 베이스 이미지들을 pull합니다:"
30
+ for img in "${BASE_IMAGES[@]}"; do
31
+ echo " - $img"
32
+ done
33
+
34
+ # 모든 베이스 이미지 pull
35
+ for img in "${BASE_IMAGES[@]}"; do
36
+ echo "Pulling $img..."
37
+ docker pull "$img"
38
+ done
39
+
40
+ # 이미지들을 하나의 tar 파일로 저장
41
+ mkdir -p "$(dirname "$OUTPUT_TAR")"
42
+ echo "베이스 이미지들을 저장합니다: $OUTPUT_TAR"
43
+ docker save -o "$OUTPUT_TAR" "${BASE_IMAGES[@]}"
44
+
45
+ # 체크섬 생성
46
+ sha256sum "$OUTPUT_TAR" > "${OUTPUT_TAR}.sha256"
47
+
48
+ echo ""
49
+ echo "✅ 완료!"
50
+ echo "저장된 파일: $OUTPUT_TAR"
51
+ echo "체크섬: ${OUTPUT_TAR}.sha256"
52
+ echo ""
53
+ echo "폐쇄망에서 로드하려면:"
54
+ echo " docker load -i $OUTPUT_TAR"