acpkit 0.4.1__tar.gz → 0.4.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.
Files changed (134) hide show
  1. {acpkit-0.4.1 → acpkit-0.4.2}/.github/workflows/monorepo-ci.yml +3 -3
  2. {acpkit-0.4.1 → acpkit-0.4.2}/.github/workflows/publish.yml +3 -3
  3. {acpkit-0.4.1 → acpkit-0.4.2}/.gitignore +3 -1
  4. acpkit-0.4.2/.pre-commit-config.yaml +14 -0
  5. {acpkit-0.4.1 → acpkit-0.4.2}/Makefile +6 -1
  6. {acpkit-0.4.1 → acpkit-0.4.2}/PKG-INFO +156 -30
  7. {acpkit-0.4.1 → acpkit-0.4.2}/README.md +150 -29
  8. {acpkit-0.4.1 → acpkit-0.4.2}/SKILL.md +4 -4
  9. acpkit-0.4.2/VERSION +1 -0
  10. {acpkit-0.4.1 → acpkit-0.4.2}/docs/bridges.md +19 -0
  11. {acpkit-0.4.1 → acpkit-0.4.2}/docs/cli.md +51 -3
  12. {acpkit-0.4.1 → acpkit-0.4.2}/docs/helpers.md +2 -2
  13. {acpkit-0.4.1 → acpkit-0.4.2}/docs/index.md +16 -3
  14. {acpkit-0.4.1 → acpkit-0.4.2}/docs/providers.md +103 -0
  15. acpkit-0.4.2/examples/pydantic/.gitignore +2 -0
  16. {acpkit-0.4.1 → acpkit-0.4.2}/examples/pydantic/README.md +15 -6
  17. acpkit-0.4.2/examples/pydantic/strong_agent.py +560 -0
  18. acpkit-0.4.2/examples/pydantic/strong_agent_v2.py +498 -0
  19. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/README.md +6 -6
  20. acpkit-0.4.2/packages/adapters/pydantic-acp/VERSION +1 -0
  21. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/pyproject.toml +1 -1
  22. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/__init__.py +1 -6
  23. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/approvals.py +1 -6
  24. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/history_processor.py +2 -6
  25. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/hooks.py +41 -22
  26. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/prepare_tools.py +10 -0
  27. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/context.py +7 -0
  28. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/projection.py +11 -13
  29. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/providers.py +1 -6
  30. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/adapter.py +186 -18
  31. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/hook_introspection.py +5 -1
  32. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/server.py +1 -6
  33. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/slash_commands.py +7 -1
  34. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/session/state.py +7 -1
  35. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/session/store.py +30 -6
  36. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/README.md +3 -3
  37. acpkit-0.4.2/packages/helpers/codex-auth-helper/VERSION +1 -0
  38. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/pyproject.toml +1 -1
  39. {acpkit-0.4.1 → acpkit-0.4.2}/pyproject.toml +4 -2
  40. {acpkit-0.4.1 → acpkit-0.4.2}/pyrightconfig.json +1 -1
  41. {acpkit-0.4.1 → acpkit-0.4.2}/src/acpkit/__init__.py +5 -1
  42. acpkit-0.4.2/src/acpkit/cli.py +87 -0
  43. {acpkit-0.4.1 → acpkit-0.4.2}/src/acpkit/runtime.py +48 -0
  44. {acpkit-0.4.1 → acpkit-0.4.2}/tests/codex_auth_helper/test_factory.py +3 -1
  45. {acpkit-0.4.1 → acpkit-0.4.2}/tests/pydantic/test_bridges.py +32 -0
  46. {acpkit-0.4.1 → acpkit-0.4.2}/tests/pydantic/test_models.py +175 -0
  47. {acpkit-0.4.1 → acpkit-0.4.2}/tests/pydantic/test_projection.py +3 -1
  48. {acpkit-0.4.1 → acpkit-0.4.2}/tests/pydantic/test_slash_commands.py +16 -5
  49. {acpkit-0.4.1 → acpkit-0.4.2}/tests/pydantic/test_sources.py +54 -0
  50. {acpkit-0.4.1 → acpkit-0.4.2}/tests/test_acpkit_cli.py +165 -1
  51. acpkit-0.4.1/.pre-commit-config.yaml +0 -16
  52. acpkit-0.4.1/VERSION +0 -1
  53. acpkit-0.4.1/examples/pydantic/my_agent.py +0 -1012
  54. acpkit-0.4.1/packages/adapters/pydantic-acp/VERSION +0 -1
  55. acpkit-0.4.1/packages/helpers/codex-auth-helper/VERSION +0 -1
  56. acpkit-0.4.1/src/acpkit/cli.py +0 -50
  57. {acpkit-0.4.1 → acpkit-0.4.2}/.cursorrules +0 -0
  58. {acpkit-0.4.1 → acpkit-0.4.2}/.editorconfig +0 -0
  59. {acpkit-0.4.1 → acpkit-0.4.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  60. {acpkit-0.4.1 → acpkit-0.4.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  61. {acpkit-0.4.1 → acpkit-0.4.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  62. {acpkit-0.4.1 → acpkit-0.4.2}/.github/dependabot.yml +0 -0
  63. {acpkit-0.4.1 → acpkit-0.4.2}/.github/workflows/docs.yml +0 -0
  64. {acpkit-0.4.1 → acpkit-0.4.2}/.github/workflows/test.yml +0 -0
  65. {acpkit-0.4.1 → acpkit-0.4.2}/.python-version +0 -0
  66. {acpkit-0.4.1 → acpkit-0.4.2}/CODE_OF_CONDUCT.md +0 -0
  67. {acpkit-0.4.1 → acpkit-0.4.2}/CONTRIBUTING.md +0 -0
  68. {acpkit-0.4.1 → acpkit-0.4.2}/LICENSE +0 -0
  69. {acpkit-0.4.1 → acpkit-0.4.2}/SECURITY.md +0 -0
  70. {acpkit-0.4.1 → acpkit-0.4.2}/context7.json +0 -0
  71. {acpkit-0.4.1 → acpkit-0.4.2}/docs/about/index.md +0 -0
  72. {acpkit-0.4.1 → acpkit-0.4.2}/docs/host-backends.md +0 -0
  73. {acpkit-0.4.1 → acpkit-0.4.2}/docs/llms.txt +0 -0
  74. {acpkit-0.4.1 → acpkit-0.4.2}/docs/testing.md +0 -0
  75. {acpkit-0.4.1 → acpkit-0.4.2}/examples/__init__.py +0 -0
  76. {acpkit-0.4.1 → acpkit-0.4.2}/examples/pydantic/__init__.py +0 -0
  77. {acpkit-0.4.1 → acpkit-0.4.2}/examples/pydantic/approvals.py +0 -0
  78. {acpkit-0.4.1 → acpkit-0.4.2}/examples/pydantic/bridges.py +0 -0
  79. {acpkit-0.4.1 → acpkit-0.4.2}/examples/pydantic/factory_agent.py +0 -0
  80. {acpkit-0.4.1 → acpkit-0.4.2}/examples/pydantic/hook_projection.py +0 -0
  81. {acpkit-0.4.1 → acpkit-0.4.2}/examples/pydantic/host_context.py +0 -0
  82. {acpkit-0.4.1 → acpkit-0.4.2}/examples/pydantic/providers.py +0 -0
  83. {acpkit-0.4.1 → acpkit-0.4.2}/examples/pydantic/static_agent.py +0 -0
  84. {acpkit-0.4.1 → acpkit-0.4.2}/mkdocs.yml +0 -0
  85. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_source.py +0 -0
  86. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_types.py +0 -0
  87. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/awaitables.py +0 -0
  88. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/__init__.py +0 -0
  89. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/base.py +0 -0
  90. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/mcp.py +0 -0
  91. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/builders/__init__.py +0 -0
  92. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/builders/agent.py +0 -0
  93. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/config.py +0 -0
  94. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/hook_projection.py +0 -0
  95. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/__init__.py +0 -0
  96. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/filesystem.py +0 -0
  97. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/host/terminal.py +0 -0
  98. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/models.py +0 -0
  99. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/py.typed +0 -0
  100. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/__init__.py +0 -0
  101. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/bridge_manager.py +0 -0
  102. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/prompts.py +0 -0
  103. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/session_surface.py +0 -0
  104. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/serialization.py +0 -0
  105. {acpkit-0.4.1 → acpkit-0.4.2}/packages/adapters/pydantic-acp/src/pydantic_acp/session/__init__.py +0 -0
  106. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/.gitignore +0 -0
  107. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/LICENSE +0 -0
  108. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/__init__.py +0 -0
  109. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/__init__.py +0 -0
  110. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/config.py +0 -0
  111. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/manager.py +0 -0
  112. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/state.py +0 -0
  113. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/store.py +0 -0
  114. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/client.py +0 -0
  115. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/factory.py +0 -0
  116. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/model.py +0 -0
  117. {acpkit-0.4.1 → acpkit-0.4.2}/packages/helpers/codex-auth-helper/src/codex_auth_helper/py.typed +0 -0
  118. {acpkit-0.4.1 → acpkit-0.4.2}/scripts/demo_mcp_server.py +0 -0
  119. {acpkit-0.4.1 → acpkit-0.4.2}/scripts/mock_hook_audit.py +0 -0
  120. {acpkit-0.4.1 → acpkit-0.4.2}/scripts/mock_hook_snapshot.py +0 -0
  121. {acpkit-0.4.1 → acpkit-0.4.2}/src/acpkit/__main__.py +0 -0
  122. {acpkit-0.4.1 → acpkit-0.4.2}/src/acpkit/adapters.py +0 -0
  123. {acpkit-0.4.1 → acpkit-0.4.2}/src/acpkit/py.typed +0 -0
  124. {acpkit-0.4.1 → acpkit-0.4.2}/tests/__init__.py +0 -0
  125. {acpkit-0.4.1 → acpkit-0.4.2}/tests/codex_auth_helper/__init__.py +0 -0
  126. {acpkit-0.4.1 → acpkit-0.4.2}/tests/codex_auth_helper/support.py +0 -0
  127. {acpkit-0.4.1 → acpkit-0.4.2}/tests/conftest.py +0 -0
  128. {acpkit-0.4.1 → acpkit-0.4.2}/tests/pydantic/__init__.py +0 -0
  129. {acpkit-0.4.1 → acpkit-0.4.2}/tests/pydantic/support.py +0 -0
  130. {acpkit-0.4.1 → acpkit-0.4.2}/tests/pydantic/test_approvals.py +0 -0
  131. {acpkit-0.4.1 → acpkit-0.4.2}/tests/pydantic/test_hook_introspection.py +0 -0
  132. {acpkit-0.4.1 → acpkit-0.4.2}/tests/pydantic/test_host.py +0 -0
  133. {acpkit-0.4.1 → acpkit-0.4.2}/tests/pydantic/test_runtime.py +0 -0
  134. {acpkit-0.4.1 → acpkit-0.4.2}/tests/test_native_pydantic_agent.py +0 -0
@@ -20,15 +20,15 @@ jobs:
20
20
  runs-on: ubuntu-latest
21
21
  steps:
22
22
  - name: Check Out Repository
23
- uses: actions/checkout@v4
23
+ uses: actions/checkout@v6
24
24
 
25
25
  - name: Set Up Python
26
- uses: actions/setup-python@v5
26
+ uses: actions/setup-python@v6
27
27
  with:
28
28
  python-version: "3.11"
29
29
 
30
30
  - name: Set Up uv
31
- uses: astral-sh/setup-uv@v5
31
+ uses: astral-sh/setup-uv@v7
32
32
  with:
33
33
  enable-cache: true
34
34
 
@@ -21,15 +21,15 @@ jobs:
21
21
  UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
22
22
  steps:
23
23
  - name: Check Out Repository
24
- uses: actions/checkout@v4
24
+ uses: actions/checkout@v6
25
25
 
26
26
  - name: Set Up Python
27
- uses: actions/setup-python@v5
27
+ uses: actions/setup-python@v6
28
28
  with:
29
29
  python-version: "3.11"
30
30
 
31
31
  - name: Set Up uv
32
- uses: astral-sh/setup-uv@v5
32
+ uses: astral-sh/setup-uv@v7
33
33
  with:
34
34
  enable-cache: true
35
35
 
@@ -74,4 +74,6 @@ AGENTS.md
74
74
 
75
75
  # Temporary
76
76
  tmp
77
- deep.py
77
+ *.snapshot
78
+ bump.sh
79
+ local.sh
@@ -0,0 +1,14 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.5.0
4
+ hooks:
5
+ - id: check-yaml
6
+ - id: check-toml
7
+
8
+ - repo: local
9
+ hooks:
10
+ - id: make-prod
11
+ name: verify build
12
+ entry: make prod
13
+ language: system
14
+ pass_filenames: false
@@ -3,7 +3,7 @@ GREEN := \033[1;32m
3
3
  RESET := \033[0m
4
4
  PYTHON_VERSIONS := 3.11.13 3.12.10 3.13.9
5
5
 
6
- .PHONY: tests format check check-matrix all prod rename serve
6
+ .PHONY: tests format check-formatted check check-matrix all prod rename serve
7
7
 
8
8
  # Hack to allow passing arguments to make commands (e.g. make rename my_project)
9
9
  ifeq (rename,$(firstword $(MAKECMDGOALS)))
@@ -27,6 +27,11 @@ format:
27
27
  @uv run ruff format
28
28
  @printf "$(GREEN)✔ Formatting complete.$(RESET)\n"
29
29
 
30
+ check-formatted:
31
+ @printf "$(BLUE)==>$(RESET) Checking formatting with ruff format --check...\n"
32
+ @uv run ruff format --check
33
+ @printf "$(GREEN)✔ Formatting check complete.$(RESET)\n"
34
+
30
35
  check:
31
36
  @printf "$(BLUE)==>$(RESET) Running ruff checks...\n"
32
37
  @uv run --extra dev ruff check
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acpkit
3
- Version: 0.4.1
3
+ Version: 0.4.2
4
4
  Summary: ACP Kit provides a common adapter for Agent Frameworks.
5
5
  Project-URL: Homepage, https://github.com/vcoderun/acpkit
6
6
  Project-URL: Issues, https://github.com/vcoderun/acpkit/issues
@@ -31,9 +31,11 @@ Requires-Dist: pydantic>=2.7; extra == 'all'
31
31
  Requires-Dist: pytest; extra == 'all'
32
32
  Requires-Dist: pytest-asyncio; extra == 'all'
33
33
  Requires-Dist: pytest-cov; extra == 'all'
34
+ Requires-Dist: python-dotenv; extra == 'all'
34
35
  Requires-Dist: ruff; extra == 'all'
35
36
  Requires-Dist: ty; extra == 'all'
36
37
  Requires-Dist: typing-extensions>=4.12.0; extra == 'all'
38
+ Requires-Dist: uv>=0.8.3; extra == 'all'
37
39
  Provides-Extra: codex
38
40
  Requires-Dist: codex-auth-helper; extra == 'codex'
39
41
  Provides-Extra: dev
@@ -48,12 +50,15 @@ Requires-Dist: pydantic>=2.7; extra == 'dev'
48
50
  Requires-Dist: pytest; extra == 'dev'
49
51
  Requires-Dist: pytest-asyncio; extra == 'dev'
50
52
  Requires-Dist: pytest-cov; extra == 'dev'
53
+ Requires-Dist: python-dotenv; extra == 'dev'
51
54
  Requires-Dist: ruff; extra == 'dev'
52
55
  Requires-Dist: ty; extra == 'dev'
53
56
  Requires-Dist: typing-extensions>=4.12.0; extra == 'dev'
54
57
  Provides-Extra: docs
55
58
  Requires-Dist: mkdocs-material; extra == 'docs'
56
59
  Requires-Dist: mkdocstrings[python]; extra == 'docs'
60
+ Provides-Extra: launch
61
+ Requires-Dist: uv>=0.8.3; extra == 'launch'
57
62
  Provides-Extra: pydantic
58
63
  Requires-Dist: pydantic-acp; extra == 'pydantic'
59
64
  Description-Content-Type: text/markdown
@@ -84,6 +89,16 @@ uv pip install "acpkit[pydantic]"
84
89
  pip install "acpkit[pydantic]"
85
90
  ```
86
91
 
92
+ To use `acpkit launch ...`, install the optional launch extra:
93
+
94
+ ```bash
95
+ uv pip install "acpkit[launch]"
96
+ ```
97
+
98
+ ```bash
99
+ pip install "acpkit[launch]"
100
+ ```
101
+
87
102
  Development:
88
103
 
89
104
  ```bash
@@ -99,9 +114,9 @@ pip install -e ".[dev,docs,pydantic]"
99
114
  Run a supported agent target through ACP:
100
115
 
101
116
  ```bash
102
- acpkit run my_agent
103
- acpkit run my_agent:agent
104
- acpkit run my_agent:agent -p ./examples
117
+ acpkit run strong_agent
118
+ acpkit run strong_agent:agent
119
+ acpkit run strong_agent:agent -p ./examples
105
120
  ```
106
121
 
107
122
  `acpkit` resolves `module` or `module:attribute` targets, auto-detects `pydantic_ai.Agent`
@@ -111,6 +126,31 @@ selects the last defined `pydantic_ai.Agent` instance in that module.
111
126
  If the matching adapter extra is not installed, `acpkit` fails with an install hint such as
112
127
  `uv pip install "acpkit[pydantic]"`.
113
128
 
129
+ Launch a target through Toad ACP:
130
+
131
+ ```bash
132
+ acpkit launch strong_agent
133
+ acpkit launch strong_agent:agent -p ./examples
134
+ ```
135
+
136
+ `acpkit launch TARGET` mirrors the resolved target to:
137
+
138
+ ```bash
139
+ toad acp "acpkit run TARGET [-p PATH]..."
140
+ ```
141
+
142
+ The command is dispatched through `uvx --python 3.14 --from batrachian-toad`, so Toad runs in a
143
+ separate Python 3.14 tool environment and does not replace your project Python.
144
+
145
+ If the script already starts its own ACP server and should be launched directly, use `--command`:
146
+
147
+ ```bash
148
+ acpkit launch -c "python3.11 strong_agent.py"
149
+ ```
150
+
151
+ `launch TARGET` and `launch --command ...` are mutually exclusive. `-p/--path` only applies to
152
+ `TARGET` mode.
153
+
114
154
  ## run_acp
115
155
 
116
156
  Use `run_acp(...)` when you want to start an ACP server directly from a Pydantic AI agent:
@@ -162,7 +202,7 @@ asyncio.run(run_agent(acp_agent))
162
202
  - persistence: `session_store`
163
203
  - model selection: `allow_model_selection`, `available_models`, `models_provider`
164
204
  - mode and config state: `modes_provider`, `config_options_provider`
165
- - plans: `plan_provider`
205
+ - plans: `plan_provider`, or native plan state via `PrepareToolsMode(plan_mode=True)`
166
206
  - approvals: `approval_bridge`, `approval_state_provider`
167
207
  - bridges: `capability_bridges`
168
208
  - projection and classification: `projection_maps`, `tool_classifier`, `enable_generic_tool_projection`
@@ -208,6 +248,74 @@ config = AdapterConfig(
208
248
  run_acp(agent=agent, config=config)
209
249
  ```
210
250
 
251
+ ## Native Plan State
252
+
253
+ When `plan_provider` is not configured, the adapter can manage ACP plan state natively. Enable it
254
+ by marking one `PrepareToolsMode` with `plan_mode=True` inside a `PrepareToolsBridge`:
255
+
256
+ ```python
257
+ from pydantic_ai import Agent
258
+ from pydantic_ai.tools import RunContext, ToolDefinition
259
+ from pydantic_acp import AdapterConfig, PrepareToolsBridge, PrepareToolsMode, run_acp
260
+
261
+
262
+ def plan_tools(
263
+ ctx: RunContext[None], tool_defs: list[ToolDefinition]
264
+ ) -> list[ToolDefinition]:
265
+ del ctx
266
+ return list(tool_defs)
267
+
268
+
269
+ def agent_tools(
270
+ ctx: RunContext[None], tool_defs: list[ToolDefinition]
271
+ ) -> list[ToolDefinition]:
272
+ del ctx
273
+ return list(tool_defs)
274
+
275
+
276
+ agent = Agent("openai:gpt-5", name="plan-agent")
277
+
278
+ run_acp(
279
+ agent=agent,
280
+ config=AdapterConfig(
281
+ capability_bridges=[
282
+ PrepareToolsBridge(
283
+ default_mode_id="agent",
284
+ modes=[
285
+ PrepareToolsMode(
286
+ id="plan",
287
+ name="Plan",
288
+ description="Inspect and write plans.",
289
+ prepare_func=plan_tools,
290
+ plan_mode=True,
291
+ ),
292
+ PrepareToolsMode(
293
+ id="agent",
294
+ name="Agent",
295
+ description="Full tool surface.",
296
+ prepare_func=agent_tools,
297
+ ),
298
+ ],
299
+ ),
300
+ ],
301
+ ),
302
+ )
303
+ ```
304
+
305
+ When the session is in `plan` mode, the adapter:
306
+
307
+ - injects `acp_get_plan` and `acp_set_plan` as hidden tools on the agent
308
+ - extends `output_type` with `NativePlanGeneration` so the agent can emit a structured plan in a
309
+ single response
310
+
311
+ `NativePlanGeneration` fields:
312
+ - `plan_entries: list[PlanEntry]` — structured plan entries
313
+ - `plan_md: str` — optional markdown representation
314
+
315
+ Native plan state and `plan_provider` are mutually exclusive. See
316
+ [docs/providers.md](https://github.com/vcoderun/acpkit/blob/main/docs/providers.md) for full
317
+ details.
318
+
211
319
  ## Agent Factories
212
320
 
213
321
  Use a factory or custom `AgentSource` when agent construction depends on the current session:
@@ -226,6 +334,24 @@ def build_agent(session: AcpSessionContext) -> Agent[None, str]:
226
334
  acp_agent = create_acp_agent(agent_factory=build_agent)
227
335
  ```
228
336
 
337
+ `StaticAgentSource` accepts an optional `deps` field to pass typed runtime dependencies alongside
338
+ a shared agent instance without a factory:
339
+
340
+ ```python
341
+ from pydantic_acp import AdapterConfig, create_acp_agent
342
+ from pydantic_acp.agent_source import StaticAgentSource
343
+ from pydantic_ai import Agent
344
+
345
+ from myapp.deps import AppDependencies
346
+
347
+ deps = AppDependencies(db=my_db, cache=my_cache)
348
+ agent = Agent("openai:gpt-5", name="deps-agent", deps_type=AppDependencies)
349
+
350
+ acp_agent = create_acp_agent(
351
+ agent_source=StaticAgentSource(agent=agent, deps=deps),
352
+ )
353
+ ```
354
+
229
355
  ## Session Stores
230
356
 
231
357
  `MemorySessionStore` is the default. Use `FileSessionStore` when sessions should survive process
@@ -268,7 +394,7 @@ The adapter exposes a small ACP control plane alongside normal prompts:
268
394
  Codex-backed model changes must be explicit:
269
395
 
270
396
  ```text
271
- /model codex:gpt-5
397
+ /model codex:gpt-5.4
272
398
  ```
273
399
 
274
400
  ## Approval Flow
@@ -365,7 +491,7 @@ Built-in bridges cover:
365
491
  - `McpBridge`
366
492
  - `AgentBridgeBuilder`
367
493
 
368
- See [docs/bridges.md](/Users/mert/Desktop/acpkit/docs/bridges.md) for the full bridge model.
494
+ See [docs/bridges.md](https://github.com/vcoderun/acpkit/blob/main/docs/bridges.md) for the full bridge model.
369
495
 
370
496
  ## Providers
371
497
 
@@ -377,7 +503,7 @@ Providers let the host own session state while the adapter exposes it through AC
377
503
  - `PlanProvider`
378
504
  - `ApprovalStateProvider`
379
505
 
380
- See [docs/providers.md](/Users/mert/Desktop/acpkit/docs/providers.md) for full details.
506
+ See [docs/providers.md](https://github.com/vcoderun/acpkit/blob/main/docs/providers.md) for full details.
381
507
 
382
508
  ## Host Backends
383
509
 
@@ -402,7 +528,7 @@ def build_agent(client: AcpClient, session: AcpSessionContext) -> Agent[None, st
402
528
  return agent
403
529
  ```
404
530
 
405
- See [docs/host-backends.md](/Users/mert/Desktop/acpkit/docs/host-backends.md) for the filesystem
531
+ See [docs/host-backends.md](https://github.com/vcoderun/acpkit/blob/main/docs/host-backends.md) for the filesystem
406
532
  and terminal API surface.
407
533
 
408
534
  ## Codex Auth Helper
@@ -414,31 +540,31 @@ and terminal API surface.
414
540
  from pydantic_ai import Agent
415
541
  from codex_auth_helper import create_codex_responses_model
416
542
 
417
- agent = Agent(create_codex_responses_model("gpt-5"))
543
+ agent = Agent(create_codex_responses_model("gpt-5.4"))
418
544
  ```
419
545
 
420
- See [docs/helpers.md](/Users/mert/Desktop/acpkit/docs/helpers.md) for helper package details.
546
+ See [docs/helpers.md](https://github.com/vcoderun/acpkit/blob/main/docs/helpers.md) for helper package details.
421
547
 
422
548
  ## Examples
423
549
 
424
- Runnable and focused examples live under [examples/pydantic](/Users/mert/Desktop/acpkit/examples/pydantic):
550
+ Runnable and focused examples live under [examples/pydantic](https://github.com/vcoderun/acpkit/tree/main/examples/pydantic):
425
551
 
426
- - [static_agent.py](/Users/mert/Desktop/acpkit/examples/pydantic/static_agent.py)
552
+ - [static_agent.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/static_agent.py)
427
553
  smallest direct `run_acp(agent=...)` setup
428
- - [factory_agent.py](/Users/mert/Desktop/acpkit/examples/pydantic/factory_agent.py)
554
+ - [factory_agent.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/factory_agent.py)
429
555
  session-aware factory plus session-local model selection
430
- - [providers.py](/Users/mert/Desktop/acpkit/examples/pydantic/providers.py)
556
+ - [providers.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/providers.py)
431
557
  models, modes, config options, plan updates, and approval metadata
432
- - [bridges.py](/Users/mert/Desktop/acpkit/examples/pydantic/bridges.py)
558
+ - [bridges.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/bridges.py)
433
559
  bridge builder, prepare-tools, history processors, and MCP metadata
434
- - [approvals.py](/Users/mert/Desktop/acpkit/examples/pydantic/approvals.py)
560
+ - [approvals.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/approvals.py)
435
561
  native deferred approval flow
436
- - [host_context.py](/Users/mert/Desktop/acpkit/examples/pydantic/host_context.py)
562
+ - [host_context.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/host_context.py)
437
563
  `ClientHostContext` usage inside a factory-built agent
438
- - [hook_projection.py](/Users/mert/Desktop/acpkit/examples/pydantic/hook_projection.py)
564
+ - [hook_projection.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/hook_projection.py)
439
565
  existing `Hooks` capability introspection rendered through `HookProjectionMap`
440
- - [my_agent.py](/Users/mert/Desktop/acpkit/examples/pydantic/my_agent.py)
441
- broad end-to-end demo combining factories, providers, approvals, bridges, projection maps, and host helpers
566
+ - [strong_agent.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/strong_agent.py)
567
+ full-featured workspace agent example combining factories, providers, approvals, bridges, projection maps, `ask/plan/agent` modes, and host helpers
442
568
 
443
569
  ## Development
444
570
 
@@ -460,15 +586,15 @@ make serve
460
586
 
461
587
  ## Documentation Map
462
588
 
463
- - [docs/index.md](/Users/mert/Desktop/acpkit/docs/index.md): workspace overview and package map
464
- - [docs/cli.md](/Users/mert/Desktop/acpkit/docs/cli.md): root `acpkit` CLI behavior
465
- - [docs/pydantic-acp.md](/Users/mert/Desktop/acpkit/docs/pydantic-acp.md): adapter API, runtime controls, approvals, projection maps, providers, and host backends
466
- - [docs/bridges.md](/Users/mert/Desktop/acpkit/docs/bridges.md): capability bridges and hook rendering
467
- - [docs/providers.md](/Users/mert/Desktop/acpkit/docs/providers.md): provider seams and host-owned state
468
- - [docs/host-backends.md](/Users/mert/Desktop/acpkit/docs/host-backends.md): client filesystem and terminal helpers
469
- - [docs/helpers.md](/Users/mert/Desktop/acpkit/docs/helpers.md): helper packages including `codex-auth-helper`
470
- - [docs/testing.md](/Users/mert/Desktop/acpkit/docs/testing.md): behavioral test surface and validation commands
471
- - [examples/pydantic/README.md](/Users/mert/Desktop/acpkit/examples/pydantic/README.md): runnable demos and focused SDK examples
589
+ - [docs/index.md](https://github.com/vcoderun/acpkit/blob/main/docs/index.md): workspace overview and package map
590
+ - [docs/cli.md](https://github.com/vcoderun/acpkit/blob/main/docs/cli.md): root `acpkit` CLI behavior
591
+ - [docs/pydantic-acp.md](https://github.com/vcoderun/acpkit/blob/main/docs/pydantic-acp.md): adapter API, runtime controls, approvals, projection maps, providers, and host backends
592
+ - [docs/bridges.md](https://github.com/vcoderun/acpkit/blob/main/docs/bridges.md): capability bridges and hook rendering
593
+ - [docs/providers.md](https://github.com/vcoderun/acpkit/blob/main/docs/providers.md): provider seams and host-owned state
594
+ - [docs/host-backends.md](https://github.com/vcoderun/acpkit/blob/main/docs/host-backends.md): client filesystem and terminal helpers
595
+ - [docs/helpers.md](https://github.com/vcoderun/acpkit/blob/main/docs/helpers.md): helper packages including `codex-auth-helper`
596
+ - [docs/testing.md](https://github.com/vcoderun/acpkit/blob/main/docs/testing.md): behavioral test surface and validation commands
597
+ - [examples/pydantic/README.md](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/README.md): runnable demos and focused SDK examples
472
598
 
473
599
  ## License
474
600
 
@@ -24,6 +24,16 @@ uv pip install "acpkit[pydantic]"
24
24
  pip install "acpkit[pydantic]"
25
25
  ```
26
26
 
27
+ To use `acpkit launch ...`, install the optional launch extra:
28
+
29
+ ```bash
30
+ uv pip install "acpkit[launch]"
31
+ ```
32
+
33
+ ```bash
34
+ pip install "acpkit[launch]"
35
+ ```
36
+
27
37
  Development:
28
38
 
29
39
  ```bash
@@ -39,9 +49,9 @@ pip install -e ".[dev,docs,pydantic]"
39
49
  Run a supported agent target through ACP:
40
50
 
41
51
  ```bash
42
- acpkit run my_agent
43
- acpkit run my_agent:agent
44
- acpkit run my_agent:agent -p ./examples
52
+ acpkit run strong_agent
53
+ acpkit run strong_agent:agent
54
+ acpkit run strong_agent:agent -p ./examples
45
55
  ```
46
56
 
47
57
  `acpkit` resolves `module` or `module:attribute` targets, auto-detects `pydantic_ai.Agent`
@@ -51,6 +61,31 @@ selects the last defined `pydantic_ai.Agent` instance in that module.
51
61
  If the matching adapter extra is not installed, `acpkit` fails with an install hint such as
52
62
  `uv pip install "acpkit[pydantic]"`.
53
63
 
64
+ Launch a target through Toad ACP:
65
+
66
+ ```bash
67
+ acpkit launch strong_agent
68
+ acpkit launch strong_agent:agent -p ./examples
69
+ ```
70
+
71
+ `acpkit launch TARGET` mirrors the resolved target to:
72
+
73
+ ```bash
74
+ toad acp "acpkit run TARGET [-p PATH]..."
75
+ ```
76
+
77
+ The command is dispatched through `uvx --python 3.14 --from batrachian-toad`, so Toad runs in a
78
+ separate Python 3.14 tool environment and does not replace your project Python.
79
+
80
+ If the script already starts its own ACP server and should be launched directly, use `--command`:
81
+
82
+ ```bash
83
+ acpkit launch -c "python3.11 strong_agent.py"
84
+ ```
85
+
86
+ `launch TARGET` and `launch --command ...` are mutually exclusive. `-p/--path` only applies to
87
+ `TARGET` mode.
88
+
54
89
  ## run_acp
55
90
 
56
91
  Use `run_acp(...)` when you want to start an ACP server directly from a Pydantic AI agent:
@@ -102,7 +137,7 @@ asyncio.run(run_agent(acp_agent))
102
137
  - persistence: `session_store`
103
138
  - model selection: `allow_model_selection`, `available_models`, `models_provider`
104
139
  - mode and config state: `modes_provider`, `config_options_provider`
105
- - plans: `plan_provider`
140
+ - plans: `plan_provider`, or native plan state via `PrepareToolsMode(plan_mode=True)`
106
141
  - approvals: `approval_bridge`, `approval_state_provider`
107
142
  - bridges: `capability_bridges`
108
143
  - projection and classification: `projection_maps`, `tool_classifier`, `enable_generic_tool_projection`
@@ -148,6 +183,74 @@ config = AdapterConfig(
148
183
  run_acp(agent=agent, config=config)
149
184
  ```
150
185
 
186
+ ## Native Plan State
187
+
188
+ When `plan_provider` is not configured, the adapter can manage ACP plan state natively. Enable it
189
+ by marking one `PrepareToolsMode` with `plan_mode=True` inside a `PrepareToolsBridge`:
190
+
191
+ ```python
192
+ from pydantic_ai import Agent
193
+ from pydantic_ai.tools import RunContext, ToolDefinition
194
+ from pydantic_acp import AdapterConfig, PrepareToolsBridge, PrepareToolsMode, run_acp
195
+
196
+
197
+ def plan_tools(
198
+ ctx: RunContext[None], tool_defs: list[ToolDefinition]
199
+ ) -> list[ToolDefinition]:
200
+ del ctx
201
+ return list(tool_defs)
202
+
203
+
204
+ def agent_tools(
205
+ ctx: RunContext[None], tool_defs: list[ToolDefinition]
206
+ ) -> list[ToolDefinition]:
207
+ del ctx
208
+ return list(tool_defs)
209
+
210
+
211
+ agent = Agent("openai:gpt-5", name="plan-agent")
212
+
213
+ run_acp(
214
+ agent=agent,
215
+ config=AdapterConfig(
216
+ capability_bridges=[
217
+ PrepareToolsBridge(
218
+ default_mode_id="agent",
219
+ modes=[
220
+ PrepareToolsMode(
221
+ id="plan",
222
+ name="Plan",
223
+ description="Inspect and write plans.",
224
+ prepare_func=plan_tools,
225
+ plan_mode=True,
226
+ ),
227
+ PrepareToolsMode(
228
+ id="agent",
229
+ name="Agent",
230
+ description="Full tool surface.",
231
+ prepare_func=agent_tools,
232
+ ),
233
+ ],
234
+ ),
235
+ ],
236
+ ),
237
+ )
238
+ ```
239
+
240
+ When the session is in `plan` mode, the adapter:
241
+
242
+ - injects `acp_get_plan` and `acp_set_plan` as hidden tools on the agent
243
+ - extends `output_type` with `NativePlanGeneration` so the agent can emit a structured plan in a
244
+ single response
245
+
246
+ `NativePlanGeneration` fields:
247
+ - `plan_entries: list[PlanEntry]` — structured plan entries
248
+ - `plan_md: str` — optional markdown representation
249
+
250
+ Native plan state and `plan_provider` are mutually exclusive. See
251
+ [docs/providers.md](https://github.com/vcoderun/acpkit/blob/main/docs/providers.md) for full
252
+ details.
253
+
151
254
  ## Agent Factories
152
255
 
153
256
  Use a factory or custom `AgentSource` when agent construction depends on the current session:
@@ -166,6 +269,24 @@ def build_agent(session: AcpSessionContext) -> Agent[None, str]:
166
269
  acp_agent = create_acp_agent(agent_factory=build_agent)
167
270
  ```
168
271
 
272
+ `StaticAgentSource` accepts an optional `deps` field to pass typed runtime dependencies alongside
273
+ a shared agent instance without a factory:
274
+
275
+ ```python
276
+ from pydantic_acp import AdapterConfig, create_acp_agent
277
+ from pydantic_acp.agent_source import StaticAgentSource
278
+ from pydantic_ai import Agent
279
+
280
+ from myapp.deps import AppDependencies
281
+
282
+ deps = AppDependencies(db=my_db, cache=my_cache)
283
+ agent = Agent("openai:gpt-5", name="deps-agent", deps_type=AppDependencies)
284
+
285
+ acp_agent = create_acp_agent(
286
+ agent_source=StaticAgentSource(agent=agent, deps=deps),
287
+ )
288
+ ```
289
+
169
290
  ## Session Stores
170
291
 
171
292
  `MemorySessionStore` is the default. Use `FileSessionStore` when sessions should survive process
@@ -208,7 +329,7 @@ The adapter exposes a small ACP control plane alongside normal prompts:
208
329
  Codex-backed model changes must be explicit:
209
330
 
210
331
  ```text
211
- /model codex:gpt-5
332
+ /model codex:gpt-5.4
212
333
  ```
213
334
 
214
335
  ## Approval Flow
@@ -305,7 +426,7 @@ Built-in bridges cover:
305
426
  - `McpBridge`
306
427
  - `AgentBridgeBuilder`
307
428
 
308
- See [docs/bridges.md](/Users/mert/Desktop/acpkit/docs/bridges.md) for the full bridge model.
429
+ See [docs/bridges.md](https://github.com/vcoderun/acpkit/blob/main/docs/bridges.md) for the full bridge model.
309
430
 
310
431
  ## Providers
311
432
 
@@ -317,7 +438,7 @@ Providers let the host own session state while the adapter exposes it through AC
317
438
  - `PlanProvider`
318
439
  - `ApprovalStateProvider`
319
440
 
320
- See [docs/providers.md](/Users/mert/Desktop/acpkit/docs/providers.md) for full details.
441
+ See [docs/providers.md](https://github.com/vcoderun/acpkit/blob/main/docs/providers.md) for full details.
321
442
 
322
443
  ## Host Backends
323
444
 
@@ -342,7 +463,7 @@ def build_agent(client: AcpClient, session: AcpSessionContext) -> Agent[None, st
342
463
  return agent
343
464
  ```
344
465
 
345
- See [docs/host-backends.md](/Users/mert/Desktop/acpkit/docs/host-backends.md) for the filesystem
466
+ See [docs/host-backends.md](https://github.com/vcoderun/acpkit/blob/main/docs/host-backends.md) for the filesystem
346
467
  and terminal API surface.
347
468
 
348
469
  ## Codex Auth Helper
@@ -354,31 +475,31 @@ and terminal API surface.
354
475
  from pydantic_ai import Agent
355
476
  from codex_auth_helper import create_codex_responses_model
356
477
 
357
- agent = Agent(create_codex_responses_model("gpt-5"))
478
+ agent = Agent(create_codex_responses_model("gpt-5.4"))
358
479
  ```
359
480
 
360
- See [docs/helpers.md](/Users/mert/Desktop/acpkit/docs/helpers.md) for helper package details.
481
+ See [docs/helpers.md](https://github.com/vcoderun/acpkit/blob/main/docs/helpers.md) for helper package details.
361
482
 
362
483
  ## Examples
363
484
 
364
- Runnable and focused examples live under [examples/pydantic](/Users/mert/Desktop/acpkit/examples/pydantic):
485
+ Runnable and focused examples live under [examples/pydantic](https://github.com/vcoderun/acpkit/tree/main/examples/pydantic):
365
486
 
366
- - [static_agent.py](/Users/mert/Desktop/acpkit/examples/pydantic/static_agent.py)
487
+ - [static_agent.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/static_agent.py)
367
488
  smallest direct `run_acp(agent=...)` setup
368
- - [factory_agent.py](/Users/mert/Desktop/acpkit/examples/pydantic/factory_agent.py)
489
+ - [factory_agent.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/factory_agent.py)
369
490
  session-aware factory plus session-local model selection
370
- - [providers.py](/Users/mert/Desktop/acpkit/examples/pydantic/providers.py)
491
+ - [providers.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/providers.py)
371
492
  models, modes, config options, plan updates, and approval metadata
372
- - [bridges.py](/Users/mert/Desktop/acpkit/examples/pydantic/bridges.py)
493
+ - [bridges.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/bridges.py)
373
494
  bridge builder, prepare-tools, history processors, and MCP metadata
374
- - [approvals.py](/Users/mert/Desktop/acpkit/examples/pydantic/approvals.py)
495
+ - [approvals.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/approvals.py)
375
496
  native deferred approval flow
376
- - [host_context.py](/Users/mert/Desktop/acpkit/examples/pydantic/host_context.py)
497
+ - [host_context.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/host_context.py)
377
498
  `ClientHostContext` usage inside a factory-built agent
378
- - [hook_projection.py](/Users/mert/Desktop/acpkit/examples/pydantic/hook_projection.py)
499
+ - [hook_projection.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/hook_projection.py)
379
500
  existing `Hooks` capability introspection rendered through `HookProjectionMap`
380
- - [my_agent.py](/Users/mert/Desktop/acpkit/examples/pydantic/my_agent.py)
381
- broad end-to-end demo combining factories, providers, approvals, bridges, projection maps, and host helpers
501
+ - [strong_agent.py](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/strong_agent.py)
502
+ full-featured workspace agent example combining factories, providers, approvals, bridges, projection maps, `ask/plan/agent` modes, and host helpers
382
503
 
383
504
  ## Development
384
505
 
@@ -400,15 +521,15 @@ make serve
400
521
 
401
522
  ## Documentation Map
402
523
 
403
- - [docs/index.md](/Users/mert/Desktop/acpkit/docs/index.md): workspace overview and package map
404
- - [docs/cli.md](/Users/mert/Desktop/acpkit/docs/cli.md): root `acpkit` CLI behavior
405
- - [docs/pydantic-acp.md](/Users/mert/Desktop/acpkit/docs/pydantic-acp.md): adapter API, runtime controls, approvals, projection maps, providers, and host backends
406
- - [docs/bridges.md](/Users/mert/Desktop/acpkit/docs/bridges.md): capability bridges and hook rendering
407
- - [docs/providers.md](/Users/mert/Desktop/acpkit/docs/providers.md): provider seams and host-owned state
408
- - [docs/host-backends.md](/Users/mert/Desktop/acpkit/docs/host-backends.md): client filesystem and terminal helpers
409
- - [docs/helpers.md](/Users/mert/Desktop/acpkit/docs/helpers.md): helper packages including `codex-auth-helper`
410
- - [docs/testing.md](/Users/mert/Desktop/acpkit/docs/testing.md): behavioral test surface and validation commands
411
- - [examples/pydantic/README.md](/Users/mert/Desktop/acpkit/examples/pydantic/README.md): runnable demos and focused SDK examples
524
+ - [docs/index.md](https://github.com/vcoderun/acpkit/blob/main/docs/index.md): workspace overview and package map
525
+ - [docs/cli.md](https://github.com/vcoderun/acpkit/blob/main/docs/cli.md): root `acpkit` CLI behavior
526
+ - [docs/pydantic-acp.md](https://github.com/vcoderun/acpkit/blob/main/docs/pydantic-acp.md): adapter API, runtime controls, approvals, projection maps, providers, and host backends
527
+ - [docs/bridges.md](https://github.com/vcoderun/acpkit/blob/main/docs/bridges.md): capability bridges and hook rendering
528
+ - [docs/providers.md](https://github.com/vcoderun/acpkit/blob/main/docs/providers.md): provider seams and host-owned state
529
+ - [docs/host-backends.md](https://github.com/vcoderun/acpkit/blob/main/docs/host-backends.md): client filesystem and terminal helpers
530
+ - [docs/helpers.md](https://github.com/vcoderun/acpkit/blob/main/docs/helpers.md): helper packages including `codex-auth-helper`
531
+ - [docs/testing.md](https://github.com/vcoderun/acpkit/blob/main/docs/testing.md): behavioral test surface and validation commands
532
+ - [examples/pydantic/README.md](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/README.md): runnable demos and focused SDK examples
412
533
 
413
534
  ## License
414
535