agentops-accelerator 0.5.0__tar.gz → 0.5.2__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 (325) hide show
  1. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/CHANGELOG.md +35 -0
  2. {agentops_accelerator-0.5.0/src/agentops_accelerator.egg-info → agentops_accelerator-0.5.2}/PKG-INFO +1 -1
  3. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/cli/app.py +71 -0
  4. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/core/agentops_config.py +55 -0
  5. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/core/evaluators.py +20 -3
  6. agentops_accelerator-0.5.2/src/agentops/core/step_summary.py +65 -0
  7. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/orchestrator.py +12 -0
  8. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/workflows/agentops-deploy-prompt-agent.yml +2 -2
  9. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/workflows/agentops-pr-prompt-agent.yml +1 -1
  10. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/workflows/agentops-watchdog.yml +1 -1
  11. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2/src/agentops_accelerator.egg-info}/PKG-INFO +1 -1
  12. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops_accelerator.egg-info/SOURCES.txt +2 -0
  13. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_cicd.py +6 -0
  14. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_evaluators.py +50 -0
  15. agentops_accelerator-0.5.2/tests/unit/test_step_summary.py +72 -0
  16. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.claude-plugin/marketplace.json +0 -0
  17. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.gitattributes +0 -0
  18. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/actions/azure-oidc-login/action.yml +0 -0
  19. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/code-quality-py.instructions.md +0 -0
  20. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/copilot-instructions.md +0 -0
  21. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/dependabot.yml +0 -0
  22. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/extensions/agentops-skills/extension.mjs +0 -0
  23. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/plugin/marketplace.json +0 -0
  24. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/skills/release-management/SKILL.md +0 -0
  25. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/workflows/_build.yml +0 -0
  26. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/workflows/agentops-watchdog.yml +0 -0
  27. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/workflows/ci.yml +0 -0
  28. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/workflows/cut-release.yml +0 -0
  29. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/workflows/e2e.yml +0 -0
  30. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/workflows/release.yml +0 -0
  31. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.github/workflows/staging.yml +0 -0
  32. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.gitignore +0 -0
  33. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.pre-commit-config.yaml +0 -0
  34. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.vscode/launch.json +0 -0
  35. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.vscode/settings.json +0 -0
  36. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/.vscode/tasks.json +0 -0
  37. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/AGENTS.md +0 -0
  38. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/CONTRIBUTING.md +0 -0
  39. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/LICENSE +0 -0
  40. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/README.md +0 -0
  41. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/SECURITY.md +0 -0
  42. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/bundles.md +0 -0
  43. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/ci-github-actions.md +0 -0
  44. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/concepts.md +0 -0
  45. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/doctor-checks.md +0 -0
  46. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/doctor-explained.md +0 -0
  47. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/e2e-live-architecture.md +0 -0
  48. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/e2e-live-setup.md +0 -0
  49. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/foundry-evaluation-sdk-built-in-evaluators.md +0 -0
  50. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/how-it-works.md +0 -0
  51. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/media/agentops-diagrams.vsdx +0 -0
  52. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/media/foundry-control-plane.png +0 -0
  53. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/release-process.md +0 -0
  54. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/tutorial-end-to-end.md +0 -0
  55. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/tutorial-hosted-agent-quickstart.md +0 -0
  56. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/docs/tutorial-prompt-agent.md +0 -0
  57. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/examples/flat-quickstart/README.md +0 -0
  58. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/examples/flat-quickstart/agentops.yaml +0 -0
  59. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/examples/flat-quickstart/dataset.jsonl +0 -0
  60. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/icon.png +0 -0
  61. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/infra/e2e/agent-app/Dockerfile +0 -0
  62. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/infra/e2e/agent-app/app.py +0 -0
  63. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/infra/e2e/agent-app/requirements.txt +0 -0
  64. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/infra/e2e/bootstrap.bicep +0 -0
  65. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/infra/e2e/bootstrap.parameters.example.json +0 -0
  66. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/infra/e2e/perrun.bicep +0 -0
  67. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/launch.json +0 -0
  68. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/media/foundry.svg +0 -0
  69. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/media/quickstart.gif +0 -0
  70. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/plugins/agentops/.vscodeignore +0 -0
  71. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/plugins/agentops/LICENSE +0 -0
  72. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/plugins/agentops/README.md +0 -0
  73. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/plugins/agentops/package.json +0 -0
  74. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/plugins/agentops/plugin.json +0 -0
  75. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/plugins/agentops/skills/agentops-agent/SKILL.md +0 -0
  76. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/plugins/agentops/skills/agentops-config/SKILL.md +0 -0
  77. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/plugins/agentops/skills/agentops-dataset/SKILL.md +0 -0
  78. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/plugins/agentops/skills/agentops-eval/SKILL.md +0 -0
  79. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/plugins/agentops/skills/agentops-governance/SKILL.md +0 -0
  80. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/plugins/agentops/skills/agentops-report/SKILL.md +0 -0
  81. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/plugins/agentops/skills/agentops-workflow/SKILL.md +0 -0
  82. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/pyproject.toml +0 -0
  83. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/create_support_agent.py +0 -0
  84. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/cut-release.ps1 +0 -0
  85. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/cut-release.sh +0 -0
  86. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/e2e_aggregate_summary.py +0 -0
  87. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/e2e_data/basic.jsonl +0 -0
  88. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/e2e_data/rag.jsonl +0 -0
  89. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/e2e_data/tools.jsonl +0 -0
  90. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/e2e_demo.py +0 -0
  91. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/e2e_hosted_agent.py +0 -0
  92. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/e2e_make_transcript.py +0 -0
  93. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/e2e_render_config.py +0 -0
  94. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/release.ps1 +0 -0
  95. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/release.sh +0 -0
  96. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/setup-e2e-new-tenant.ps1 +0 -0
  97. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/staging.ps1 +0 -0
  98. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/staging.sh +0 -0
  99. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/sync-skills.ps1 +0 -0
  100. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/scripts/sync-skills.sh +0 -0
  101. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/setup.cfg +0 -0
  102. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/__init__.py +0 -0
  103. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/__main__.py +0 -0
  104. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/__init__.py +0 -0
  105. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/_legacy_ids.py +0 -0
  106. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/analyzer.py +0 -0
  107. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/__init__.py +0 -0
  108. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/_rbac_authorization.py +0 -0
  109. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/catalog.py +0 -0
  110. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/errors.py +0 -0
  111. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/foundry_config.py +0 -0
  112. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/governance.py +0 -0
  113. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/latency.py +0 -0
  114. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/observability.py +0 -0
  115. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/opex.py +0 -0
  116. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/opex_workspace.py +0 -0
  117. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/posture.py +0 -0
  118. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/posture_rules/__init__.py +0 -0
  119. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/posture_rules/content_filter.py +0 -0
  120. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/posture_rules/diagnostics.py +0 -0
  121. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/posture_rules/local_auth.py +0 -0
  122. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/posture_rules/managed_identity.py +0 -0
  123. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/posture_rules/network.py +0 -0
  124. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/rbac_openai_data_plane.py +0 -0
  125. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/regression.py +0 -0
  126. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/release_readiness.py +0 -0
  127. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/safety.py +0 -0
  128. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/checks/spec_conformance.py +0 -0
  129. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/cockpit.py +0 -0
  130. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/config.py +0 -0
  131. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/findings.py +0 -0
  132. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/history.py +0 -0
  133. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/knowledge/__init__.py +0 -0
  134. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/knowledge/waf-checklist.csv +0 -0
  135. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/llm_assist/__init__.py +0 -0
  136. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/llm_assist/_base.py +0 -0
  137. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/llm_assist/_bundle_rule.py +0 -0
  138. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/llm_assist/_client.py +0 -0
  139. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/llm_assist/_dataset_rules.py +0 -0
  140. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/llm_assist/_engine.py +0 -0
  141. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/llm_assist/_prompt_rules.py +0 -0
  142. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/llm_assist/_spec_rules.py +0 -0
  143. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/production_telemetry.py +0 -0
  144. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/report.py +0 -0
  145. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/server/__init__.py +0 -0
  146. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/server/app.py +0 -0
  147. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/server/auth.py +0 -0
  148. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/server/chat.py +0 -0
  149. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/server/protocol.py +0 -0
  150. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/sources/__init__.py +0 -0
  151. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/sources/_credentials.py +0 -0
  152. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/sources/azure_monitor.py +0 -0
  153. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/sources/azure_resources.py +0 -0
  154. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/sources/foundry_control.py +0 -0
  155. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/sources/results_history.py +0 -0
  156. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/sources/spec_detectors/__init__.py +0 -0
  157. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/sources/spec_detectors/_base.py +0 -0
  158. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/sources/spec_detectors/agents_md.py +0 -0
  159. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/sources/spec_detectors/spec_kit.py +0 -0
  160. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/agent/time_range.py +0 -0
  161. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/cli/__init__.py +0 -0
  162. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/core/__init__.py +0 -0
  163. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/core/azd_eval.py +0 -0
  164. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/core/config_loader.py +0 -0
  165. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/core/governance.py +0 -0
  166. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/core/release_evidence.py +0 -0
  167. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/core/results.py +0 -0
  168. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/mcp/__init__.py +0 -0
  169. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/mcp/server.py +0 -0
  170. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/__init__.py +0 -0
  171. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/azd_runner.py +0 -0
  172. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/cloud_results.py +0 -0
  173. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/cloud_runner.py +0 -0
  174. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/comparison.py +0 -0
  175. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/diagnostics.py +0 -0
  176. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/invocations.py +0 -0
  177. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/official_eval.py +0 -0
  178. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/prompt_deploy.py +0 -0
  179. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/publisher.py +0 -0
  180. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/reporter.py +0 -0
  181. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/runtime.py +0 -0
  182. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/pipeline/thresholds.py +0 -0
  183. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/__init__.py +0 -0
  184. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/assert_runner.py +0 -0
  185. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/azd_eval_init.py +0 -0
  186. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/cicd.py +0 -0
  187. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/eval_analysis.py +0 -0
  188. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/evidence_pack.py +0 -0
  189. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/initializer.py +0 -0
  190. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/preflight.py +0 -0
  191. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/redteam_runner.py +0 -0
  192. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/setup_wizard.py +0 -0
  193. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/skills.py +0 -0
  194. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/trace_promotion.py +0 -0
  195. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/services/workflow_analysis.py +0 -0
  196. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/.gitignore +0 -0
  197. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/__init__.py +0 -0
  198. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/agent-server/Dockerfile +0 -0
  199. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/agent-server/README.md +0 -0
  200. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/agent-server/main.bicep +0 -0
  201. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/agent.yaml +0 -0
  202. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/agentops.yaml +0 -0
  203. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/foundry.svg +0 -0
  204. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/icon.png +0 -0
  205. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev-azd.yml +0 -0
  206. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev.yml +0 -0
  207. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod-azd.yml +0 -0
  208. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod.yml +0 -0
  209. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prompt-agent.yml +0 -0
  210. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa-azd.yml +0 -0
  211. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa.yml +0 -0
  212. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/pipelines/azuredevops/agentops-pr-prompt-agent.yml +0 -0
  213. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/pipelines/azuredevops/agentops-pr.yml +0 -0
  214. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/pipelines/azuredevops/agentops-watchdog.yml +0 -0
  215. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/project.gitignore +0 -0
  216. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/sample-traces.jsonl +0 -0
  217. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/skills/agentops-agent/SKILL.md +0 -0
  218. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/skills/agentops-config/SKILL.md +0 -0
  219. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/skills/agentops-dataset/SKILL.md +0 -0
  220. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/skills/agentops-eval/SKILL.md +0 -0
  221. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/skills/agentops-governance/SKILL.md +0 -0
  222. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/skills/agentops-report/SKILL.md +0 -0
  223. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/skills/agentops-workflow/SKILL.md +0 -0
  224. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/smoke.jsonl +0 -0
  225. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/waf-checklist.README.md +0 -0
  226. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/waf-checklist.csv +0 -0
  227. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/workflows/agentops-deploy-dev-azd.yml +0 -0
  228. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/workflows/agentops-deploy-dev.yml +0 -0
  229. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/workflows/agentops-deploy-prod-azd.yml +0 -0
  230. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/workflows/agentops-deploy-prod.yml +0 -0
  231. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/workflows/agentops-deploy-qa-azd.yml +0 -0
  232. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/workflows/agentops-deploy-qa.yml +0 -0
  233. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/templates/workflows/agentops-pr.yml +0 -0
  234. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/utils/__init__.py +0 -0
  235. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/utils/azd_env.py +0 -0
  236. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/utils/azure_endpoints.py +0 -0
  237. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/utils/colors.py +0 -0
  238. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/utils/dotenv_loader.py +0 -0
  239. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/utils/foundry_discovery.py +0 -0
  240. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/utils/logging.py +0 -0
  241. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/utils/telemetry.py +0 -0
  242. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops/utils/yaml.py +0 -0
  243. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops_accelerator.egg-info/dependency_links.txt +0 -0
  244. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops_accelerator.egg-info/entry_points.txt +0 -0
  245. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops_accelerator.egg-info/requires.txt +0 -0
  246. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/src/agentops_accelerator.egg-info/top_level.txt +0 -0
  247. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/TESTING.md +0 -0
  248. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/fixtures/fake_adapter.py +0 -0
  249. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/fixtures/fake_eval_runner.py +0 -0
  250. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/integration/.gitkeep +0 -0
  251. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/integration/test_cli_flat_schema.py +0 -0
  252. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/integration/test_pipeline_smoke.py +0 -0
  253. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/.gitkeep +0 -0
  254. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_analyzer.py +0 -0
  255. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_categories.py +0 -0
  256. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_checks_errors.py +0 -0
  257. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_checks_foundry_config.py +0 -0
  258. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_checks_observability.py +0 -0
  259. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_checks_opex.py +0 -0
  260. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_checks_opex_workspace.py +0 -0
  261. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_checks_rbac_openai_data_plane.py +0 -0
  262. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_checks_regression.py +0 -0
  263. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_checks_safety.py +0 -0
  264. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_checks_spec_conformance.py +0 -0
  265. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_cli.py +0 -0
  266. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_config.py +0 -0
  267. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_findings.py +0 -0
  268. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_history.py +0 -0
  269. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_opex_workspace_check.py +0 -0
  270. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_posture_rules.py +0 -0
  271. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_results_history.py +0 -0
  272. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agent_server.py +0 -0
  273. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_agentops_config.py +0 -0
  274. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_assert_and_redteam_runners.py +0 -0
  275. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_azd_env.py +0 -0
  276. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_azd_eval.py +0 -0
  277. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_azd_eval_init.py +0 -0
  278. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_azd_runner.py +0 -0
  279. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_azure_endpoints.py +0 -0
  280. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_azure_resources_discovery.py +0 -0
  281. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_cli_cockpit_connection_summary.py +0 -0
  282. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_cli_cockpit_port_conflict.py +0 -0
  283. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_cli_commands.py +0 -0
  284. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_cli_explain.py +0 -0
  285. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_cloud_results.py +0 -0
  286. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_cloud_runner.py +0 -0
  287. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_cockpit.py +0 -0
  288. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_diagnostics.py +0 -0
  289. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_doctor_catalog.py +0 -0
  290. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_doctor_cli_explain.py +0 -0
  291. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_dotenv_loader.py +0 -0
  292. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_e2e_render.py +0 -0
  293. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_eval_analysis.py +0 -0
  294. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_eval_run_grader_errors.py +0 -0
  295. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_foundry_discovery.py +0 -0
  296. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_governance.py +0 -0
  297. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_http_streaming.py +0 -0
  298. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_init_command.py +0 -0
  299. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_initializer.py +0 -0
  300. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_invocations.py +0 -0
  301. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_knowledge_loader.py +0 -0
  302. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_llm_assist.py +0 -0
  303. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_llm_assist_spec_rules.py +0 -0
  304. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_mcp_server.py +0 -0
  305. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_official_eval.py +0 -0
  306. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_pipeline_publisher.py +0 -0
  307. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_pipeline_reporter.py +0 -0
  308. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_preflight.py +0 -0
  309. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_production_telemetry.py +0 -0
  310. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_prompt_deploy.py +0 -0
  311. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_release_evidence.py +0 -0
  312. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_runtime_conversation.py +0 -0
  313. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_runtime_model_config.py +0 -0
  314. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_runtime_response_fields.py +0 -0
  315. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_setup_wizard.py +0 -0
  316. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_shared_credentials.py +0 -0
  317. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_skills.py +0 -0
  318. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_skills_sync.py +0 -0
  319. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_telemetry.py +0 -0
  320. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_time_range.py +0 -0
  321. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_trace_promotion.py +0 -0
  322. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_workflow_analysis.py +0 -0
  323. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tests/unit/test_yaml_utils.py +0 -0
  324. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/tombstones/vscode/CDN_DEPRECATION_REQUEST.md +0 -0
  325. {agentops_accelerator-0.5.0 → agentops_accelerator-0.5.2}/uv.lock +0 -0
@@ -5,6 +5,41 @@ This format follows [Keep a Changelog](https://keepachangelog.com/) and adheres
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.5.2] - 2026-06-20
9
+
10
+ ### Added
11
+ - **Per-evaluator input remapping via `evaluators[].input_mapping`.** Evaluator
12
+ overrides in `agentops.yaml` now accept an optional `input_mapping` map that is
13
+ merged onto the preset's default inputs, so you only list the keys you want to
14
+ change. This is what lets a grey-box HTTP/JSON target point a RAG evaluator at
15
+ the live retrieved context captured by `response_fields`, for example
16
+ `context: $response.context` on `GroundednessEvaluator` and
17
+ `RetrievalEvaluator`. The mapping applies to both explicitly listed overrides
18
+ and auto-selected presets. A bare evaluator name string (`- GroundednessEvaluator`)
19
+ is still accepted as shorthand for `{ name: GroundednessEvaluator }`, so
20
+ existing configs are unchanged.
21
+
22
+
23
+
24
+ ### Added
25
+ - **Rendered gate results in GitHub Actions job summaries.** When AgentOps runs
26
+ inside GitHub Actions (`GITHUB_STEP_SUMMARY` set), `agentops eval run` now
27
+ appends the full rendered `report.md` to the workflow run summary, and
28
+ `agentops assert run` / `agentops redteam run` append a concise pass/fail
29
+ summary (suite, cases, pass rate, per-dimension and per-risk-category
30
+ breakdowns). Reviewers can read the report directly on the run page without
31
+ downloading the uploaded artifacts. Writes are best-effort and a no-op outside
32
+ GitHub Actions, so local runs are unaffected.
33
+
34
+ ### Changed
35
+ - **Generated workflows use Node24-ready action versions.** The prompt-agent and
36
+ watchdog workflow templates now pin `actions/download-artifact@v7` (instead of
37
+ the Node20 `@v4`), so generated pipelines no longer emit the "Node.js 20
38
+ actions are deprecated" warning. A regression guard checks every workflow
39
+ template against the known Node20 action majors.
40
+
41
+ ## [0.5.0] - 2026-06-19
42
+
8
43
  ### Added
9
44
  - **Grey-box retrieval capture for HTTP JSON targets.** An HTTP target can now
10
45
  capture extra named fields from a JSON response via a `response_fields` map
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentops-accelerator
3
- Version: 0.5.0
3
+ Version: 0.5.2
4
4
  Summary: Release readiness gates and evidence for Microsoft Foundry agents
5
5
  License: MIT License
6
6
 
@@ -2354,6 +2354,70 @@ def _resolve_eval_config_path(config: Path | None) -> Path:
2354
2354
  return Path("agentops.yaml")
2355
2355
 
2356
2356
 
2357
+ def _append_assert_step_summary(result, *, scored_cases, pass_rate) -> None:
2358
+ """Append an ASSERT gate summary to the GitHub Actions step summary."""
2359
+ from agentops.core.step_summary import append_step_summary, is_active
2360
+
2361
+ if not is_active():
2362
+ return
2363
+ status = "❌ VIOLATIONS" if result.has_violations else "✅ PASS"
2364
+ lines = [
2365
+ "## AgentOps ASSERT gate",
2366
+ "",
2367
+ f"**Result:** {status}",
2368
+ "",
2369
+ f"- **Suite:** `{result.suite}`",
2370
+ f"- **Run:** `{result.run_id}`",
2371
+ f"- **Cases:** {result.total_cases} "
2372
+ f"(scored={scored_cases}, passed={result.passed_cases}, "
2373
+ f"failed={result.failed_cases}, skipped={result.skipped_cases})",
2374
+ f"- **Pass rate:** {pass_rate}",
2375
+ ]
2376
+ if result.dimension_summary:
2377
+ lines += ["", "| Dimension | Result |", "| --- | --- |"]
2378
+ for name, bucket in sorted(result.dimension_summary.items()):
2379
+ violations = bucket.get("violations", 0)
2380
+ total = bucket.get("total", 0)
2381
+ skipped = bucket.get("skipped", 0)
2382
+ if violations == 0:
2383
+ clean = max(total - skipped, 0)
2384
+ cell = f"{clean}/{total} clean ✅"
2385
+ else:
2386
+ cell = f"{violations}/{total} violating ❌"
2387
+ if skipped:
2388
+ cell += f" (skipped={skipped})"
2389
+ lines.append(f"| {name} | {cell} |")
2390
+ append_step_summary("\n".join(lines))
2391
+
2392
+
2393
+ def _append_redteam_step_summary(result, *, asr_pct) -> None:
2394
+ """Append a Red Team gate summary to the GitHub Actions step summary."""
2395
+ from agentops.core.step_summary import append_step_summary, is_active
2396
+
2397
+ if not is_active():
2398
+ return
2399
+ status = "❌ HIGH" if result.has_violations else "✅ PASS"
2400
+ lines = [
2401
+ "## AgentOps Red Team gate",
2402
+ "",
2403
+ f"**Result:** {status}",
2404
+ "",
2405
+ f"- **Attempts:** {result.total_attempts} "
2406
+ f"(successful={result.successful_attacks})",
2407
+ f"- **Attack success rate:** {asr_pct}",
2408
+ ]
2409
+ if result.fail_threshold is not None:
2410
+ lines.append(f"- **Gate threshold:** {result.fail_threshold:.1%}")
2411
+ if result.per_category:
2412
+ lines += ["", "| Risk category | Successful | Rate |", "| --- | --- | --- |"]
2413
+ for name, bucket in sorted(result.per_category.items()):
2414
+ total = bucket.get("total", 0)
2415
+ successful = bucket.get("successful", 0)
2416
+ rate = bucket.get("attack_success_rate", 0.0)
2417
+ lines.append(f"| {name} | {successful}/{total} | {rate:.1%} |")
2418
+ append_step_summary("\n".join(lines))
2419
+
2420
+
2357
2421
  @assert_app.command("run")
2358
2422
  def cmd_assert_run(
2359
2423
  config: Annotated[
@@ -2564,6 +2628,8 @@ def cmd_assert_run(
2564
2628
  "reaching the target; try a less restrictive tester deployment.)"
2565
2629
  )
2566
2630
 
2631
+ _append_assert_step_summary(result, scored_cases=scored_cases, pass_rate=pass_rate)
2632
+
2567
2633
  if result.has_violations:
2568
2634
  msg = (
2569
2635
  f"{_cli_error('FAIL')}: ASSERT reported {result.failed_cases} "
@@ -2805,6 +2871,8 @@ def cmd_redteam_run(
2805
2871
  rate = bucket.get("attack_success_rate", 0.0)
2806
2872
  typer.echo(f" {name}: {successful}/{total} ({rate:.1%})")
2807
2873
 
2874
+ _append_redteam_step_summary(result, asr_pct=asr_pct)
2875
+
2808
2876
  if result.has_violations:
2809
2877
  msg = (
2810
2878
  f"{_cli_error('FAIL')}: Red Team attack success rate "
@@ -2946,6 +3014,9 @@ def _run_flat_schema_eval(
2946
3014
  report_url = azd_eval.get("report_url") if isinstance(azd_eval, dict) else None
2947
3015
  if isinstance(report_url, str) and report_url.strip():
2948
3016
  typer.echo(f"{_cli_label('Foundry run')}: {report_url.strip()}")
3017
+ from agentops.core.step_summary import append_report_file
3018
+
3019
+ append_report_file(output_dir / "report.md")
2949
3020
  if result.summary.overall_passed:
2950
3021
  typer.echo(f"{_cli_label('Threshold status')}: {style('PASSED', 'bold', 'green')}")
2951
3022
  return
@@ -152,12 +152,51 @@ class EvaluatorOverride(BaseModel):
152
152
  evaluators:
153
153
  - GroundednessEvaluator
154
154
  - CoherenceEvaluator
155
+
156
+ Each entry may instead be a mapping to remap the evaluator inputs. This is
157
+ how an HTTP/JSON target scores the *live* retrieved context (grey-box):
158
+ capture the extra fields on the target with ``response_fields`` and point
159
+ the evaluator at them via ``$response.<name>`` tokens::
160
+
161
+ response_fields:
162
+ context: context
163
+ retrieved_documents: retrieved_documents
164
+ evaluators:
165
+ - name: GroundednessEvaluator
166
+ input_mapping:
167
+ query: $prompt
168
+ response: $prediction
169
+ context: $response.context
170
+ - name: RetrievalEvaluator
171
+ input_mapping:
172
+ query: $prompt
173
+ context: $response.context
174
+
175
+ ``input_mapping`` is merged onto the preset's default mapping, so you only
176
+ list the keys you want to change.
155
177
  """
156
178
 
157
179
  name: str
180
+ input_mapping: Optional[Dict[str, str]] = Field(
181
+ None,
182
+ description=(
183
+ "Optional per-evaluator input remap merged onto the preset "
184
+ "defaults. Values use the resolver tokens $prompt, $prediction, "
185
+ "$expected, $context, $row.<col>, and $response.<name> (the last "
186
+ "reads a field captured by the target's response_fields)."
187
+ ),
188
+ )
158
189
 
159
190
  model_config = ConfigDict(frozen=True)
160
191
 
192
+ @model_validator(mode="before")
193
+ @classmethod
194
+ def _coerce_bare_name(cls, data: Any) -> Any:
195
+ """Accept a bare evaluator name string as shorthand for ``{name: ...}``."""
196
+ if isinstance(data, str):
197
+ return {"name": data}
198
+ return data
199
+
161
200
  @field_validator("name")
162
201
  @classmethod
163
202
  def _name_non_empty(cls, value: str) -> str:
@@ -165,6 +204,22 @@ class EvaluatorOverride(BaseModel):
165
204
  raise ValueError("evaluator name must be non-empty")
166
205
  return value
167
206
 
207
+ @field_validator("input_mapping")
208
+ @classmethod
209
+ def _mapping_non_empty(
210
+ cls, value: Optional[Dict[str, str]]
211
+ ) -> Optional[Dict[str, str]]:
212
+ if value is None:
213
+ return None
214
+ for key, token in value.items():
215
+ if not str(key).strip():
216
+ raise ValueError("input_mapping keys must be non-empty")
217
+ if not str(token).strip():
218
+ raise ValueError(
219
+ f"input_mapping value for {key!r} must be non-empty"
220
+ )
221
+ return value
222
+
168
223
 
169
224
  # ---------------------------------------------------------------------------
170
225
  # Dataset sync configuration
@@ -32,7 +32,7 @@ final word - no auto-detection runs.
32
32
  from __future__ import annotations
33
33
 
34
34
  import json
35
- from dataclasses import dataclass, field
35
+ from dataclasses import dataclass, field, replace
36
36
  from pathlib import Path
37
37
  from typing import Dict, FrozenSet, Iterable, List, Optional, Tuple
38
38
 
@@ -348,6 +348,7 @@ def select_evaluators(
348
348
  shape: DatasetShape,
349
349
  *,
350
350
  overrides: Optional[List[str]] = None,
351
+ override_mappings: Optional[Dict[str, Dict[str, str]]] = None,
351
352
  threshold_metrics: Optional[Iterable[str]] = None,
352
353
  ) -> List[EvaluatorPreset]:
353
354
  """Return the ordered list of evaluators to run.
@@ -356,6 +357,12 @@ def select_evaluators(
356
357
  bypassed. Each name must exist in :data:`CATALOG` or a ``ValueError`` is
357
358
  raised.
358
359
 
360
+ ``override_mappings`` maps an evaluator name to an ``input_mapping`` patch
361
+ that is merged onto that preset's default mapping. This lets a grey-box
362
+ HTTP/JSON target point an evaluator at a live response field captured via
363
+ ``response_fields`` (e.g. ``context: $response.context``). It applies to
364
+ both the explicit-override path and the auto-selected presets.
365
+
359
366
  Otherwise the rules are:
360
367
 
361
368
  * Always include the baseline quality evaluators.
@@ -369,6 +376,16 @@ def select_evaluators(
369
376
  evaluators.
370
377
  * Always append the runtime ``avg_latency_seconds`` evaluator.
371
378
  """
379
+
380
+ def _apply_mappings(preset: EvaluatorPreset) -> EvaluatorPreset:
381
+ if not override_mappings:
382
+ return preset
383
+ patch = override_mappings.get(preset.name)
384
+ if not patch:
385
+ return preset
386
+ merged = {**preset.input_mapping, **patch}
387
+ return replace(preset, input_mapping=merged)
388
+
372
389
  if overrides:
373
390
  resolved: List[EvaluatorPreset] = []
374
391
  for name in overrides:
@@ -379,7 +396,7 @@ def select_evaluators(
379
396
  f"unknown evaluator override {name!r}. "
380
397
  f"Known evaluators: {known}"
381
398
  )
382
- resolved.append(preset)
399
+ resolved.append(_apply_mappings(preset))
383
400
  return resolved
384
401
 
385
402
  selected: List[EvaluatorPreset] = list(_QUALITY_BASELINE)
@@ -411,7 +428,7 @@ def select_evaluators(
411
428
  )
412
429
 
413
430
  selected.append(_LATENCY)
414
- return selected
431
+ return [_apply_mappings(preset) for preset in selected]
415
432
 
416
433
 
417
434
  def _is_agent_target(kind: TargetKind) -> bool:
@@ -0,0 +1,65 @@
1
+ """Helpers for surfacing AgentOps gate output in CI job summaries.
2
+
3
+ When AgentOps runs inside GitHub Actions, the ``GITHUB_STEP_SUMMARY``
4
+ environment variable points at a Markdown file whose contents render on the
5
+ workflow run page. These helpers append AgentOps output there so reviewers can
6
+ read the rendered report directly on the run page, without downloading the
7
+ uploaded artifacts.
8
+
9
+ All writes are best-effort and never raise, so command handlers can call them
10
+ unconditionally: outside GitHub Actions they simply do nothing.
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ import os
16
+ from pathlib import Path
17
+ from typing import Optional
18
+
19
+
20
+ def _summary_path() -> Optional[Path]:
21
+ raw = os.environ.get("GITHUB_STEP_SUMMARY")
22
+ if not raw or not raw.strip():
23
+ return None
24
+ return Path(raw)
25
+
26
+
27
+ def is_active() -> bool:
28
+ """Return True when a GitHub Actions step summary target is available."""
29
+ return _summary_path() is not None
30
+
31
+
32
+ def append_step_summary(markdown: str) -> bool:
33
+ """Append a Markdown block to the GitHub Actions step summary.
34
+
35
+ Returns ``True`` when the block was written, ``False`` when not running
36
+ under GitHub Actions or when the write failed. Never raises.
37
+ """
38
+ path = _summary_path()
39
+ if path is None:
40
+ return False
41
+ try:
42
+ text = markdown if markdown.endswith("\n") else markdown + "\n"
43
+ with path.open("a", encoding="utf-8") as handle:
44
+ handle.write(text)
45
+ handle.write("\n")
46
+ return True
47
+ except Exception:
48
+ return False
49
+
50
+
51
+ def append_report_file(report_path: Path, *, heading: Optional[str] = None) -> bool:
52
+ """Append the contents of a rendered report file to the step summary.
53
+
54
+ Used for ``agentops eval run`` so the full ``report.md`` renders inline on
55
+ the workflow run page. Returns ``False`` when not under GitHub Actions or
56
+ when the report cannot be read. Never raises.
57
+ """
58
+ if _summary_path() is None:
59
+ return False
60
+ try:
61
+ body = Path(report_path).read_text(encoding="utf-8")
62
+ except Exception:
63
+ return False
64
+ block = body if heading is None else f"{heading}\n\n{body}"
65
+ return append_step_summary(block)
@@ -132,10 +132,16 @@ def _run_evaluation_local(
132
132
  overrides = (
133
133
  [override.name for override in config.evaluators] if config.evaluators else None
134
134
  )
135
+ override_mappings = (
136
+ {o.name: dict(o.input_mapping) for o in config.evaluators if o.input_mapping}
137
+ if config.evaluators
138
+ else None
139
+ ) or None
135
140
  presets = select_evaluators(
136
141
  target,
137
142
  shape,
138
143
  overrides=overrides,
144
+ override_mappings=override_mappings,
139
145
  threshold_metrics=config.thresholds.keys(),
140
146
  )
141
147
  user_thresholds = [
@@ -277,10 +283,16 @@ def _run_evaluation_cloud(
277
283
  overrides = (
278
284
  [override.name for override in config.evaluators] if config.evaluators else None
279
285
  )
286
+ override_mappings = (
287
+ {o.name: dict(o.input_mapping) for o in config.evaluators if o.input_mapping}
288
+ if config.evaluators
289
+ else None
290
+ ) or None
280
291
  all_presets = select_evaluators(
281
292
  target,
282
293
  shape,
283
294
  overrides=overrides,
295
+ override_mappings=override_mappings,
284
296
  threshold_metrics=config.thresholds.keys(),
285
297
  )
286
298
 
@@ -93,7 +93,7 @@ jobs:
93
93
  uses: actions/checkout@v6
94
94
 
95
95
  - name: Download candidate deployment record
96
- uses: actions/download-artifact@v4
96
+ uses: actions/download-artifact@v7
97
97
  with:
98
98
  name: foundry-agent-__ENV_KEY__-candidate
99
99
  path: .agentops/deployments
@@ -169,7 +169,7 @@ __EVAL_STEPS__
169
169
  timeout-minutes: 10
170
170
  steps:
171
171
  - name: Download candidate deployment record
172
- uses: actions/download-artifact@v4
172
+ uses: actions/download-artifact@v7
173
173
  with:
174
174
  name: foundry-agent-__ENV_KEY__-candidate
175
175
  path: .agentops/deployments
@@ -110,7 +110,7 @@ jobs:
110
110
  uses: actions/checkout@v6
111
111
 
112
112
  - name: Download candidate deployment record
113
- uses: actions/download-artifact@v4
113
+ uses: actions/download-artifact@v7
114
114
  with:
115
115
  name: foundry-agent-__ENV_KEY__-candidate
116
116
  path: .agentops/deployments
@@ -69,7 +69,7 @@ jobs:
69
69
  # downloads when the artifact does not exist yet, instead of
70
70
  # surfacing a red error annotation on every first run.
71
71
  - name: Restore Doctor history (if any)
72
- uses: actions/download-artifact@v4
72
+ uses: actions/download-artifact@v7
73
73
  with:
74
74
  pattern: agentops-doctor-history
75
75
  path: .agentops/agent/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentops-accelerator
3
- Version: 0.5.0
3
+ Version: 0.5.2
4
4
  Summary: Release readiness gates and evidence for Microsoft Foundry agents
5
5
  License: MIT License
6
6
 
@@ -154,6 +154,7 @@ src/agentops/core/evaluators.py
154
154
  src/agentops/core/governance.py
155
155
  src/agentops/core/release_evidence.py
156
156
  src/agentops/core/results.py
157
+ src/agentops/core/step_summary.py
157
158
  src/agentops/mcp/__init__.py
158
159
  src/agentops/mcp/server.py
159
160
  src/agentops/pipeline/__init__.py
@@ -313,6 +314,7 @@ tests/unit/test_setup_wizard.py
313
314
  tests/unit/test_shared_credentials.py
314
315
  tests/unit/test_skills.py
315
316
  tests/unit/test_skills_sync.py
317
+ tests/unit/test_step_summary.py
316
318
  tests/unit/test_telemetry.py
317
319
  tests/unit/test_time_range.py
318
320
  tests/unit/test_trace_promotion.py
@@ -31,8 +31,14 @@ _DEPRECATED_NODE20_ACTION_REFS = (
31
31
  "actions/checkout@v4",
32
32
  "actions/setup-python@v5",
33
33
  "actions/upload-artifact@v4",
34
+ "actions/upload-artifact@v5",
35
+ "actions/download-artifact@v4",
36
+ "actions/download-artifact@v5",
37
+ "actions/download-artifact@v6",
34
38
  "actions/github-script@v7",
35
39
  "astral-sh/setup-uv@v3",
40
+ "astral-sh/setup-uv@v5",
41
+ "astral-sh/setup-uv@v6",
36
42
  "azure/login@v2",
37
43
  )
38
44
 
@@ -201,6 +201,56 @@ class TestSelectEvaluators:
201
201
  with pytest.raises(ValueError, match="unknown evaluator"):
202
202
  select_evaluators(_PROMPT_AGENT, _shape(), overrides=["NotAnEvaluator"])
203
203
 
204
+ def test_override_mapping_patches_explicit_override(self) -> None:
205
+ # Grey-box: point GroundednessEvaluator at the live captured context.
206
+ result = select_evaluators(
207
+ _HTTP_AGENT,
208
+ _shape(),
209
+ overrides=["GroundednessEvaluator"],
210
+ override_mappings={
211
+ "GroundednessEvaluator": {"context": "$response.context"}
212
+ },
213
+ )
214
+ preset = [p for p in result if p.name == "GroundednessEvaluator"][0]
215
+ assert preset.input_mapping["context"] == "$response.context"
216
+ # Unpatched keys keep their preset defaults.
217
+ assert preset.input_mapping["response"] == "$prediction"
218
+
219
+ def test_override_mapping_patches_auto_selected_rag_preset(self) -> None:
220
+ # No explicit overrides: RAG presets are auto-selected from the
221
+ # context-bearing dataset, and the mapping still applies.
222
+ result = select_evaluators(
223
+ _HTTP_AGENT,
224
+ _shape(context=True),
225
+ override_mappings={
226
+ "RetrievalEvaluator": {"context": "$response.context"}
227
+ },
228
+ )
229
+ preset = [p for p in result if p.name == "RetrievalEvaluator"][0]
230
+ assert preset.input_mapping["context"] == "$response.context"
231
+
232
+ def test_override_mapping_does_not_mutate_catalog_preset(self) -> None:
233
+ select_evaluators(
234
+ _HTTP_AGENT,
235
+ _shape(),
236
+ overrides=["GroundednessEvaluator"],
237
+ override_mappings={
238
+ "GroundednessEvaluator": {"context": "$response.context"}
239
+ },
240
+ )
241
+ # The shared CATALOG preset must be untouched (dataclasses.replace
242
+ # returns a copy).
243
+ assert CATALOG["GroundednessEvaluator"].input_mapping["context"] == "$context"
244
+
245
+ def test_override_mapping_none_is_noop(self) -> None:
246
+ result = select_evaluators(
247
+ _HTTP_AGENT,
248
+ _shape(context=True),
249
+ override_mappings=None,
250
+ )
251
+ preset = [p for p in result if p.name == "GroundednessEvaluator"][0]
252
+ assert preset.input_mapping["context"] == "$context"
253
+
204
254
 
205
255
  # ---------------------------------------------------------------------------
206
256
  # merge_thresholds
@@ -0,0 +1,72 @@
1
+ """Unit tests for the GitHub Actions step-summary helpers."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from agentops.core import step_summary
6
+
7
+
8
+ def test_is_active_reflects_env(monkeypatch, tmp_path):
9
+ monkeypatch.delenv("GITHUB_STEP_SUMMARY", raising=False)
10
+ assert step_summary.is_active() is False
11
+
12
+ summary = tmp_path / "summary.md"
13
+ monkeypatch.setenv("GITHUB_STEP_SUMMARY", str(summary))
14
+ assert step_summary.is_active() is True
15
+
16
+
17
+ def test_append_step_summary_noop_without_env(monkeypatch):
18
+ monkeypatch.delenv("GITHUB_STEP_SUMMARY", raising=False)
19
+ assert step_summary.append_step_summary("# hello") is False
20
+
21
+
22
+ def test_append_step_summary_writes_and_appends(monkeypatch, tmp_path):
23
+ summary = tmp_path / "summary.md"
24
+ monkeypatch.setenv("GITHUB_STEP_SUMMARY", str(summary))
25
+
26
+ assert step_summary.append_step_summary("# first") is True
27
+ assert step_summary.append_step_summary("# second\n") is True
28
+
29
+ content = summary.read_text(encoding="utf-8")
30
+ assert "# first" in content
31
+ assert "# second" in content
32
+ # Each block ends with its own newline plus a separating blank line.
33
+ assert content.index("# first") < content.index("# second")
34
+
35
+
36
+ def test_append_report_file_appends_contents(monkeypatch, tmp_path):
37
+ summary = tmp_path / "summary.md"
38
+ monkeypatch.setenv("GITHUB_STEP_SUMMARY", str(summary))
39
+ report = tmp_path / "report.md"
40
+ report.write_text("# AgentOps Evaluation Report\n\nPASS\n", encoding="utf-8")
41
+
42
+ assert step_summary.append_report_file(report) is True
43
+ content = summary.read_text(encoding="utf-8")
44
+ assert "AgentOps Evaluation Report" in content
45
+ assert "PASS" in content
46
+
47
+
48
+ def test_append_report_file_with_heading(monkeypatch, tmp_path):
49
+ summary = tmp_path / "summary.md"
50
+ monkeypatch.setenv("GITHUB_STEP_SUMMARY", str(summary))
51
+ report = tmp_path / "report.md"
52
+ report.write_text("body\n", encoding="utf-8")
53
+
54
+ assert step_summary.append_report_file(report, heading="## Eval") is True
55
+ content = summary.read_text(encoding="utf-8")
56
+ assert "## Eval" in content
57
+ assert "body" in content
58
+
59
+
60
+ def test_append_report_file_missing_file_is_false(monkeypatch, tmp_path):
61
+ summary = tmp_path / "summary.md"
62
+ monkeypatch.setenv("GITHUB_STEP_SUMMARY", str(summary))
63
+
64
+ assert step_summary.append_report_file(tmp_path / "missing.md") is False
65
+ assert summary.exists() is False or summary.read_text(encoding="utf-8") == ""
66
+
67
+
68
+ def test_append_report_file_noop_without_env(monkeypatch, tmp_path):
69
+ monkeypatch.delenv("GITHUB_STEP_SUMMARY", raising=False)
70
+ report = tmp_path / "report.md"
71
+ report.write_text("body\n", encoding="utf-8")
72
+ assert step_summary.append_report_file(report) is False