agentops-accelerator 0.8.2__tar.gz → 0.8.3__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 (342) hide show
  1. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.claude-plugin/marketplace.json +1 -1
  2. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/plugin/marketplace.json +1 -1
  3. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/workflows/ci.yml +9 -5
  4. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/workflows/release.yml +9 -5
  5. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/workflows/staging.yml +9 -5
  6. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/CHANGELOG.md +43 -0
  7. {agentops_accelerator-0.8.2/src/agentops_accelerator.egg-info → agentops_accelerator-0.8.3}/PKG-INFO +1 -1
  8. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/how-it-works.md +18 -3
  9. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/tutorial-end-to-end.md +4 -0
  10. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/tutorial-hosted-agent-quickstart.md +10 -3
  11. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/plugins/agentops/package.json +1 -1
  12. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/plugins/agentops/plugin.json +1 -1
  13. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/core/agentops_config.py +46 -2
  14. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/cloud_runner.py +17 -5
  15. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/orchestrator.py +13 -3
  16. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3/src/agentops_accelerator.egg-info}/PKG-INFO +1 -1
  17. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agentops_config.py +40 -0
  18. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_cloud_runner.py +43 -1
  19. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_pipeline_publisher.py +33 -5
  20. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.gitattributes +0 -0
  21. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/actions/azure-oidc-login/action.yml +0 -0
  22. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/code-quality-py.instructions.md +0 -0
  23. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/copilot-instructions.md +0 -0
  24. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/dependabot.yml +0 -0
  25. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/extensions/agentops-skills/extension.mjs +0 -0
  26. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/skills/release-management/SKILL.md +0 -0
  27. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/workflows/_build.yml +0 -0
  28. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/workflows/agentops-watchdog.yml +0 -0
  29. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/workflows/cut-release.yml +0 -0
  30. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.github/workflows/e2e.yml +0 -0
  31. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.gitignore +0 -0
  32. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.pre-commit-config.yaml +0 -0
  33. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.vscode/launch.json +0 -0
  34. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.vscode/settings.json +0 -0
  35. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/.vscode/tasks.json +0 -0
  36. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/AGENTS.md +0 -0
  37. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/CONTRIBUTING.md +0 -0
  38. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/LICENSE +0 -0
  39. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/README.md +0 -0
  40. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/SECURITY.md +0 -0
  41. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/bundles.md +0 -0
  42. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/ci-github-actions.md +0 -0
  43. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/concepts.md +0 -0
  44. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/doctor-checks.md +0 -0
  45. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/doctor-explained.md +0 -0
  46. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/e2e-live-architecture.md +0 -0
  47. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/e2e-live-setup.md +0 -0
  48. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/evaluation.md +0 -0
  49. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/foundry-evaluation-sdk-built-in-evaluators.md +0 -0
  50. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/media/agentops-diagrams.vsdx +0 -0
  51. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/media/foundry-control-plane.png +0 -0
  52. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/release-process.md +0 -0
  53. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/docs/tutorial-prompt-agent.md +0 -0
  54. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/examples/flat-quickstart/README.md +0 -0
  55. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/examples/flat-quickstart/agentops.yaml +0 -0
  56. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/examples/flat-quickstart/dataset.jsonl +0 -0
  57. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/icon.png +0 -0
  58. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/infra/e2e/agent-app/Dockerfile +0 -0
  59. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/infra/e2e/agent-app/app.py +0 -0
  60. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/infra/e2e/agent-app/requirements.txt +0 -0
  61. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/infra/e2e/bootstrap.bicep +0 -0
  62. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/infra/e2e/bootstrap.parameters.example.json +0 -0
  63. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/infra/e2e/perrun.bicep +0 -0
  64. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/launch.json +0 -0
  65. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/media/foundry.svg +0 -0
  66. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/media/quickstart.gif +0 -0
  67. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/plugins/agentops/.vscodeignore +0 -0
  68. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/plugins/agentops/LICENSE +0 -0
  69. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/plugins/agentops/README.md +0 -0
  70. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/plugins/agentops/skills/agentops-agent/SKILL.md +0 -0
  71. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/plugins/agentops/skills/agentops-config/SKILL.md +0 -0
  72. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/plugins/agentops/skills/agentops-dataset/SKILL.md +0 -0
  73. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/plugins/agentops/skills/agentops-eval/SKILL.md +0 -0
  74. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/plugins/agentops/skills/agentops-governance/SKILL.md +0 -0
  75. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/plugins/agentops/skills/agentops-report/SKILL.md +0 -0
  76. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/plugins/agentops/skills/agentops-workflow/SKILL.md +0 -0
  77. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/pyproject.toml +0 -0
  78. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/create_support_agent.py +0 -0
  79. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/cut-release.ps1 +0 -0
  80. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/cut-release.sh +0 -0
  81. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/e2e_aggregate_summary.py +0 -0
  82. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/e2e_data/basic.jsonl +0 -0
  83. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/e2e_data/rag.jsonl +0 -0
  84. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/e2e_data/tools.jsonl +0 -0
  85. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/e2e_demo.py +0 -0
  86. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/e2e_hosted_agent.py +0 -0
  87. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/e2e_make_transcript.py +0 -0
  88. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/e2e_render_config.py +0 -0
  89. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/release.ps1 +0 -0
  90. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/release.sh +0 -0
  91. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/setup-e2e-new-tenant.ps1 +0 -0
  92. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/staging.ps1 +0 -0
  93. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/staging.sh +0 -0
  94. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/sync-skills.ps1 +0 -0
  95. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/scripts/sync-skills.sh +0 -0
  96. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/setup.cfg +0 -0
  97. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/__init__.py +0 -0
  98. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/__main__.py +0 -0
  99. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/__init__.py +0 -0
  100. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/_legacy_ids.py +0 -0
  101. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/analyzer.py +0 -0
  102. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/__init__.py +0 -0
  103. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/_rbac_authorization.py +0 -0
  104. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/catalog.py +0 -0
  105. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/errors.py +0 -0
  106. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/foundry_config.py +0 -0
  107. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/governance.py +0 -0
  108. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/latency.py +0 -0
  109. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/observability.py +0 -0
  110. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/opex.py +0 -0
  111. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/opex_workspace.py +0 -0
  112. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/posture.py +0 -0
  113. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/posture_rules/__init__.py +0 -0
  114. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/posture_rules/aoai_diagnostic_categories.py +0 -0
  115. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/posture_rules/content_filter.py +0 -0
  116. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/posture_rules/diagnostics.py +0 -0
  117. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/posture_rules/local_auth.py +0 -0
  118. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/posture_rules/managed_identity.py +0 -0
  119. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/posture_rules/network.py +0 -0
  120. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/rbac_openai_data_plane.py +0 -0
  121. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/regression.py +0 -0
  122. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/release_readiness.py +0 -0
  123. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/safety.py +0 -0
  124. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/checks/spec_conformance.py +0 -0
  125. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/cockpit.py +0 -0
  126. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/config.py +0 -0
  127. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/findings.py +0 -0
  128. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/history.py +0 -0
  129. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/knowledge/__init__.py +0 -0
  130. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/knowledge/waf-checklist.csv +0 -0
  131. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/llm_assist/__init__.py +0 -0
  132. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/llm_assist/_base.py +0 -0
  133. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/llm_assist/_bundle_rule.py +0 -0
  134. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/llm_assist/_client.py +0 -0
  135. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/llm_assist/_dataset_rules.py +0 -0
  136. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/llm_assist/_engine.py +0 -0
  137. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/llm_assist/_prompt_rules.py +0 -0
  138. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/llm_assist/_spec_rules.py +0 -0
  139. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/production_telemetry.py +0 -0
  140. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/report.py +0 -0
  141. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/server/__init__.py +0 -0
  142. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/server/app.py +0 -0
  143. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/server/auth.py +0 -0
  144. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/server/chat.py +0 -0
  145. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/server/protocol.py +0 -0
  146. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/sources/__init__.py +0 -0
  147. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/sources/_credentials.py +0 -0
  148. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/sources/azure_monitor.py +0 -0
  149. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/sources/azure_resources.py +0 -0
  150. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/sources/foundry_control.py +0 -0
  151. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/sources/results_history.py +0 -0
  152. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/sources/spec_detectors/__init__.py +0 -0
  153. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/sources/spec_detectors/_base.py +0 -0
  154. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/sources/spec_detectors/agents_md.py +0 -0
  155. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/sources/spec_detectors/spec_kit.py +0 -0
  156. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/agent/time_range.py +0 -0
  157. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/cli/__init__.py +0 -0
  158. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/cli/app.py +0 -0
  159. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/core/__init__.py +0 -0
  160. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/core/azd_eval.py +0 -0
  161. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/core/config_loader.py +0 -0
  162. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/core/evaluators.py +0 -0
  163. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/core/governance.py +0 -0
  164. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/core/release_evidence.py +0 -0
  165. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/core/results.py +0 -0
  166. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/core/step_summary.py +0 -0
  167. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/mcp/__init__.py +0 -0
  168. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/mcp/server.py +0 -0
  169. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/__init__.py +0 -0
  170. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/azd_runner.py +0 -0
  171. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/cloud_results.py +0 -0
  172. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/comparison.py +0 -0
  173. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/diagnostics.py +0 -0
  174. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/invocations.py +0 -0
  175. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/official_eval.py +0 -0
  176. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/prompt_deploy.py +0 -0
  177. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/publisher.py +0 -0
  178. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/reporter.py +0 -0
  179. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/runtime.py +0 -0
  180. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/pipeline/thresholds.py +0 -0
  181. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/__init__.py +0 -0
  182. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/assert_runner.py +0 -0
  183. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/azd_eval_init.py +0 -0
  184. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/cicd.py +0 -0
  185. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/dashboard.py +0 -0
  186. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/eval_analysis.py +0 -0
  187. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/evidence_pack.py +0 -0
  188. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/initializer.py +0 -0
  189. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/preflight.py +0 -0
  190. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/redteam_runner.py +0 -0
  191. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/setup_wizard.py +0 -0
  192. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/skills.py +0 -0
  193. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/telemetry_import.py +0 -0
  194. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/trace_promotion.py +0 -0
  195. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/services/workflow_analysis.py +0 -0
  196. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/.gitignore +0 -0
  197. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/__init__.py +0 -0
  198. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/agent-server/Dockerfile +0 -0
  199. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/agent-server/README.md +0 -0
  200. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/agent-server/main.bicep +0 -0
  201. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/agent.yaml +0 -0
  202. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/agentops.yaml +0 -0
  203. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/foundry.svg +0 -0
  204. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/icon.png +0 -0
  205. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev-azd.yml +0 -0
  206. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev.yml +0 -0
  207. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod-azd.yml +0 -0
  208. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod.yml +0 -0
  209. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prompt-agent.yml +0 -0
  210. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa-azd.yml +0 -0
  211. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa.yml +0 -0
  212. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/pipelines/azuredevops/agentops-pr-prompt-agent.yml +0 -0
  213. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/pipelines/azuredevops/agentops-pr.yml +0 -0
  214. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/pipelines/azuredevops/agentops-watchdog.yml +0 -0
  215. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/project.gitignore +0 -0
  216. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/sample-traces.jsonl +0 -0
  217. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/skills/agentops-agent/SKILL.md +0 -0
  218. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/skills/agentops-config/SKILL.md +0 -0
  219. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/skills/agentops-dataset/SKILL.md +0 -0
  220. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/skills/agentops-eval/SKILL.md +0 -0
  221. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/skills/agentops-governance/SKILL.md +0 -0
  222. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/skills/agentops-report/SKILL.md +0 -0
  223. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/skills/agentops-workflow/SKILL.md +0 -0
  224. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/smoke.jsonl +0 -0
  225. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/waf-checklist.README.md +0 -0
  226. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/waf-checklist.csv +0 -0
  227. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workbooks/README.md +0 -0
  228. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workbooks/foundry-ops.workbook.json +0 -0
  229. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workbooks/queries/agent_behavior.kql +0 -0
  230. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workbooks/queries/capacity_ptu_spillover.kql +0 -0
  231. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workbooks/queries/errors_throttling.kql +0 -0
  232. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workbooks/queries/latency_percentiles.kql +0 -0
  233. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workbooks/queries/traffic_tokens.kql +0 -0
  234. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workflows/agentops-deploy-dev-azd.yml +0 -0
  235. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workflows/agentops-deploy-dev.yml +0 -0
  236. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workflows/agentops-deploy-prod-azd.yml +0 -0
  237. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workflows/agentops-deploy-prod.yml +0 -0
  238. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workflows/agentops-deploy-prompt-agent.yml +0 -0
  239. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workflows/agentops-deploy-qa-azd.yml +0 -0
  240. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workflows/agentops-deploy-qa.yml +0 -0
  241. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workflows/agentops-pr-prompt-agent.yml +0 -0
  242. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workflows/agentops-pr.yml +0 -0
  243. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/templates/workflows/agentops-watchdog.yml +0 -0
  244. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/utils/__init__.py +0 -0
  245. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/utils/azd_env.py +0 -0
  246. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/utils/azure_endpoints.py +0 -0
  247. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/utils/colors.py +0 -0
  248. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/utils/dotenv_loader.py +0 -0
  249. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/utils/foundry_discovery.py +0 -0
  250. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/utils/logging.py +0 -0
  251. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/utils/telemetry.py +0 -0
  252. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops/utils/yaml.py +0 -0
  253. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops_accelerator.egg-info/SOURCES.txt +0 -0
  254. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops_accelerator.egg-info/dependency_links.txt +0 -0
  255. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops_accelerator.egg-info/entry_points.txt +0 -0
  256. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops_accelerator.egg-info/requires.txt +0 -0
  257. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/src/agentops_accelerator.egg-info/top_level.txt +0 -0
  258. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/TESTING.md +0 -0
  259. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/fixtures/fake_adapter.py +0 -0
  260. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/fixtures/fake_eval_runner.py +0 -0
  261. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/fixtures/workbook_agent_behavior_events.json +0 -0
  262. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/integration/.gitkeep +0 -0
  263. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/integration/test_cli_flat_schema.py +0 -0
  264. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/integration/test_pipeline_smoke.py +0 -0
  265. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/.gitkeep +0 -0
  266. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_analyzer.py +0 -0
  267. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_categories.py +0 -0
  268. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_checks_errors.py +0 -0
  269. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_checks_foundry_config.py +0 -0
  270. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_checks_observability.py +0 -0
  271. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_checks_opex.py +0 -0
  272. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_checks_opex_workspace.py +0 -0
  273. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_checks_rbac_openai_data_plane.py +0 -0
  274. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_checks_regression.py +0 -0
  275. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_checks_safety.py +0 -0
  276. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_checks_spec_conformance.py +0 -0
  277. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_cli.py +0 -0
  278. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_config.py +0 -0
  279. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_findings.py +0 -0
  280. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_history.py +0 -0
  281. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_opex_workspace_check.py +0 -0
  282. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_posture_rules.py +0 -0
  283. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_results_history.py +0 -0
  284. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_agent_server.py +0 -0
  285. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_assert_and_redteam_runners.py +0 -0
  286. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_azd_env.py +0 -0
  287. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_azd_eval.py +0 -0
  288. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_azd_eval_init.py +0 -0
  289. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_azd_runner.py +0 -0
  290. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_azure_endpoints.py +0 -0
  291. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_azure_resources_discovery.py +0 -0
  292. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_cicd.py +0 -0
  293. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_cli_cockpit_connection_summary.py +0 -0
  294. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_cli_cockpit_port_conflict.py +0 -0
  295. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_cli_commands.py +0 -0
  296. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_cli_dashboard.py +0 -0
  297. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_cli_explain.py +0 -0
  298. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_cloud_results.py +0 -0
  299. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_cockpit.py +0 -0
  300. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_dashboard.py +0 -0
  301. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_diagnostics.py +0 -0
  302. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_doctor_catalog.py +0 -0
  303. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_doctor_cli_explain.py +0 -0
  304. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_dotenv_loader.py +0 -0
  305. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_e2e_render.py +0 -0
  306. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_eval_analysis.py +0 -0
  307. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_eval_run_grader_errors.py +0 -0
  308. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_evaluators.py +0 -0
  309. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_foundry_discovery.py +0 -0
  310. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_governance.py +0 -0
  311. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_http_response_fields.py +0 -0
  312. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_http_streaming.py +0 -0
  313. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_init_command.py +0 -0
  314. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_initializer.py +0 -0
  315. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_invocations.py +0 -0
  316. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_knowledge_loader.py +0 -0
  317. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_llm_assist.py +0 -0
  318. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_llm_assist_spec_rules.py +0 -0
  319. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_mcp_server.py +0 -0
  320. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_official_eval.py +0 -0
  321. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_pipeline_reporter.py +0 -0
  322. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_preflight.py +0 -0
  323. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_production_telemetry.py +0 -0
  324. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_prompt_deploy.py +0 -0
  325. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_release_evidence.py +0 -0
  326. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_runtime_conversation.py +0 -0
  327. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_runtime_dataset_response_source.py +0 -0
  328. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_runtime_model_config.py +0 -0
  329. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_runtime_response_fields.py +0 -0
  330. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_setup_wizard.py +0 -0
  331. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_shared_credentials.py +0 -0
  332. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_skills.py +0 -0
  333. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_skills_sync.py +0 -0
  334. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_step_summary.py +0 -0
  335. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_telemetry.py +0 -0
  336. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_telemetry_import.py +0 -0
  337. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_time_range.py +0 -0
  338. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_trace_promotion.py +0 -0
  339. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_workflow_analysis.py +0 -0
  340. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tests/unit/test_yaml_utils.py +0 -0
  341. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/tombstones/vscode/CDN_DEPRECATION_REQUEST.md +0 -0
  342. {agentops_accelerator-0.8.2 → agentops_accelerator-0.8.3}/uv.lock +0 -0
@@ -13,7 +13,7 @@
13
13
  "name": "agentops-accelerator",
14
14
  "source": "../../plugins/agentops",
15
15
  "description": "Copilot agent skills for running standardized evaluation workflows with AgentOps Toolkit and Microsoft Foundry agents.",
16
- "version": "0.8.2",
16
+ "version": "0.8.3",
17
17
  "keywords": [
18
18
  "agentops",
19
19
  "evaluation",
@@ -13,7 +13,7 @@
13
13
  "name": "agentops-accelerator",
14
14
  "source": "../../plugins/agentops",
15
15
  "description": "Copilot agent skills for running standardized evaluation workflows with AgentOps Toolkit and Microsoft Foundry agents.",
16
- "version": "0.8.2",
16
+ "version": "0.8.3",
17
17
  "keywords": [
18
18
  "agentops",
19
19
  "evaluation",
@@ -181,20 +181,24 @@ jobs:
181
181
 
182
182
  - name: Install from TestPyPI
183
183
  run: |
184
- for i in 1 2 3 4 5; do
185
- echo "Attempt $i: installing agentops-accelerator==${{ steps.version.outputs.version }}"
186
- if pip install \
184
+ # TestPyPI serves its simple index through a CDN, so a freshly
185
+ # uploaded release is not immediately resolvable even after the
186
+ # upload returns 200 OK. Allow ~6 minutes for it to propagate.
187
+ ATTEMPTS=12
188
+ for i in $(seq 1 "$ATTEMPTS"); do
189
+ echo "Attempt $i/$ATTEMPTS: installing agentops-accelerator==${{ steps.version.outputs.version }}"
190
+ if pip install --no-cache-dir \
187
191
  "agentops-accelerator==${{ steps.version.outputs.version }}" \
188
192
  --index-url https://test.pypi.org/simple/ \
189
193
  --extra-index-url https://pypi.org/simple/; then
190
194
  exit 0
191
195
  fi
192
- if [ "$i" -lt 5 ]; then
196
+ if [ "$i" -lt "$ATTEMPTS" ]; then
193
197
  echo "Not available yet, waiting 30s..."
194
198
  sleep 30
195
199
  fi
196
200
  done
197
- echo "::error::agentops-accelerator==${{ steps.version.outputs.version }} was not available from TestPyPI after 5 attempts."
201
+ echo "::error::agentops-accelerator==${{ steps.version.outputs.version }} was not available from TestPyPI after $ATTEMPTS attempts (~6 min)."
198
202
  exit 1
199
203
 
200
204
  - name: Smoke test
@@ -124,20 +124,24 @@ jobs:
124
124
 
125
125
  - name: Install from TestPyPI
126
126
  run: |
127
- for i in 1 2 3 4 5; do
128
- echo "Attempt $i: installing agentops-accelerator==${{ steps.version.outputs.version }}"
129
- if pip install \
127
+ # TestPyPI serves its simple index through a CDN, so a freshly
128
+ # uploaded release is not immediately resolvable even after the
129
+ # upload returns 200 OK. Allow ~6 minutes for it to propagate.
130
+ ATTEMPTS=12
131
+ for i in $(seq 1 "$ATTEMPTS"); do
132
+ echo "Attempt $i/$ATTEMPTS: installing agentops-accelerator==${{ steps.version.outputs.version }}"
133
+ if pip install --no-cache-dir \
130
134
  "agentops-accelerator==${{ steps.version.outputs.version }}" \
131
135
  --index-url https://test.pypi.org/simple/ \
132
136
  --extra-index-url https://pypi.org/simple/; then
133
137
  exit 0
134
138
  fi
135
- if [ "$i" -lt 5 ]; then
139
+ if [ "$i" -lt "$ATTEMPTS" ]; then
136
140
  echo "Not available yet, waiting 30s..."
137
141
  sleep 30
138
142
  fi
139
143
  done
140
- echo "::error::agentops-accelerator==${{ steps.version.outputs.version }} was not available from TestPyPI after 5 attempts."
144
+ echo "::error::agentops-accelerator==${{ steps.version.outputs.version }} was not available from TestPyPI after $ATTEMPTS attempts (~6 min)."
141
145
  exit 1
142
146
 
143
147
  - name: Smoke test — version and help
@@ -98,20 +98,24 @@ jobs:
98
98
 
99
99
  - name: Install from TestPyPI
100
100
  run: |
101
- for i in 1 2 3 4 5; do
102
- echo "Attempt $i: installing agentops-accelerator==${{ steps.version.outputs.version }}"
103
- if pip install \
101
+ # TestPyPI serves its simple index through a CDN, so a freshly
102
+ # uploaded release is not immediately resolvable even after the
103
+ # upload returns 200 OK. Allow ~6 minutes for it to propagate.
104
+ ATTEMPTS=12
105
+ for i in $(seq 1 "$ATTEMPTS"); do
106
+ echo "Attempt $i/$ATTEMPTS: installing agentops-accelerator==${{ steps.version.outputs.version }}"
107
+ if pip install --no-cache-dir \
104
108
  "agentops-accelerator==${{ steps.version.outputs.version }}" \
105
109
  --index-url https://test.pypi.org/simple/ \
106
110
  --extra-index-url https://pypi.org/simple/; then
107
111
  exit 0
108
112
  fi
109
- if [ "$i" -lt 5 ]; then
113
+ if [ "$i" -lt "$ATTEMPTS" ]; then
110
114
  echo "Not available yet, waiting 30s..."
111
115
  sleep 30
112
116
  fi
113
117
  done
114
- echo "::error::agentops-accelerator==${{ steps.version.outputs.version }} was not available from TestPyPI after 5 attempts."
118
+ echo "::error::agentops-accelerator==${{ steps.version.outputs.version }} was not available from TestPyPI after $ATTEMPTS attempts (~6 min)."
115
119
  exit 1
116
120
 
117
121
  - name: Smoke test — version and help
@@ -5,6 +5,49 @@ This format follows [Keep a Changelog](https://keepachangelog.com/) and adheres
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.8.3] - 2026-08-07
9
+
10
+ ### Fixed
11
+ - **`execution: cloud` now works with a Foundry hosted agent.** Setting
12
+ `execution: cloud` on a hosted agent endpoint failed with
13
+ `execution: cloud only supports Foundry prompt agents`, so hosted-agent users
14
+ had no way to run a server-side evaluation and see the results in the New
15
+ Foundry Evaluations panel. Their only option was `execution: local`, which
16
+ keeps everything on the client and publishes nothing.
17
+
18
+ This was an artificial restriction, not an API limit. The Foundry Evals API
19
+ identifies its target with `{"type": "azure_ai_agent", "name": ..., "version":
20
+ ...}`, and a hosted agent URL already carries both values in its path
21
+ (`/agents/<name>/versions/<version>`). The problem was that `classify_agent()`
22
+ never extracted them: it returned a `foundry_hosted` target with `name` and
23
+ `version` left as `None`, so the cloud path had nothing to send and rejected
24
+ the target up front.
25
+
26
+ `classify_agent()` now parses the agent name and version out of a hosted
27
+ endpoint URL, tolerating trailing path segments (`/responses`), query strings,
28
+ and fragments. The guards in `pipeline/cloud_runner.py` and
29
+ `pipeline/orchestrator.py` accept `foundry_hosted` alongside `foundry_prompt`.
30
+ A hosted URL with no `/versions/<version>` segment is still rejected, because
31
+ there is no version to pin the run to, but the error now names the missing
32
+ segment instead of rejecting the whole target kind.
33
+
34
+ `execution: local` remains the default for every target kind, so this change
35
+ adds an option without altering existing behavior.
36
+
37
+ - **CI: `Install from TestPyPI` no longer fails on a healthy build.** After a
38
+ dev, staging, or release build uploaded a distribution to TestPyPI and
39
+ received `200 OK`, the verification step immediately tried to install it and
40
+ gave up after 5 attempts spaced 30 s apart (~2 min). TestPyPI serves its
41
+ simple index through a CDN, so propagation regularly takes longer than that,
42
+ and the job failed with
43
+ `No matching distribution found for agentops-accelerator==<version>` for a
44
+ package that had in fact been published successfully. The retry window is now
45
+ 12 attempts (~6 min), and `pip install` runs with `--no-cache-dir` so a
46
+ negative index response from an earlier attempt is not reused within the same
47
+ job. Applied to `ci.yml` (`verify-dev`), `staging.yml`, and `release.yml` —
48
+ in `release.yml` this step gates publication to PyPI, so a false negative
49
+ there blocked the release entirely.
50
+
8
51
  ## [0.8.2] - 2026-08-07
9
52
 
10
53
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentops-accelerator
3
- Version: 0.8.2
3
+ Version: 0.8.3
4
4
  Summary: Release readiness gates and evidence for Microsoft Foundry agents
5
5
  License: MIT License
6
6
 
@@ -335,7 +335,7 @@ That's a complete config. AgentOps:
335
335
  | `auth_header_env` | no | Env var name holding a Bearer token. |
336
336
  | `evaluators` | no | Escape-hatch list of evaluator names that overrides auto-selection. |
337
337
  | `publish` | no | Boolean. With `execution: local`, `true` uploads local metrics to Classic Foundry. With `execution: cloud`, publishing is implicit. |
338
- | `execution` | no | `local` (default) runs through AgentOps locally. `cloud` runs a Foundry prompt agent server-side through the OpenAI Evals API. |
338
+ | `execution` | no | `local` (default) runs through AgentOps locally. `cloud` runs a Foundry agent server-side through the OpenAI Evals API — either a prompt agent (`name:version`) or a hosted agent URL containing `/agents/<name>/versions/<version>`. |
339
339
  | `project_endpoint` | no | Foundry project URL used by Foundry invocation and publishing. Falls back to `AZURE_AI_FOUNDRY_PROJECT_ENDPOINT`. |
340
340
  | `dataset_sync` | no | Cloud-evaluation dataset policy: `auto`, `foundry`, or `inline`. |
341
341
 
@@ -429,12 +429,27 @@ thresholds:
429
429
 
430
430
  ```yaml
431
431
  version: 1
432
- agent: my-rag:3 # name:version is required for cloud mode
432
+ agent: my-rag:3 # prompt agent
433
433
  dataset: .agentops/data/qa.jsonl
434
434
  execution: cloud
435
435
  # project_endpoint: "https://<resource>.services.ai.azure.com/api/projects/<p>"
436
436
  ```
437
437
 
438
+ A hosted agent works the same way, as long as the URL carries the agent
439
+ name and version. That is the pair Foundry needs to resolve the target:
440
+
441
+ ```yaml
442
+ version: 1
443
+ agent: https://<resource>.services.ai.azure.com/api/projects/<p>/agents/helpdeskbot/versions/11
444
+ dataset: .agentops/data/qa.jsonl
445
+ protocol: responses
446
+ execution: cloud
447
+ ```
448
+
449
+ A hosted URL without a `/versions/<version>` segment cannot be cloud-executed,
450
+ because there is no version to pin the run to. Add the version to the URL, or
451
+ keep `execution: local` for that target.
452
+
438
453
  ## Datasets
439
454
 
440
455
  A dataset is a plain JSONL file. One row per line. No companion YAML.
@@ -567,7 +582,7 @@ link.
567
582
  |---|---|---|---|
568
583
  | `execution: local`, `publish: false` | AgentOps invokes target and evaluators locally | None; local artifacts only | Any target |
569
584
  | `execution: local`, `publish: true` | AgentOps local run, then metric upload | Classic Foundry Evaluations panel | Any target |
570
- | `execution: cloud` | Foundry runs agent + evaluators server-side through the OpenAI Evals API | New Foundry Evaluations panel; publish is implicit | Foundry Prompt Agent (`name:version`) |
585
+ | `execution: cloud` | Foundry runs agent + evaluators server-side through the OpenAI Evals API | New Foundry Evaluations panel; publish is implicit | Foundry Prompt Agent (`name:version`) or Foundry Hosted Agent URL with `/agents/<name>/versions/<version>` |
571
586
 
572
587
  Foundry-visible modes:
573
588
 
@@ -444,6 +444,10 @@ Foundry through `agentops eval run`, so AgentOps can enforce thresholds and writ
444
444
  repo-side evidence. AgentOps keeps the local path for hosted endpoints, models,
445
445
  unsupported evaluator mappings, and fallback cases.
446
446
 
447
+ The hosted-endpoint row above is the default, not a hard limit. A hosted agent
448
+ URL that includes `/agents/<name>/versions/<version>` can also run cloud eval by
449
+ setting `execution: cloud` in `agentops.yaml`.
450
+
447
451
  When the quality gate uses a task-specific rubric, keep it as an advanced
448
452
  Foundry / azd hardening step: first confirm the rubric evaluator exists in the
449
453
  Foundry project and that an azd run emits stable metric names for its scores.
@@ -586,9 +586,16 @@ Recommendation
586
586
  Copilot skills installed - available for workflow adaptation handoff
587
587
  ```
588
588
 
589
- That is expected. Foundry prompt agents can use AgentOps cloud eval in Foundry;
590
- hosted endpoints use AgentOps local eval so the repo can invoke the endpoint,
591
- normalize results, apply thresholds, and keep a stable `results.json` contract.
589
+ That is expected. The default for a hosted endpoint is AgentOps local eval, so
590
+ the repo can invoke the endpoint, normalize results, apply thresholds, and keep
591
+ a stable `results.json` contract.
592
+
593
+ You can opt into server-side execution instead. Set `execution: cloud` in
594
+ `agentops.yaml` and Foundry runs the agent and the evaluators, with the run
595
+ appearing in the New Foundry Evaluations panel. This requires the hosted URL to
596
+ include `/agents/<name>/versions/<version>`, since that pair is how Foundry
597
+ identifies the target. The trade-off is that latency becomes Foundry-side
598
+ rather than client-measured, and custom evaluators are skipped.
592
599
 
593
600
  ## 8. Run a local eval
594
601
 
@@ -2,7 +2,7 @@
2
2
  "name": "agentops-accelerator",
3
3
  "displayName": "AgentOps Accelerator — Skills for GitHub Copilot",
4
4
  "description": "Copilot agent skills for running standardized evaluation workflows with AgentOps Accelerator and Microsoft Foundry agents.",
5
- "version": "0.8.2",
5
+ "version": "0.8.3",
6
6
  "publisher": "AgentOpsAccelerator",
7
7
  "icon": "icon.png",
8
8
  "license": "MIT",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agentops-accelerator",
3
3
  "description": "Copilot agent skills for running standardized evaluation workflows with AgentOps Accelerator and Microsoft Foundry agents.",
4
- "version": "0.8.2",
4
+ "version": "0.8.3",
5
5
  "author": {
6
6
  "name": "AgentOps Accelerator",
7
7
  "url": "https://github.com/Azure/agentops"
@@ -26,6 +26,7 @@ kinds - ``foundry_prompt``, ``foundry_hosted``, ``http_json``, or
26
26
 
27
27
  from __future__ import annotations
28
28
 
29
+ import re
29
30
  from dataclasses import dataclass
30
31
  from pathlib import Path
31
32
  from typing import Any, Dict, List, Literal, Optional
@@ -64,7 +65,9 @@ TargetKind = Literal[
64
65
  #: evaluators locally. Results are the canonical record.
65
66
  #: - ``cloud``: Foundry runs the agent and evaluators server-side via the
66
67
  #: OpenAI Evals API. Use this when you want the run to appear in the
67
- #: New Foundry Evaluations panel as the primary record.
68
+ #: New Foundry Evaluations panel as the primary record. Requires a Foundry
69
+ #: agent target: either ``name:version`` (prompt agent) or a hosted agent
70
+ #: endpoint URL containing ``/agents/<name>/versions/<version>``.
68
71
  #: - ``azd``: Azure Developer CLI runs ``azd ai agent eval``. This is a hard
69
72
  #: dependency: if azd cannot run, AgentOps fails gracefully rather than
70
73
  #: switching engines.
@@ -1017,7 +1020,9 @@ class AgentOpsConfig(BaseModel):
1017
1020
  "- local (default): AgentOps invokes the agent row-by-row locally.\n"
1018
1021
  "- cloud: Foundry runs the agent and evaluators server-side, and "
1019
1022
  "the run is implicitly published to the New Foundry Evaluations "
1020
- "panel (publish defaults to true).\n"
1023
+ "panel (publish defaults to true). Requires a Foundry agent "
1024
+ "target: 'name:version', or a hosted agent endpoint URL "
1025
+ "containing '/agents/<name>/versions/<version>'.\n"
1021
1026
  "- azd: azd ai agent eval runs the Foundry-native evaluation. If "
1022
1027
  "azd cannot run, AgentOps fails gracefully and never switches "
1023
1028
  "engines implicitly.\n"
@@ -1202,8 +1207,12 @@ class TargetResolution:
1202
1207
  protocol: Optional[Protocol]
1203
1208
  raw: str
1204
1209
  #: For ``foundry_prompt``: the agent name (left of the colon).
1210
+ #: For ``foundry_hosted``: parsed from the ``/agents/<name>/`` URL
1211
+ #: segment when present (``None`` when the URL does not carry one).
1205
1212
  name: Optional[str] = None
1206
1213
  #: For ``foundry_prompt``: the version (right of the colon).
1214
+ #: For ``foundry_hosted``: parsed from the ``/versions/<version>/``
1215
+ #: URL segment when present.
1207
1216
  version: Optional[str] = None
1208
1217
  #: For ``foundry_hosted`` / ``http_json``: the target URL.
1209
1218
  url: Optional[str] = None
@@ -1230,6 +1239,38 @@ def _looks_like_foundry_url(url: str) -> bool:
1230
1239
  return any(domain in lowered for domain in foundry_domains)
1231
1240
 
1232
1241
 
1242
+ #: Matches the ``/agents/<name>/versions/<version>`` segment pair that Foundry
1243
+ #: hosted agent endpoints carry. Tolerates trailing path segments (e.g.
1244
+ #: ``/responses``), query strings, and fragments.
1245
+ _HOSTED_AGENT_REFERENCE_RE = re.compile(
1246
+ r"/agents/(?P<name>[^/?#]+)/versions/(?P<version>[^/?#]+)",
1247
+ re.IGNORECASE,
1248
+ )
1249
+
1250
+
1251
+ def _parse_hosted_agent_reference(url: str) -> tuple[Optional[str], Optional[str]]:
1252
+ """Extract ``(name, version)`` from a Foundry hosted agent URL.
1253
+
1254
+ A hosted endpoint such as::
1255
+
1256
+ https://acct.services.ai.azure.com/api/projects/p/agents/bot/versions/11
1257
+
1258
+ references the very same Foundry agent that a ``foundry_prompt`` target
1259
+ spells as ``bot:11``. Server-side evaluation (``execution: cloud``) needs
1260
+ that ``name`` / ``version`` pair to build the ``azure_ai_agent`` target,
1261
+ so parse it out instead of forcing users to duplicate the reference.
1262
+
1263
+ Returns ``(None, None)`` when the URL carries no such segment pair; the
1264
+ caller decides whether that is fatal.
1265
+ """
1266
+ match = _HOSTED_AGENT_REFERENCE_RE.search(url)
1267
+ if match is None:
1268
+ return None, None
1269
+ name = match.group("name").strip()
1270
+ version = match.group("version").strip()
1271
+ return (name or None), (version or None)
1272
+
1273
+
1233
1274
  def classify_agent(
1234
1275
  agent: str,
1235
1276
  protocol: Optional[Protocol] = None,
@@ -1276,11 +1317,14 @@ def classify_agent(
1276
1317
  "Foundry hosted endpoints accept only protocol "
1277
1318
  "'responses' or 'invocations'"
1278
1319
  )
1320
+ hosted_name, hosted_version = _parse_hosted_agent_reference(raw)
1279
1321
  return TargetResolution(
1280
1322
  kind="foundry_hosted",
1281
1323
  protocol=resolved_protocol,
1282
1324
  raw=raw,
1283
1325
  url=raw,
1326
+ name=hosted_name,
1327
+ version=hosted_version,
1284
1328
  )
1285
1329
 
1286
1330
  resolved_protocol = protocol or "http-json"
@@ -28,8 +28,10 @@ point of view.
28
28
 
29
29
  Limitations (documented in the YAML schema docstring as well):
30
30
 
31
- * Only ``foundry_prompt`` agents (``name:version``) are supported. HTTP
32
- endpoints, local adapters, and direct model deployments are rejected.
31
+ * Foundry agents only: a ``foundry_prompt`` target (``name:version``) or a
32
+ ``foundry_hosted`` endpoint URL carrying ``/agents/<name>/versions/<v>``.
33
+ Plain HTTP endpoints, local adapters, and direct model deployments are
34
+ rejected - Foundry has to be able to resolve the agent itself.
33
35
  * Only builtin evaluators that map cleanly onto ``azure_ai_evaluator``
34
36
  testing criteria are supported. Custom evaluators are skipped with a
35
37
  warning.
@@ -184,10 +186,11 @@ def run_on_foundry_cloud(
184
186
  """
185
187
  progress = progress or (lambda _msg: None)
186
188
 
187
- if result.target.kind != "foundry_prompt":
189
+ if result.target.kind not in {"foundry_prompt", "foundry_hosted"}:
188
190
  raise ValueError(
189
- "publish: foundry_cloud only supports Foundry agents declared "
190
- "as 'name:version' (foundry_prompt targets). Got "
191
+ "execution: cloud only supports Foundry agents - either a "
192
+ "'name:version' prompt agent or a hosted agent endpoint URL "
193
+ "containing '/agents/<name>/versions/<version>'. Got "
191
194
  f"target.kind={result.target.kind!r}."
192
195
  )
193
196
  if not dataset_path.exists():
@@ -196,6 +199,15 @@ def run_on_foundry_cloud(
196
199
  agent_name = result.target.name
197
200
  agent_version = result.target.version
198
201
  if not agent_name or not agent_version:
202
+ if result.target.kind == "foundry_hosted":
203
+ raise ValueError(
204
+ "execution: cloud could not derive an agent name/version "
205
+ f"from the hosted endpoint {result.target.raw!r}. Foundry "
206
+ "runs the agent server-side and needs an explicit agent "
207
+ "reference. Use a URL that contains "
208
+ "'/agents/<name>/versions/<version>', or set "
209
+ "'agent: <name>:<version>' in agentops.yaml."
210
+ )
199
211
  raise ValueError(
200
212
  "Cloud publish requires a fully qualified 'name:version' agent "
201
213
  f"reference; got name={agent_name!r} version={agent_version!r}"
@@ -272,10 +272,20 @@ def _run_evaluation_cloud(
272
272
  options.agent_override or config.agent,
273
273
  config.protocol,
274
274
  )
275
- if target.kind != "foundry_prompt":
275
+ if target.kind not in {"foundry_prompt", "foundry_hosted"}:
276
+ raise ValueError(
277
+ "execution: cloud only supports Foundry agents - either a "
278
+ "'name:version' prompt agent or a hosted agent endpoint URL "
279
+ f"containing '/agents/<name>/versions/<version>'; got "
280
+ f"target.kind={target.kind!r}."
281
+ )
282
+ if not target.name or not target.version:
276
283
  raise ValueError(
277
- "execution: cloud only supports Foundry prompt agents "
278
- f"('name:version'); got target.kind={target.kind!r}."
284
+ "execution: cloud could not derive an agent name/version from "
285
+ f"{target.raw!r}. Foundry runs the agent server-side and needs "
286
+ "an explicit agent reference. Use a hosted endpoint URL that "
287
+ "contains '/agents/<name>/versions/<version>', or set "
288
+ "'agent: <name>:<version>' in agentops.yaml."
279
289
  )
280
290
 
281
291
  dataset_path = options.dataset_override or _resolve_dataset_path(config, options)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentops-accelerator
3
- Version: 0.8.2
3
+ Version: 0.8.3
4
4
  Summary: Release readiness gates and evidence for Microsoft Foundry agents
5
5
  License: MIT License
6
6
 
@@ -55,6 +55,46 @@ class TestClassifyAgent:
55
55
  assert result.protocol == "responses"
56
56
  assert result.url == url
57
57
 
58
+ def test_foundry_hosted_parses_agent_name_and_version(self) -> None:
59
+ """A hosted endpoint references the same agent a prompt target
60
+ spells as 'name:version'; cloud execution needs that pair."""
61
+ url = (
62
+ "https://acct.services.ai.azure.com/api/projects/p"
63
+ "/agents/helpdeskbot/versions/11"
64
+ )
65
+ result = classify_agent(url)
66
+ assert result.kind == "foundry_hosted"
67
+ assert result.name == "helpdeskbot"
68
+ assert result.version == "11"
69
+ assert result.url == url
70
+
71
+ def test_foundry_hosted_parses_reference_with_trailing_segment(self) -> None:
72
+ url = (
73
+ "https://acct.services.ai.azure.com/api/projects/p"
74
+ "/agents/helpdeskbot/versions/11/responses"
75
+ )
76
+ result = classify_agent(url)
77
+ assert result.name == "helpdeskbot"
78
+ assert result.version == "11"
79
+
80
+ def test_foundry_hosted_parses_reference_with_query_string(self) -> None:
81
+ url = (
82
+ "https://acct.services.ai.azure.com/api/projects/p"
83
+ "/agents/helpdeskbot/versions/11?api-version=2025-05-01"
84
+ )
85
+ result = classify_agent(url)
86
+ assert result.name == "helpdeskbot"
87
+ assert result.version == "11"
88
+
89
+ def test_foundry_hosted_without_version_has_no_reference(self) -> None:
90
+ """No /versions/ segment means no resolvable agent reference. The
91
+ target still classifies (local execution works); only cloud cares."""
92
+ url = "https://my-project.services.ai.azure.com/agents/foo"
93
+ result = classify_agent(url)
94
+ assert result.kind == "foundry_hosted"
95
+ assert result.name is None
96
+ assert result.version is None
97
+
58
98
  def test_foundry_hosted_invocations(self) -> None:
59
99
  url = "https://my-project.services.ai.azure.com/agents/foo"
60
100
  result = classify_agent(url, protocol="invocations")
@@ -185,7 +185,49 @@ def test_build_item_schema_empty_file_falls_back(tmp_path: Path):
185
185
 
186
186
  def test_publish_rejects_non_foundry_targets(dataset_file: Path):
187
187
  result = _make_result(kind="http_json")
188
- with pytest.raises(ValueError, match="foundry_cloud only supports"):
188
+ with pytest.raises(ValueError, match="only supports Foundry agents"):
189
+ cloud_runner.run_on_foundry_cloud(
190
+ result,
191
+ dataset_path=dataset_file,
192
+ project_endpoint="https://x.example/api/projects/p",
193
+ )
194
+
195
+
196
+ def test_publish_accepts_hosted_agent_with_resolved_reference(dataset_file: Path):
197
+ """A hosted agent endpoint carries the same name/version a prompt agent
198
+ spells as 'name:version', so cloud execution must accept it."""
199
+ result = _make_result(kind="foundry_hosted")
200
+ result.target = TargetInfo(
201
+ kind="foundry_hosted",
202
+ raw=(
203
+ "https://acct.services.ai.azure.com/api/projects/p"
204
+ "/agents/support-bot/versions/1"
205
+ ),
206
+ name="support-bot",
207
+ version="1",
208
+ )
209
+ # Guard passes; failure comes later from the absent azure SDK/network,
210
+ # never from the target-kind check itself.
211
+ with pytest.raises(Exception) as excinfo: # noqa: PT011
212
+ cloud_runner.run_on_foundry_cloud(
213
+ result,
214
+ dataset_path=dataset_file,
215
+ project_endpoint="https://x.example/api/projects/p",
216
+ )
217
+ assert "only supports Foundry agents" not in str(excinfo.value)
218
+
219
+
220
+ def test_publish_rejects_hosted_agent_without_version(dataset_file: Path):
221
+ """A hosted URL with no /versions/ segment cannot be resolved to an
222
+ azure_ai_agent target; the error must say how to fix it."""
223
+ result = _make_result(kind="foundry_hosted")
224
+ result.target = TargetInfo(
225
+ kind="foundry_hosted",
226
+ raw="https://acct.services.ai.azure.com/api/projects/p/agents/bot",
227
+ name=None,
228
+ version=None,
229
+ )
230
+ with pytest.raises(ValueError, match="could not derive an agent name"):
189
231
  cloud_runner.run_on_foundry_cloud(
190
232
  result,
191
233
  dataset_path=dataset_file,
@@ -368,13 +368,13 @@ def test_run_evaluation_cloud_requires_project_endpoint(tmp_path: Path, monkeypa
368
368
 
369
369
 
370
370
  def test_run_evaluation_cloud_rejects_non_foundry_target(tmp_path: Path):
371
- """execution: cloud only works for Foundry prompt agents."""
371
+ """execution: cloud only works for Foundry agents."""
372
372
  from agentops.core.agentops_config import AgentOpsConfig
373
373
  from agentops.pipeline import orchestrator
374
374
 
375
- # Construct config bypassing validators: only Foundry prompt agents
376
- # can be cloud-executed, so build a model_direct target to exercise
377
- # the orchestrator-level guard.
375
+ # Construct config bypassing validators: only Foundry agents can be
376
+ # cloud-executed, so build a model_direct target to exercise the
377
+ # orchestrator-level guard.
378
378
  dataset_path = tmp_path / "dataset.jsonl"
379
379
  dataset_path.write_text('{"input": "hi"}\n', encoding="utf-8")
380
380
 
@@ -392,5 +392,33 @@ def test_run_evaluation_cloud_rejects_non_foundry_target(tmp_path: Path):
392
392
  config_path=tmp_path / "agentops.yaml",
393
393
  output_dir=output_dir,
394
394
  )
395
- with pytest.raises(ValueError, match="Foundry prompt agents"):
395
+ with pytest.raises(ValueError, match="only supports Foundry agents"):
396
+ orchestrator._run_evaluation_cloud(config, options=options)
397
+
398
+
399
+ def test_run_evaluation_cloud_rejects_hosted_agent_without_version(tmp_path: Path):
400
+ """A hosted URL without /versions/ cannot name an azure_ai_agent target,
401
+ so the guard must reject it with an actionable message instead of
402
+ failing deep inside the Foundry SDK call."""
403
+ from agentops.core.agentops_config import AgentOpsConfig
404
+ from agentops.pipeline import orchestrator
405
+
406
+ dataset_path = tmp_path / "dataset.jsonl"
407
+ dataset_path.write_text('{"input": "hi"}\n', encoding="utf-8")
408
+
409
+ config = AgentOpsConfig(
410
+ version=1,
411
+ agent="https://acct.services.ai.azure.com/api/projects/p/agents/bot",
412
+ dataset=dataset_path,
413
+ execution="cloud",
414
+ project_endpoint="https://x.example/api/projects/p",
415
+ )
416
+ output_dir = tmp_path / "out"
417
+ output_dir.mkdir()
418
+
419
+ options = orchestrator.RunOptions(
420
+ config_path=tmp_path / "agentops.yaml",
421
+ output_dir=output_dir,
422
+ )
423
+ with pytest.raises(ValueError, match="could not derive an agent name"):
396
424
  orchestrator._run_evaluation_cloud(config, options=options)