acpkit 0.8.0__tar.gz → 0.8.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.8.0 → acpkit-0.8.2}/.gitignore +1 -0
- acpkit-0.8.2/PKG-INFO +402 -0
- acpkit-0.8.2/README.md +336 -0
- acpkit-0.8.2/VERSION +1 -0
- acpkit-0.8.2/packages/adapters/pydantic-acp/VERSION +1 -0
- {acpkit-0.8.0/src/acpkit → acpkit-0.8.2/packages/adapters/pydantic-acp/src/pydantic_acp}/_version.py +1 -1
- acpkit-0.8.2/packages/helpers/codex-auth-helper/VERSION +1 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/_version.py +1 -1
- {acpkit-0.8.0/packages/adapters/pydantic-acp/src/pydantic_acp → acpkit-0.8.2/src/acpkit}/_version.py +1 -1
- acpkit-0.8.0/PKG-INFO +0 -656
- acpkit-0.8.0/README.md +0 -590
- acpkit-0.8.0/VERSION +0 -1
- acpkit-0.8.0/packages/adapters/pydantic-acp/VERSION +0 -1
- acpkit-0.8.0/packages/helpers/codex-auth-helper/VERSION +0 -1
- {acpkit-0.8.0 → acpkit-0.8.2}/.agents/skills/acpkit-sdk/SKILL.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.agents/skills/acpkit-sdk/agents/openai.yaml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.agents/skills/acpkit-sdk/resources/intro.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.agents/skills/acpkit-sdk/scripts/list_examples.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.agents/skills/acpkit-sdk/scripts/list_public_exports.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.cursorrules +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.editorconfig +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.github/dependabot.yml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.github/workflows/ci.yml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.github/workflows/codecov.yml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.github/workflows/docs.yml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.github/workflows/publish.yml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.github/workflows/test.yml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.pre-commit-config.yaml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/.python-version +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/CHANGELOG +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/CODE_OF_CONDUCT.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/CONTRIBUTING.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/COVERAGE +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/LICENSE +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/Makefile +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/SECURITY.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/context7.json +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/.partials/index-header.html +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/about/index.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/api/acpkit.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/api/codex_auth_helper.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/api/pydantic_acp.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/bridges.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/cli.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/compatibility-matrix-template.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/examples/finance.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/examples/index.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/examples/travel.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/getting-started/installation.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/getting-started/quickstart.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/helpers.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/host-backends.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/index.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/integration-audit.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/integration-readiness.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/integration-testing.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/llms-full.txt +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/llms.txt +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/projection-cookbook.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/providers.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/pydantic-acp/adapter-config.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/pydantic-acp/plans-thinking-approvals.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/pydantic-acp/prompt-resources.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/pydantic-acp/runtime-controls.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/pydantic-acp/session-state.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/pydantic-acp.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/stylesheets/tweaks.css +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/docs/testing.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/examples/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/examples/pydantic/.gitignore +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/examples/pydantic/.travel-agent/ideas.txt +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/examples/pydantic/.travel-agent/itinerary.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/examples/pydantic/README.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/examples/pydantic/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/examples/pydantic/finance_agent.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/examples/pydantic/travel_agent.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/mkdocs.yml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/README.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/pyproject.toml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/_projection_risk.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/_projection_text.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/_slash_commands.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_source.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_types.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/approvals.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/awaitables.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/_hook_capability.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/base.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/capability_support.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/history_processor.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/hooks.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/mcp.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/prepare_tools.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/thinking.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/builders/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/builders/agent.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/config.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/hook_projection.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/_policy_commands.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/_policy_paths.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/context.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/filesystem.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/policy.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/terminal.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/models.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/projection.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/projection_helpers.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/providers.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/py.typed +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_mixins.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_prompt.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_agent_state.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_compat.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_native_plan_runtime.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_execution.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_model_runtime.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_runtime.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_lifecycle.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_model_runtime.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_runtime.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_surface_runtime.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/adapter.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/bridge_manager.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/hook_introspection.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/prompts.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/server.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/session_surface.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/slash_commands.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/serialization.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/session/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/session/state.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/session/store.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/fakes.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/harness.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/adapters/pydantic-acp/src/pydantic_acp/types.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/.gitignore +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/LICENSE +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/README.md +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/pyproject.toml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/config.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/manager.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/state.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/store.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/client.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/factory.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/model.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/py.typed +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/pyproject.toml +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/pyrightconfig.json +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/scripts/check_pypi_versions.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/scripts/demo_mcp_server.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/scripts/generate_llms_docs.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/scripts/mock_hook_audit.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/scripts/mock_hook_snapshot.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/scripts/run_if_major_change.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/scripts/save_coverage_summary.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/src/acpkit/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/src/acpkit/__main__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/src/acpkit/_compatibility_schema.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/src/acpkit/adapters.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/src/acpkit/cli.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/src/acpkit/compatibility.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/src/acpkit/py.typed +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/src/acpkit/runtime.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/codex_auth_helper/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/codex_auth_helper/support.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/codex_auth_helper/test_auth.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/codex_auth_helper/test_factory.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/conftest.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/__init__.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/support.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_adapter_helpers.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_approvals.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_bridge_builder.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_bridge_capability_support.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_bridge_hooks.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_bridge_mcp.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_bridge_prepare_tools.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_bridge_thinking.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_bridge_web_capabilities.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_compat.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_examples.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_hook_introspection.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_host.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_host_policy.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_low_level_helpers.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_models.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_projection.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_projection_helpers.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_runtime.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_session_runtime_helpers.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_slash_commands.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_sources.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_testing_fakes.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/pydantic/test_testing_harness.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/test_acpkit_cli.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/test_compatibility_manifest.py +0 -0
- {acpkit-0.8.0 → acpkit-0.8.2}/tests/test_native_pydantic_agent.py +0 -0
acpkit-0.8.2/PKG-INFO
ADDED
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: acpkit
|
|
3
|
+
Version: 0.8.2
|
|
4
|
+
Summary: ACP Kit provides a common adapter for Agent Frameworks.
|
|
5
|
+
Project-URL: Homepage, https://github.com/vcoderun/acpkit
|
|
6
|
+
Project-URL: Issues, https://github.com/vcoderun/acpkit/issues
|
|
7
|
+
Project-URL: Repository, https://github.com/vcoderun/acpkit
|
|
8
|
+
License: Apache 2.0
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: acp,agents,protocol,pydantic-ai
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Requires-Python: >=3.11
|
|
18
|
+
Requires-Dist: click>=8.1.8
|
|
19
|
+
Requires-Dist: mcp>=1.27.0
|
|
20
|
+
Requires-Dist: typing-extensions>=4.12.0
|
|
21
|
+
Provides-Extra: all
|
|
22
|
+
Requires-Dist: agent-client-protocol>=0.9.0; extra == 'all'
|
|
23
|
+
Requires-Dist: basedpyright; extra == 'all'
|
|
24
|
+
Requires-Dist: codex-auth-helper; extra == 'all'
|
|
25
|
+
Requires-Dist: mkdocs-material; extra == 'all'
|
|
26
|
+
Requires-Dist: mkdocstrings[python]; extra == 'all'
|
|
27
|
+
Requires-Dist: pre-commit; extra == 'all'
|
|
28
|
+
Requires-Dist: pydantic-acp; extra == 'all'
|
|
29
|
+
Requires-Dist: pydantic-ai-slim; extra == 'all'
|
|
30
|
+
Requires-Dist: pydantic-graph; extra == 'all'
|
|
31
|
+
Requires-Dist: pydantic>=2.7; extra == 'all'
|
|
32
|
+
Requires-Dist: pytest; extra == 'all'
|
|
33
|
+
Requires-Dist: pytest-asyncio; extra == 'all'
|
|
34
|
+
Requires-Dist: pytest-cov; extra == 'all'
|
|
35
|
+
Requires-Dist: python-dotenv; extra == 'all'
|
|
36
|
+
Requires-Dist: ruff; extra == 'all'
|
|
37
|
+
Requires-Dist: ty; extra == 'all'
|
|
38
|
+
Requires-Dist: typing-extensions>=4.12.0; extra == 'all'
|
|
39
|
+
Requires-Dist: uv>=0.8.3; extra == 'all'
|
|
40
|
+
Provides-Extra: codex
|
|
41
|
+
Requires-Dist: codex-auth-helper; extra == 'codex'
|
|
42
|
+
Provides-Extra: dev
|
|
43
|
+
Requires-Dist: agent-client-protocol>=0.9.0; extra == 'dev'
|
|
44
|
+
Requires-Dist: basedpyright; extra == 'dev'
|
|
45
|
+
Requires-Dist: codex-auth-helper; extra == 'dev'
|
|
46
|
+
Requires-Dist: pre-commit; extra == 'dev'
|
|
47
|
+
Requires-Dist: pydantic-acp; extra == 'dev'
|
|
48
|
+
Requires-Dist: pydantic-ai-slim; extra == 'dev'
|
|
49
|
+
Requires-Dist: pydantic-graph; extra == 'dev'
|
|
50
|
+
Requires-Dist: pydantic>=2.7; extra == 'dev'
|
|
51
|
+
Requires-Dist: pytest; extra == 'dev'
|
|
52
|
+
Requires-Dist: pytest-asyncio; extra == 'dev'
|
|
53
|
+
Requires-Dist: pytest-cov; extra == 'dev'
|
|
54
|
+
Requires-Dist: python-dotenv; extra == 'dev'
|
|
55
|
+
Requires-Dist: ruff; extra == 'dev'
|
|
56
|
+
Requires-Dist: ty; extra == 'dev'
|
|
57
|
+
Requires-Dist: typing-extensions>=4.12.0; extra == 'dev'
|
|
58
|
+
Provides-Extra: docs
|
|
59
|
+
Requires-Dist: mkdocs-material; extra == 'docs'
|
|
60
|
+
Requires-Dist: mkdocstrings[python]; extra == 'docs'
|
|
61
|
+
Provides-Extra: launch
|
|
62
|
+
Requires-Dist: uv>=0.8.3; extra == 'launch'
|
|
63
|
+
Provides-Extra: pydantic
|
|
64
|
+
Requires-Dist: pydantic-acp; extra == 'pydantic'
|
|
65
|
+
Description-Content-Type: text/markdown
|
|
66
|
+
|
|
67
|
+
# ACP Kit
|
|
68
|
+
|
|
69
|
+
[](https://github.com/vcoderun/acpkit/actions/workflows/ci.yml) [](https://codecov.io/gh/vcoderun/acpkit) [](https://pypi.org/project/acpkit/) [](https://pypi.org/project/acpkit/) [](https://github.com/vcoderun/acpkit/releases) [](https://github.com/vcoderun/acpkit/blob/main/LICENSE)
|
|
70
|
+
|
|
71
|
+
ACP Kit is the adapter toolkit and monorepo for turning an existing agent surface into a truthful ACP server boundary.
|
|
72
|
+
|
|
73
|
+
Today the production focus is `pydantic-acp`: exposing an existing `pydantic_ai.Agent` through ACP without rewriting the agent or inventing ACP state the runtime cannot really honor.
|
|
74
|
+
|
|
75
|
+
The repo currently ships three main Python packages:
|
|
76
|
+
|
|
77
|
+
- `acpkit`
|
|
78
|
+
Root CLI, target resolver, and launch helpers.
|
|
79
|
+
- `pydantic-acp`
|
|
80
|
+
Production-grade ACP adapter for `pydantic_ai.Agent`.
|
|
81
|
+
- `codex-auth-helper`
|
|
82
|
+
Helper package for building Codex-backed Pydantic AI Responses models from a local Codex login.
|
|
83
|
+
|
|
84
|
+
ACP Kit is not a new agent framework. The intended workflow is:
|
|
85
|
+
|
|
86
|
+
1. Keep your existing agent surface.
|
|
87
|
+
2. Expose it through ACP with `run_acp(...)` or `create_acp_agent(...)`.
|
|
88
|
+
3. Add only the ACP-visible state your runtime can actually honor: models, modes, plans, approvals, projection maps, MCP metadata, and host-backed tools.
|
|
89
|
+
|
|
90
|
+
## Installation
|
|
91
|
+
|
|
92
|
+
Production:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
uv add "acpkit[pydantic]"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
pip install "acpkit[pydantic]"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
With `acpkit launch` support:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
uv add "acpkit[pydantic,launch]"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
pip install "acpkit[pydantic,launch]"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Contributor setup:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
uv sync --extra dev --extra docs --extra pydantic
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
pip install -e ".[dev,docs,pydantic]"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Contributor setup and validation commands are documented in [CONTRIBUTING.md](https://github.com/vcoderun/acpkit/blob/main/CONTRIBUTING.md).
|
|
123
|
+
|
|
124
|
+
## Quickstart
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
from pydantic_ai import Agent
|
|
128
|
+
from pydantic_acp import run_acp
|
|
129
|
+
|
|
130
|
+
agent = Agent("openai:gpt-5", name="weather-agent")
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
@agent.tool_plain
|
|
134
|
+
def get_weather(city: str) -> str:
|
|
135
|
+
return f"Weather in {city}: sunny"
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
run_acp(agent=agent)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
If you want the ACP agent object without starting the server immediately:
|
|
142
|
+
|
|
143
|
+
```python
|
|
144
|
+
from acp import run_agent
|
|
145
|
+
from pydantic_ai import Agent
|
|
146
|
+
from pydantic_acp import AdapterConfig, MemorySessionStore, create_acp_agent
|
|
147
|
+
|
|
148
|
+
agent = Agent("openai:gpt-5", name="composable-agent")
|
|
149
|
+
|
|
150
|
+
acp_agent = create_acp_agent(
|
|
151
|
+
agent=agent,
|
|
152
|
+
config=AdapterConfig(session_store=MemorySessionStore()),
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
run_agent(acp_agent)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## CLI
|
|
159
|
+
|
|
160
|
+
Expose a supported target through ACP:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
acpkit run my_agent
|
|
164
|
+
acpkit run my_agent:agent
|
|
165
|
+
acpkit run app.agents.demo:agent -p ./examples
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
`acpkit` resolves `module` or `module:attribute` targets, auto-detects supported agent instances, and dispatches them to the installed adapter package. If only the module is given, it selects the last defined supported agent instance in that module.
|
|
169
|
+
|
|
170
|
+
Launch a target through Toad ACP:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
acpkit launch my_agent
|
|
174
|
+
acpkit launch my_agent:agent -p ./examples
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
If the script already starts its own ACP server and should be launched directly:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
acpkit launch -c "python3.11 finance_agent.py"
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
`launch TARGET` and `launch --command ...` are mutually exclusive. `-p/--path` only applies to `TARGET` mode.
|
|
184
|
+
|
|
185
|
+
## What `pydantic-acp` Supports
|
|
186
|
+
|
|
187
|
+
`AdapterConfig` is the main runtime surface. Common ownership seams include:
|
|
188
|
+
|
|
189
|
+
- session stores and lifecycle
|
|
190
|
+
- model selection
|
|
191
|
+
- mode and config state
|
|
192
|
+
- approval bridges
|
|
193
|
+
- native plan state or host-owned plan providers
|
|
194
|
+
- capability bridges
|
|
195
|
+
- projection maps and tool classification
|
|
196
|
+
- prompt-model override providers
|
|
197
|
+
|
|
198
|
+
Prompt resource support includes:
|
|
199
|
+
|
|
200
|
+
- ACP text blocks
|
|
201
|
+
- resource links
|
|
202
|
+
- embedded text resources
|
|
203
|
+
- image blocks
|
|
204
|
+
- audio blocks
|
|
205
|
+
- embedded binary resources
|
|
206
|
+
|
|
207
|
+
Host-facing utilities include:
|
|
208
|
+
|
|
209
|
+
- `HostAccessPolicy` for typed filesystem and terminal guardrails
|
|
210
|
+
- `ClientHostContext` for ACP client-backed host access
|
|
211
|
+
- `BlackBoxHarness` for ACP boundary integration tests
|
|
212
|
+
- `CompatibilityManifest` for documenting the ACP surface an integration truly supports
|
|
213
|
+
|
|
214
|
+
## Native Plan Mode And `TaskPlan`
|
|
215
|
+
|
|
216
|
+
`pydantic-acp` now uses `TaskPlan` as the structured native plan output surface.
|
|
217
|
+
|
|
218
|
+
Native plan mode is typically enabled through `PrepareToolsBridge`:
|
|
219
|
+
|
|
220
|
+
```python
|
|
221
|
+
from pydantic_ai import Agent
|
|
222
|
+
from pydantic_ai.tools import RunContext, ToolDefinition
|
|
223
|
+
from pydantic_acp import (
|
|
224
|
+
AdapterConfig,
|
|
225
|
+
PrepareToolsBridge,
|
|
226
|
+
PrepareToolsMode,
|
|
227
|
+
run_acp,
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
def read_only_tools(
|
|
232
|
+
ctx: RunContext[None],
|
|
233
|
+
tool_defs: list[ToolDefinition],
|
|
234
|
+
) -> list[ToolDefinition]:
|
|
235
|
+
del ctx
|
|
236
|
+
return list(tool_defs)
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
agent = Agent("openai:gpt-5", name="plan-agent")
|
|
240
|
+
|
|
241
|
+
run_acp(
|
|
242
|
+
agent=agent,
|
|
243
|
+
config=AdapterConfig(
|
|
244
|
+
capability_bridges=[
|
|
245
|
+
PrepareToolsBridge(
|
|
246
|
+
default_mode_id="plan",
|
|
247
|
+
default_plan_generation_type="structured",
|
|
248
|
+
modes=[
|
|
249
|
+
PrepareToolsMode(
|
|
250
|
+
id="plan",
|
|
251
|
+
name="Plan",
|
|
252
|
+
description="Return a structured ACP task plan.",
|
|
253
|
+
prepare_func=read_only_tools,
|
|
254
|
+
plan_mode=True,
|
|
255
|
+
),
|
|
256
|
+
],
|
|
257
|
+
),
|
|
258
|
+
],
|
|
259
|
+
),
|
|
260
|
+
)
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Key rules:
|
|
264
|
+
|
|
265
|
+
- `plan_generation_type="structured"` is the default native plan-mode behavior.
|
|
266
|
+
- In `structured` mode, the adapter expects structured `TaskPlan` output instead of exposing `acp_set_plan`.
|
|
267
|
+
- Switch to `plan_generation_type="tools"` when you explicitly want tool-based native plan recording.
|
|
268
|
+
- Keep `plan_tools=True` for progress tools such as `acp_update_plan_entry` and `acp_mark_plan_done`.
|
|
269
|
+
- Native plan state and a host-owned `plan_provider` are separate seams. Use one truth source per workflow.
|
|
270
|
+
|
|
271
|
+
## Projection Maps
|
|
272
|
+
|
|
273
|
+
Projection maps decide how known tool families render into ACP-visible updates instead of raw text blobs.
|
|
274
|
+
|
|
275
|
+
Built-in projection helpers:
|
|
276
|
+
|
|
277
|
+
- `FileSystemProjectionMap`
|
|
278
|
+
Filesystem reads, writes, and command previews into ACP diffs and rich status cards.
|
|
279
|
+
- `HookProjectionMap`
|
|
280
|
+
Re-label or hide selected `Hooks(...)` lifecycle events.
|
|
281
|
+
- `WebToolProjectionMap`
|
|
282
|
+
Rich rendering for web-search and web-fetch style tool families.
|
|
283
|
+
- `BuiltinToolProjectionMap`
|
|
284
|
+
Rich rendering for built-in upstream capability tools such as web search, web fetch, image generation, and upstream MCP capability calls.
|
|
285
|
+
|
|
286
|
+
Example:
|
|
287
|
+
|
|
288
|
+
```python
|
|
289
|
+
from pydantic_acp import (
|
|
290
|
+
AdapterConfig,
|
|
291
|
+
BuiltinToolProjectionMap,
|
|
292
|
+
FileSystemProjectionMap,
|
|
293
|
+
HookProjectionMap,
|
|
294
|
+
run_acp,
|
|
295
|
+
)
|
|
296
|
+
|
|
297
|
+
run_acp(
|
|
298
|
+
agent=agent,
|
|
299
|
+
config=AdapterConfig(
|
|
300
|
+
projection_maps=[
|
|
301
|
+
FileSystemProjectionMap(
|
|
302
|
+
default_read_tool="read_file",
|
|
303
|
+
default_write_tool="write_file",
|
|
304
|
+
),
|
|
305
|
+
HookProjectionMap(
|
|
306
|
+
hidden_event_ids=frozenset({"after_model_request"}),
|
|
307
|
+
event_labels={"before_model_request": "Preparing Request"},
|
|
308
|
+
),
|
|
309
|
+
BuiltinToolProjectionMap(),
|
|
310
|
+
],
|
|
311
|
+
),
|
|
312
|
+
)
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
## Capability Bridges
|
|
316
|
+
|
|
317
|
+
Capability bridges extend runtime behavior without hard-coding one product shape into the adapter core.
|
|
318
|
+
|
|
319
|
+
Current built-in bridges include:
|
|
320
|
+
|
|
321
|
+
- `ThinkingBridge`
|
|
322
|
+
- `PrepareToolsBridge`
|
|
323
|
+
- `ThreadExecutorBridge`
|
|
324
|
+
- `SetToolMetadataBridge`
|
|
325
|
+
- `IncludeToolReturnSchemasBridge`
|
|
326
|
+
- `WebSearchBridge`
|
|
327
|
+
- `WebFetchBridge`
|
|
328
|
+
- `ImageGenerationBridge`
|
|
329
|
+
- `McpCapabilityBridge`
|
|
330
|
+
- `ToolsetBridge`
|
|
331
|
+
- `PrefixToolsBridge`
|
|
332
|
+
- `OpenAICompactionBridge`
|
|
333
|
+
- `AnthropicCompactionBridge`
|
|
334
|
+
|
|
335
|
+
Use bridges when the runtime should gain upstream Pydantic AI capabilities and ACP-visible metadata without rewriting the adapter core.
|
|
336
|
+
|
|
337
|
+
## Maintained Examples
|
|
338
|
+
|
|
339
|
+
The maintained example set is intentionally small. Each example is broad enough to be useful on its own instead of only demonstrating one narrow helper.
|
|
340
|
+
|
|
341
|
+
- [Finance Agent](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/finance_agent.py)
|
|
342
|
+
Session-aware finance workspace with ACP plans, approvals, mode-aware tool shaping, and projected note diffs.
|
|
343
|
+
- [Travel Agent](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/travel_agent.py)
|
|
344
|
+
Travel planning runtime with hook projection, approval-gated trip files, and prompt-model override behavior for media prompts.
|
|
345
|
+
|
|
346
|
+
Run them with:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
uv run python -m examples.pydantic.finance_agent
|
|
350
|
+
uv run python -m examples.pydantic.travel_agent
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## Documentation Map
|
|
354
|
+
|
|
355
|
+
Top-level docs:
|
|
356
|
+
|
|
357
|
+
- [Getting Started](https://vcoderun.github.io/acpkit/getting-started/quickstart/)
|
|
358
|
+
- [CLI](https://vcoderun.github.io/acpkit/cli/)
|
|
359
|
+
- [Pydantic ACP Overview](https://vcoderun.github.io/acpkit/pydantic-acp/)
|
|
360
|
+
- [AdapterConfig](https://vcoderun.github.io/acpkit/pydantic-acp/adapter-config/)
|
|
361
|
+
- [Plans, Thinking, and Approvals](https://vcoderun.github.io/acpkit/pydantic-acp/plans-thinking-approvals/)
|
|
362
|
+
- [Prompt Resources and Context](https://vcoderun.github.io/acpkit/pydantic-acp/prompt-resources/)
|
|
363
|
+
- [Session State and Lifecycle](https://vcoderun.github.io/acpkit/pydantic-acp/session-state/)
|
|
364
|
+
- [Models, Modes, and Slash Commands](https://vcoderun.github.io/acpkit/pydantic-acp/runtime-controls/)
|
|
365
|
+
- [Bridges](https://vcoderun.github.io/acpkit/bridges/)
|
|
366
|
+
- [Providers](https://vcoderun.github.io/acpkit/providers/)
|
|
367
|
+
- [Host Backends and Projections](https://vcoderun.github.io/acpkit/host-backends/)
|
|
368
|
+
- [Projection Cookbook](https://vcoderun.github.io/acpkit/projection-cookbook/)
|
|
369
|
+
- [Examples](https://vcoderun.github.io/acpkit/examples/)
|
|
370
|
+
- [Testing](https://vcoderun.github.io/acpkit/testing/)
|
|
371
|
+
|
|
372
|
+
Reference docs:
|
|
373
|
+
|
|
374
|
+
- [`acpkit` API](https://vcoderun.github.io/acpkit/api/acpkit/)
|
|
375
|
+
- [`pydantic_acp` API](https://vcoderun.github.io/acpkit/api/pydantic_acp/)
|
|
376
|
+
- [`codex_auth_helper` API](https://vcoderun.github.io/acpkit/api/codex_auth_helper/)
|
|
377
|
+
|
|
378
|
+
## ACP Kit Skill
|
|
379
|
+
|
|
380
|
+
This repo also ships an `acpkit-sdk` skill package for Codex.
|
|
381
|
+
|
|
382
|
+
Use it when you want Codex to help integrate ACP into an existing agent surface, especially for:
|
|
383
|
+
|
|
384
|
+
- exposing an existing `pydantic_ai.Agent` through ACP
|
|
385
|
+
- choosing between `run_acp(...)`, `create_acp_agent(...)`, providers, bridges, and `AgentSource`
|
|
386
|
+
- wiring plans, approvals, session stores, thinking, MCP metadata, and host-backed tools
|
|
387
|
+
- keeping docs and examples aligned with the real SDK surface
|
|
388
|
+
|
|
389
|
+
Install with just one command:
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
npx ctx7 skills install /vcoderun/acpkit acpkit-sdk
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
Canonical skill package:
|
|
396
|
+
|
|
397
|
+
- [`.agents/skills/acpkit-sdk/`](https://github.com/vcoderun/acpkit/tree/main/.agents/skills/acpkit-sdk)
|
|
398
|
+
|
|
399
|
+
Example prompts:
|
|
400
|
+
|
|
401
|
+
- `Use $acpkit-sdk to expose my existing pydantic_ai.Agent through ACP.`
|
|
402
|
+
- `Use $acpkit-sdk to add ACP plans, approvals, slash-command mode switching, and projection maps to this agent.`
|