agentops-accelerator 0.3.1__tar.gz → 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.claude-plugin/marketplace.json +1 -1
  2. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/plugin/marketplace.json +1 -1
  3. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/CHANGELOG.md +103 -0
  4. {agentops_accelerator-0.3.1/src/agentops_accelerator.egg-info → agentops_accelerator-0.3.2}/PKG-INFO +1 -1
  5. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/tutorial-end-to-end.md +18 -16
  6. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/tutorial-hosted-agent-quickstart.md +1 -1
  7. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/tutorial-prompt-agent-quickstart.md +122 -80
  8. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/plugins/agentops/package.json +1 -1
  9. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/plugins/agentops/plugin.json +1 -1
  10. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/prompt_deploy.py +36 -10
  11. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2/src/agentops_accelerator.egg-info}/PKG-INFO +1 -1
  12. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_prompt_deploy.py +80 -0
  13. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.gitattributes +0 -0
  14. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/actions/azure-oidc-login/action.yml +0 -0
  15. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/code-quality-py.instructions.md +0 -0
  16. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/copilot-instructions.md +0 -0
  17. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/dependabot.yml +0 -0
  18. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/extensions/agentops-skills/extension.mjs +0 -0
  19. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/skills/release-management/SKILL.md +0 -0
  20. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/workflows/_build.yml +0 -0
  21. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/workflows/agentops-watchdog.yml +0 -0
  22. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/workflows/ci.yml +0 -0
  23. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/workflows/cut-release.yml +0 -0
  24. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/workflows/e2e.yml +0 -0
  25. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/workflows/release.yml +0 -0
  26. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.github/workflows/staging.yml +0 -0
  27. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.gitignore +0 -0
  28. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.pre-commit-config.yaml +0 -0
  29. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.vscode/launch.json +0 -0
  30. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.vscode/settings.json +0 -0
  31. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/.vscode/tasks.json +0 -0
  32. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/AGENTS.md +0 -0
  33. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/CONTRIBUTING.md +0 -0
  34. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/LICENSE +0 -0
  35. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/README.md +0 -0
  36. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/SECURITY.md +0 -0
  37. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/bundles.md +0 -0
  38. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/ci-github-actions.md +0 -0
  39. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/concepts.md +0 -0
  40. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/doctor-checks.md +0 -0
  41. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/doctor-explained.md +0 -0
  42. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/e2e-live-architecture.md +0 -0
  43. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/e2e-live-setup.md +0 -0
  44. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/foundry-evaluation-sdk-built-in-evaluators.md +0 -0
  45. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/how-it-works.md +0 -0
  46. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/media/agentops-diagrams.vsdx +0 -0
  47. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/media/foundry-control-plane.png +0 -0
  48. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/docs/release-process.md +0 -0
  49. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/examples/flat-quickstart/README.md +0 -0
  50. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/examples/flat-quickstart/agentops.yaml +0 -0
  51. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/examples/flat-quickstart/dataset.jsonl +0 -0
  52. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/icon.png +0 -0
  53. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/infra/e2e/agent-app/Dockerfile +0 -0
  54. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/infra/e2e/agent-app/app.py +0 -0
  55. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/infra/e2e/agent-app/requirements.txt +0 -0
  56. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/infra/e2e/bootstrap.bicep +0 -0
  57. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/infra/e2e/bootstrap.parameters.example.json +0 -0
  58. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/infra/e2e/perrun.bicep +0 -0
  59. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/launch.json +0 -0
  60. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/media/foundry.svg +0 -0
  61. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/media/quickstart.gif +0 -0
  62. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/plugins/agentops/.vscodeignore +0 -0
  63. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/plugins/agentops/LICENSE +0 -0
  64. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/plugins/agentops/README.md +0 -0
  65. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/plugins/agentops/skills/agentops-agent/SKILL.md +0 -0
  66. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/plugins/agentops/skills/agentops-config/SKILL.md +0 -0
  67. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/plugins/agentops/skills/agentops-dataset/SKILL.md +0 -0
  68. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/plugins/agentops/skills/agentops-eval/SKILL.md +0 -0
  69. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/plugins/agentops/skills/agentops-report/SKILL.md +0 -0
  70. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/plugins/agentops/skills/agentops-workflow/SKILL.md +0 -0
  71. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/pyproject.toml +0 -0
  72. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/create_support_agent.py +0 -0
  73. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/cut-release.ps1 +0 -0
  74. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/cut-release.sh +0 -0
  75. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/e2e_aggregate_summary.py +0 -0
  76. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/e2e_data/basic.jsonl +0 -0
  77. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/e2e_data/rag.jsonl +0 -0
  78. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/e2e_data/tools.jsonl +0 -0
  79. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/e2e_demo.py +0 -0
  80. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/e2e_hosted_agent.py +0 -0
  81. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/e2e_make_transcript.py +0 -0
  82. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/e2e_render_config.py +0 -0
  83. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/release.ps1 +0 -0
  84. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/release.sh +0 -0
  85. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/setup-e2e-new-tenant.ps1 +0 -0
  86. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/staging.ps1 +0 -0
  87. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/staging.sh +0 -0
  88. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/sync-skills.ps1 +0 -0
  89. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/scripts/sync-skills.sh +0 -0
  90. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/setup.cfg +0 -0
  91. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/__init__.py +0 -0
  92. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/__main__.py +0 -0
  93. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/__init__.py +0 -0
  94. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/_legacy_ids.py +0 -0
  95. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/analyzer.py +0 -0
  96. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/__init__.py +0 -0
  97. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/catalog.py +0 -0
  98. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/errors.py +0 -0
  99. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/foundry_config.py +0 -0
  100. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/latency.py +0 -0
  101. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/opex.py +0 -0
  102. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/opex_workspace.py +0 -0
  103. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/posture.py +0 -0
  104. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/posture_rules/__init__.py +0 -0
  105. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/posture_rules/content_filter.py +0 -0
  106. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/posture_rules/diagnostics.py +0 -0
  107. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/posture_rules/local_auth.py +0 -0
  108. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/posture_rules/managed_identity.py +0 -0
  109. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/posture_rules/network.py +0 -0
  110. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/regression.py +0 -0
  111. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/release_readiness.py +0 -0
  112. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/safety.py +0 -0
  113. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/checks/spec_conformance.py +0 -0
  114. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/cockpit.py +0 -0
  115. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/config.py +0 -0
  116. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/findings.py +0 -0
  117. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/history.py +0 -0
  118. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/knowledge/__init__.py +0 -0
  119. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/knowledge/waf-checklist.csv +0 -0
  120. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/llm_assist/__init__.py +0 -0
  121. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/llm_assist/_base.py +0 -0
  122. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/llm_assist/_bundle_rule.py +0 -0
  123. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/llm_assist/_client.py +0 -0
  124. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/llm_assist/_dataset_rules.py +0 -0
  125. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/llm_assist/_engine.py +0 -0
  126. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/llm_assist/_prompt_rules.py +0 -0
  127. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/llm_assist/_spec_rules.py +0 -0
  128. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/production_telemetry.py +0 -0
  129. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/report.py +0 -0
  130. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/server/__init__.py +0 -0
  131. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/server/app.py +0 -0
  132. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/server/auth.py +0 -0
  133. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/server/chat.py +0 -0
  134. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/server/protocol.py +0 -0
  135. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/sources/__init__.py +0 -0
  136. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/sources/azure_monitor.py +0 -0
  137. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/sources/azure_resources.py +0 -0
  138. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/sources/foundry_control.py +0 -0
  139. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/sources/results_history.py +0 -0
  140. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/sources/spec_detectors/__init__.py +0 -0
  141. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/sources/spec_detectors/_base.py +0 -0
  142. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/sources/spec_detectors/agents_md.py +0 -0
  143. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/sources/spec_detectors/spec_kit.py +0 -0
  144. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/agent/time_range.py +0 -0
  145. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/cli/__init__.py +0 -0
  146. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/cli/app.py +0 -0
  147. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/core/__init__.py +0 -0
  148. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/core/agentops_config.py +0 -0
  149. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/core/config_loader.py +0 -0
  150. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/core/evaluators.py +0 -0
  151. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/core/release_evidence.py +0 -0
  152. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/core/results.py +0 -0
  153. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/mcp/__init__.py +0 -0
  154. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/mcp/server.py +0 -0
  155. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/__init__.py +0 -0
  156. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/cloud_results.py +0 -0
  157. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/cloud_runner.py +0 -0
  158. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/comparison.py +0 -0
  159. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/diagnostics.py +0 -0
  160. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/invocations.py +0 -0
  161. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/official_eval.py +0 -0
  162. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/orchestrator.py +0 -0
  163. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/publisher.py +0 -0
  164. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/reporter.py +0 -0
  165. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/runtime.py +0 -0
  166. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/pipeline/thresholds.py +0 -0
  167. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/services/__init__.py +0 -0
  168. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/services/cicd.py +0 -0
  169. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/services/eval_analysis.py +0 -0
  170. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/services/evidence_pack.py +0 -0
  171. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/services/initializer.py +0 -0
  172. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/services/preflight.py +0 -0
  173. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/services/setup_wizard.py +0 -0
  174. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/services/skills.py +0 -0
  175. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/services/trace_promotion.py +0 -0
  176. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/services/workflow_analysis.py +0 -0
  177. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/.gitignore +0 -0
  178. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/__init__.py +0 -0
  179. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/agent-server/Dockerfile +0 -0
  180. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/agent-server/README.md +0 -0
  181. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/agent-server/main.bicep +0 -0
  182. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/agent.yaml +0 -0
  183. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/agentops.yaml +0 -0
  184. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/foundry.svg +0 -0
  185. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/icon.png +0 -0
  186. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev-azd.yml +0 -0
  187. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev.yml +0 -0
  188. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod-azd.yml +0 -0
  189. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod.yml +0 -0
  190. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prompt-agent.yml +0 -0
  191. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa-azd.yml +0 -0
  192. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa.yml +0 -0
  193. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/pipelines/azuredevops/agentops-pr-prompt-agent.yml +0 -0
  194. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/pipelines/azuredevops/agentops-pr.yml +0 -0
  195. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/pipelines/azuredevops/agentops-watchdog.yml +0 -0
  196. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/project.gitignore +0 -0
  197. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/sample-traces.jsonl +0 -0
  198. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/skills/agentops-agent/SKILL.md +0 -0
  199. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/skills/agentops-config/SKILL.md +0 -0
  200. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/skills/agentops-dataset/SKILL.md +0 -0
  201. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/skills/agentops-eval/SKILL.md +0 -0
  202. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/skills/agentops-report/SKILL.md +0 -0
  203. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/skills/agentops-workflow/SKILL.md +0 -0
  204. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/smoke.jsonl +0 -0
  205. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/waf-checklist.README.md +0 -0
  206. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/waf-checklist.csv +0 -0
  207. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/workflows/agentops-deploy-dev-azd.yml +0 -0
  208. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/workflows/agentops-deploy-dev.yml +0 -0
  209. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/workflows/agentops-deploy-prod-azd.yml +0 -0
  210. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/workflows/agentops-deploy-prod.yml +0 -0
  211. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/workflows/agentops-deploy-prompt-agent.yml +0 -0
  212. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/workflows/agentops-deploy-qa-azd.yml +0 -0
  213. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/workflows/agentops-deploy-qa.yml +0 -0
  214. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/workflows/agentops-pr-prompt-agent.yml +0 -0
  215. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/workflows/agentops-pr.yml +0 -0
  216. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/templates/workflows/agentops-watchdog.yml +0 -0
  217. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/utils/__init__.py +0 -0
  218. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/utils/azd_env.py +0 -0
  219. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/utils/azure_endpoints.py +0 -0
  220. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/utils/colors.py +0 -0
  221. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/utils/dotenv_loader.py +0 -0
  222. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/utils/foundry_discovery.py +0 -0
  223. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/utils/logging.py +0 -0
  224. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/utils/telemetry.py +0 -0
  225. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops/utils/yaml.py +0 -0
  226. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops_accelerator.egg-info/SOURCES.txt +0 -0
  227. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops_accelerator.egg-info/dependency_links.txt +0 -0
  228. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops_accelerator.egg-info/entry_points.txt +0 -0
  229. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops_accelerator.egg-info/requires.txt +0 -0
  230. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/src/agentops_accelerator.egg-info/top_level.txt +0 -0
  231. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/TESTING.md +0 -0
  232. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/fixtures/fake_adapter.py +0 -0
  233. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/fixtures/fake_eval_runner.py +0 -0
  234. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/integration/.gitkeep +0 -0
  235. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/integration/test_cli_flat_schema.py +0 -0
  236. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/integration/test_pipeline_smoke.py +0 -0
  237. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/.gitkeep +0 -0
  238. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_analyzer.py +0 -0
  239. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_categories.py +0 -0
  240. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_checks_errors.py +0 -0
  241. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_checks_foundry_config.py +0 -0
  242. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_checks_opex.py +0 -0
  243. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_checks_opex_workspace.py +0 -0
  244. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_checks_regression.py +0 -0
  245. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_checks_safety.py +0 -0
  246. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_checks_spec_conformance.py +0 -0
  247. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_cli.py +0 -0
  248. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_config.py +0 -0
  249. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_findings.py +0 -0
  250. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_history.py +0 -0
  251. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_opex_workspace_check.py +0 -0
  252. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_posture_rules.py +0 -0
  253. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_results_history.py +0 -0
  254. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agent_server.py +0 -0
  255. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_agentops_config.py +0 -0
  256. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_azd_env.py +0 -0
  257. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_azure_endpoints.py +0 -0
  258. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_azure_resources_discovery.py +0 -0
  259. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_cicd.py +0 -0
  260. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_cli_cockpit_connection_summary.py +0 -0
  261. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_cli_cockpit_port_conflict.py +0 -0
  262. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_cli_commands.py +0 -0
  263. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_cli_explain.py +0 -0
  264. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_cloud_results.py +0 -0
  265. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_cloud_runner.py +0 -0
  266. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_cockpit.py +0 -0
  267. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_diagnostics.py +0 -0
  268. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_doctor_catalog.py +0 -0
  269. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_doctor_cli_explain.py +0 -0
  270. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_dotenv_loader.py +0 -0
  271. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_e2e_render.py +0 -0
  272. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_eval_analysis.py +0 -0
  273. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_evaluators.py +0 -0
  274. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_foundry_discovery.py +0 -0
  275. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_init_command.py +0 -0
  276. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_initializer.py +0 -0
  277. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_invocations.py +0 -0
  278. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_knowledge_loader.py +0 -0
  279. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_llm_assist.py +0 -0
  280. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_llm_assist_spec_rules.py +0 -0
  281. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_mcp_server.py +0 -0
  282. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_official_eval.py +0 -0
  283. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_pipeline_publisher.py +0 -0
  284. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_pipeline_reporter.py +0 -0
  285. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_preflight.py +0 -0
  286. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_production_telemetry.py +0 -0
  287. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_release_evidence.py +0 -0
  288. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_runtime_conversation.py +0 -0
  289. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_setup_wizard.py +0 -0
  290. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_skills.py +0 -0
  291. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_skills_sync.py +0 -0
  292. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_telemetry.py +0 -0
  293. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_time_range.py +0 -0
  294. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_trace_promotion.py +0 -0
  295. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tests/unit/test_workflow_analysis.py +0 -0
  296. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/tombstones/vscode/CDN_DEPRECATION_REQUEST.md +0 -0
  297. {agentops_accelerator-0.3.1 → agentops_accelerator-0.3.2}/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.1",
16
+ "version": "0.3.2",
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.1",
16
+ "version": "0.3.2",
17
17
  "keywords": [
18
18
  "agentops",
19
19
  "evaluation",
@@ -5,6 +5,109 @@ This format follows [Keep a Changelog](https://keepachangelog.com/) and adheres
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.3.2] - 2026-05-31
9
+
10
+ ### Fixed
11
+ - **Prompt-agent deploy: `stage` no longer fails with `Required properties ["kind"] are not present` against `azure-ai-projects` 2.x.**
12
+ `_copy_definition` previously called `.copy()` on the typed
13
+ `PromptAgentDefinition` returned by `get_version`. In SDK 1.x that
14
+ preserved the typed model so the body serialized as a flat
15
+ `{"kind": "prompt", "model": ..., "instructions": ...}`. In SDK 2.x
16
+ the same `.copy()` returns a stripped base `Model` whose JSON shape
17
+ is `{"_data": {"kind": "prompt", ...}}`, and `.get("kind")` returns
18
+ `None` — so the request body that reached the Foundry Agents service
19
+ contained `definition: {"_data": {...}}` with no top-level `kind`,
20
+ and the service rejected it with `invalid_payload`. This regression
21
+ only fired on the `created` action path (i.e. when the user's prompt
22
+ differed from the seed); the `reused` and bootstrap paths were
23
+ unaffected because they don't round-trip the typed model through
24
+ `.copy()`. `_copy_definition` now normalizes any SDK definition
25
+ object to a plain `dict` before mutation, and `_create_agent_version`
26
+ no longer puts a root-level `kind` on the request body (the new API
27
+ treats `kind` strictly as the discriminator inside `definition`).
28
+ - **Tutorial: prompt-agent step 13 now shows the steady-state `foundry-agent.json` (action: reused) instead of the bootstrap edge case.**
29
+ The example JSON in step 13 previously showed `action: bootstrapped`
30
+ with `candidate_agent: "travel-agent:1"` and a "the two numbers are
31
+ expected to differ until the environment has caught up to the seed"
32
+ explanation. In practice the merge-triggered deploy is almost never
33
+ the run that bootstraps — by the time the user reaches step 13, the
34
+ skill's verification dispatch in step 12 plus the first PR run have
35
+ already settled dev to `travel-agent:2`, so the merge deploy reports
36
+ `action: reused` with `candidate_agent: "travel-agent:2"` (matching
37
+ `source_agent`). The example now shows the steady-state shape (taken
38
+ from a real recording), uses the runner-resolved absolute paths the
39
+ user actually sees (`/home/runner/work/<your-repo>/...`), and uses a
40
+ real 64-char `prompt_sha256` + a real ISO timestamp. The
41
+ three-outcome list (`reused` / `created` / `bootstrapped`) below the
42
+ JSON keeps the bootstrap case as the documented edge condition.
43
+ - **Tutorial: prompt-agent step 13 now matches what the workflow skill actually does (dispatches both workflows).**
44
+ PR #211 mistakenly narrowed the step 13 callout to say the workflow
45
+ skill only dispatches `agentops-pr.yml` as a verification run, based
46
+ on incorrect reasoning about `push:` triggers (the skill actually
47
+ uses `workflow_dispatch`, which works against any branch regardless
48
+ of the workflow's `push:` block). In practice — verified against a
49
+ live recording — the skill dispatches **both** `agentops-pr.yml`
50
+ and `agentops-deploy-dev.yml` end-to-end as part of CI verification,
51
+ asking the user to approve first per SKILL.md rule #14. The step 13
52
+ callout now reflects this and explains the expected outcome (both
53
+ runs may exit `threshold_failed` on first contact with an empty dev
54
+ project because the bootstrap path produces a fresh `travel-agent:1`
55
+ that has not been measured against the seed thresholds yet — by
56
+ design, not a CI wiring failure). The "What you should see in the
57
+ first PR workflow run" section also updates from the
58
+ "dev is still empty" assumption (which becomes false after the
59
+ skill's verification dispatch) to the three possible outcomes
60
+ (`reused` / `created` / `bootstrapped`) you can actually see at this
61
+ point. The "After the merge" paragraph now calls out that the
62
+ merge-triggered deploy is the **second** deploy-dev run for the
63
+ repo, not the first.
64
+ - **Tutorials: end-to-end audit caught misleading dist URLs, phantom CLI commands, missing JSON fields, and stale Doctor advisory text.**
65
+ All three tutorials previously installed the development build from a
66
+ personal fork URL (`git+https://github.com/placerda/agentops.git@develop`);
67
+ they now point at the canonical
68
+ `git+https://github.com/Azure/agentops.git@develop`. The prompt-agent
69
+ tutorial referenced a non-existent `prompt_deploy record` subcommand in
70
+ two places — the actual command is `prompt_deploy summarize`, matching
71
+ `src/agentops/pipeline/prompt_deploy.py` and the deploy template's
72
+ `Mark candidate as deployed` step. The same tutorial's `foundry-agent.json`
73
+ sample was missing the `eval_config` field that the code writes at
74
+ `src/agentops/pipeline/prompt_deploy.py:186`. The step 12 skill prompt
75
+ and the step 13 prose did not tell the reader to rewrite the dev-deploy
76
+ trigger from `develop` to `main` for this trunk-on-`main` tutorial; the
77
+ generator's stock default is `develop`, which would silently no-op after
78
+ the first merge. Step 12 now instructs the skill to do the rewrite (and
79
+ the bullet list of skill actions calls it out as a required step, with
80
+ a manual-edit fallback). Step 13's "deploy fires automatically on `main`"
81
+ sentence now states the dependency on the step 12 rewrite explicitly,
82
+ and the placeholder phrase "your trunk branch" is now disambiguated as
83
+ "`main` in this tutorial". The end-to-end tutorial's step 5 and step 9
84
+ Doctor descriptions still read as if Doctor were advisory-only in PR
85
+ workflows — that text predates the `--doctor-gate critical` default;
86
+ both blocks now describe the actual behavior (critical findings block
87
+ the PR by default; warning/info are evidence-only).
88
+
89
+ ### Changed
90
+ - **Tutorials: skip-if-skill callouts now state the skill's outcome directly and accurately.**
91
+ The `step 13` callout in `docs/tutorial-prompt-agent-quickstart.md` and the
92
+ baseline-run paragraph in `docs/tutorial-end-to-end.md` previously opened
93
+ with "if you used the workflow skill, this is already done…" plus a
94
+ manual-fallback block. That conditional framing was confusing because the
95
+ preceding step (`step 12` of the prompt-agent tutorial, `step 5` of the
96
+ end-to-end tutorial) only documents the workflow-skill path — there is no
97
+ alternative wired-by-hand path the reader could have taken. Both callouts
98
+ now state the skill's outcome directly, and the redundant `git add` /
99
+ `commit` / `push` and `gh workflow run agentops-pr.yml --ref main` blocks
100
+ have been removed (the skill already triggers the first run). A small
101
+ `gh run list` / `gh run watch` snippet remains as an opt-in way to wait
102
+ on the run from the terminal instead of the Actions UI. The previous
103
+ wording also over-claimed that the skill triggered verification runs of
104
+ **both** `agentops-pr.yml` and `agentops-deploy-dev.yml`; the skill only
105
+ dispatches the PR workflow as a sanity check (`workflow_dispatch`), while
106
+ `agentops-deploy-dev.yml` triggers on the first real merge into the trunk
107
+ branch. The callout now reflects this accurately and notes that the
108
+ deploy-dev run happens at the end of the section, not during the skill's
109
+ setup.
110
+
8
111
  ## [0.3.1] - 2026-05-29
9
112
 
10
113
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentops-accelerator
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Release readiness gates and evidence for Microsoft Foundry agents
5
5
  License: MIT License
6
6
 
@@ -129,7 +129,7 @@ install the aligned reference branch so the CLI, generated workflows, and
129
129
  tutorial steps stay in sync:
130
130
 
131
131
  ```powershell
132
- python -m pip install "agentops-accelerator[foundry,agent] @ git+https://github.com/placerda/agentops.git@develop"
132
+ python -m pip install "agentops-accelerator[foundry,agent] @ git+https://github.com/Azure/agentops.git@develop"
133
133
  ```
134
134
 
135
135
  You will provide the target values through the interactive `agentops init`
@@ -451,9 +451,13 @@ The generated workflow prepares a temporary cloud config, runs
451
451
 
452
452
  It also records release evidence after the gate.
453
453
 
454
- In PR workflows, that Doctor evidence is advisory: the eval step is the merge
455
- gate, and `Release readiness: blocked` means the evidence found release work to
456
- review. Production deploy workflows still run Doctor as a critical release gate.
454
+ Doctor runs in the PR workflow with `--severity-fail critical` (the
455
+ `--doctor-gate critical` default). A critical Doctor finding for example
456
+ `regression.coherence: critical` from a metric drop that still passes
457
+ thresholds — fails the PR check the same way an eval threshold breach
458
+ does. Warning- and info-level findings are advisory and attached to the
459
+ PR as evidence. Production deploy workflows always run Doctor with
460
+ `--severity-fail critical` regardless of this flag.
457
461
 
458
462
  No tutorial-only Action replacement is needed. The generated workflow keeps the
459
463
  evaluation in Foundry while AgentOps owns the CI threshold decision and the
@@ -468,14 +472,10 @@ and rerun the same gate.
468
472
 
469
473
  ### Prompt Agent regression
470
474
 
471
- Make sure the original prompt version has one green workflow run before you
472
- change it. **If you used the workflow skill in step 5 above, this is already
473
- done** the skill commits your changes, pushes to GitHub, and triggers a first
474
- verification run of `agentops-pr.yml`. Open the latest workflow run's Foundry
475
- Evaluations link and keep that page open as the baseline. If you skipped the
476
- skill and wired CI by hand, commit the generated workflow and `agentops.yaml`,
477
- run `gh workflow run agentops-pr.yml --ref main`, and use that run as the
478
- baseline.
475
+ The workflow skill in step 5 above already committed your changes, pushed
476
+ `main` to GitHub, and triggered a first verification run of `agentops-pr.yml`.
477
+ Open the latest workflow run's Foundry Evaluations link and keep that page
478
+ open as the baseline.
479
479
 
480
480
  1. In Foundry, edit the `travel-agent` instructions to this intentionally bad
481
481
  version:
@@ -755,10 +755,12 @@ show whether the repo has the release machinery reviewers expect. Use critical
755
755
  findings as release blockers and warning/info findings as the backlog that turns
756
756
  the POC into an operated service.
757
757
 
758
- If those same Doctor findings appear inside a PR workflow, treat them as
759
- evidence attached to the PR rather than as the merge gate. The eval step gates
760
- the PR; production deploy workflows are where critical Doctor findings block the
761
- release path.
758
+ If those same Doctor findings appear inside a PR workflow, critical
759
+ findings block the merge by default (the PR template runs Doctor with
760
+ `--severity-fail critical`, the `--doctor-gate critical` default); warning
761
+ and info findings are attached to the PR as evidence rather than as a
762
+ gate. Production deploy workflows always run Doctor with
763
+ `--severity-fail critical` and are the last-mile release gate.
762
764
 
763
765
  Open both files. The Doctor report is the diagnostic view: it tells you which
764
766
  signals are present, which are missing, and whether the finding is blocking or
@@ -160,7 +160,7 @@ install the aligned reference branch so the CLI, generated workflows, and
160
160
  tutorial steps stay in sync:
161
161
 
162
162
  ```powershell
163
- python -m pip install "agentops-accelerator[foundry,agent] @ git+https://github.com/placerda/agentops.git@develop"
163
+ python -m pip install "agentops-accelerator[foundry,agent] @ git+https://github.com/Azure/agentops.git@develop"
164
164
  ```
165
165
 
166
166
  ## 2. Create the Travel Agent endpoint
@@ -137,7 +137,7 @@ path, install the aligned reference branch so the CLI, generated
137
137
  workflows, and tutorial steps stay in sync:
138
138
 
139
139
  ```powershell
140
- python -m pip install "agentops-accelerator[foundry,agent] @ git+https://github.com/placerda/agentops.git@develop"
140
+ python -m pip install "agentops-accelerator[foundry,agent] @ git+https://github.com/Azure/agentops.git@develop"
141
141
  ```
142
142
 
143
143
  ## 2. Install the AgentOps Copilot skills
@@ -670,7 +670,7 @@ The PR workflow now has two jobs:
670
670
  > candidate version numbers.
671
671
 
672
672
  The dev deploy workflow stages a candidate (same logic), evaluates it,
673
- records the deployment via `prompt_deploy record`, and uploads
673
+ summarizes the deployment via `prompt_deploy summarize`, and uploads
674
674
  `.agentops/deployments/foundry-agent.json` as a workflow artifact.
675
675
 
676
676
  The `--doctor-gate critical` flag controls the Doctor severity floor in
@@ -725,6 +725,14 @@ the OpenAI User role, the Foundry cloud graders fail with a 401 and every
725
725
  metric comes back null), and do not set up `qa`, `production`, scheduled
726
726
  Doctor, or hosted deployment workflows yet.
727
727
 
728
+ I am using trunk-based development with `main` as both my trunk and dev
729
+ branch. The generator's stock dev-deploy trigger is `push: branches:
730
+ [develop]`. Rewrite the `agentops-deploy-dev.yml` (and the matching
731
+ `agentops-pr.yml` `pull_request: branches:` list, if it references
732
+ `develop`) so they fire on `main` instead. The PR gate must run on PRs
733
+ targeting `main`, and the dev deploy must auto-run on push to `main`
734
+ after a merge.
735
+
728
736
  The dev Foundry project endpoint is in `.azure/dev/.env`; the sandbox
729
737
  endpoint is local-only and must not be added to CI.
730
738
 
@@ -741,6 +749,14 @@ it skips:
741
749
  - Set Actions variables `AZURE_TENANT_ID`, `AZURE_SUBSCRIPTION_ID`,
742
750
  `AZURE_CLIENT_ID`, `AZURE_AI_FOUNDRY_PROJECT_ENDPOINT` (the dev
743
751
  endpoint), and `APPLICATIONINSIGHTS_CONNECTION_STRING` if available.
752
+ - **Rewrite the dev deploy trigger to `main`.** The generator emits the
753
+ stock GitFlow defaults (`pull_request: branches: [develop, "release/**",
754
+ main]` on `agentops-pr.yml`, `push: branches: [develop]` on
755
+ `agentops-deploy-dev.yml`). For this trunk-on-`main` tutorial the
756
+ skill should rewrite both so the PR gate fires on PRs into `main` and
757
+ the deploy fires on push to `main`. If the skill skips this rewrite,
758
+ open the two YAML files in `.github/workflows/` and edit the
759
+ `branches:` lists by hand before opening the first PR.
744
760
  - Verify the OIDC principal has **two** Azure RBAC roles before the first
745
761
  run. Both are required and the eval step fails silently (every metric
746
762
  returns `null`) if only one is in place:
@@ -761,66 +777,71 @@ This is the happy path. Before the regression step, you need a clean
761
777
  green baseline so the rolling-history Doctor checks (regression, drift)
762
778
  have something to compare against.
763
779
 
764
- > **If you used the workflow skill in step 12, the next two code
765
- > blocks have already been done skip straight to "Now open a feature
766
- > branch..." below.** The `agentops-workflow` skill commits your local
767
- > changes, pushes `main` to the GitHub remote, and triggers a first
768
- > verification run of both `agentops-pr.yml` and `agentops-deploy-dev.yml`
769
- > as part of its end-to-end setup. Open the repo's **Actions** tab and
770
- > confirm both runs are present — `Stage Foundry prompt candidate (PR)`
771
- > + `AgentOps eval (PR gate)` should be green on the PR workflow, and
772
- > `agentops-deploy-dev.yml` should have a matching run that also went
773
- > green. Only run the `git add` / `commit` / `push` and `gh workflow run`
774
- > commands below if you skipped the skill and wired CI by hand, or if
775
- > the skill stopped before pushing your latest local changes (run
776
- > `git status` first — if the working tree is clean and the remote has
777
- > your commits, the manual commands are no-ops).
778
-
779
- ```powershell
780
- git add agentops.yaml .agentops .github\workflows
781
- git commit -m "Add AgentOps prompt agent gate + dev deploy"
782
- git push -u origin main
783
- ```
784
-
785
- Open the repository in GitHub and confirm both workflows appear under
786
- **Actions**. Trigger the PR workflow once on `main` so the dev project
787
- has a known-good candidate run:
780
+ The workflow skill in step 12 already committed your local changes,
781
+ pushed `main` to the GitHub remote, and dispatched first verification
782
+ runs of **both** `agentops-pr.yml` and `agentops-deploy-dev.yml` (via
783
+ `workflow_dispatch`, after asking you to approve) so the CI wiring is
784
+ verified end-to-end. Open the repo's **Actions** tab and confirm both
785
+ runs reached the eval stage:
786
+
787
+ - `agentops-pr.yml` `Stage Foundry prompt candidate (PR)` and
788
+ `AgentOps eval (PR gate)` jobs both ran.
789
+ - `agentops-deploy-dev.yml` `stage-candidate`, `eval`, and the
790
+ `Mark candidate as deployed` step all ran (the deploy job uses
791
+ `prompt_deploy summarize`, not a real Foundry promotion it writes
792
+ the deployment record artifact + workflow summary).
793
+
794
+ It is **expected** for one or both of these first runs to exit
795
+ `threshold_failed` (`exit 2`) when the dev Foundry project starts
796
+ empty: the bootstrap path creates a fresh `travel-agent:1` (and, on
797
+ the next run, `:2`) in dev and evaluates it against the seed
798
+ `agentops.yaml` thresholds, which can miss on first contact. That is
799
+ by design, not a CI wiring failure. What you are really verifying at
800
+ this point is the plumbing — OIDC, Foundry RBAC, the evaluator
801
+ deployment, the staging step, the deploy summary writer and that
802
+ dev now contains a bootstrapped version of the agent.
803
+
804
+ `agentops-deploy-dev.yml` will fire **again** automatically when you
805
+ merge the baseline PR at the end of this section, because the skill
806
+ rewrote its trigger from `develop` to `main` in step 12.
807
+
808
+ If you want to wait on the first PR-workflow verification run from the
809
+ terminal instead of the Actions UI:
788
810
 
789
811
  ```powershell
790
- gh workflow run agentops-pr.yml --ref main
791
- Start-Sleep -Seconds 10
792
812
  $runId = gh run list --workflow agentops-pr.yml --branch main --limit 1 --json databaseId --jq '.[0].databaseId'
793
813
  gh run view $runId --web
794
814
  gh run watch $runId --exit-status
795
815
  ```
796
816
 
797
- What you should see in the **first** PR workflow run (dev is still
798
- empty at this point):
817
+ What you should see in the **first** PR workflow run, after the
818
+ skill's verification dispatches have already touched dev:
799
819
 
800
820
  1. **Stage Foundry prompt candidate (PR)** job runs first. The
801
- `prompt_deploy stage` step tries to look up `travel-agent:2` in the
802
- dev project and gets a 404. Because `agentops.yaml` includes a
803
- `prompt_agent_bootstrap` block, the step:
804
- - reads the `model` (`gpt-4o-mini`) and optional `description` from
805
- `prompt_agent_bootstrap`,
806
- - reads the instructions from `prompt_file`,
807
- - creates a new version of `travel-agent` in the dev project from
808
- those defaults via the Foundry SDK. The SDK assigns the version
809
- number per-project; in an empty dev project the first version is
810
- normally `travel-agent:1` (not `:2`, because dev has no draft
811
- history of its own),
812
- - reports `action: bootstrapped` and uses the freshly-bootstrapped
813
- version as the candidate.
821
+ `prompt_deploy stage` step looks up `travel-agent:2` in the dev
822
+ project. Three outcomes are possible depending on what the skill's
823
+ verification dispatches produced:
824
+ - `action: reused` dev already has `travel-agent:2` with the
825
+ same instructions as the seed (no new version created).
826
+ - `action: created` — dev has the seed version but with different
827
+ instructions, so Foundry auto-creates the next number (likely
828
+ `travel-agent:3`).
829
+ - `action: bootstrapped` dev still does not have `travel-agent:2`
830
+ (only `:1`, because the bootstrap can fire `:1` and `:2`
831
+ back-to-back over two runs). The step reads
832
+ `prompt_agent_bootstrap` plus `prompt_file` and creates the next
833
+ SDK-assigned version, then uses it as the candidate.
814
834
  2. **AgentOps eval (PR gate)** job runs second. It evaluates the
815
- bootstrapped candidate using cloud eval. Thresholds pass.
816
- Doctor runs with `--severity-fail critical`; advisory findings are
817
- listed but do not fail the job.
835
+ candidate using cloud eval. Doctor runs with
836
+ `--severity-fail critical`; advisory findings are listed but do not
837
+ fail the job. The first one or two PR runs against a fresh dev
838
+ project can still fail thresholds while bootstrap catches up. After
839
+ that, normal reuse / create flow takes over and the baseline PR
840
+ should go green.
818
841
 
819
- On the **second** PR run, dev has `travel-agent:1` but the seed still
820
- points at `:2`. The stage step gets another 404 looking up `:2` and
821
- bootstraps a second version `travel-agent:2` into dev. After this,
822
- the dev project finally has `travel-agent:2` matching the seed, and
823
- every subsequent PR takes the normal lookup path:
842
+ Successive PR runs walk the same three branches above until dev's
843
+ version count catches up to the seed (`travel-agent:2`). Once it does,
844
+ every PR run hits the normal lookup path:
824
845
 
825
846
  - If `prompt_file` is byte-identical to the seed's instructions: the
826
847
  stage step reports `reused` and uses `travel-agent:2` as the
@@ -849,18 +870,26 @@ git push -u origin chore/agentops-baseline
849
870
  gh pr create --base main --head chore/agentops-baseline --title "Baseline AgentOps run" --body "First green PR to establish history."
850
871
  ```
851
872
 
852
- Open the PR in GitHub. The PR check runs the same staging + eval flow,
853
- green again because the prompt is unchanged. Merge.
873
+ Open the PR in GitHub. The PR check runs the same staging + eval flow.
874
+ Whether this baseline PR goes green on the first try depends on how
875
+ many bootstrap rounds the dev project has already absorbed (from the
876
+ skill's verification dispatches plus any failed PRs). Once bootstrap
877
+ catches up to the seed and the prompt is stable, the PR goes green —
878
+ re-run the workflow on the PR if needed. Then merge.
854
879
 
855
880
  After the merge, the **AgentOps deploy (dev)** workflow runs
856
- automatically on `main`. It stages the candidate (likely re-using the
857
- same version as the PR run, or bootstrapping again if dev has not yet
858
- caught up to the seed), evaluates it, runs `prompt_deploy record` to
859
- mark it as the dev deployment, and uploads the deployment artifact.
881
+ automatically on `main` (the skill rewrote its trigger from `develop`
882
+ to `main` in step 12 because this tutorial uses trunk-based flow).
883
+ This is the **second** deploy-dev run for this repo — the first was
884
+ the skill's verification dispatch in step 12. It stages the candidate
885
+ (by this point most likely `action: reused` or `created`), evaluates
886
+ it, runs `prompt_deploy summarize` to write the dev deployment summary,
887
+ and uploads the deployment artifact.
860
888
 
861
889
  Open the deploy run and download the `foundry-agent-dev-deployment`
862
- artifact. Inside, open `foundry-agent.json`. On the very first deploy
863
- into an empty dev project (the bootstrap case), the file looks like
890
+ artifact. Inside, open `foundry-agent.json`. In the **steady-state**
891
+ case (the most common the seed `travel-agent:2` already exists in
892
+ dev and matches the prompt the PR shipped), the file looks like
864
893
  this — note the actual field names AgentOps writes:
865
894
 
866
895
  ```json
@@ -868,34 +897,47 @@ this — note the actual field names AgentOps writes:
868
897
  "version": 1,
869
898
  "type": "foundry_prompt_agent_deployment",
870
899
  "environment": "dev",
871
- "action": "bootstrapped",
900
+ "action": "reused",
872
901
  "agent_name": "travel-agent",
873
902
  "source_agent": "travel-agent:2",
874
- "candidate_agent": "travel-agent:1",
903
+ "candidate_agent": "travel-agent:2",
875
904
  "source_version": "2",
876
- "candidate_version": "1",
905
+ "candidate_version": "2",
877
906
  "project_endpoint": "https://<your-resource>.services.ai.azure.com/api/projects/travel-agent-dev",
878
- "prompt_file": ".agentops/prompts/travel-agent.md",
879
- "prompt_sha256": "9c3a...e0b1",
880
- "created_at": "2025-...",
881
- "git_sha": "5f1a2c...",
882
- "workflow_url": "https://github.com/.../actions/runs/...",
883
- "foundry_agent_version_id": "..."
907
+ "prompt_file": "/home/runner/work/<your-repo>/<your-repo>/.agentops/prompts/travel-agent.md",
908
+ "prompt_sha256": "9727437db863b00d52bc8ef1f314b70ed22e3e562f5a3a1f9dd68e26f7ea0975",
909
+ "eval_config": "/home/runner/work/<your-repo>/<your-repo>/.agentops/deployments/agentops.candidate.yaml",
910
+ "created_at": "2026-05-30T17:57:53.135435+00:00",
911
+ "git_sha": "3078df74c3b18625553dec8ecd4ed4282f1ca1ca",
912
+ "workflow_url": "https://github.com/<owner>/<your-repo>/actions/runs/26690922142",
913
+ "foundry_agent_version_id": "travel-agent:2"
884
914
  }
885
915
  ```
886
916
 
887
- The `source_agent` field records what `agent:` in `agentops.yaml`
888
- pointed at (`travel-agent:2`, the sandbox seed). The `candidate_agent`
889
- field records what CI actually produced and evaluated in this
890
- environment (`travel-agent:1`, because dev was empty and the SDK
891
- assigned `:1`). The two numbers are expected to differ until the
892
- environment has caught up to the seed.
893
-
894
- On every subsequent deploy, `action` switches to either `reused` (when
895
- the prompt is byte-identical to the previous seed) or `created` (when
896
- Foundry auto-created a new version because the prompt changed), and
897
- `candidate_agent` reflects the actual version that was evaluated and
898
- recorded.
917
+ In the steady-state, `source_agent` and `candidate_agent` are
918
+ **identical** (`travel-agent:2`) because the dev project already had
919
+ `travel-agent:2` with the same instructions as the PR's `prompt_file`,
920
+ so `prompt_deploy stage` reported `action: reused` and nothing new
921
+ was created. The `prompt_file` and `eval_config` paths are absolute
922
+ because they are resolved inside the GitHub Actions runner workspace
923
+ (`/home/runner/work/<your-repo>/<your-repo>/...`).
924
+
925
+ `action` will be one of:
926
+
927
+ - **`reused`** dev already had `travel-agent:2` with byte-identical
928
+ instructions. No new Foundry version was created. (Steady-state and
929
+ most-common case.)
930
+ - **`created`** — dev had `travel-agent:2` but with **different**
931
+ instructions, so Foundry auto-created the next number (e.g.
932
+ `travel-agent:3`). `candidate_agent` would then be `travel-agent:3`.
933
+ - **`bootstrapped`** — dev did not yet have `travel-agent:2` at all,
934
+ so the stage step fell back to `prompt_agent_bootstrap` defaults
935
+ plus `prompt_file` and asked the SDK to create the first version.
936
+ In a fresh, empty dev project the SDK starts at `:1`, so you would
937
+ see `candidate_agent: "travel-agent:1"` and `candidate_version: "1"`
938
+ while `source_agent` still reports the seed (`travel-agent:2`). The
939
+ two numbers stay different until subsequent runs catch dev up to
940
+ the seed.
899
941
 
900
942
  That `prompt_sha256` + `git_sha` pair is what the mental-model diagram
901
943
  at the start of the tutorial referred to as **cross-environment
@@ -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.1",
5
+ "version": "0.3.2",
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.1",
4
+ "version": "0.3.2",
5
5
  "author": {
6
6
  "name": "AgentOps Accelerator",
7
7
  "url": "https://github.com/Azure/agentops"
@@ -318,11 +318,9 @@ def _create_agent_version(
318
318
  description: str,
319
319
  ) -> Any:
320
320
  client = _project_client(endpoint)
321
- # The current Foundry Agents create_version endpoint validates both a root
322
- # `kind` discriminator and the nested `definition` payload.
323
- body = {
324
- "kind": _get_definition_value(definition, "kind"),
325
- "definition": definition,
321
+ definition_dict = _definition_to_dict(definition)
322
+ body: Dict[str, Any] = {
323
+ "definition": definition_dict,
326
324
  "metadata": metadata,
327
325
  "description": description,
328
326
  }
@@ -380,13 +378,41 @@ def _get_mapping_value(value: Any, key: str) -> Any:
380
378
  return None
381
379
 
382
380
 
383
- def _copy_definition(definition: Any) -> Any:
384
- if hasattr(definition, "copy"):
381
+ def _copy_definition(definition: Any) -> Dict[str, Any]:
382
+ """Return a deep copy of ``definition`` as a plain dict.
383
+
384
+ The Foundry SDK's typed definition models (e.g. ``PromptAgentDefinition``)
385
+ expose ``.copy()``, but in ``azure-ai-projects`` 2.x that returns a stripped
386
+ base ``Model`` whose JSON shape is ``{"_data": {...}}`` instead of the
387
+ flattened payload the service expects. To stay compatible across SDK
388
+ versions we always normalize to a plain dict here.
389
+ """
390
+
391
+ return copy.deepcopy(_definition_to_dict(definition))
392
+
393
+
394
+ def _definition_to_dict(definition: Any) -> Dict[str, Any]:
395
+ """Best-effort conversion of an SDK definition object into a plain dict."""
396
+
397
+ if isinstance(definition, dict):
398
+ return dict(definition)
399
+ data = getattr(definition, "_data", None)
400
+ if isinstance(data, dict):
401
+ return dict(data)
402
+ if hasattr(definition, "items"):
385
403
  try:
386
- return definition.copy()
387
- except TypeError:
404
+ return {key: value for key, value in definition.items()}
405
+ except Exception: # noqa: BLE001 — fall through to attribute scrape
388
406
  pass
389
- return copy.deepcopy(definition)
407
+ if hasattr(definition, "as_dict"):
408
+ try:
409
+ return dict(definition.as_dict())
410
+ except Exception: # noqa: BLE001
411
+ pass
412
+ raise TypeError(
413
+ f"Cannot convert Foundry agent definition of type {type(definition).__name__} "
414
+ "to a dict; expected a mapping-compatible object."
415
+ )
390
416
 
391
417
 
392
418
  def _deployment_metadata(*, environment: str, prompt_hash: str) -> Dict[str, str]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentops-accelerator
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Release readiness gates and evidence for Microsoft Foundry agents
5
5
  License: MIT License
6
6