agentops-accelerator 0.4.3__tar.gz → 0.4.4__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 (321) hide show
  1. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/AGENTS.md +5 -1
  2. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/CHANGELOG.md +21 -0
  3. {agentops_accelerator-0.4.3/src/agentops_accelerator.egg-info → agentops_accelerator-0.4.4}/PKG-INFO +1 -1
  4. {agentops_accelerator-0.4.3/src/agentops/templates → agentops_accelerator-0.4.4/plugins/agentops}/skills/agentops-eval/SKILL.md +8 -1
  5. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/agentops_config.py +95 -3
  6. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/invocations.py +162 -8
  7. {agentops_accelerator-0.4.3/plugins/agentops → agentops_accelerator-0.4.4/src/agentops/templates}/skills/agentops-eval/SKILL.md +8 -1
  8. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4/src/agentops_accelerator.egg-info}/PKG-INFO +1 -1
  9. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops_accelerator.egg-info/SOURCES.txt +1 -0
  10. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agentops_config.py +54 -0
  11. agentops_accelerator-0.4.4/tests/unit/test_http_streaming.py +234 -0
  12. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.claude-plugin/marketplace.json +0 -0
  13. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.gitattributes +0 -0
  14. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/actions/azure-oidc-login/action.yml +0 -0
  15. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/code-quality-py.instructions.md +0 -0
  16. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/copilot-instructions.md +0 -0
  17. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/dependabot.yml +0 -0
  18. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/extensions/agentops-skills/extension.mjs +0 -0
  19. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/plugin/marketplace.json +0 -0
  20. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/skills/release-management/SKILL.md +0 -0
  21. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/_build.yml +0 -0
  22. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/agentops-watchdog.yml +0 -0
  23. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/ci.yml +0 -0
  24. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/cut-release.yml +0 -0
  25. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/e2e.yml +0 -0
  26. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/release.yml +0 -0
  27. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/staging.yml +0 -0
  28. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.gitignore +0 -0
  29. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.pre-commit-config.yaml +0 -0
  30. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.vscode/launch.json +0 -0
  31. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.vscode/settings.json +0 -0
  32. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.vscode/tasks.json +0 -0
  33. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/CONTRIBUTING.md +0 -0
  34. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/LICENSE +0 -0
  35. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/README.md +0 -0
  36. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/SECURITY.md +0 -0
  37. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/bundles.md +0 -0
  38. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/ci-github-actions.md +0 -0
  39. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/concepts.md +0 -0
  40. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/doctor-checks.md +0 -0
  41. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/doctor-explained.md +0 -0
  42. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/e2e-live-architecture.md +0 -0
  43. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/e2e-live-setup.md +0 -0
  44. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/foundry-evaluation-sdk-built-in-evaluators.md +0 -0
  45. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/how-it-works.md +0 -0
  46. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/media/agentops-diagrams.vsdx +0 -0
  47. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/media/foundry-control-plane.png +0 -0
  48. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/release-process.md +0 -0
  49. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/tutorial-end-to-end.md +0 -0
  50. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/tutorial-hosted-agent-quickstart.md +0 -0
  51. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/tutorial-prompt-agent.md +0 -0
  52. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/examples/flat-quickstart/README.md +0 -0
  53. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/examples/flat-quickstart/agentops.yaml +0 -0
  54. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/examples/flat-quickstart/dataset.jsonl +0 -0
  55. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/icon.png +0 -0
  56. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/infra/e2e/agent-app/Dockerfile +0 -0
  57. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/infra/e2e/agent-app/app.py +0 -0
  58. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/infra/e2e/agent-app/requirements.txt +0 -0
  59. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/infra/e2e/bootstrap.bicep +0 -0
  60. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/infra/e2e/bootstrap.parameters.example.json +0 -0
  61. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/infra/e2e/perrun.bicep +0 -0
  62. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/launch.json +0 -0
  63. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/media/foundry.svg +0 -0
  64. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/media/quickstart.gif +0 -0
  65. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/.vscodeignore +0 -0
  66. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/LICENSE +0 -0
  67. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/README.md +0 -0
  68. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/package.json +0 -0
  69. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/plugin.json +0 -0
  70. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/skills/agentops-agent/SKILL.md +0 -0
  71. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/skills/agentops-config/SKILL.md +0 -0
  72. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/skills/agentops-dataset/SKILL.md +0 -0
  73. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/skills/agentops-governance/SKILL.md +0 -0
  74. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/skills/agentops-report/SKILL.md +0 -0
  75. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/skills/agentops-workflow/SKILL.md +0 -0
  76. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/pyproject.toml +0 -0
  77. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/create_support_agent.py +0 -0
  78. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/cut-release.ps1 +0 -0
  79. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/cut-release.sh +0 -0
  80. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_aggregate_summary.py +0 -0
  81. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_data/basic.jsonl +0 -0
  82. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_data/rag.jsonl +0 -0
  83. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_data/tools.jsonl +0 -0
  84. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_demo.py +0 -0
  85. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_hosted_agent.py +0 -0
  86. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_make_transcript.py +0 -0
  87. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_render_config.py +0 -0
  88. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/release.ps1 +0 -0
  89. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/release.sh +0 -0
  90. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/setup-e2e-new-tenant.ps1 +0 -0
  91. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/staging.ps1 +0 -0
  92. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/staging.sh +0 -0
  93. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/sync-skills.ps1 +0 -0
  94. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/sync-skills.sh +0 -0
  95. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/setup.cfg +0 -0
  96. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/__init__.py +0 -0
  97. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/__main__.py +0 -0
  98. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/__init__.py +0 -0
  99. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/_legacy_ids.py +0 -0
  100. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/analyzer.py +0 -0
  101. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/__init__.py +0 -0
  102. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/_rbac_authorization.py +0 -0
  103. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/catalog.py +0 -0
  104. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/errors.py +0 -0
  105. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/foundry_config.py +0 -0
  106. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/governance.py +0 -0
  107. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/latency.py +0 -0
  108. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/observability.py +0 -0
  109. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/opex.py +0 -0
  110. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/opex_workspace.py +0 -0
  111. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture.py +0 -0
  112. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture_rules/__init__.py +0 -0
  113. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture_rules/content_filter.py +0 -0
  114. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture_rules/diagnostics.py +0 -0
  115. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture_rules/local_auth.py +0 -0
  116. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture_rules/managed_identity.py +0 -0
  117. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture_rules/network.py +0 -0
  118. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/rbac_openai_data_plane.py +0 -0
  119. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/regression.py +0 -0
  120. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/release_readiness.py +0 -0
  121. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/safety.py +0 -0
  122. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/spec_conformance.py +0 -0
  123. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/cockpit.py +0 -0
  124. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/config.py +0 -0
  125. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/findings.py +0 -0
  126. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/history.py +0 -0
  127. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/knowledge/__init__.py +0 -0
  128. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/knowledge/waf-checklist.csv +0 -0
  129. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/__init__.py +0 -0
  130. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_base.py +0 -0
  131. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_bundle_rule.py +0 -0
  132. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_client.py +0 -0
  133. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_dataset_rules.py +0 -0
  134. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_engine.py +0 -0
  135. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_prompt_rules.py +0 -0
  136. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_spec_rules.py +0 -0
  137. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/production_telemetry.py +0 -0
  138. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/report.py +0 -0
  139. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/server/__init__.py +0 -0
  140. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/server/app.py +0 -0
  141. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/server/auth.py +0 -0
  142. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/server/chat.py +0 -0
  143. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/server/protocol.py +0 -0
  144. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/__init__.py +0 -0
  145. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/_credentials.py +0 -0
  146. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/azure_monitor.py +0 -0
  147. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/azure_resources.py +0 -0
  148. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/foundry_control.py +0 -0
  149. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/results_history.py +0 -0
  150. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/spec_detectors/__init__.py +0 -0
  151. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/spec_detectors/_base.py +0 -0
  152. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/spec_detectors/agents_md.py +0 -0
  153. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/spec_detectors/spec_kit.py +0 -0
  154. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/time_range.py +0 -0
  155. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/cli/__init__.py +0 -0
  156. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/cli/app.py +0 -0
  157. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/__init__.py +0 -0
  158. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/azd_eval.py +0 -0
  159. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/config_loader.py +0 -0
  160. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/evaluators.py +0 -0
  161. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/governance.py +0 -0
  162. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/release_evidence.py +0 -0
  163. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/results.py +0 -0
  164. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/mcp/__init__.py +0 -0
  165. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/mcp/server.py +0 -0
  166. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/__init__.py +0 -0
  167. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/azd_runner.py +0 -0
  168. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/cloud_results.py +0 -0
  169. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/cloud_runner.py +0 -0
  170. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/comparison.py +0 -0
  171. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/diagnostics.py +0 -0
  172. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/official_eval.py +0 -0
  173. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/orchestrator.py +0 -0
  174. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/prompt_deploy.py +0 -0
  175. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/publisher.py +0 -0
  176. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/reporter.py +0 -0
  177. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/runtime.py +0 -0
  178. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/thresholds.py +0 -0
  179. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/__init__.py +0 -0
  180. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/assert_runner.py +0 -0
  181. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/azd_eval_init.py +0 -0
  182. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/cicd.py +0 -0
  183. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/eval_analysis.py +0 -0
  184. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/evidence_pack.py +0 -0
  185. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/initializer.py +0 -0
  186. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/preflight.py +0 -0
  187. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/redteam_runner.py +0 -0
  188. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/setup_wizard.py +0 -0
  189. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/skills.py +0 -0
  190. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/trace_promotion.py +0 -0
  191. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/workflow_analysis.py +0 -0
  192. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/.gitignore +0 -0
  193. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/__init__.py +0 -0
  194. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/agent-server/Dockerfile +0 -0
  195. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/agent-server/README.md +0 -0
  196. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/agent-server/main.bicep +0 -0
  197. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/agent.yaml +0 -0
  198. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/agentops.yaml +0 -0
  199. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/foundry.svg +0 -0
  200. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/icon.png +0 -0
  201. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev-azd.yml +0 -0
  202. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev.yml +0 -0
  203. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod-azd.yml +0 -0
  204. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod.yml +0 -0
  205. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prompt-agent.yml +0 -0
  206. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa-azd.yml +0 -0
  207. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa.yml +0 -0
  208. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-pr-prompt-agent.yml +0 -0
  209. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-pr.yml +0 -0
  210. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-watchdog.yml +0 -0
  211. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/project.gitignore +0 -0
  212. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/sample-traces.jsonl +0 -0
  213. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/skills/agentops-agent/SKILL.md +0 -0
  214. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/skills/agentops-config/SKILL.md +0 -0
  215. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/skills/agentops-dataset/SKILL.md +0 -0
  216. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/skills/agentops-governance/SKILL.md +0 -0
  217. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/skills/agentops-report/SKILL.md +0 -0
  218. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/skills/agentops-workflow/SKILL.md +0 -0
  219. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/smoke.jsonl +0 -0
  220. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/waf-checklist.README.md +0 -0
  221. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/waf-checklist.csv +0 -0
  222. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-dev-azd.yml +0 -0
  223. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-dev.yml +0 -0
  224. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-prod-azd.yml +0 -0
  225. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-prod.yml +0 -0
  226. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-prompt-agent.yml +0 -0
  227. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-qa-azd.yml +0 -0
  228. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-qa.yml +0 -0
  229. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-pr-prompt-agent.yml +0 -0
  230. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-pr.yml +0 -0
  231. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-watchdog.yml +0 -0
  232. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/__init__.py +0 -0
  233. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/azd_env.py +0 -0
  234. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/azure_endpoints.py +0 -0
  235. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/colors.py +0 -0
  236. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/dotenv_loader.py +0 -0
  237. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/foundry_discovery.py +0 -0
  238. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/logging.py +0 -0
  239. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/telemetry.py +0 -0
  240. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/yaml.py +0 -0
  241. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops_accelerator.egg-info/dependency_links.txt +0 -0
  242. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops_accelerator.egg-info/entry_points.txt +0 -0
  243. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops_accelerator.egg-info/requires.txt +0 -0
  244. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops_accelerator.egg-info/top_level.txt +0 -0
  245. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/TESTING.md +0 -0
  246. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/fixtures/fake_adapter.py +0 -0
  247. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/fixtures/fake_eval_runner.py +0 -0
  248. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/integration/.gitkeep +0 -0
  249. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/integration/test_cli_flat_schema.py +0 -0
  250. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/integration/test_pipeline_smoke.py +0 -0
  251. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/.gitkeep +0 -0
  252. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_analyzer.py +0 -0
  253. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_categories.py +0 -0
  254. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_errors.py +0 -0
  255. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_foundry_config.py +0 -0
  256. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_observability.py +0 -0
  257. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_opex.py +0 -0
  258. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_opex_workspace.py +0 -0
  259. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_rbac_openai_data_plane.py +0 -0
  260. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_regression.py +0 -0
  261. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_safety.py +0 -0
  262. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_spec_conformance.py +0 -0
  263. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_cli.py +0 -0
  264. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_config.py +0 -0
  265. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_findings.py +0 -0
  266. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_history.py +0 -0
  267. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_opex_workspace_check.py +0 -0
  268. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_posture_rules.py +0 -0
  269. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_results_history.py +0 -0
  270. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_server.py +0 -0
  271. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_assert_and_redteam_runners.py +0 -0
  272. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_azd_env.py +0 -0
  273. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_azd_eval.py +0 -0
  274. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_azd_eval_init.py +0 -0
  275. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_azd_runner.py +0 -0
  276. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_azure_endpoints.py +0 -0
  277. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_azure_resources_discovery.py +0 -0
  278. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cicd.py +0 -0
  279. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cli_cockpit_connection_summary.py +0 -0
  280. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cli_cockpit_port_conflict.py +0 -0
  281. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cli_commands.py +0 -0
  282. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cli_explain.py +0 -0
  283. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cloud_results.py +0 -0
  284. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cloud_runner.py +0 -0
  285. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cockpit.py +0 -0
  286. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_diagnostics.py +0 -0
  287. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_doctor_catalog.py +0 -0
  288. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_doctor_cli_explain.py +0 -0
  289. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_dotenv_loader.py +0 -0
  290. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_e2e_render.py +0 -0
  291. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_eval_analysis.py +0 -0
  292. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_eval_run_grader_errors.py +0 -0
  293. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_evaluators.py +0 -0
  294. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_foundry_discovery.py +0 -0
  295. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_governance.py +0 -0
  296. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_init_command.py +0 -0
  297. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_initializer.py +0 -0
  298. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_invocations.py +0 -0
  299. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_knowledge_loader.py +0 -0
  300. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_llm_assist.py +0 -0
  301. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_llm_assist_spec_rules.py +0 -0
  302. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_mcp_server.py +0 -0
  303. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_official_eval.py +0 -0
  304. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_pipeline_publisher.py +0 -0
  305. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_pipeline_reporter.py +0 -0
  306. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_preflight.py +0 -0
  307. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_production_telemetry.py +0 -0
  308. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_prompt_deploy.py +0 -0
  309. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_release_evidence.py +0 -0
  310. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_runtime_conversation.py +0 -0
  311. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_runtime_model_config.py +0 -0
  312. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_setup_wizard.py +0 -0
  313. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_shared_credentials.py +0 -0
  314. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_skills.py +0 -0
  315. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_skills_sync.py +0 -0
  316. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_telemetry.py +0 -0
  317. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_time_range.py +0 -0
  318. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_trace_promotion.py +0 -0
  319. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_workflow_analysis.py +0 -0
  320. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tombstones/vscode/CDN_DEPRECATION_REQUEST.md +0 -0
  321. {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/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,27 @@ This format follows [Keep a Changelog](https://keepachangelog.com/) and adheres
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.4.4] - 2026-06-18
9
+
10
+ ### Added
11
+ - **Streaming HTTP targets.** The `http_json` target now understands streaming
12
+ responses so AgentOps can evaluate SSE/streaming agents (such as the
13
+ gpt-rag-orchestrator `/orchestrator` endpoint) directly, without a manual
14
+ adapter. A new `response_mode: json|sse|text` field selects the response
15
+ parser (`json` is the default and preserves the existing single-`json.loads`
16
+ behavior exactly). For `sse`/`text`, an optional `stream` block configures
17
+ aggregation: `text_field` (dotted path to the token text when each SSE
18
+ `data:` line is JSON), `done_marker` (stop token, e.g. `[DONE]`), and
19
+ `strip_leading_token` (drop the leading whitespace-delimited token, e.g. the
20
+ orchestrator's `conversation_id` prefix). The auth header is now configurable
21
+ via `auth_header_name` (default `Authorization`) and `auth_value_template`
22
+ (default `Bearer {token}`, where `{token}` is replaced by the
23
+ `auth_header_env` value), so targets gated by a shared secret such as
24
+ `X-API-KEY` are supported without hardcoding the secret in `agentops.yaml`.
25
+ Streaming uses the same stdlib (`urllib`) transport and 3-try backoff as the
26
+ JSON path. When a JSON parse fails on a `text/event-stream` response, the
27
+ error now suggests setting `response_mode: sse|text`.
28
+
8
29
  ## [0.4.3] - 2026-06-17
9
30
 
10
31
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentops-accelerator
3
- Version: 0.4.3
3
+ Version: 0.4.4
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.
@@ -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
 
@@ -540,6 +548,41 @@ class RedTeamRunConfig(BaseModel):
540
548
  model_config = ConfigDict(extra="forbid")
541
549
 
542
550
 
551
+ class StreamConfig(BaseModel):
552
+ """Streaming aggregation options for ``http-json`` targets.
553
+
554
+ Only meaningful when ``response_mode`` is ``"sse"`` or ``"text"``. These
555
+ fields control how a streamed response body is parsed and reassembled into
556
+ a single answer string.
557
+ """
558
+
559
+ text_field: Optional[str] = Field(
560
+ None,
561
+ description=(
562
+ "For SSE where each 'data:' line is a JSON object, the dotted path "
563
+ "to the token text (e.g. 'delta.content'). Omit (None) when each "
564
+ "'data:' line is already raw text."
565
+ ),
566
+ )
567
+ done_marker: Optional[str] = Field(
568
+ None,
569
+ description=(
570
+ "Optional sentinel (e.g. '[DONE]'); aggregation stops when a "
571
+ "'data:' line equals this value."
572
+ ),
573
+ )
574
+ strip_leading_token: bool = Field(
575
+ False,
576
+ description=(
577
+ "Drop the first whitespace-delimited token from the aggregated "
578
+ "text. Use for endpoints that prefix the stream with an id (e.g. "
579
+ "the gpt-rag orchestrator emits '<conversation_id> ' first)."
580
+ ),
581
+ )
582
+
583
+ model_config = ConfigDict(extra="forbid")
584
+
585
+
543
586
  # ---------------------------------------------------------------------------
544
587
  # Top-level config
545
588
  # ---------------------------------------------------------------------------
@@ -600,7 +643,20 @@ class AgentOpsConfig(BaseModel):
600
643
 
601
644
  ``headers`` / ``auth_header_env``
602
645
  Optional HTTP request configuration for ``http-json`` and
603
- ``invocations`` targets.
646
+ ``invocations`` targets. ``auth_header_env`` names the environment
647
+ variable that holds the secret.
648
+
649
+ ``response_mode`` / ``stream``
650
+ ``http-json`` only. ``response_mode`` selects how the response body is
651
+ read: ``"json"`` (default, single JSON document), ``"sse"`` (Server-Sent
652
+ Events), or ``"text"`` (raw streamed text). The ``stream`` block tunes
653
+ SSE/text aggregation (``text_field``, ``done_marker``,
654
+ ``strip_leading_token``).
655
+
656
+ ``auth_header_name`` / ``auth_value_template``
657
+ ``http-json`` only. Decouple the auth header from the default
658
+ ``Authorization: Bearer {token}``. For a shared-secret endpoint set
659
+ ``auth_header_name: X-API-KEY`` and ``auth_value_template: "{token}"``.
604
660
 
605
661
  ``evaluators``
606
662
  Optional escape hatch: explicit list of evaluator names that overrides
@@ -696,6 +752,37 @@ class AgentOpsConfig(BaseModel):
696
752
  tool_calls_field: Optional[str] = None
697
753
  headers: Dict[str, str] = Field(default_factory=dict)
698
754
  auth_header_env: Optional[str] = None
755
+ response_mode: ResponseMode = Field(
756
+ "json",
757
+ description=(
758
+ "How to read the HTTP/JSON response body. 'json' (default) parses "
759
+ "a single JSON document and preserves existing behavior. 'sse' "
760
+ "parses Server-Sent Events 'data:' lines; 'text' concatenates a "
761
+ "raw streamed text body. Only valid for http-json targets."
762
+ ),
763
+ )
764
+ stream: Optional[StreamConfig] = Field(
765
+ None,
766
+ description=(
767
+ "Streaming aggregation options, used only when response_mode is "
768
+ "'sse' or 'text'."
769
+ ),
770
+ )
771
+ auth_header_name: Optional[str] = Field(
772
+ None,
773
+ description=(
774
+ "HTTP header that carries the secret read from auth_header_env. "
775
+ "Defaults to 'Authorization' when unset."
776
+ ),
777
+ )
778
+ auth_value_template: Optional[str] = Field(
779
+ None,
780
+ description=(
781
+ "Template for the auth header value; '{token}' is replaced by the "
782
+ "auth_header_env value. Defaults to 'Bearer {token}' when unset. "
783
+ "Use '{token}' alone for a raw shared-secret header like X-API-KEY."
784
+ ),
785
+ )
699
786
 
700
787
  evaluators: Optional[List[EvaluatorOverride]] = None
701
788
  rubrics: List[RubricConfig] = Field(
@@ -850,6 +937,10 @@ class AgentOpsConfig(BaseModel):
850
937
  or self.tool_calls_field
851
938
  or self.headers
852
939
  or self.auth_header_env
940
+ or self.response_mode != "json"
941
+ or self.stream is not None
942
+ or self.auth_header_name
943
+ or self.auth_value_template
853
944
  ):
854
945
  # Foundry hosted (responses/invocations) defines its own wire
855
946
  # format. HTTP-only request/response shaping is invalid there.
@@ -859,8 +950,9 @@ class AgentOpsConfig(BaseModel):
859
950
  else:
860
951
  raise ValueError(
861
952
  "request_field / response_field / tool_calls_field / "
862
- "headers / auth_header_env are only valid for HTTP/JSON "
863
- "or Foundry hosted (invocations) targets"
953
+ "headers / auth_header_env / response_mode / stream / "
954
+ "auth_header_name / auth_value_template are only valid for "
955
+ "HTTP/JSON or Foundry hosted (invocations) targets"
864
956
  )
865
957
  return self
866
958
 
@@ -166,6 +166,130 @@ def _http_request_json(
166
166
  return json.loads(payload)
167
167
 
168
168
 
169
+ def _http_request_stream(
170
+ *,
171
+ method: str,
172
+ url: str,
173
+ headers: Dict[str, str],
174
+ body: Optional[Dict[str, Any]] = None,
175
+ timeout: float,
176
+ ) -> str:
177
+ """POST and return the full streamed response body as decoded text.
178
+
179
+ Uses the same 3-try backoff policy and tenant-mismatch guidance as
180
+ :func:`_http_request_json`. The response is read to completion (streamed
181
+ endpoints used for evaluation emit a bounded answer) and returned verbatim
182
+ so :func:`_aggregate_stream` can reassemble it. stdlib ``urllib`` only.
183
+ """
184
+ encoded = json.dumps(body or {}).encode("utf-8") if method != "GET" else None
185
+ request = urllib.request.Request(
186
+ url=url, data=encoded, method=method, headers=headers
187
+ )
188
+ last_exc: Optional[BaseException] = None
189
+ for attempt in range(1, 4):
190
+ try:
191
+ with urllib.request.urlopen(request, timeout=timeout) as response: # noqa: S310
192
+ # HTTPResponse is iterable line-by-line; joining restores the
193
+ # full body (including newlines) for both sse and text modes.
194
+ chunks = [line.decode("utf-8", errors="replace") for line in response]
195
+ return "".join(chunks)
196
+ except urllib.error.HTTPError as exc:
197
+ detail = exc.read().decode("utf-8", errors="replace") if exc.fp else ""
198
+ transient = exc.code >= 500 or exc.code == 429
199
+ if transient and attempt < 3:
200
+ time.sleep(2 ** attempt)
201
+ last_exc = exc
202
+ continue
203
+ message = f"HTTP {exc.code} from {url}: {detail or exc.reason}"
204
+ raise RuntimeError(with_tenant_mismatch_guidance(message)) from exc
205
+ except urllib.error.URLError as exc:
206
+ if attempt < 3:
207
+ time.sleep(2 ** attempt)
208
+ last_exc = exc
209
+ continue
210
+ raise
211
+ else: # pragma: no cover - loop exits via break/raise
212
+ raise RuntimeError(f"HTTP request to {url} failed: {last_exc!r}")
213
+
214
+
215
+ def _strip_leading_token(text: str) -> str:
216
+ """Drop the first whitespace-delimited token from ``text``.
217
+
218
+ Used to remove the conversation-id prefix the gpt-rag orchestrator emits
219
+ as its first streamed chunk (``"<conversation_id> <answer...>"``).
220
+ """
221
+ stripped = text.strip()
222
+ parts = stripped.split(None, 1)
223
+ return parts[1] if len(parts) == 2 else ""
224
+
225
+
226
+ def _aggregate_stream(
227
+ response_mode: str,
228
+ body: str,
229
+ stream_cfg: Optional[Any],
230
+ ) -> str:
231
+ """Reassemble a streamed response body into a single answer string.
232
+
233
+ ``text`` mode concatenates the whole body. ``sse`` mode parses ``data:``
234
+ lines, optionally JSON-decoding each line and extracting ``text_field``,
235
+ stopping at ``done_marker``, and raising on an ``event: error`` frame.
236
+ """
237
+ strip_leading = bool(getattr(stream_cfg, "strip_leading_token", False))
238
+
239
+ if response_mode == "text":
240
+ text = body or ""
241
+ return _strip_leading_token(text) if strip_leading else text
242
+
243
+ # SSE mode.
244
+ text_field = getattr(stream_cfg, "text_field", None)
245
+ done_marker = getattr(stream_cfg, "done_marker", None)
246
+
247
+ pieces: List[str] = []
248
+ saw_error = False
249
+ for raw_line in (body or "").splitlines():
250
+ line = raw_line.rstrip("\r")
251
+ stripped = line.strip()
252
+ if not stripped:
253
+ # Blank line closes the current SSE frame.
254
+ saw_error = False
255
+ continue
256
+ if stripped.startswith("event:"):
257
+ if stripped[len("event:"):].strip() == "error":
258
+ saw_error = True
259
+ continue
260
+ if not stripped.startswith("data:"):
261
+ # Ignore id:/retry:/comment lines.
262
+ continue
263
+ data = line.split("data:", 1)[1]
264
+ if data.startswith(" "):
265
+ # SSE strips a single leading space after the field colon.
266
+ data = data[1:]
267
+ if done_marker is not None and data == done_marker:
268
+ break
269
+ if saw_error:
270
+ raise RuntimeError(
271
+ f"streaming endpoint returned an error event: {data}"
272
+ )
273
+ if text_field:
274
+ try:
275
+ parsed = json.loads(data)
276
+ except json.JSONDecodeError:
277
+ pieces.append(data)
278
+ continue
279
+ token = _dot_path(parsed, text_field)
280
+ if token is None:
281
+ continue
282
+ pieces.append(
283
+ token if isinstance(token, str)
284
+ else json.dumps(token, ensure_ascii=False)
285
+ )
286
+ else:
287
+ pieces.append(data)
288
+
289
+ text = "".join(pieces)
290
+ return _strip_leading_token(text) if strip_leading else text
291
+
292
+
169
293
  def _dot_path(payload: Any, path: str) -> Any:
170
294
  """Resolve ``a.b.c`` or ``a.0.b`` against a JSON-like object."""
171
295
  current = payload
@@ -468,19 +592,49 @@ def _invoke_http_json(
468
592
  f"auth_header_env {config.auth_header_env!r} is set in config but "
469
593
  "the environment variable is empty"
470
594
  )
471
- headers["Authorization"] = f"Bearer {token}"
595
+ # Default to today's behavior (Authorization: Bearer <token>) so
596
+ # existing configs are byte-for-byte unchanged; allow an arbitrary
597
+ # header name/value template for shared-secret gates (e.g. X-API-KEY).
598
+ header_name = config.auth_header_name or "Authorization"
599
+ value_template = config.auth_value_template or "Bearer {token}"
600
+ headers[header_name] = value_template.replace("{token}", token)
472
601
 
473
602
  request_field = config.request_field or "message"
474
603
  body: Dict[str, Any] = {request_field: _row_input(row)}
475
604
 
605
+ if config.response_mode in ("sse", "text"):
606
+ started = time.perf_counter()
607
+ raw_body = _http_request_stream(
608
+ method="POST",
609
+ url=target.url,
610
+ headers=headers,
611
+ body=body,
612
+ timeout=timeout,
613
+ )
614
+ elapsed = time.perf_counter() - started
615
+ aggregated = _aggregate_stream(config.response_mode, raw_body, config.stream)
616
+ return InvocationResult(
617
+ response=aggregated.strip(),
618
+ latency_seconds=elapsed,
619
+ tool_calls=None,
620
+ )
621
+
476
622
  started = time.perf_counter()
477
- payload = _http_request_json(
478
- method="POST",
479
- url=target.url,
480
- headers=headers,
481
- body=body,
482
- timeout=timeout,
483
- )
623
+ try:
624
+ payload = _http_request_json(
625
+ method="POST",
626
+ url=target.url,
627
+ headers=headers,
628
+ body=body,
629
+ timeout=timeout,
630
+ )
631
+ except json.JSONDecodeError as exc:
632
+ raise RuntimeError(
633
+ f"HTTP/JSON response from {target.url} was not valid JSON. If this "
634
+ "endpoint streams Server-Sent Events or raw text (for example "
635
+ "Content-Type: text/event-stream), set response_mode: sse or "
636
+ "response_mode: text in agentops.yaml."
637
+ ) from exc
484
638
  elapsed = time.perf_counter() - started
485
639
 
486
640
  response_path = config.response_field or "text"
@@ -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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentops-accelerator
3
- Version: 0.4.3
3
+ Version: 0.4.4
4
4
  Summary: Release readiness gates and evidence for Microsoft Foundry agents
5
5
  License: MIT License
6
6
 
@@ -291,6 +291,7 @@ tests/unit/test_eval_run_grader_errors.py
291
291
  tests/unit/test_evaluators.py
292
292
  tests/unit/test_foundry_discovery.py
293
293
  tests/unit/test_governance.py
294
+ tests/unit/test_http_streaming.py
294
295
  tests/unit/test_init_command.py
295
296
  tests/unit/test_initializer.py
296
297
  tests/unit/test_invocations.py
@@ -484,6 +484,60 @@ class TestAgentOpsConfig:
484
484
  request_field="message",
485
485
  )
486
486
 
487
+ def test_streaming_fields_allowed_for_http_target(self) -> None:
488
+ cfg = AgentOpsConfig(
489
+ version=1,
490
+ agent="https://app.example.com/orchestrator",
491
+ dataset="./qa.jsonl",
492
+ request_field="ask",
493
+ response_mode="text",
494
+ stream={"strip_leading_token": True}, # type: ignore[arg-type]
495
+ auth_header_env="ORCH_KEY",
496
+ auth_header_name="X-API-KEY",
497
+ auth_value_template="{token}",
498
+ )
499
+ assert cfg.response_mode == "text"
500
+ assert cfg.stream is not None
501
+ assert cfg.stream.strip_leading_token is True
502
+ assert cfg.auth_header_name == "X-API-KEY"
503
+ assert cfg.auth_value_template == "{token}"
504
+
505
+ def test_response_mode_defaults_to_json(self) -> None:
506
+ cfg = AgentOpsConfig(
507
+ version=1,
508
+ agent="https://app.example.com/chat",
509
+ dataset="./qa.jsonl",
510
+ )
511
+ assert cfg.response_mode == "json"
512
+ assert cfg.stream is None
513
+
514
+ def test_response_mode_rejected_for_prompt_agent(self) -> None:
515
+ with pytest.raises(ValidationError, match="HTTP/JSON"):
516
+ AgentOpsConfig(
517
+ version=1,
518
+ agent="my-rag:3",
519
+ dataset="./qa.jsonl",
520
+ response_mode="sse",
521
+ )
522
+
523
+ def test_stream_block_rejected_for_model_target(self) -> None:
524
+ with pytest.raises(ValidationError, match="HTTP/JSON"):
525
+ AgentOpsConfig(
526
+ version=1,
527
+ agent="model:gpt-4o",
528
+ dataset="./qa.jsonl",
529
+ stream={"done_marker": "[DONE]"}, # type: ignore[arg-type]
530
+ )
531
+
532
+ def test_auth_header_name_rejected_for_prompt_agent(self) -> None:
533
+ with pytest.raises(ValidationError, match="HTTP/JSON"):
534
+ AgentOpsConfig(
535
+ version=1,
536
+ agent="my-rag:3",
537
+ dataset="./qa.jsonl",
538
+ auth_header_name="X-API-KEY",
539
+ )
540
+
487
541
  def test_evaluators_override(self) -> None:
488
542
  cfg = AgentOpsConfig(
489
543
  version=1,