agentops-accelerator 0.4.4__tar.gz → 0.4.5__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.4.4 → agentops_accelerator-0.4.5}/CHANGELOG.md +42 -0
- {agentops_accelerator-0.4.4/src/agentops_accelerator.egg-info → agentops_accelerator-0.4.5}/PKG-INFO +1 -1
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-governance/SKILL.md +109 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/cli/app.py +107 -11
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/core/agentops_config.py +8 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/publisher.py +10 -4
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/runtime.py +7 -1
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/assert_runner.py +149 -18
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/azd_eval_init.py +368 -35
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/cicd.py +86 -9
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/redteam_runner.py +83 -7
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/setup_wizard.py +163 -9
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-governance/SKILL.md +109 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/utils/yaml.py +1 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5/src/agentops_accelerator.egg-info}/PKG-INFO +1 -1
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops_accelerator.egg-info/SOURCES.txt +1 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_assert_and_redteam_runners.py +44 -3
- agentops_accelerator-0.4.5/tests/unit/test_azd_eval_init.py +717 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_cicd.py +41 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_init_command.py +3 -3
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_pipeline_publisher.py +12 -9
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_runtime_model_config.py +32 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_setup_wizard.py +241 -3
- agentops_accelerator-0.4.5/tests/unit/test_yaml_utils.py +13 -0
- agentops_accelerator-0.4.4/tests/unit/test_azd_eval_init.py +0 -361
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.claude-plugin/marketplace.json +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.gitattributes +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/actions/azure-oidc-login/action.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/code-quality-py.instructions.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/copilot-instructions.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/dependabot.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/extensions/agentops-skills/extension.mjs +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/plugin/marketplace.json +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/skills/release-management/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/workflows/_build.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/workflows/agentops-watchdog.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/workflows/ci.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/workflows/cut-release.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/workflows/e2e.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/workflows/release.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.github/workflows/staging.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.gitignore +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.pre-commit-config.yaml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.vscode/launch.json +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.vscode/settings.json +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/.vscode/tasks.json +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/AGENTS.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/CONTRIBUTING.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/LICENSE +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/README.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/SECURITY.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/bundles.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/ci-github-actions.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/concepts.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/doctor-checks.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/doctor-explained.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/e2e-live-architecture.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/e2e-live-setup.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/foundry-evaluation-sdk-built-in-evaluators.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/how-it-works.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/media/agentops-diagrams.vsdx +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/media/foundry-control-plane.png +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/release-process.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/tutorial-end-to-end.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/tutorial-hosted-agent-quickstart.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/docs/tutorial-prompt-agent.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/examples/flat-quickstart/README.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/examples/flat-quickstart/agentops.yaml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/examples/flat-quickstart/dataset.jsonl +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/icon.png +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/infra/e2e/agent-app/Dockerfile +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/infra/e2e/agent-app/app.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/infra/e2e/agent-app/requirements.txt +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/infra/e2e/bootstrap.bicep +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/infra/e2e/bootstrap.parameters.example.json +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/infra/e2e/perrun.bicep +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/launch.json +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/media/foundry.svg +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/media/quickstart.gif +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/plugins/agentops/.vscodeignore +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/plugins/agentops/LICENSE +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/plugins/agentops/README.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/plugins/agentops/package.json +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/plugins/agentops/plugin.json +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-agent/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-config/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-dataset/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-eval/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-report/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/plugins/agentops/skills/agentops-workflow/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/pyproject.toml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/create_support_agent.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/cut-release.ps1 +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/cut-release.sh +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/e2e_aggregate_summary.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/e2e_data/basic.jsonl +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/e2e_data/rag.jsonl +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/e2e_data/tools.jsonl +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/e2e_demo.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/e2e_hosted_agent.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/e2e_make_transcript.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/e2e_render_config.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/release.ps1 +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/release.sh +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/setup-e2e-new-tenant.ps1 +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/staging.ps1 +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/staging.sh +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/sync-skills.ps1 +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/scripts/sync-skills.sh +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/setup.cfg +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/__main__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/_legacy_ids.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/analyzer.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/_rbac_authorization.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/catalog.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/errors.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/foundry_config.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/governance.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/latency.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/observability.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/opex.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/opex_workspace.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture_rules/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture_rules/content_filter.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture_rules/diagnostics.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture_rules/local_auth.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture_rules/managed_identity.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/posture_rules/network.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/rbac_openai_data_plane.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/regression.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/release_readiness.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/safety.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/checks/spec_conformance.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/cockpit.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/config.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/findings.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/history.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/knowledge/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/knowledge/waf-checklist.csv +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_base.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_bundle_rule.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_client.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_dataset_rules.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_engine.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_prompt_rules.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/llm_assist/_spec_rules.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/production_telemetry.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/report.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/server/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/server/app.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/server/auth.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/server/chat.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/server/protocol.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/_credentials.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/azure_monitor.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/azure_resources.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/foundry_control.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/results_history.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/spec_detectors/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/spec_detectors/_base.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/spec_detectors/agents_md.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/sources/spec_detectors/spec_kit.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/agent/time_range.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/cli/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/core/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/core/azd_eval.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/core/config_loader.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/core/evaluators.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/core/governance.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/core/release_evidence.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/core/results.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/mcp/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/mcp/server.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/azd_runner.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/cloud_results.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/cloud_runner.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/comparison.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/diagnostics.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/invocations.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/official_eval.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/orchestrator.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/prompt_deploy.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/reporter.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/thresholds.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/eval_analysis.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/evidence_pack.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/initializer.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/preflight.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/skills.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/trace_promotion.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/services/workflow_analysis.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/.gitignore +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/agent-server/Dockerfile +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/agent-server/README.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/agent-server/main.bicep +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/agent.yaml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/agentops.yaml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/foundry.svg +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/icon.png +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev-azd.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod-azd.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prompt-agent.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa-azd.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-pr-prompt-agent.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-pr.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/pipelines/azuredevops/agentops-watchdog.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/project.gitignore +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/sample-traces.jsonl +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-agent/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-config/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-dataset/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-eval/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-report/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/skills/agentops-workflow/SKILL.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/smoke.jsonl +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/waf-checklist.README.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/waf-checklist.csv +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-dev-azd.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-dev.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-prod-azd.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-prod.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-prompt-agent.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-qa-azd.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-deploy-qa.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-pr-prompt-agent.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-pr.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/templates/workflows/agentops-watchdog.yml +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/utils/__init__.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/utils/azd_env.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/utils/azure_endpoints.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/utils/colors.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/utils/dotenv_loader.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/utils/foundry_discovery.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/utils/logging.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/utils/telemetry.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops_accelerator.egg-info/dependency_links.txt +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops_accelerator.egg-info/entry_points.txt +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops_accelerator.egg-info/requires.txt +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops_accelerator.egg-info/top_level.txt +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/TESTING.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/fixtures/fake_adapter.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/fixtures/fake_eval_runner.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/integration/.gitkeep +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/integration/test_cli_flat_schema.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/integration/test_pipeline_smoke.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/.gitkeep +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_analyzer.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_categories.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_errors.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_foundry_config.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_observability.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_opex.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_opex_workspace.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_rbac_openai_data_plane.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_regression.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_safety.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_checks_spec_conformance.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_cli.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_config.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_findings.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_history.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_opex_workspace_check.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_posture_rules.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_results_history.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agent_server.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_agentops_config.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_azd_env.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_azd_eval.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_azd_runner.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_azure_endpoints.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_azure_resources_discovery.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_cli_cockpit_connection_summary.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_cli_cockpit_port_conflict.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_cli_commands.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_cli_explain.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_cloud_results.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_cloud_runner.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_cockpit.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_diagnostics.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_doctor_catalog.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_doctor_cli_explain.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_dotenv_loader.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_e2e_render.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_eval_analysis.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_eval_run_grader_errors.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_evaluators.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_foundry_discovery.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_governance.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_http_streaming.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_initializer.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_invocations.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_knowledge_loader.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_llm_assist.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_llm_assist_spec_rules.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_mcp_server.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_official_eval.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_pipeline_reporter.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_preflight.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_production_telemetry.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_prompt_deploy.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_release_evidence.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_runtime_conversation.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_shared_credentials.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_skills.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_skills_sync.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_telemetry.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_time_range.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_trace_promotion.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tests/unit/test_workflow_analysis.py +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/tombstones/vscode/CDN_DEPRECATION_REQUEST.md +0 -0
- {agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/uv.lock +0 -0
|
@@ -5,6 +5,32 @@ This format follows [Keep a Changelog](https://keepachangelog.com/) and adheres
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.4.5] - 2026-06-19
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Governance gates for HTTP agents (ASSERT and Red Team).** `agentops assert
|
|
12
|
+
run` and `agentops redteam run` now work against a live HTTP orchestrator
|
|
13
|
+
endpoint, not only model/deployment targets. Red Team wraps the HTTP endpoint
|
|
14
|
+
as an SDK-compatible target and reuses the AgentOps HTTP mapping
|
|
15
|
+
(`request_field`, `response_mode`, `stream`, custom headers). ASSERT resolves
|
|
16
|
+
`assert-ai` inside the active virtual environment, accepts non-secret values
|
|
17
|
+
from `assert.env`, can request an AAD token from the Azure CLI for local
|
|
18
|
+
auth-disabled Azure AI resources, injects the GPT-5 `max_completion_tokens`
|
|
19
|
+
shim only when configured, and materializes a runtime ASSERT config so
|
|
20
|
+
committed configs no longer need absolute artifact paths.
|
|
21
|
+
- **Generated workflows run the ASSERT and Red Team gates.** `agentops workflow
|
|
22
|
+
generate` now installs the optional ASSERT/Red Team dependencies, runs those
|
|
23
|
+
gates when `assert:` or `redteam:` is present in `agentops.yaml`, uploads
|
|
24
|
+
their artifacts, and emits the corrected Red Team command quoting.
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
- **Reasoning-model judges no longer fail the eval gate in CI.** The generated
|
|
28
|
+
GitHub Actions and Azure DevOps eval and Red Team steps now forward
|
|
29
|
+
`AZURE_OPENAI_MODEL_NAME`, so AgentOps detects reasoning models (such as
|
|
30
|
+
`gpt-5-nano`) and uses `max_completion_tokens` instead of `max_tokens`. This
|
|
31
|
+
removes the judge `400` error that could break the eval gate when the judge
|
|
32
|
+
deployment is a reasoning model.
|
|
33
|
+
|
|
8
34
|
## [0.4.4] - 2026-06-18
|
|
9
35
|
|
|
10
36
|
### Added
|
|
@@ -56,6 +82,22 @@ This format follows [Keep a Changelog](https://keepachangelog.com/) and adheres
|
|
|
56
82
|
`eval.yaml`, so users can see why those evaluators were chosen.
|
|
57
83
|
([#323](https://github.com/Azure/agentops/issues/323))
|
|
58
84
|
|
|
85
|
+
## [0.4.2] - 2026-06-17
|
|
86
|
+
|
|
87
|
+
### Fixed
|
|
88
|
+
- **`agentops eval init` now works with both old and new `azure.ai.agents` azd
|
|
89
|
+
extensions.** Version 0.1.40 of the extension renamed the eval subcommand from
|
|
90
|
+
`azd ai agent eval init` to `azd ai agent eval generate`, which made
|
|
91
|
+
`agentops eval init` hard-fail with `Command "init" is deprecated, use 'azd ai
|
|
92
|
+
agent eval generate' instead`. AgentOps now invokes `generate` first and
|
|
93
|
+
transparently falls back to the legacy `init` subcommand when an older
|
|
94
|
+
extension does not recognise `generate`. The fallback only triggers on
|
|
95
|
+
subcommand-name/deprecation errors; genuine failures (authentication, project
|
|
96
|
+
endpoint, timeouts) are still surfaced immediately and unchanged. All
|
|
97
|
+
previously passed flags (`--project-endpoint`, `--agent`,
|
|
98
|
+
`--gen-instruction-file`, `--eval-model`, `--dataset`, `--evaluator`) and the
|
|
99
|
+
recipe discovery/persistence behaviour are preserved.
|
|
100
|
+
|
|
59
101
|
## [0.4.1] - 2026-06-15
|
|
60
102
|
|
|
61
103
|
### Changed
|
|
@@ -206,6 +206,115 @@ assert-ai init
|
|
|
206
206
|
It walks them through behavior description, target callable / model /
|
|
207
207
|
endpoint, dimensions, and judge presets, and writes a validated YAML.
|
|
208
208
|
|
|
209
|
+
### HTTP orchestrator ASSERT
|
|
210
|
+
|
|
211
|
+
If `agentops.yaml` uses `protocol: http-json` or the user says the target is an
|
|
212
|
+
HTTP orchestrator, do not use ASSERT native endpoint mode. `assert-ai 0.1.0`
|
|
213
|
+
posts `message/history` and expects `response`; AgentOps HTTP targets may use
|
|
214
|
+
custom fields like `ask` and streamed text. Scaffold a callable adapter instead.
|
|
215
|
+
|
|
216
|
+
Create `.agentops/assert_http_adapter.py`:
|
|
217
|
+
|
|
218
|
+
```python
|
|
219
|
+
from __future__ import annotations
|
|
220
|
+
|
|
221
|
+
import json
|
|
222
|
+
from pathlib import Path
|
|
223
|
+
from typing import Any
|
|
224
|
+
|
|
225
|
+
from agentops.core.config_loader import load_agentops_config
|
|
226
|
+
from agentops.pipeline.invocations import (
|
|
227
|
+
_aggregate_stream,
|
|
228
|
+
_dot_path,
|
|
229
|
+
_http_request_json,
|
|
230
|
+
_http_request_stream,
|
|
231
|
+
)
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
def target(message: str, history: list[dict[str, Any]] | None = None) -> str:
|
|
235
|
+
del history
|
|
236
|
+
config = load_agentops_config(Path("agentops.yaml"))
|
|
237
|
+
if not config.agent:
|
|
238
|
+
raise RuntimeError("agentops.yaml must define a top-level HTTP agent endpoint")
|
|
239
|
+
|
|
240
|
+
request_field = config.request_field or "message"
|
|
241
|
+
headers = dict(config.headers)
|
|
242
|
+
headers.setdefault("Content-Type", "application/json")
|
|
243
|
+
body = {request_field: message}
|
|
244
|
+
|
|
245
|
+
if config.response_mode in ("sse", "text"):
|
|
246
|
+
raw_body = _http_request_stream(
|
|
247
|
+
method="POST",
|
|
248
|
+
url=config.agent,
|
|
249
|
+
headers=headers,
|
|
250
|
+
body=body,
|
|
251
|
+
timeout=120,
|
|
252
|
+
)
|
|
253
|
+
return _aggregate_stream(config.response_mode, raw_body, config.stream).strip()
|
|
254
|
+
|
|
255
|
+
payload = _http_request_json(
|
|
256
|
+
method="POST",
|
|
257
|
+
url=config.agent,
|
|
258
|
+
headers=headers,
|
|
259
|
+
body=body,
|
|
260
|
+
timeout=120,
|
|
261
|
+
)
|
|
262
|
+
response_path = config.response_field or "text"
|
|
263
|
+
response_text = _dot_path(payload, response_path)
|
|
264
|
+
if response_text is None and isinstance(payload, dict):
|
|
265
|
+
for fallback in ("response", "output", "content", "message", "text"):
|
|
266
|
+
response_text = payload.get(fallback)
|
|
267
|
+
if response_text:
|
|
268
|
+
break
|
|
269
|
+
return (
|
|
270
|
+
response_text
|
|
271
|
+
if isinstance(response_text, str)
|
|
272
|
+
else json.dumps(response_text or "", ensure_ascii=False)
|
|
273
|
+
)
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Create an ASSERT smoke from a known-good eval dataset row, not a random general
|
|
277
|
+
question. For the HTTP tutorial, use:
|
|
278
|
+
|
|
279
|
+
```yaml
|
|
280
|
+
suite: gpt-rag-http-smoke
|
|
281
|
+
run: local-http-contract-smoke
|
|
282
|
+
|
|
283
|
+
default_model:
|
|
284
|
+
name: azure/chat
|
|
285
|
+
|
|
286
|
+
pipeline:
|
|
287
|
+
systematize:
|
|
288
|
+
enabled: false
|
|
289
|
+
test_set:
|
|
290
|
+
enabled: false
|
|
291
|
+
inference:
|
|
292
|
+
test_set_path: test_set.jsonl
|
|
293
|
+
target:
|
|
294
|
+
callable: assert_http_adapter:target
|
|
295
|
+
max_turns: 1
|
|
296
|
+
judge:
|
|
297
|
+
taxonomy_path: taxonomy.json
|
|
298
|
+
preset:
|
|
299
|
+
- grounding
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Append this `assert:` block to `agentops.yaml`. Discover `AZURE_API_BASE` from
|
|
303
|
+
the Azure AI/OpenAI resource and set `AZURE_API_VERSION` to the version used by
|
|
304
|
+
the deployment. These are not secrets. If local auth is disabled, AgentOps will
|
|
305
|
+
use the signed-in Azure CLI token for the ASSERT subprocess.
|
|
306
|
+
|
|
307
|
+
```yaml
|
|
308
|
+
assert:
|
|
309
|
+
config: ./assert/eval_config.yaml
|
|
310
|
+
fail_on_violations: true
|
|
311
|
+
env:
|
|
312
|
+
AZURE_API_BASE: https://<azure-ai-resource>.cognitiveservices.azure.com/
|
|
313
|
+
AZURE_API_VERSION: 2024-12-01-preview
|
|
314
|
+
AGENTOPS_ASSERT_AZURE_MAX_COMPLETION_TOKENS: "true"
|
|
315
|
+
PYTHONPATH: .agentops
|
|
316
|
+
```
|
|
317
|
+
|
|
209
318
|
**3. Append the `assert:` block to `agentops.yaml`** (preserve every existing
|
|
210
319
|
key — read the file, append the block if missing, write back):
|
|
211
320
|
|
|
@@ -14,13 +14,16 @@ from html import escape as html_escape
|
|
|
14
14
|
from pathlib import Path
|
|
15
15
|
from textwrap import wrap
|
|
16
16
|
from collections.abc import Sequence
|
|
17
|
-
from typing import Annotated, Any, Optional
|
|
17
|
+
from typing import Annotated, Any, Optional, TYPE_CHECKING
|
|
18
18
|
|
|
19
19
|
import typer
|
|
20
20
|
|
|
21
21
|
from agentops.utils.colors import style
|
|
22
22
|
from agentops.utils.logging import get_logger, setup_logging
|
|
23
23
|
|
|
24
|
+
if TYPE_CHECKING:
|
|
25
|
+
from agentops.core.agentops_config import AgentOpsConfig
|
|
26
|
+
|
|
24
27
|
app = typer.Typer(
|
|
25
28
|
name="agentops",
|
|
26
29
|
help="AgentOps - standardized evaluation workflows for AI projects.",
|
|
@@ -1574,11 +1577,13 @@ def cmd_init(
|
|
|
1574
1577
|
from agentops.services.setup_wizard import (
|
|
1575
1578
|
AGENT_TITLE,
|
|
1576
1579
|
DATASET_TITLE,
|
|
1580
|
+
ENDPOINT_SOURCE_AZD_RESOURCE_DISCOVERY,
|
|
1577
1581
|
PROJECT_ENDPOINT_TITLE,
|
|
1578
1582
|
REQUIRED_CONFIGURATION_MESSAGE,
|
|
1579
1583
|
WizardAnswers,
|
|
1580
1584
|
apply_answers,
|
|
1581
1585
|
discover_defaults,
|
|
1586
|
+
is_placeholder_agent,
|
|
1582
1587
|
run_wizard,
|
|
1583
1588
|
validate_agent,
|
|
1584
1589
|
validate_dataset,
|
|
@@ -1763,12 +1768,14 @@ def cmd_init(
|
|
|
1763
1768
|
force_prompt_fields = {"agent", "dataset"} if config_seeded_this_run else set()
|
|
1764
1769
|
prompt_values = [
|
|
1765
1770
|
defaults.project_endpoint,
|
|
1766
|
-
defaults.agent,
|
|
1771
|
+
None if is_placeholder_agent(defaults.agent) else defaults.agent,
|
|
1767
1772
|
defaults.dataset,
|
|
1768
1773
|
]
|
|
1769
|
-
will_prompt =
|
|
1770
|
-
|
|
1771
|
-
|
|
1774
|
+
will_prompt = (
|
|
1775
|
+
reconfigure
|
|
1776
|
+
or bool(force_prompt_fields)
|
|
1777
|
+
or any(v is None or not str(v).strip() for v in prompt_values)
|
|
1778
|
+
or defaults.project_endpoint_source == ENDPOINT_SOURCE_AZD_RESOURCE_DISCOVERY
|
|
1772
1779
|
)
|
|
1773
1780
|
if will_prompt:
|
|
1774
1781
|
typer.echo(style("Press Enter to accept the value in brackets.", "dim"))
|
|
@@ -1817,6 +1824,7 @@ def cmd_init(
|
|
|
1817
1824
|
workspace,
|
|
1818
1825
|
prompt=_prompt,
|
|
1819
1826
|
echo=_wizard_echo,
|
|
1827
|
+
defaults=defaults,
|
|
1820
1828
|
on_answer=_on_answer,
|
|
1821
1829
|
reconfigure=reconfigure,
|
|
1822
1830
|
force_prompt_fields=force_prompt_fields,
|
|
@@ -2121,8 +2129,13 @@ def cmd_eval_init(
|
|
|
2121
2129
|
if _maybe_explain_leaf(("eval", "init"), explain):
|
|
2122
2130
|
return
|
|
2123
2131
|
|
|
2132
|
+
from agentops.core.config_loader import load_agentops_config
|
|
2124
2133
|
from agentops.pipeline.azd_runner import AzdBackendError
|
|
2125
|
-
from agentops.services.azd_eval_init import
|
|
2134
|
+
from agentops.services.azd_eval_init import (
|
|
2135
|
+
ensure_local_evaluator_model_env,
|
|
2136
|
+
recommend_evaluators_for_config,
|
|
2137
|
+
run_azd_eval_init,
|
|
2138
|
+
)
|
|
2126
2139
|
|
|
2127
2140
|
workspace = directory.resolve()
|
|
2128
2141
|
config_path = _resolve_eval_config_path(config)
|
|
@@ -2130,8 +2143,48 @@ def cmd_eval_init(
|
|
|
2130
2143
|
config_path = workspace / config_path
|
|
2131
2144
|
|
|
2132
2145
|
try:
|
|
2146
|
+
loaded_config = load_agentops_config(config_path)
|
|
2147
|
+
target = loaded_config.resolved_target()
|
|
2148
|
+
if target.kind not in {"foundry_prompt", "foundry_hosted"}:
|
|
2149
|
+
selection = recommend_evaluators_for_config(
|
|
2150
|
+
config_path=config_path,
|
|
2151
|
+
dataset=dataset,
|
|
2152
|
+
)
|
|
2153
|
+
typer.echo(
|
|
2154
|
+
f"{_cli_label('AgentOps eval init')}: local HTTP/model target detected; "
|
|
2155
|
+
"azd eval assets are not required."
|
|
2156
|
+
)
|
|
2157
|
+
typer.echo(f"{_cli_label('Evaluator recommendation')}: {selection.source}")
|
|
2158
|
+
for signal in selection.signals:
|
|
2159
|
+
typer.echo(f" {style('-', 'dim')} {signal}")
|
|
2160
|
+
if selection.names:
|
|
2161
|
+
typer.echo(f"{_cli_label('Evaluators')}: {', '.join(selection.names)}")
|
|
2162
|
+
model_env = ensure_local_evaluator_model_env(
|
|
2163
|
+
workspace=workspace,
|
|
2164
|
+
selection=selection,
|
|
2165
|
+
)
|
|
2166
|
+
if model_env.configured:
|
|
2167
|
+
action = "configured" if model_env.changed_keys else "using"
|
|
2168
|
+
typer.echo(
|
|
2169
|
+
f"{_cli_label('Evaluator model')}: {action} "
|
|
2170
|
+
f"{model_env.deployment} ({model_env.model})"
|
|
2171
|
+
)
|
|
2172
|
+
if model_env.changed_keys and model_env.env_path is not None:
|
|
2173
|
+
typer.echo(
|
|
2174
|
+
f" {style('-', 'dim')} saved "
|
|
2175
|
+
f"{', '.join(model_env.changed_keys)} to "
|
|
2176
|
+
f"{_cli_path(model_env.env_path)}"
|
|
2177
|
+
)
|
|
2178
|
+
elif selection.names and model_env.source != "not needed":
|
|
2179
|
+
typer.echo(
|
|
2180
|
+
f"{_cli_warn('Warning')}: could not auto-discover an evaluator "
|
|
2181
|
+
"model deployment. Set AZURE_OPENAI_DEPLOYMENT and "
|
|
2182
|
+
"AZURE_OPENAI_MODEL_NAME before `agentops eval run`."
|
|
2183
|
+
)
|
|
2184
|
+
typer.echo(f"{_cli_label('Next')}: {_cli_command('agentops eval run')}")
|
|
2185
|
+
return
|
|
2133
2186
|
typer.echo(
|
|
2134
|
-
f"{_cli_label('azd eval
|
|
2187
|
+
f"{_cli_label('azd eval generate')}: checking/generating eval.yaml "
|
|
2135
2188
|
"(this can take a few minutes on the first run)"
|
|
2136
2189
|
)
|
|
2137
2190
|
result = run_azd_eval_init(
|
|
@@ -2148,9 +2201,9 @@ def cmd_eval_init(
|
|
|
2148
2201
|
raise typer.Exit(code=1) from exc
|
|
2149
2202
|
|
|
2150
2203
|
if result.command_ran:
|
|
2151
|
-
typer.echo(f"{_cli_label('azd eval
|
|
2204
|
+
typer.echo(f"{_cli_label('azd eval generate')}: completed")
|
|
2152
2205
|
else:
|
|
2153
|
-
typer.echo(f"{_cli_label('azd eval
|
|
2206
|
+
typer.echo(f"{_cli_label('azd eval generate')}: existing recipe reused")
|
|
2154
2207
|
if result.evaluators:
|
|
2155
2208
|
typer.echo(f"{_cli_label('Evaluator recommendation')}: {result.evaluator_source}")
|
|
2156
2209
|
for signal in result.evaluator_signals:
|
|
@@ -2346,6 +2399,17 @@ def cmd_assert_run(
|
|
|
2346
2399
|
),
|
|
2347
2400
|
),
|
|
2348
2401
|
] = False,
|
|
2402
|
+
cached: Annotated[
|
|
2403
|
+
bool,
|
|
2404
|
+
typer.Option(
|
|
2405
|
+
"--cached",
|
|
2406
|
+
help=(
|
|
2407
|
+
"Reuse cached inference/judge rows from a previous run with the "
|
|
2408
|
+
"same run id. By default ASSERT re-runs inference against the live "
|
|
2409
|
+
"target each time so the gate always exercises the current agent."
|
|
2410
|
+
),
|
|
2411
|
+
),
|
|
2412
|
+
] = False,
|
|
2349
2413
|
explain: Annotated[str | None, typer.Argument(hidden=True)] = None,
|
|
2350
2414
|
) -> None:
|
|
2351
2415
|
"""Invoke the ASSERT (assert-ai) CLI and normalize its results."""
|
|
@@ -2403,6 +2467,7 @@ def cmd_assert_run(
|
|
|
2403
2467
|
resolved_suite: str | None = suite
|
|
2404
2468
|
resolved_run_id: str | None = run_id
|
|
2405
2469
|
fail_on_violations = True
|
|
2470
|
+
subprocess_env: dict[str, str] | None = None
|
|
2406
2471
|
|
|
2407
2472
|
if cfg.assert_run is not None:
|
|
2408
2473
|
if eval_config_path is None:
|
|
@@ -2414,6 +2479,7 @@ def cmd_assert_run(
|
|
|
2414
2479
|
if resolved_run_id is None:
|
|
2415
2480
|
resolved_run_id = cfg.assert_run.run_id
|
|
2416
2481
|
fail_on_violations = cfg.assert_run.fail_on_violations
|
|
2482
|
+
subprocess_env = dict(cfg.assert_run.env)
|
|
2417
2483
|
if no_gate:
|
|
2418
2484
|
fail_on_violations = False
|
|
2419
2485
|
|
|
@@ -2428,6 +2494,12 @@ def cmd_assert_run(
|
|
|
2428
2494
|
typer.echo(
|
|
2429
2495
|
f" suite={resolved_suite or '<auto>'} run_id={resolved_run_id or '<auto>'}"
|
|
2430
2496
|
)
|
|
2497
|
+
if cached:
|
|
2498
|
+
typer.echo(" cache: reusing prior inference/judge rows when available")
|
|
2499
|
+
else:
|
|
2500
|
+
typer.echo(" cache: forcing fresh inference against the live target")
|
|
2501
|
+
|
|
2502
|
+
assert_extra_args = None if cached else ["--force-stage", "inference"]
|
|
2431
2503
|
|
|
2432
2504
|
try:
|
|
2433
2505
|
result = run_assert(
|
|
@@ -2436,6 +2508,8 @@ def cmd_assert_run(
|
|
|
2436
2508
|
results_dir=resolved_results_dir,
|
|
2437
2509
|
suite=resolved_suite,
|
|
2438
2510
|
run_id=resolved_run_id,
|
|
2511
|
+
env=subprocess_env,
|
|
2512
|
+
extra_args=assert_extra_args,
|
|
2439
2513
|
)
|
|
2440
2514
|
except AssertRunnerError as exc:
|
|
2441
2515
|
typer.echo(f"{_cli_error('Error')}: {exc}", err=True)
|
|
@@ -2471,9 +2545,15 @@ def cmd_assert_run(
|
|
|
2471
2545
|
violations = bucket.get("violations", 0)
|
|
2472
2546
|
total = bucket.get("total", 0)
|
|
2473
2547
|
skipped = bucket.get("skipped", 0)
|
|
2474
|
-
marker = _cli_ok("OK") if violations == 0 else _cli_error("VIOLATIONS")
|
|
2475
2548
|
suffix = f" (skipped={skipped})" if skipped else ""
|
|
2476
|
-
|
|
2549
|
+
if violations == 0:
|
|
2550
|
+
clean = max(total - skipped, 0)
|
|
2551
|
+
typer.echo(f" {name}: {clean}/{total} clean{suffix} {_cli_ok('OK')}")
|
|
2552
|
+
else:
|
|
2553
|
+
typer.echo(
|
|
2554
|
+
f" {name}: {violations}/{total} violating{suffix} "
|
|
2555
|
+
f"{_cli_error('VIOLATIONS')}"
|
|
2556
|
+
)
|
|
2477
2557
|
|
|
2478
2558
|
typer.echo("")
|
|
2479
2559
|
typer.echo(_cli_heading("Inspect details"))
|
|
@@ -2666,6 +2746,7 @@ def cmd_redteam_run(
|
|
|
2666
2746
|
err=True,
|
|
2667
2747
|
)
|
|
2668
2748
|
raise typer.Exit(code=1)
|
|
2749
|
+
_apply_http_redteam_defaults(resolved_target, cfg)
|
|
2669
2750
|
|
|
2670
2751
|
if output_path is not None and not output_path.is_absolute():
|
|
2671
2752
|
output_path = (workspace / output_path).resolve()
|
|
@@ -2786,6 +2867,21 @@ def _derive_redteam_target_from_agent(agent: str | None) -> dict[str, Any]:
|
|
|
2786
2867
|
return {"agent": agent}
|
|
2787
2868
|
|
|
2788
2869
|
|
|
2870
|
+
def _apply_http_redteam_defaults(target: dict[str, Any], cfg: AgentOpsConfig) -> None:
|
|
2871
|
+
if "endpoint" not in target:
|
|
2872
|
+
return
|
|
2873
|
+
if cfg.request_field:
|
|
2874
|
+
target.setdefault("request_field", cfg.request_field)
|
|
2875
|
+
if cfg.response_field:
|
|
2876
|
+
target.setdefault("response_field", cfg.response_field)
|
|
2877
|
+
if cfg.response_mode:
|
|
2878
|
+
target.setdefault("response_mode", cfg.response_mode)
|
|
2879
|
+
if cfg.headers:
|
|
2880
|
+
target.setdefault("headers", cfg.headers)
|
|
2881
|
+
if cfg.stream:
|
|
2882
|
+
target.setdefault("stream", cfg.stream.model_dump(exclude_none=True))
|
|
2883
|
+
|
|
2884
|
+
|
|
2789
2885
|
def _run_flat_schema_eval(
|
|
2790
2886
|
*,
|
|
2791
2887
|
config_path: Path,
|
{agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/core/agentops_config.py
RENAMED
|
@@ -462,6 +462,14 @@ class AssertRunConfig(BaseModel):
|
|
|
462
462
|
"results without gating the pipeline."
|
|
463
463
|
),
|
|
464
464
|
)
|
|
465
|
+
env: Dict[str, str] = Field(
|
|
466
|
+
default_factory=dict,
|
|
467
|
+
description=(
|
|
468
|
+
"Optional non-secret environment variables passed only to the "
|
|
469
|
+
"assert-ai subprocess, for example AZURE_API_BASE or "
|
|
470
|
+
"AZURE_API_VERSION."
|
|
471
|
+
),
|
|
472
|
+
)
|
|
465
473
|
|
|
466
474
|
model_config = ConfigDict(extra="forbid")
|
|
467
475
|
|
{agentops_accelerator-0.4.4 → agentops_accelerator-0.4.5}/src/agentops/pipeline/publisher.py
RENAMED
|
@@ -110,12 +110,18 @@ def _build_instance_rows(result: RunResult) -> List[Dict[str, Any]]:
|
|
|
110
110
|
for row in result.rows:
|
|
111
111
|
payload: Dict[str, Any] = {
|
|
112
112
|
"line_number": row.row_index,
|
|
113
|
-
"input": row.input,
|
|
114
|
-
"response": row.response,
|
|
115
|
-
"ground_truth": row.expected or "",
|
|
113
|
+
"inputs.input": row.input,
|
|
114
|
+
"inputs.response": row.response,
|
|
115
|
+
"inputs.ground_truth": row.expected or "",
|
|
116
116
|
}
|
|
117
117
|
for metric in row.metrics:
|
|
118
118
|
if metric.value is not None:
|
|
119
|
-
payload[metric.name] = metric.value
|
|
119
|
+
payload[f"outputs.{metric.name}.score"] = metric.value
|
|
120
|
+
if not metric.name.endswith("_latency_seconds"):
|
|
121
|
+
payload[f"metric.{metric.name}"] = metric.value
|
|
122
|
+
if metric.reason:
|
|
123
|
+
payload[f"outputs.{metric.name}.reason"] = metric.reason
|
|
124
|
+
if metric.error:
|
|
125
|
+
payload[f"outputs.{metric.name}.error"] = metric.error
|
|
120
126
|
rows.append(payload)
|
|
121
127
|
return rows
|
|
@@ -67,6 +67,10 @@ def _credential() -> Any:
|
|
|
67
67
|
_REASONING_MODEL_PREFIXES = ("gpt-5", "o1", "o3", "o4")
|
|
68
68
|
|
|
69
69
|
|
|
70
|
+
def _evaluator_model_name() -> Optional[str]:
|
|
71
|
+
return os.getenv("AZURE_OPENAI_MODEL_NAME") or os.getenv("AZURE_AI_MODEL_NAME")
|
|
72
|
+
|
|
73
|
+
|
|
70
74
|
def _model_config() -> Dict[str, Any]:
|
|
71
75
|
from agentops.utils.azure_endpoints import (
|
|
72
76
|
derive_openai_endpoint_from_project,
|
|
@@ -166,7 +170,9 @@ def load_evaluator(preset: EvaluatorPreset) -> EvaluatorRuntime:
|
|
|
166
170
|
if preset.class_name in _AI_ASSISTED:
|
|
167
171
|
model_config = _model_config()
|
|
168
172
|
init_kwargs["model_config"] = model_config
|
|
169
|
-
if _is_reasoning_model_deployment(
|
|
173
|
+
if _is_reasoning_model_deployment(
|
|
174
|
+
_evaluator_model_name() or model_config.get("azure_deployment")
|
|
175
|
+
):
|
|
170
176
|
init_kwargs["is_reasoning_model"] = True
|
|
171
177
|
if preset.class_name in _SAFETY:
|
|
172
178
|
init_kwargs["azure_ai_project"] = _project_endpoint()
|