agentops-accelerator 0.3.3__tar.gz → 0.3.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.claude-plugin/marketplace.json +1 -1
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/plugin/marketplace.json +1 -1
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/CHANGELOG.md +26 -0
- {agentops_accelerator-0.3.3/src/agentops_accelerator.egg-info → agentops_accelerator-0.3.4}/PKG-INFO +1 -1
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/package.json +1 -1
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/plugin.json +1 -1
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/runtime.py +22 -2
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/azure_endpoints.py +32 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4/src/agentops_accelerator.egg-info}/PKG-INFO +1 -1
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops_accelerator.egg-info/SOURCES.txt +1 -0
- agentops_accelerator-0.3.4/tests/unit/test_azure_endpoints.py +117 -0
- agentops_accelerator-0.3.4/tests/unit/test_runtime_model_config.py +100 -0
- agentops_accelerator-0.3.3/tests/unit/test_azure_endpoints.py +0 -54
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.gitattributes +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/actions/azure-oidc-login/action.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/code-quality-py.instructions.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/copilot-instructions.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/dependabot.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/extensions/agentops-skills/extension.mjs +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/skills/release-management/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/_build.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/agentops-watchdog.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/ci.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/cut-release.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/e2e.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/release.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/workflows/staging.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.gitignore +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.pre-commit-config.yaml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.vscode/launch.json +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.vscode/settings.json +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.vscode/tasks.json +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/AGENTS.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/CONTRIBUTING.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/LICENSE +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/README.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/SECURITY.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/bundles.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/ci-github-actions.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/concepts.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/doctor-checks.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/doctor-explained.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/e2e-live-architecture.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/e2e-live-setup.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/foundry-evaluation-sdk-built-in-evaluators.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/how-it-works.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/media/agentops-diagrams.vsdx +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/media/foundry-control-plane.png +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/release-process.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/tutorial-end-to-end.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/tutorial-hosted-agent-quickstart.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/tutorial-prompt-agent-quickstart.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/examples/flat-quickstart/README.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/examples/flat-quickstart/agentops.yaml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/examples/flat-quickstart/dataset.jsonl +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/icon.png +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/agent-app/Dockerfile +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/agent-app/app.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/agent-app/requirements.txt +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/bootstrap.bicep +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/bootstrap.parameters.example.json +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/perrun.bicep +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/launch.json +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/media/foundry.svg +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/media/quickstart.gif +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/.vscodeignore +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/LICENSE +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/README.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/skills/agentops-agent/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/skills/agentops-config/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/skills/agentops-dataset/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/skills/agentops-eval/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/skills/agentops-report/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/plugins/agentops/skills/agentops-workflow/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/pyproject.toml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/create_support_agent.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/cut-release.ps1 +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/cut-release.sh +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_aggregate_summary.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_data/basic.jsonl +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_data/rag.jsonl +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_data/tools.jsonl +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_demo.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_hosted_agent.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_make_transcript.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/e2e_render_config.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/release.ps1 +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/release.sh +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/setup-e2e-new-tenant.ps1 +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/staging.ps1 +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/staging.sh +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/sync-skills.ps1 +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/scripts/sync-skills.sh +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/setup.cfg +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/__main__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/_legacy_ids.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/analyzer.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/catalog.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/errors.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/foundry_config.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/latency.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/opex.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/opex_workspace.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture_rules/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture_rules/content_filter.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture_rules/diagnostics.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture_rules/local_auth.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture_rules/managed_identity.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/posture_rules/network.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/regression.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/release_readiness.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/safety.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/checks/spec_conformance.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/cockpit.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/config.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/findings.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/history.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/knowledge/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/knowledge/waf-checklist.csv +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_base.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_bundle_rule.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_client.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_dataset_rules.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_engine.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_prompt_rules.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/llm_assist/_spec_rules.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/production_telemetry.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/report.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/server/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/server/app.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/server/auth.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/server/chat.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/server/protocol.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/azure_monitor.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/azure_resources.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/foundry_control.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/results_history.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/spec_detectors/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/spec_detectors/_base.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/spec_detectors/agents_md.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/sources/spec_detectors/spec_kit.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/agent/time_range.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/cli/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/cli/app.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/core/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/core/agentops_config.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/core/config_loader.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/core/evaluators.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/core/release_evidence.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/core/results.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/mcp/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/mcp/server.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/cloud_results.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/cloud_runner.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/comparison.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/diagnostics.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/invocations.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/official_eval.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/orchestrator.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/prompt_deploy.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/publisher.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/reporter.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/pipeline/thresholds.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/cicd.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/eval_analysis.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/evidence_pack.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/initializer.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/preflight.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/setup_wizard.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/skills.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/trace_promotion.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/services/workflow_analysis.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/.gitignore +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/agent-server/Dockerfile +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/agent-server/README.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/agent-server/main.bicep +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/agent.yaml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/agentops.yaml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/foundry.svg +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/icon.png +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev-azd.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod-azd.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prompt-agent.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa-azd.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-pr-prompt-agent.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-pr.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/pipelines/azuredevops/agentops-watchdog.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/project.gitignore +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/sample-traces.jsonl +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/skills/agentops-agent/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/skills/agentops-config/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/skills/agentops-dataset/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/skills/agentops-eval/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/skills/agentops-report/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/skills/agentops-workflow/SKILL.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/smoke.jsonl +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/waf-checklist.README.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/waf-checklist.csv +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-dev-azd.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-dev.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-prod-azd.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-prod.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-prompt-agent.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-qa-azd.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-deploy-qa.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-pr-prompt-agent.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-pr.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/templates/workflows/agentops-watchdog.yml +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/__init__.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/azd_env.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/colors.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/dotenv_loader.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/foundry_discovery.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/logging.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/telemetry.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/yaml.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops_accelerator.egg-info/dependency_links.txt +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops_accelerator.egg-info/entry_points.txt +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops_accelerator.egg-info/requires.txt +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops_accelerator.egg-info/top_level.txt +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/TESTING.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/fixtures/fake_adapter.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/fixtures/fake_eval_runner.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/integration/.gitkeep +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/integration/test_cli_flat_schema.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/integration/test_pipeline_smoke.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/.gitkeep +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_analyzer.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_categories.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_errors.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_foundry_config.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_opex.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_opex_workspace.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_regression.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_safety.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_checks_spec_conformance.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_cli.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_config.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_findings.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_history.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_opex_workspace_check.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_posture_rules.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_results_history.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agent_server.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_agentops_config.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_azd_env.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_azure_resources_discovery.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cicd.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cli_cockpit_connection_summary.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cli_cockpit_port_conflict.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cli_commands.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cli_explain.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cloud_results.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cloud_runner.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_cockpit.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_diagnostics.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_doctor_catalog.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_doctor_cli_explain.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_dotenv_loader.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_e2e_render.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_eval_analysis.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_evaluators.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_foundry_discovery.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_init_command.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_initializer.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_invocations.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_knowledge_loader.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_llm_assist.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_llm_assist_spec_rules.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_mcp_server.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_official_eval.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_pipeline_publisher.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_pipeline_reporter.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_preflight.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_production_telemetry.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_prompt_deploy.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_release_evidence.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_runtime_conversation.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_setup_wizard.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_skills.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_skills_sync.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_telemetry.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_time_range.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_trace_promotion.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tests/unit/test_workflow_analysis.py +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/tombstones/vscode/CDN_DEPRECATION_REQUEST.md +0 -0
- {agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/uv.lock +0 -0
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"name": "agentops-accelerator",
|
|
14
14
|
"source": "../../plugins/agentops",
|
|
15
15
|
"description": "Copilot agent skills for running standardized evaluation workflows with AgentOps Toolkit and Microsoft Foundry agents.",
|
|
16
|
-
"version": "0.3.
|
|
16
|
+
"version": "0.3.4",
|
|
17
17
|
"keywords": [
|
|
18
18
|
"agentops",
|
|
19
19
|
"evaluation",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"name": "agentops-accelerator",
|
|
14
14
|
"source": "../../plugins/agentops",
|
|
15
15
|
"description": "Copilot agent skills for running standardized evaluation workflows with AgentOps Toolkit and Microsoft Foundry agents.",
|
|
16
|
-
"version": "0.3.
|
|
16
|
+
"version": "0.3.4",
|
|
17
17
|
"keywords": [
|
|
18
18
|
"agentops",
|
|
19
19
|
"evaluation",
|
|
@@ -5,6 +5,32 @@ This format follows [Keep a Changelog](https://keepachangelog.com/) and adheres
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.3.4] - 2026-06-01
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **`agentops eval run` in local execution mode no longer fails with
|
|
12
|
+
`Missing environment variables: AZURE_OPENAI_ENDPOINT` when only the
|
|
13
|
+
Foundry project endpoint is configured.** `CONTRIBUTING.md` and the
|
|
14
|
+
user-facing env-var docs both stated that `AZURE_OPENAI_ENDPOINT` is
|
|
15
|
+
"auto-derived from the project endpoint when absent", but
|
|
16
|
+
`pipeline/runtime.py::_model_config` only read the explicit
|
|
17
|
+
`AZURE_OPENAI_ENDPOINT` env var with no fallback — so a fresh workspace
|
|
18
|
+
created by `agentops init` (which writes `AZURE_AI_FOUNDRY_PROJECT_ENDPOINT`
|
|
19
|
+
but not `AZURE_OPENAI_ENDPOINT`) would always trip the missing-env error
|
|
20
|
+
the first time AI-assisted evaluators tried to run locally. The new
|
|
21
|
+
helper `agentops.utils.azure_endpoints.derive_openai_endpoint_from_project`
|
|
22
|
+
trims the trailing `/api/projects/<name>` segment from a Foundry project
|
|
23
|
+
URL (covering both `services.ai.azure.com` and the legacy
|
|
24
|
+
`cognitiveservices.azure.com` hosts) to recover the AI Services account
|
|
25
|
+
base URL, which is exactly what the `openai` and `azure-ai-evaluation`
|
|
26
|
+
SDKs want. `_model_config` now uses the derived value as a fallback
|
|
27
|
+
whenever `AZURE_OPENAI_ENDPOINT` is unset, so the documented behavior
|
|
28
|
+
finally matches the runtime. When `AZURE_OPENAI_DEPLOYMENT` is the only
|
|
29
|
+
thing missing, the error message now points users at the deployment list
|
|
30
|
+
in the Foundry portal *and* mentions the `execution: cloud` escape hatch
|
|
31
|
+
in `agentops.yaml` so the next step is obvious without leaving the
|
|
32
|
+
terminal.
|
|
33
|
+
|
|
8
34
|
## [0.3.3] - 2026-05-31
|
|
9
35
|
|
|
10
36
|
### Changed
|
|
@@ -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.
|
|
5
|
+
"version": "0.3.4",
|
|
6
6
|
"publisher": "AgentOpsAccelerator",
|
|
7
7
|
"icon": "icon.png",
|
|
8
8
|
"license": "MIT",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentops-accelerator",
|
|
3
3
|
"description": "Copilot agent skills for running standardized evaluation workflows with AgentOps Accelerator and Microsoft Foundry agents.",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.4",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "AgentOps Accelerator",
|
|
7
7
|
"url": "https://github.com/Azure/agentops"
|
|
@@ -65,10 +65,22 @@ def _credential() -> Any:
|
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
def _model_config() -> Dict[str, str]:
|
|
68
|
-
from agentops.utils.azure_endpoints import
|
|
68
|
+
from agentops.utils.azure_endpoints import (
|
|
69
|
+
derive_openai_endpoint_from_project,
|
|
70
|
+
normalize_azure_openai_endpoint,
|
|
71
|
+
)
|
|
69
72
|
|
|
70
73
|
raw_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
|
|
71
74
|
endpoint = normalize_azure_openai_endpoint(raw_endpoint)
|
|
75
|
+
if not endpoint:
|
|
76
|
+
# CONTRIBUTING.md promises ``AZURE_OPENAI_ENDPOINT`` is "auto-derived
|
|
77
|
+
# from the project endpoint when absent". The Foundry project URL
|
|
78
|
+
# already encodes the AI Services account host, so we can recover
|
|
79
|
+
# the base inference endpoint without an extra round-trip or any
|
|
80
|
+
# new wizard prompt.
|
|
81
|
+
endpoint = derive_openai_endpoint_from_project(
|
|
82
|
+
os.getenv("AZURE_AI_FOUNDRY_PROJECT_ENDPOINT")
|
|
83
|
+
)
|
|
72
84
|
deployment = os.getenv("AZURE_OPENAI_DEPLOYMENT") or os.getenv(
|
|
73
85
|
"AZURE_AI_MODEL_DEPLOYMENT_NAME"
|
|
74
86
|
)
|
|
@@ -85,9 +97,17 @@ def _model_config() -> Dict[str, str]:
|
|
|
85
97
|
if not deployment:
|
|
86
98
|
missing.append("AZURE_OPENAI_DEPLOYMENT")
|
|
87
99
|
if missing:
|
|
100
|
+
hint = ""
|
|
101
|
+
if "AZURE_OPENAI_DEPLOYMENT" in missing:
|
|
102
|
+
hint = (
|
|
103
|
+
" Set AZURE_OPENAI_DEPLOYMENT to the name of a model "
|
|
104
|
+
"deployment in your Foundry project (Models + endpoints "
|
|
105
|
+
"in the portal), or switch the run to `execution: cloud` "
|
|
106
|
+
"in agentops.yaml so Foundry runs the evaluators server-side."
|
|
107
|
+
)
|
|
88
108
|
raise RuntimeError(
|
|
89
109
|
"AI-assisted evaluators require an evaluator model. "
|
|
90
|
-
"Missing environment variables: " + ", ".join(missing)
|
|
110
|
+
"Missing environment variables: " + ", ".join(missing) + "." + hint
|
|
91
111
|
)
|
|
92
112
|
|
|
93
113
|
config: Dict[str, str] = {
|
{agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/src/agentops/utils/azure_endpoints.py
RENAMED
|
@@ -60,3 +60,35 @@ def normalize_azure_openai_endpoint(value: Optional[str]) -> Optional[str]:
|
|
|
60
60
|
# Trim any straggling trailing slash so callers building paths
|
|
61
61
|
# never get a doubled ``//``.
|
|
62
62
|
return rewritten.rstrip("/")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
# Foundry project endpoints look like
|
|
66
|
+
# ``https://<account>.services.ai.azure.com/api/projects/<project>`` (or the
|
|
67
|
+
# legacy ``cognitiveservices.azure.com`` host). The Azure OpenAI inference
|
|
68
|
+
# endpoint that the ``openai`` and ``azure-ai-evaluation`` SDKs want is the
|
|
69
|
+
# *account* base URL — i.e. the same scheme/host with the project path
|
|
70
|
+
# trimmed off. ``derive_openai_endpoint_from_project`` performs that trim so
|
|
71
|
+
# users who only configure ``AZURE_AI_FOUNDRY_PROJECT_ENDPOINT`` (the value
|
|
72
|
+
# the ``agentops init`` wizard already writes) get a working AI-assisted
|
|
73
|
+
# evaluator run without having to hand-author ``AZURE_OPENAI_ENDPOINT`` too.
|
|
74
|
+
_PROJECT_PATH_RE = re.compile(r"/api/projects/[^/?#]+/*\Z", re.IGNORECASE)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def derive_openai_endpoint_from_project(value: Optional[str]) -> Optional[str]:
|
|
78
|
+
"""Return the Azure OpenAI base URL embedded in a Foundry project endpoint.
|
|
79
|
+
|
|
80
|
+
The function is conservative: it only rewrites URLs whose final path
|
|
81
|
+
segment matches ``/api/projects/<project>`` exactly. Anything else
|
|
82
|
+
(already-base URLs, URLs with extra path segments after the project
|
|
83
|
+
name, non-Foundry hosts) is returned untouched apart from a normalizing
|
|
84
|
+
pass through :func:`normalize_azure_openai_endpoint`. ``None`` and
|
|
85
|
+
empty strings pass through unchanged so callers can keep the
|
|
86
|
+
``os.getenv`` ergonomic of ``derive_openai_endpoint_from_project(os.getenv(...))``.
|
|
87
|
+
"""
|
|
88
|
+
if value is None:
|
|
89
|
+
return None
|
|
90
|
+
stripped = value.strip()
|
|
91
|
+
if not stripped:
|
|
92
|
+
return stripped
|
|
93
|
+
trimmed = _PROJECT_PATH_RE.sub("", stripped)
|
|
94
|
+
return normalize_azure_openai_endpoint(trimmed)
|
|
@@ -285,6 +285,7 @@ tests/unit/test_production_telemetry.py
|
|
|
285
285
|
tests/unit/test_prompt_deploy.py
|
|
286
286
|
tests/unit/test_release_evidence.py
|
|
287
287
|
tests/unit/test_runtime_conversation.py
|
|
288
|
+
tests/unit/test_runtime_model_config.py
|
|
288
289
|
tests/unit/test_setup_wizard.py
|
|
289
290
|
tests/unit/test_skills.py
|
|
290
291
|
tests/unit/test_skills_sync.py
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"""Tests for :mod:`agentops.utils.azure_endpoints`."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
|
|
7
|
+
from agentops.utils.azure_endpoints import (
|
|
8
|
+
derive_openai_endpoint_from_project,
|
|
9
|
+
normalize_azure_openai_endpoint,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@pytest.mark.parametrize(
|
|
14
|
+
"raw, expected",
|
|
15
|
+
[
|
|
16
|
+
# Already-clean values are returned untouched (apart from trailing slash).
|
|
17
|
+
("https://x.openai.azure.com", "https://x.openai.azure.com"),
|
|
18
|
+
("https://x.openai.azure.com/", "https://x.openai.azure.com"),
|
|
19
|
+
# The portal-style suffix is stripped.
|
|
20
|
+
("https://x.openai.azure.com/openai/v1", "https://x.openai.azure.com"),
|
|
21
|
+
("https://x.openai.azure.com/openai/v1/", "https://x.openai.azure.com"),
|
|
22
|
+
("https://x.openai.azure.com/openai/v1//", "https://x.openai.azure.com"),
|
|
23
|
+
# Other well-known variants.
|
|
24
|
+
("https://x.openai.azure.com/openai", "https://x.openai.azure.com"),
|
|
25
|
+
("https://x.openai.azure.com/openai/", "https://x.openai.azure.com"),
|
|
26
|
+
(
|
|
27
|
+
"https://x.openai.azure.com/openai/deployments",
|
|
28
|
+
"https://x.openai.azure.com",
|
|
29
|
+
),
|
|
30
|
+
# Case-insensitive suffix match.
|
|
31
|
+
("https://x.openai.azure.com/OpenAI/V1", "https://x.openai.azure.com"),
|
|
32
|
+
# The AI Services proxy host is also accepted.
|
|
33
|
+
(
|
|
34
|
+
"https://aif-prj.cognitiveservices.azure.com/openai/v1",
|
|
35
|
+
"https://aif-prj.cognitiveservices.azure.com",
|
|
36
|
+
),
|
|
37
|
+
# Whitespace is trimmed.
|
|
38
|
+
(" https://x.openai.azure.com/openai/v1 ", "https://x.openai.azure.com"),
|
|
39
|
+
],
|
|
40
|
+
)
|
|
41
|
+
def test_normalize_strips_known_suffixes(raw: str, expected: str) -> None:
|
|
42
|
+
assert normalize_azure_openai_endpoint(raw) == expected
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def test_normalize_passes_through_none() -> None:
|
|
46
|
+
assert normalize_azure_openai_endpoint(None) is None
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_normalize_passes_through_empty_string() -> None:
|
|
50
|
+
assert normalize_azure_openai_endpoint("") == ""
|
|
51
|
+
assert normalize_azure_openai_endpoint(" ") == ""
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def test_normalize_only_strips_at_the_end() -> None:
|
|
55
|
+
# A path containing "openai" earlier in the URL must not be touched.
|
|
56
|
+
raw = "https://proxy.example.com/openai/v1/extra"
|
|
57
|
+
assert normalize_azure_openai_endpoint(raw) == raw.rstrip("/")
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@pytest.mark.parametrize(
|
|
61
|
+
"raw, expected",
|
|
62
|
+
[
|
|
63
|
+
# Canonical Foundry project endpoint (services.ai.azure.com host).
|
|
64
|
+
(
|
|
65
|
+
"https://ai-account-xyz.services.ai.azure.com/api/projects/proj-default",
|
|
66
|
+
"https://ai-account-xyz.services.ai.azure.com",
|
|
67
|
+
),
|
|
68
|
+
# Trailing slash on the project segment.
|
|
69
|
+
(
|
|
70
|
+
"https://ai-account-xyz.services.ai.azure.com/api/projects/proj-default/",
|
|
71
|
+
"https://ai-account-xyz.services.ai.azure.com",
|
|
72
|
+
),
|
|
73
|
+
# Legacy cognitiveservices host.
|
|
74
|
+
(
|
|
75
|
+
"https://acct.cognitiveservices.azure.com/api/projects/p1",
|
|
76
|
+
"https://acct.cognitiveservices.azure.com",
|
|
77
|
+
),
|
|
78
|
+
# Project names may include hyphens and digits.
|
|
79
|
+
(
|
|
80
|
+
"https://acct.services.ai.azure.com/api/projects/travel-agent-sandbox",
|
|
81
|
+
"https://acct.services.ai.azure.com",
|
|
82
|
+
),
|
|
83
|
+
# Case-insensitive match on the ``/api/projects/`` segment.
|
|
84
|
+
(
|
|
85
|
+
"https://acct.services.ai.azure.com/API/Projects/p1",
|
|
86
|
+
"https://acct.services.ai.azure.com",
|
|
87
|
+
),
|
|
88
|
+
# Already a base URL — passed through unchanged (apart from trailing slash).
|
|
89
|
+
(
|
|
90
|
+
"https://acct.services.ai.azure.com",
|
|
91
|
+
"https://acct.services.ai.azure.com",
|
|
92
|
+
),
|
|
93
|
+
# Already a base URL with the OpenAI inference suffix — still normalized.
|
|
94
|
+
(
|
|
95
|
+
"https://acct.services.ai.azure.com/openai/v1",
|
|
96
|
+
"https://acct.services.ai.azure.com",
|
|
97
|
+
),
|
|
98
|
+
],
|
|
99
|
+
)
|
|
100
|
+
def test_derive_openai_endpoint_from_project(raw: str, expected: str) -> None:
|
|
101
|
+
assert derive_openai_endpoint_from_project(raw) == expected
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def test_derive_openai_endpoint_from_project_passes_through_none() -> None:
|
|
105
|
+
assert derive_openai_endpoint_from_project(None) is None
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def test_derive_openai_endpoint_from_project_passes_through_empty() -> None:
|
|
109
|
+
assert derive_openai_endpoint_from_project("") == ""
|
|
110
|
+
assert derive_openai_endpoint_from_project(" ") == ""
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def test_derive_openai_endpoint_from_project_keeps_extra_path() -> None:
|
|
114
|
+
# Only the final ``/api/projects/<name>`` segment is trimmed; an endpoint
|
|
115
|
+
# carrying additional sub-paths (e.g. an explicit agent path) is left as-is.
|
|
116
|
+
raw = "https://acct.services.ai.azure.com/api/projects/proj/agents/foo"
|
|
117
|
+
assert derive_openai_endpoint_from_project(raw) == raw.rstrip("/")
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"""Tests for :func:`agentops.pipeline.runtime._model_config`.
|
|
2
|
+
|
|
3
|
+
The covered behavior:
|
|
4
|
+
|
|
5
|
+
* ``AZURE_OPENAI_ENDPOINT`` is preferred when explicitly set.
|
|
6
|
+
* When absent, the endpoint is auto-derived from
|
|
7
|
+
``AZURE_AI_FOUNDRY_PROJECT_ENDPOINT`` — the CONTRIBUTING-stated promise
|
|
8
|
+
that ``agentops init`` already satisfies for the project endpoint.
|
|
9
|
+
* When neither is available the error mentions both missing variables and
|
|
10
|
+
hints the ``execution: cloud`` escape hatch for the deployment-only case.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import pytest
|
|
16
|
+
|
|
17
|
+
from agentops.pipeline.runtime import _model_config
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@pytest.fixture(autouse=True)
|
|
21
|
+
def _clear_env(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
22
|
+
for key in (
|
|
23
|
+
"AZURE_OPENAI_ENDPOINT",
|
|
24
|
+
"AZURE_OPENAI_DEPLOYMENT",
|
|
25
|
+
"AZURE_AI_MODEL_DEPLOYMENT_NAME",
|
|
26
|
+
"AZURE_AI_FOUNDRY_PROJECT_ENDPOINT",
|
|
27
|
+
"AZURE_OPENAI_API_VERSION",
|
|
28
|
+
):
|
|
29
|
+
monkeypatch.delenv(key, raising=False)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_explicit_openai_endpoint_wins(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
33
|
+
monkeypatch.setenv("AZURE_OPENAI_ENDPOINT", "https://explicit.openai.azure.com")
|
|
34
|
+
monkeypatch.setenv("AZURE_OPENAI_DEPLOYMENT", "gpt-4o-mini")
|
|
35
|
+
monkeypatch.setenv(
|
|
36
|
+
"AZURE_AI_FOUNDRY_PROJECT_ENDPOINT",
|
|
37
|
+
"https://different.services.ai.azure.com/api/projects/p1",
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
cfg = _model_config()
|
|
41
|
+
|
|
42
|
+
assert cfg["azure_endpoint"] == "https://explicit.openai.azure.com"
|
|
43
|
+
assert cfg["azure_deployment"] == "gpt-4o-mini"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def test_endpoint_auto_derived_from_project(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
47
|
+
monkeypatch.setenv(
|
|
48
|
+
"AZURE_AI_FOUNDRY_PROJECT_ENDPOINT",
|
|
49
|
+
"https://ai-account-xyz.services.ai.azure.com/api/projects/proj-default",
|
|
50
|
+
)
|
|
51
|
+
monkeypatch.setenv("AZURE_OPENAI_DEPLOYMENT", "gpt-4o-mini")
|
|
52
|
+
|
|
53
|
+
cfg = _model_config()
|
|
54
|
+
|
|
55
|
+
assert cfg["azure_endpoint"] == "https://ai-account-xyz.services.ai.azure.com"
|
|
56
|
+
assert cfg["azure_deployment"] == "gpt-4o-mini"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def test_missing_deployment_still_raises_with_hint(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
60
|
+
monkeypatch.setenv(
|
|
61
|
+
"AZURE_AI_FOUNDRY_PROJECT_ENDPOINT",
|
|
62
|
+
"https://acct.services.ai.azure.com/api/projects/p1",
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
with pytest.raises(RuntimeError) as excinfo:
|
|
66
|
+
_model_config()
|
|
67
|
+
|
|
68
|
+
message = str(excinfo.value)
|
|
69
|
+
assert "AZURE_OPENAI_DEPLOYMENT" in message
|
|
70
|
+
assert "AZURE_OPENAI_ENDPOINT" not in message
|
|
71
|
+
# The hint nudges the user toward the cloud-execution escape hatch.
|
|
72
|
+
assert "execution: cloud" in message
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def test_missing_both_lists_endpoint_and_deployment(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
76
|
+
with pytest.raises(RuntimeError) as excinfo:
|
|
77
|
+
_model_config()
|
|
78
|
+
|
|
79
|
+
message = str(excinfo.value)
|
|
80
|
+
assert "AZURE_OPENAI_ENDPOINT" in message
|
|
81
|
+
assert "AZURE_OPENAI_DEPLOYMENT" in message
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def test_default_api_version_pinned(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
85
|
+
monkeypatch.setenv("AZURE_OPENAI_ENDPOINT", "https://x.openai.azure.com")
|
|
86
|
+
monkeypatch.setenv("AZURE_OPENAI_DEPLOYMENT", "gpt-4o-mini")
|
|
87
|
+
|
|
88
|
+
cfg = _model_config()
|
|
89
|
+
|
|
90
|
+
assert cfg["api_version"] == "2025-04-01-preview"
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def test_api_version_override(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
94
|
+
monkeypatch.setenv("AZURE_OPENAI_ENDPOINT", "https://x.openai.azure.com")
|
|
95
|
+
monkeypatch.setenv("AZURE_OPENAI_DEPLOYMENT", "gpt-4o-mini")
|
|
96
|
+
monkeypatch.setenv("AZURE_OPENAI_API_VERSION", "2024-12-01-preview")
|
|
97
|
+
|
|
98
|
+
cfg = _model_config()
|
|
99
|
+
|
|
100
|
+
assert cfg["api_version"] == "2024-12-01-preview"
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"""Tests for :mod:`agentops.utils.azure_endpoints`."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import pytest
|
|
6
|
-
|
|
7
|
-
from agentops.utils.azure_endpoints import normalize_azure_openai_endpoint
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@pytest.mark.parametrize(
|
|
11
|
-
"raw, expected",
|
|
12
|
-
[
|
|
13
|
-
# Already-clean values are returned untouched (apart from trailing slash).
|
|
14
|
-
("https://x.openai.azure.com", "https://x.openai.azure.com"),
|
|
15
|
-
("https://x.openai.azure.com/", "https://x.openai.azure.com"),
|
|
16
|
-
# The portal-style suffix is stripped.
|
|
17
|
-
("https://x.openai.azure.com/openai/v1", "https://x.openai.azure.com"),
|
|
18
|
-
("https://x.openai.azure.com/openai/v1/", "https://x.openai.azure.com"),
|
|
19
|
-
("https://x.openai.azure.com/openai/v1//", "https://x.openai.azure.com"),
|
|
20
|
-
# Other well-known variants.
|
|
21
|
-
("https://x.openai.azure.com/openai", "https://x.openai.azure.com"),
|
|
22
|
-
("https://x.openai.azure.com/openai/", "https://x.openai.azure.com"),
|
|
23
|
-
(
|
|
24
|
-
"https://x.openai.azure.com/openai/deployments",
|
|
25
|
-
"https://x.openai.azure.com",
|
|
26
|
-
),
|
|
27
|
-
# Case-insensitive suffix match.
|
|
28
|
-
("https://x.openai.azure.com/OpenAI/V1", "https://x.openai.azure.com"),
|
|
29
|
-
# The AI Services proxy host is also accepted.
|
|
30
|
-
(
|
|
31
|
-
"https://aif-prj.cognitiveservices.azure.com/openai/v1",
|
|
32
|
-
"https://aif-prj.cognitiveservices.azure.com",
|
|
33
|
-
),
|
|
34
|
-
# Whitespace is trimmed.
|
|
35
|
-
(" https://x.openai.azure.com/openai/v1 ", "https://x.openai.azure.com"),
|
|
36
|
-
],
|
|
37
|
-
)
|
|
38
|
-
def test_normalize_strips_known_suffixes(raw: str, expected: str) -> None:
|
|
39
|
-
assert normalize_azure_openai_endpoint(raw) == expected
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
def test_normalize_passes_through_none() -> None:
|
|
43
|
-
assert normalize_azure_openai_endpoint(None) is None
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
def test_normalize_passes_through_empty_string() -> None:
|
|
47
|
-
assert normalize_azure_openai_endpoint("") == ""
|
|
48
|
-
assert normalize_azure_openai_endpoint(" ") == ""
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
def test_normalize_only_strips_at_the_end() -> None:
|
|
52
|
-
# A path containing "openai" earlier in the URL must not be touched.
|
|
53
|
-
raw = "https://proxy.example.com/openai/v1/extra"
|
|
54
|
-
assert normalize_azure_openai_endpoint(raw) == raw.rstrip("/")
|
|
File without changes
|
|
File without changes
|
{agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/code-quality-py.instructions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.github/skills/release-management/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
{agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/media/foundry-control-plane.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/tutorial-hosted-agent-quickstart.md
RENAMED
|
File without changes
|
{agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/docs/tutorial-prompt-agent-quickstart.md
RENAMED
|
File without changes
|
{agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/examples/flat-quickstart/README.md
RENAMED
|
File without changes
|
{agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/examples/flat-quickstart/agentops.yaml
RENAMED
|
File without changes
|
{agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/examples/flat-quickstart/dataset.jsonl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentops_accelerator-0.3.3 → agentops_accelerator-0.3.4}/infra/e2e/agent-app/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|