agentharnessapi 0.1.0__tar.gz → 0.1.1.dev2__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.
- agentharnessapi-0.1.1.dev2/.github/workflows/publish.yml +139 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/.gitignore +3 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/CLAUDE.md +14 -17
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/CONTRIBUTING.md +1 -1
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/PKG-INFO +14 -8
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/PROJECT.md +2 -2
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/README.md +11 -7
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/ROADMAP.md +1 -1
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/getting-started/examples.md +4 -4
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/getting-started/installation.md +9 -3
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/architecture.md +1 -1
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/claude-agent-sdk-extension-plan.md +9 -4
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/extending.md +1 -1
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/extensions.md +11 -3
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/modules.md +1 -1
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/13_claude_agent_sdk/app.py +4 -3
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/27_multi_agent_pipeline/app.py +1 -1
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/README.md +5 -5
- agentharnessapi-0.1.1.dev2/extensions/agenticapi-claude-agent-sdk/README.md +20 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/examples/01_simple_query.py +2 -3
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/examples/02_with_agenticapi_tools.py +2 -3
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/examples/03_with_audit.py +2 -3
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/exceptions.py +1 -1
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/pyproject.toml +22 -2
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/__init__.py +4 -1
- agentharnessapi-0.1.1.dev2/src/agenticapi/_version.py +24 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/init.py +1 -1
- agentharnessapi-0.1.1.dev2/src/agenticapi/ext/__init__.py +8 -0
- agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/__init__.py +75 -0
- agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/_imports.py +70 -0
- agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/backend.py +171 -0
- agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/exceptions.py +57 -0
- agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/messages.py +327 -0
- agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/options.py +72 -0
- agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/permissions.py +346 -0
- agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/runner.py +331 -0
- agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/tools.py +161 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/compat/mcp.py +3 -3
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/e2e/test_examples.py +3 -3
- agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/conftest.py +303 -0
- agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/test_backend.py +87 -0
- agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/test_imports.py +49 -0
- agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/test_messages.py +147 -0
- agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/test_permissions.py +108 -0
- agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/test_runner.py +171 -0
- agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/test_tools.py +99 -0
- agentharnessapi-0.1.1.dev2/tests/unit/runtime/__init__.py +0 -0
- agentharnessapi-0.1.1.dev2/tests/unit/runtime/llm/__init__.py +0 -0
- agentharnessapi-0.1.1.dev2/tests/unit/runtime/tools/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/uv.lock +22 -2
- agentharnessapi-0.1.0/.github/workflows/publish.yml +0 -74
- agentharnessapi-0.1.0/extensions/agenticapi-claude-agent-sdk/README.md +0 -161
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/.env.example +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/.github/workflows/ci.yml +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/.pre-commit-config.yaml +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/AGENT.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/IMPLEMENTATION_LOG.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/LICENSE +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/Makefile +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/SECURITY.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/VISION.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/development/README.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/development/architecture.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/development/extending.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/development/modules.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/development/security.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/development/testing.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/a2a.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/app.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/approval.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/audit.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/context.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/dependencies.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/harness.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/htmx.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/interface.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/llm.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/mesh.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/observability.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/ops.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/pipeline.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/policies.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/sandbox.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/security.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/testing.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/tools.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/types.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/upload.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/getting-started/quickstart.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/a2a.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/approval.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/authentication.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/cost-budgeting.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/dependency-injection.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/eval-harness.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/file-handling.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/harness.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/htmx.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/intents.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/llm-backends.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/memory.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/mesh.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/observability.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/openapi.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/ops-agents.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/pipelines.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/rest-compat.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/safety-policies.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/security.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/sessions.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/streaming.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/testing.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/tool-decorator.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/tools.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/typed-intents.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/index.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/architecture.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/budgets.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/ci.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/contributing.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/current-state.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/dependencies.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/observability.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/security.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/testing.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/01_hello_agent/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/02_ecommerce/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/03_openai_agent/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/04_anthropic_agent/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/05_gemini_agent/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/06_full_stack/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/07_comprehensive/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/08_mcp_agent/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/09_auth_agent/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/10_file_handling/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/11_html_responses/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/12_htmx/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/14_dependency_injection/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/15_budget_policy/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/16_observability/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/16_observability/audit.sqlite +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/17_typed_intents/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/18_rest_interop/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/19_native_function_calling/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/20_streaming_release_control/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/21_persistent_memory/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/22_safety_policies/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/23_eval_harness/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/23_eval_harness/evals/golden.yaml +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/24_code_cache/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/25_harness_playground/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/26_dynamic_pipeline/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/examples/README.md +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/pyproject.toml +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/_imports.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/backend.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/messages.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/options.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/permissions.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/py.typed +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/runner.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/tools.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/conftest.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/test_backend.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/test_imports.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/test_messages.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/test_permissions.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/test_runner.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/test_tools.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/mkdocs.yml +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/_compat.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/application/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/application/pipeline.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/console.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/dev.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/eval.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/main.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/replay.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/dependencies/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/dependencies/depends.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/dependencies/scanner.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/dependencies/solver.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/evaluation/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/evaluation/judges.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/evaluation/runner.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/exceptions.py +0 -0
- {agentharnessapi-0.1.0/src/agenticapi → agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk}/py.typed +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/approval/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/approval/notifiers.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/approval/rules.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/approval/workflow.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/audit/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/audit/exporters.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/audit/recorder.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/audit/sqlite_store.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/audit/trace.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/engine.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/autonomy_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/base.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/budget_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/code_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/data_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/evaluator.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/pii_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/pricing.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/prompt_injection_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/resource_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/runtime_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/sandbox/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/sandbox/base.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/sandbox/monitors.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/sandbox/process.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/sandbox/static_analysis.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/sandbox/validators.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/a2a/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/a2a/capability.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/a2a/protocol.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/a2a/trust.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/approval_registry.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/compat/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/compat/fastapi.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/compat/rest.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/endpoint.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/htmx.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/intent.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/response.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/session.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/stream.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/stream_store.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/tasks.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/transports/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/transports/ndjson.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/transports/sse.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/upload.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/mesh/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/mesh/context.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/mesh/mesh.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/observability/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/observability/metrics.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/observability/propagation.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/observability/semconv.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/observability/tracing.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/openapi.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/ops/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/ops/base.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/params.py +0 -0
- /agentharnessapi-0.1.0/tests/__init__.py → /agentharnessapi-0.1.1.dev2/src/agenticapi/py.typed +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/routing.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/code_cache.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/code_generator.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/context.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/envelope.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/anthropic.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/base.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/gemini.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/mock.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/openai.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/retry.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/memory/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/memory/base.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/memory/sqlite_store.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/prompts/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/prompts/code_generation.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/prompts/intent_parsing.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/base.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/cache.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/database.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/decorator.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/http_client.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/queue.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/registry.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/security.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/testing/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/testing/agent_test_case.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/testing/assertions.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/testing/benchmark.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/testing/fixtures.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/testing/mocks.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/types.py +0 -0
- {agentharnessapi-0.1.0/tests/benchmarks → agentharnessapi-0.1.1.dev2/tests}/__init__.py +0 -0
- {agentharnessapi-0.1.0/tests/e2e → agentharnessapi-0.1.1.dev2/tests/benchmarks}/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/benchmarks/bench_intent_parsing.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/benchmarks/bench_policy_evaluation.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/benchmarks/bench_sandbox_startup.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/benchmarks/bench_static_analysis.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/conftest.py +0 -0
- {agentharnessapi-0.1.0/tests/integration → agentharnessapi-0.1.1.dev2/tests/e2e}/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/e2e/test_full_request_cycle.py +0 -0
- {agentharnessapi-0.1.0/tests/unit → agentharnessapi-0.1.1.dev2/tests/integration}/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/integration/test_auth_flow.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/integration/test_endpoint_flow.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/integration/test_fastapi_compat.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/integration/test_harness_flow.py +0 -0
- {agentharnessapi-0.1.0/tests/unit/a2a → agentharnessapi-0.1.1.dev2/tests/unit}/__init__.py +0 -0
- {agentharnessapi-0.1.0/tests/unit/application → agentharnessapi-0.1.1.dev2/tests/unit/a2a}/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/a2a/test_capability.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/a2a/test_protocol.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/a2a/test_trust.py +0 -0
- {agentharnessapi-0.1.0/tests/unit/cli → agentharnessapi-0.1.1.dev2/tests/unit/application}/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/application/test_pipeline.py +0 -0
- {agentharnessapi-0.1.0/tests/unit/dependencies → agentharnessapi-0.1.1.dev2/tests/unit/cli}/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/cli/test_init.py +0 -0
- {agentharnessapi-0.1.0/tests/unit/harness → agentharnessapi-0.1.1.dev2/tests/unit/dependencies}/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/dependencies/test_depends.py +0 -0
- {agentharnessapi-0.1.0/tests/unit/harness/policy → agentharnessapi-0.1.1.dev2/tests/unit/ext}/__init__.py +0 -0
- {agentharnessapi-0.1.0/tests/unit/mesh → agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk}/__init__.py +0 -0
- {agentharnessapi-0.1.0/tests/unit/observability → agentharnessapi-0.1.1.dev2/tests/unit/harness}/__init__.py +0 -0
- {agentharnessapi-0.1.0/tests/unit/ops → agentharnessapi-0.1.1.dev2/tests/unit/harness/policy}/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/policy/test_budget_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/policy/test_pii_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_approval.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_audit_exporters.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_audit_recorder.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_code_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_data_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_monitors.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_policy_evaluator.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_pre_llm_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_runtime_policy.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_sandbox.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_sqlite_audit_recorder.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_static_analysis.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_validators.py +0 -0
- {agentharnessapi-0.1.0/tests/unit/runtime → agentharnessapi-0.1.1.dev2/tests/unit/mesh}/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/mesh/test_mesh.py +0 -0
- {agentharnessapi-0.1.0/tests/unit/runtime/llm → agentharnessapi-0.1.1.dev2/tests/unit/observability}/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/observability/test_metrics.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/observability/test_propagation.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/observability/test_tracing.py +0 -0
- {agentharnessapi-0.1.0/tests/unit/runtime/tools → agentharnessapi-0.1.1.dev2/tests/unit/ops}/__init__.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/ops/test_ops_base.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/llm/test_anthropic_tool_calls.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/llm/test_gemini_tool_calls.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/llm/test_openai_tool_calls.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/llm/test_retry.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/llm/test_tool_calls.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_cache_tool.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_code_generator.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_context.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_gemini_backend.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_http_client_tool.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_llm_backend.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_openai_backend.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_prompts.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_queue_tool.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_tool_registry.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/tools/test_decorator.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_agent_test_case.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_app.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_background_tasks.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_benchmark_runner.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_bugfix_regressions.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_cli_console.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_compat.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_custom_responses.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_dx_integration.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_file_response.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_file_upload.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_fixtures.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_htmx.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_increment6.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_increment7.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_intent.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_mcp_compat.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_mock_sandbox.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_openapi.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_params.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_response.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_route_dependencies.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_security.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_session.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_streaming.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_streaming_increment5.py +0 -0
- {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_typed_intents.py +0 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Publish to PyPI and GitHub Packages on every push/merge to main.
|
|
2
|
+
#
|
|
3
|
+
# Setup (one-time):
|
|
4
|
+
# 1. Go to https://pypi.org -> Account Settings -> Publishing ->
|
|
5
|
+
# "Add a new pending publisher"
|
|
6
|
+
# 2. Fill in:
|
|
7
|
+
# PyPI project name: agentharnessapi
|
|
8
|
+
# Owner: shibuiwilliam
|
|
9
|
+
# Repository: AgenticAPI
|
|
10
|
+
# Workflow name: publish.yml
|
|
11
|
+
# Environment name: pypi
|
|
12
|
+
# 3. Go to GitHub repo -> Settings -> Environments -> New environment
|
|
13
|
+
# named "pypi" (this gates the deployment with a manual approval
|
|
14
|
+
# if you add a reviewer, or runs automatically if you don't).
|
|
15
|
+
#
|
|
16
|
+
# PyPI uses "Trusted Publisher" (OIDC) -- no API tokens stored.
|
|
17
|
+
# GitHub Packages publishes to a GitHub Release with the built
|
|
18
|
+
# wheel and sdist attached, making the package installable via:
|
|
19
|
+
# pip install https://github.com/shibuiwilliam/AgenticAPI/releases/download/v0.1.0/agentharnessapi-0.1.0-py3-none-any.whl
|
|
20
|
+
|
|
21
|
+
name: Publish to PyPI & GitHub Packages
|
|
22
|
+
|
|
23
|
+
on:
|
|
24
|
+
push:
|
|
25
|
+
branches: [main]
|
|
26
|
+
|
|
27
|
+
permissions:
|
|
28
|
+
contents: read
|
|
29
|
+
|
|
30
|
+
jobs:
|
|
31
|
+
# -- Gate: full CI must pass before publishing ----------------------
|
|
32
|
+
test:
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/checkout@v4
|
|
36
|
+
- uses: astral-sh/setup-uv@v6
|
|
37
|
+
with:
|
|
38
|
+
enable-cache: true
|
|
39
|
+
- uses: actions/setup-python@v5
|
|
40
|
+
with:
|
|
41
|
+
python-version: "3.13"
|
|
42
|
+
- run: uv sync --group dev
|
|
43
|
+
- run: uv run ruff format --check src/ tests/ examples/
|
|
44
|
+
- run: uv run ruff check src/ tests/ examples/
|
|
45
|
+
- run: uv run mypy src/agenticapi/
|
|
46
|
+
- run: uv run pytest --ignore=tests/benchmarks --ignore=tests/e2e -q
|
|
47
|
+
|
|
48
|
+
# -- Build sdist + wheel --------------------------------------------
|
|
49
|
+
build:
|
|
50
|
+
needs: test
|
|
51
|
+
runs-on: ubuntu-latest
|
|
52
|
+
steps:
|
|
53
|
+
- uses: actions/checkout@v4
|
|
54
|
+
with:
|
|
55
|
+
fetch-depth: 0 # full history needed for hatch-vcs version
|
|
56
|
+
- uses: actions/setup-python@v5
|
|
57
|
+
with:
|
|
58
|
+
python-version: "3.13"
|
|
59
|
+
- run: pip install build
|
|
60
|
+
- run: python -m build
|
|
61
|
+
- uses: actions/upload-artifact@v4
|
|
62
|
+
with:
|
|
63
|
+
name: dist
|
|
64
|
+
path: dist/
|
|
65
|
+
|
|
66
|
+
# -- Publish to PyPI via Trusted Publisher (OIDC) -------------------
|
|
67
|
+
publish-pypi:
|
|
68
|
+
needs: build
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
environment: pypi
|
|
71
|
+
permissions:
|
|
72
|
+
id-token: write
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/download-artifact@v4
|
|
75
|
+
with:
|
|
76
|
+
name: dist
|
|
77
|
+
path: dist/
|
|
78
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
79
|
+
with:
|
|
80
|
+
skip-existing: true
|
|
81
|
+
|
|
82
|
+
# -- Publish to GitHub Packages (GitHub Release) --------------------
|
|
83
|
+
#
|
|
84
|
+
# Creates a GitHub Release tagged with the package version and
|
|
85
|
+
# attaches the built wheel and sdist. This makes the package
|
|
86
|
+
# available via GitHub's package registry and direct URL install.
|
|
87
|
+
#
|
|
88
|
+
# Install from GitHub:
|
|
89
|
+
# pip install https://github.com/shibuiwilliam/AgenticAPI/releases/latest/download/agentharnessapi-0.1.0-py3-none-any.whl
|
|
90
|
+
publish-github:
|
|
91
|
+
needs: build
|
|
92
|
+
runs-on: ubuntu-latest
|
|
93
|
+
permissions:
|
|
94
|
+
contents: write
|
|
95
|
+
packages: write
|
|
96
|
+
steps:
|
|
97
|
+
- uses: actions/checkout@v4
|
|
98
|
+
- uses: actions/download-artifact@v4
|
|
99
|
+
with:
|
|
100
|
+
name: dist
|
|
101
|
+
path: dist/
|
|
102
|
+
- name: Extract version from pyproject.toml
|
|
103
|
+
id: version
|
|
104
|
+
run: |
|
|
105
|
+
version=$(python3 -c "
|
|
106
|
+
import tomllib, pathlib
|
|
107
|
+
data = tomllib.loads(pathlib.Path('pyproject.toml').read_text())
|
|
108
|
+
print(data['project']['version'])
|
|
109
|
+
")
|
|
110
|
+
echo "version=$version" >> "$GITHUB_OUTPUT"
|
|
111
|
+
echo "tag=v$version" >> "$GITHUB_OUTPUT"
|
|
112
|
+
- name: Create or update GitHub Release
|
|
113
|
+
env:
|
|
114
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
115
|
+
run: |
|
|
116
|
+
tag="${{ steps.version.outputs.tag }}"
|
|
117
|
+
version="${{ steps.version.outputs.version }}"
|
|
118
|
+
|
|
119
|
+
# Check if the release already exists
|
|
120
|
+
if gh release view "$tag" > /dev/null 2>&1; then
|
|
121
|
+
echo "Release $tag already exists -- uploading artifacts"
|
|
122
|
+
gh release upload "$tag" dist/* --clobber
|
|
123
|
+
else
|
|
124
|
+
echo "Creating release $tag"
|
|
125
|
+
gh release create "$tag" dist/* \
|
|
126
|
+
--title "agentharnessapi $version" \
|
|
127
|
+
--notes "Published from commit ${{ github.sha }}.
|
|
128
|
+
|
|
129
|
+
Install from PyPI:
|
|
130
|
+
\`\`\`bash
|
|
131
|
+
pip install agentharnessapi==$version
|
|
132
|
+
\`\`\`
|
|
133
|
+
|
|
134
|
+
Install from GitHub:
|
|
135
|
+
\`\`\`bash
|
|
136
|
+
pip install https://github.com/${{ github.repository }}/releases/download/$tag/agentharnessapi-${version}-py3-none-any.whl
|
|
137
|
+
\`\`\`" \
|
|
138
|
+
--latest
|
|
139
|
+
fi
|
|
@@ -8,7 +8,7 @@ AgenticAPI is a Python OSS framework that natively integrates coding agents into
|
|
|
8
8
|
|
|
9
9
|
**Current status** (as of Increment 9, 2026-04-12). Core: **118 Python
|
|
10
10
|
modules, ~21,944 LOC, 1,304 collected tests, 27 examples, 75 public
|
|
11
|
-
exports**. Extensions: `
|
|
11
|
+
exports**. Extensions: `agentharnessapi[claude-agent-sdk]` (~1,610 src
|
|
12
12
|
LOC, 38 tests). **Phase A (control plane) is complete.** **Phase D
|
|
13
13
|
(typed handlers + DI) core is complete** including schema-driven OpenAPI
|
|
14
14
|
for typed `Intent[T]` request bodies (D7). Phases E / F have shipped
|
|
@@ -32,7 +32,7 @@ For the full plane-by-plane shipped / active / deferred matrix see
|
|
|
32
32
|
```bash
|
|
33
33
|
uv sync --group dev # Install all dependencies
|
|
34
34
|
uv run agenticapi version # Verify CLI works
|
|
35
|
-
pip install
|
|
35
|
+
pip install agentharnessapi[mcp] # Optional: MCP support
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
### Testing
|
|
@@ -101,27 +101,24 @@ with their own `pyproject.toml`. Large or fast-moving dependencies
|
|
|
101
101
|
stay out of the core package and live in extension packages so users
|
|
102
102
|
only pay for what they use.
|
|
103
103
|
|
|
104
|
-
**Current
|
|
104
|
+
**Current extras:**
|
|
105
105
|
|
|
106
|
-
|
|
|
107
|
-
|
|
108
|
-
| `
|
|
106
|
+
| Extra | Install | Purpose | Deps |
|
|
107
|
+
|---|---|---|---|
|
|
108
|
+
| `claude-agent-sdk` | `pip install agentharnessapi[claude-agent-sdk]` | Claude Agent SDK loop inside agent endpoints | `claude-agent-sdk>=0.1.58,<0.2` |
|
|
109
|
+
| `mcp` | `pip install agentharnessapi[mcp]` | MCP server support | `mcp>=1.27.0` |
|
|
109
110
|
|
|
110
111
|
```bash
|
|
111
|
-
# Install the extension for development (no-deps so main package stays linked)
|
|
112
|
-
uv pip install -e extensions/agenticapi-claude-agent-sdk --no-deps
|
|
113
|
-
|
|
114
112
|
# Run extension tests (offline — uses a stub SDK module via conftest.py)
|
|
115
|
-
uv run pytest
|
|
113
|
+
uv run pytest tests/unit/ext/claude_agent_sdk/
|
|
116
114
|
|
|
117
115
|
# Type-check the extension
|
|
118
|
-
uv run mypy
|
|
116
|
+
uv run mypy src/agenticapi/ext/
|
|
119
117
|
```
|
|
120
118
|
|
|
121
119
|
See:
|
|
122
|
-
- [docs/internals/extensions.md](docs/internals/extensions.md) — Extensions architecture
|
|
120
|
+
- [docs/internals/extensions.md](docs/internals/extensions.md) — Extensions architecture
|
|
123
121
|
- [docs/internals/claude-agent-sdk-extension-plan.md](docs/internals/claude-agent-sdk-extension-plan.md) — Claude Agent SDK extension design rationale
|
|
124
|
-
- [extensions/agenticapi-claude-agent-sdk/README.md](extensions/agenticapi-claude-agent-sdk/README.md) — User-facing docs
|
|
125
122
|
|
|
126
123
|
---
|
|
127
124
|
|
|
@@ -221,7 +218,7 @@ See [docs/internals/modules.md](docs/internals/modules.md) for the complete modu
|
|
|
221
218
|
| `PlainTextResult` | `interface/response.py` | Plain text response |
|
|
222
219
|
| `UploadFile` | `interface/upload.py` | Uploaded file data (filename, content, size) |
|
|
223
220
|
| `UploadedFiles` | `interface/upload.py` | Handler param type for auto-injected uploaded files |
|
|
224
|
-
| `MCPCompat` | `interface/compat/mcp.py` | MCP server (`pip install
|
|
221
|
+
| `MCPCompat` | `interface/compat/mcp.py` | MCP server (`pip install agentharnessapi[mcp]`) |
|
|
225
222
|
| `RESTCompat` | `interface/compat/rest.py` | REST route generation |
|
|
226
223
|
| `HtmxHeaders` | `interface/htmx.py` | HTMX request header detection (injected into handlers) |
|
|
227
224
|
| `htmx_response_headers()` | `interface/htmx.py` | Build HTMX response headers (HX-Trigger, etc.) |
|
|
@@ -439,7 +436,7 @@ See [examples/README.md](examples/README.md) for the full examples guide.
|
|
|
439
436
|
| `10_file_handling` | None | File upload/download: `UploadedFiles`, `FileResult`, streaming |
|
|
440
437
|
| `11_html_responses` | None | Custom responses: `HTMLResult`, `PlainTextResult`, `FileResult` |
|
|
441
438
|
| `12_htmx` | None | HTMX integration: `HtmxHeaders`, partial page updates, `htmx_response_headers` |
|
|
442
|
-
| `13_claude_agent_sdk` | Claude Agent SDK | Full agentic loop via `
|
|
439
|
+
| `13_claude_agent_sdk` | Claude Agent SDK | Full agentic loop via `agentharnessapi[claude-agent-sdk]` |
|
|
443
440
|
| `14_dependency_injection` | None | `Depends()`, nested deps, `yield` teardown, `@tool` decorator |
|
|
444
441
|
| `15_budget_policy` | None | `BudgetPolicy`, `PricingRegistry`, HTTP 402, spend tracking |
|
|
445
442
|
| `16_observability` | None | OTEL tracing, Prometheus `/metrics`, `SqliteAuditRecorder` |
|
|
@@ -497,7 +494,7 @@ See [examples/README.md](examples/README.md) for the full examples guide.
|
|
|
497
494
|
|
|
498
495
|
### Exposing Endpoints via MCP
|
|
499
496
|
|
|
500
|
-
1. Install: `pip install
|
|
497
|
+
1. Install: `pip install agentharnessapi[mcp]`
|
|
501
498
|
2. Mark endpoints: `@app.agent_endpoint(name="search", enable_mcp=True)`
|
|
502
499
|
3. Mount: `expose_as_mcp(app)`
|
|
503
500
|
4. Test: `npx @modelcontextprotocol/inspector http://localhost:8000/mcp`
|
|
@@ -632,7 +629,7 @@ Extensions live under `extensions/<package-name>/` with their own `pyproject.tom
|
|
|
632
629
|
3. Use **lazy imports** for the wrapped library so `import my_extension` never fails even when the optional dep is absent. Raise a friendly `*NotInstalledError` on first use.
|
|
633
630
|
4. Tests must run **offline**: install a stub module in `conftest.py` that mimics the wrapped library's public surface.
|
|
634
631
|
5. Errors should inherit from `agenticapi.AgenticAPIError` so callers can catch both core and extension errors uniformly.
|
|
635
|
-
6. Reference: `
|
|
632
|
+
6. Reference: `src/agenticapi/ext/claude_agent_sdk/` and `docs/internals/extensions.md`.
|
|
636
633
|
|
|
637
634
|
## Forward Tracks — Implementation Guide
|
|
638
635
|
|
|
@@ -119,7 +119,7 @@ $ uv run pytest tests/benchmarks/
|
|
|
119
119
|
Extensions have their own test suites that run offline (no network, no API keys):
|
|
120
120
|
|
|
121
121
|
```bash
|
|
122
|
-
$ uv run pytest
|
|
122
|
+
$ uv run pytest tests/unit/ext/claude_agent_sdk/
|
|
123
123
|
```
|
|
124
124
|
|
|
125
125
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentharnessapi
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1.dev2
|
|
4
4
|
Summary: Agent-native web framework with harness engineering for Python
|
|
5
5
|
Project-URL: Homepage, https://github.com/shibuiwilliam/AgenticAPI
|
|
6
6
|
Project-URL: Documentation, https://shibuiwilliam.github.io/AgenticAPI/
|
|
@@ -28,6 +28,8 @@ Requires-Dist: pydantic>=2.12.5
|
|
|
28
28
|
Requires-Dist: python-multipart>=0.0.20
|
|
29
29
|
Requires-Dist: starlette>=1.0.0
|
|
30
30
|
Requires-Dist: structlog>=25.5.0
|
|
31
|
+
Provides-Extra: claude-agent-sdk
|
|
32
|
+
Requires-Dist: claude-agent-sdk<0.2,>=0.1.58; extra == 'claude-agent-sdk'
|
|
31
33
|
Provides-Extra: mcp
|
|
32
34
|
Requires-Dist: mcp>=1.27.0; extra == 'mcp'
|
|
33
35
|
Description-Content-Type: text/markdown
|
|
@@ -132,6 +134,10 @@ Either way you get **27 runnable examples** to copy from, **1,310 passing tests*
|
|
|
132
134
|
|
|
133
135
|
**Python 3.13+** is required. The framework uses `match`, `type` aliases, `StrEnum`, and other modern features.
|
|
134
136
|
|
|
137
|
+
```bash
|
|
138
|
+
pip install agentharnessapi
|
|
139
|
+
```
|
|
140
|
+
|
|
135
141
|
For development:
|
|
136
142
|
|
|
137
143
|
```bash
|
|
@@ -143,8 +149,8 @@ uv sync --group dev # or: pip install -e ".[dev]"
|
|
|
143
149
|
Optional extras:
|
|
144
150
|
|
|
145
151
|
```bash
|
|
146
|
-
pip install
|
|
147
|
-
pip install
|
|
152
|
+
pip install agentharnessapi[mcp] # MCP server support
|
|
153
|
+
pip install agentharnessapi[claude-agent-sdk] # Full Claude Agent SDK loop
|
|
148
154
|
|
|
149
155
|
# Observability -- all optional, all graceful no-ops when missing
|
|
150
156
|
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp
|
|
@@ -350,7 +356,7 @@ If you know FastAPI, you already know the patterns:
|
|
|
350
356
|
| **Agent-to-Agent** | Capability discovery, trust scoring, inter-agent communication |
|
|
351
357
|
| **Sessions** | Multi-turn conversations with context accumulation and TTL expiration |
|
|
352
358
|
| **REST compatibility** | Mount FastAPI inside AgenticAPI, or expose agent endpoints as REST routes |
|
|
353
|
-
| **Extensions** |
|
|
359
|
+
| **Extensions** | Optional extras like `agentharnessapi[claude-agent-sdk]` for heavyweight integrations |
|
|
354
360
|
| **Observability** | OpenTelemetry spans + Prometheus metrics + W3C trace propagation, graceful no-op when absent |
|
|
355
361
|
| **Eval harness** | Regression-test agent endpoints with deterministic assertion suites |
|
|
356
362
|
| **OpenAPI docs** | Auto-generated Swagger UI, ReDoc, and OpenAPI 3.1.0 schema |
|
|
@@ -597,7 +603,7 @@ File upload via multipart, download via `FileResult`, streaming via Starlette. S
|
|
|
597
603
|
## MCP, REST Compatibility & Middleware
|
|
598
604
|
|
|
599
605
|
```python
|
|
600
|
-
# Expose endpoints as MCP tools (pip install
|
|
606
|
+
# Expose endpoints as MCP tools (pip install agentharnessapi[mcp])
|
|
601
607
|
from agenticapi.interface.compat.mcp import expose_as_mcp
|
|
602
608
|
expose_as_mcp(app, path="/mcp")
|
|
603
609
|
|
|
@@ -632,11 +638,11 @@ W3C trace propagation, request/latency/cost/denial metrics, graceful no-ops when
|
|
|
632
638
|
Heavyweight integrations are released as separate packages under `extensions/`:
|
|
633
639
|
|
|
634
640
|
```bash
|
|
635
|
-
pip install
|
|
641
|
+
pip install agentharnessapi[claude-agent-sdk]
|
|
636
642
|
```
|
|
637
643
|
|
|
638
644
|
```python
|
|
639
|
-
from
|
|
645
|
+
from agenticapi.ext.claude_agent_sdk import ClaudeAgentRunner
|
|
640
646
|
|
|
641
647
|
runner = ClaudeAgentRunner(
|
|
642
648
|
system_prompt="You are a coding assistant.",
|
|
@@ -798,7 +804,7 @@ src/agenticapi/
|
|
|
798
804
|
cli/ # dev, console, replay, eval, init, version
|
|
799
805
|
|
|
800
806
|
extensions/
|
|
801
|
-
agenticapi-claude-agent-sdk/ #
|
|
807
|
+
agenticapi-claude-agent-sdk/ # Historical — now merged into agentharnessapi[claude-agent-sdk]
|
|
802
808
|
|
|
803
809
|
examples/
|
|
804
810
|
01_hello_agent/ .. 27_multi_agent_pipeline/ # 27 runnable example apps
|
|
@@ -572,8 +572,8 @@ AgenticAPI/
|
|
|
572
572
|
├── src/agenticapi/ ← Framework source
|
|
573
573
|
├── tests/ ← unit / integration / e2e / benchmarks
|
|
574
574
|
├── examples/ ← 27 runnable example apps (01 → 27)
|
|
575
|
-
├── extensions/ ←
|
|
576
|
-
│ └── agenticapi-claude-agent-sdk/
|
|
575
|
+
├── extensions/ ← Historical (now merged as optional extras)
|
|
576
|
+
│ └── agenticapi-claude-agent-sdk/ (use: pip install agentharnessapi[claude-agent-sdk])
|
|
577
577
|
│
|
|
578
578
|
├── docs/ ← mkdocs site (served at /docs URL)
|
|
579
579
|
│ ├── index.md ← Docs hub
|
|
@@ -98,6 +98,10 @@ Either way you get **27 runnable examples** to copy from, **1,310 passing tests*
|
|
|
98
98
|
|
|
99
99
|
**Python 3.13+** is required. The framework uses `match`, `type` aliases, `StrEnum`, and other modern features.
|
|
100
100
|
|
|
101
|
+
```bash
|
|
102
|
+
pip install agentharnessapi
|
|
103
|
+
```
|
|
104
|
+
|
|
101
105
|
For development:
|
|
102
106
|
|
|
103
107
|
```bash
|
|
@@ -109,8 +113,8 @@ uv sync --group dev # or: pip install -e ".[dev]"
|
|
|
109
113
|
Optional extras:
|
|
110
114
|
|
|
111
115
|
```bash
|
|
112
|
-
pip install
|
|
113
|
-
pip install
|
|
116
|
+
pip install agentharnessapi[mcp] # MCP server support
|
|
117
|
+
pip install agentharnessapi[claude-agent-sdk] # Full Claude Agent SDK loop
|
|
114
118
|
|
|
115
119
|
# Observability -- all optional, all graceful no-ops when missing
|
|
116
120
|
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp
|
|
@@ -316,7 +320,7 @@ If you know FastAPI, you already know the patterns:
|
|
|
316
320
|
| **Agent-to-Agent** | Capability discovery, trust scoring, inter-agent communication |
|
|
317
321
|
| **Sessions** | Multi-turn conversations with context accumulation and TTL expiration |
|
|
318
322
|
| **REST compatibility** | Mount FastAPI inside AgenticAPI, or expose agent endpoints as REST routes |
|
|
319
|
-
| **Extensions** |
|
|
323
|
+
| **Extensions** | Optional extras like `agentharnessapi[claude-agent-sdk]` for heavyweight integrations |
|
|
320
324
|
| **Observability** | OpenTelemetry spans + Prometheus metrics + W3C trace propagation, graceful no-op when absent |
|
|
321
325
|
| **Eval harness** | Regression-test agent endpoints with deterministic assertion suites |
|
|
322
326
|
| **OpenAPI docs** | Auto-generated Swagger UI, ReDoc, and OpenAPI 3.1.0 schema |
|
|
@@ -563,7 +567,7 @@ File upload via multipart, download via `FileResult`, streaming via Starlette. S
|
|
|
563
567
|
## MCP, REST Compatibility & Middleware
|
|
564
568
|
|
|
565
569
|
```python
|
|
566
|
-
# Expose endpoints as MCP tools (pip install
|
|
570
|
+
# Expose endpoints as MCP tools (pip install agentharnessapi[mcp])
|
|
567
571
|
from agenticapi.interface.compat.mcp import expose_as_mcp
|
|
568
572
|
expose_as_mcp(app, path="/mcp")
|
|
569
573
|
|
|
@@ -598,11 +602,11 @@ W3C trace propagation, request/latency/cost/denial metrics, graceful no-ops when
|
|
|
598
602
|
Heavyweight integrations are released as separate packages under `extensions/`:
|
|
599
603
|
|
|
600
604
|
```bash
|
|
601
|
-
pip install
|
|
605
|
+
pip install agentharnessapi[claude-agent-sdk]
|
|
602
606
|
```
|
|
603
607
|
|
|
604
608
|
```python
|
|
605
|
-
from
|
|
609
|
+
from agenticapi.ext.claude_agent_sdk import ClaudeAgentRunner
|
|
606
610
|
|
|
607
611
|
runner = ClaudeAgentRunner(
|
|
608
612
|
system_prompt="You are a coding assistant.",
|
|
@@ -764,7 +768,7 @@ src/agenticapi/
|
|
|
764
768
|
cli/ # dev, console, replay, eval, init, version
|
|
765
769
|
|
|
766
770
|
extensions/
|
|
767
|
-
agenticapi-claude-agent-sdk/ #
|
|
771
|
+
agenticapi-claude-agent-sdk/ # Historical — now merged into agentharnessapi[claude-agent-sdk]
|
|
768
772
|
|
|
769
773
|
examples/
|
|
770
774
|
01_hello_agent/ .. 27_multi_agent_pipeline/ # 27 runnable example apps
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
- 1,304 main tests + 38 extension tests · mypy `--strict` clean · ruff format + lint clean · mkdocs `--strict` clean
|
|
26
26
|
- 27 example apps (`examples/01_hello_agent` through `26_dynamic_pipeline`)
|
|
27
27
|
- 75 symbols in `agenticapi.__all__`
|
|
28
|
-
- 1
|
|
28
|
+
- 1 optional extra (`agentharnessapi[claude-agent-sdk]`)
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
@@ -80,12 +80,12 @@ agenticapi dev --app examples.07_comprehensive.app:app
|
|
|
80
80
|
|
|
81
81
|
**Demonstrates:** Multi-feature composition per endpoint: pipeline + A2A trust + multi-tool + approval + audit + sessions in each handler.
|
|
82
82
|
|
|
83
|
-
## 08 — MCP Agent (requires `pip install
|
|
83
|
+
## 08 — MCP Agent (requires `pip install agentharnessapi[mcp]`)
|
|
84
84
|
|
|
85
85
|
Task tracker exposing select endpoints as MCP tools via the Model Context Protocol.
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
|
-
pip install
|
|
88
|
+
pip install agentharnessapi[mcp]
|
|
89
89
|
uvicorn examples.08_mcp_agent.app:app --reload
|
|
90
90
|
# Test MCP with the inspector:
|
|
91
91
|
npx @modelcontextprotocol/inspector http://127.0.0.1:8000/mcp
|
|
@@ -155,13 +155,13 @@ curl -X POST http://127.0.0.1:8000/agent/todo.add -H "Content-Type: application/
|
|
|
155
155
|
|
|
156
156
|
**Demonstrates:** `HtmxHeaders` auto-injection, `HTMLResult` for fragments and full pages, `htmx_response_headers()` for client-side control, conditional rendering based on `htmx.is_htmx`.
|
|
157
157
|
|
|
158
|
-
## 13 — Claude Agent SDK (requires `
|
|
158
|
+
## 13 — Claude Agent SDK (requires `agentharnessapi[claude-agent-sdk]`)
|
|
159
159
|
|
|
160
160
|
Runs a full Claude Agent SDK planning + tool-use loop inside an agent endpoint, with
|
|
161
161
|
AgenticAPI policies bridged into the SDK permission system and audit trails preserved.
|
|
162
162
|
|
|
163
163
|
```bash
|
|
164
|
-
pip install
|
|
164
|
+
pip install agentharnessapi[claude-agent-sdk]
|
|
165
165
|
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
166
166
|
uvicorn examples.13_claude_agent_sdk.app:app --reload
|
|
167
167
|
|
|
@@ -5,7 +5,13 @@
|
|
|
5
5
|
- Python >= 3.13
|
|
6
6
|
- pip or uv
|
|
7
7
|
|
|
8
|
-
## Install from
|
|
8
|
+
## Install from PyPI
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
pip install agentharnessapi
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Install from Source (development)
|
|
9
15
|
|
|
10
16
|
```bash
|
|
11
17
|
git clone https://github.com/shibuiwilliam/AgenticAPI.git
|
|
@@ -38,7 +44,7 @@ AgenticAPI installs the following core dependencies:
|
|
|
38
44
|
|
|
39
45
|
```bash
|
|
40
46
|
# MCP support (lightweight optional extra)
|
|
41
|
-
pip install
|
|
47
|
+
pip install agentharnessapi[mcp]
|
|
42
48
|
|
|
43
49
|
# OpenTelemetry tracing (no-op unless installed)
|
|
44
50
|
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp
|
|
@@ -55,7 +61,7 @@ Heavyweight integrations are released as separate packages:
|
|
|
55
61
|
|
|
56
62
|
```bash
|
|
57
63
|
# Claude Agent SDK (full agentic loop with policies and audit)
|
|
58
|
-
pip install
|
|
64
|
+
pip install agentharnessapi[claude-agent-sdk]
|
|
59
65
|
```
|
|
60
66
|
|
|
61
67
|
See the [Extensions guide](../internals/extensions.md) for the full list and how to build your own.
|
|
@@ -206,7 +206,7 @@ Disable with `AgenticApp(docs_url=None, redoc_url=None, openapi_url=None)`.
|
|
|
206
206
|
|
|
207
207
|
## MCP (Model Context Protocol) Support
|
|
208
208
|
|
|
209
|
-
Agent endpoints can be exposed as MCP tools for use by Claude Desktop, Cursor, and other MCP clients. Requires `pip install
|
|
209
|
+
Agent endpoints can be exposed as MCP tools for use by Claude Desktop, Cursor, and other MCP clients. Requires `pip install agentharnessapi[mcp]`.
|
|
210
210
|
|
|
211
211
|
```python
|
|
212
212
|
@app.agent_endpoint(name="search", enable_mcp=True)
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
# Claude Agent SDK Extension — Implementation Plan
|
|
2
2
|
|
|
3
|
-
**
|
|
4
|
-
|
|
3
|
+
> **Note (post-migration).** This extension has been merged into the main
|
|
4
|
+
> package as `agentharnessapi[claude-agent-sdk]`. Import from
|
|
5
|
+
> `agenticapi.ext.claude_agent_sdk`. This document is preserved as
|
|
6
|
+
> historical design rationale.
|
|
7
|
+
|
|
8
|
+
**Status:** Shipped (merged into main package as optional extra)
|
|
9
|
+
**Target version:** `agentharnessapi[claude-agent-sdk]` (was `agenticapi-claude-agent-sdk` v0.1.0)
|
|
5
10
|
**Owner:** Core team
|
|
6
11
|
**Author:** Implementation plan generated 2026-04-10
|
|
7
12
|
|
|
@@ -21,8 +26,8 @@ audit trails, approval workflows, and tool registries.
|
|
|
21
26
|
A user can:
|
|
22
27
|
|
|
23
28
|
```bash
|
|
24
|
-
pip install
|
|
25
|
-
pip install
|
|
29
|
+
pip install agentharnessapi
|
|
30
|
+
pip install agentharnessapi-claude-agent-sdk
|
|
26
31
|
```
|
|
27
32
|
|
|
28
33
|
```python
|
|
@@ -345,7 +345,7 @@ Both are no-ops unless `opentelemetry-api` is installed. See [observability.md](
|
|
|
345
345
|
|
|
346
346
|
## Exposing Endpoints via MCP
|
|
347
347
|
|
|
348
|
-
1. Install: `pip install
|
|
348
|
+
1. Install: `pip install agentharnessapi[mcp]`
|
|
349
349
|
2. Mark endpoints: `@app.agent_endpoint(name="x", enable_mcp=True)`
|
|
350
350
|
3. Mount: `expose_as_mcp(app)`
|
|
351
351
|
4. Only `enable_mcp=True` endpoints become MCP tools
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
# Extensions Architecture
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **Note (post-migration).** The Claude Agent SDK extension has been merged
|
|
4
|
+
> into the main package as an optional extra. Install with
|
|
5
|
+
> `pip install agentharnessapi[claude-agent-sdk]` and import from
|
|
6
|
+
> `agenticapi.ext.claude_agent_sdk`. The `extensions/` directory is
|
|
7
|
+
> preserved for historical reference. New extensions follow the same
|
|
8
|
+
> extras pattern: add the dependency to `[project.optional-dependencies]`
|
|
9
|
+
> in `pyproject.toml` and place the code under `src/agenticapi/ext/`.
|
|
10
|
+
|
|
11
|
+
AgenticAPI supports **optional extras** that wrap third-party libraries (LLM SDKs, framework adapters, domain-specific runtimes) without bloating the core package.
|
|
4
12
|
|
|
5
13
|
## Why a separate-package layout?
|
|
6
14
|
|
|
@@ -160,8 +168,8 @@ List it in `pyproject.toml` if your build backend needs it declared explicitly.
|
|
|
160
168
|
### End users
|
|
161
169
|
|
|
162
170
|
```bash
|
|
163
|
-
pip install
|
|
164
|
-
pip install
|
|
171
|
+
pip install agentharnessapi # Core
|
|
172
|
+
pip install agentharnessapi-claude-agent-sdk # Add extension (pulls its deps)
|
|
165
173
|
```
|
|
166
174
|
|
|
167
175
|
Extensions should never be required for core to work. Handlers that need an extension either import it explicitly at module load, or guard the import behind a runtime check.
|
|
@@ -40,7 +40,7 @@ src/agenticapi/
|
|
|
40
40
|
compat/
|
|
41
41
|
rest.py RESTCompat, expose_as_rest — REST route generation
|
|
42
42
|
fastapi.py mount_fastapi, mount_in_agenticapi — ASGI mount
|
|
43
|
-
mcp.py MCPCompat, expose_as_mcp — MCP server (optional: pip install
|
|
43
|
+
mcp.py MCPCompat, expose_as_mcp — MCP server (optional: pip install agentharnessapi[mcp])
|
|
44
44
|
a2a/
|
|
45
45
|
protocol.py A2AMessage, A2AMessageType, A2ARequest, A2AResponse
|
|
46
46
|
capability.py Capability, CapabilityRegistry
|
|
@@ -19,7 +19,7 @@ What this example shows:
|
|
|
19
19
|
error response explaining how to install it.
|
|
20
20
|
|
|
21
21
|
Prerequisites:
|
|
22
|
-
pip install
|
|
22
|
+
pip install agentharnessapi[claude-agent-sdk]
|
|
23
23
|
export ANTHROPIC_API_KEY=sk-ant-...
|
|
24
24
|
|
|
25
25
|
Run with:
|
|
@@ -126,7 +126,7 @@ def _build_runner() -> tuple[Any, AuditRecorder] | None:
|
|
|
126
126
|
call.
|
|
127
127
|
"""
|
|
128
128
|
try:
|
|
129
|
-
from
|
|
129
|
+
from agenticapi.ext.claude_agent_sdk import ClaudeAgentRunner
|
|
130
130
|
except ImportError:
|
|
131
131
|
return None
|
|
132
132
|
|
|
@@ -195,7 +195,8 @@ async def ask(intent: Intent, context: AgentContext) -> dict[str, Any]:
|
|
|
195
195
|
"ok": False,
|
|
196
196
|
"error": "extension_not_installed",
|
|
197
197
|
"message": (
|
|
198
|
-
"agenticapi
|
|
198
|
+
"agenticapi.ext.claude_agent_sdk is not available. "
|
|
199
|
+
"Install it with: pip install agentharnessapi[claude-agent-sdk]"
|
|
199
200
|
),
|
|
200
201
|
"intent": intent.raw,
|
|
201
202
|
}
|
{agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/27_multi_agent_pipeline/app.py
RENAMED
|
@@ -4,7 +4,7 @@ Demonstrates a 3-role research pipeline: researcher → summariser → reviewer.
|
|
|
4
4
|
All roles run in-process with budget propagation and trace linkage.
|
|
5
5
|
|
|
6
6
|
Prerequisites:
|
|
7
|
-
pip install
|
|
7
|
+
pip install agentharnessapi
|
|
8
8
|
|
|
9
9
|
Run:
|
|
10
10
|
agenticapi dev --app examples.27_multi_agent_pipeline.app:app
|
|
@@ -20,7 +20,7 @@ Every example automatically serves interactive API docs at `http://127.0.0.1:800
|
|
|
20
20
|
| [10_file_handling](#10-file-handling) | Files | No | Upload: `UploadedFiles`, download: `FileResult`, streaming |
|
|
21
21
|
| [11_html_responses](#11-html-responses) | Pages | No | `HTMLResult`, `PlainTextResult`, `FileResult`, mixed endpoints |
|
|
22
22
|
| [12_htmx](#12-htmx) | Todo app | No | `HtmxHeaders`, `htmx_response_headers`, partial updates |
|
|
23
|
-
| [13_claude_agent_sdk](#13-claude-agent-sdk) | Assistant + audit | `ANTHROPIC_API_KEY` (optional) | Full Claude Agent SDK loop via `
|
|
23
|
+
| [13_claude_agent_sdk](#13-claude-agent-sdk) | Assistant + audit | `ANTHROPIC_API_KEY` (optional) | Full Claude Agent SDK loop via `agentharnessapi[claude-agent-sdk]` |
|
|
24
24
|
| [14_dependency_injection](#14-dependency-injection) | Bookstore | No | `Depends()`, nested dependencies, `yield` teardown, `@tool` decorator |
|
|
25
25
|
| [15_budget_policy](#15-budget-policy) | Chat with cost caps | No | `BudgetPolicy`, `PricingRegistry`, HTTP 402 on budget breach, spend inspection |
|
|
26
26
|
| [16_observability](#16-observability) | Production ops | No | `configure_tracing` / `configure_metrics`, `SqliteAuditRecorder`, Prometheus `/metrics` |
|
|
@@ -48,7 +48,7 @@ agenticapi dev --app examples.01_hello_agent.app:app
|
|
|
48
48
|
uvicorn examples.01_hello_agent.app:app --reload
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
Examples 01, 02, 08-12, and 14-24 require no API keys. Examples 03, 04, and 05 are designed for a specific LLM provider — they *import* cleanly without credentials and continue to serve `/health`, `/docs`, and their deterministic search / inventory / metrics endpoints, but the LLM-powered endpoints (LLM-driven code generation in 03, `products.describe` / `products.recommend` in 04, `tickets.analyze` / `tickets.draft_response` in 05) return a typed friendly error until the matching `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` / `GOOGLE_API_KEY` is set. Examples 06 and 07 let you choose a provider via `AGENTICAPI_LLM_PROVIDER` and fall back to direct-handler mode when no key is set. Example 08 requires `pip install
|
|
51
|
+
Examples 01, 02, 08-12, and 14-24 require no API keys. Examples 03, 04, and 05 are designed for a specific LLM provider — they *import* cleanly without credentials and continue to serve `/health`, `/docs`, and their deterministic search / inventory / metrics endpoints, but the LLM-powered endpoints (LLM-driven code generation in 03, `products.describe` / `products.recommend` in 04, `tickets.analyze` / `tickets.draft_response` in 05) return a typed friendly error until the matching `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` / `GOOGLE_API_KEY` is set. Examples 06 and 07 let you choose a provider via `AGENTICAPI_LLM_PROVIDER` and fall back to direct-handler mode when no key is set. Example 08 requires `pip install agentharnessapi[mcp]`. Example 13 requires `pip install agentharnessapi[claude-agent-sdk]` and (for live calls) `ANTHROPIC_API_KEY` — without them it imports cleanly and the `assistant.audit` endpoint still works. Example 16 runs without OpenTelemetry installed (all tracing/metrics calls become no-ops) and upgrades itself when `opentelemetry-api` + `opentelemetry-sdk` are present. Examples 17 and 19 use `MockBackend` so the demo curl walkthroughs run without any LLM keys; swap in a real backend with a two-line change when you're ready to exercise the same code path against Anthropic, OpenAI, or Gemini.
|
|
52
52
|
|
|
53
53
|
---
|
|
54
54
|
|
|
@@ -410,7 +410,7 @@ A task tracker that exposes select endpoints as [MCP](https://modelcontextprotoc
|
|
|
410
410
|
**Prerequisites:**
|
|
411
411
|
|
|
412
412
|
```bash
|
|
413
|
-
pip install
|
|
413
|
+
pip install agentharnessapi[mcp]
|
|
414
414
|
```
|
|
415
415
|
|
|
416
416
|
```bash
|
|
@@ -670,7 +670,7 @@ curl -X POST http://127.0.0.1:8000/agent/todo.toggle \
|
|
|
670
670
|
|
|
671
671
|
## 13 Claude Agent SDK
|
|
672
672
|
|
|
673
|
-
A demo of the **`
|
|
673
|
+
A demo of the **`agentharnessapi[claude-agent-sdk]`** extra, which runs the full Claude Agent SDK loop (planning + tool use + reflection) inside an AgenticAPI endpoint while preserving AgenticAPI's harness guarantees: declarative policies, an audit trail, and a tool registry exposed to the model as MCP tools.
|
|
674
674
|
|
|
675
675
|
The example wires up a `ClaudeAgentRunner` with a `CodePolicy`, an in-process AgenticAPI tool (`FaqTool`), and an `AuditRecorder`. It also degrades gracefully when the extension or `ANTHROPIC_API_KEY` is missing — the app still imports, the `assistant.audit` endpoint still works, and `assistant.ask` returns a structured error explaining how to install the extension.
|
|
676
676
|
|
|
@@ -679,7 +679,7 @@ The example wires up a `ClaudeAgentRunner` with a `CodePolicy`, an in-process Ag
|
|
|
679
679
|
**Prerequisites (optional but recommended):**
|
|
680
680
|
|
|
681
681
|
```bash
|
|
682
|
-
pip install
|
|
682
|
+
pip install agentharnessapi[claude-agent-sdk]
|
|
683
683
|
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
684
684
|
```
|
|
685
685
|
|