agentops-accelerator 0.4.3__tar.gz → 0.4.5__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 (323) hide show
  1. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/AGENTS.md +5 -1
  2. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/CHANGELOG.md +63 -0
  3. {agentops_accelerator-0.4.3/src/agentops_accelerator.egg-info → agentops_accelerator-0.4.5}/PKG-INFO +1 -1
  4. {agentops_accelerator-0.4.3/src/agentops/templates → agentops_accelerator-0.4.5/plugins/agentops}/skills/agentops-eval/SKILL.md +8 -1
  5. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-governance/SKILL.md +109 -0
  6. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/cli/app.py +107 -11
  7. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/core/agentops_config.py +103 -3
  8. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/invocations.py +162 -8
  9. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/publisher.py +10 -4
  10. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/runtime.py +7 -1
  11. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/assert_runner.py +149 -18
  12. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/azd_eval_init.py +368 -35
  13. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/cicd.py +86 -9
  14. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/redteam_runner.py +83 -7
  15. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/setup_wizard.py +163 -9
  16. {agentops_accelerator-0.4.3/plugins/agentops → agentops_accelerator-0.4.5/src/agentops/templates}/skills/agentops-eval/SKILL.md +8 -1
  17. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-governance/SKILL.md +109 -0
  18. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/utils/yaml.py +1 -0
  19. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5/src/agentops_accelerator.egg-info}/PKG-INFO +1 -1
  20. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops_accelerator.egg-info/SOURCES.txt +2 -0
  21. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agentops_config.py +54 -0
  22. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_assert_and_redteam_runners.py +44 -3
  23. agentops_accelerator-0.4.5/tests/unit/test_azd_eval_init.py +717 -0
  24. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_cicd.py +41 -0
  25. agentops_accelerator-0.4.5/tests/unit/test_http_streaming.py +234 -0
  26. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_init_command.py +3 -3
  27. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_pipeline_publisher.py +12 -9
  28. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_runtime_model_config.py +32 -0
  29. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_setup_wizard.py +241 -3
  30. agentops_accelerator-0.4.5/tests/unit/test_yaml_utils.py +13 -0
  31. agentops_accelerator-0.4.3/tests/unit/test_azd_eval_init.py +0 -361
  32. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.claude-plugin/marketplace.json +0 -0
  33. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.gitattributes +0 -0
  34. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/actions/azure-oidc-login/action.yml +0 -0
  35. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/code-quality-py.instructions.md +0 -0
  36. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/copilot-instructions.md +0 -0
  37. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/dependabot.yml +0 -0
  38. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/extensions/agentops-skills/extension.mjs +0 -0
  39. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/plugin/marketplace.json +0 -0
  40. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/skills/release-management/SKILL.md +0 -0
  41. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/workflows/_build.yml +0 -0
  42. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/workflows/agentops-watchdog.yml +0 -0
  43. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/workflows/ci.yml +0 -0
  44. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/workflows/cut-release.yml +0 -0
  45. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/workflows/e2e.yml +0 -0
  46. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/workflows/release.yml +0 -0
  47. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.github/workflows/staging.yml +0 -0
  48. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.gitignore +0 -0
  49. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.pre-commit-config.yaml +0 -0
  50. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.vscode/launch.json +0 -0
  51. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.vscode/settings.json +0 -0
  52. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/.vscode/tasks.json +0 -0
  53. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/CONTRIBUTING.md +0 -0
  54. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/LICENSE +0 -0
  55. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/README.md +0 -0
  56. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/SECURITY.md +0 -0
  57. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/bundles.md +0 -0
  58. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/ci-github-actions.md +0 -0
  59. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/concepts.md +0 -0
  60. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/doctor-checks.md +0 -0
  61. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/doctor-explained.md +0 -0
  62. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/e2e-live-architecture.md +0 -0
  63. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/e2e-live-setup.md +0 -0
  64. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/foundry-evaluation-sdk-built-in-evaluators.md +0 -0
  65. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/how-it-works.md +0 -0
  66. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/media/agentops-diagrams.vsdx +0 -0
  67. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/media/foundry-control-plane.png +0 -0
  68. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/release-process.md +0 -0
  69. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/tutorial-end-to-end.md +0 -0
  70. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/tutorial-hosted-agent-quickstart.md +0 -0
  71. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/docs/tutorial-prompt-agent.md +0 -0
  72. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/examples/flat-quickstart/README.md +0 -0
  73. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/examples/flat-quickstart/agentops.yaml +0 -0
  74. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/examples/flat-quickstart/dataset.jsonl +0 -0
  75. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/icon.png +0 -0
  76. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/infra/e2e/agent-app/Dockerfile +0 -0
  77. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/infra/e2e/agent-app/app.py +0 -0
  78. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/infra/e2e/agent-app/requirements.txt +0 -0
  79. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/infra/e2e/bootstrap.bicep +0 -0
  80. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/infra/e2e/bootstrap.parameters.example.json +0 -0
  81. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/infra/e2e/perrun.bicep +0 -0
  82. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/launch.json +0 -0
  83. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/media/foundry.svg +0 -0
  84. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/media/quickstart.gif +0 -0
  85. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/plugins/agentops/.vscodeignore +0 -0
  86. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/plugins/agentops/LICENSE +0 -0
  87. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/plugins/agentops/README.md +0 -0
  88. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/plugins/agentops/package.json +0 -0
  89. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/plugins/agentops/plugin.json +0 -0
  90. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-agent/SKILL.md +0 -0
  91. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-config/SKILL.md +0 -0
  92. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-dataset/SKILL.md +0 -0
  93. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-report/SKILL.md +0 -0
  94. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-workflow/SKILL.md +0 -0
  95. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/pyproject.toml +0 -0
  96. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/create_support_agent.py +0 -0
  97. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/cut-release.ps1 +0 -0
  98. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/cut-release.sh +0 -0
  99. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/e2e_aggregate_summary.py +0 -0
  100. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/e2e_data/basic.jsonl +0 -0
  101. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/e2e_data/rag.jsonl +0 -0
  102. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/e2e_data/tools.jsonl +0 -0
  103. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/e2e_demo.py +0 -0
  104. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/e2e_hosted_agent.py +0 -0
  105. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/e2e_make_transcript.py +0 -0
  106. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/e2e_render_config.py +0 -0
  107. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/release.ps1 +0 -0
  108. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/release.sh +0 -0
  109. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/setup-e2e-new-tenant.ps1 +0 -0
  110. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/staging.ps1 +0 -0
  111. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/staging.sh +0 -0
  112. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/sync-skills.ps1 +0 -0
  113. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/scripts/sync-skills.sh +0 -0
  114. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/setup.cfg +0 -0
  115. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/__init__.py +0 -0
  116. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/__main__.py +0 -0
  117. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/__init__.py +0 -0
  118. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/_legacy_ids.py +0 -0
  119. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/analyzer.py +0 -0
  120. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/__init__.py +0 -0
  121. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/_rbac_authorization.py +0 -0
  122. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/catalog.py +0 -0
  123. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/errors.py +0 -0
  124. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/foundry_config.py +0 -0
  125. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/governance.py +0 -0
  126. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/latency.py +0 -0
  127. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/observability.py +0 -0
  128. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/opex.py +0 -0
  129. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/opex_workspace.py +0 -0
  130. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture.py +0 -0
  131. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture_rules/__init__.py +0 -0
  132. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture_rules/content_filter.py +0 -0
  133. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture_rules/diagnostics.py +0 -0
  134. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture_rules/local_auth.py +0 -0
  135. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture_rules/managed_identity.py +0 -0
  136. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture_rules/network.py +0 -0
  137. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/rbac_openai_data_plane.py +0 -0
  138. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/regression.py +0 -0
  139. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/release_readiness.py +0 -0
  140. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/safety.py +0 -0
  141. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/spec_conformance.py +0 -0
  142. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/cockpit.py +0 -0
  143. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/config.py +0 -0
  144. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/findings.py +0 -0
  145. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/history.py +0 -0
  146. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/knowledge/__init__.py +0 -0
  147. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/knowledge/waf-checklist.csv +0 -0
  148. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/__init__.py +0 -0
  149. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_base.py +0 -0
  150. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_bundle_rule.py +0 -0
  151. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_client.py +0 -0
  152. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_dataset_rules.py +0 -0
  153. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_engine.py +0 -0
  154. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_prompt_rules.py +0 -0
  155. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_spec_rules.py +0 -0
  156. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/production_telemetry.py +0 -0
  157. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/report.py +0 -0
  158. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/server/__init__.py +0 -0
  159. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/server/app.py +0 -0
  160. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/server/auth.py +0 -0
  161. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/server/chat.py +0 -0
  162. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/server/protocol.py +0 -0
  163. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/__init__.py +0 -0
  164. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/_credentials.py +0 -0
  165. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/azure_monitor.py +0 -0
  166. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/azure_resources.py +0 -0
  167. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/foundry_control.py +0 -0
  168. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/results_history.py +0 -0
  169. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/spec_detectors/__init__.py +0 -0
  170. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/spec_detectors/_base.py +0 -0
  171. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/spec_detectors/agents_md.py +0 -0
  172. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/spec_detectors/spec_kit.py +0 -0
  173. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/agent/time_range.py +0 -0
  174. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/cli/__init__.py +0 -0
  175. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/core/__init__.py +0 -0
  176. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/core/azd_eval.py +0 -0
  177. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/core/config_loader.py +0 -0
  178. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/core/evaluators.py +0 -0
  179. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/core/governance.py +0 -0
  180. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/core/release_evidence.py +0 -0
  181. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/core/results.py +0 -0
  182. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/mcp/__init__.py +0 -0
  183. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/mcp/server.py +0 -0
  184. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/__init__.py +0 -0
  185. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/azd_runner.py +0 -0
  186. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/cloud_results.py +0 -0
  187. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/cloud_runner.py +0 -0
  188. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/comparison.py +0 -0
  189. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/diagnostics.py +0 -0
  190. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/official_eval.py +0 -0
  191. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/orchestrator.py +0 -0
  192. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/prompt_deploy.py +0 -0
  193. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/reporter.py +0 -0
  194. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/pipeline/thresholds.py +0 -0
  195. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/__init__.py +0 -0
  196. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/eval_analysis.py +0 -0
  197. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/evidence_pack.py +0 -0
  198. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/initializer.py +0 -0
  199. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/preflight.py +0 -0
  200. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/skills.py +0 -0
  201. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/trace_promotion.py +0 -0
  202. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/services/workflow_analysis.py +0 -0
  203. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/.gitignore +0 -0
  204. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/__init__.py +0 -0
  205. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/agent-server/Dockerfile +0 -0
  206. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/agent-server/README.md +0 -0
  207. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/agent-server/main.bicep +0 -0
  208. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/agent.yaml +0 -0
  209. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/agentops.yaml +0 -0
  210. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/foundry.svg +0 -0
  211. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/icon.png +0 -0
  212. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev-azd.yml +0 -0
  213. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev.yml +0 -0
  214. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod-azd.yml +0 -0
  215. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod.yml +0 -0
  216. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prompt-agent.yml +0 -0
  217. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa-azd.yml +0 -0
  218. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa.yml +0 -0
  219. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-pr-prompt-agent.yml +0 -0
  220. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-pr.yml +0 -0
  221. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-watchdog.yml +0 -0
  222. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/project.gitignore +0 -0
  223. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/sample-traces.jsonl +0 -0
  224. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-agent/SKILL.md +0 -0
  225. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-config/SKILL.md +0 -0
  226. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-dataset/SKILL.md +0 -0
  227. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-report/SKILL.md +0 -0
  228. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-workflow/SKILL.md +0 -0
  229. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/smoke.jsonl +0 -0
  230. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/waf-checklist.README.md +0 -0
  231. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/waf-checklist.csv +0 -0
  232. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-dev-azd.yml +0 -0
  233. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-dev.yml +0 -0
  234. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-prod-azd.yml +0 -0
  235. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-prod.yml +0 -0
  236. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-prompt-agent.yml +0 -0
  237. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-qa-azd.yml +0 -0
  238. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-qa.yml +0 -0
  239. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-pr-prompt-agent.yml +0 -0
  240. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-pr.yml +0 -0
  241. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-watchdog.yml +0 -0
  242. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/utils/__init__.py +0 -0
  243. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/utils/azd_env.py +0 -0
  244. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/utils/azure_endpoints.py +0 -0
  245. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/utils/colors.py +0 -0
  246. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/utils/dotenv_loader.py +0 -0
  247. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/utils/foundry_discovery.py +0 -0
  248. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/utils/logging.py +0 -0
  249. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops/utils/telemetry.py +0 -0
  250. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops_accelerator.egg-info/dependency_links.txt +0 -0
  251. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops_accelerator.egg-info/entry_points.txt +0 -0
  252. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops_accelerator.egg-info/requires.txt +0 -0
  253. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/src/agentops_accelerator.egg-info/top_level.txt +0 -0
  254. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/TESTING.md +0 -0
  255. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/fixtures/fake_adapter.py +0 -0
  256. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/fixtures/fake_eval_runner.py +0 -0
  257. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/integration/.gitkeep +0 -0
  258. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/integration/test_cli_flat_schema.py +0 -0
  259. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/integration/test_pipeline_smoke.py +0 -0
  260. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/.gitkeep +0 -0
  261. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_analyzer.py +0 -0
  262. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_categories.py +0 -0
  263. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_errors.py +0 -0
  264. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_foundry_config.py +0 -0
  265. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_observability.py +0 -0
  266. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_opex.py +0 -0
  267. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_opex_workspace.py +0 -0
  268. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_rbac_openai_data_plane.py +0 -0
  269. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_regression.py +0 -0
  270. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_safety.py +0 -0
  271. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_spec_conformance.py +0 -0
  272. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_cli.py +0 -0
  273. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_config.py +0 -0
  274. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_findings.py +0 -0
  275. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_history.py +0 -0
  276. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_opex_workspace_check.py +0 -0
  277. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_posture_rules.py +0 -0
  278. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_results_history.py +0 -0
  279. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_agent_server.py +0 -0
  280. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_azd_env.py +0 -0
  281. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_azd_eval.py +0 -0
  282. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_azd_runner.py +0 -0
  283. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_azure_endpoints.py +0 -0
  284. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_azure_resources_discovery.py +0 -0
  285. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_cli_cockpit_connection_summary.py +0 -0
  286. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_cli_cockpit_port_conflict.py +0 -0
  287. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_cli_commands.py +0 -0
  288. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_cli_explain.py +0 -0
  289. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_cloud_results.py +0 -0
  290. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_cloud_runner.py +0 -0
  291. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_cockpit.py +0 -0
  292. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_diagnostics.py +0 -0
  293. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_doctor_catalog.py +0 -0
  294. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_doctor_cli_explain.py +0 -0
  295. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_dotenv_loader.py +0 -0
  296. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_e2e_render.py +0 -0
  297. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_eval_analysis.py +0 -0
  298. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_eval_run_grader_errors.py +0 -0
  299. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_evaluators.py +0 -0
  300. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_foundry_discovery.py +0 -0
  301. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_governance.py +0 -0
  302. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_initializer.py +0 -0
  303. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_invocations.py +0 -0
  304. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_knowledge_loader.py +0 -0
  305. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_llm_assist.py +0 -0
  306. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_llm_assist_spec_rules.py +0 -0
  307. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_mcp_server.py +0 -0
  308. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_official_eval.py +0 -0
  309. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_pipeline_reporter.py +0 -0
  310. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_preflight.py +0 -0
  311. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_production_telemetry.py +0 -0
  312. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_prompt_deploy.py +0 -0
  313. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_release_evidence.py +0 -0
  314. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_runtime_conversation.py +0 -0
  315. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_shared_credentials.py +0 -0
  316. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_skills.py +0 -0
  317. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_skills_sync.py +0 -0
  318. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_telemetry.py +0 -0
  319. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_time_range.py +0 -0
  320. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_trace_promotion.py +0 -0
  321. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tests/unit/test_workflow_analysis.py +0 -0
  322. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/tombstones/vscode/CDN_DEPRECATION_REQUEST.md +0 -0
  323. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.5}/uv.lock +0 -0
@@ -335,7 +335,11 @@ Full schema:
335
335
  | `response_field` | no | HTTP / invocations only. Dot-path to extract the response text (default: `text`). |
336
336
  | `tool_calls_field` | no | HTTP / invocations only. Dot-path to extract tool calls for agent-workflow evaluators. |
337
337
  | `headers` | no | HTTP / invocations only. Static extra HTTP headers. |
338
- | `auth_header_env` | no | HTTP / invocations only. Environment variable that holds a Bearer token. |
338
+ | `auth_header_env` | no | HTTP / invocations only. Environment variable that holds the auth token. |
339
+ | `auth_header_name` | no | HTTP / invocations only. Header name for the auth token (default: `Authorization`). |
340
+ | `auth_value_template` | no | HTTP / invocations only. Template for the auth header value; `{token}` is replaced by the `auth_header_env` value (default: `Bearer {token}`). |
341
+ | `response_mode` | no | HTTP / invocations only. `json` (default, single `json.loads` of the body), `sse` (parse `data:` lines), or `text` (concatenate raw streamed text). |
342
+ | `stream` | no | HTTP / invocations only. Streaming aggregation block for `response_mode: sse|text`: `text_field` (dot-path to token text in JSON `data:` lines), `done_marker` (stop token, e.g. `[DONE]`), `strip_leading_token` (drop the first whitespace-delimited token, e.g. a `conversation_id` prefix). |
339
343
  | `assert_path` | no | Optional ASSERT policy/results file or directory referenced by Doctor/evidence. AgentOps does not execute ASSERT. |
340
344
  | `acs_path` | no | Optional Agent Control Specification contract file or directory referenced by Doctor/evidence. AgentOps does not apply ACS controls. |
341
345
  | `redteam_path` | no | Optional red-team plan/results evidence path. AgentOps records metadata and never exposes payload text. |
@@ -5,6 +5,53 @@ This format follows [Keep a Changelog](https://keepachangelog.com/) and adheres
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.4.5] - 2026-06-19
9
+
10
+ ### Added
11
+ - **Governance gates for HTTP agents (ASSERT and Red Team).** `agentops assert
12
+ run` and `agentops redteam run` now work against a live HTTP orchestrator
13
+ endpoint, not only model/deployment targets. Red Team wraps the HTTP endpoint
14
+ as an SDK-compatible target and reuses the AgentOps HTTP mapping
15
+ (`request_field`, `response_mode`, `stream`, custom headers). ASSERT resolves
16
+ `assert-ai` inside the active virtual environment, accepts non-secret values
17
+ from `assert.env`, can request an AAD token from the Azure CLI for local
18
+ auth-disabled Azure AI resources, injects the GPT-5 `max_completion_tokens`
19
+ shim only when configured, and materializes a runtime ASSERT config so
20
+ committed configs no longer need absolute artifact paths.
21
+ - **Generated workflows run the ASSERT and Red Team gates.** `agentops workflow
22
+ generate` now installs the optional ASSERT/Red Team dependencies, runs those
23
+ gates when `assert:` or `redteam:` is present in `agentops.yaml`, uploads
24
+ their artifacts, and emits the corrected Red Team command quoting.
25
+
26
+ ### Fixed
27
+ - **Reasoning-model judges no longer fail the eval gate in CI.** The generated
28
+ GitHub Actions and Azure DevOps eval and Red Team steps now forward
29
+ `AZURE_OPENAI_MODEL_NAME`, so AgentOps detects reasoning models (such as
30
+ `gpt-5-nano`) and uses `max_completion_tokens` instead of `max_tokens`. This
31
+ removes the judge `400` error that could break the eval gate when the judge
32
+ deployment is a reasoning model.
33
+
34
+ ## [0.4.4] - 2026-06-18
35
+
36
+ ### Added
37
+ - **Streaming HTTP targets.** The `http_json` target now understands streaming
38
+ responses so AgentOps can evaluate SSE/streaming agents (such as the
39
+ gpt-rag-orchestrator `/orchestrator` endpoint) directly, without a manual
40
+ adapter. A new `response_mode: json|sse|text` field selects the response
41
+ parser (`json` is the default and preserves the existing single-`json.loads`
42
+ behavior exactly). For `sse`/`text`, an optional `stream` block configures
43
+ aggregation: `text_field` (dotted path to the token text when each SSE
44
+ `data:` line is JSON), `done_marker` (stop token, e.g. `[DONE]`), and
45
+ `strip_leading_token` (drop the leading whitespace-delimited token, e.g. the
46
+ orchestrator's `conversation_id` prefix). The auth header is now configurable
47
+ via `auth_header_name` (default `Authorization`) and `auth_value_template`
48
+ (default `Bearer {token}`, where `{token}` is replaced by the
49
+ `auth_header_env` value), so targets gated by a shared secret such as
50
+ `X-API-KEY` are supported without hardcoding the secret in `agentops.yaml`.
51
+ Streaming uses the same stdlib (`urllib`) transport and 3-try backoff as the
52
+ JSON path. When a JSON parse fails on a `text/event-stream` response, the
53
+ error now suggests setting `response_mode: sse|text`.
54
+
8
55
  ## [0.4.3] - 2026-06-17
9
56
 
10
57
  ### Added
@@ -35,6 +82,22 @@ This format follows [Keep a Changelog](https://keepachangelog.com/) and adheres
35
82
  `eval.yaml`, so users can see why those evaluators were chosen.
36
83
  ([#323](https://github.com/Azure/agentops/issues/323))
37
84
 
85
+ ## [0.4.2] - 2026-06-17
86
+
87
+ ### Fixed
88
+ - **`agentops eval init` now works with both old and new `azure.ai.agents` azd
89
+ extensions.** Version 0.1.40 of the extension renamed the eval subcommand from
90
+ `azd ai agent eval init` to `azd ai agent eval generate`, which made
91
+ `agentops eval init` hard-fail with `Command "init" is deprecated, use 'azd ai
92
+ agent eval generate' instead`. AgentOps now invokes `generate` first and
93
+ transparently falls back to the legacy `init` subcommand when an older
94
+ extension does not recognise `generate`. The fallback only triggers on
95
+ subcommand-name/deprecation errors; genuine failures (authentication, project
96
+ endpoint, timeouts) are still surfaced immediately and unchanged. All
97
+ previously passed flags (`--project-endpoint`, `--agent`,
98
+ `--gen-instruction-file`, `--eval-model`, `--dataset`, `--evaluator`) and the
99
+ recipe discovery/persistence behaviour are preserved.
100
+
38
101
  ## [0.4.1] - 2026-06-15
39
102
 
40
103
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentops-accelerator
3
- Version: 0.4.3
3
+ Version: 0.4.5
4
4
  Summary: Release readiness gates and evidence for Microsoft Foundry agents
5
5
  License: MIT License
6
6
 
@@ -301,4 +301,11 @@ dataset reference.
301
301
  ```
302
302
  - For HTTP/JSON agents that need auth, set
303
303
  `auth_header_env: MY_TOKEN_VAR` and AgentOps adds
304
- `Authorization: Bearer $MY_TOKEN_VAR`.
304
+ `Authorization: Bearer $MY_TOKEN_VAR`. For a shared-secret gate, override the
305
+ header with `auth_header_name: X-API-KEY` and `auth_value_template: "{token}"`.
306
+ - For streaming HTTP agents (e.g. an SSE `text/event-stream` endpoint), set
307
+ `response_mode: sse` (each `data:` line) or `response_mode: text` (raw
308
+ streamed text). Use the optional `stream:` block to tune aggregation:
309
+ `text_field` (dot-path to the token text when `data:` lines are JSON),
310
+ `done_marker` (e.g. `[DONE]`), and `strip_leading_token: true` (drop a leading
311
+ `conversation_id` prefix). `response_mode: json` (default) is unchanged.
@@ -206,6 +206,115 @@ assert-ai init
206
206
  It walks them through behavior description, target callable / model /
207
207
  endpoint, dimensions, and judge presets, and writes a validated YAML.
208
208
 
209
+ ### HTTP orchestrator ASSERT
210
+
211
+ If `agentops.yaml` uses `protocol: http-json` or the user says the target is an
212
+ HTTP orchestrator, do not use ASSERT native endpoint mode. `assert-ai 0.1.0`
213
+ posts `message/history` and expects `response`; AgentOps HTTP targets may use
214
+ custom fields like `ask` and streamed text. Scaffold a callable adapter instead.
215
+
216
+ Create `.agentops/assert_http_adapter.py`:
217
+
218
+ ```python
219
+ from __future__ import annotations
220
+
221
+ import json
222
+ from pathlib import Path
223
+ from typing import Any
224
+
225
+ from agentops.core.config_loader import load_agentops_config
226
+ from agentops.pipeline.invocations import (
227
+ _aggregate_stream,
228
+ _dot_path,
229
+ _http_request_json,
230
+ _http_request_stream,
231
+ )
232
+
233
+
234
+ def target(message: str, history: list[dict[str, Any]] | None = None) -> str:
235
+ del history
236
+ config = load_agentops_config(Path("agentops.yaml"))
237
+ if not config.agent:
238
+ raise RuntimeError("agentops.yaml must define a top-level HTTP agent endpoint")
239
+
240
+ request_field = config.request_field or "message"
241
+ headers = dict(config.headers)
242
+ headers.setdefault("Content-Type", "application/json")
243
+ body = {request_field: message}
244
+
245
+ if config.response_mode in ("sse", "text"):
246
+ raw_body = _http_request_stream(
247
+ method="POST",
248
+ url=config.agent,
249
+ headers=headers,
250
+ body=body,
251
+ timeout=120,
252
+ )
253
+ return _aggregate_stream(config.response_mode, raw_body, config.stream).strip()
254
+
255
+ payload = _http_request_json(
256
+ method="POST",
257
+ url=config.agent,
258
+ headers=headers,
259
+ body=body,
260
+ timeout=120,
261
+ )
262
+ response_path = config.response_field or "text"
263
+ response_text = _dot_path(payload, response_path)
264
+ if response_text is None and isinstance(payload, dict):
265
+ for fallback in ("response", "output", "content", "message", "text"):
266
+ response_text = payload.get(fallback)
267
+ if response_text:
268
+ break
269
+ return (
270
+ response_text
271
+ if isinstance(response_text, str)
272
+ else json.dumps(response_text or "", ensure_ascii=False)
273
+ )
274
+ ```
275
+
276
+ Create an ASSERT smoke from a known-good eval dataset row, not a random general
277
+ question. For the HTTP tutorial, use:
278
+
279
+ ```yaml
280
+ suite: gpt-rag-http-smoke
281
+ run: local-http-contract-smoke
282
+
283
+ default_model:
284
+ name: azure/chat
285
+
286
+ pipeline:
287
+ systematize:
288
+ enabled: false
289
+ test_set:
290
+ enabled: false
291
+ inference:
292
+ test_set_path: test_set.jsonl
293
+ target:
294
+ callable: assert_http_adapter:target
295
+ max_turns: 1
296
+ judge:
297
+ taxonomy_path: taxonomy.json
298
+ preset:
299
+ - grounding
300
+ ```
301
+
302
+ Append this `assert:` block to `agentops.yaml`. Discover `AZURE_API_BASE` from
303
+ the Azure AI/OpenAI resource and set `AZURE_API_VERSION` to the version used by
304
+ the deployment. These are not secrets. If local auth is disabled, AgentOps will
305
+ use the signed-in Azure CLI token for the ASSERT subprocess.
306
+
307
+ ```yaml
308
+ assert:
309
+ config: ./assert/eval_config.yaml
310
+ fail_on_violations: true
311
+ env:
312
+ AZURE_API_BASE: https://<azure-ai-resource>.cognitiveservices.azure.com/
313
+ AZURE_API_VERSION: 2024-12-01-preview
314
+ AGENTOPS_ASSERT_AZURE_MAX_COMPLETION_TOKENS: "true"
315
+ PYTHONPATH: .agentops
316
+ ```
317
+
209
318
  **3. Append the `assert:` block to `agentops.yaml`** (preserve every existing
210
319
  key — read the file, append the block if missing, write back):
211
320
 
@@ -14,13 +14,16 @@ from html import escape as html_escape
14
14
  from pathlib import Path
15
15
  from textwrap import wrap
16
16
  from collections.abc import Sequence
17
- from typing import Annotated, Any, Optional
17
+ from typing import Annotated, Any, Optional, TYPE_CHECKING
18
18
 
19
19
  import typer
20
20
 
21
21
  from agentops.utils.colors import style
22
22
  from agentops.utils.logging import get_logger, setup_logging
23
23
 
24
+ if TYPE_CHECKING:
25
+ from agentops.core.agentops_config import AgentOpsConfig
26
+
24
27
  app = typer.Typer(
25
28
  name="agentops",
26
29
  help="AgentOps - standardized evaluation workflows for AI projects.",
@@ -1574,11 +1577,13 @@ def cmd_init(
1574
1577
  from agentops.services.setup_wizard import (
1575
1578
  AGENT_TITLE,
1576
1579
  DATASET_TITLE,
1580
+ ENDPOINT_SOURCE_AZD_RESOURCE_DISCOVERY,
1577
1581
  PROJECT_ENDPOINT_TITLE,
1578
1582
  REQUIRED_CONFIGURATION_MESSAGE,
1579
1583
  WizardAnswers,
1580
1584
  apply_answers,
1581
1585
  discover_defaults,
1586
+ is_placeholder_agent,
1582
1587
  run_wizard,
1583
1588
  validate_agent,
1584
1589
  validate_dataset,
@@ -1763,12 +1768,14 @@ def cmd_init(
1763
1768
  force_prompt_fields = {"agent", "dataset"} if config_seeded_this_run else set()
1764
1769
  prompt_values = [
1765
1770
  defaults.project_endpoint,
1766
- defaults.agent,
1771
+ None if is_placeholder_agent(defaults.agent) else defaults.agent,
1767
1772
  defaults.dataset,
1768
1773
  ]
1769
- will_prompt = reconfigure or bool(force_prompt_fields) or any(
1770
- v is None or not str(v).strip()
1771
- for v in prompt_values
1774
+ will_prompt = (
1775
+ reconfigure
1776
+ or bool(force_prompt_fields)
1777
+ or any(v is None or not str(v).strip() for v in prompt_values)
1778
+ or defaults.project_endpoint_source == ENDPOINT_SOURCE_AZD_RESOURCE_DISCOVERY
1772
1779
  )
1773
1780
  if will_prompt:
1774
1781
  typer.echo(style("Press Enter to accept the value in brackets.", "dim"))
@@ -1817,6 +1824,7 @@ def cmd_init(
1817
1824
  workspace,
1818
1825
  prompt=_prompt,
1819
1826
  echo=_wizard_echo,
1827
+ defaults=defaults,
1820
1828
  on_answer=_on_answer,
1821
1829
  reconfigure=reconfigure,
1822
1830
  force_prompt_fields=force_prompt_fields,
@@ -2121,8 +2129,13 @@ def cmd_eval_init(
2121
2129
  if _maybe_explain_leaf(("eval", "init"), explain):
2122
2130
  return
2123
2131
 
2132
+ from agentops.core.config_loader import load_agentops_config
2124
2133
  from agentops.pipeline.azd_runner import AzdBackendError
2125
- from agentops.services.azd_eval_init import run_azd_eval_init
2134
+ from agentops.services.azd_eval_init import (
2135
+ ensure_local_evaluator_model_env,
2136
+ recommend_evaluators_for_config,
2137
+ run_azd_eval_init,
2138
+ )
2126
2139
 
2127
2140
  workspace = directory.resolve()
2128
2141
  config_path = _resolve_eval_config_path(config)
@@ -2130,8 +2143,48 @@ def cmd_eval_init(
2130
2143
  config_path = workspace / config_path
2131
2144
 
2132
2145
  try:
2146
+ loaded_config = load_agentops_config(config_path)
2147
+ target = loaded_config.resolved_target()
2148
+ if target.kind not in {"foundry_prompt", "foundry_hosted"}:
2149
+ selection = recommend_evaluators_for_config(
2150
+ config_path=config_path,
2151
+ dataset=dataset,
2152
+ )
2153
+ typer.echo(
2154
+ f"{_cli_label('AgentOps eval init')}: local HTTP/model target detected; "
2155
+ "azd eval assets are not required."
2156
+ )
2157
+ typer.echo(f"{_cli_label('Evaluator recommendation')}: {selection.source}")
2158
+ for signal in selection.signals:
2159
+ typer.echo(f" {style('-', 'dim')} {signal}")
2160
+ if selection.names:
2161
+ typer.echo(f"{_cli_label('Evaluators')}: {', '.join(selection.names)}")
2162
+ model_env = ensure_local_evaluator_model_env(
2163
+ workspace=workspace,
2164
+ selection=selection,
2165
+ )
2166
+ if model_env.configured:
2167
+ action = "configured" if model_env.changed_keys else "using"
2168
+ typer.echo(
2169
+ f"{_cli_label('Evaluator model')}: {action} "
2170
+ f"{model_env.deployment} ({model_env.model})"
2171
+ )
2172
+ if model_env.changed_keys and model_env.env_path is not None:
2173
+ typer.echo(
2174
+ f" {style('-', 'dim')} saved "
2175
+ f"{', '.join(model_env.changed_keys)} to "
2176
+ f"{_cli_path(model_env.env_path)}"
2177
+ )
2178
+ elif selection.names and model_env.source != "not needed":
2179
+ typer.echo(
2180
+ f"{_cli_warn('Warning')}: could not auto-discover an evaluator "
2181
+ "model deployment. Set AZURE_OPENAI_DEPLOYMENT and "
2182
+ "AZURE_OPENAI_MODEL_NAME before `agentops eval run`."
2183
+ )
2184
+ typer.echo(f"{_cli_label('Next')}: {_cli_command('agentops eval run')}")
2185
+ return
2133
2186
  typer.echo(
2134
- f"{_cli_label('azd eval init')}: checking/generating eval.yaml "
2187
+ f"{_cli_label('azd eval generate')}: checking/generating eval.yaml "
2135
2188
  "(this can take a few minutes on the first run)"
2136
2189
  )
2137
2190
  result = run_azd_eval_init(
@@ -2148,9 +2201,9 @@ def cmd_eval_init(
2148
2201
  raise typer.Exit(code=1) from exc
2149
2202
 
2150
2203
  if result.command_ran:
2151
- typer.echo(f"{_cli_label('azd eval init')}: completed")
2204
+ typer.echo(f"{_cli_label('azd eval generate')}: completed")
2152
2205
  else:
2153
- typer.echo(f"{_cli_label('azd eval init')}: existing recipe reused")
2206
+ typer.echo(f"{_cli_label('azd eval generate')}: existing recipe reused")
2154
2207
  if result.evaluators:
2155
2208
  typer.echo(f"{_cli_label('Evaluator recommendation')}: {result.evaluator_source}")
2156
2209
  for signal in result.evaluator_signals:
@@ -2346,6 +2399,17 @@ def cmd_assert_run(
2346
2399
  ),
2347
2400
  ),
2348
2401
  ] = False,
2402
+ cached: Annotated[
2403
+ bool,
2404
+ typer.Option(
2405
+ "--cached",
2406
+ help=(
2407
+ "Reuse cached inference/judge rows from a previous run with the "
2408
+ "same run id. By default ASSERT re-runs inference against the live "
2409
+ "target each time so the gate always exercises the current agent."
2410
+ ),
2411
+ ),
2412
+ ] = False,
2349
2413
  explain: Annotated[str | None, typer.Argument(hidden=True)] = None,
2350
2414
  ) -> None:
2351
2415
  """Invoke the ASSERT (assert-ai) CLI and normalize its results."""
@@ -2403,6 +2467,7 @@ def cmd_assert_run(
2403
2467
  resolved_suite: str | None = suite
2404
2468
  resolved_run_id: str | None = run_id
2405
2469
  fail_on_violations = True
2470
+ subprocess_env: dict[str, str] | None = None
2406
2471
 
2407
2472
  if cfg.assert_run is not None:
2408
2473
  if eval_config_path is None:
@@ -2414,6 +2479,7 @@ def cmd_assert_run(
2414
2479
  if resolved_run_id is None:
2415
2480
  resolved_run_id = cfg.assert_run.run_id
2416
2481
  fail_on_violations = cfg.assert_run.fail_on_violations
2482
+ subprocess_env = dict(cfg.assert_run.env)
2417
2483
  if no_gate:
2418
2484
  fail_on_violations = False
2419
2485
 
@@ -2428,6 +2494,12 @@ def cmd_assert_run(
2428
2494
  typer.echo(
2429
2495
  f" suite={resolved_suite or '<auto>'} run_id={resolved_run_id or '<auto>'}"
2430
2496
  )
2497
+ if cached:
2498
+ typer.echo(" cache: reusing prior inference/judge rows when available")
2499
+ else:
2500
+ typer.echo(" cache: forcing fresh inference against the live target")
2501
+
2502
+ assert_extra_args = None if cached else ["--force-stage", "inference"]
2431
2503
 
2432
2504
  try:
2433
2505
  result = run_assert(
@@ -2436,6 +2508,8 @@ def cmd_assert_run(
2436
2508
  results_dir=resolved_results_dir,
2437
2509
  suite=resolved_suite,
2438
2510
  run_id=resolved_run_id,
2511
+ env=subprocess_env,
2512
+ extra_args=assert_extra_args,
2439
2513
  )
2440
2514
  except AssertRunnerError as exc:
2441
2515
  typer.echo(f"{_cli_error('Error')}: {exc}", err=True)
@@ -2471,9 +2545,15 @@ def cmd_assert_run(
2471
2545
  violations = bucket.get("violations", 0)
2472
2546
  total = bucket.get("total", 0)
2473
2547
  skipped = bucket.get("skipped", 0)
2474
- marker = _cli_ok("OK") if violations == 0 else _cli_error("VIOLATIONS")
2475
2548
  suffix = f" (skipped={skipped})" if skipped else ""
2476
- typer.echo(f" {name}: {violations}/{total}{suffix} {marker}")
2549
+ if violations == 0:
2550
+ clean = max(total - skipped, 0)
2551
+ typer.echo(f" {name}: {clean}/{total} clean{suffix} {_cli_ok('OK')}")
2552
+ else:
2553
+ typer.echo(
2554
+ f" {name}: {violations}/{total} violating{suffix} "
2555
+ f"{_cli_error('VIOLATIONS')}"
2556
+ )
2477
2557
 
2478
2558
  typer.echo("")
2479
2559
  typer.echo(_cli_heading("Inspect details"))
@@ -2666,6 +2746,7 @@ def cmd_redteam_run(
2666
2746
  err=True,
2667
2747
  )
2668
2748
  raise typer.Exit(code=1)
2749
+ _apply_http_redteam_defaults(resolved_target, cfg)
2669
2750
 
2670
2751
  if output_path is not None and not output_path.is_absolute():
2671
2752
  output_path = (workspace / output_path).resolve()
@@ -2786,6 +2867,21 @@ def _derive_redteam_target_from_agent(agent: str | None) -> dict[str, Any]:
2786
2867
  return {"agent": agent}
2787
2868
 
2788
2869
 
2870
+ def _apply_http_redteam_defaults(target: dict[str, Any], cfg: AgentOpsConfig) -> None:
2871
+ if "endpoint" not in target:
2872
+ return
2873
+ if cfg.request_field:
2874
+ target.setdefault("request_field", cfg.request_field)
2875
+ if cfg.response_field:
2876
+ target.setdefault("response_field", cfg.response_field)
2877
+ if cfg.response_mode:
2878
+ target.setdefault("response_mode", cfg.response_mode)
2879
+ if cfg.headers:
2880
+ target.setdefault("headers", cfg.headers)
2881
+ if cfg.stream:
2882
+ target.setdefault("stream", cfg.stream.model_dump(exclude_none=True))
2883
+
2884
+
2789
2885
  def _run_flat_schema_eval(
2790
2886
  *,
2791
2887
  config_path: Path,
@@ -39,6 +39,14 @@ from pydantic import BaseModel, ConfigDict, Field, field_validator, model_valida
39
39
  #: Wire protocol for hosted / HTTP targets.
40
40
  Protocol = Literal["responses", "invocations", "http-json"]
41
41
 
42
+ #: How AgentOps reads an ``http-json`` response body.
43
+ #:
44
+ #: - ``json`` (default): parse a single JSON document. Preserves the exact
45
+ #: behavior of every existing ``http_json`` config.
46
+ #: - ``sse``: parse a Server-Sent Events body, concatenating ``data:`` lines.
47
+ #: - ``text``: concatenate a raw streamed text body.
48
+ ResponseMode = Literal["json", "sse", "text"]
49
+
42
50
  #: How thresholds compare against measured metric values.
43
51
  Criteria = Literal[">=", ">", "<=", "<", "==", "true", "false"]
44
52
 
@@ -454,6 +462,14 @@ class AssertRunConfig(BaseModel):
454
462
  "results without gating the pipeline."
455
463
  ),
456
464
  )
465
+ env: Dict[str, str] = Field(
466
+ default_factory=dict,
467
+ description=(
468
+ "Optional non-secret environment variables passed only to the "
469
+ "assert-ai subprocess, for example AZURE_API_BASE or "
470
+ "AZURE_API_VERSION."
471
+ ),
472
+ )
457
473
 
458
474
  model_config = ConfigDict(extra="forbid")
459
475
 
@@ -540,6 +556,41 @@ class RedTeamRunConfig(BaseModel):
540
556
  model_config = ConfigDict(extra="forbid")
541
557
 
542
558
 
559
+ class StreamConfig(BaseModel):
560
+ """Streaming aggregation options for ``http-json`` targets.
561
+
562
+ Only meaningful when ``response_mode`` is ``"sse"`` or ``"text"``. These
563
+ fields control how a streamed response body is parsed and reassembled into
564
+ a single answer string.
565
+ """
566
+
567
+ text_field: Optional[str] = Field(
568
+ None,
569
+ description=(
570
+ "For SSE where each 'data:' line is a JSON object, the dotted path "
571
+ "to the token text (e.g. 'delta.content'). Omit (None) when each "
572
+ "'data:' line is already raw text."
573
+ ),
574
+ )
575
+ done_marker: Optional[str] = Field(
576
+ None,
577
+ description=(
578
+ "Optional sentinel (e.g. '[DONE]'); aggregation stops when a "
579
+ "'data:' line equals this value."
580
+ ),
581
+ )
582
+ strip_leading_token: bool = Field(
583
+ False,
584
+ description=(
585
+ "Drop the first whitespace-delimited token from the aggregated "
586
+ "text. Use for endpoints that prefix the stream with an id (e.g. "
587
+ "the gpt-rag orchestrator emits '<conversation_id> ' first)."
588
+ ),
589
+ )
590
+
591
+ model_config = ConfigDict(extra="forbid")
592
+
593
+
543
594
  # ---------------------------------------------------------------------------
544
595
  # Top-level config
545
596
  # ---------------------------------------------------------------------------
@@ -600,7 +651,20 @@ class AgentOpsConfig(BaseModel):
600
651
 
601
652
  ``headers`` / ``auth_header_env``
602
653
  Optional HTTP request configuration for ``http-json`` and
603
- ``invocations`` targets.
654
+ ``invocations`` targets. ``auth_header_env`` names the environment
655
+ variable that holds the secret.
656
+
657
+ ``response_mode`` / ``stream``
658
+ ``http-json`` only. ``response_mode`` selects how the response body is
659
+ read: ``"json"`` (default, single JSON document), ``"sse"`` (Server-Sent
660
+ Events), or ``"text"`` (raw streamed text). The ``stream`` block tunes
661
+ SSE/text aggregation (``text_field``, ``done_marker``,
662
+ ``strip_leading_token``).
663
+
664
+ ``auth_header_name`` / ``auth_value_template``
665
+ ``http-json`` only. Decouple the auth header from the default
666
+ ``Authorization: Bearer {token}``. For a shared-secret endpoint set
667
+ ``auth_header_name: X-API-KEY`` and ``auth_value_template: "{token}"``.
604
668
 
605
669
  ``evaluators``
606
670
  Optional escape hatch: explicit list of evaluator names that overrides
@@ -696,6 +760,37 @@ class AgentOpsConfig(BaseModel):
696
760
  tool_calls_field: Optional[str] = None
697
761
  headers: Dict[str, str] = Field(default_factory=dict)
698
762
  auth_header_env: Optional[str] = None
763
+ response_mode: ResponseMode = Field(
764
+ "json",
765
+ description=(
766
+ "How to read the HTTP/JSON response body. 'json' (default) parses "
767
+ "a single JSON document and preserves existing behavior. 'sse' "
768
+ "parses Server-Sent Events 'data:' lines; 'text' concatenates a "
769
+ "raw streamed text body. Only valid for http-json targets."
770
+ ),
771
+ )
772
+ stream: Optional[StreamConfig] = Field(
773
+ None,
774
+ description=(
775
+ "Streaming aggregation options, used only when response_mode is "
776
+ "'sse' or 'text'."
777
+ ),
778
+ )
779
+ auth_header_name: Optional[str] = Field(
780
+ None,
781
+ description=(
782
+ "HTTP header that carries the secret read from auth_header_env. "
783
+ "Defaults to 'Authorization' when unset."
784
+ ),
785
+ )
786
+ auth_value_template: Optional[str] = Field(
787
+ None,
788
+ description=(
789
+ "Template for the auth header value; '{token}' is replaced by the "
790
+ "auth_header_env value. Defaults to 'Bearer {token}' when unset. "
791
+ "Use '{token}' alone for a raw shared-secret header like X-API-KEY."
792
+ ),
793
+ )
699
794
 
700
795
  evaluators: Optional[List[EvaluatorOverride]] = None
701
796
  rubrics: List[RubricConfig] = Field(
@@ -850,6 +945,10 @@ class AgentOpsConfig(BaseModel):
850
945
  or self.tool_calls_field
851
946
  or self.headers
852
947
  or self.auth_header_env
948
+ or self.response_mode != "json"
949
+ or self.stream is not None
950
+ or self.auth_header_name
951
+ or self.auth_value_template
853
952
  ):
854
953
  # Foundry hosted (responses/invocations) defines its own wire
855
954
  # format. HTTP-only request/response shaping is invalid there.
@@ -859,8 +958,9 @@ class AgentOpsConfig(BaseModel):
859
958
  else:
860
959
  raise ValueError(
861
960
  "request_field / response_field / tool_calls_field / "
862
- "headers / auth_header_env are only valid for HTTP/JSON "
863
- "or Foundry hosted (invocations) targets"
961
+ "headers / auth_header_env / response_mode / stream / "
962
+ "auth_header_name / auth_value_template are only valid for "
963
+ "HTTP/JSON or Foundry hosted (invocations) targets"
864
964
  )
865
965
  return self
866
966