acpkit 0.9.0__tar.gz → 0.9.2__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.0 → acpkit-0.9.2}/.agents/skills/acpkit-sdk/SKILL.md +5 -3
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/acpkit-sdk/resources/intro.md +76 -14
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/codex-auth-helper/SKILL.md +3 -2
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/codex-auth-helper/examples/codex_chat_openai_graph.py +7 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/codex-auth-helper/examples/codex_responses_agent.py +7 -4
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/pydantic-acp/SKILL.md +38 -8
- {acpkit-0.9.0 → acpkit-0.9.2}/.github/workflows/ci.yml +4 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/.github/workflows/docs.yml +1 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/.github/workflows/publish.yml +4 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/.gitignore +3 -0
- acpkit-0.9.2/COVERAGE +2 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/PKG-INFO +1 -1
- acpkit-0.9.2/VERSION +1 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/api/pydantic_acp.md +44 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/bridges.md +23 -2
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/examples/deepagents.md +7 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/examples/langchain-codex.md +15 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/examples/langchain-workspace.md +13 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/getting-started/langchain-quickstart.md +7 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/getting-started/pydantic-quickstart.md +19 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/helpers.md +20 -4
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/langchain-acp.md +6 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/llms-full.txt +259 -12
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/llms.txt +7 -7
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/projection-cookbook.md +33 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/providers.md +17 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/pydantic-acp/adapter-config.md +26 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/pydantic-acp/plans-thinking-approvals.md +33 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/pydantic-acp/runtime-controls.md +23 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/pydantic-acp.md +21 -3
- acpkit-0.9.2/examples/langchain/.deepagents-graph/brief.md +3 -0
- acpkit-0.9.2/examples/langchain/README.md +77 -0
- acpkit-0.9.2/examples/langchain/codex_graph.py +122 -0
- acpkit-0.9.2/examples/langchain/deepagents_graph.py +262 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/examples/langchain/workspace_graph.py +63 -8
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/README.md +43 -0
- acpkit-0.9.2/packages/adapters/langchain-acp/VERSION +1 -0
- {acpkit-0.9.0/packages/adapters/pydantic-acp/src/pydantic_acp → acpkit-0.9.2/packages/adapters/langchain-acp/src/langchain_acp}/_version.py +1 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/runtime/_native_plan_runtime.py +1 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/README.md +36 -0
- acpkit-0.9.2/packages/adapters/pydantic-acp/VERSION +1 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/__init__.py +48 -1
- {acpkit-0.9.0/packages/helpers/codex-auth-helper/src/codex_auth_helper → acpkit-0.9.2/packages/adapters/pydantic-acp/src/pydantic_acp}/_version.py +1 -1
- acpkit-0.9.2/packages/adapters/pydantic-acp/src/pydantic_acp/approval_store.py +89 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/approvals.py +99 -47
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/__init__.py +3 -0
- acpkit-0.9.2/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/external_hooks.py +70 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/config.py +6 -0
- acpkit-0.9.2/packages/adapters/pydantic-acp/src/pydantic_acp/permission_presentation.py +68 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/projection.py +240 -0
- acpkit-0.9.2/packages/adapters/pydantic-acp/src/pydantic_acp/prompt_capabilities.py +12 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_prompt.py +81 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_execution.py +10 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_model_runtime.py +7 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_surface_runtime.py +29 -2
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/adapter.py +3 -3
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/session_surface.py +2 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/slash_commands.py +49 -0
- acpkit-0.9.2/packages/adapters/pydantic-acp/src/pydantic_acp/slash.py +84 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/fakes.py +6 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/harness.py +26 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/README.md +23 -4
- acpkit-0.9.2/packages/helpers/codex-auth-helper/VERSION +1 -0
- {acpkit-0.9.0/packages/adapters/langchain-acp/src/langchain_acp → acpkit-0.9.2/packages/helpers/codex-auth-helper/src/codex_auth_helper}/_version.py +1 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/factory.py +40 -12
- acpkit-0.9.2/packages/helpers/codex-auth-helper/src/codex_auth_helper/model.py +74 -0
- acpkit-0.9.2/packages/transports/acpremote/VERSION +1 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/src/acpremote/_version.py +1 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/pyrightconfig.json +1 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/scripts/generate_llms_docs.py +7 -7
- acpkit-0.9.2/src/acpkit/_version.py +5 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/src/acpkit/cli.py +1 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/codex_auth_helper/test_factory.py +74 -4
- acpkit-0.9.2/tests/langchain/test_examples.py +578 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/support.py +36 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_approvals.py +324 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_bridge_capability_support.py +87 -21
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_bridge_hooks.py +134 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_models.py +8 -3
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_projection.py +212 -1
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_runtime.py +24 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_slash_commands.py +186 -2
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_testing_harness.py +30 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/test_acpkit_cli.py +11 -0
- acpkit-0.9.0/COVERAGE +0 -2
- acpkit-0.9.0/VERSION +0 -1
- acpkit-0.9.0/examples/langchain/README.md +0 -34
- acpkit-0.9.0/examples/langchain/codex_graph.py +0 -54
- acpkit-0.9.0/examples/langchain/deepagents_graph.py +0 -135
- acpkit-0.9.0/packages/adapters/langchain-acp/VERSION +0 -1
- acpkit-0.9.0/packages/adapters/pydantic-acp/VERSION +0 -1
- acpkit-0.9.0/packages/helpers/codex-auth-helper/VERSION +0 -1
- acpkit-0.9.0/packages/helpers/codex-auth-helper/src/codex_auth_helper/model.py +0 -25
- acpkit-0.9.0/packages/transports/acpremote/VERSION +0 -1
- acpkit-0.9.0/src/acpkit/_version.py +0 -5
- acpkit-0.9.0/tests/langchain/test_examples.py +0 -333
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/acpkit-sdk/agents/openai.yaml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/acpkit-sdk/examples/README.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/acpkit-sdk/scripts/list_examples.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/acpkit-sdk/scripts/list_public_exports.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/acpremote/SKILL.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/acpremote/agents/openai.yaml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/acpremote/examples/README.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/acpremote/examples/mirror_remote.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/acpremote/examples/serve_command.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/codex-auth-helper/agents/openai.yaml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/codex-auth-helper/examples/README.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/langchain-acp/SKILL.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/langchain-acp/agents/openai.yaml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/langchain-acp/examples/README.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/pydantic-acp/agents/openai.yaml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/pydantic-acp/examples/README.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.cursorrules +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.editorconfig +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.github/dependabot.yml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.github/workflows/codecov.yml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.github/workflows/test.yml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.pre-commit-config.yaml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/.python-version +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/CODE_OF_CONDUCT.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/CONTRIBUTING.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/LICENSE +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/Makefile +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/README.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/SECURITY.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/context7.json +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/.partials/index-header.html +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/about/index.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/acpremote.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/api/acpkit.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/api/acpremote.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/api/codex_auth_helper.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/api/langchain_acp.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/cli.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/compatibility-matrix-template.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/examples/dynamic-factory.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/examples/finance.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/examples/index.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/examples/remote-hosting.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/examples/travel.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/getting-started/installation.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/getting-started/quickstart.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/host-backends.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/index.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/integration-audit.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/integration-readiness.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/integration-testing.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/langchain-acp/adapter-config.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/langchain-acp/bridges.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/langchain-acp/plans-thinking-approvals.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/langchain-acp/projections.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/langchain-acp/prompt-resources.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/langchain-acp/providers.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/langchain-acp/runtime-controls.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/langchain-acp/session-state.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/pydantic-acp/prompt-resources.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/pydantic-acp/session-state.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/stylesheets/tweaks.css +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/docs/testing.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/examples/__init__.py +0 -0
- {acpkit-0.9.0/examples/langchain → acpkit-0.9.2/examples/langchain/.deepagents-graph}/.deepagents-graph/brief.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/examples/langchain/.workspace-graph/README.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/examples/langchain/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/examples/pydantic/.gitignore +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/examples/pydantic/.travel-agent/ideas.txt +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/examples/pydantic/.travel-agent/itinerary.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/examples/pydantic/README.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/examples/pydantic/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/examples/pydantic/finance_agent.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/examples/pydantic/travel_agent.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/mkdocs.yml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/pyproject.toml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/approvals.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/bridge_manager.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/bridges/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/bridges/base.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/bridges/builtin.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/builders/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/builders/graph.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/config.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/event_projection.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/graph_source.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/plan.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/projection.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/providers.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/py.typed +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/runtime/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/runtime/_prompt_conversion.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/runtime/adapter.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/runtime/server.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/serialization.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/session/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/session/state.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/session/store.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/langchain-acp/src/langchain_acp/types.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/pyproject.toml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/_projection_risk.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/_projection_text.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/_slash_commands.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_source.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_types.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/awaitables.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/_hook_capability.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/base.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/capability_support.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/history_processor.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/hooks.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/mcp.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/prepare_tools.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/thinking.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/builders/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/builders/agent.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/hook_projection.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/_policy_commands.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/_policy_paths.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/context.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/filesystem.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/policy.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/terminal.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/models.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/projection_helpers.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/providers.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/py.typed +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_mixins.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_agent_state.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_compat.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_native_plan_runtime.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_model_runtime.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_runtime.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_lifecycle.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_runtime.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/bridge_manager.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/hook_introspection.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/prompts.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/server.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/serialization.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/session/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/session/state.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/session/store.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/adapters/pydantic-acp/src/pydantic_acp/types.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/.gitignore +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/LICENSE +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/pyproject.toml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/config.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/manager.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/state.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/store.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/client.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/py.typed +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/README.md +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/pyproject.toml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/src/acpremote/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/src/acpremote/auth.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/src/acpremote/client.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/src/acpremote/command.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/src/acpremote/config.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/src/acpremote/limits.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/src/acpremote/metadata.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/src/acpremote/proxy_agent.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/src/acpremote/py.typed +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/src/acpremote/server.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/packages/transports/acpremote/src/acpremote/stream.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/pyproject.toml +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/scripts/check_pypi_versions.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/scripts/demo_mcp_server.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/scripts/mock_hook_audit.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/scripts/mock_hook_snapshot.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/scripts/run_if_major_change.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/scripts/save_coverage_summary.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/src/acpkit/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/src/acpkit/__main__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/src/acpkit/_compatibility_schema.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/src/acpkit/adapters.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/src/acpkit/compatibility.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/src/acpkit/py.typed +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/src/acpkit/runtime.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/acpremote/test_command_server.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/acpremote/test_helpers.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/acpremote/test_phase1.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/acpremote/test_phase2.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/acpremote/test_phase3.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/codex_auth_helper/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/codex_auth_helper/support.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/codex_auth_helper/test_auth.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/conftest.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/langchain/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/langchain/support.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/langchain/test_low_level_helpers.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/langchain/test_runtime.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/langchain/test_support.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/__init__.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_adapter_helpers.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_bridge_builder.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_bridge_mcp.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_bridge_prepare_tools.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_bridge_thinking.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_bridge_web_capabilities.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_compat.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_examples.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_hook_introspection.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_host.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_host_policy.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_low_level_helpers.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_projection_helpers.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_session_runtime_helpers.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_sources.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_support.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/pydantic/test_testing_fakes.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/test_compatibility_manifest.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/test_native_langchain_agent.py +0 -0
- {acpkit-0.9.0 → acpkit-0.9.2}/tests/test_native_pydantic_agent.py +0 -0
|
@@ -67,6 +67,7 @@ What it owns:
|
|
|
67
67
|
What it does not own:
|
|
68
68
|
|
|
69
69
|
- Pydantic plan/approval/projection details
|
|
70
|
+
- Pydantic prompt capability, custom slash command, and external hook event details
|
|
70
71
|
- LangChain graph/provider/projection details
|
|
71
72
|
- WebSocket transport behavior
|
|
72
73
|
- Codex auth parsing
|
|
@@ -258,7 +259,7 @@ Remote pairing examples:
|
|
|
258
259
|
Switch to a narrower skill when:
|
|
259
260
|
|
|
260
261
|
- the bug is clearly inside adapter runtime behavior
|
|
261
|
-
- the task is about approvals, plans, projections, or host policy
|
|
262
|
+
- the task is about approvals, plans, prompt capabilities, custom slash commands, projections, external hook events, or host policy
|
|
262
263
|
- the task is about transport or remote ownership rather than CLI or dispatch
|
|
263
264
|
- the task is about Codex auth refresh or `auth.json`
|
|
264
265
|
|
|
@@ -275,5 +276,6 @@ Stay in this skill when:
|
|
|
275
276
|
- Do not describe `acpremote` as an adapter.
|
|
276
277
|
- Do not describe `codex-auth-helper` as part of target resolution.
|
|
277
278
|
- Do not document a root CLI feature that is not present in the [CLI module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/cli.py).
|
|
278
|
-
- When the question is about adapter truthfulness, plans, approvals,
|
|
279
|
-
or provider behavior, move to
|
|
279
|
+
- When the question is about adapter truthfulness, plans, approvals, prompt capabilities, custom
|
|
280
|
+
slash commands, projections, external hook events, host ownership, or provider behavior, move to
|
|
281
|
+
the narrower package skill.
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
ACP Kit is the adapter toolkit and monorepo for turning an existing agent surface into a truthful ACP server boundary.
|
|
4
4
|
|
|
5
|
-
Today the
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Today the repo ships production-grade adapters for both `pydantic-acp` and `langchain-acp`.
|
|
6
|
+
`pydantic-acp` remains the richest reference implementation for ACP-native models, modes, plans,
|
|
7
|
+
approvals, MCP metadata, host tools, projection, and session state.
|
|
8
8
|
|
|
9
9
|
This intro is intentionally short. The canonical deep references should come from the published docs set, not from a second parallel skill-specific spec.
|
|
10
10
|
|
|
@@ -21,7 +21,8 @@ The central contract is:
|
|
|
21
21
|
|
|
22
22
|
> expose ACP state only when the underlying runtime can actually honor it.
|
|
23
23
|
|
|
24
|
-
That rule drives model selection, mode switching, slash commands,
|
|
24
|
+
That rule drives model selection, mode switching, slash commands, prompt capabilities, native plan
|
|
25
|
+
state, approval flow, MCP metadata, external hook events, projection, and host-backed tooling.
|
|
25
26
|
|
|
26
27
|
## Start With The Real Docs
|
|
27
28
|
|
|
@@ -32,13 +33,14 @@ Use these published docs pages as the primary references:
|
|
|
32
33
|
| Product overview and package map | [ACP Kit Overview](https://vcoderun.github.io/acpkit/) |
|
|
33
34
|
| Construction seams and adapter overview | [Pydantic ACP Overview](https://vcoderun.github.io/acpkit/pydantic-acp/) |
|
|
34
35
|
| Runtime config and session ownership | [AdapterConfig](https://vcoderun.github.io/acpkit/pydantic-acp/adapter-config/) |
|
|
35
|
-
| Models, modes, slash commands, thinking | [Models, Modes, and Slash Commands](https://vcoderun.github.io/acpkit/pydantic-acp/runtime-controls/) |
|
|
36
|
-
| Plans, approvals, and cancellation | [Plans, Thinking, and Approvals](https://vcoderun.github.io/acpkit/pydantic-acp/plans-thinking-approvals/) |
|
|
36
|
+
| Models, modes, custom slash commands, thinking | [Models, Modes, and Slash Commands](https://vcoderun.github.io/acpkit/pydantic-acp/runtime-controls/) |
|
|
37
|
+
| Plans, approvals, permission presentation, and cancellation | [Plans, Thinking, and Approvals](https://vcoderun.github.io/acpkit/pydantic-acp/plans-thinking-approvals/) |
|
|
37
38
|
| Host-owned state patterns | [Providers](https://vcoderun.github.io/acpkit/providers/) |
|
|
38
|
-
| ACP-visible extension seams | [Bridges](https://vcoderun.github.io/acpkit/bridges/) |
|
|
39
|
-
| Host-backed tools and
|
|
39
|
+
| ACP-visible extension seams and external hook events | [Bridges](https://vcoderun.github.io/acpkit/bridges/) |
|
|
40
|
+
| Host-backed tools, search/list projection, and classification | [Host Backends and Projections](https://vcoderun.github.io/acpkit/host-backends/) |
|
|
40
41
|
| Maintained example ladder | [Examples Overview](https://vcoderun.github.io/acpkit/examples/) |
|
|
41
|
-
|
|
|
42
|
+
| Pydantic production showcase | [Finance Agent](https://vcoderun.github.io/acpkit/examples/finance/) |
|
|
43
|
+
| LangChain production showcase | [LangChain Workspace Graph](https://vcoderun.github.io/acpkit/examples/langchain-workspace/) |
|
|
42
44
|
| API surface | [pydantic_acp API](https://vcoderun.github.io/acpkit/api/pydantic_acp/) |
|
|
43
45
|
|
|
44
46
|
## Construction Seams To Reach For
|
|
@@ -61,19 +63,76 @@ Use these seams intentionally:
|
|
|
61
63
|
- `FileSessionStore` is the hardened local durable store: atomic replace writes, local locking, malformed-session tolerance, and stale temp cleanup; it is not a distributed multi-writer backend
|
|
62
64
|
- slash mode commands are dynamic; `ask`, `plan`, and `agent` are examples, not built-in global names
|
|
63
65
|
- mode ids must not collide with reserved slash command names like `model`, `thinking`, `tools`, `hooks`, or `mcp-servers`
|
|
66
|
+
- custom slash commands come from `SlashCommandProvider` or `StaticSlashCommandProvider`, and
|
|
67
|
+
must not collide with built-in commands or mode names
|
|
68
|
+
- `AdapterConfig.prompt_capabilities` controls what prompt input families are advertised; do not
|
|
69
|
+
advertise image, audio, or embedded context unless the runtime can honor them
|
|
64
70
|
- only one `PrepareToolsMode(..., plan_mode=True)` is allowed
|
|
65
71
|
- `plan_tools=True` is how a non-plan execution mode keeps plan progress tools visible
|
|
66
72
|
- `/thinking` only exists when `ThinkingBridge()` is configured
|
|
67
73
|
- native ACP plan state and `PlanProvider` are separate ownership paths
|
|
74
|
+
- permission card rendering is `NativeApprovalBridge.tool_call_builder`, not an `AdapterConfig`
|
|
75
|
+
field
|
|
76
|
+
- `ApprovalBridge` stays compatible with the legacy no-`projection_map` signature; use
|
|
77
|
+
`ProjectionAwareApprovalBridge` only when the bridge explicitly accepts projected context
|
|
78
|
+
- remembered approval policy is live runtime state owned by `ApprovalPolicyStore`, while
|
|
79
|
+
`ApprovalStateProvider` is metadata-only
|
|
68
80
|
- `HookBridge(hide_all=True)` suppresses hook listing output, not the underlying hook capability itself
|
|
81
|
+
- `ExternalHookEventBridge` is for integrations that already own lifecycle events and want them
|
|
82
|
+
buffered into ACP updates
|
|
69
83
|
- custom `run_event_stream` hooks and wrappers must return an async iterable, not a coroutine
|
|
70
84
|
- `HostAccessPolicy` is the native typed guardrail surface for host-backed file and terminal access
|
|
85
|
+
- `FileSystemProjectionMap` search/list tree rendering is opt-in and based only on tool output;
|
|
86
|
+
it must not read the filesystem
|
|
87
|
+
- `ProjectionAwareToolClassifier` classifies only configured projection tool names and delegates
|
|
88
|
+
unknown tools to the base classifier
|
|
71
89
|
- `BlackBoxHarness` is the reusable black-box ACP boundary test helper for downstream integrations
|
|
72
90
|
- projection helper primitives handle diff previews, truncation, command summaries, and guardrail-aware caution text without each integration rebuilding that shaping logic
|
|
73
91
|
- the compatibility manifest schema gives integrations one typed, reviewable declaration of which ACP surfaces are implemented, partial, intentionally not used, or planned
|
|
74
92
|
|
|
75
93
|
## New Native Surfaces
|
|
76
94
|
|
|
95
|
+
### PromptCapabilities, SlashCommandProvider, And StaticSlashCommandProvider
|
|
96
|
+
|
|
97
|
+
Reach for `AdapterConfig.prompt_capabilities` when the runtime's prompt input support differs from
|
|
98
|
+
the defaults. Use `SlashCommandProvider` or `StaticSlashCommandProvider` when a product integration
|
|
99
|
+
needs commands beyond the built-in model, mode, config, thinking, tools, hooks, and MCP surfaces.
|
|
100
|
+
|
|
101
|
+
Custom command handlers can return transcript updates, text, or a handled/fallthrough decision. The
|
|
102
|
+
default result refreshes the session surface so visible commands and related state stay synchronized.
|
|
103
|
+
|
|
104
|
+
Read next:
|
|
105
|
+
|
|
106
|
+
- https://vcoderun.github.io/acpkit/pydantic-acp/runtime-controls/
|
|
107
|
+
- https://vcoderun.github.io/acpkit/pydantic-acp/adapter-config/
|
|
108
|
+
|
|
109
|
+
### ApprovalPolicyStore And PermissionToolCallBuilder
|
|
110
|
+
|
|
111
|
+
Reach for `ApprovalPolicyStore` when remembered approval policy needs to live somewhere other than
|
|
112
|
+
session metadata. Reach for `PermissionToolCallBuilder` when native approvals should render custom
|
|
113
|
+
permission cards while keeping the ACP approval lifecycle unchanged.
|
|
114
|
+
|
|
115
|
+
Keep the builder on `NativeApprovalBridge.tool_call_builder`. If a custom approval bridge needs
|
|
116
|
+
projected file or command context, implement `ProjectionAwareApprovalBridge` rather than widening the
|
|
117
|
+
legacy `ApprovalBridge` protocol.
|
|
118
|
+
|
|
119
|
+
Read next:
|
|
120
|
+
|
|
121
|
+
- https://vcoderun.github.io/acpkit/pydantic-acp/plans-thinking-approvals/
|
|
122
|
+
- https://vcoderun.github.io/acpkit/providers/
|
|
123
|
+
|
|
124
|
+
### ExternalHookEventBridge And ProjectionAwareToolClassifier
|
|
125
|
+
|
|
126
|
+
Reach for `ExternalHookEventBridge` when hook-like lifecycle events come from an external runtime and
|
|
127
|
+
should appear through the normal buffered bridge update path. Reach for
|
|
128
|
+
`ProjectionAwareToolClassifier` when configured projection maps should also drive ACP tool-kind
|
|
129
|
+
classification for reads, writes, bash, and search tools.
|
|
130
|
+
|
|
131
|
+
Read next:
|
|
132
|
+
|
|
133
|
+
- https://vcoderun.github.io/acpkit/bridges/
|
|
134
|
+
- https://vcoderun.github.io/acpkit/host-backends/
|
|
135
|
+
|
|
77
136
|
### HostAccessPolicy
|
|
78
137
|
|
|
79
138
|
Reach for `HostAccessPolicy` when an integration needs one reusable, typed place to evaluate file and command risk.
|
|
@@ -162,10 +221,13 @@ Read next:
|
|
|
162
221
|
|
|
163
222
|
## Reference Files In This Skill
|
|
164
223
|
|
|
165
|
-
These skill-local references are only routing aids back into the docs:
|
|
224
|
+
These skill-local references are only routing aids back into the docs and source tree:
|
|
166
225
|
|
|
167
|
-
- `
|
|
168
|
-
- `
|
|
169
|
-
- `
|
|
226
|
+
- `SKILL.md`
|
|
227
|
+
- `resources/intro.md`
|
|
228
|
+
- `examples/README.md`
|
|
229
|
+
- `scripts/list_examples.py`
|
|
230
|
+
- `scripts/list_public_exports.py`
|
|
170
231
|
|
|
171
|
-
Use them to find the right docs page quickly, not as independent source-of-truth
|
|
232
|
+
Use them to find the right docs page or package surface quickly, not as independent source-of-truth
|
|
233
|
+
specs.
|
|
@@ -155,7 +155,7 @@ This helper is usually upstream of the adapter, not a replacement for it.
|
|
|
155
155
|
|
|
156
156
|
### Build a Codex-backed `pydantic-ai` model
|
|
157
157
|
|
|
158
|
-
Use `create_codex_responses_model(...)
|
|
158
|
+
Use `create_codex_responses_model(...)` and pass explicit `instructions=...`.
|
|
159
159
|
|
|
160
160
|
### Build a lower-level client first
|
|
161
161
|
|
|
@@ -164,7 +164,8 @@ Use `create_codex_async_openai(...)` when you need the transport/client object e
|
|
|
164
164
|
### Build a LangChain model
|
|
165
165
|
|
|
166
166
|
Use `create_codex_chat_openai(...)` when the upstream runtime is LangChain or LangGraph and you
|
|
167
|
-
want the Responses API path instead of hand-wiring `langchain-openai`.
|
|
167
|
+
want the Responses API path instead of hand-wiring `langchain-openai`. Pass explicit
|
|
168
|
+
`instructions=...` here too.
|
|
168
169
|
|
|
169
170
|
### Debug refresh behavior
|
|
170
171
|
|
{acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/codex-auth-helper/examples/codex_chat_openai_graph.py
RENAMED
|
@@ -19,7 +19,13 @@ def describe_codex_surface() -> str:
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
graph = create_agent(
|
|
22
|
-
model=create_codex_chat_openai(
|
|
22
|
+
model=create_codex_chat_openai(
|
|
23
|
+
MODEL_NAME,
|
|
24
|
+
instructions=(
|
|
25
|
+
"You are a helpful coding assistant. "
|
|
26
|
+
"Explain concrete workspace observations and use tools when helpful."
|
|
27
|
+
),
|
|
28
|
+
),
|
|
23
29
|
tools=[describe_codex_surface],
|
|
24
30
|
name="codex-chat-openai-graph",
|
|
25
31
|
)
|
{acpkit-0.9.0 → acpkit-0.9.2}/.agents/skills/codex-auth-helper/examples/codex_responses_agent.py
RENAMED
|
@@ -9,11 +9,14 @@ from pydantic_ai import Agent
|
|
|
9
9
|
MODEL_NAME = os.getenv("CODEX_MODEL", "gpt-5.4")
|
|
10
10
|
|
|
11
11
|
agent = Agent(
|
|
12
|
-
create_codex_responses_model(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
create_codex_responses_model(
|
|
13
|
+
MODEL_NAME,
|
|
14
|
+
instructions=(
|
|
15
|
+
"You are a concise coding assistant. "
|
|
16
|
+
"Ask for clarification when the task is underspecified."
|
|
17
|
+
),
|
|
16
18
|
),
|
|
19
|
+
name="codex-responses-agent",
|
|
17
20
|
)
|
|
18
21
|
|
|
19
22
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "pydantic-acp"
|
|
3
|
-
description: "Use for `pydantic-acp` tasks: exposing `pydantic_ai.Agent` through ACP, adapter config/runtime ownership, approvals, plans, hooks, projections, host-backed tools, and Pydantic-specific examples."
|
|
3
|
+
description: "Use for `pydantic-acp` tasks: exposing `pydantic_ai.Agent` through ACP, adapter config/runtime ownership, prompt capabilities, slash commands, approvals, plans, hooks, projections, host-backed tools, and Pydantic-specific examples."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# pydantic-acp Skill
|
|
@@ -16,11 +16,14 @@ In this package that rule affects:
|
|
|
16
16
|
- model selection
|
|
17
17
|
- mode switching
|
|
18
18
|
- config options
|
|
19
|
+
- prompt capability advertisement
|
|
19
20
|
- ACP-native plans
|
|
20
21
|
- approval flows
|
|
21
22
|
- host-backed files and terminal access
|
|
22
23
|
- tool projection
|
|
23
24
|
- hook visibility
|
|
25
|
+
- external hook event projection
|
|
26
|
+
- custom slash commands
|
|
24
27
|
- session replay
|
|
25
28
|
|
|
26
29
|
## Start Here
|
|
@@ -30,18 +33,20 @@ If you only need the shortest high-signal path:
|
|
|
30
33
|
1. read `Quick Routing`
|
|
31
34
|
2. open the [adapter config module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/config.py) and the [package entrypoint](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/__init__.py) for public-surface questions
|
|
32
35
|
3. open the [runtime adapter](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/adapter.py) for lifecycle and dispatch questions
|
|
33
|
-
4. then branch into approvals, projections, host, or
|
|
36
|
+
4. then branch into approvals, projections, host, plans, slash commands, or prompt capabilities
|
|
34
37
|
|
|
35
38
|
## Quick Routing
|
|
36
39
|
|
|
37
40
|
| If the task is about... | Use this skill? | Open first |
|
|
38
41
|
| --- | --- | --- |
|
|
39
42
|
| `run_acp(agent=...)` or `create_acp_agent(...)` | Yes | [package entrypoint](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/__init__.py), [adapter config module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/config.py), [runtime adapter](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/adapter.py) |
|
|
40
|
-
| approvals or remembered policy | Yes | [approvals module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/approvals.py), [prompt-execution runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_execution.py) |
|
|
43
|
+
| approvals, permission presentation, or remembered policy | Yes | [approvals module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/approvals.py), [approval store module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/approval_store.py), [permission presentation module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/permission_presentation.py), [prompt-execution runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_execution.py) |
|
|
41
44
|
| plans or plan generation | Yes | [prepare-tools bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/prepare_tools.py), [native plan runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_native_plan_runtime.py), [models module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/models.py) |
|
|
42
45
|
| filesystem / terminal ownership | Yes | [host context module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/host/context.py), [filesystem host backend](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/host/filesystem.py), [terminal host backend](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/host/terminal.py), [host policy module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/host/policy.py) |
|
|
43
|
-
| hook visibility or hook projection | Yes | [hooks bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/hooks.py), [hook-introspection runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/hook_introspection.py), [hook projection module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/hook_projection.py) |
|
|
44
|
-
| slash commands / model / mode surface | Yes | [slash-commands runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/slash_commands.py), [
|
|
46
|
+
| hook visibility or external hook projection | Yes | [hooks bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/hooks.py), [external hooks bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/external_hooks.py), [hook-introspection runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/hook_introspection.py), [hook projection module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/hook_projection.py) |
|
|
47
|
+
| slash commands / model / mode surface | Yes | [custom slash command module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/slash.py), [slash-commands runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/slash_commands.py), [adapter-prompt runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_prompt.py), [providers module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/providers.py) |
|
|
48
|
+
| prompt capabilities or multimodal input flags | Yes | [prompt capabilities module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/prompt_capabilities.py), [adapter config module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/config.py), [prompt/resources docs](https://github.com/vcoderun/acpkit/blob/main/docs/pydantic-acp/prompt-resources.md) |
|
|
49
|
+
| filesystem search/list projection or tool classification | Yes | [projection module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/projection.py), [host backends docs](https://github.com/vcoderun/acpkit/blob/main/docs/host-backends.md), [projection cookbook](https://github.com/vcoderun/acpkit/blob/main/docs/projection-cookbook.md) |
|
|
45
50
|
| Codex auth refresh or `auth.json` | No, pair with `codex-auth-helper` | [Codex helper package](https://github.com/vcoderun/acpkit/tree/main/packages/helpers/codex-auth-helper) |
|
|
46
51
|
| remote hosting or WebSocket transport | No, pair with `acpremote` | [remote transport package](https://github.com/vcoderun/acpkit/tree/main/packages/transports/acpremote) |
|
|
47
52
|
|
|
@@ -56,6 +61,8 @@ It owns:
|
|
|
56
61
|
- ACP-native plan state and plan updates
|
|
57
62
|
- approval lifecycle and remembered approval policies
|
|
58
63
|
- hook introspection and hook projection
|
|
64
|
+
- external hook event buffering
|
|
65
|
+
- custom slash command discovery and handling
|
|
59
66
|
- host-backed filesystem and terminal ownership
|
|
60
67
|
- tool projection maps
|
|
61
68
|
- session store semantics and transcript replay
|
|
@@ -83,7 +90,10 @@ Package references:
|
|
|
83
90
|
- [Raw overview docs](https://raw.githubusercontent.com/vcoderun/acpkit/main/docs/pydantic-acp.md)
|
|
84
91
|
- [Raw host backends docs](https://raw.githubusercontent.com/vcoderun/acpkit/main/docs/host-backends.md)
|
|
85
92
|
- [Raw projection cookbook](https://raw.githubusercontent.com/vcoderun/acpkit/main/docs/projection-cookbook.md)
|
|
93
|
+
- [Raw runtime controls docs](https://raw.githubusercontent.com/vcoderun/acpkit/main/docs/pydantic-acp/runtime-controls.md)
|
|
94
|
+
- [Raw plans, thinking, and approvals docs](https://raw.githubusercontent.com/vcoderun/acpkit/main/docs/pydantic-acp/plans-thinking-approvals.md)
|
|
86
95
|
- [Raw prompt/resources docs](https://raw.githubusercontent.com/vcoderun/acpkit/main/docs/pydantic-acp/prompt-resources.md)
|
|
96
|
+
- [Raw API docs](https://raw.githubusercontent.com/vcoderun/acpkit/main/docs/api/pydantic_acp.md)
|
|
87
97
|
- [Rendered overview](https://vcoderun.github.io/acpkit/pydantic-acp/)
|
|
88
98
|
- [Source tree](https://github.com/vcoderun/acpkit/tree/main/packages/adapters/pydantic-acp)
|
|
89
99
|
|
|
@@ -102,7 +112,14 @@ High-value public seams:
|
|
|
102
112
|
- `AdapterConfig(...)`
|
|
103
113
|
- `MemorySessionStore`
|
|
104
114
|
- `FileSessionStore`
|
|
115
|
+
- `AdapterPromptCapabilities`
|
|
105
116
|
- `NativeApprovalBridge`
|
|
117
|
+
- `PermissionToolCallBuilder`
|
|
118
|
+
- `ApprovalPolicyStore`
|
|
119
|
+
- `SlashCommandProvider`
|
|
120
|
+
- `StaticSlashCommandProvider`
|
|
121
|
+
- `ExternalHookEventBridge`
|
|
122
|
+
- `ProjectionAwareToolClassifier`
|
|
106
123
|
- `ClientHostContext`
|
|
107
124
|
- `CompatibilityManifest`
|
|
108
125
|
- `BlackBoxHarness`
|
|
@@ -115,9 +132,9 @@ Package entrypoint:
|
|
|
115
132
|
|
|
116
133
|
| Subsystem | Key files | Use them for |
|
|
117
134
|
| --- | --- | --- |
|
|
118
|
-
| public surface and construction | [package entrypoint](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/__init__.py), [adapter config module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/config.py), [agent source module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/agent_source.py), [agent type definitions](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/agent_types.py), [models module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/models.py), [providers module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/providers.py) | public API shape, construction seams, provider contracts |
|
|
119
|
-
| approvals | [approvals module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/approvals.py), [prompt-execution runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_execution.py), [prompt runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_runtime.py) | deferred approvals, remembered policy, permission
|
|
120
|
-
| bridges | [base bridge module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/base.py), [capability-support bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/capability_support.py), [history-processor bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/history_processor.py), [hooks bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/hooks.py), [MCP bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/mcp.py), [prepare-tools bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/prepare_tools.py), [thinking bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/thinking.py) | optional capability wiring and extension seams |
|
|
135
|
+
| public surface and construction | [package entrypoint](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/__init__.py), [adapter config module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/config.py), [prompt capabilities module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/prompt_capabilities.py), [agent source module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/agent_source.py), [agent type definitions](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/agent_types.py), [models module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/models.py), [providers module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/providers.py) | public API shape, construction seams, prompt capability flags, provider contracts |
|
|
136
|
+
| approvals | [approvals module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/approvals.py), [approval store module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/approval_store.py), [permission presentation module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/permission_presentation.py), [prompt-execution runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_execution.py), [prompt runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_runtime.py) | deferred approvals, remembered policy, permission cards, projection-aware approval context |
|
|
137
|
+
| bridges | [base bridge module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/base.py), [capability-support bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/capability_support.py), [external hooks bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/external_hooks.py), [history-processor bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/history_processor.py), [hooks bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/hooks.py), [MCP bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/mcp.py), [prepare-tools bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/prepare_tools.py), [thinking bridge](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/thinking.py) | optional capability wiring, external event projection, and extension seams |
|
|
121
138
|
| projection | [projection module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/projection.py), [projection helper module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/projection_helpers.py), [projection text helpers](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/_projection_text.py), [projection risk helpers](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/_projection_risk.py), [hook projection module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/hook_projection.py) | ACP-visible transcript cards and rendering |
|
|
122
139
|
| host ownership | [host context module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/host/context.py), [filesystem host backend](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/host/filesystem.py), [terminal host backend](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/host/terminal.py), [host policy module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/host/policy.py), [path policy helpers](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/host/_policy_paths.py), [command policy helpers](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/host/_policy_commands.py) | path safety, command safety, client-backed host behavior |
|
|
123
140
|
| runtime core | [runtime adapter](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/adapter.py), [runtime server](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/server.py), [bridge manager](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/bridge_manager.py), [hook-introspection runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/hook_introspection.py), [session surface module](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/session_surface.py), [slash-commands runtime](https://github.com/vcoderun/acpkit/blob/main/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/slash_commands.py) | adapter lifecycle, runtime update emission, slash command behavior |
|
|
@@ -174,6 +191,7 @@ It supports:
|
|
|
174
191
|
- config options
|
|
175
192
|
- ACP-native plans
|
|
176
193
|
- tool-based or structured plan generation
|
|
194
|
+
- custom slash command providers
|
|
177
195
|
- session replay and fork/resume/load/close/list lifecycle
|
|
178
196
|
- slash command discovery and rendering
|
|
179
197
|
|
|
@@ -196,6 +214,7 @@ High-value bridges include:
|
|
|
196
214
|
- `McpCapabilityBridge`
|
|
197
215
|
- `ToolsetBridge`
|
|
198
216
|
- `PrefixToolsBridge`
|
|
217
|
+
- `ExternalHookEventBridge`
|
|
199
218
|
- `OpenAICompactionBridge`
|
|
200
219
|
- `AnthropicCompactionBridge`
|
|
201
220
|
|
|
@@ -206,11 +225,14 @@ High-value projection families include:
|
|
|
206
225
|
- `BuiltinToolProjectionMap`
|
|
207
226
|
- `HookProjectionMap`
|
|
208
227
|
- `CompositeProjectionMap`
|
|
228
|
+
- `ProjectionAwareToolClassifier`
|
|
209
229
|
|
|
210
230
|
Important rule:
|
|
211
231
|
|
|
212
232
|
- bridges affect runtime behavior and metadata
|
|
213
233
|
- projection maps affect ACP-visible transcript rendering
|
|
234
|
+
- `FileSystemProjectionMap` search/list tree rendering is opt-in and never reads the filesystem
|
|
235
|
+
- `ProjectionAwareToolClassifier` classifies only configured tool names and delegates unknown tools
|
|
214
236
|
|
|
215
237
|
Split those concerns before editing.
|
|
216
238
|
|
|
@@ -238,6 +260,7 @@ Use this skill when the task is about:
|
|
|
238
260
|
This package also owns the more subtle Pydantic-specific surfaces:
|
|
239
261
|
|
|
240
262
|
- prompt-to-input conversion
|
|
263
|
+
- prompt capability advertisement through `AdapterPromptCapabilities`
|
|
241
264
|
- prompt-model override providers
|
|
242
265
|
- media-aware model routing
|
|
243
266
|
- transcript-to-history rebuilding
|
|
@@ -330,4 +353,11 @@ Stay in this skill when the main issue is:
|
|
|
330
353
|
- Do not route LangChain or DeepAgents questions through this skill.
|
|
331
354
|
- Do not answer Codex auth refresh questions from here unless the adapter integration itself is
|
|
332
355
|
the point.
|
|
356
|
+
- Do not add `permission_tool_call_builder` to `AdapterConfig`; permission rendering belongs on
|
|
357
|
+
`NativeApprovalBridge.tool_call_builder`.
|
|
358
|
+
- Keep `ApprovalBridge` compatible with the legacy no-`projection_map` signature. Use
|
|
359
|
+
`ProjectionAwareApprovalBridge` only for bridges that explicitly accept projected context.
|
|
360
|
+
- Do not make custom slash commands collide with built-in commands or mode names.
|
|
361
|
+
- Treat `ExternalHookEventBridge.metadata_key=None` as the way to suppress bridge metadata
|
|
362
|
+
publication.
|
|
333
363
|
- If the task is really about remote transport, move to `acpremote`.
|
|
@@ -44,7 +44,7 @@ jobs:
|
|
|
44
44
|
- name: Run Tests
|
|
45
45
|
run: make tests
|
|
46
46
|
|
|
47
|
-
- name: Build Root, Adapter, And
|
|
47
|
+
- name: Build Root, Adapter, Helper, And Transport Projects
|
|
48
48
|
shell: bash
|
|
49
49
|
run: |
|
|
50
50
|
project_dirs() {
|
|
@@ -54,6 +54,9 @@ jobs:
|
|
|
54
54
|
if [ -d packages/adapters ]; then
|
|
55
55
|
find packages/adapters -type f -name pyproject.toml -exec dirname {} \; | sort -u
|
|
56
56
|
fi
|
|
57
|
+
if [ -d packages/transports ]; then
|
|
58
|
+
find packages/transports -type f -name pyproject.toml -exec dirname {} \; | sort -u
|
|
59
|
+
fi
|
|
57
60
|
printf '.\n'
|
|
58
61
|
}
|
|
59
62
|
|
|
@@ -38,7 +38,7 @@ jobs:
|
|
|
38
38
|
uv sync --all-extras
|
|
39
39
|
make prod
|
|
40
40
|
|
|
41
|
-
- name: Build And Publish Root, Adapter, And
|
|
41
|
+
- name: Build And Publish Root, Adapter, Helper, And Transport Projects
|
|
42
42
|
shell: bash
|
|
43
43
|
run: |
|
|
44
44
|
project_dirs() {
|
|
@@ -48,6 +48,9 @@ jobs:
|
|
|
48
48
|
if [ -d packages/adapters ]; then
|
|
49
49
|
find packages/adapters -type f -name pyproject.toml -exec dirname {} \; | sort -u
|
|
50
50
|
fi
|
|
51
|
+
if [ -d packages/transports ]; then
|
|
52
|
+
find packages/transports -type f -name pyproject.toml -exec dirname {} \; | sort -u
|
|
53
|
+
fi
|
|
51
54
|
printf '.\n'
|
|
52
55
|
}
|
|
53
56
|
|
acpkit-0.9.2/COVERAGE
ADDED
acpkit-0.9.2/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.9.2
|
|
@@ -16,6 +16,8 @@ This page documents the public surface re-exported by `pydantic_acp`.
|
|
|
16
16
|
|
|
17
17
|
::: pydantic_acp.AdapterModel
|
|
18
18
|
|
|
19
|
+
::: pydantic_acp.AdapterPromptCapabilities
|
|
20
|
+
|
|
19
21
|
::: pydantic_acp.AcpSessionContext
|
|
20
22
|
|
|
21
23
|
::: pydantic_acp.JsonValue
|
|
@@ -58,6 +60,14 @@ This page documents the public surface re-exported by `pydantic_acp`.
|
|
|
58
60
|
|
|
59
61
|
::: pydantic_acp.ApprovalStateProvider
|
|
60
62
|
|
|
63
|
+
::: pydantic_acp.ApprovalPolicy
|
|
64
|
+
|
|
65
|
+
::: pydantic_acp.ApprovalPolicyStore
|
|
66
|
+
|
|
67
|
+
::: pydantic_acp.SessionMetadataApprovalPolicyStore
|
|
68
|
+
|
|
69
|
+
::: pydantic_acp.PermissionOptionSet
|
|
70
|
+
|
|
61
71
|
## Bridge Classes
|
|
62
72
|
|
|
63
73
|
::: pydantic_acp.CapabilityBridge
|
|
@@ -72,6 +82,10 @@ This page documents the public surface re-exported by `pydantic_acp`.
|
|
|
72
82
|
|
|
73
83
|
::: pydantic_acp.HookBridge
|
|
74
84
|
|
|
85
|
+
::: pydantic_acp.ExternalHookEventBridge
|
|
86
|
+
|
|
87
|
+
::: pydantic_acp.EventEmissionMode
|
|
88
|
+
|
|
75
89
|
::: pydantic_acp.HistoryProcessorBridge
|
|
76
90
|
|
|
77
91
|
::: pydantic_acp.ThreadExecutorBridge
|
|
@@ -118,6 +132,36 @@ This page documents the public surface re-exported by `pydantic_acp`.
|
|
|
118
132
|
|
|
119
133
|
::: pydantic_acp.CompositeProjectionMap
|
|
120
134
|
|
|
135
|
+
::: pydantic_acp.ProjectionAwareToolClassifier
|
|
136
|
+
|
|
137
|
+
## Approval Presentation
|
|
138
|
+
|
|
139
|
+
::: pydantic_acp.PermissionRequestContext
|
|
140
|
+
|
|
141
|
+
::: pydantic_acp.PermissionToolCallBuilder
|
|
142
|
+
|
|
143
|
+
::: pydantic_acp.DefaultPermissionToolCallBuilder
|
|
144
|
+
|
|
145
|
+
::: pydantic_acp.NativeApprovalBridge
|
|
146
|
+
|
|
147
|
+
::: pydantic_acp.ProjectionAwareApprovalBridge
|
|
148
|
+
|
|
149
|
+
::: pydantic_acp.supports_projection_aware_approval_bridge
|
|
150
|
+
|
|
151
|
+
## Slash Commands
|
|
152
|
+
|
|
153
|
+
::: pydantic_acp.SlashCommandRequest
|
|
154
|
+
|
|
155
|
+
::: pydantic_acp.SlashCommandResult
|
|
156
|
+
|
|
157
|
+
::: pydantic_acp.SlashCommandProvider
|
|
158
|
+
|
|
159
|
+
::: pydantic_acp.StaticSlashCommand
|
|
160
|
+
|
|
161
|
+
::: pydantic_acp.StaticSlashCommandProvider
|
|
162
|
+
|
|
163
|
+
::: pydantic_acp.SlashCommandHandler
|
|
164
|
+
|
|
121
165
|
## Projection Helpers
|
|
122
166
|
|
|
123
167
|
::: pydantic_acp.truncate_text
|
|
@@ -37,6 +37,29 @@ Use plain `CapabilityBridge` when you only need to:
|
|
|
37
37
|
|
|
38
38
|
Use `BufferedCapabilityBridge` when the bridge also needs to emit ACP transcript updates over time.
|
|
39
39
|
|
|
40
|
+
## External Hook Events
|
|
41
|
+
|
|
42
|
+
Use `ExternalHookEventBridge` when an integration already knows about lifecycle events and wants to project them into ACP without installing Pydantic AI hooks or writing directly to the ACP client.
|
|
43
|
+
|
|
44
|
+
```python
|
|
45
|
+
from pydantic_acp import ExternalHookEventBridge, HookEvent
|
|
46
|
+
|
|
47
|
+
bridge = ExternalHookEventBridge()
|
|
48
|
+
bridge.record_event(
|
|
49
|
+
session,
|
|
50
|
+
HookEvent(
|
|
51
|
+
event_id="before_run",
|
|
52
|
+
hook_name="before_run",
|
|
53
|
+
tool_name=None,
|
|
54
|
+
tool_filters=(),
|
|
55
|
+
raw_output="completed",
|
|
56
|
+
status="completed",
|
|
57
|
+
),
|
|
58
|
+
)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The bridge buffers updates and the adapter drains them through the normal bridge manager. Its session metadata appears under `external_hooks` by default and includes emission mode, pending event count, hidden event ids, and projection title prefix.
|
|
62
|
+
|
|
40
63
|
### Override Matrix
|
|
41
64
|
|
|
42
65
|
| Method | Override it when | Return value |
|
|
@@ -106,8 +129,6 @@ ACP Kit models those callable shapes locally and passes them through the public
|
|
|
106
129
|
|
|
107
130
|
That means:
|
|
108
131
|
|
|
109
|
-
- bridge extension code should import history-processor aliases from
|
|
110
|
-
`pydantic_acp`, not from `pydantic_ai._history_processor`
|
|
111
132
|
- the adapter is no longer directly coupled to upstream private
|
|
112
133
|
history-processor imports
|
|
113
134
|
|
|
@@ -8,6 +8,7 @@ This example is the maintained DeepAgents-facing showcase for `langchain-acp`.
|
|
|
8
8
|
|
|
9
9
|
It demonstrates:
|
|
10
10
|
|
|
11
|
+
- a Codex-backed `ChatOpenAI` model created through `codex-auth-helper`
|
|
11
12
|
- wiring a DeepAgents graph through `langchain-acp`
|
|
12
13
|
- `DeepAgentsCompatibilityBridge`
|
|
13
14
|
- `DeepAgentsProjectionMap`
|
|
@@ -30,6 +31,12 @@ Run it:
|
|
|
30
31
|
uv run python -m examples.langchain.deepagents_graph
|
|
31
32
|
```
|
|
32
33
|
|
|
34
|
+
Required local state:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
~/.codex/auth.json
|
|
38
|
+
```
|
|
39
|
+
|
|
33
40
|
If you want the module-level compiled graph directly, the example exports `graph` when `deepagents` is installed:
|
|
34
41
|
|
|
35
42
|
```bash
|
|
@@ -10,6 +10,15 @@ This example demonstrates the helper-to-adapter path for LangChain:
|
|
|
10
10
|
- `langchain.agents.create_agent(...)` owns the graph
|
|
11
11
|
- `langchain-acp` exposes that graph through ACP
|
|
12
12
|
|
|
13
|
+
The model factory call must pass `instructions=` explicitly:
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
model = create_codex_chat_openai(
|
|
17
|
+
"gpt-5.4",
|
|
18
|
+
instructions="You are a helpful coding assistant.",
|
|
19
|
+
)
|
|
20
|
+
```
|
|
21
|
+
|
|
13
22
|
Run it:
|
|
14
23
|
|
|
15
24
|
```bash
|
|
@@ -22,6 +31,12 @@ Required local state:
|
|
|
22
31
|
~/.codex/auth.json
|
|
23
32
|
```
|
|
24
33
|
|
|
34
|
+
Override the default model when needed:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
CODEX_MODEL=gpt-5.4-mini uv run python -m examples.langchain.codex_graph
|
|
38
|
+
```
|
|
39
|
+
|
|
25
40
|
If you have not logged in yet:
|
|
26
41
|
|
|
27
42
|
```bash
|