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