agentops-accelerator 0.4.3__tar.gz → 0.4.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.4.3 → agentops_accelerator-0.4.4}/AGENTS.md +5 -1
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/CHANGELOG.md +21 -0
- {agentops_accelerator-0.4.3/src/agentops_accelerator.egg-info → agentops_accelerator-0.4.4}/PKG-INFO +1 -1
- {agentops_accelerator-0.4.3/src/agentops/templates → agentops_accelerator-0.4.4/plugins/agentops}/skills/agentops-eval/SKILL.md +8 -1
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/agentops_config.py +95 -3
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/invocations.py +162 -8
- {agentops_accelerator-0.4.3/plugins/agentops → agentops_accelerator-0.4.4/src/agentops/templates}/skills/agentops-eval/SKILL.md +8 -1
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4/src/agentops_accelerator.egg-info}/PKG-INFO +1 -1
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops_accelerator.egg-info/SOURCES.txt +1 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agentops_config.py +54 -0
- agentops_accelerator-0.4.4/tests/unit/test_http_streaming.py +234 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.claude-plugin/marketplace.json +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.gitattributes +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/actions/azure-oidc-login/action.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/code-quality-py.instructions.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/copilot-instructions.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/dependabot.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/extensions/agentops-skills/extension.mjs +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/plugin/marketplace.json +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/skills/release-management/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/_build.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/agentops-watchdog.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/ci.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/cut-release.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/e2e.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/release.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.github/workflows/staging.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.gitignore +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.pre-commit-config.yaml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.vscode/launch.json +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.vscode/settings.json +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/.vscode/tasks.json +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/CONTRIBUTING.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/LICENSE +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/README.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/SECURITY.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/bundles.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/ci-github-actions.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/concepts.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/doctor-checks.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/doctor-explained.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/e2e-live-architecture.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/e2e-live-setup.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/foundry-evaluation-sdk-built-in-evaluators.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/how-it-works.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/media/agentops-diagrams.vsdx +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/media/foundry-control-plane.png +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/release-process.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/tutorial-end-to-end.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/tutorial-hosted-agent-quickstart.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/docs/tutorial-prompt-agent.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/examples/flat-quickstart/README.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/examples/flat-quickstart/agentops.yaml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/examples/flat-quickstart/dataset.jsonl +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/icon.png +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/infra/e2e/agent-app/Dockerfile +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/infra/e2e/agent-app/app.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/infra/e2e/agent-app/requirements.txt +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/infra/e2e/bootstrap.bicep +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/infra/e2e/bootstrap.parameters.example.json +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/infra/e2e/perrun.bicep +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/launch.json +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/media/foundry.svg +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/media/quickstart.gif +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/.vscodeignore +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/LICENSE +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/README.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/package.json +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/plugin.json +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/skills/agentops-agent/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/skills/agentops-config/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/skills/agentops-dataset/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/skills/agentops-governance/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/skills/agentops-report/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/plugins/agentops/skills/agentops-workflow/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/pyproject.toml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/create_support_agent.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/cut-release.ps1 +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/cut-release.sh +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_aggregate_summary.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_data/basic.jsonl +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_data/rag.jsonl +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_data/tools.jsonl +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_demo.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_hosted_agent.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_make_transcript.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/e2e_render_config.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/release.ps1 +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/release.sh +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/setup-e2e-new-tenant.ps1 +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/staging.ps1 +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/staging.sh +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/sync-skills.ps1 +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/scripts/sync-skills.sh +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/setup.cfg +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/__main__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/_legacy_ids.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/analyzer.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/_rbac_authorization.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/catalog.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/errors.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/foundry_config.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/governance.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/latency.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/observability.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/opex.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/opex_workspace.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture_rules/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture_rules/content_filter.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture_rules/diagnostics.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture_rules/local_auth.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture_rules/managed_identity.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/posture_rules/network.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/rbac_openai_data_plane.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/regression.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/release_readiness.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/safety.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/checks/spec_conformance.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/cockpit.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/config.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/findings.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/history.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/knowledge/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/knowledge/waf-checklist.csv +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_base.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_bundle_rule.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_client.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_dataset_rules.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_engine.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_prompt_rules.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/llm_assist/_spec_rules.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/production_telemetry.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/report.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/server/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/server/app.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/server/auth.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/server/chat.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/server/protocol.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/_credentials.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/azure_monitor.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/azure_resources.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/foundry_control.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/results_history.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/spec_detectors/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/spec_detectors/_base.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/spec_detectors/agents_md.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/sources/spec_detectors/spec_kit.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/agent/time_range.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/cli/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/cli/app.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/azd_eval.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/config_loader.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/evaluators.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/governance.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/release_evidence.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/results.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/mcp/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/mcp/server.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/azd_runner.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/cloud_results.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/cloud_runner.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/comparison.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/diagnostics.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/official_eval.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/orchestrator.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/prompt_deploy.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/publisher.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/reporter.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/runtime.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/thresholds.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/assert_runner.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/azd_eval_init.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/cicd.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/eval_analysis.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/evidence_pack.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/initializer.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/preflight.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/redteam_runner.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/setup_wizard.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/skills.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/trace_promotion.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/services/workflow_analysis.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/.gitignore +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/agent-server/Dockerfile +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/agent-server/README.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/agent-server/main.bicep +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/agent.yaml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/agentops.yaml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/foundry.svg +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/icon.png +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev-azd.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-dev.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod-azd.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prod.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-prompt-agent.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa-azd.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-deploy-qa.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-pr-prompt-agent.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-pr.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/pipelines/azuredevops/agentops-watchdog.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/project.gitignore +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/sample-traces.jsonl +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/skills/agentops-agent/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/skills/agentops-config/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/skills/agentops-dataset/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/skills/agentops-governance/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/skills/agentops-report/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/skills/agentops-workflow/SKILL.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/smoke.jsonl +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/waf-checklist.README.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/waf-checklist.csv +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-dev-azd.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-dev.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-prod-azd.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-prod.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-prompt-agent.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-qa-azd.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-deploy-qa.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-pr-prompt-agent.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-pr.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/templates/workflows/agentops-watchdog.yml +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/__init__.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/azd_env.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/azure_endpoints.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/colors.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/dotenv_loader.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/foundry_discovery.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/logging.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/telemetry.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/utils/yaml.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops_accelerator.egg-info/dependency_links.txt +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops_accelerator.egg-info/entry_points.txt +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops_accelerator.egg-info/requires.txt +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops_accelerator.egg-info/top_level.txt +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/TESTING.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/fixtures/fake_adapter.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/fixtures/fake_eval_runner.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/integration/.gitkeep +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/integration/test_cli_flat_schema.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/integration/test_pipeline_smoke.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/.gitkeep +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_analyzer.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_categories.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_errors.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_foundry_config.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_observability.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_opex.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_opex_workspace.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_rbac_openai_data_plane.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_regression.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_safety.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_checks_spec_conformance.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_cli.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_config.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_findings.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_history.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_opex_workspace_check.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_posture_rules.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_results_history.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agent_server.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_assert_and_redteam_runners.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_azd_env.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_azd_eval.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_azd_eval_init.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_azd_runner.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_azure_endpoints.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_azure_resources_discovery.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cicd.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cli_cockpit_connection_summary.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cli_cockpit_port_conflict.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cli_commands.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cli_explain.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cloud_results.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cloud_runner.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_cockpit.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_diagnostics.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_doctor_catalog.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_doctor_cli_explain.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_dotenv_loader.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_e2e_render.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_eval_analysis.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_eval_run_grader_errors.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_evaluators.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_foundry_discovery.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_governance.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_init_command.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_initializer.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_invocations.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_knowledge_loader.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_llm_assist.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_llm_assist_spec_rules.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_mcp_server.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_official_eval.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_pipeline_publisher.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_pipeline_reporter.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_preflight.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_production_telemetry.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_prompt_deploy.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_release_evidence.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_runtime_conversation.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_runtime_model_config.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_setup_wizard.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_shared_credentials.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_skills.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_skills_sync.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_telemetry.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_time_range.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_trace_promotion.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_workflow_analysis.py +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tombstones/vscode/CDN_DEPRECATION_REQUEST.md +0 -0
- {agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/uv.lock +0 -0
|
@@ -335,7 +335,11 @@ Full schema:
|
|
|
335
335
|
| `response_field` | no | HTTP / invocations only. Dot-path to extract the response text (default: `text`). |
|
|
336
336
|
| `tool_calls_field` | no | HTTP / invocations only. Dot-path to extract tool calls for agent-workflow evaluators. |
|
|
337
337
|
| `headers` | no | HTTP / invocations only. Static extra HTTP headers. |
|
|
338
|
-
| `auth_header_env` | no | HTTP / invocations only. Environment variable that holds
|
|
338
|
+
| `auth_header_env` | no | HTTP / invocations only. Environment variable that holds the auth token. |
|
|
339
|
+
| `auth_header_name` | no | HTTP / invocations only. Header name for the auth token (default: `Authorization`). |
|
|
340
|
+
| `auth_value_template` | no | HTTP / invocations only. Template for the auth header value; `{token}` is replaced by the `auth_header_env` value (default: `Bearer {token}`). |
|
|
341
|
+
| `response_mode` | no | HTTP / invocations only. `json` (default, single `json.loads` of the body), `sse` (parse `data:` lines), or `text` (concatenate raw streamed text). |
|
|
342
|
+
| `stream` | no | HTTP / invocations only. Streaming aggregation block for `response_mode: sse|text`: `text_field` (dot-path to token text in JSON `data:` lines), `done_marker` (stop token, e.g. `[DONE]`), `strip_leading_token` (drop the first whitespace-delimited token, e.g. a `conversation_id` prefix). |
|
|
339
343
|
| `assert_path` | no | Optional ASSERT policy/results file or directory referenced by Doctor/evidence. AgentOps does not execute ASSERT. |
|
|
340
344
|
| `acs_path` | no | Optional Agent Control Specification contract file or directory referenced by Doctor/evidence. AgentOps does not apply ACS controls. |
|
|
341
345
|
| `redteam_path` | no | Optional red-team plan/results evidence path. AgentOps records metadata and never exposes payload text. |
|
|
@@ -5,6 +5,27 @@ This format follows [Keep a Changelog](https://keepachangelog.com/) and adheres
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.4.4] - 2026-06-18
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Streaming HTTP targets.** The `http_json` target now understands streaming
|
|
12
|
+
responses so AgentOps can evaluate SSE/streaming agents (such as the
|
|
13
|
+
gpt-rag-orchestrator `/orchestrator` endpoint) directly, without a manual
|
|
14
|
+
adapter. A new `response_mode: json|sse|text` field selects the response
|
|
15
|
+
parser (`json` is the default and preserves the existing single-`json.loads`
|
|
16
|
+
behavior exactly). For `sse`/`text`, an optional `stream` block configures
|
|
17
|
+
aggregation: `text_field` (dotted path to the token text when each SSE
|
|
18
|
+
`data:` line is JSON), `done_marker` (stop token, e.g. `[DONE]`), and
|
|
19
|
+
`strip_leading_token` (drop the leading whitespace-delimited token, e.g. the
|
|
20
|
+
orchestrator's `conversation_id` prefix). The auth header is now configurable
|
|
21
|
+
via `auth_header_name` (default `Authorization`) and `auth_value_template`
|
|
22
|
+
(default `Bearer {token}`, where `{token}` is replaced by the
|
|
23
|
+
`auth_header_env` value), so targets gated by a shared secret such as
|
|
24
|
+
`X-API-KEY` are supported without hardcoding the secret in `agentops.yaml`.
|
|
25
|
+
Streaming uses the same stdlib (`urllib`) transport and 3-try backoff as the
|
|
26
|
+
JSON path. When a JSON parse fails on a `text/event-stream` response, the
|
|
27
|
+
error now suggests setting `response_mode: sse|text`.
|
|
28
|
+
|
|
8
29
|
## [0.4.3] - 2026-06-17
|
|
9
30
|
|
|
10
31
|
### Added
|
|
@@ -301,4 +301,11 @@ dataset reference.
|
|
|
301
301
|
```
|
|
302
302
|
- For HTTP/JSON agents that need auth, set
|
|
303
303
|
`auth_header_env: MY_TOKEN_VAR` and AgentOps adds
|
|
304
|
-
`Authorization: Bearer $MY_TOKEN_VAR`.
|
|
304
|
+
`Authorization: Bearer $MY_TOKEN_VAR`. For a shared-secret gate, override the
|
|
305
|
+
header with `auth_header_name: X-API-KEY` and `auth_value_template: "{token}"`.
|
|
306
|
+
- For streaming HTTP agents (e.g. an SSE `text/event-stream` endpoint), set
|
|
307
|
+
`response_mode: sse` (each `data:` line) or `response_mode: text` (raw
|
|
308
|
+
streamed text). Use the optional `stream:` block to tune aggregation:
|
|
309
|
+
`text_field` (dot-path to the token text when `data:` lines are JSON),
|
|
310
|
+
`done_marker` (e.g. `[DONE]`), and `strip_leading_token: true` (drop a leading
|
|
311
|
+
`conversation_id` prefix). `response_mode: json` (default) is unchanged.
|
{agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/core/agentops_config.py
RENAMED
|
@@ -39,6 +39,14 @@ from pydantic import BaseModel, ConfigDict, Field, field_validator, model_valida
|
|
|
39
39
|
#: Wire protocol for hosted / HTTP targets.
|
|
40
40
|
Protocol = Literal["responses", "invocations", "http-json"]
|
|
41
41
|
|
|
42
|
+
#: How AgentOps reads an ``http-json`` response body.
|
|
43
|
+
#:
|
|
44
|
+
#: - ``json`` (default): parse a single JSON document. Preserves the exact
|
|
45
|
+
#: behavior of every existing ``http_json`` config.
|
|
46
|
+
#: - ``sse``: parse a Server-Sent Events body, concatenating ``data:`` lines.
|
|
47
|
+
#: - ``text``: concatenate a raw streamed text body.
|
|
48
|
+
ResponseMode = Literal["json", "sse", "text"]
|
|
49
|
+
|
|
42
50
|
#: How thresholds compare against measured metric values.
|
|
43
51
|
Criteria = Literal[">=", ">", "<=", "<", "==", "true", "false"]
|
|
44
52
|
|
|
@@ -540,6 +548,41 @@ class RedTeamRunConfig(BaseModel):
|
|
|
540
548
|
model_config = ConfigDict(extra="forbid")
|
|
541
549
|
|
|
542
550
|
|
|
551
|
+
class StreamConfig(BaseModel):
|
|
552
|
+
"""Streaming aggregation options for ``http-json`` targets.
|
|
553
|
+
|
|
554
|
+
Only meaningful when ``response_mode`` is ``"sse"`` or ``"text"``. These
|
|
555
|
+
fields control how a streamed response body is parsed and reassembled into
|
|
556
|
+
a single answer string.
|
|
557
|
+
"""
|
|
558
|
+
|
|
559
|
+
text_field: Optional[str] = Field(
|
|
560
|
+
None,
|
|
561
|
+
description=(
|
|
562
|
+
"For SSE where each 'data:' line is a JSON object, the dotted path "
|
|
563
|
+
"to the token text (e.g. 'delta.content'). Omit (None) when each "
|
|
564
|
+
"'data:' line is already raw text."
|
|
565
|
+
),
|
|
566
|
+
)
|
|
567
|
+
done_marker: Optional[str] = Field(
|
|
568
|
+
None,
|
|
569
|
+
description=(
|
|
570
|
+
"Optional sentinel (e.g. '[DONE]'); aggregation stops when a "
|
|
571
|
+
"'data:' line equals this value."
|
|
572
|
+
),
|
|
573
|
+
)
|
|
574
|
+
strip_leading_token: bool = Field(
|
|
575
|
+
False,
|
|
576
|
+
description=(
|
|
577
|
+
"Drop the first whitespace-delimited token from the aggregated "
|
|
578
|
+
"text. Use for endpoints that prefix the stream with an id (e.g. "
|
|
579
|
+
"the gpt-rag orchestrator emits '<conversation_id> ' first)."
|
|
580
|
+
),
|
|
581
|
+
)
|
|
582
|
+
|
|
583
|
+
model_config = ConfigDict(extra="forbid")
|
|
584
|
+
|
|
585
|
+
|
|
543
586
|
# ---------------------------------------------------------------------------
|
|
544
587
|
# Top-level config
|
|
545
588
|
# ---------------------------------------------------------------------------
|
|
@@ -600,7 +643,20 @@ class AgentOpsConfig(BaseModel):
|
|
|
600
643
|
|
|
601
644
|
``headers`` / ``auth_header_env``
|
|
602
645
|
Optional HTTP request configuration for ``http-json`` and
|
|
603
|
-
``invocations`` targets.
|
|
646
|
+
``invocations`` targets. ``auth_header_env`` names the environment
|
|
647
|
+
variable that holds the secret.
|
|
648
|
+
|
|
649
|
+
``response_mode`` / ``stream``
|
|
650
|
+
``http-json`` only. ``response_mode`` selects how the response body is
|
|
651
|
+
read: ``"json"`` (default, single JSON document), ``"sse"`` (Server-Sent
|
|
652
|
+
Events), or ``"text"`` (raw streamed text). The ``stream`` block tunes
|
|
653
|
+
SSE/text aggregation (``text_field``, ``done_marker``,
|
|
654
|
+
``strip_leading_token``).
|
|
655
|
+
|
|
656
|
+
``auth_header_name`` / ``auth_value_template``
|
|
657
|
+
``http-json`` only. Decouple the auth header from the default
|
|
658
|
+
``Authorization: Bearer {token}``. For a shared-secret endpoint set
|
|
659
|
+
``auth_header_name: X-API-KEY`` and ``auth_value_template: "{token}"``.
|
|
604
660
|
|
|
605
661
|
``evaluators``
|
|
606
662
|
Optional escape hatch: explicit list of evaluator names that overrides
|
|
@@ -696,6 +752,37 @@ class AgentOpsConfig(BaseModel):
|
|
|
696
752
|
tool_calls_field: Optional[str] = None
|
|
697
753
|
headers: Dict[str, str] = Field(default_factory=dict)
|
|
698
754
|
auth_header_env: Optional[str] = None
|
|
755
|
+
response_mode: ResponseMode = Field(
|
|
756
|
+
"json",
|
|
757
|
+
description=(
|
|
758
|
+
"How to read the HTTP/JSON response body. 'json' (default) parses "
|
|
759
|
+
"a single JSON document and preserves existing behavior. 'sse' "
|
|
760
|
+
"parses Server-Sent Events 'data:' lines; 'text' concatenates a "
|
|
761
|
+
"raw streamed text body. Only valid for http-json targets."
|
|
762
|
+
),
|
|
763
|
+
)
|
|
764
|
+
stream: Optional[StreamConfig] = Field(
|
|
765
|
+
None,
|
|
766
|
+
description=(
|
|
767
|
+
"Streaming aggregation options, used only when response_mode is "
|
|
768
|
+
"'sse' or 'text'."
|
|
769
|
+
),
|
|
770
|
+
)
|
|
771
|
+
auth_header_name: Optional[str] = Field(
|
|
772
|
+
None,
|
|
773
|
+
description=(
|
|
774
|
+
"HTTP header that carries the secret read from auth_header_env. "
|
|
775
|
+
"Defaults to 'Authorization' when unset."
|
|
776
|
+
),
|
|
777
|
+
)
|
|
778
|
+
auth_value_template: Optional[str] = Field(
|
|
779
|
+
None,
|
|
780
|
+
description=(
|
|
781
|
+
"Template for the auth header value; '{token}' is replaced by the "
|
|
782
|
+
"auth_header_env value. Defaults to 'Bearer {token}' when unset. "
|
|
783
|
+
"Use '{token}' alone for a raw shared-secret header like X-API-KEY."
|
|
784
|
+
),
|
|
785
|
+
)
|
|
699
786
|
|
|
700
787
|
evaluators: Optional[List[EvaluatorOverride]] = None
|
|
701
788
|
rubrics: List[RubricConfig] = Field(
|
|
@@ -850,6 +937,10 @@ class AgentOpsConfig(BaseModel):
|
|
|
850
937
|
or self.tool_calls_field
|
|
851
938
|
or self.headers
|
|
852
939
|
or self.auth_header_env
|
|
940
|
+
or self.response_mode != "json"
|
|
941
|
+
or self.stream is not None
|
|
942
|
+
or self.auth_header_name
|
|
943
|
+
or self.auth_value_template
|
|
853
944
|
):
|
|
854
945
|
# Foundry hosted (responses/invocations) defines its own wire
|
|
855
946
|
# format. HTTP-only request/response shaping is invalid there.
|
|
@@ -859,8 +950,9 @@ class AgentOpsConfig(BaseModel):
|
|
|
859
950
|
else:
|
|
860
951
|
raise ValueError(
|
|
861
952
|
"request_field / response_field / tool_calls_field / "
|
|
862
|
-
"headers / auth_header_env
|
|
863
|
-
"
|
|
953
|
+
"headers / auth_header_env / response_mode / stream / "
|
|
954
|
+
"auth_header_name / auth_value_template are only valid for "
|
|
955
|
+
"HTTP/JSON or Foundry hosted (invocations) targets"
|
|
864
956
|
)
|
|
865
957
|
return self
|
|
866
958
|
|
{agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/src/agentops/pipeline/invocations.py
RENAMED
|
@@ -166,6 +166,130 @@ def _http_request_json(
|
|
|
166
166
|
return json.loads(payload)
|
|
167
167
|
|
|
168
168
|
|
|
169
|
+
def _http_request_stream(
|
|
170
|
+
*,
|
|
171
|
+
method: str,
|
|
172
|
+
url: str,
|
|
173
|
+
headers: Dict[str, str],
|
|
174
|
+
body: Optional[Dict[str, Any]] = None,
|
|
175
|
+
timeout: float,
|
|
176
|
+
) -> str:
|
|
177
|
+
"""POST and return the full streamed response body as decoded text.
|
|
178
|
+
|
|
179
|
+
Uses the same 3-try backoff policy and tenant-mismatch guidance as
|
|
180
|
+
:func:`_http_request_json`. The response is read to completion (streamed
|
|
181
|
+
endpoints used for evaluation emit a bounded answer) and returned verbatim
|
|
182
|
+
so :func:`_aggregate_stream` can reassemble it. stdlib ``urllib`` only.
|
|
183
|
+
"""
|
|
184
|
+
encoded = json.dumps(body or {}).encode("utf-8") if method != "GET" else None
|
|
185
|
+
request = urllib.request.Request(
|
|
186
|
+
url=url, data=encoded, method=method, headers=headers
|
|
187
|
+
)
|
|
188
|
+
last_exc: Optional[BaseException] = None
|
|
189
|
+
for attempt in range(1, 4):
|
|
190
|
+
try:
|
|
191
|
+
with urllib.request.urlopen(request, timeout=timeout) as response: # noqa: S310
|
|
192
|
+
# HTTPResponse is iterable line-by-line; joining restores the
|
|
193
|
+
# full body (including newlines) for both sse and text modes.
|
|
194
|
+
chunks = [line.decode("utf-8", errors="replace") for line in response]
|
|
195
|
+
return "".join(chunks)
|
|
196
|
+
except urllib.error.HTTPError as exc:
|
|
197
|
+
detail = exc.read().decode("utf-8", errors="replace") if exc.fp else ""
|
|
198
|
+
transient = exc.code >= 500 or exc.code == 429
|
|
199
|
+
if transient and attempt < 3:
|
|
200
|
+
time.sleep(2 ** attempt)
|
|
201
|
+
last_exc = exc
|
|
202
|
+
continue
|
|
203
|
+
message = f"HTTP {exc.code} from {url}: {detail or exc.reason}"
|
|
204
|
+
raise RuntimeError(with_tenant_mismatch_guidance(message)) from exc
|
|
205
|
+
except urllib.error.URLError as exc:
|
|
206
|
+
if attempt < 3:
|
|
207
|
+
time.sleep(2 ** attempt)
|
|
208
|
+
last_exc = exc
|
|
209
|
+
continue
|
|
210
|
+
raise
|
|
211
|
+
else: # pragma: no cover - loop exits via break/raise
|
|
212
|
+
raise RuntimeError(f"HTTP request to {url} failed: {last_exc!r}")
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def _strip_leading_token(text: str) -> str:
|
|
216
|
+
"""Drop the first whitespace-delimited token from ``text``.
|
|
217
|
+
|
|
218
|
+
Used to remove the conversation-id prefix the gpt-rag orchestrator emits
|
|
219
|
+
as its first streamed chunk (``"<conversation_id> <answer...>"``).
|
|
220
|
+
"""
|
|
221
|
+
stripped = text.strip()
|
|
222
|
+
parts = stripped.split(None, 1)
|
|
223
|
+
return parts[1] if len(parts) == 2 else ""
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
def _aggregate_stream(
|
|
227
|
+
response_mode: str,
|
|
228
|
+
body: str,
|
|
229
|
+
stream_cfg: Optional[Any],
|
|
230
|
+
) -> str:
|
|
231
|
+
"""Reassemble a streamed response body into a single answer string.
|
|
232
|
+
|
|
233
|
+
``text`` mode concatenates the whole body. ``sse`` mode parses ``data:``
|
|
234
|
+
lines, optionally JSON-decoding each line and extracting ``text_field``,
|
|
235
|
+
stopping at ``done_marker``, and raising on an ``event: error`` frame.
|
|
236
|
+
"""
|
|
237
|
+
strip_leading = bool(getattr(stream_cfg, "strip_leading_token", False))
|
|
238
|
+
|
|
239
|
+
if response_mode == "text":
|
|
240
|
+
text = body or ""
|
|
241
|
+
return _strip_leading_token(text) if strip_leading else text
|
|
242
|
+
|
|
243
|
+
# SSE mode.
|
|
244
|
+
text_field = getattr(stream_cfg, "text_field", None)
|
|
245
|
+
done_marker = getattr(stream_cfg, "done_marker", None)
|
|
246
|
+
|
|
247
|
+
pieces: List[str] = []
|
|
248
|
+
saw_error = False
|
|
249
|
+
for raw_line in (body or "").splitlines():
|
|
250
|
+
line = raw_line.rstrip("\r")
|
|
251
|
+
stripped = line.strip()
|
|
252
|
+
if not stripped:
|
|
253
|
+
# Blank line closes the current SSE frame.
|
|
254
|
+
saw_error = False
|
|
255
|
+
continue
|
|
256
|
+
if stripped.startswith("event:"):
|
|
257
|
+
if stripped[len("event:"):].strip() == "error":
|
|
258
|
+
saw_error = True
|
|
259
|
+
continue
|
|
260
|
+
if not stripped.startswith("data:"):
|
|
261
|
+
# Ignore id:/retry:/comment lines.
|
|
262
|
+
continue
|
|
263
|
+
data = line.split("data:", 1)[1]
|
|
264
|
+
if data.startswith(" "):
|
|
265
|
+
# SSE strips a single leading space after the field colon.
|
|
266
|
+
data = data[1:]
|
|
267
|
+
if done_marker is not None and data == done_marker:
|
|
268
|
+
break
|
|
269
|
+
if saw_error:
|
|
270
|
+
raise RuntimeError(
|
|
271
|
+
f"streaming endpoint returned an error event: {data}"
|
|
272
|
+
)
|
|
273
|
+
if text_field:
|
|
274
|
+
try:
|
|
275
|
+
parsed = json.loads(data)
|
|
276
|
+
except json.JSONDecodeError:
|
|
277
|
+
pieces.append(data)
|
|
278
|
+
continue
|
|
279
|
+
token = _dot_path(parsed, text_field)
|
|
280
|
+
if token is None:
|
|
281
|
+
continue
|
|
282
|
+
pieces.append(
|
|
283
|
+
token if isinstance(token, str)
|
|
284
|
+
else json.dumps(token, ensure_ascii=False)
|
|
285
|
+
)
|
|
286
|
+
else:
|
|
287
|
+
pieces.append(data)
|
|
288
|
+
|
|
289
|
+
text = "".join(pieces)
|
|
290
|
+
return _strip_leading_token(text) if strip_leading else text
|
|
291
|
+
|
|
292
|
+
|
|
169
293
|
def _dot_path(payload: Any, path: str) -> Any:
|
|
170
294
|
"""Resolve ``a.b.c`` or ``a.0.b`` against a JSON-like object."""
|
|
171
295
|
current = payload
|
|
@@ -468,19 +592,49 @@ def _invoke_http_json(
|
|
|
468
592
|
f"auth_header_env {config.auth_header_env!r} is set in config but "
|
|
469
593
|
"the environment variable is empty"
|
|
470
594
|
)
|
|
471
|
-
|
|
595
|
+
# Default to today's behavior (Authorization: Bearer <token>) so
|
|
596
|
+
# existing configs are byte-for-byte unchanged; allow an arbitrary
|
|
597
|
+
# header name/value template for shared-secret gates (e.g. X-API-KEY).
|
|
598
|
+
header_name = config.auth_header_name or "Authorization"
|
|
599
|
+
value_template = config.auth_value_template or "Bearer {token}"
|
|
600
|
+
headers[header_name] = value_template.replace("{token}", token)
|
|
472
601
|
|
|
473
602
|
request_field = config.request_field or "message"
|
|
474
603
|
body: Dict[str, Any] = {request_field: _row_input(row)}
|
|
475
604
|
|
|
605
|
+
if config.response_mode in ("sse", "text"):
|
|
606
|
+
started = time.perf_counter()
|
|
607
|
+
raw_body = _http_request_stream(
|
|
608
|
+
method="POST",
|
|
609
|
+
url=target.url,
|
|
610
|
+
headers=headers,
|
|
611
|
+
body=body,
|
|
612
|
+
timeout=timeout,
|
|
613
|
+
)
|
|
614
|
+
elapsed = time.perf_counter() - started
|
|
615
|
+
aggregated = _aggregate_stream(config.response_mode, raw_body, config.stream)
|
|
616
|
+
return InvocationResult(
|
|
617
|
+
response=aggregated.strip(),
|
|
618
|
+
latency_seconds=elapsed,
|
|
619
|
+
tool_calls=None,
|
|
620
|
+
)
|
|
621
|
+
|
|
476
622
|
started = time.perf_counter()
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
623
|
+
try:
|
|
624
|
+
payload = _http_request_json(
|
|
625
|
+
method="POST",
|
|
626
|
+
url=target.url,
|
|
627
|
+
headers=headers,
|
|
628
|
+
body=body,
|
|
629
|
+
timeout=timeout,
|
|
630
|
+
)
|
|
631
|
+
except json.JSONDecodeError as exc:
|
|
632
|
+
raise RuntimeError(
|
|
633
|
+
f"HTTP/JSON response from {target.url} was not valid JSON. If this "
|
|
634
|
+
"endpoint streams Server-Sent Events or raw text (for example "
|
|
635
|
+
"Content-Type: text/event-stream), set response_mode: sse or "
|
|
636
|
+
"response_mode: text in agentops.yaml."
|
|
637
|
+
) from exc
|
|
484
638
|
elapsed = time.perf_counter() - started
|
|
485
639
|
|
|
486
640
|
response_path = config.response_field or "text"
|
|
@@ -301,4 +301,11 @@ dataset reference.
|
|
|
301
301
|
```
|
|
302
302
|
- For HTTP/JSON agents that need auth, set
|
|
303
303
|
`auth_header_env: MY_TOKEN_VAR` and AgentOps adds
|
|
304
|
-
`Authorization: Bearer $MY_TOKEN_VAR`.
|
|
304
|
+
`Authorization: Bearer $MY_TOKEN_VAR`. For a shared-secret gate, override the
|
|
305
|
+
header with `auth_header_name: X-API-KEY` and `auth_value_template: "{token}"`.
|
|
306
|
+
- For streaming HTTP agents (e.g. an SSE `text/event-stream` endpoint), set
|
|
307
|
+
`response_mode: sse` (each `data:` line) or `response_mode: text` (raw
|
|
308
|
+
streamed text). Use the optional `stream:` block to tune aggregation:
|
|
309
|
+
`text_field` (dot-path to the token text when `data:` lines are JSON),
|
|
310
|
+
`done_marker` (e.g. `[DONE]`), and `strip_leading_token: true` (drop a leading
|
|
311
|
+
`conversation_id` prefix). `response_mode: json` (default) is unchanged.
|
|
@@ -291,6 +291,7 @@ tests/unit/test_eval_run_grader_errors.py
|
|
|
291
291
|
tests/unit/test_evaluators.py
|
|
292
292
|
tests/unit/test_foundry_discovery.py
|
|
293
293
|
tests/unit/test_governance.py
|
|
294
|
+
tests/unit/test_http_streaming.py
|
|
294
295
|
tests/unit/test_init_command.py
|
|
295
296
|
tests/unit/test_initializer.py
|
|
296
297
|
tests/unit/test_invocations.py
|
{agentops_accelerator-0.4.3 → agentops_accelerator-0.4.4}/tests/unit/test_agentops_config.py
RENAMED
|
@@ -484,6 +484,60 @@ class TestAgentOpsConfig:
|
|
|
484
484
|
request_field="message",
|
|
485
485
|
)
|
|
486
486
|
|
|
487
|
+
def test_streaming_fields_allowed_for_http_target(self) -> None:
|
|
488
|
+
cfg = AgentOpsConfig(
|
|
489
|
+
version=1,
|
|
490
|
+
agent="https://app.example.com/orchestrator",
|
|
491
|
+
dataset="./qa.jsonl",
|
|
492
|
+
request_field="ask",
|
|
493
|
+
response_mode="text",
|
|
494
|
+
stream={"strip_leading_token": True}, # type: ignore[arg-type]
|
|
495
|
+
auth_header_env="ORCH_KEY",
|
|
496
|
+
auth_header_name="X-API-KEY",
|
|
497
|
+
auth_value_template="{token}",
|
|
498
|
+
)
|
|
499
|
+
assert cfg.response_mode == "text"
|
|
500
|
+
assert cfg.stream is not None
|
|
501
|
+
assert cfg.stream.strip_leading_token is True
|
|
502
|
+
assert cfg.auth_header_name == "X-API-KEY"
|
|
503
|
+
assert cfg.auth_value_template == "{token}"
|
|
504
|
+
|
|
505
|
+
def test_response_mode_defaults_to_json(self) -> None:
|
|
506
|
+
cfg = AgentOpsConfig(
|
|
507
|
+
version=1,
|
|
508
|
+
agent="https://app.example.com/chat",
|
|
509
|
+
dataset="./qa.jsonl",
|
|
510
|
+
)
|
|
511
|
+
assert cfg.response_mode == "json"
|
|
512
|
+
assert cfg.stream is None
|
|
513
|
+
|
|
514
|
+
def test_response_mode_rejected_for_prompt_agent(self) -> None:
|
|
515
|
+
with pytest.raises(ValidationError, match="HTTP/JSON"):
|
|
516
|
+
AgentOpsConfig(
|
|
517
|
+
version=1,
|
|
518
|
+
agent="my-rag:3",
|
|
519
|
+
dataset="./qa.jsonl",
|
|
520
|
+
response_mode="sse",
|
|
521
|
+
)
|
|
522
|
+
|
|
523
|
+
def test_stream_block_rejected_for_model_target(self) -> None:
|
|
524
|
+
with pytest.raises(ValidationError, match="HTTP/JSON"):
|
|
525
|
+
AgentOpsConfig(
|
|
526
|
+
version=1,
|
|
527
|
+
agent="model:gpt-4o",
|
|
528
|
+
dataset="./qa.jsonl",
|
|
529
|
+
stream={"done_marker": "[DONE]"}, # type: ignore[arg-type]
|
|
530
|
+
)
|
|
531
|
+
|
|
532
|
+
def test_auth_header_name_rejected_for_prompt_agent(self) -> None:
|
|
533
|
+
with pytest.raises(ValidationError, match="HTTP/JSON"):
|
|
534
|
+
AgentOpsConfig(
|
|
535
|
+
version=1,
|
|
536
|
+
agent="my-rag:3",
|
|
537
|
+
dataset="./qa.jsonl",
|
|
538
|
+
auth_header_name="X-API-KEY",
|
|
539
|
+
)
|
|
540
|
+
|
|
487
541
|
def test_evaluators_override(self) -> None:
|
|
488
542
|
cfg = AgentOpsConfig(
|
|
489
543
|
version=1,
|