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.
Files changed (384) hide show
  1. agentharnessapi-0.1.1.dev2/.github/workflows/publish.yml +139 -0
  2. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/.gitignore +3 -0
  3. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/CLAUDE.md +14 -17
  4. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/CONTRIBUTING.md +1 -1
  5. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/PKG-INFO +14 -8
  6. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/PROJECT.md +2 -2
  7. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/README.md +11 -7
  8. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/ROADMAP.md +1 -1
  9. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/getting-started/examples.md +4 -4
  10. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/getting-started/installation.md +9 -3
  11. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/architecture.md +1 -1
  12. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/claude-agent-sdk-extension-plan.md +9 -4
  13. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/extending.md +1 -1
  14. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/extensions.md +11 -3
  15. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/modules.md +1 -1
  16. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/13_claude_agent_sdk/app.py +4 -3
  17. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/27_multi_agent_pipeline/app.py +1 -1
  18. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/README.md +5 -5
  19. agentharnessapi-0.1.1.dev2/extensions/agenticapi-claude-agent-sdk/README.md +20 -0
  20. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/examples/01_simple_query.py +2 -3
  21. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/examples/02_with_agenticapi_tools.py +2 -3
  22. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/examples/03_with_audit.py +2 -3
  23. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/exceptions.py +1 -1
  24. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/pyproject.toml +22 -2
  25. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/__init__.py +4 -1
  26. agentharnessapi-0.1.1.dev2/src/agenticapi/_version.py +24 -0
  27. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/init.py +1 -1
  28. agentharnessapi-0.1.1.dev2/src/agenticapi/ext/__init__.py +8 -0
  29. agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/__init__.py +75 -0
  30. agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/_imports.py +70 -0
  31. agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/backend.py +171 -0
  32. agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/exceptions.py +57 -0
  33. agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/messages.py +327 -0
  34. agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/options.py +72 -0
  35. agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/permissions.py +346 -0
  36. agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/runner.py +331 -0
  37. agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk/tools.py +161 -0
  38. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/compat/mcp.py +3 -3
  39. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/e2e/test_examples.py +3 -3
  40. agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/conftest.py +303 -0
  41. agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/test_backend.py +87 -0
  42. agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/test_imports.py +49 -0
  43. agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/test_messages.py +147 -0
  44. agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/test_permissions.py +108 -0
  45. agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/test_runner.py +171 -0
  46. agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk/test_tools.py +99 -0
  47. agentharnessapi-0.1.1.dev2/tests/unit/runtime/__init__.py +0 -0
  48. agentharnessapi-0.1.1.dev2/tests/unit/runtime/llm/__init__.py +0 -0
  49. agentharnessapi-0.1.1.dev2/tests/unit/runtime/tools/__init__.py +0 -0
  50. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/uv.lock +22 -2
  51. agentharnessapi-0.1.0/.github/workflows/publish.yml +0 -74
  52. agentharnessapi-0.1.0/extensions/agenticapi-claude-agent-sdk/README.md +0 -161
  53. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/.env.example +0 -0
  54. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/.github/workflows/ci.yml +0 -0
  55. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/.pre-commit-config.yaml +0 -0
  56. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/AGENT.md +0 -0
  57. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/IMPLEMENTATION_LOG.md +0 -0
  58. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/LICENSE +0 -0
  59. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/Makefile +0 -0
  60. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/SECURITY.md +0 -0
  61. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/VISION.md +0 -0
  62. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/development/README.md +0 -0
  63. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/development/architecture.md +0 -0
  64. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/development/extending.md +0 -0
  65. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/development/modules.md +0 -0
  66. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/development/security.md +0 -0
  67. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/development/testing.md +0 -0
  68. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/a2a.md +0 -0
  69. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/app.md +0 -0
  70. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/approval.md +0 -0
  71. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/audit.md +0 -0
  72. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/context.md +0 -0
  73. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/dependencies.md +0 -0
  74. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/harness.md +0 -0
  75. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/htmx.md +0 -0
  76. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/interface.md +0 -0
  77. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/llm.md +0 -0
  78. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/mesh.md +0 -0
  79. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/observability.md +0 -0
  80. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/ops.md +0 -0
  81. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/pipeline.md +0 -0
  82. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/policies.md +0 -0
  83. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/sandbox.md +0 -0
  84. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/security.md +0 -0
  85. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/testing.md +0 -0
  86. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/tools.md +0 -0
  87. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/types.md +0 -0
  88. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/api/upload.md +0 -0
  89. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/getting-started/quickstart.md +0 -0
  90. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/a2a.md +0 -0
  91. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/approval.md +0 -0
  92. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/authentication.md +0 -0
  93. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/cost-budgeting.md +0 -0
  94. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/dependency-injection.md +0 -0
  95. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/eval-harness.md +0 -0
  96. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/file-handling.md +0 -0
  97. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/harness.md +0 -0
  98. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/htmx.md +0 -0
  99. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/intents.md +0 -0
  100. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/llm-backends.md +0 -0
  101. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/memory.md +0 -0
  102. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/mesh.md +0 -0
  103. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/observability.md +0 -0
  104. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/openapi.md +0 -0
  105. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/ops-agents.md +0 -0
  106. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/pipelines.md +0 -0
  107. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/rest-compat.md +0 -0
  108. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/safety-policies.md +0 -0
  109. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/security.md +0 -0
  110. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/sessions.md +0 -0
  111. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/streaming.md +0 -0
  112. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/testing.md +0 -0
  113. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/tool-decorator.md +0 -0
  114. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/tools.md +0 -0
  115. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/guides/typed-intents.md +0 -0
  116. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/index.md +0 -0
  117. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/architecture.md +0 -0
  118. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/budgets.md +0 -0
  119. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/ci.md +0 -0
  120. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/contributing.md +0 -0
  121. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/current-state.md +0 -0
  122. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/dependencies.md +0 -0
  123. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/observability.md +0 -0
  124. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/security.md +0 -0
  125. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/docs/internals/testing.md +0 -0
  126. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/01_hello_agent/app.py +0 -0
  127. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/02_ecommerce/app.py +0 -0
  128. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/03_openai_agent/app.py +0 -0
  129. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/04_anthropic_agent/app.py +0 -0
  130. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/05_gemini_agent/app.py +0 -0
  131. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/06_full_stack/app.py +0 -0
  132. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/07_comprehensive/app.py +0 -0
  133. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/08_mcp_agent/app.py +0 -0
  134. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/09_auth_agent/app.py +0 -0
  135. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/10_file_handling/app.py +0 -0
  136. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/11_html_responses/app.py +0 -0
  137. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/12_htmx/app.py +0 -0
  138. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/14_dependency_injection/app.py +0 -0
  139. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/15_budget_policy/app.py +0 -0
  140. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/16_observability/app.py +0 -0
  141. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/16_observability/audit.sqlite +0 -0
  142. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/17_typed_intents/app.py +0 -0
  143. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/18_rest_interop/app.py +0 -0
  144. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/19_native_function_calling/app.py +0 -0
  145. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/20_streaming_release_control/app.py +0 -0
  146. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/21_persistent_memory/app.py +0 -0
  147. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/22_safety_policies/app.py +0 -0
  148. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/23_eval_harness/app.py +0 -0
  149. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/23_eval_harness/evals/golden.yaml +0 -0
  150. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/24_code_cache/app.py +0 -0
  151. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/25_harness_playground/app.py +0 -0
  152. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/examples/26_dynamic_pipeline/app.py +0 -0
  153. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/examples/README.md +0 -0
  154. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/pyproject.toml +0 -0
  155. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/__init__.py +0 -0
  156. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/_imports.py +0 -0
  157. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/backend.py +0 -0
  158. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/messages.py +0 -0
  159. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/options.py +0 -0
  160. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/permissions.py +0 -0
  161. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/py.typed +0 -0
  162. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/runner.py +0 -0
  163. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/src/agenticapi_claude_agent_sdk/tools.py +0 -0
  164. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/__init__.py +0 -0
  165. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/conftest.py +0 -0
  166. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/test_backend.py +0 -0
  167. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/test_imports.py +0 -0
  168. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/test_messages.py +0 -0
  169. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/test_permissions.py +0 -0
  170. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/test_runner.py +0 -0
  171. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/extensions/agenticapi-claude-agent-sdk/tests/test_tools.py +0 -0
  172. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/mkdocs.yml +0 -0
  173. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/_compat.py +0 -0
  174. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/app.py +0 -0
  175. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/application/__init__.py +0 -0
  176. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/application/pipeline.py +0 -0
  177. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/__init__.py +0 -0
  178. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/console.py +0 -0
  179. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/dev.py +0 -0
  180. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/eval.py +0 -0
  181. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/main.py +0 -0
  182. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/cli/replay.py +0 -0
  183. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/dependencies/__init__.py +0 -0
  184. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/dependencies/depends.py +0 -0
  185. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/dependencies/scanner.py +0 -0
  186. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/dependencies/solver.py +0 -0
  187. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/evaluation/__init__.py +0 -0
  188. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/evaluation/judges.py +0 -0
  189. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/evaluation/runner.py +0 -0
  190. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/exceptions.py +0 -0
  191. {agentharnessapi-0.1.0/src/agenticapi → agentharnessapi-0.1.1.dev2/src/agenticapi/ext/claude_agent_sdk}/py.typed +0 -0
  192. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/__init__.py +0 -0
  193. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/approval/__init__.py +0 -0
  194. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/approval/notifiers.py +0 -0
  195. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/approval/rules.py +0 -0
  196. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/approval/workflow.py +0 -0
  197. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/audit/__init__.py +0 -0
  198. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/audit/exporters.py +0 -0
  199. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/audit/recorder.py +0 -0
  200. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/audit/sqlite_store.py +0 -0
  201. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/audit/trace.py +0 -0
  202. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/engine.py +0 -0
  203. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/__init__.py +0 -0
  204. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/autonomy_policy.py +0 -0
  205. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/base.py +0 -0
  206. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/budget_policy.py +0 -0
  207. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/code_policy.py +0 -0
  208. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/data_policy.py +0 -0
  209. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/evaluator.py +0 -0
  210. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/pii_policy.py +0 -0
  211. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/pricing.py +0 -0
  212. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/prompt_injection_policy.py +0 -0
  213. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/resource_policy.py +0 -0
  214. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/policy/runtime_policy.py +0 -0
  215. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/sandbox/__init__.py +0 -0
  216. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/sandbox/base.py +0 -0
  217. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/sandbox/monitors.py +0 -0
  218. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/sandbox/process.py +0 -0
  219. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/sandbox/static_analysis.py +0 -0
  220. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/harness/sandbox/validators.py +0 -0
  221. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/__init__.py +0 -0
  222. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/a2a/__init__.py +0 -0
  223. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/a2a/capability.py +0 -0
  224. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/a2a/protocol.py +0 -0
  225. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/a2a/trust.py +0 -0
  226. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/approval_registry.py +0 -0
  227. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/compat/__init__.py +0 -0
  228. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/compat/fastapi.py +0 -0
  229. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/compat/rest.py +0 -0
  230. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/endpoint.py +0 -0
  231. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/htmx.py +0 -0
  232. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/intent.py +0 -0
  233. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/response.py +0 -0
  234. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/session.py +0 -0
  235. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/stream.py +0 -0
  236. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/stream_store.py +0 -0
  237. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/tasks.py +0 -0
  238. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/transports/__init__.py +0 -0
  239. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/transports/ndjson.py +0 -0
  240. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/transports/sse.py +0 -0
  241. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/interface/upload.py +0 -0
  242. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/mesh/__init__.py +0 -0
  243. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/mesh/context.py +0 -0
  244. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/mesh/mesh.py +0 -0
  245. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/observability/__init__.py +0 -0
  246. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/observability/metrics.py +0 -0
  247. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/observability/propagation.py +0 -0
  248. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/observability/semconv.py +0 -0
  249. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/observability/tracing.py +0 -0
  250. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/openapi.py +0 -0
  251. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/ops/__init__.py +0 -0
  252. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/ops/base.py +0 -0
  253. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/params.py +0 -0
  254. /agentharnessapi-0.1.0/tests/__init__.py → /agentharnessapi-0.1.1.dev2/src/agenticapi/py.typed +0 -0
  255. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/routing.py +0 -0
  256. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/__init__.py +0 -0
  257. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/code_cache.py +0 -0
  258. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/code_generator.py +0 -0
  259. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/context.py +0 -0
  260. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/envelope.py +0 -0
  261. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/__init__.py +0 -0
  262. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/anthropic.py +0 -0
  263. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/base.py +0 -0
  264. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/gemini.py +0 -0
  265. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/mock.py +0 -0
  266. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/openai.py +0 -0
  267. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/llm/retry.py +0 -0
  268. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/memory/__init__.py +0 -0
  269. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/memory/base.py +0 -0
  270. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/memory/sqlite_store.py +0 -0
  271. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/prompts/__init__.py +0 -0
  272. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/prompts/code_generation.py +0 -0
  273. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/prompts/intent_parsing.py +0 -0
  274. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/__init__.py +0 -0
  275. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/base.py +0 -0
  276. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/cache.py +0 -0
  277. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/database.py +0 -0
  278. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/decorator.py +0 -0
  279. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/http_client.py +0 -0
  280. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/queue.py +0 -0
  281. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/runtime/tools/registry.py +0 -0
  282. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/security.py +0 -0
  283. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/testing/__init__.py +0 -0
  284. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/testing/agent_test_case.py +0 -0
  285. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/testing/assertions.py +0 -0
  286. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/testing/benchmark.py +0 -0
  287. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/testing/fixtures.py +0 -0
  288. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/testing/mocks.py +0 -0
  289. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/src/agenticapi/types.py +0 -0
  290. {agentharnessapi-0.1.0/tests/benchmarks → agentharnessapi-0.1.1.dev2/tests}/__init__.py +0 -0
  291. {agentharnessapi-0.1.0/tests/e2e → agentharnessapi-0.1.1.dev2/tests/benchmarks}/__init__.py +0 -0
  292. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/benchmarks/bench_intent_parsing.py +0 -0
  293. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/benchmarks/bench_policy_evaluation.py +0 -0
  294. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/benchmarks/bench_sandbox_startup.py +0 -0
  295. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/benchmarks/bench_static_analysis.py +0 -0
  296. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/conftest.py +0 -0
  297. {agentharnessapi-0.1.0/tests/integration → agentharnessapi-0.1.1.dev2/tests/e2e}/__init__.py +0 -0
  298. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/e2e/test_full_request_cycle.py +0 -0
  299. {agentharnessapi-0.1.0/tests/unit → agentharnessapi-0.1.1.dev2/tests/integration}/__init__.py +0 -0
  300. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/integration/test_auth_flow.py +0 -0
  301. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/integration/test_endpoint_flow.py +0 -0
  302. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/integration/test_fastapi_compat.py +0 -0
  303. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/integration/test_harness_flow.py +0 -0
  304. {agentharnessapi-0.1.0/tests/unit/a2a → agentharnessapi-0.1.1.dev2/tests/unit}/__init__.py +0 -0
  305. {agentharnessapi-0.1.0/tests/unit/application → agentharnessapi-0.1.1.dev2/tests/unit/a2a}/__init__.py +0 -0
  306. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/a2a/test_capability.py +0 -0
  307. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/a2a/test_protocol.py +0 -0
  308. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/a2a/test_trust.py +0 -0
  309. {agentharnessapi-0.1.0/tests/unit/cli → agentharnessapi-0.1.1.dev2/tests/unit/application}/__init__.py +0 -0
  310. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/application/test_pipeline.py +0 -0
  311. {agentharnessapi-0.1.0/tests/unit/dependencies → agentharnessapi-0.1.1.dev2/tests/unit/cli}/__init__.py +0 -0
  312. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/cli/test_init.py +0 -0
  313. {agentharnessapi-0.1.0/tests/unit/harness → agentharnessapi-0.1.1.dev2/tests/unit/dependencies}/__init__.py +0 -0
  314. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/dependencies/test_depends.py +0 -0
  315. {agentharnessapi-0.1.0/tests/unit/harness/policy → agentharnessapi-0.1.1.dev2/tests/unit/ext}/__init__.py +0 -0
  316. {agentharnessapi-0.1.0/tests/unit/mesh → agentharnessapi-0.1.1.dev2/tests/unit/ext/claude_agent_sdk}/__init__.py +0 -0
  317. {agentharnessapi-0.1.0/tests/unit/observability → agentharnessapi-0.1.1.dev2/tests/unit/harness}/__init__.py +0 -0
  318. {agentharnessapi-0.1.0/tests/unit/ops → agentharnessapi-0.1.1.dev2/tests/unit/harness/policy}/__init__.py +0 -0
  319. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/policy/test_budget_policy.py +0 -0
  320. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/policy/test_pii_policy.py +0 -0
  321. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_approval.py +0 -0
  322. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_audit_exporters.py +0 -0
  323. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_audit_recorder.py +0 -0
  324. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_code_policy.py +0 -0
  325. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_data_policy.py +0 -0
  326. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_monitors.py +0 -0
  327. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_policy_evaluator.py +0 -0
  328. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_pre_llm_policy.py +0 -0
  329. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_runtime_policy.py +0 -0
  330. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_sandbox.py +0 -0
  331. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_sqlite_audit_recorder.py +0 -0
  332. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_static_analysis.py +0 -0
  333. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/harness/test_validators.py +0 -0
  334. {agentharnessapi-0.1.0/tests/unit/runtime → agentharnessapi-0.1.1.dev2/tests/unit/mesh}/__init__.py +0 -0
  335. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/mesh/test_mesh.py +0 -0
  336. {agentharnessapi-0.1.0/tests/unit/runtime/llm → agentharnessapi-0.1.1.dev2/tests/unit/observability}/__init__.py +0 -0
  337. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/observability/test_metrics.py +0 -0
  338. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/observability/test_propagation.py +0 -0
  339. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/observability/test_tracing.py +0 -0
  340. {agentharnessapi-0.1.0/tests/unit/runtime/tools → agentharnessapi-0.1.1.dev2/tests/unit/ops}/__init__.py +0 -0
  341. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/ops/test_ops_base.py +0 -0
  342. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/llm/test_anthropic_tool_calls.py +0 -0
  343. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/llm/test_gemini_tool_calls.py +0 -0
  344. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/llm/test_openai_tool_calls.py +0 -0
  345. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/llm/test_retry.py +0 -0
  346. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/llm/test_tool_calls.py +0 -0
  347. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_cache_tool.py +0 -0
  348. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_code_generator.py +0 -0
  349. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_context.py +0 -0
  350. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_gemini_backend.py +0 -0
  351. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_http_client_tool.py +0 -0
  352. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_llm_backend.py +0 -0
  353. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_openai_backend.py +0 -0
  354. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_prompts.py +0 -0
  355. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_queue_tool.py +0 -0
  356. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/test_tool_registry.py +0 -0
  357. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/runtime/tools/test_decorator.py +0 -0
  358. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_agent_test_case.py +0 -0
  359. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_app.py +0 -0
  360. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_background_tasks.py +0 -0
  361. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_benchmark_runner.py +0 -0
  362. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_bugfix_regressions.py +0 -0
  363. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_cli_console.py +0 -0
  364. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_compat.py +0 -0
  365. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_custom_responses.py +0 -0
  366. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_dx_integration.py +0 -0
  367. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_file_response.py +0 -0
  368. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_file_upload.py +0 -0
  369. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_fixtures.py +0 -0
  370. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_htmx.py +0 -0
  371. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_increment6.py +0 -0
  372. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_increment7.py +0 -0
  373. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_intent.py +0 -0
  374. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_mcp_compat.py +0 -0
  375. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_mock_sandbox.py +0 -0
  376. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_openapi.py +0 -0
  377. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_params.py +0 -0
  378. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_response.py +0 -0
  379. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_route_dependencies.py +0 -0
  380. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_security.py +0 -0
  381. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_session.py +0 -0
  382. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_streaming.py +0 -0
  383. {agentharnessapi-0.1.0 → agentharnessapi-0.1.1.dev2}/tests/unit/test_streaming_increment5.py +0 -0
  384. {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
@@ -211,3 +211,6 @@ __marimo__/
211
211
 
212
212
  harness_playground_audit.sqlite
213
213
  agenticapi_memory_demo.sqlite
214
+
215
+ # Auto-generated by hatch-vcs at build time
216
+ src/agenticapi/_version.py
@@ -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: `agenticapi-claude-agent-sdk` v0.1.0 (~1,610 src
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 -e ".[mcp]" # Optional: MCP support
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 extensions:**
104
+ **Current extras:**
105
105
 
106
- | Extension | Purpose | Deps |
107
- |---|---|---|
108
- | `agenticapi-claude-agent-sdk` | Wraps the [Claude Agent SDK](https://code.claude.com/docs/en/agent-sdk/overview) for full planning + tool-use loops inside agent endpoints | `claude-agent-sdk>=0.1.58,<0.2` |
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 extensions/agenticapi-claude-agent-sdk/tests
113
+ uv run pytest tests/unit/ext/claude_agent_sdk/
116
114
 
117
115
  # Type-check the extension
118
- uv run mypy extensions/agenticapi-claude-agent-sdk/src
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 and contribution guide
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 agenticapi[mcp]`) |
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 `agenticapi-claude-agent-sdk` extension |
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 agenticapi[mcp]`
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: `extensions/agenticapi-claude-agent-sdk/` and `docs/internals/extensions.md`.
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 extensions/agenticapi-claude-agent-sdk/tests
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.0
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 agenticapi[mcp] # MCP server support
147
- pip install agenticapi-claude-agent-sdk # Full Claude Agent SDK loop (separate package)
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** | Independent packages like `agenticapi-claude-agent-sdk` for heavyweight integrations |
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 agenticapi[mcp])
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 agenticapi-claude-agent-sdk
641
+ pip install agentharnessapi[claude-agent-sdk]
636
642
  ```
637
643
 
638
644
  ```python
639
- from agenticapi_claude_agent_sdk import ClaudeAgentRunner
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/ # Independent package -- full Claude Agent SDK loop
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/ ← Separately-installable 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 agenticapi[mcp] # MCP server support
113
- pip install agenticapi-claude-agent-sdk # Full Claude Agent SDK loop (separate package)
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** | Independent packages like `agenticapi-claude-agent-sdk` for heavyweight integrations |
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 agenticapi[mcp])
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 agenticapi-claude-agent-sdk
605
+ pip install agentharnessapi[claude-agent-sdk]
602
606
  ```
603
607
 
604
608
  ```python
605
- from agenticapi_claude_agent_sdk import ClaudeAgentRunner
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/ # Independent package -- full Claude Agent SDK loop
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 extension (`agenticapi-claude-agent-sdk` v0.1.0)
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 agenticapi[mcp]`)
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 agenticapi[mcp]
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 `agenticapi-claude-agent-sdk` extension)
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 agenticapi-claude-agent-sdk
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 Source
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 agenticapi[mcp]
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 agenticapi-claude-agent-sdk
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 agenticapi[mcp]`.
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
- **Status:** Approved (Phase 1 initial release)
4
- **Target version:** `agenticapi-claude-agent-sdk` v0.1.0
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 agenticapi
25
- pip install agenticapi-claude-agent-sdk
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 agenticapi[mcp]`
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
- AgenticAPI supports independently-installable **extension packages** that wrap third-party libraries (LLM SDKs, framework adapters, domain-specific runtimes) without bloating the core package.
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 agenticapi # Core
164
- pip install agenticapi-claude-agent-sdk # Add extension (pulls its deps)
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 agenticapi[mcp])
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 agenticapi-claude-agent-sdk
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 agenticapi_claude_agent_sdk import ClaudeAgentRunner
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-claude-agent-sdk is not installed. Install it with: pip install agenticapi-claude-agent-sdk"
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
  }
@@ -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 agenticapi
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 `agenticapi-claude-agent-sdk` extension |
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 agenticapi[mcp]`. Example 13 requires `pip install agenticapi-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.
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 agenticapi[mcp]
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 **`agenticapi-claude-agent-sdk`** extension, 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.
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 agenticapi-claude-agent-sdk
682
+ pip install agentharnessapi[claude-agent-sdk]
683
683
  export ANTHROPIC_API_KEY="sk-ant-..."
684
684
  ```
685
685