acpkit 0.9.2__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.2 → acpkit-0.9.4}/.agents/skills/acpkit-sdk/resources/intro.md +4 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/pydantic-acp/SKILL.md +24 -1
- {acpkit-0.9.2 → acpkit-0.9.4}/.gitignore +3 -3
- acpkit-0.9.4/COVERAGE +2 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/PKG-INFO +24 -19
- acpkit-0.9.4/VERSION +1 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/api/pydantic_acp.md +4 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/bridges.md +17 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/langchain-acp.md +63 -1
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/llms-full.txt +95 -8
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/pydantic-acp.md +11 -7
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/README.md +62 -0
- acpkit-0.9.4/packages/adapters/langchain-acp/VERSION +1 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/pyproject.toml +1 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/__init__.py +52 -1
- acpkit-0.9.4/packages/adapters/langchain-acp/src/langchain_acp/_slash_commands.py +46 -0
- {acpkit-0.9.2/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.4/packages/adapters/langchain-acp/src/langchain_acp/approvals.py +208 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/bridges/__init__.py +3 -0
- acpkit-0.9.4/packages/adapters/langchain-acp/src/langchain_acp/bridges/external_hooks.py +58 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/config.py +6 -0
- acpkit-0.9.4/packages/adapters/langchain-acp/src/langchain_acp/hook_projection.py +78 -0
- acpkit-0.9.4/packages/adapters/langchain-acp/src/langchain_acp/permission_presentation.py +68 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/projection.py +169 -8
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/runtime/adapter.py +236 -11
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/runtime/server.py +4 -49
- acpkit-0.9.4/packages/adapters/langchain-acp/src/langchain_acp/runtime/slash_commands.py +327 -0
- acpkit-0.9.4/packages/adapters/langchain-acp/src/langchain_acp/slash.py +83 -0
- {acpkit-0.9.2 → 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.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/pyproject.toml +2 -1
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/__init__.py +4 -0
- {acpkit-0.9.2/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.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_source.py +2 -6
- acpkit-0.9.4/packages/adapters/pydantic-acp/src/pydantic_acp/approval_store.py +89 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/awaitables.py +2 -2
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/__init__.py +9 -1
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/_hook_capability.py +248 -1
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/capability_support.py +1 -2
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/hooks.py +20 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/prepare_tools.py +144 -2
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/hook_projection.py +18 -0
- acpkit-0.9.4/packages/adapters/pydantic-acp/src/pydantic_acp/prompt_capabilities.py +12 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_mixins.py +2 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_execution.py +32 -1
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_runtime.py +3 -0
- {acpkit-0.9.2 → 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.2/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.2/packages/adapters/langchain-acp/src/langchain_acp → acpkit-0.9.4/packages/transports/acpremote/src/acpremote}/_version.py +1 -1
- {acpkit-0.9.2 → acpkit-0.9.4}/pyproject.toml +2 -7
- {acpkit-0.9.2 → acpkit-0.9.4}/pyrightconfig.json +1 -0
- acpkit-0.9.4/src/acpkit/_version.py +5 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/langchain/test_low_level_helpers.py +735 -2
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/langchain/test_runtime.py +114 -2
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/support.py +4 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_adapter_helpers.py +3 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_bridge_builder.py +10 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_bridge_capability_support.py +20 -23
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_bridge_hooks.py +280 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_bridge_prepare_tools.py +143 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_hook_introspection.py +12 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_slash_commands.py +87 -14
- acpkit-0.9.2/COVERAGE +0 -2
- acpkit-0.9.2/VERSION +0 -1
- acpkit-0.9.2/examples/langchain/.deepagents-graph/.deepagents-graph/brief.md +0 -3
- acpkit-0.9.2/examples/langchain/.deepagents-graph/brief.md +0 -3
- acpkit-0.9.2/examples/langchain/.workspace-graph/README.md +0 -3
- acpkit-0.9.2/packages/adapters/langchain-acp/VERSION +0 -1
- acpkit-0.9.2/packages/adapters/langchain-acp/src/langchain_acp/approvals.py +0 -106
- acpkit-0.9.2/packages/adapters/pydantic-acp/VERSION +0 -1
- acpkit-0.9.2/packages/helpers/codex-auth-helper/VERSION +0 -1
- acpkit-0.9.2/packages/transports/acpremote/VERSION +0 -1
- acpkit-0.9.2/src/acpkit/_version.py +0 -5
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/acpkit-sdk/SKILL.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/acpkit-sdk/agents/openai.yaml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/acpkit-sdk/examples/README.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/acpkit-sdk/scripts/list_examples.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/acpkit-sdk/scripts/list_public_exports.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/acpremote/SKILL.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/acpremote/agents/openai.yaml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/acpremote/examples/README.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/acpremote/examples/mirror_remote.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/acpremote/examples/serve_command.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/codex-auth-helper/SKILL.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/codex-auth-helper/agents/openai.yaml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/codex-auth-helper/examples/README.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/codex-auth-helper/examples/codex_chat_openai_graph.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/codex-auth-helper/examples/codex_responses_agent.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/langchain-acp/SKILL.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/langchain-acp/agents/openai.yaml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/langchain-acp/examples/README.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/pydantic-acp/agents/openai.yaml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.agents/skills/pydantic-acp/examples/README.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.cursorrules +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.editorconfig +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.github/dependabot.yml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.github/workflows/ci.yml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.github/workflows/codecov.yml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.github/workflows/docs.yml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.github/workflows/publish.yml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.github/workflows/test.yml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.pre-commit-config.yaml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/.python-version +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/CODE_OF_CONDUCT.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/CONTRIBUTING.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/LICENSE +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/Makefile +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/README.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/SECURITY.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/context7.json +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/.partials/index-header.html +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/about/index.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/acpremote.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/api/acpkit.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/api/acpremote.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/api/codex_auth_helper.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/api/langchain_acp.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/cli.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/compatibility-matrix-template.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/examples/deepagents.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/examples/dynamic-factory.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/examples/finance.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/examples/index.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/examples/langchain-codex.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/examples/langchain-workspace.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/examples/remote-hosting.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/examples/travel.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/getting-started/installation.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/getting-started/langchain-quickstart.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/getting-started/pydantic-quickstart.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/getting-started/quickstart.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/helpers.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/host-backends.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/index.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/integration-audit.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/integration-readiness.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/integration-testing.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/langchain-acp/adapter-config.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/langchain-acp/bridges.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/langchain-acp/plans-thinking-approvals.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/langchain-acp/projections.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/langchain-acp/prompt-resources.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/langchain-acp/providers.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/langchain-acp/runtime-controls.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/langchain-acp/session-state.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/llms.txt +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/projection-cookbook.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/providers.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/pydantic-acp/adapter-config.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/pydantic-acp/plans-thinking-approvals.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/pydantic-acp/prompt-resources.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/pydantic-acp/runtime-controls.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/pydantic-acp/session-state.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/stylesheets/tweaks.css +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/docs/testing.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/langchain/README.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/langchain/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/langchain/codex_graph.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/langchain/deepagents_graph.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/langchain/workspace_graph.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/pydantic/.gitignore +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/pydantic/.travel-agent/ideas.txt +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/pydantic/.travel-agent/itinerary.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/pydantic/README.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/pydantic/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/pydantic/finance_agent.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/examples/pydantic/travel_agent.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/mkdocs.yml +0 -0
- {acpkit-0.9.2/packages/adapters/pydantic-acp/src/pydantic_acp → acpkit-0.9.4/packages/adapters/langchain-acp/src/langchain_acp}/approval_store.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/bridge_manager.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/bridges/base.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/bridges/builtin.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/builders/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/builders/graph.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/event_projection.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/graph_source.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/plan.py +0 -0
- {acpkit-0.9.2/packages/adapters/pydantic-acp/src/pydantic_acp → acpkit-0.9.4/packages/adapters/langchain-acp/src/langchain_acp}/prompt_capabilities.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/providers.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/py.typed +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/runtime/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/runtime/_native_plan_runtime.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/runtime/_prompt_conversion.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/serialization.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/session/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/session/state.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/session/store.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/langchain-acp/src/langchain_acp/types.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/_projection_risk.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/_projection_text.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/_slash_commands.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_types.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/approvals.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/base.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/external_hooks.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/history_processor.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/mcp.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/thinking.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/builders/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/builders/agent.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/config.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/_policy_commands.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/_policy_paths.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/context.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/filesystem.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/policy.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/host/terminal.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/models.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/permission_presentation.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/projection.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/projection_helpers.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/providers.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/py.typed +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_prompt.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_agent_state.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_compat.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_native_plan_runtime.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_model_runtime.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_lifecycle.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_model_runtime.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_runtime.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_surface_runtime.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/adapter.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/bridge_manager.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/prompts.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/server.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/session_surface.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/slash_commands.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/serialization.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/session/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/session/state.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/session/store.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/slash.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/fakes.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/harness.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/adapters/pydantic-acp/src/pydantic_acp/types.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/.gitignore +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/LICENSE +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/README.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/pyproject.toml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/config.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/manager.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/state.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/store.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/client.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/factory.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/model.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/helpers/codex-auth-helper/src/codex_auth_helper/py.typed +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/README.md +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/pyproject.toml +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/auth.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/client.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/command.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/config.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/limits.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/metadata.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/proxy_agent.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/py.typed +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/server.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/packages/transports/acpremote/src/acpremote/stream.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/scripts/check_pypi_versions.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/scripts/demo_mcp_server.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/scripts/generate_llms_docs.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/scripts/mock_hook_audit.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/scripts/mock_hook_snapshot.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/scripts/run_if_major_change.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/scripts/save_coverage_summary.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/src/acpkit/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/src/acpkit/__main__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/src/acpkit/_compatibility_schema.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/src/acpkit/adapters.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/src/acpkit/cli.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/src/acpkit/compatibility.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/src/acpkit/py.typed +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/src/acpkit/runtime.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/acpremote/test_command_server.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/acpremote/test_helpers.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/acpremote/test_phase1.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/acpremote/test_phase2.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/acpremote/test_phase3.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/codex_auth_helper/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/codex_auth_helper/support.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/codex_auth_helper/test_auth.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/codex_auth_helper/test_factory.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/conftest.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/langchain/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/langchain/support.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/langchain/test_examples.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/langchain/test_support.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/__init__.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_approvals.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_bridge_mcp.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_bridge_thinking.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_bridge_web_capabilities.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_compat.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_examples.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_host.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_host_policy.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_low_level_helpers.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_models.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_projection.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_projection_helpers.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_runtime.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_session_runtime_helpers.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_sources.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_support.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_testing_fakes.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/pydantic/test_testing_harness.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/test_acpkit_cli.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/test_compatibility_manifest.py +0 -0
- {acpkit-0.9.2 → acpkit-0.9.4}/tests/test_native_langchain_agent.py +0 -0
- {acpkit-0.9.2 → 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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: acpkit
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.4
|
|
4
4
|
Summary: ACP Kit provides a common adapter for Agent Frameworks.
|
|
5
5
|
Project-URL: Homepage, https://vcoderun.github.io/acpkit/
|
|
6
6
|
Project-URL: Issues, https://github.com/vcoderun/acpkit/issues
|
|
@@ -16,31 +16,13 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.13
|
|
17
17
|
Requires-Python: >=3.11
|
|
18
18
|
Requires-Dist: click>=8.1.8
|
|
19
|
-
Requires-Dist: fast-agent-mcp>=0.2.25
|
|
20
|
-
Requires-Dist: mcp>=1.27.0
|
|
21
19
|
Requires-Dist: typing-extensions>=4.12.0
|
|
22
20
|
Provides-Extra: all
|
|
23
21
|
Requires-Dist: acpremote; extra == 'all'
|
|
24
|
-
Requires-Dist: agent-client-protocol>=0.9.0; extra == 'all'
|
|
25
|
-
Requires-Dist: basedpyright; extra == 'all'
|
|
26
22
|
Requires-Dist: codex-auth-helper; extra == 'all'
|
|
27
23
|
Requires-Dist: langchain-acp; extra == 'all'
|
|
28
24
|
Requires-Dist: langchain-acp[deepagents]; extra == 'all'
|
|
29
|
-
Requires-Dist: langchain-openai>=0.3.26; extra == 'all'
|
|
30
|
-
Requires-Dist: mkdocs-material; extra == 'all'
|
|
31
|
-
Requires-Dist: mkdocstrings[python]; extra == 'all'
|
|
32
|
-
Requires-Dist: pre-commit; extra == 'all'
|
|
33
25
|
Requires-Dist: pydantic-acp; extra == 'all'
|
|
34
|
-
Requires-Dist: pydantic-ai-slim; extra == 'all'
|
|
35
|
-
Requires-Dist: pydantic-graph; extra == 'all'
|
|
36
|
-
Requires-Dist: pydantic>=2.7; extra == 'all'
|
|
37
|
-
Requires-Dist: pytest; extra == 'all'
|
|
38
|
-
Requires-Dist: pytest-asyncio; extra == 'all'
|
|
39
|
-
Requires-Dist: pytest-cov; extra == 'all'
|
|
40
|
-
Requires-Dist: python-dotenv; extra == 'all'
|
|
41
|
-
Requires-Dist: ruff; extra == 'all'
|
|
42
|
-
Requires-Dist: ty; extra == 'all'
|
|
43
|
-
Requires-Dist: typing-extensions>=4.12.0; extra == 'all'
|
|
44
26
|
Requires-Dist: uv>=0.8.3; extra == 'all'
|
|
45
27
|
Provides-Extra: codex
|
|
46
28
|
Requires-Dist: codex-auth-helper; extra == 'codex'
|
|
@@ -65,6 +47,29 @@ Requires-Dist: python-dotenv; extra == 'dev'
|
|
|
65
47
|
Requires-Dist: ruff; extra == 'dev'
|
|
66
48
|
Requires-Dist: ty; extra == 'dev'
|
|
67
49
|
Requires-Dist: typing-extensions>=4.12.0; extra == 'dev'
|
|
50
|
+
Provides-Extra: dev-all
|
|
51
|
+
Requires-Dist: acpremote; extra == 'dev-all'
|
|
52
|
+
Requires-Dist: agent-client-protocol>=0.9.0; extra == 'dev-all'
|
|
53
|
+
Requires-Dist: basedpyright; extra == 'dev-all'
|
|
54
|
+
Requires-Dist: codex-auth-helper; extra == 'dev-all'
|
|
55
|
+
Requires-Dist: langchain-acp; extra == 'dev-all'
|
|
56
|
+
Requires-Dist: langchain-acp[deepagents]; extra == 'dev-all'
|
|
57
|
+
Requires-Dist: langchain-openai>=0.3.26; extra == 'dev-all'
|
|
58
|
+
Requires-Dist: mkdocs-material; extra == 'dev-all'
|
|
59
|
+
Requires-Dist: mkdocstrings[python]; extra == 'dev-all'
|
|
60
|
+
Requires-Dist: pre-commit; extra == 'dev-all'
|
|
61
|
+
Requires-Dist: pydantic-acp; extra == 'dev-all'
|
|
62
|
+
Requires-Dist: pydantic-ai-slim; extra == 'dev-all'
|
|
63
|
+
Requires-Dist: pydantic-graph; extra == 'dev-all'
|
|
64
|
+
Requires-Dist: pydantic>=2.7; extra == 'dev-all'
|
|
65
|
+
Requires-Dist: pytest; extra == 'dev-all'
|
|
66
|
+
Requires-Dist: pytest-asyncio; extra == 'dev-all'
|
|
67
|
+
Requires-Dist: pytest-cov; extra == 'dev-all'
|
|
68
|
+
Requires-Dist: python-dotenv; extra == 'dev-all'
|
|
69
|
+
Requires-Dist: ruff; extra == 'dev-all'
|
|
70
|
+
Requires-Dist: ty; extra == 'dev-all'
|
|
71
|
+
Requires-Dist: typing-extensions>=4.12.0; extra == 'dev-all'
|
|
72
|
+
Requires-Dist: uv>=0.8.3; extra == 'dev-all'
|
|
68
73
|
Provides-Extra: docs
|
|
69
74
|
Requires-Dist: mkdocs-material; extra == 'docs'
|
|
70
75
|
Requires-Dist: mkdocstrings[python]; extra == 'docs'
|
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
|
|
@@ -82,10 +82,13 @@ called inside `graph_factory=...`.
|
|
|
82
82
|
- `AdapterConfig`
|
|
83
83
|
- explicit session stores and transcript replay
|
|
84
84
|
- provider-owned models, modes, and config options
|
|
85
|
+
- prompt capability advertisement
|
|
85
86
|
- native ACP plan state with `TaskPlan`
|
|
86
|
-
- approval bridging
|
|
87
|
+
- approval bridging with projection-aware permission cards
|
|
87
88
|
- capability bridges
|
|
89
|
+
- built-in and host-defined slash commands
|
|
88
90
|
- projection maps and event projection maps
|
|
91
|
+
- external hook event projection
|
|
89
92
|
- ACP-facing type exports in `langchain_acp.types`
|
|
90
93
|
|
|
91
94
|
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.
|
|
@@ -133,6 +136,51 @@ The point is not to make the adapter magical. The point is to keep the host,
|
|
|
133
136
|
the graph, and the ACP surface aligned without inventing runtime state the graph
|
|
134
137
|
cannot really honor.
|
|
135
138
|
|
|
139
|
+
## Prompt Capabilities And Slash Commands
|
|
140
|
+
|
|
141
|
+
Prompt capability advertisement is configurable instead of hardcoded:
|
|
142
|
+
|
|
143
|
+
```python
|
|
144
|
+
from langchain_acp import AdapterConfig, AdapterPromptCapabilities
|
|
145
|
+
|
|
146
|
+
config = AdapterConfig(
|
|
147
|
+
prompt_capabilities=AdapterPromptCapabilities(
|
|
148
|
+
audio=False,
|
|
149
|
+
image=False,
|
|
150
|
+
embedded_context=True,
|
|
151
|
+
)
|
|
152
|
+
)
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
The adapter also owns an ACP-native slash-command layer:
|
|
156
|
+
|
|
157
|
+
- mode commands such as `/ask`
|
|
158
|
+
- `/model`
|
|
159
|
+
- `/tools`
|
|
160
|
+
- `/mcp-servers`
|
|
161
|
+
- custom host commands through `slash_command_provider`
|
|
162
|
+
|
|
163
|
+
```python
|
|
164
|
+
from acp.schema import AvailableCommand
|
|
165
|
+
from langchain_acp import (
|
|
166
|
+
AdapterConfig,
|
|
167
|
+
SlashCommandResult,
|
|
168
|
+
StaticSlashCommand,
|
|
169
|
+
StaticSlashCommandProvider,
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
config = AdapterConfig(
|
|
173
|
+
slash_command_provider=StaticSlashCommandProvider(
|
|
174
|
+
commands=[
|
|
175
|
+
StaticSlashCommand(
|
|
176
|
+
command=AvailableCommand(name="ping", description="Return pong."),
|
|
177
|
+
handler=lambda _request: SlashCommandResult(text="pong"),
|
|
178
|
+
)
|
|
179
|
+
]
|
|
180
|
+
)
|
|
181
|
+
)
|
|
182
|
+
```
|
|
183
|
+
|
|
136
184
|
## Session Lifecycle And Replay
|
|
137
185
|
|
|
138
186
|
Session lifecycle is first-class:
|
|
@@ -209,10 +257,23 @@ The adapter surface is:
|
|
|
209
257
|
|
|
210
258
|
- `ApprovalBridge`
|
|
211
259
|
- `NativeApprovalBridge`
|
|
260
|
+
- `ProjectionAwareApprovalBridge`
|
|
261
|
+
- `PermissionToolCallBuilder`
|
|
262
|
+
- `ApprovalPolicyStore`
|
|
212
263
|
- ACP permission requests and resume flow
|
|
213
264
|
|
|
214
265
|
When the runtime really pauses for approval, the ACP session pauses for approval too.
|
|
215
266
|
|
|
267
|
+
Remembered approval choices and permission card rendering live on `NativeApprovalBridge`:
|
|
268
|
+
|
|
269
|
+
```python
|
|
270
|
+
from langchain_acp import NativeApprovalBridge
|
|
271
|
+
|
|
272
|
+
config = AdapterConfig(
|
|
273
|
+
approval_bridge=NativeApprovalBridge(enable_persistent_choices=True),
|
|
274
|
+
)
|
|
275
|
+
```
|
|
276
|
+
|
|
216
277
|
## Capability Bridges And Graph Build Contributions
|
|
217
278
|
|
|
218
279
|
ACP Kit's bridge architecture remains intact in the LangChain adapter.
|
|
@@ -224,6 +285,7 @@ Built-in bridges:
|
|
|
224
285
|
- `ConfigOptionsBridge`
|
|
225
286
|
- `ToolSurfaceBridge`
|
|
226
287
|
- `DeepAgentsCompatibilityBridge`
|
|
288
|
+
- `ExternalHookEventBridge`
|
|
227
289
|
|
|
228
290
|
Graph-build contributions are aggregated through:
|
|
229
291
|
|
|
@@ -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
|
|
@@ -105,10 +105,14 @@ acp_agent = create_acp_agent(graph_factory=graph_from_session)
|
|
|
105
105
|
|
|
106
106
|
- session stores and transcript replay
|
|
107
107
|
- model, mode, and config-option providers
|
|
108
|
+
- prompt capability advertisement through `prompt_capabilities`
|
|
108
109
|
- native plan state through `TaskPlan`
|
|
109
110
|
- approval bridging from `HumanInTheLoopMiddleware`
|
|
111
|
+
- remembered approval policies and permission card rendering on `NativeApprovalBridge`
|
|
110
112
|
- capability bridges and graph-build contributions
|
|
113
|
+
- built-in and host-defined slash commands
|
|
111
114
|
- tool projection maps and event projection maps
|
|
115
|
+
- external hook/event projection through `ExternalHookEventBridge`
|
|
112
116
|
- `graph`, `graph_factory`, and `graph_source`
|
|
113
117
|
- DeepAgents compatibility helpers where they add truthful ACP behavior
|
|
114
118
|
|
|
@@ -120,6 +124,64 @@ That means the adapter can expose:
|
|
|
120
124
|
|
|
121
125
|
without collapsing everything into a bespoke ACP runtime.
|
|
122
126
|
|
|
127
|
+
## Runtime Controls
|
|
128
|
+
|
|
129
|
+
The adapter now owns a small ACP-native slash-command layer instead of leaving that surface entirely to the graph:
|
|
130
|
+
|
|
131
|
+
- mode commands such as `/ask` or `/review` when the session publishes modes
|
|
132
|
+
- `/model` for ACP-owned model selection
|
|
133
|
+
- `/tools` for the active graph tool node
|
|
134
|
+
- `/mcp-servers` for attached session MCP servers
|
|
135
|
+
- custom host commands through `slash_command_provider`
|
|
136
|
+
|
|
137
|
+
Example:
|
|
138
|
+
|
|
139
|
+
```python
|
|
140
|
+
from acp.schema import AvailableCommand
|
|
141
|
+
from langchain_acp import (
|
|
142
|
+
AdapterConfig,
|
|
143
|
+
SlashCommandResult,
|
|
144
|
+
StaticSlashCommand,
|
|
145
|
+
StaticSlashCommandProvider,
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
config = AdapterConfig(
|
|
149
|
+
slash_command_provider=StaticSlashCommandProvider(
|
|
150
|
+
commands=[
|
|
151
|
+
StaticSlashCommand(
|
|
152
|
+
command=AvailableCommand(name="ping", description="Return pong."),
|
|
153
|
+
handler=lambda _request: SlashCommandResult(text="pong"),
|
|
154
|
+
)
|
|
155
|
+
]
|
|
156
|
+
)
|
|
157
|
+
)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Prompt capability advertisement is also explicit now:
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
from langchain_acp import AdapterConfig, AdapterPromptCapabilities
|
|
164
|
+
|
|
165
|
+
config = AdapterConfig(
|
|
166
|
+
prompt_capabilities=AdapterPromptCapabilities(
|
|
167
|
+
audio=False,
|
|
168
|
+
image=False,
|
|
169
|
+
embedded_context=True,
|
|
170
|
+
)
|
|
171
|
+
)
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
If the graph uses approval middleware, remembered choices and ACP permission presentation stay on
|
|
175
|
+
`NativeApprovalBridge`, not on `AdapterConfig`:
|
|
176
|
+
|
|
177
|
+
```python
|
|
178
|
+
from langchain_acp import NativeApprovalBridge
|
|
179
|
+
|
|
180
|
+
config = AdapterConfig(
|
|
181
|
+
approval_bridge=NativeApprovalBridge(enable_persistent_choices=True),
|
|
182
|
+
)
|
|
183
|
+
```
|
|
184
|
+
|
|
123
185
|
## Session-owned Graph Rebuilds
|
|
124
186
|
|
|
125
187
|
If ACP session state should decide which graph gets built, `graph_factory=` is the intended seam:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.9.4
|