agentevals-cli 0.9.8__tar.gz → 0.9.10__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 (299) hide show
  1. agentevals_cli-0.9.10/.github/dependabot.yml +101 -0
  2. agentevals_cli-0.9.10/.github/workflows/ci.yml +139 -0
  3. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/.github/workflows/publish-evaluator-sdk.yml +2 -2
  4. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/.github/workflows/release.yml +15 -15
  5. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/Dockerfile +1 -1
  6. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/Makefile +8 -1
  7. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/PKG-INFO +4 -3
  8. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/docs/custom-evaluators.md +5 -1
  9. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/README.md +2 -0
  10. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/dice_agent/README.md +2 -7
  11. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/langchain_agent/README.md +3 -1
  12. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/packages/evaluator-sdk-py/README.md +2 -0
  13. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/pyproject.toml +4 -3
  14. agentevals_cli-0.9.10/src/agentevals/_static/assets/index-ClNj3OAl.js +349 -0
  15. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/_static/index.html +1 -1
  16. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/api/otlp_processing.py +12 -31
  17. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/extraction.py +7 -14
  18. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/loader/otlp.py +6 -21
  19. agentevals_cli-0.9.10/src/agentevals/otlp_anyvalue.py +118 -0
  20. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/trace_attrs.py +30 -0
  21. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_cli.py +27 -4
  22. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_extraction.py +124 -0
  23. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_otlp_loader.py +156 -0
  24. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_otlp_receiver.py +54 -0
  25. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/package-lock.json +490 -679
  26. agentevals_cli-0.9.10/ui/package.json +38 -0
  27. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/uv.lock +265 -224
  28. agentevals_cli-0.9.8/.github/workflows/ci.yml +0 -71
  29. agentevals_cli-0.9.8/src/agentevals/_static/assets/index-4Q_gYF8x.js +0 -341
  30. agentevals_cli-0.9.8/ui/package.json +0 -38
  31. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/.claude/skills/eval/SKILL.md +0 -0
  32. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/.claude/skills/eval/evals/evals.json +0 -0
  33. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/.claude/skills/inspect/SKILL.md +0 -0
  34. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/.claude/skills/inspect/evals/evals.json +0 -0
  35. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/.dockerignore +0 -0
  36. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  37. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  38. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  39. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/.gitignore +0 -0
  40. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/.mcp.json +0 -0
  41. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/CONTRIBUTING.md +0 -0
  42. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/DEVELOPMENT.md +0 -0
  43. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/LICENSE +0 -0
  44. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/README.md +0 -0
  45. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/charts/agentevals/Chart.yaml +0 -0
  46. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/charts/agentevals/templates/NOTES.txt +0 -0
  47. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/charts/agentevals/templates/_helpers.tpl +0 -0
  48. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/charts/agentevals/templates/deployment.yaml +0 -0
  49. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/charts/agentevals/templates/postgresql-secret.yaml +0 -0
  50. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/charts/agentevals/templates/postgresql.yaml +0 -0
  51. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/charts/agentevals/templates/rbac.yaml +0 -0
  52. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/charts/agentevals/templates/service.yaml +0 -0
  53. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/charts/agentevals/templates/serviceaccount.yaml +0 -0
  54. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/charts/agentevals/values.yaml +0 -0
  55. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/docs/assets/logo-color-on-transparent.svg +0 -0
  56. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/docs/assets/logo-color.png +0 -0
  57. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/docs/assets/logo-dark-on-transparent.svg +0 -0
  58. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/docs/eval-set-format.md +0 -0
  59. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/docs/otel-compatibility.md +0 -0
  60. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/docs/run-history.md +0 -0
  61. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/docs/streaming.md +0 -0
  62. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/custom_evaluators/eval_config.yaml +0 -0
  63. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/custom_evaluators/eval_config_openai_eval.yaml +0 -0
  64. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/custom_evaluators/response_quality.py +0 -0
  65. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/custom_evaluators/tool_call_checker.py +0 -0
  66. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/custom_sink/README.md +0 -0
  67. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/custom_sink/agentevals_example_custom_sink/__init__.py +0 -0
  68. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/custom_sink/agentevals_example_custom_sink/sink.py +0 -0
  69. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/custom_sink/pyproject.toml +0 -0
  70. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/dice_agent/agent.py +0 -0
  71. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/dice_agent/eval_set.json +0 -0
  72. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/dice_agent/main.py +0 -0
  73. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/dice_agent/test_streaming.py +0 -0
  74. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/kubernetes/README.md +0 -0
  75. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/langchain_agent/agent.py +0 -0
  76. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/langchain_agent/eval_set.json +0 -0
  77. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/langchain_agent/main.py +0 -0
  78. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/langchain_agent/requirements.txt +0 -0
  79. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/langchain_agent/test_streaming.py +0 -0
  80. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/sdk_example/async_example.py +0 -0
  81. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/sdk_example/context_manager_example.py +0 -0
  82. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/sdk_example/decorator_example.py +0 -0
  83. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/sdk_example/requirements.txt +0 -0
  84. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/strands_agent/agent.py +0 -0
  85. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/strands_agent/eval_set.json +0 -0
  86. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/strands_agent/main.py +0 -0
  87. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/strands_agent/requirements.txt +0 -0
  88. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/zero-code-examples/adk/requirements.txt +0 -0
  89. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/zero-code-examples/adk/run.py +0 -0
  90. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/zero-code-examples/langchain/requirements.txt +0 -0
  91. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/zero-code-examples/langchain/run.py +0 -0
  92. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/zero-code-examples/ollama/requirements.txt +0 -0
  93. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/zero-code-examples/ollama/run.py +0 -0
  94. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/zero-code-examples/openai-agents/requirements.txt +0 -0
  95. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/zero-code-examples/openai-agents/run.py +0 -0
  96. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/zero-code-examples/pydantic-ai/requirements.txt +0 -0
  97. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/zero-code-examples/pydantic-ai/run.py +0 -0
  98. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/zero-code-examples/strands/requirements.txt +0 -0
  99. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/examples/zero-code-examples/strands/run.py +0 -0
  100. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/flake.lock +0 -0
  101. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/flake.nix +0 -0
  102. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/packages/evaluator-sdk-py/pyproject.toml +0 -0
  103. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/packages/evaluator-sdk-py/src/agentevals_evaluator_sdk/__init__.py +0 -0
  104. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/packages/evaluator-sdk-py/src/agentevals_evaluator_sdk/decorator.py +0 -0
  105. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/packages/evaluator-sdk-py/src/agentevals_evaluator_sdk/types.py +0 -0
  106. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/samples/eval_set_helm.json +0 -0
  107. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/samples/evalset_helm_3_2026-02-23.json +0 -0
  108. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/samples/evalset_k8s_2026-02-20.json +0 -0
  109. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/samples/helm.json +0 -0
  110. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/samples/helm_2.json +0 -0
  111. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/samples/helm_3.json +0 -0
  112. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/samples/k8s.json +0 -0
  113. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/samples/tempo_export_with_batches.json +0 -0
  114. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/__init__.py +0 -0
  115. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/_protocol.py +0 -0
  116. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/_static/assets/index-BqibLiHO.css +0 -0
  117. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/_static/logo.svg +0 -0
  118. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/_static/vite.svg +0 -0
  119. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/api/__init__.py +0 -0
  120. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/api/app.py +0 -0
  121. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/api/debug_routes.py +0 -0
  122. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/api/dependencies.py +0 -0
  123. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/api/models.py +0 -0
  124. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/api/otlp_app.py +0 -0
  125. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/api/otlp_grpc.py +0 -0
  126. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/api/otlp_routes.py +0 -0
  127. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/api/routes.py +0 -0
  128. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/api/runs_routes.py +0 -0
  129. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/api/streaming_routes.py +0 -0
  130. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/builtin_metrics.py +0 -0
  131. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/cli.py +0 -0
  132. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/config.py +0 -0
  133. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/converter.py +0 -0
  134. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/custom_evaluators.py +0 -0
  135. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/eval_config_loader.py +0 -0
  136. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/evaluator/__init__.py +0 -0
  137. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/evaluator/resolver.py +0 -0
  138. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/evaluator/sources.py +0 -0
  139. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/evaluator/templates.py +0 -0
  140. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/evaluator/venv.py +0 -0
  141. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/genai_converter.py +0 -0
  142. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/loader/__init__.py +0 -0
  143. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/loader/auto.py +0 -0
  144. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/loader/base.py +0 -0
  145. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/loader/jaeger.py +0 -0
  146. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/mcp_server.py +0 -0
  147. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/openai_eval_backend.py +0 -0
  148. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/output.py +0 -0
  149. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/resolvers/__init__.py +0 -0
  150. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/resolvers/kubernetes.py +0 -0
  151. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/run/__init__.py +0 -0
  152. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/run/fetcher.py +0 -0
  153. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/run/result_builder.py +0 -0
  154. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/run/service.py +0 -0
  155. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/run/sinks.py +0 -0
  156. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/run/worker.py +0 -0
  157. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/runner.py +0 -0
  158. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/sdk.py +0 -0
  159. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/storage/__init__.py +0 -0
  160. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/storage/config.py +0 -0
  161. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/storage/models.py +0 -0
  162. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/storage/postgres/__init__.py +0 -0
  163. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/storage/postgres/migrations/000001_init.down.sql +0 -0
  164. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/storage/postgres/migrations/000001_init.up.sql +0 -0
  165. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/storage/postgres/migrator.py +0 -0
  166. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/storage/postgres/pool.py +0 -0
  167. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/storage/repos/__init__.py +0 -0
  168. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/storage/repos/memory.py +0 -0
  169. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/storage/repos/postgres.py +0 -0
  170. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/streaming/__init__.py +0 -0
  171. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/streaming/exports.py +0 -0
  172. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/streaming/incremental_processor.py +0 -0
  173. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/streaming/processor.py +0 -0
  174. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/streaming/session.py +0 -0
  175. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/streaming/ws_server.py +0 -0
  176. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/trace_metrics.py +0 -0
  177. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/utils/__init__.py +0 -0
  178. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/utils/genai_messages.py +0 -0
  179. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/utils/log_buffer.py +0 -0
  180. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/src/agentevals/utils/log_enrichment.py +0 -0
  181. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/api/__init__.py +0 -0
  182. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/api/test_evaluate_persistence.py +0 -0
  183. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/api/test_runs_routes.py +0 -0
  184. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/integration/__init__.py +0 -0
  185. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/integration/conftest.py +0 -0
  186. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/integration/test_evaluation_pipeline.py +0 -0
  187. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/integration/test_live_agents.py +0 -0
  188. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/integration/test_otlp_grpc_receiver.py +0 -0
  189. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/integration/test_session_grouping.py +0 -0
  190. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/integration/test_timing_stress.py +0 -0
  191. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/resolvers/__init__.py +0 -0
  192. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/resolvers/test_kubernetes.py +0 -0
  193. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/resolvers/test_registry.py +0 -0
  194. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/run/__init__.py +0 -0
  195. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/run/test_fetcher.py +0 -0
  196. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/run/test_result_builder.py +0 -0
  197. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/run/test_service.py +0 -0
  198. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/run/test_sinks.py +0 -0
  199. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/storage/__init__.py +0 -0
  200. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/storage/test_config.py +0 -0
  201. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/storage/test_memory_repos.py +0 -0
  202. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/storage/test_migrator.py +0 -0
  203. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/storage/test_models.py +0 -0
  204. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_api.py +0 -0
  205. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_converter.py +0 -0
  206. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_credential_injection.py +0 -0
  207. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_eval_config_loader.py +0 -0
  208. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_genai_converter.py +0 -0
  209. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_incremental_processor.py +0 -0
  210. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_jaeger_loader.py +0 -0
  211. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_loader_auto.py +0 -0
  212. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_log_enrichment.py +0 -0
  213. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_mcp_server.py +0 -0
  214. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_openai_eval_backend.py +0 -0
  215. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_output.py +0 -0
  216. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_protocol.py +0 -0
  217. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_runner.py +0 -0
  218. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_sdk.py +0 -0
  219. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/tests/test_trace_metrics.py +0 -0
  220. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/.gitignore +0 -0
  221. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/README.md +0 -0
  222. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/eslint.config.js +0 -0
  223. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/index.html +0 -0
  224. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/public/logo.svg +0 -0
  225. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/public/vite.svg +0 -0
  226. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/App.css +0 -0
  227. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/App.tsx +0 -0
  228. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/api/client.ts +0 -0
  229. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/assets/react.svg +0 -0
  230. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/annotation-queue/AnnotationDetailPanel.tsx +0 -0
  231. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/annotation-queue/AnnotationQueueView.tsx +0 -0
  232. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/annotation-queue/AnnotationTable.tsx +0 -0
  233. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/bug-report/BugReportModal.tsx +0 -0
  234. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/builder/BuilderHeader.tsx +0 -0
  235. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/builder/BuilderView.tsx +0 -0
  236. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/builder/EvalCaseCard.tsx +0 -0
  237. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/builder/EvalCasesList.tsx +0 -0
  238. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/builder/InvocationEditor.tsx +0 -0
  239. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/builder/JsonPreview.tsx +0 -0
  240. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/builder/MetadataEditor.tsx +0 -0
  241. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/builder/TraceUploadZone.tsx +0 -0
  242. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/builder/index.ts +0 -0
  243. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/dashboard/DashboardView.tsx +0 -0
  244. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/dashboard/MetricScoreCard.tsx +0 -0
  245. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/dashboard/PerformanceCard.tsx +0 -0
  246. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/dashboard/PerformanceCharts.tsx +0 -0
  247. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/dashboard/SummaryStats.tsx +0 -0
  248. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/dashboard/TraceCard.tsx +0 -0
  249. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/dashboard/TraceTable.tsx +0 -0
  250. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/inspector/ComparisonPanel.tsx +0 -0
  251. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/inspector/DataSection.tsx +0 -0
  252. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/inspector/InspectorHeader.tsx +0 -0
  253. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/inspector/InspectorLayout.tsx +0 -0
  254. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/inspector/InspectorView.tsx +0 -0
  255. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/inspector/InvocationCard.tsx +0 -0
  256. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/inspector/InvocationSummaryPanel.tsx +0 -0
  257. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/inspector/MetricResultsSection.tsx +0 -0
  258. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/inspector/MetricsComparisonSection.tsx +0 -0
  259. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/inspector/PerformanceSection.tsx +0 -0
  260. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/inspector/ToolCallList.tsx +0 -0
  261. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/inspector/TrajectoryComparisonDetails.tsx +0 -0
  262. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/runs/PassRateTrendChart.tsx +0 -0
  263. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/runs/PerMetricTrendChart.tsx +0 -0
  264. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/runs/RunDetailView.tsx +0 -0
  265. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/runs/RunsHistoryTable.tsx +0 -0
  266. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/runs/RunsView.tsx +0 -0
  267. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/runs/runHistory.ts +0 -0
  268. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/sidebar/Sidebar.tsx +0 -0
  269. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/streaming/LiveConversationPanel.tsx +0 -0
  270. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/streaming/LiveMessage.tsx +0 -0
  271. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/streaming/LiveStreamingView.tsx +0 -0
  272. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/streaming/SessionCard.tsx +0 -0
  273. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/streaming/SessionMetadata.tsx +0 -0
  274. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/upload/EvalSetEditorDrawer.tsx +0 -0
  275. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/upload/FileDropZone.tsx +0 -0
  276. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/upload/MetricSelector.tsx +0 -0
  277. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/upload/RawJsonPreview.tsx +0 -0
  278. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/upload/TraceEditorDrawer.tsx +0 -0
  279. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/upload/UploadView.tsx +0 -0
  280. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/components/welcome/WelcomeView.tsx +0 -0
  281. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/config.ts +0 -0
  282. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/context/TraceContext.tsx +0 -0
  283. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/context/TraceProvider.tsx +0 -0
  284. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/index.css +0 -0
  285. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/lib/console-capture.ts +0 -0
  286. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/lib/eval-config.ts +0 -0
  287. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/lib/evalset-builder.ts +0 -0
  288. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/lib/network-capture.ts +0 -0
  289. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/lib/trace-helpers.ts +0 -0
  290. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/lib/trace-loader.ts +0 -0
  291. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/lib/trace-metadata.ts +0 -0
  292. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/lib/trace-patcher.ts +0 -0
  293. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/lib/types.ts +0 -0
  294. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/lib/utils.ts +0 -0
  295. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/src/main.tsx +0 -0
  296. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/tsconfig.app.json +0 -0
  297. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/tsconfig.json +0 -0
  298. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/tsconfig.node.json +0 -0
  299. {agentevals_cli-0.9.8 → agentevals_cli-0.9.10}/ui/vite.config.ts +0 -0
@@ -0,0 +1,101 @@
1
+ version: 2
2
+
3
+ updates:
4
+ - package-ecosystem: "github-actions"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "weekly"
8
+ day: "monday"
9
+ open-pull-requests-limit: 2
10
+ labels: ["dependencies", "CI"]
11
+ commit-message:
12
+ prefix: "chore(deps):"
13
+ cooldown:
14
+ default-days: 5
15
+ groups:
16
+ github-actions:
17
+ applies-to: version-updates
18
+ patterns: ["*"]
19
+ github-actions-security:
20
+ applies-to: security-updates
21
+ patterns: ["*"]
22
+
23
+ - package-ecosystem: "uv"
24
+ directory: "/"
25
+ schedule:
26
+ interval: "weekly"
27
+ day: "monday"
28
+ open-pull-requests-limit: 3
29
+ labels: ["dependencies", "CLI"]
30
+ commit-message:
31
+ prefix: "chore(deps):"
32
+ prefix-development: "chore(deps-dev):"
33
+ cooldown:
34
+ default-days: 5
35
+ semver-major-days: 14
36
+ groups:
37
+ python-google-ai:
38
+ applies-to: version-updates
39
+ patterns:
40
+ - "google-adk"
41
+ - "google-genai"
42
+ - "google-auth*"
43
+ python:
44
+ applies-to: version-updates
45
+ patterns: ["*"]
46
+ python-security:
47
+ applies-to: security-updates
48
+ patterns: ["*"]
49
+
50
+ - package-ecosystem: "npm"
51
+ directory: "/ui"
52
+ schedule:
53
+ interval: "weekly"
54
+ day: "monday"
55
+ open-pull-requests-limit: 2
56
+ labels: ["dependencies", "UI"]
57
+ commit-message:
58
+ prefix: "chore(deps):"
59
+ prefix-development: "chore(deps-dev):"
60
+ cooldown:
61
+ default-days: 5
62
+ semver-major-days: 14
63
+ ignore:
64
+ # Majors need a migration pass; bump these by hand.
65
+ - dependency-name: "react"
66
+ update-types: ["version-update:semver-major"]
67
+ - dependency-name: "react-dom"
68
+ update-types: ["version-update:semver-major"]
69
+ - dependency-name: "antd"
70
+ update-types: ["version-update:semver-major"]
71
+ - dependency-name: "vite"
72
+ update-types: ["version-update:semver-major"]
73
+ # Plugin majors track vite majors: @vitejs/plugin-react 6 peers on vite 8.
74
+ - dependency-name: "@vitejs/*"
75
+ update-types: ["version-update:semver-major"]
76
+ # typescript-eslint declares a typescript upper bound, so TS majors move with it.
77
+ - dependency-name: "typescript"
78
+ update-types: ["version-update:semver-major"]
79
+ groups:
80
+ npm:
81
+ applies-to: version-updates
82
+ patterns: ["*"]
83
+ npm-security:
84
+ applies-to: security-updates
85
+ patterns: ["*"]
86
+
87
+ - package-ecosystem: "docker"
88
+ directory: "/"
89
+ schedule:
90
+ interval: "weekly"
91
+ day: "monday"
92
+ open-pull-requests-limit: 1
93
+ labels: ["dependencies"]
94
+ commit-message:
95
+ prefix: "chore(deps):"
96
+ cooldown:
97
+ default-days: 5
98
+ groups:
99
+ docker-base-images:
100
+ applies-to: version-updates
101
+ patterns: ["*"]
@@ -0,0 +1,139 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [main]
6
+ push:
7
+ branches: [main]
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ helm-chart:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
17
+
18
+ - name: Lint + template
19
+ run: make helm-test
20
+
21
+ lint:
22
+ runs-on: ubuntu-latest
23
+ steps:
24
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
25
+ with:
26
+ fetch-depth: 0
27
+
28
+ - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
29
+ with:
30
+ enable-cache: true
31
+
32
+ - name: Verify uv.lock matches pyproject.toml
33
+ run: uv lock --check
34
+
35
+ - name: Install dependencies
36
+ run: |
37
+ uv venv
38
+ uv pip install setuptools
39
+ uv sync --dev
40
+
41
+ - name: Ruff check
42
+ run: uv run ruff check .
43
+
44
+ - name: Ruff format check
45
+ run: uv run ruff format --check .
46
+
47
+ ui:
48
+ runs-on: ubuntu-latest
49
+ steps:
50
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
51
+
52
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
53
+ with:
54
+ node-version: '22'
55
+ cache: npm
56
+ cache-dependency-path: ui/package-lock.json
57
+
58
+ # tsc -b && vite build, same as the release workflow bundles.
59
+ - name: Build UI
60
+ run: make build-ui
61
+
62
+ docker:
63
+ runs-on: ubuntu-latest
64
+ permissions:
65
+ contents: read
66
+ env:
67
+ IMAGE_REF: agentevals:ci
68
+ IMAGE_VERSION: 0.0.0.dev0
69
+ steps:
70
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
71
+
72
+ - uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
73
+
74
+ # The release workflow is the only other place this Dockerfile gets built, and it
75
+ # runs after the GitHub release is already published. Build it here so a break
76
+ # lands on the PR instead of halfway through a release.
77
+ # Single-arch keeps it native; the multi-arch build stays release-only because
78
+ # emulating arm64 through the node and uv layers is an order of magnitude slower.
79
+ - name: Build image
80
+ uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
81
+ with:
82
+ context: .
83
+ platforms: linux/amd64
84
+ build-args: VERSION=${{ env.IMAGE_VERSION }}
85
+ tags: ${{ env.IMAGE_REF }}
86
+ push: false
87
+ load: true
88
+ cache-from: type=gha
89
+ # Pull requests read main's layers but never write, so a branch cannot grow
90
+ # or displace the cache the other jobs share.
91
+ cache-to: ${{ github.event_name == 'push' && 'type=gha,mode=max' || '' }}
92
+
93
+ - name: Smoke test
94
+ run: |
95
+ docker run -d --name agentevals-ci -p 127.0.0.1:8001:8001 "$IMAGE_REF"
96
+ for _ in $(seq 1 30); do
97
+ if curl -fsS --max-time 3 http://127.0.0.1:8001/api/health -o "$RUNNER_TEMP/health.json"; then
98
+ break
99
+ fi
100
+ sleep 2
101
+ done
102
+ test -s "$RUNNER_TEMP/health.json" || { echo "server never became healthy"; exit 1; }
103
+ cat "$RUNNER_TEMP/health.json"
104
+ grep -q '"status":"ok"' "$RUNNER_TEMP/health.json"
105
+ # Proves the SETUPTOOLS_SCM_PRETEND_VERSION path still resolves; a silent
106
+ # break there would ship a mis-versioned image.
107
+ grep -q "\"version\":\"$IMAGE_VERSION\"" "$RUNNER_TEMP/health.json"
108
+ curl -fsS http://127.0.0.1:8001/ | grep -q '<div id="root">'
109
+ test "$(docker exec agentevals-ci id -u)" = "1000"
110
+
111
+ - name: Container logs
112
+ if: failure()
113
+ run: docker logs agentevals-ci
114
+
115
+ test:
116
+ runs-on: ubuntu-latest
117
+ strategy:
118
+ matrix:
119
+ python-version: ["3.11", "3.12", "3.13"]
120
+ steps:
121
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
122
+ with:
123
+ fetch-depth: 0
124
+
125
+ - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
126
+ with:
127
+ enable-cache: true
128
+
129
+ - name: Install Python ${{ matrix.python-version }}
130
+ run: uv python install ${{ matrix.python-version }}
131
+
132
+ - name: Install dependencies
133
+ run: |
134
+ uv venv --python ${{ matrix.python-version }}
135
+ uv pip install setuptools
136
+ uv sync --dev --all-extras --frozen --python ${{ matrix.python-version }}
137
+
138
+ - name: Run tests
139
+ run: uv run pytest -m "not integration and not e2e" --tb=short -q
@@ -18,12 +18,12 @@ jobs:
18
18
  runs-on: ubuntu-latest
19
19
  steps:
20
20
  - name: 'Checkout GitHub Action'
21
- uses: actions/checkout@v6
21
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
22
22
  with:
23
23
  fetch-depth: 0
24
24
 
25
25
  - name: Install uv
26
- uses: astral-sh/setup-uv@v6
26
+ uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
27
27
 
28
28
  # Repo root cwd: uv build puts artifacts in ./dist; uv publish looks for dist/* relative to cwd.
29
29
  - name: 'Release Python Packages'
@@ -17,16 +17,16 @@ jobs:
17
17
  build:
18
18
  runs-on: ubuntu-latest
19
19
  steps:
20
- - uses: actions/checkout@v6
20
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
21
21
  with:
22
22
  ref: ${{ github.event.inputs.tag || github.ref_name }}
23
23
  fetch-depth: 0
24
24
 
25
- - uses: astral-sh/setup-uv@v7
25
+ - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
26
26
  with:
27
27
  enable-cache: true
28
28
 
29
- - uses: actions/setup-node@v6
29
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
30
30
  with:
31
31
  node-version: '22'
32
32
  cache: npm
@@ -35,7 +35,7 @@ jobs:
35
35
  - name: Build core and bundled wheels
36
36
  run: make release
37
37
 
38
- - uses: actions/upload-artifact@v7
38
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
39
39
  with:
40
40
  name: wheels
41
41
  path: |
@@ -46,16 +46,16 @@ jobs:
46
46
  needs: build
47
47
  runs-on: ubuntu-latest
48
48
  steps:
49
- - uses: actions/checkout@v6
49
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
50
50
  with:
51
51
  ref: ${{ github.event.inputs.tag || github.ref_name }}
52
52
  fetch-depth: 0
53
53
 
54
- - uses: astral-sh/setup-uv@v7
54
+ - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
55
55
  with:
56
56
  enable-cache: true
57
57
 
58
- - uses: actions/setup-node@v6
58
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
59
59
  with:
60
60
  node-version: '22'
61
61
  cache: npm
@@ -82,12 +82,12 @@ jobs:
82
82
  contents: write
83
83
 
84
84
  steps:
85
- - uses: actions/download-artifact@v8
85
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
86
86
  with:
87
87
  name: wheels
88
88
  path: dist/
89
89
 
90
- - uses: softprops/action-gh-release@v2.5.0
90
+ - uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
91
91
  with:
92
92
  tag_name: ${{ github.event.inputs.tag || github.ref_name }}
93
93
  files: dist/**/*.whl
@@ -100,22 +100,22 @@ jobs:
100
100
  contents: read
101
101
  packages: write
102
102
  steps:
103
- - uses: actions/checkout@v6
103
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
104
104
  with:
105
105
  ref: ${{ github.event.inputs.tag || github.ref_name }}
106
106
 
107
107
  - name: Login to GitHub Container Registry
108
- uses: docker/login-action@v4
108
+ uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
109
109
  with:
110
110
  registry: ghcr.io
111
111
  username: ${{ github.actor }}
112
112
  password: ${{ secrets.GITHUB_TOKEN }}
113
113
 
114
114
  - name: Set up QEMU
115
- uses: docker/setup-qemu-action@v4
115
+ uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
116
116
 
117
117
  - name: Set up Docker Buildx
118
- uses: docker/setup-buildx-action@v4
118
+ uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
119
119
 
120
120
  - name: Build and push
121
121
  run: |
@@ -134,12 +134,12 @@ jobs:
134
134
  contents: read
135
135
  packages: write
136
136
  steps:
137
- - uses: actions/checkout@v6
137
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
138
138
  with:
139
139
  ref: ${{ github.event.inputs.tag || github.ref_name }}
140
140
 
141
141
  - name: Login to GitHub Container Registry
142
- uses: docker/login-action@v4
142
+ uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
143
143
  with:
144
144
  registry: ghcr.io
145
145
  username: ${{ github.actor }}
@@ -1,6 +1,6 @@
1
1
  # syntax=docker/dockerfile:1
2
2
 
3
- FROM node:25-bookworm-slim AS ui
3
+ FROM node:26-bookworm-slim AS ui
4
4
  WORKDIR /build/ui
5
5
  COPY ui/package.json ui/package-lock.json ./
6
6
  # Skip lifecycle scripts during ci, then rebuild esbuild in its own layer — avoids ETXTBSY when
@@ -9,13 +9,17 @@ DOCKER_IMAGE_REF := $(if $(DOCKER_REGISTRY),$(DOCKER_REGISTRY:%/=%)/$(DOCKER_IMA
9
9
  # Multi-arch build (requires docker buildx). Manifest lists must be pushed — use build-docker-local for a single-arch --load.
10
10
  PLATFORMS ?= linux/amd64,linux/arm64
11
11
 
12
+ # LOCAL_VERSION falls back to a stub so build-docker-local works without uv or git history.
13
+ LOCAL_VERSION ?= $(if $(VERSION),$(VERSION),0.0.0.dev0)
14
+ LOCAL_TAG ?= local
15
+
12
16
  HELM_REPO ?= oci://ghcr.io/agentevals-dev/agentevals
13
17
  HELM_DIST_FOLDER ?= dist/helm
14
18
  HELM_CHART_DIR ?= charts/agentevals
15
19
  HELM_CHART_OCI_URL ?= $(HELM_REPO)/helm
16
20
  HELM_CHART_VERSION ?= $(VERSION)
17
21
 
18
- .PHONY: build build-bundle build-docker build-ui release clean dev-backend dev-backend-pg dev-frontend dev-bundle pg-up pg-down migrate test test-unit test-integration test-e2e helm-lint helm-template helm-test helm-cleanup helm-package helm-publish
22
+ .PHONY: build build-bundle build-docker build-docker-local build-ui release clean dev-backend dev-backend-pg dev-frontend dev-bundle pg-up pg-down migrate test test-unit test-integration test-e2e helm-lint helm-template helm-test helm-cleanup helm-package helm-publish
19
23
 
20
24
  PG_CONTAINER ?= agentevals-pg
21
25
  PG_PORT ?= 5432
@@ -31,6 +35,9 @@ build-docker:
31
35
  @test -n "$(VERSION)" || { echo "ERROR: VERSION is empty. Pass VERSION=x.y.z explicitly, or install uv so hatch-vcs can resolve it."; exit 1; }
32
36
  docker buildx build --platform $(PLATFORMS) --build-arg VERSION=$(VERSION) -t $(DOCKER_IMAGE_REF):$(DOCKER_TAG) --push .
33
37
 
38
+ build-docker-local:
39
+ docker buildx build --build-arg VERSION=$(LOCAL_VERSION) -t $(DOCKER_IMAGE_REF):$(LOCAL_TAG) --load .
40
+
34
41
  build-ui:
35
42
  cd ui && npm ci && npm run build
36
43
 
@@ -1,20 +1,21 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentevals-cli
3
- Version: 0.9.8
3
+ Version: 0.9.10
4
4
  Summary: Standalone framework to evaluate agent correctness based on portable OpenTelemetry traces
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.11
7
7
  Requires-Dist: aiohttp>=3.14.3
8
8
  Requires-Dist: authlib>=1.7.2
9
- Requires-Dist: click>=8.0
9
+ Requires-Dist: click>=8.3.3
10
10
  Requires-Dist: fastapi>=0.115.0
11
- Requires-Dist: google-adk[eval]<2.2,>=2.1.0
11
+ Requires-Dist: google-adk[eval]<3,>=2.5.0
12
12
  Requires-Dist: httpx>=0.27.0
13
13
  Requires-Dist: idna>=3.18
14
14
  Requires-Dist: litellm>=1.85.7
15
15
  Requires-Dist: nltk>=3.10.2
16
16
  Requires-Dist: opentelemetry-proto>=1.36.0
17
17
  Requires-Dist: pyasn1>=0.6.4
18
+ Requires-Dist: pygments>=2.20.0
18
19
  Requires-Dist: python-dotenv>=1.2.2
19
20
  Requires-Dist: python-multipart>=0.0.32
20
21
  Requires-Dist: pyyaml>=6.0
@@ -37,6 +37,7 @@ pip install agentevals-evaluator-sdk
37
37
  # evaluators/response_quality.py
38
38
  from agentevals_evaluator_sdk import evaluator, EvalInput, EvalResult
39
39
 
40
+
40
41
  @evaluator
41
42
  def response_quality(input: EvalInput) -> EvalResult:
42
43
  scores = []
@@ -53,6 +54,7 @@ def response_quality(input: EvalInput) -> EvalResult:
53
54
  per_invocation_scores=scores,
54
55
  )
55
56
 
57
+
56
58
  if __name__ == "__main__":
57
59
  response_quality.run()
58
60
  ```
@@ -436,7 +438,7 @@ Then register it:
436
438
  _RUNTIMES: list[Runtime] = [
437
439
  PythonRuntime(),
438
440
  NodeRuntime(),
439
- GoRuntime(), # new
441
+ GoRuntime(), # new
440
442
  ]
441
443
  ```
442
444
 
@@ -484,6 +486,7 @@ To support a different evaluator registry (e.g., a custom API), implement `Evalu
484
486
  ```python
485
487
  from agentevals.evaluator.sources import EvaluatorSource, EvaluatorInfo, register_source
486
488
 
489
+
487
490
  class MyRegistrySource(EvaluatorSource):
488
491
  @property
489
492
  def source_name(self) -> str:
@@ -492,6 +495,7 @@ class MyRegistrySource(EvaluatorSource):
492
495
  async def list_evaluators(self) -> list[EvaluatorInfo]: ...
493
496
  async def fetch_evaluator(self, ref: str, dest: Path) -> Path: ...
494
497
 
498
+
495
499
  register_source(MyRegistrySource())
496
500
  ```
497
501
 
@@ -69,10 +69,12 @@ For simple prompt-to-response agents, there's also a decorator shorthand:
69
69
  ```python
70
70
  app = AgentEvals(eval_set_id="my-eval")
71
71
 
72
+
72
73
  @app.agent
73
74
  def my_agent(prompt):
74
75
  return llm.invoke(prompt).content
75
76
 
77
+
76
78
  app.run(["Hello!", "Tell me a joke"])
77
79
  ```
78
80
 
@@ -89,13 +89,8 @@ Add a new tool in `agent.py`:
89
89
  def roll_multiple(count: int, sides: int = 6) -> dict:
90
90
  """Roll multiple dice at once."""
91
91
  results = [random.randint(1, sides) for _ in range(count)]
92
- return {
93
- "count": count,
94
- "sides": sides,
95
- "results": results,
96
- "total": sum(results),
97
- "average": sum(results) / count
98
- }
92
+ return {"count": count, "sides": sides, "results": results, "total": sum(results), "average": sum(results) / count}
93
+
99
94
 
100
95
  dice_agent = Agent(
101
96
  name="dice_agent",
@@ -145,7 +145,7 @@ os.environ["OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT"] = "true"
145
145
 
146
146
  ```python
147
147
  tracer_provider = TracerProvider() # For spans
148
- logger_provider = LoggerProvider() # For logs
148
+ logger_provider = LoggerProvider() # For logs
149
149
  ```
150
150
 
151
151
  **Both are required** - spans provide metadata, logs provide message content.
@@ -164,10 +164,12 @@ The log processor shares the WebSocket connection from the span processor.
164
164
  ```python
165
165
  loop = asyncio.new_event_loop()
166
166
 
167
+
167
168
  def run_loop_in_background():
168
169
  asyncio.set_event_loop(loop)
169
170
  loop.run_forever()
170
171
 
172
+
171
173
  thread = threading.Thread(target=run_loop_in_background, daemon=True)
172
174
  thread.start()
173
175
  ```
@@ -15,6 +15,7 @@ pip install agentevals-evaluator-sdk
15
15
  ```python
16
16
  from agentevals_evaluator_sdk import evaluator, EvalInput, EvalResult
17
17
 
18
+
18
19
  @evaluator
19
20
  def my_evaluator(input: EvalInput) -> EvalResult:
20
21
  scores = []
@@ -27,6 +28,7 @@ def my_evaluator(input: EvalInput) -> EvalResult:
27
28
  per_invocation_scores=scores,
28
29
  )
29
30
 
31
+
30
32
  if __name__ == "__main__":
31
33
  my_evaluator.run()
32
34
  ```
@@ -9,8 +9,8 @@ description = "Standalone framework to evaluate agent correctness based on porta
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
11
11
  dependencies = [
12
- "google-adk[eval]>=2.1.0,<2.2",
13
- "click>=8.0",
12
+ "google-adk[eval]>=2.5.0,<3",
13
+ "click>=8.3.3",
14
14
  "tabulate>=0.9.0",
15
15
  "fastapi>=0.115.0",
16
16
  "uvicorn[standard]>=0.32.0",
@@ -28,6 +28,7 @@ dependencies = [
28
28
  "litellm>=1.85.7",
29
29
  "nltk>=3.10.2",
30
30
  "pyasn1>=0.6.4",
31
+ "pygments>=2.20.0",
31
32
  "requests>=2.34.2",
32
33
  "urllib3>=2.7.0",
33
34
  ]
@@ -83,7 +84,7 @@ asyncio_mode = "auto"
83
84
 
84
85
  [dependency-groups]
85
86
  dev = [
86
- "pytest>=9.0.2",
87
+ "pytest>=9.0.3",
87
88
  "pytest-asyncio>=0.24.0",
88
89
  "httpx>=0.27.0",
89
90
  "ruff>=0.11.0",