agentops-accelerator 0.3.3__tar.gz → 0.3.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 (299) hide show
  1. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.claude-plugin/marketplace.json +1 -1
  2. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/plugin/marketplace.json +1 -1
  3. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/CHANGELOG.md +26 -0
  4. {agentops_accelerator-0.3.3/src/agentops_accelerator.egg-info → agentops_accelerator-0.3.4}/PKG-INFO +1 -1
  5. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/package.json +1 -1
  6. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/plugin.json +1 -1
  7. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/runtime.py +22 -2
  8. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/azure_endpoints.py +32 -0
  9. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4/src/agentops_accelerator.egg-info}/PKG-INFO +1 -1
  10. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops_accelerator.egg-info/SOURCES.txt +1 -0
  11. agentops_accelerator-0.3.4/tests/unit/test_azure_endpoints.py +117 -0
  12. agentops_accelerator-0.3.4/tests/unit/test_runtime_model_config.py +100 -0
  13. agentops_accelerator-0.3.3/tests/unit/test_azure_endpoints.py +0 -54
  14. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.gitattributes +0 -0
  15. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/actions/azure-oidc-login/action.yml +0 -0
  16. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/code-quality-py.instructions.md +0 -0
  17. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/copilot-instructions.md +0 -0
  18. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/dependabot.yml +0 -0
  19. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/extensions/agentops-skills/extension.mjs +0 -0
  20. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/skills/release-management/SKILL.md +0 -0
  21. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/_build.yml +0 -0
  22. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/agentops-watchdog.yml +0 -0
  23. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/ci.yml +0 -0
  24. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/cut-release.yml +0 -0
  25. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/e2e.yml +0 -0
  26. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/release.yml +0 -0
  27. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/staging.yml +0 -0
  28. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.gitignore +0 -0
  29. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.pre-commit-config.yaml +0 -0
  30. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.vscode/launch.json +0 -0
  31. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.vscode/settings.json +0 -0
  32. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.vscode/tasks.json +0 -0
  33. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/AGENTS.md +0 -0
  34. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/CONTRIBUTING.md +0 -0
  35. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/LICENSE +0 -0
  36. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/README.md +0 -0
  37. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/SECURITY.md +0 -0
  38. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/bundles.md +0 -0
  39. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/ci-github-actions.md +0 -0
  40. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/concepts.md +0 -0
  41. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/doctor-checks.md +0 -0
  42. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/doctor-explained.md +0 -0
  43. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/e2e-live-architecture.md +0 -0
  44. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/e2e-live-setup.md +0 -0
  45. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/foundry-evaluation-sdk-built-in-evaluators.md +0 -0
  46. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/how-it-works.md +0 -0
  47. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/media/agentops-diagrams.vsdx +0 -0
  48. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/media/foundry-control-plane.png +0 -0
  49. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/release-process.md +0 -0
  50. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/tutorial-end-to-end.md +0 -0
  51. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/tutorial-hosted-agent-quickstart.md +0 -0
  52. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/tutorial-prompt-agent-quickstart.md +0 -0
  53. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/examples/flat-quickstart/README.md +0 -0
  54. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/examples/flat-quickstart/agentops.yaml +0 -0
  55. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/examples/flat-quickstart/dataset.jsonl +0 -0
  56. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/icon.png +0 -0
  57. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/agent-app/Dockerfile +0 -0
  58. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/agent-app/app.py +0 -0
  59. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/agent-app/requirements.txt +0 -0
  60. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/bootstrap.bicep +0 -0
  61. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/bootstrap.parameters.example.json +0 -0
  62. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/perrun.bicep +0 -0
  63. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/launch.json +0 -0
  64. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/media/foundry.svg +0 -0
  65. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/media/quickstart.gif +0 -0
  66. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/.vscodeignore +0 -0
  67. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/LICENSE +0 -0
  68. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/README.md +0 -0
  69. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/skills/agentops-agent/SKILL.md +0 -0
  70. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/skills/agentops-config/SKILL.md +0 -0
  71. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/skills/agentops-dataset/SKILL.md +0 -0
  72. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/skills/agentops-eval/SKILL.md +0 -0
  73. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/skills/agentops-report/SKILL.md +0 -0
  74. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/skills/agentops-workflow/SKILL.md +0 -0
  75. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/pyproject.toml +0 -0
  76. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/create_support_agent.py +0 -0
  77. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/cut-release.ps1 +0 -0
  78. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/cut-release.sh +0 -0
  79. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_aggregate_summary.py +0 -0
  80. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_data/basic.jsonl +0 -0
  81. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_data/rag.jsonl +0 -0
  82. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_data/tools.jsonl +0 -0
  83. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_demo.py +0 -0
  84. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_hosted_agent.py +0 -0
  85. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_make_transcript.py +0 -0
  86. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_render_config.py +0 -0
  87. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/release.ps1 +0 -0
  88. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/release.sh +0 -0
  89. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/setup-e2e-new-tenant.ps1 +0 -0
  90. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/staging.ps1 +0 -0
  91. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/staging.sh +0 -0
  92. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/sync-skills.ps1 +0 -0
  93. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/sync-skills.sh +0 -0
  94. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/setup.cfg +0 -0
  95. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/__init__.py +0 -0
  96. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/__main__.py +0 -0
  97. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/__init__.py +0 -0
  98. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/_legacy_ids.py +0 -0
  99. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/analyzer.py +0 -0
  100. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/__init__.py +0 -0
  101. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/catalog.py +0 -0
  102. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/errors.py +0 -0
  103. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/foundry_config.py +0 -0
  104. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/latency.py +0 -0
  105. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/opex.py +0 -0
  106. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/opex_workspace.py +0 -0
  107. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture.py +0 -0
  108. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture_rules/__init__.py +0 -0
  109. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture_rules/content_filter.py +0 -0
  110. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture_rules/diagnostics.py +0 -0
  111. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture_rules/local_auth.py +0 -0
  112. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture_rules/managed_identity.py +0 -0
  113. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture_rules/network.py +0 -0
  114. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/regression.py +0 -0
  115. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/release_readiness.py +0 -0
  116. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/safety.py +0 -0
  117. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/spec_conformance.py +0 -0
  118. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/cockpit.py +0 -0
  119. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/config.py +0 -0
  120. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/findings.py +0 -0
  121. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/history.py +0 -0
  122. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/knowledge/__init__.py +0 -0
  123. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/knowledge/waf-checklist.csv +0 -0
  124. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/__init__.py +0 -0
  125. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_base.py +0 -0
  126. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_bundle_rule.py +0 -0
  127. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_client.py +0 -0
  128. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_dataset_rules.py +0 -0
  129. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_engine.py +0 -0
  130. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_prompt_rules.py +0 -0
  131. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_spec_rules.py +0 -0
  132. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/production_telemetry.py +0 -0
  133. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/report.py +0 -0
  134. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/server/__init__.py +0 -0
  135. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/server/app.py +0 -0
  136. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/server/auth.py +0 -0
  137. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/server/chat.py +0 -0
  138. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/server/protocol.py +0 -0
  139. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/__init__.py +0 -0
  140. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/azure_monitor.py +0 -0
  141. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/azure_resources.py +0 -0
  142. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/foundry_control.py +0 -0
  143. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/results_history.py +0 -0
  144. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/spec_detectors/__init__.py +0 -0
  145. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/spec_detectors/_base.py +0 -0
  146. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/spec_detectors/agents_md.py +0 -0
  147. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/spec_detectors/spec_kit.py +0 -0
  148. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/time_range.py +0 -0
  149. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/cli/__init__.py +0 -0
  150. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/cli/app.py +0 -0
  151. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/core/__init__.py +0 -0
  152. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/core/agentops_config.py +0 -0
  153. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/core/config_loader.py +0 -0
  154. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/core/evaluators.py +0 -0
  155. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/core/release_evidence.py +0 -0
  156. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/core/results.py +0 -0
  157. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/mcp/__init__.py +0 -0
  158. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/mcp/server.py +0 -0
  159. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/__init__.py +0 -0
  160. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/cloud_results.py +0 -0
  161. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/cloud_runner.py +0 -0
  162. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/comparison.py +0 -0
  163. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/diagnostics.py +0 -0
  164. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/invocations.py +0 -0
  165. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/official_eval.py +0 -0
  166. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/orchestrator.py +0 -0
  167. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/prompt_deploy.py +0 -0
  168. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/publisher.py +0 -0
  169. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/reporter.py +0 -0
  170. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/thresholds.py +0 -0
  171. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/__init__.py +0 -0
  172. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/cicd.py +0 -0
  173. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/eval_analysis.py +0 -0
  174. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/evidence_pack.py +0 -0
  175. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/initializer.py +0 -0
  176. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/preflight.py +0 -0
  177. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/setup_wizard.py +0 -0
  178. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/skills.py +0 -0
  179. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/trace_promotion.py +0 -0
  180. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/workflow_analysis.py +0 -0
  181. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/.gitignore +0 -0
  182. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/__init__.py +0 -0
  183. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/agent-server/Dockerfile +0 -0
  184. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/agent-server/README.md +0 -0
  185. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/agent-server/main.bicep +0 -0
  186. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/agent.yaml +0 -0
  187. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/agentops.yaml +0 -0
  188. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/foundry.svg +0 -0
  189. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/icon.png +0 -0
  190. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev-azd.yml +0 -0
  191. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev.yml +0 -0
  192. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod-azd.yml +0 -0
  193. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod.yml +0 -0
  194. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prompt-agent.yml +0 -0
  195. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa-azd.yml +0 -0
  196. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa.yml +0 -0
  197. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-pr-prompt-agent.yml +0 -0
  198. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-pr.yml +0 -0
  199. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-watchdog.yml +0 -0
  200. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/project.gitignore +0 -0
  201. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/sample-traces.jsonl +0 -0
  202. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/skills/agentops-agent/SKILL.md +0 -0
  203. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/skills/agentops-config/SKILL.md +0 -0
  204. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/skills/agentops-dataset/SKILL.md +0 -0
  205. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/skills/agentops-eval/SKILL.md +0 -0
  206. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/skills/agentops-report/SKILL.md +0 -0
  207. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/skills/agentops-workflow/SKILL.md +0 -0
  208. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/smoke.jsonl +0 -0
  209. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/waf-checklist.README.md +0 -0
  210. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/waf-checklist.csv +0 -0
  211. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-dev-azd.yml +0 -0
  212. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-dev.yml +0 -0
  213. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-prod-azd.yml +0 -0
  214. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-prod.yml +0 -0
  215. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-prompt-agent.yml +0 -0
  216. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-qa-azd.yml +0 -0
  217. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-qa.yml +0 -0
  218. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-pr-prompt-agent.yml +0 -0
  219. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-pr.yml +0 -0
  220. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-watchdog.yml +0 -0
  221. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/__init__.py +0 -0
  222. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/azd_env.py +0 -0
  223. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/colors.py +0 -0
  224. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/dotenv_loader.py +0 -0
  225. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/foundry_discovery.py +0 -0
  226. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/logging.py +0 -0
  227. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/telemetry.py +0 -0
  228. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/yaml.py +0 -0
  229. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops_accelerator.egg-info/dependency_links.txt +0 -0
  230. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops_accelerator.egg-info/entry_points.txt +0 -0
  231. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops_accelerator.egg-info/requires.txt +0 -0
  232. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops_accelerator.egg-info/top_level.txt +0 -0
  233. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/TESTING.md +0 -0
  234. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/fixtures/fake_adapter.py +0 -0
  235. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/fixtures/fake_eval_runner.py +0 -0
  236. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/integration/.gitkeep +0 -0
  237. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/integration/test_cli_flat_schema.py +0 -0
  238. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/integration/test_pipeline_smoke.py +0 -0
  239. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/.gitkeep +0 -0
  240. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_analyzer.py +0 -0
  241. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_categories.py +0 -0
  242. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_errors.py +0 -0
  243. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_foundry_config.py +0 -0
  244. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_opex.py +0 -0
  245. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_opex_workspace.py +0 -0
  246. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_regression.py +0 -0
  247. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_safety.py +0 -0
  248. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_spec_conformance.py +0 -0
  249. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_cli.py +0 -0
  250. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_config.py +0 -0
  251. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_findings.py +0 -0
  252. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_history.py +0 -0
  253. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_opex_workspace_check.py +0 -0
  254. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_posture_rules.py +0 -0
  255. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_results_history.py +0 -0
  256. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_server.py +0 -0
  257. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agentops_config.py +0 -0
  258. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_azd_env.py +0 -0
  259. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_azure_resources_discovery.py +0 -0
  260. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cicd.py +0 -0
  261. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cli_cockpit_connection_summary.py +0 -0
  262. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cli_cockpit_port_conflict.py +0 -0
  263. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cli_commands.py +0 -0
  264. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cli_explain.py +0 -0
  265. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cloud_results.py +0 -0
  266. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cloud_runner.py +0 -0
  267. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cockpit.py +0 -0
  268. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_diagnostics.py +0 -0
  269. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_doctor_catalog.py +0 -0
  270. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_doctor_cli_explain.py +0 -0
  271. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_dotenv_loader.py +0 -0
  272. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_e2e_render.py +0 -0
  273. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_eval_analysis.py +0 -0
  274. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_evaluators.py +0 -0
  275. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_foundry_discovery.py +0 -0
  276. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_init_command.py +0 -0
  277. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_initializer.py +0 -0
  278. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_invocations.py +0 -0
  279. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_knowledge_loader.py +0 -0
  280. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_llm_assist.py +0 -0
  281. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_llm_assist_spec_rules.py +0 -0
  282. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_mcp_server.py +0 -0
  283. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_official_eval.py +0 -0
  284. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_pipeline_publisher.py +0 -0
  285. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_pipeline_reporter.py +0 -0
  286. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_preflight.py +0 -0
  287. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_production_telemetry.py +0 -0
  288. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_prompt_deploy.py +0 -0
  289. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_release_evidence.py +0 -0
  290. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_runtime_conversation.py +0 -0
  291. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_setup_wizard.py +0 -0
  292. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_skills.py +0 -0
  293. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_skills_sync.py +0 -0
  294. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_telemetry.py +0 -0
  295. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_time_range.py +0 -0
  296. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_trace_promotion.py +0 -0
  297. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_workflow_analysis.py +0 -0
  298. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tombstones/vscode/CDN_DEPRECATION_REQUEST.md +0 -0
  299. {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/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.3.3",
16
+ "version": "0.3.4",
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.3.3",
16
+ "version": "0.3.4",
17
17
  "keywords": [
18
18
  "agentops",
19
19
  "evaluation",
@@ -5,6 +5,32 @@ This format follows [Keep a Changelog](https://keepachangelog.com/) and adheres
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.3.4] - 2026-06-01
9
+
10
+ ### Fixed
11
+ - **`agentops eval run` in local execution mode no longer fails with
12
+ `Missing environment variables: AZURE_OPENAI_ENDPOINT` when only the
13
+ Foundry project endpoint is configured.** `CONTRIBUTING.md` and the
14
+ user-facing env-var docs both stated that `AZURE_OPENAI_ENDPOINT` is
15
+ "auto-derived from the project endpoint when absent", but
16
+ `pipeline/runtime.py::_model_config` only read the explicit
17
+ `AZURE_OPENAI_ENDPOINT` env var with no fallback — so a fresh workspace
18
+ created by `agentops init` (which writes `AZURE_AI_FOUNDRY_PROJECT_ENDPOINT`
19
+ but not `AZURE_OPENAI_ENDPOINT`) would always trip the missing-env error
20
+ the first time AI-assisted evaluators tried to run locally. The new
21
+ helper `agentops.utils.azure_endpoints.derive_openai_endpoint_from_project`
22
+ trims the trailing `/api/projects/<name>` segment from a Foundry project
23
+ URL (covering both `services.ai.azure.com` and the legacy
24
+ `cognitiveservices.azure.com` hosts) to recover the AI Services account
25
+ base URL, which is exactly what the `openai` and `azure-ai-evaluation`
26
+ SDKs want. `_model_config` now uses the derived value as a fallback
27
+ whenever `AZURE_OPENAI_ENDPOINT` is unset, so the documented behavior
28
+ finally matches the runtime. When `AZURE_OPENAI_DEPLOYMENT` is the only
29
+ thing missing, the error message now points users at the deployment list
30
+ in the Foundry portal *and* mentions the `execution: cloud` escape hatch
31
+ in `agentops.yaml` so the next step is obvious without leaving the
32
+ terminal.
33
+
8
34
  ## [0.3.3] - 2026-05-31
9
35
 
10
36
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentops-accelerator
3
- Version: 0.3.3
3
+ Version: 0.3.4
4
4
  Summary: Release readiness gates and evidence for Microsoft Foundry agents
5
5
  License: MIT License
6
6
 
@@ -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.3.3",
5
+ "version": "0.3.4",
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.3.3",
4
+ "version": "0.3.4",
5
5
  "author": {
6
6
  "name": "AgentOps Accelerator",
7
7
  "url": "https://github.com/Azure/agentops"
@@ -65,10 +65,22 @@ def _credential() -> Any:
65
65
 
66
66
 
67
67
  def _model_config() -> Dict[str, str]:
68
- from agentops.utils.azure_endpoints import normalize_azure_openai_endpoint
68
+ from agentops.utils.azure_endpoints import (
69
+ derive_openai_endpoint_from_project,
70
+ normalize_azure_openai_endpoint,
71
+ )
69
72
 
70
73
  raw_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
71
74
  endpoint = normalize_azure_openai_endpoint(raw_endpoint)
75
+ if not endpoint:
76
+ # CONTRIBUTING.md promises ``AZURE_OPENAI_ENDPOINT`` is "auto-derived
77
+ # from the project endpoint when absent". The Foundry project URL
78
+ # already encodes the AI Services account host, so we can recover
79
+ # the base inference endpoint without an extra round-trip or any
80
+ # new wizard prompt.
81
+ endpoint = derive_openai_endpoint_from_project(
82
+ os.getenv("AZURE_AI_FOUNDRY_PROJECT_ENDPOINT")
83
+ )
72
84
  deployment = os.getenv("AZURE_OPENAI_DEPLOYMENT") or os.getenv(
73
85
  "AZURE_AI_MODEL_DEPLOYMENT_NAME"
74
86
  )
@@ -85,9 +97,17 @@ def _model_config() -> Dict[str, str]:
85
97
  if not deployment:
86
98
  missing.append("AZURE_OPENAI_DEPLOYMENT")
87
99
  if missing:
100
+ hint = ""
101
+ if "AZURE_OPENAI_DEPLOYMENT" in missing:
102
+ hint = (
103
+ " Set AZURE_OPENAI_DEPLOYMENT to the name of a model "
104
+ "deployment in your Foundry project (Models + endpoints "
105
+ "in the portal), or switch the run to `execution: cloud` "
106
+ "in agentops.yaml so Foundry runs the evaluators server-side."
107
+ )
88
108
  raise RuntimeError(
89
109
  "AI-assisted evaluators require an evaluator model. "
90
- "Missing environment variables: " + ", ".join(missing)
110
+ "Missing environment variables: " + ", ".join(missing) + "." + hint
91
111
  )
92
112
 
93
113
  config: Dict[str, str] = {
@@ -60,3 +60,35 @@ def normalize_azure_openai_endpoint(value: Optional[str]) -> Optional[str]:
60
60
  # Trim any straggling trailing slash so callers building paths
61
61
  # never get a doubled ``//``.
62
62
  return rewritten.rstrip("/")
63
+
64
+
65
+ # Foundry project endpoints look like
66
+ # ``https://<account>.services.ai.azure.com/api/projects/<project>`` (or the
67
+ # legacy ``cognitiveservices.azure.com`` host). The Azure OpenAI inference
68
+ # endpoint that the ``openai`` and ``azure-ai-evaluation`` SDKs want is the
69
+ # *account* base URL — i.e. the same scheme/host with the project path
70
+ # trimmed off. ``derive_openai_endpoint_from_project`` performs that trim so
71
+ # users who only configure ``AZURE_AI_FOUNDRY_PROJECT_ENDPOINT`` (the value
72
+ # the ``agentops init`` wizard already writes) get a working AI-assisted
73
+ # evaluator run without having to hand-author ``AZURE_OPENAI_ENDPOINT`` too.
74
+ _PROJECT_PATH_RE = re.compile(r"/api/projects/[^/?#]+/*\Z", re.IGNORECASE)
75
+
76
+
77
+ def derive_openai_endpoint_from_project(value: Optional[str]) -> Optional[str]:
78
+ """Return the Azure OpenAI base URL embedded in a Foundry project endpoint.
79
+
80
+ The function is conservative: it only rewrites URLs whose final path
81
+ segment matches ``/api/projects/<project>`` exactly. Anything else
82
+ (already-base URLs, URLs with extra path segments after the project
83
+ name, non-Foundry hosts) is returned untouched apart from a normalizing
84
+ pass through :func:`normalize_azure_openai_endpoint`. ``None`` and
85
+ empty strings pass through unchanged so callers can keep the
86
+ ``os.getenv`` ergonomic of ``derive_openai_endpoint_from_project(os.getenv(...))``.
87
+ """
88
+ if value is None:
89
+ return None
90
+ stripped = value.strip()
91
+ if not stripped:
92
+ return stripped
93
+ trimmed = _PROJECT_PATH_RE.sub("", stripped)
94
+ return normalize_azure_openai_endpoint(trimmed)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentops-accelerator
3
- Version: 0.3.3
3
+ Version: 0.3.4
4
4
  Summary: Release readiness gates and evidence for Microsoft Foundry agents
5
5
  License: MIT License
6
6
 
@@ -285,6 +285,7 @@ tests/unit/test_production_telemetry.py
285
285
  tests/unit/test_prompt_deploy.py
286
286
  tests/unit/test_release_evidence.py
287
287
  tests/unit/test_runtime_conversation.py
288
+ tests/unit/test_runtime_model_config.py
288
289
  tests/unit/test_setup_wizard.py
289
290
  tests/unit/test_skills.py
290
291
  tests/unit/test_skills_sync.py
@@ -0,0 +1,117 @@
1
+ """Tests for :mod:`agentops.utils.azure_endpoints`."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import pytest
6
+
7
+ from agentops.utils.azure_endpoints import (
8
+ derive_openai_endpoint_from_project,
9
+ normalize_azure_openai_endpoint,
10
+ )
11
+
12
+
13
+ @pytest.mark.parametrize(
14
+ "raw, expected",
15
+ [
16
+ # Already-clean values are returned untouched (apart from trailing slash).
17
+ ("https://x.openai.azure.com", "https://x.openai.azure.com"),
18
+ ("https://x.openai.azure.com/", "https://x.openai.azure.com"),
19
+ # The portal-style suffix is stripped.
20
+ ("https://x.openai.azure.com/openai/v1", "https://x.openai.azure.com"),
21
+ ("https://x.openai.azure.com/openai/v1/", "https://x.openai.azure.com"),
22
+ ("https://x.openai.azure.com/openai/v1//", "https://x.openai.azure.com"),
23
+ # Other well-known variants.
24
+ ("https://x.openai.azure.com/openai", "https://x.openai.azure.com"),
25
+ ("https://x.openai.azure.com/openai/", "https://x.openai.azure.com"),
26
+ (
27
+ "https://x.openai.azure.com/openai/deployments",
28
+ "https://x.openai.azure.com",
29
+ ),
30
+ # Case-insensitive suffix match.
31
+ ("https://x.openai.azure.com/OpenAI/V1", "https://x.openai.azure.com"),
32
+ # The AI Services proxy host is also accepted.
33
+ (
34
+ "https://aif-prj.cognitiveservices.azure.com/openai/v1",
35
+ "https://aif-prj.cognitiveservices.azure.com",
36
+ ),
37
+ # Whitespace is trimmed.
38
+ (" https://x.openai.azure.com/openai/v1 ", "https://x.openai.azure.com"),
39
+ ],
40
+ )
41
+ def test_normalize_strips_known_suffixes(raw: str, expected: str) -> None:
42
+ assert normalize_azure_openai_endpoint(raw) == expected
43
+
44
+
45
+ def test_normalize_passes_through_none() -> None:
46
+ assert normalize_azure_openai_endpoint(None) is None
47
+
48
+
49
+ def test_normalize_passes_through_empty_string() -> None:
50
+ assert normalize_azure_openai_endpoint("") == ""
51
+ assert normalize_azure_openai_endpoint(" ") == ""
52
+
53
+
54
+ def test_normalize_only_strips_at_the_end() -> None:
55
+ # A path containing "openai" earlier in the URL must not be touched.
56
+ raw = "https://proxy.example.com/openai/v1/extra"
57
+ assert normalize_azure_openai_endpoint(raw) == raw.rstrip("/")
58
+
59
+
60
+ @pytest.mark.parametrize(
61
+ "raw, expected",
62
+ [
63
+ # Canonical Foundry project endpoint (services.ai.azure.com host).
64
+ (
65
+ "https://ai-account-xyz.services.ai.azure.com/api/projects/proj-default",
66
+ "https://ai-account-xyz.services.ai.azure.com",
67
+ ),
68
+ # Trailing slash on the project segment.
69
+ (
70
+ "https://ai-account-xyz.services.ai.azure.com/api/projects/proj-default/",
71
+ "https://ai-account-xyz.services.ai.azure.com",
72
+ ),
73
+ # Legacy cognitiveservices host.
74
+ (
75
+ "https://acct.cognitiveservices.azure.com/api/projects/p1",
76
+ "https://acct.cognitiveservices.azure.com",
77
+ ),
78
+ # Project names may include hyphens and digits.
79
+ (
80
+ "https://acct.services.ai.azure.com/api/projects/travel-agent-sandbox",
81
+ "https://acct.services.ai.azure.com",
82
+ ),
83
+ # Case-insensitive match on the ``/api/projects/`` segment.
84
+ (
85
+ "https://acct.services.ai.azure.com/API/Projects/p1",
86
+ "https://acct.services.ai.azure.com",
87
+ ),
88
+ # Already a base URL — passed through unchanged (apart from trailing slash).
89
+ (
90
+ "https://acct.services.ai.azure.com",
91
+ "https://acct.services.ai.azure.com",
92
+ ),
93
+ # Already a base URL with the OpenAI inference suffix — still normalized.
94
+ (
95
+ "https://acct.services.ai.azure.com/openai/v1",
96
+ "https://acct.services.ai.azure.com",
97
+ ),
98
+ ],
99
+ )
100
+ def test_derive_openai_endpoint_from_project(raw: str, expected: str) -> None:
101
+ assert derive_openai_endpoint_from_project(raw) == expected
102
+
103
+
104
+ def test_derive_openai_endpoint_from_project_passes_through_none() -> None:
105
+ assert derive_openai_endpoint_from_project(None) is None
106
+
107
+
108
+ def test_derive_openai_endpoint_from_project_passes_through_empty() -> None:
109
+ assert derive_openai_endpoint_from_project("") == ""
110
+ assert derive_openai_endpoint_from_project(" ") == ""
111
+
112
+
113
+ def test_derive_openai_endpoint_from_project_keeps_extra_path() -> None:
114
+ # Only the final ``/api/projects/<name>`` segment is trimmed; an endpoint
115
+ # carrying additional sub-paths (e.g. an explicit agent path) is left as-is.
116
+ raw = "https://acct.services.ai.azure.com/api/projects/proj/agents/foo"
117
+ assert derive_openai_endpoint_from_project(raw) == raw.rstrip("/")
@@ -0,0 +1,100 @@
1
+ """Tests for :func:`agentops.pipeline.runtime._model_config`.
2
+
3
+ The covered behavior:
4
+
5
+ * ``AZURE_OPENAI_ENDPOINT`` is preferred when explicitly set.
6
+ * When absent, the endpoint is auto-derived from
7
+ ``AZURE_AI_FOUNDRY_PROJECT_ENDPOINT`` — the CONTRIBUTING-stated promise
8
+ that ``agentops init`` already satisfies for the project endpoint.
9
+ * When neither is available the error mentions both missing variables and
10
+ hints the ``execution: cloud`` escape hatch for the deployment-only case.
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ import pytest
16
+
17
+ from agentops.pipeline.runtime import _model_config
18
+
19
+
20
+ @pytest.fixture(autouse=True)
21
+ def _clear_env(monkeypatch: pytest.MonkeyPatch) -> None:
22
+ for key in (
23
+ "AZURE_OPENAI_ENDPOINT",
24
+ "AZURE_OPENAI_DEPLOYMENT",
25
+ "AZURE_AI_MODEL_DEPLOYMENT_NAME",
26
+ "AZURE_AI_FOUNDRY_PROJECT_ENDPOINT",
27
+ "AZURE_OPENAI_API_VERSION",
28
+ ):
29
+ monkeypatch.delenv(key, raising=False)
30
+
31
+
32
+ def test_explicit_openai_endpoint_wins(monkeypatch: pytest.MonkeyPatch) -> None:
33
+ monkeypatch.setenv("AZURE_OPENAI_ENDPOINT", "https://explicit.openai.azure.com")
34
+ monkeypatch.setenv("AZURE_OPENAI_DEPLOYMENT", "gpt-4o-mini")
35
+ monkeypatch.setenv(
36
+ "AZURE_AI_FOUNDRY_PROJECT_ENDPOINT",
37
+ "https://different.services.ai.azure.com/api/projects/p1",
38
+ )
39
+
40
+ cfg = _model_config()
41
+
42
+ assert cfg["azure_endpoint"] == "https://explicit.openai.azure.com"
43
+ assert cfg["azure_deployment"] == "gpt-4o-mini"
44
+
45
+
46
+ def test_endpoint_auto_derived_from_project(monkeypatch: pytest.MonkeyPatch) -> None:
47
+ monkeypatch.setenv(
48
+ "AZURE_AI_FOUNDRY_PROJECT_ENDPOINT",
49
+ "https://ai-account-xyz.services.ai.azure.com/api/projects/proj-default",
50
+ )
51
+ monkeypatch.setenv("AZURE_OPENAI_DEPLOYMENT", "gpt-4o-mini")
52
+
53
+ cfg = _model_config()
54
+
55
+ assert cfg["azure_endpoint"] == "https://ai-account-xyz.services.ai.azure.com"
56
+ assert cfg["azure_deployment"] == "gpt-4o-mini"
57
+
58
+
59
+ def test_missing_deployment_still_raises_with_hint(monkeypatch: pytest.MonkeyPatch) -> None:
60
+ monkeypatch.setenv(
61
+ "AZURE_AI_FOUNDRY_PROJECT_ENDPOINT",
62
+ "https://acct.services.ai.azure.com/api/projects/p1",
63
+ )
64
+
65
+ with pytest.raises(RuntimeError) as excinfo:
66
+ _model_config()
67
+
68
+ message = str(excinfo.value)
69
+ assert "AZURE_OPENAI_DEPLOYMENT" in message
70
+ assert "AZURE_OPENAI_ENDPOINT" not in message
71
+ # The hint nudges the user toward the cloud-execution escape hatch.
72
+ assert "execution: cloud" in message
73
+
74
+
75
+ def test_missing_both_lists_endpoint_and_deployment(monkeypatch: pytest.MonkeyPatch) -> None:
76
+ with pytest.raises(RuntimeError) as excinfo:
77
+ _model_config()
78
+
79
+ message = str(excinfo.value)
80
+ assert "AZURE_OPENAI_ENDPOINT" in message
81
+ assert "AZURE_OPENAI_DEPLOYMENT" in message
82
+
83
+
84
+ def test_default_api_version_pinned(monkeypatch: pytest.MonkeyPatch) -> None:
85
+ monkeypatch.setenv("AZURE_OPENAI_ENDPOINT", "https://x.openai.azure.com")
86
+ monkeypatch.setenv("AZURE_OPENAI_DEPLOYMENT", "gpt-4o-mini")
87
+
88
+ cfg = _model_config()
89
+
90
+ assert cfg["api_version"] == "2025-04-01-preview"
91
+
92
+
93
+ def test_api_version_override(monkeypatch: pytest.MonkeyPatch) -> None:
94
+ monkeypatch.setenv("AZURE_OPENAI_ENDPOINT", "https://x.openai.azure.com")
95
+ monkeypatch.setenv("AZURE_OPENAI_DEPLOYMENT", "gpt-4o-mini")
96
+ monkeypatch.setenv("AZURE_OPENAI_API_VERSION", "2024-12-01-preview")
97
+
98
+ cfg = _model_config()
99
+
100
+ assert cfg["api_version"] == "2024-12-01-preview"
@@ -1,54 +0,0 @@
1
- """Tests for :mod:`agentops.utils.azure_endpoints`."""
2
-
3
- from __future__ import annotations
4
-
5
- import pytest
6
-
7
- from agentops.utils.azure_endpoints import normalize_azure_openai_endpoint
8
-
9
-
10
- @pytest.mark.parametrize(
11
- "raw, expected",
12
- [
13
- # Already-clean values are returned untouched (apart from trailing slash).
14
- ("https://x.openai.azure.com", "https://x.openai.azure.com"),
15
- ("https://x.openai.azure.com/", "https://x.openai.azure.com"),
16
- # The portal-style suffix is stripped.
17
- ("https://x.openai.azure.com/openai/v1", "https://x.openai.azure.com"),
18
- ("https://x.openai.azure.com/openai/v1/", "https://x.openai.azure.com"),
19
- ("https://x.openai.azure.com/openai/v1//", "https://x.openai.azure.com"),
20
- # Other well-known variants.
21
- ("https://x.openai.azure.com/openai", "https://x.openai.azure.com"),
22
- ("https://x.openai.azure.com/openai/", "https://x.openai.azure.com"),
23
- (
24
- "https://x.openai.azure.com/openai/deployments",
25
- "https://x.openai.azure.com",
26
- ),
27
- # Case-insensitive suffix match.
28
- ("https://x.openai.azure.com/OpenAI/V1", "https://x.openai.azure.com"),
29
- # The AI Services proxy host is also accepted.
30
- (
31
- "https://aif-prj.cognitiveservices.azure.com/openai/v1",
32
- "https://aif-prj.cognitiveservices.azure.com",
33
- ),
34
- # Whitespace is trimmed.
35
- (" https://x.openai.azure.com/openai/v1 ", "https://x.openai.azure.com"),
36
- ],
37
- )
38
- def test_normalize_strips_known_suffixes(raw: str, expected: str) -> None:
39
- assert normalize_azure_openai_endpoint(raw) == expected
40
-
41
-
42
- def test_normalize_passes_through_none() -> None:
43
- assert normalize_azure_openai_endpoint(None) is None
44
-
45
-
46
- def test_normalize_passes_through_empty_string() -> None:
47
- assert normalize_azure_openai_endpoint("") == ""
48
- assert normalize_azure_openai_endpoint(" ") == ""
49
-
50
-
51
- def test_normalize_only_strips_at_the_end() -> None:
52
- # A path containing "openai" earlier in the URL must not be touched.
53
- raw = "https://proxy.example.com/openai/v1/extra"
54
- assert normalize_azure_openai_endpoint(raw) == raw.rstrip("/")