acpkit 0.9.3__tar.gz → 0.9.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/acpkit-sdk/resources/intro.md +4 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/pydantic-acp/SKILL.md +24 -1
- {acpkit-0.9.3 → acpkit-0.9.4}/.gitignore +3 -3
- acpkit-0.9.4/COVERAGE +2 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/PKG-INFO +1 -1
- acpkit-0.9.4/VERSION +1 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/api/pydantic_acp.md +4 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/bridges.md +17 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/llms-full.txt +95 -8
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/pydantic-acp.md +11 -7
- acpkit-0.9.4/packages/adapters/langchain-acp/VERSION +1 -0
- {acpkit-0.9.3/packages/adapters/pydantic-acp/src/pydantic_acp → acpkit-0.9.4/packages/adapters/langchain-acp/src/langchain_acp}/_version.py +1 -1
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/README.md +2 -2
- acpkit-0.9.4/packages/adapters/pydantic-acp/VERSION +1 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/pyproject.toml +1 -1
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/__init__.py +4 -0
- {acpkit-0.9.3/packages/helpers/codex-auth-helper/src/codex_auth_helper → acpkit-0.9.4/packages/adapters/pydantic-acp/src/pydantic_acp}/_version.py +1 -1
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_source.py +2 -6
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/awaitables.py +2 -2
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/__init__.py +9 -1
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/_hook_capability.py +248 -1
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/capability_support.py +1 -2
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/hooks.py +20 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/prepare_tools.py +144 -2
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/hook_projection.py +18 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_mixins.py +2 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_execution.py +32 -1
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_runtime.py +3 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/hook_introspection.py +5 -0
- acpkit-0.9.4/packages/helpers/codex-auth-helper/VERSION +1 -0
- {acpkit-0.9.3/packages/transports/acpremote/src/acpremote → acpkit-0.9.4/packages/helpers/codex-auth-helper/src/codex_auth_helper}/_version.py +1 -1
- acpkit-0.9.4/packages/transports/acpremote/VERSION +1 -0
- {acpkit-0.9.3/packages/adapters/langchain-acp/src/langchain_acp → acpkit-0.9.4/packages/transports/acpremote/src/acpremote}/_version.py +1 -1
- acpkit-0.9.4/src/acpkit/_version.py +5 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/support.py +4 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_adapter_helpers.py +3 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_bridge_builder.py +10 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_bridge_hooks.py +280 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_bridge_prepare_tools.py +143 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_hook_introspection.py +12 -0
- acpkit-0.9.3/COVERAGE +0 -2
- acpkit-0.9.3/VERSION +0 -1
- acpkit-0.9.3/examples/langchain/.deepagents-graph/.deepagents-graph/brief.md +0 -3
- acpkit-0.9.3/examples/langchain/.deepagents-graph/brief.md +0 -3
- acpkit-0.9.3/examples/langchain/.workspace-graph/README.md +0 -3
- acpkit-0.9.3/packages/adapters/langchain-acp/VERSION +0 -1
- acpkit-0.9.3/packages/adapters/pydantic-acp/VERSION +0 -1
- acpkit-0.9.3/packages/helpers/codex-auth-helper/VERSION +0 -1
- acpkit-0.9.3/packages/transports/acpremote/VERSION +0 -1
- acpkit-0.9.3/src/acpkit/_version.py +0 -5
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/acpkit-sdk/SKILL.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/acpkit-sdk/agents/openai.yaml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/acpkit-sdk/examples/README.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/acpkit-sdk/scripts/list_examples.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/acpkit-sdk/scripts/list_public_exports.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/acpremote/SKILL.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/acpremote/agents/openai.yaml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/acpremote/examples/README.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/acpremote/examples/mirror_remote.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/acpremote/examples/serve_command.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/codex-auth-helper/SKILL.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/codex-auth-helper/agents/openai.yaml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/codex-auth-helper/examples/README.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/codex-auth-helper/examples/codex_chat_openai_graph.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/codex-auth-helper/examples/codex_responses_agent.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/langchain-acp/SKILL.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/langchain-acp/agents/openai.yaml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/langchain-acp/examples/README.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/pydantic-acp/agents/openai.yaml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.agents/skills/pydantic-acp/examples/README.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.cursorrules +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.editorconfig +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.github/dependabot.yml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.github/workflows/ci.yml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.github/workflows/codecov.yml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.github/workflows/docs.yml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.github/workflows/publish.yml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.github/workflows/test.yml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.pre-commit-config.yaml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/.python-version +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/CODE_OF_CONDUCT.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/CONTRIBUTING.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/LICENSE +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/Makefile +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/README.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/SECURITY.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/context7.json +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/.partials/index-header.html +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/about/index.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/acpremote.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/api/acpkit.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/api/acpremote.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/api/codex_auth_helper.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/api/langchain_acp.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/cli.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/compatibility-matrix-template.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/examples/deepagents.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/examples/dynamic-factory.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/examples/finance.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/examples/index.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/examples/langchain-codex.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/examples/langchain-workspace.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/examples/remote-hosting.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/examples/travel.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/getting-started/installation.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/getting-started/langchain-quickstart.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/getting-started/pydantic-quickstart.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/getting-started/quickstart.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/helpers.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/host-backends.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/index.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/integration-audit.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/integration-readiness.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/integration-testing.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/langchain-acp/adapter-config.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/langchain-acp/bridges.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/langchain-acp/plans-thinking-approvals.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/langchain-acp/projections.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/langchain-acp/prompt-resources.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/langchain-acp/providers.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/langchain-acp/runtime-controls.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/langchain-acp/session-state.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/langchain-acp.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/llms.txt +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/projection-cookbook.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/providers.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/pydantic-acp/adapter-config.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/pydantic-acp/plans-thinking-approvals.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/pydantic-acp/prompt-resources.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/pydantic-acp/runtime-controls.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/pydantic-acp/session-state.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/stylesheets/tweaks.css +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/docs/testing.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/langchain/README.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/langchain/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/langchain/codex_graph.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/langchain/deepagents_graph.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/langchain/workspace_graph.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/pydantic/.gitignore +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/pydantic/.travel-agent/ideas.txt +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/pydantic/.travel-agent/itinerary.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/pydantic/README.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/pydantic/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/pydantic/finance_agent.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/examples/pydantic/travel_agent.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/mkdocs.yml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/README.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/pyproject.toml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/_slash_commands.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/approval_store.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/approvals.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/bridge_manager.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/bridges/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/bridges/base.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/bridges/builtin.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/bridges/external_hooks.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/builders/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/builders/graph.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/config.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/event_projection.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/graph_source.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/hook_projection.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/permission_presentation.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/plan.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/projection.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/prompt_capabilities.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/providers.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/py.typed +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/runtime/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/runtime/_native_plan_runtime.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/runtime/_prompt_conversion.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/runtime/adapter.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/runtime/server.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/runtime/slash_commands.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/serialization.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/session/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/session/state.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/session/store.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/slash.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/types.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/_projection_risk.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/_projection_text.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/_slash_commands.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_types.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/approval_store.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/approvals.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/base.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/external_hooks.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/history_processor.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/mcp.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/thinking.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/builders/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/builders/agent.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/config.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/_policy_commands.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/_policy_paths.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/context.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/filesystem.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/policy.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/terminal.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/models.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/permission_presentation.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/projection.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/projection_helpers.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/prompt_capabilities.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/providers.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/py.typed +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_prompt.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_agent_state.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_compat.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_native_plan_runtime.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_model_runtime.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_lifecycle.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_model_runtime.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_runtime.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_surface_runtime.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/adapter.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/bridge_manager.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/prompts.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/server.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/session_surface.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/slash_commands.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/serialization.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/session/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/session/state.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/session/store.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/slash.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/fakes.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/harness.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/types.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/.gitignore +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/LICENSE +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/README.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/pyproject.toml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/config.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/manager.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/state.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/store.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/client.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/factory.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/model.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/py.typed +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/README.md +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/pyproject.toml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/auth.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/client.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/command.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/config.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/limits.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/metadata.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/proxy_agent.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/py.typed +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/server.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/stream.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/pyproject.toml +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/pyrightconfig.json +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/scripts/check_pypi_versions.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/scripts/demo_mcp_server.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/scripts/generate_llms_docs.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/scripts/mock_hook_audit.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/scripts/mock_hook_snapshot.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/scripts/run_if_major_change.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/scripts/save_coverage_summary.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/src/acpkit/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/src/acpkit/__main__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/src/acpkit/_compatibility_schema.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/src/acpkit/adapters.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/src/acpkit/cli.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/src/acpkit/compatibility.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/src/acpkit/py.typed +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/src/acpkit/runtime.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/acpremote/test_command_server.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/acpremote/test_helpers.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/acpremote/test_phase1.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/acpremote/test_phase2.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/acpremote/test_phase3.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/codex_auth_helper/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/codex_auth_helper/support.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/codex_auth_helper/test_auth.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/codex_auth_helper/test_factory.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/conftest.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/langchain/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/langchain/support.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/langchain/test_examples.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/langchain/test_low_level_helpers.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/langchain/test_runtime.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/langchain/test_support.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/__init__.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_approvals.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_bridge_capability_support.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_bridge_mcp.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_bridge_thinking.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_bridge_web_capabilities.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_compat.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_examples.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_host.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_host_policy.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_low_level_helpers.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_models.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_projection.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_projection_helpers.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_runtime.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_session_runtime_helpers.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_slash_commands.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_sources.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_support.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_testing_fakes.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/pydantic/test_testing_harness.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/test_acpkit_cli.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/test_compatibility_manifest.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/test_native_langchain_agent.py +0 -0
- {acpkit-0.9.3 → acpkit-0.9.4}/tests/test_native_pydantic_agent.py +0 -0
|
@@ -69,6 +69,10 @@ Use these seams intentionally:
|
|
|
69
69
|
advertise image, audio, or embedded context unless the runtime can honor them
|
|
70
70
|
- only one `PrepareToolsMode(..., plan_mode=True)` is allowed
|
|
71
71
|
- `plan_tools=True` is how a non-plan execution mode keeps plan progress tools visible
|
|
72
|
+
- `PrepareOutputToolsBridge` is the separate seam for structured-output tool preparation in
|
|
73
|
+
current Pydantic AI
|
|
74
|
+
- `HookBridge` covers output-tool preparation, output validation, output processing, and
|
|
75
|
+
deferred tool-call observation
|
|
72
76
|
- `/thinking` only exists when `ThinkingBridge()` is configured
|
|
73
77
|
- native ACP plan state and `PlanProvider` are separate ownership paths
|
|
74
78
|
- permission card rendering is `NativeApprovalBridge.tool_call_builder`, not an `AdapterConfig`
|
|
@@ -116,6 +116,12 @@ High-value public seams:
|
|
|
116
116
|
- `NativeApprovalBridge`
|
|
117
117
|
- `PermissionToolCallBuilder`
|
|
118
118
|
- `ApprovalPolicyStore`
|
|
119
|
+
- `PrepareToolsBridge`
|
|
120
|
+
- `PrepareToolsMode`
|
|
121
|
+
- `PrepareOutputToolsBridge`
|
|
122
|
+
- `PrepareOutputToolsMode`
|
|
123
|
+
- `ThinkingBridge`
|
|
124
|
+
- `HookBridge`
|
|
119
125
|
- `SlashCommandProvider`
|
|
120
126
|
- `StaticSlashCommandProvider`
|
|
121
127
|
- `ExternalHookEventBridge`
|
|
@@ -128,6 +134,19 @@ Package entrypoint:
|
|
|
128
134
|
|
|
129
135
|
- [Package entrypoint](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/__init__.py)
|
|
130
136
|
|
|
137
|
+
## Current Pydantic AI Compatibility
|
|
138
|
+
|
|
139
|
+
`pydantic-acp` currently targets `pydantic-ai-slim==1.92.0`.
|
|
140
|
+
|
|
141
|
+
When working on this surface, remember:
|
|
142
|
+
|
|
143
|
+
- `PrepareToolsBridge` owns function-tool preparation and mode-specific plan tool visibility
|
|
144
|
+
- `PrepareOutputToolsBridge` owns structured-output tool preparation and session metadata for output-tool modes
|
|
145
|
+
- `HookBridge` covers output-tool preparation, output validation, output processing, and deferred tool-call observation
|
|
146
|
+
- prompt runtime passes ACP session identity through Pydantic AI `conversation_id` and run `metadata`
|
|
147
|
+
- `run_stream_events()` returns an async context manager in current Pydantic AI; keep direct async-iterable fallback only for tests and compatibility fakes
|
|
148
|
+
- `OpenAICompactionBridge` must not pass deprecated `instructions=` into upstream `OpenAICompaction`
|
|
149
|
+
|
|
131
150
|
## Module Guide
|
|
132
151
|
|
|
133
152
|
| Subsystem | Key files | Use them for |
|
|
@@ -190,7 +209,7 @@ It supports:
|
|
|
190
209
|
- mode switching
|
|
191
210
|
- config options
|
|
192
211
|
- ACP-native plans
|
|
193
|
-
-
|
|
212
|
+
- `Tool Plans` or `Structured Plans` plan generation
|
|
194
213
|
- custom slash command providers
|
|
195
214
|
- session replay and fork/resume/load/close/list lifecycle
|
|
196
215
|
- slash command discovery and rendering
|
|
@@ -205,6 +224,10 @@ This package should be the reference answer whenever the question is:
|
|
|
205
224
|
|
|
206
225
|
High-value bridges include:
|
|
207
226
|
|
|
227
|
+
- `PrepareToolsBridge`
|
|
228
|
+
- `PrepareOutputToolsBridge`
|
|
229
|
+
- `ThinkingBridge`
|
|
230
|
+
- `HookBridge`
|
|
208
231
|
- `ThreadExecutorBridge`
|
|
209
232
|
- `SetToolMetadataBridge`
|
|
210
233
|
- `IncludeToolReturnSchemasBridge`
|
acpkit-0.9.4/COVERAGE
ADDED
acpkit-0.9.4/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.9.4
|
|
@@ -78,6 +78,10 @@ This page documents the public surface re-exported by `pydantic_acp`.
|
|
|
78
78
|
|
|
79
79
|
::: pydantic_acp.PrepareToolsMode
|
|
80
80
|
|
|
81
|
+
::: pydantic_acp.PrepareOutputToolsBridge
|
|
82
|
+
|
|
83
|
+
::: pydantic_acp.PrepareOutputToolsMode
|
|
84
|
+
|
|
81
85
|
::: pydantic_acp.ThinkingBridge
|
|
82
86
|
|
|
83
87
|
::: pydantic_acp.HookBridge
|
|
@@ -260,6 +260,19 @@ Use it for:
|
|
|
260
260
|
|
|
261
261
|
It is the bridge most real coding-agent setups start with.
|
|
262
262
|
|
|
263
|
+
### `PrepareOutputToolsBridge`
|
|
264
|
+
|
|
265
|
+
Shapes output-tool availability per mode.
|
|
266
|
+
|
|
267
|
+
Use it when:
|
|
268
|
+
|
|
269
|
+
- structured-output tools should be filtered separately from normal function tools
|
|
270
|
+
- ACP session metadata should expose the active output-tool mode
|
|
271
|
+
- output-tool preparation should emit ACP-visible progress and failure updates
|
|
272
|
+
|
|
273
|
+
This mirrors `PrepareToolsBridge`, but targets Pydantic AI's
|
|
274
|
+
`PrepareOutputTools` capability.
|
|
275
|
+
|
|
263
276
|
### `ThinkingBridge`
|
|
264
277
|
|
|
265
278
|
Exposes Pydantic AI’s `Thinking` capability through ACP session config.
|
|
@@ -275,6 +288,10 @@ Adds a `Hooks` capability into the active agent.
|
|
|
275
288
|
|
|
276
289
|
Useful when you want ACP-visible hook updates that come from bridge-owned hooks rather than only from hooks already attached to the source agent.
|
|
277
290
|
|
|
291
|
+
The bridge covers the current Pydantic AI hook surface, including tool
|
|
292
|
+
preparation, output-tool preparation, output validation, output processing, and
|
|
293
|
+
deferred tool-call observation.
|
|
294
|
+
|
|
278
295
|
You can also suppress noisy default hook rendering with:
|
|
279
296
|
|
|
280
297
|
```python
|
|
@@ -1362,21 +1362,25 @@ If you are integrating `pydantic-acp` in a real product:
|
|
|
1362
1362
|
|
|
1363
1363
|
## Version Compatibility And Private Upstream APIs
|
|
1364
1364
|
|
|
1365
|
-
`pydantic-acp` currently pins `pydantic-ai-slim==1.
|
|
1365
|
+
`pydantic-acp` currently pins `pydantic-ai-slim==1.92.0`.
|
|
1366
1366
|
|
|
1367
1367
|
That is not accidental. The adapter relies on a specific, tested Pydantic AI
|
|
1368
1368
|
surface and should still be upgraded deliberately.
|
|
1369
1369
|
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1370
|
+
The current compatibility surface includes function-tool preparation,
|
|
1371
|
+
output-tool preparation, output validation/processing hooks,
|
|
1372
|
+
deferred-tool-call hooks, run metadata, and conversation IDs.
|
|
1373
|
+
|
|
1374
|
+
ACP Kit also no longer imports Pydantic AI private history-processor modules
|
|
1375
|
+
directly. History processor support is expressed through ACP Kit's own callable
|
|
1376
|
+
aliases and passed into the public `Agent(..., history_processors=...)`
|
|
1377
|
+
interface.
|
|
1374
1378
|
|
|
1375
1379
|
What this means in practice:
|
|
1376
1380
|
|
|
1377
1381
|
- the adapter is less exposed to private upstream type-module churn
|
|
1378
|
-
- upgrades are still compatibility work, but
|
|
1379
|
-
|
|
1382
|
+
- upgrades are still compatibility work, but Pydantic AI integration points stay
|
|
1383
|
+
isolated behind ACP Kit bridge and runtime seams
|
|
1380
1384
|
|
|
1381
1385
|
### LangChain ACP Overview
|
|
1382
1386
|
URL: https://vcoderun.github.io/acpkit/langchain-acp/
|
|
@@ -1464,10 +1468,13 @@ called inside `graph_factory=...`.
|
|
|
1464
1468
|
- `AdapterConfig`
|
|
1465
1469
|
- explicit session stores and transcript replay
|
|
1466
1470
|
- provider-owned models, modes, and config options
|
|
1471
|
+
- prompt capability advertisement
|
|
1467
1472
|
- native ACP plan state with `TaskPlan`
|
|
1468
|
-
- approval bridging
|
|
1473
|
+
- approval bridging with projection-aware permission cards
|
|
1469
1474
|
- capability bridges
|
|
1475
|
+
- built-in and host-defined slash commands
|
|
1470
1476
|
- projection maps and event projection maps
|
|
1477
|
+
- external hook event projection
|
|
1471
1478
|
- ACP-facing type exports in `langchain_acp.types`
|
|
1472
1479
|
|
|
1473
1480
|
The important difference is upstream shape, not ACP Kit architecture. On the LangChain side the adapter deals in graphs and middleware instead of model profiles and tool preparers.
|
|
@@ -1513,6 +1520,51 @@ The point is not to make the adapter magical. The point is to keep the host,
|
|
|
1513
1520
|
the graph, and the ACP surface aligned without inventing runtime state the graph
|
|
1514
1521
|
cannot really honor.
|
|
1515
1522
|
|
|
1523
|
+
## Prompt Capabilities And Slash Commands
|
|
1524
|
+
|
|
1525
|
+
Prompt capability advertisement is configurable instead of hardcoded:
|
|
1526
|
+
|
|
1527
|
+
```python
|
|
1528
|
+
from langchain_acp import AdapterConfig, AdapterPromptCapabilities
|
|
1529
|
+
|
|
1530
|
+
config = AdapterConfig(
|
|
1531
|
+
prompt_capabilities=AdapterPromptCapabilities(
|
|
1532
|
+
audio=False,
|
|
1533
|
+
image=False,
|
|
1534
|
+
embedded_context=True,
|
|
1535
|
+
)
|
|
1536
|
+
)
|
|
1537
|
+
```
|
|
1538
|
+
|
|
1539
|
+
The adapter also owns an ACP-native slash-command layer:
|
|
1540
|
+
|
|
1541
|
+
- mode commands such as `/ask`
|
|
1542
|
+
- `/model`
|
|
1543
|
+
- `/tools`
|
|
1544
|
+
- `/mcp-servers`
|
|
1545
|
+
- custom host commands through `slash_command_provider`
|
|
1546
|
+
|
|
1547
|
+
```python
|
|
1548
|
+
from acp.schema import AvailableCommand
|
|
1549
|
+
from langchain_acp import (
|
|
1550
|
+
AdapterConfig,
|
|
1551
|
+
SlashCommandResult,
|
|
1552
|
+
StaticSlashCommand,
|
|
1553
|
+
StaticSlashCommandProvider,
|
|
1554
|
+
)
|
|
1555
|
+
|
|
1556
|
+
config = AdapterConfig(
|
|
1557
|
+
slash_command_provider=StaticSlashCommandProvider(
|
|
1558
|
+
commands=[
|
|
1559
|
+
StaticSlashCommand(
|
|
1560
|
+
command=AvailableCommand(name="ping", description="Return pong."),
|
|
1561
|
+
handler=lambda _request: SlashCommandResult(text="pong"),
|
|
1562
|
+
)
|
|
1563
|
+
]
|
|
1564
|
+
)
|
|
1565
|
+
)
|
|
1566
|
+
```
|
|
1567
|
+
|
|
1516
1568
|
## Session Lifecycle And Replay
|
|
1517
1569
|
|
|
1518
1570
|
Session lifecycle is first-class:
|
|
@@ -1589,10 +1641,23 @@ The adapter surface is:
|
|
|
1589
1641
|
|
|
1590
1642
|
- `ApprovalBridge`
|
|
1591
1643
|
- `NativeApprovalBridge`
|
|
1644
|
+
- `ProjectionAwareApprovalBridge`
|
|
1645
|
+
- `PermissionToolCallBuilder`
|
|
1646
|
+
- `ApprovalPolicyStore`
|
|
1592
1647
|
- ACP permission requests and resume flow
|
|
1593
1648
|
|
|
1594
1649
|
When the runtime really pauses for approval, the ACP session pauses for approval too.
|
|
1595
1650
|
|
|
1651
|
+
Remembered approval choices and permission card rendering live on `NativeApprovalBridge`:
|
|
1652
|
+
|
|
1653
|
+
```python
|
|
1654
|
+
from langchain_acp import NativeApprovalBridge
|
|
1655
|
+
|
|
1656
|
+
config = AdapterConfig(
|
|
1657
|
+
approval_bridge=NativeApprovalBridge(enable_persistent_choices=True),
|
|
1658
|
+
)
|
|
1659
|
+
```
|
|
1660
|
+
|
|
1596
1661
|
## Capability Bridges And Graph Build Contributions
|
|
1597
1662
|
|
|
1598
1663
|
ACP Kit's bridge architecture remains intact in the LangChain adapter.
|
|
@@ -1604,6 +1669,7 @@ Built-in bridges:
|
|
|
1604
1669
|
- `ConfigOptionsBridge`
|
|
1605
1670
|
- `ToolSurfaceBridge`
|
|
1606
1671
|
- `DeepAgentsCompatibilityBridge`
|
|
1672
|
+
- `ExternalHookEventBridge`
|
|
1607
1673
|
|
|
1608
1674
|
Graph-build contributions are aggregated through:
|
|
1609
1675
|
|
|
@@ -3432,6 +3498,19 @@ Use it for:
|
|
|
3432
3498
|
|
|
3433
3499
|
It is the bridge most real coding-agent setups start with.
|
|
3434
3500
|
|
|
3501
|
+
### `PrepareOutputToolsBridge`
|
|
3502
|
+
|
|
3503
|
+
Shapes output-tool availability per mode.
|
|
3504
|
+
|
|
3505
|
+
Use it when:
|
|
3506
|
+
|
|
3507
|
+
- structured-output tools should be filtered separately from normal function tools
|
|
3508
|
+
- ACP session metadata should expose the active output-tool mode
|
|
3509
|
+
- output-tool preparation should emit ACP-visible progress and failure updates
|
|
3510
|
+
|
|
3511
|
+
This mirrors `PrepareToolsBridge`, but targets Pydantic AI's
|
|
3512
|
+
`PrepareOutputTools` capability.
|
|
3513
|
+
|
|
3435
3514
|
### `ThinkingBridge`
|
|
3436
3515
|
|
|
3437
3516
|
Exposes Pydantic AI’s `Thinking` capability through ACP session config.
|
|
@@ -3447,6 +3526,10 @@ Adds a `Hooks` capability into the active agent.
|
|
|
3447
3526
|
|
|
3448
3527
|
Useful when you want ACP-visible hook updates that come from bridge-owned hooks rather than only from hooks already attached to the source agent.
|
|
3449
3528
|
|
|
3529
|
+
The bridge covers the current Pydantic AI hook surface, including tool
|
|
3530
|
+
preparation, output-tool preparation, output validation, output processing, and
|
|
3531
|
+
deferred tool-call observation.
|
|
3532
|
+
|
|
3450
3533
|
You can also suppress noisy default hook rendering with:
|
|
3451
3534
|
|
|
3452
3535
|
```python
|
|
@@ -6169,6 +6252,10 @@ This page documents the public surface re-exported by `pydantic_acp`.
|
|
|
6169
6252
|
|
|
6170
6253
|
::: pydantic_acp.PrepareToolsMode
|
|
6171
6254
|
|
|
6255
|
+
::: pydantic_acp.PrepareOutputToolsBridge
|
|
6256
|
+
|
|
6257
|
+
::: pydantic_acp.PrepareOutputToolsMode
|
|
6258
|
+
|
|
6172
6259
|
::: pydantic_acp.ThinkingBridge
|
|
6173
6260
|
|
|
6174
6261
|
::: pydantic_acp.HookBridge
|
|
@@ -270,18 +270,22 @@ If you are integrating `pydantic-acp` in a real product:
|
|
|
270
270
|
|
|
271
271
|
## Version Compatibility And Private Upstream APIs
|
|
272
272
|
|
|
273
|
-
`pydantic-acp` currently pins `pydantic-ai-slim==1.
|
|
273
|
+
`pydantic-acp` currently pins `pydantic-ai-slim==1.92.0`.
|
|
274
274
|
|
|
275
275
|
That is not accidental. The adapter relies on a specific, tested Pydantic AI
|
|
276
276
|
surface and should still be upgraded deliberately.
|
|
277
277
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
278
|
+
The current compatibility surface includes function-tool preparation,
|
|
279
|
+
output-tool preparation, output validation/processing hooks,
|
|
280
|
+
deferred-tool-call hooks, run metadata, and conversation IDs.
|
|
281
|
+
|
|
282
|
+
ACP Kit also no longer imports Pydantic AI private history-processor modules
|
|
283
|
+
directly. History processor support is expressed through ACP Kit's own callable
|
|
284
|
+
aliases and passed into the public `Agent(..., history_processors=...)`
|
|
285
|
+
interface.
|
|
282
286
|
|
|
283
287
|
What this means in practice:
|
|
284
288
|
|
|
285
289
|
- the adapter is less exposed to private upstream type-module churn
|
|
286
|
-
- upgrades are still compatibility work, but
|
|
287
|
-
|
|
290
|
+
- upgrades are still compatibility work, but Pydantic AI integration points stay
|
|
291
|
+
isolated behind ACP Kit bridge and runtime seams
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.9.4
|
|
@@ -263,6 +263,6 @@ Focused docs recipes:
|
|
|
263
263
|
|
|
264
264
|
## Compatibility Policy
|
|
265
265
|
|
|
266
|
-
`pydantic-acp` currently pins `pydantic-ai-slim==1.
|
|
266
|
+
`pydantic-acp` currently pins `pydantic-ai-slim==1.92.0`.
|
|
267
267
|
|
|
268
|
-
That pin is deliberate. The adapter is tested against a specific Pydantic AI surface and should still be upgraded deliberately, but the hook-compatibility seam is
|
|
268
|
+
That pin is deliberate. The adapter is tested against a specific Pydantic AI surface and should still be upgraded deliberately, but the hook-compatibility seam is isolated behind ACP Kit’s own compatibility layer instead of scattering private upstream imports through the runtime. The 1.92 surface includes function-tool preparation, output-tool preparation, output validation/processing hooks, deferred-tool-call hooks, run metadata, and conversation IDs.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.9.4
|
|
@@ -37,6 +37,8 @@ from .bridges import (
|
|
|
37
37
|
OpenAICompactionBridge,
|
|
38
38
|
PlanGenerationType,
|
|
39
39
|
PrefixToolsBridge,
|
|
40
|
+
PrepareOutputToolsBridge,
|
|
41
|
+
PrepareOutputToolsMode,
|
|
40
42
|
PrepareToolsBridge,
|
|
41
43
|
PrepareToolsMode,
|
|
42
44
|
SetToolMetadataBridge,
|
|
@@ -215,6 +217,8 @@ __all__ = (
|
|
|
215
217
|
"format_code_block",
|
|
216
218
|
"format_diff_preview",
|
|
217
219
|
"format_terminal_status",
|
|
220
|
+
"PrepareOutputToolsBridge",
|
|
221
|
+
"PrepareOutputToolsMode",
|
|
218
222
|
"PrepareToolsBridge",
|
|
219
223
|
"PrepareToolsMode",
|
|
220
224
|
"RegisteredHookInfo",
|
{acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_source.py
RENAMED
|
@@ -6,7 +6,7 @@ from typing import Generic, Protocol, TypeVar
|
|
|
6
6
|
|
|
7
7
|
from pydantic_ai import Agent as PydanticAgent
|
|
8
8
|
|
|
9
|
-
from .awaitables import
|
|
9
|
+
from .awaitables import resolve_value
|
|
10
10
|
from .session.state import AcpSessionContext
|
|
11
11
|
|
|
12
12
|
AgentFactoryDepsT = TypeVar("AgentFactoryDepsT", contravariant=True)
|
|
@@ -61,11 +61,7 @@ class FactoryAgentSource(Generic[AgentDepsT, OutputDataT]):
|
|
|
61
61
|
factory: AgentFactory[AgentDepsT, OutputDataT]
|
|
62
62
|
|
|
63
63
|
async def get_agent(self, session: AcpSessionContext) -> PydanticAgent[AgentDepsT, OutputDataT]:
|
|
64
|
-
|
|
65
|
-
if is_awaitable(candidate):
|
|
66
|
-
return await candidate
|
|
67
|
-
assert is_resolved(candidate)
|
|
68
|
-
return candidate
|
|
64
|
+
return await resolve_value(self.factory(session))
|
|
69
65
|
|
|
70
66
|
async def get_deps(
|
|
71
67
|
self,
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations as _annotations
|
|
|
2
2
|
|
|
3
3
|
import inspect
|
|
4
4
|
from collections.abc import Awaitable
|
|
5
|
-
from typing import TypeVar
|
|
5
|
+
from typing import TypeVar, cast
|
|
6
6
|
|
|
7
7
|
from typing_extensions import TypeIs
|
|
8
8
|
|
|
@@ -21,6 +21,6 @@ def is_resolved(value: ValueT | Awaitable[ValueT]) -> TypeIs[ValueT]:
|
|
|
21
21
|
|
|
22
22
|
async def resolve_value(value: ValueT | Awaitable[ValueT]) -> ValueT:
|
|
23
23
|
if is_awaitable(value):
|
|
24
|
-
return await value
|
|
24
|
+
return await cast(Awaitable[ValueT], value)
|
|
25
25
|
assert is_resolved(value)
|
|
26
26
|
return value
|
{acpkit-0.9.3 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/__init__.py
RENAMED
|
@@ -25,7 +25,13 @@ from .history_processor import (
|
|
|
25
25
|
)
|
|
26
26
|
from .hooks import HookBridge
|
|
27
27
|
from .mcp import McpBridge, McpServerDefinition, McpToolDefinition
|
|
28
|
-
from .prepare_tools import
|
|
28
|
+
from .prepare_tools import (
|
|
29
|
+
PlanGenerationType,
|
|
30
|
+
PrepareOutputToolsBridge,
|
|
31
|
+
PrepareOutputToolsMode,
|
|
32
|
+
PrepareToolsBridge,
|
|
33
|
+
PrepareToolsMode,
|
|
34
|
+
)
|
|
29
35
|
from .thinking import ThinkingBridge
|
|
30
36
|
|
|
31
37
|
__all__ = (
|
|
@@ -50,6 +56,8 @@ __all__ = (
|
|
|
50
56
|
"OpenAICompactionBridge",
|
|
51
57
|
"PlanGenerationType",
|
|
52
58
|
"PrefixToolsBridge",
|
|
59
|
+
"PrepareOutputToolsBridge",
|
|
60
|
+
"PrepareOutputToolsMode",
|
|
53
61
|
"PrepareToolsBridge",
|
|
54
62
|
"PrepareToolsMode",
|
|
55
63
|
"SetToolMetadataBridge",
|