acpkit 0.8.2__tar.gz → 0.9.1__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 (321) hide show
  1. acpkit-0.9.1/.agents/skills/acpkit-sdk/SKILL.md +279 -0
  2. acpkit-0.9.1/.agents/skills/acpkit-sdk/agents/openai.yaml +7 -0
  3. acpkit-0.9.1/.agents/skills/acpkit-sdk/examples/README.md +52 -0
  4. acpkit-0.9.1/.agents/skills/acpremote/SKILL.md +247 -0
  5. acpkit-0.9.1/.agents/skills/acpremote/agents/openai.yaml +7 -0
  6. acpkit-0.9.1/.agents/skills/acpremote/examples/README.md +32 -0
  7. acpkit-0.9.1/.agents/skills/acpremote/examples/mirror_remote.py +32 -0
  8. acpkit-0.9.1/.agents/skills/acpremote/examples/serve_command.py +39 -0
  9. acpkit-0.9.1/.agents/skills/codex-auth-helper/SKILL.md +212 -0
  10. acpkit-0.9.1/.agents/skills/codex-auth-helper/agents/openai.yaml +7 -0
  11. acpkit-0.9.1/.agents/skills/codex-auth-helper/examples/README.md +34 -0
  12. acpkit-0.9.1/.agents/skills/codex-auth-helper/examples/codex_chat_openai_graph.py +39 -0
  13. acpkit-0.9.1/.agents/skills/codex-auth-helper/examples/codex_responses_agent.py +28 -0
  14. acpkit-0.9.1/.agents/skills/langchain-acp/SKILL.md +282 -0
  15. acpkit-0.9.1/.agents/skills/langchain-acp/agents/openai.yaml +7 -0
  16. acpkit-0.9.1/.agents/skills/langchain-acp/examples/README.md +39 -0
  17. acpkit-0.9.1/.agents/skills/pydantic-acp/SKILL.md +333 -0
  18. acpkit-0.9.1/.agents/skills/pydantic-acp/agents/openai.yaml +7 -0
  19. acpkit-0.9.1/.agents/skills/pydantic-acp/examples/README.md +32 -0
  20. {acpkit-0.8.2 → acpkit-0.9.1}/.github/workflows/ci.yml +4 -1
  21. {acpkit-0.8.2 → acpkit-0.9.1}/.github/workflows/publish.yml +4 -1
  22. {acpkit-0.8.2 → acpkit-0.9.1}/.gitignore +9 -0
  23. {acpkit-0.8.2 → acpkit-0.9.1}/CONTRIBUTING.md +2 -2
  24. acpkit-0.9.1/COVERAGE +2 -0
  25. {acpkit-0.8.2 → acpkit-0.9.1}/Makefile +7 -7
  26. {acpkit-0.8.2 → acpkit-0.9.1}/PKG-INFO +192 -20
  27. {acpkit-0.8.2 → acpkit-0.9.1}/README.md +176 -18
  28. acpkit-0.9.1/VERSION +1 -0
  29. {acpkit-0.8.2 → acpkit-0.9.1}/docs/.partials/index-header.html +2 -2
  30. {acpkit-0.8.2 → acpkit-0.9.1}/docs/about/index.md +20 -7
  31. acpkit-0.9.1/docs/acpremote.md +191 -0
  32. acpkit-0.9.1/docs/api/acpremote.md +47 -0
  33. {acpkit-0.8.2 → acpkit-0.9.1}/docs/api/codex_auth_helper.md +6 -0
  34. acpkit-0.9.1/docs/api/langchain_acp.md +117 -0
  35. {acpkit-0.8.2 → acpkit-0.9.1}/docs/bridges.md +4 -2
  36. {acpkit-0.8.2 → acpkit-0.9.1}/docs/cli.md +43 -7
  37. acpkit-0.9.1/docs/examples/deepagents.md +46 -0
  38. acpkit-0.9.1/docs/examples/dynamic-factory.md +160 -0
  39. {acpkit-0.8.2 → acpkit-0.9.1}/docs/examples/finance.md +7 -0
  40. acpkit-0.9.1/docs/examples/index.md +64 -0
  41. acpkit-0.9.1/docs/examples/langchain-codex.md +54 -0
  42. acpkit-0.9.1/docs/examples/langchain-workspace.md +48 -0
  43. acpkit-0.9.1/docs/examples/remote-hosting.md +81 -0
  44. acpkit-0.9.1/docs/getting-started/installation.md +169 -0
  45. acpkit-0.9.1/docs/getting-started/langchain-quickstart.md +244 -0
  46. acpkit-0.8.2/docs/getting-started/quickstart.md → acpkit-0.9.1/docs/getting-started/pydantic-quickstart.md +23 -4
  47. acpkit-0.9.1/docs/getting-started/quickstart.md +54 -0
  48. acpkit-0.9.1/docs/helpers.md +139 -0
  49. {acpkit-0.8.2 → acpkit-0.9.1}/docs/host-backends.md +4 -0
  50. acpkit-0.9.1/docs/index.md +137 -0
  51. acpkit-0.9.1/docs/langchain-acp/adapter-config.md +152 -0
  52. acpkit-0.9.1/docs/langchain-acp/bridges.md +124 -0
  53. acpkit-0.9.1/docs/langchain-acp/plans-thinking-approvals.md +114 -0
  54. acpkit-0.9.1/docs/langchain-acp/projections.md +142 -0
  55. acpkit-0.9.1/docs/langchain-acp/prompt-resources.md +94 -0
  56. acpkit-0.9.1/docs/langchain-acp/providers.md +162 -0
  57. acpkit-0.9.1/docs/langchain-acp/runtime-controls.md +136 -0
  58. acpkit-0.9.1/docs/langchain-acp/session-state.md +110 -0
  59. acpkit-0.9.1/docs/langchain-acp.md +370 -0
  60. {acpkit-0.8.2 → acpkit-0.9.1}/docs/llms-full.txt +2850 -178
  61. acpkit-0.9.1/docs/llms.txt +143 -0
  62. {acpkit-0.8.2 → acpkit-0.9.1}/docs/providers.md +4 -0
  63. {acpkit-0.8.2 → acpkit-0.9.1}/docs/pydantic-acp/prompt-resources.md +7 -7
  64. {acpkit-0.8.2 → acpkit-0.9.1}/docs/pydantic-acp.md +58 -4
  65. {acpkit-0.8.2 → acpkit-0.9.1}/docs/testing.md +12 -6
  66. acpkit-0.9.1/examples/langchain/.deepagents-graph/.deepagents-graph/brief.md +3 -0
  67. acpkit-0.9.1/examples/langchain/.deepagents-graph/brief.md +3 -0
  68. acpkit-0.9.1/examples/langchain/.workspace-graph/README.md +3 -0
  69. acpkit-0.9.1/examples/langchain/README.md +77 -0
  70. acpkit-0.9.1/examples/langchain/codex_graph.py +122 -0
  71. acpkit-0.9.1/examples/langchain/deepagents_graph.py +262 -0
  72. acpkit-0.9.1/examples/langchain/workspace_graph.py +242 -0
  73. {acpkit-0.8.2 → acpkit-0.9.1}/examples/pydantic/travel_agent.py +4 -1
  74. {acpkit-0.8.2 → acpkit-0.9.1}/mkdocs.yml +40 -12
  75. acpkit-0.9.1/packages/adapters/langchain-acp/README.md +174 -0
  76. acpkit-0.9.1/packages/adapters/langchain-acp/VERSION +1 -0
  77. acpkit-0.9.1/packages/adapters/langchain-acp/pyproject.toml +40 -0
  78. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/__init__.py +173 -0
  79. {acpkit-0.8.2/src/acpkit → acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp}/_version.py +1 -1
  80. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/approvals.py +106 -0
  81. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/bridge_manager.py +164 -0
  82. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/bridges/__init__.py +20 -0
  83. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/bridges/base.py +194 -0
  84. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/bridges/builtin.py +194 -0
  85. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/builders/__init__.py +8 -0
  86. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/builders/graph.py +88 -0
  87. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/config.py +61 -0
  88. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/event_projection.py +207 -0
  89. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/graph_source.py +50 -0
  90. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/plan.py +152 -0
  91. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/projection.py +1478 -0
  92. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/providers.py +102 -0
  93. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/runtime/__init__.py +6 -0
  94. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/runtime/_native_plan_runtime.py +233 -0
  95. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/runtime/_prompt_conversion.py +121 -0
  96. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/runtime/adapter.py +954 -0
  97. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/runtime/server.py +148 -0
  98. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/serialization.py +46 -0
  99. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/session/__init__.py +21 -0
  100. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/session/state.py +137 -0
  101. acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp/session/store.py +248 -0
  102. acpkit-0.9.1/packages/adapters/pydantic-acp/README.md +268 -0
  103. acpkit-0.9.1/packages/adapters/pydantic-acp/VERSION +1 -0
  104. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/pyproject.toml +1 -1
  105. {acpkit-0.8.2/packages/helpers/codex-auth-helper/src/codex_auth_helper → acpkit-0.9.1/packages/adapters/pydantic-acp/src/pydantic_acp}/_version.py +1 -1
  106. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/capability_support.py +6 -2
  107. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/prepare_tools.py +4 -1
  108. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_model_runtime.py +7 -1
  109. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/prompts.py +6 -5
  110. acpkit-0.9.1/packages/adapters/pydantic-acp/src/pydantic_acp/types.py +43 -0
  111. {acpkit-0.8.2 → acpkit-0.9.1}/packages/helpers/codex-auth-helper/README.md +77 -10
  112. acpkit-0.9.1/packages/helpers/codex-auth-helper/VERSION +1 -0
  113. {acpkit-0.8.2 → acpkit-0.9.1}/packages/helpers/codex-auth-helper/pyproject.toml +4 -1
  114. {acpkit-0.8.2 → acpkit-0.9.1}/packages/helpers/codex-auth-helper/src/codex_auth_helper/__init__.py +5 -2
  115. {acpkit-0.8.2/packages/adapters/pydantic-acp/src/pydantic_acp → acpkit-0.9.1/packages/helpers/codex-auth-helper/src/codex_auth_helper}/_version.py +1 -1
  116. {acpkit-0.8.2 → acpkit-0.9.1}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/manager.py +48 -0
  117. acpkit-0.9.1/packages/helpers/codex-auth-helper/src/codex_auth_helper/client.py +145 -0
  118. acpkit-0.9.1/packages/helpers/codex-auth-helper/src/codex_auth_helper/factory.py +110 -0
  119. acpkit-0.9.1/packages/helpers/codex-auth-helper/src/codex_auth_helper/model.py +74 -0
  120. acpkit-0.9.1/packages/helpers/codex-auth-helper/src/codex_auth_helper/py.typed +1 -0
  121. acpkit-0.9.1/packages/transports/acpremote/README.md +140 -0
  122. acpkit-0.9.1/packages/transports/acpremote/VERSION +1 -0
  123. acpkit-0.9.1/packages/transports/acpremote/pyproject.toml +30 -0
  124. acpkit-0.9.1/packages/transports/acpremote/src/acpremote/__init__.py +49 -0
  125. acpkit-0.9.1/packages/transports/acpremote/src/acpremote/_version.py +5 -0
  126. acpkit-0.9.1/packages/transports/acpremote/src/acpremote/auth.py +35 -0
  127. acpkit-0.9.1/packages/transports/acpremote/src/acpremote/client.py +173 -0
  128. acpkit-0.9.1/packages/transports/acpremote/src/acpremote/command.py +172 -0
  129. acpkit-0.9.1/packages/transports/acpremote/src/acpremote/config.py +78 -0
  130. acpkit-0.9.1/packages/transports/acpremote/src/acpremote/limits.py +19 -0
  131. acpkit-0.9.1/packages/transports/acpremote/src/acpremote/metadata.py +69 -0
  132. acpkit-0.9.1/packages/transports/acpremote/src/acpremote/proxy_agent.py +518 -0
  133. acpkit-0.9.1/packages/transports/acpremote/src/acpremote/py.typed +1 -0
  134. acpkit-0.9.1/packages/transports/acpremote/src/acpremote/server.py +247 -0
  135. acpkit-0.9.1/packages/transports/acpremote/src/acpremote/stream.py +212 -0
  136. {acpkit-0.8.2 → acpkit-0.9.1}/pyproject.toml +17 -3
  137. {acpkit-0.8.2 → acpkit-0.9.1}/pyrightconfig.json +1 -1
  138. {acpkit-0.8.2 → acpkit-0.9.1}/scripts/generate_llms_docs.py +107 -5
  139. {acpkit-0.8.2 → acpkit-0.9.1}/scripts/save_coverage_summary.py +4 -1
  140. {acpkit-0.8.2 → acpkit-0.9.1}/src/acpkit/__init__.py +19 -0
  141. {acpkit-0.8.2 → acpkit-0.9.1}/src/acpkit/_compatibility_schema.py +5 -3
  142. acpkit-0.9.1/src/acpkit/_version.py +5 -0
  143. {acpkit-0.8.2 → acpkit-0.9.1}/src/acpkit/adapters.py +69 -1
  144. {acpkit-0.8.2 → acpkit-0.9.1}/src/acpkit/cli.py +78 -4
  145. {acpkit-0.8.2 → acpkit-0.9.1}/src/acpkit/runtime.py +87 -0
  146. acpkit-0.9.1/tests/acpremote/test_command_server.py +271 -0
  147. acpkit-0.9.1/tests/acpremote/test_helpers.py +933 -0
  148. acpkit-0.9.1/tests/acpremote/test_phase1.py +352 -0
  149. acpkit-0.9.1/tests/acpremote/test_phase2.py +269 -0
  150. acpkit-0.9.1/tests/acpremote/test_phase3.py +443 -0
  151. {acpkit-0.8.2 → acpkit-0.9.1}/tests/codex_auth_helper/test_auth.py +174 -9
  152. {acpkit-0.8.2 → acpkit-0.9.1}/tests/codex_auth_helper/test_factory.py +206 -3
  153. {acpkit-0.8.2 → acpkit-0.9.1}/tests/conftest.py +1 -0
  154. acpkit-0.9.1/tests/langchain/__init__.py +1 -0
  155. acpkit-0.9.1/tests/langchain/support.py +287 -0
  156. acpkit-0.9.1/tests/langchain/test_examples.py +578 -0
  157. acpkit-0.9.1/tests/langchain/test_low_level_helpers.py +3437 -0
  158. acpkit-0.9.1/tests/langchain/test_runtime.py +1070 -0
  159. acpkit-0.9.1/tests/langchain/test_support.py +119 -0
  160. acpkit-0.9.1/tests/pydantic/__init__.py +3 -0
  161. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_adapter_helpers.py +307 -12
  162. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_approvals.py +6 -6
  163. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_bridge_builder.py +3 -3
  164. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_bridge_capability_support.py +181 -31
  165. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_bridge_mcp.py +7 -3
  166. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_bridge_prepare_tools.py +25 -45
  167. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_bridge_web_capabilities.py +3 -1
  168. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_compat.py +2 -2
  169. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_examples.py +64 -2
  170. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_hook_introspection.py +16 -16
  171. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_host_policy.py +1 -4
  172. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_low_level_helpers.py +177 -13
  173. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_models.py +44 -43
  174. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_projection.py +40 -0
  175. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_runtime.py +8 -8
  176. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_session_runtime_helpers.py +24 -4
  177. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_slash_commands.py +15 -9
  178. acpkit-0.9.1/tests/pydantic/test_support.py +168 -0
  179. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_testing_harness.py +3 -1
  180. acpkit-0.9.1/tests/test_acpkit_cli.py +1278 -0
  181. acpkit-0.9.1/tests/test_native_langchain_agent.py +190 -0
  182. {acpkit-0.8.2 → acpkit-0.9.1}/tests/test_native_pydantic_agent.py +7 -2
  183. acpkit-0.8.2/.agents/skills/acpkit-sdk/SKILL.md +0 -902
  184. acpkit-0.8.2/.agents/skills/acpkit-sdk/agents/openai.yaml +0 -7
  185. acpkit-0.8.2/CHANGELOG +0 -74
  186. acpkit-0.8.2/COVERAGE +0 -2
  187. acpkit-0.8.2/VERSION +0 -1
  188. acpkit-0.8.2/docs/examples/index.md +0 -28
  189. acpkit-0.8.2/docs/getting-started/installation.md +0 -105
  190. acpkit-0.8.2/docs/helpers.md +0 -72
  191. acpkit-0.8.2/docs/index.md +0 -112
  192. acpkit-0.8.2/docs/llms.txt +0 -92
  193. acpkit-0.8.2/packages/adapters/pydantic-acp/README.md +0 -139
  194. acpkit-0.8.2/packages/adapters/pydantic-acp/VERSION +0 -1
  195. acpkit-0.8.2/packages/helpers/codex-auth-helper/VERSION +0 -1
  196. acpkit-0.8.2/packages/helpers/codex-auth-helper/src/codex_auth_helper/client.py +0 -67
  197. acpkit-0.8.2/packages/helpers/codex-auth-helper/src/codex_auth_helper/factory.py +0 -30
  198. acpkit-0.8.2/packages/helpers/codex-auth-helper/src/codex_auth_helper/model.py +0 -25
  199. acpkit-0.8.2/tests/test_acpkit_cli.py +0 -622
  200. {acpkit-0.8.2 → acpkit-0.9.1}/.agents/skills/acpkit-sdk/resources/intro.md +0 -0
  201. {acpkit-0.8.2 → acpkit-0.9.1}/.agents/skills/acpkit-sdk/scripts/list_examples.py +0 -0
  202. {acpkit-0.8.2 → acpkit-0.9.1}/.agents/skills/acpkit-sdk/scripts/list_public_exports.py +0 -0
  203. {acpkit-0.8.2 → acpkit-0.9.1}/.cursorrules +0 -0
  204. {acpkit-0.8.2 → acpkit-0.9.1}/.editorconfig +0 -0
  205. {acpkit-0.8.2 → acpkit-0.9.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  206. {acpkit-0.8.2 → acpkit-0.9.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  207. {acpkit-0.8.2 → acpkit-0.9.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  208. {acpkit-0.8.2 → acpkit-0.9.1}/.github/dependabot.yml +0 -0
  209. {acpkit-0.8.2 → acpkit-0.9.1}/.github/workflows/codecov.yml +0 -0
  210. {acpkit-0.8.2 → acpkit-0.9.1}/.github/workflows/docs.yml +0 -0
  211. {acpkit-0.8.2 → acpkit-0.9.1}/.github/workflows/test.yml +0 -0
  212. {acpkit-0.8.2 → acpkit-0.9.1}/.pre-commit-config.yaml +0 -0
  213. {acpkit-0.8.2 → acpkit-0.9.1}/.python-version +0 -0
  214. {acpkit-0.8.2 → acpkit-0.9.1}/CODE_OF_CONDUCT.md +0 -0
  215. {acpkit-0.8.2 → acpkit-0.9.1}/LICENSE +0 -0
  216. {acpkit-0.8.2 → acpkit-0.9.1}/SECURITY.md +0 -0
  217. {acpkit-0.8.2 → acpkit-0.9.1}/context7.json +0 -0
  218. {acpkit-0.8.2 → acpkit-0.9.1}/docs/api/acpkit.md +0 -0
  219. {acpkit-0.8.2 → acpkit-0.9.1}/docs/api/pydantic_acp.md +0 -0
  220. {acpkit-0.8.2 → acpkit-0.9.1}/docs/compatibility-matrix-template.md +0 -0
  221. {acpkit-0.8.2 → acpkit-0.9.1}/docs/examples/travel.md +0 -0
  222. {acpkit-0.8.2 → acpkit-0.9.1}/docs/integration-audit.md +0 -0
  223. {acpkit-0.8.2 → acpkit-0.9.1}/docs/integration-readiness.md +0 -0
  224. {acpkit-0.8.2 → acpkit-0.9.1}/docs/integration-testing.md +0 -0
  225. {acpkit-0.8.2 → acpkit-0.9.1}/docs/projection-cookbook.md +0 -0
  226. {acpkit-0.8.2 → acpkit-0.9.1}/docs/pydantic-acp/adapter-config.md +0 -0
  227. {acpkit-0.8.2 → acpkit-0.9.1}/docs/pydantic-acp/plans-thinking-approvals.md +0 -0
  228. {acpkit-0.8.2 → acpkit-0.9.1}/docs/pydantic-acp/runtime-controls.md +0 -0
  229. {acpkit-0.8.2 → acpkit-0.9.1}/docs/pydantic-acp/session-state.md +0 -0
  230. {acpkit-0.8.2 → acpkit-0.9.1}/docs/stylesheets/tweaks.css +0 -0
  231. {acpkit-0.8.2 → acpkit-0.9.1}/examples/__init__.py +0 -0
  232. {acpkit-0.8.2/examples/pydantic → acpkit-0.9.1/examples/langchain}/__init__.py +0 -0
  233. {acpkit-0.8.2 → acpkit-0.9.1}/examples/pydantic/.gitignore +0 -0
  234. {acpkit-0.8.2 → acpkit-0.9.1}/examples/pydantic/.travel-agent/ideas.txt +0 -0
  235. {acpkit-0.8.2 → acpkit-0.9.1}/examples/pydantic/.travel-agent/itinerary.md +0 -0
  236. {acpkit-0.8.2 → acpkit-0.9.1}/examples/pydantic/README.md +0 -0
  237. {acpkit-0.8.2/tests → acpkit-0.9.1/examples/pydantic}/__init__.py +0 -0
  238. {acpkit-0.8.2 → acpkit-0.9.1}/examples/pydantic/finance_agent.py +0 -0
  239. {acpkit-0.8.2/packages/adapters/pydantic-acp/src/pydantic_acp → acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp}/py.typed +0 -0
  240. {acpkit-0.8.2/packages/adapters/pydantic-acp/src/pydantic_acp → acpkit-0.9.1/packages/adapters/langchain-acp/src/langchain_acp}/types.py +0 -0
  241. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/__init__.py +0 -0
  242. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/_projection_risk.py +0 -0
  243. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/_projection_text.py +0 -0
  244. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/_slash_commands.py +0 -0
  245. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_source.py +0 -0
  246. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/agent_types.py +0 -0
  247. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/approvals.py +0 -0
  248. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/awaitables.py +0 -0
  249. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/__init__.py +0 -0
  250. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/_hook_capability.py +0 -0
  251. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/base.py +0 -0
  252. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/history_processor.py +0 -0
  253. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/hooks.py +0 -0
  254. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/mcp.py +0 -0
  255. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/bridges/thinking.py +0 -0
  256. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/builders/__init__.py +0 -0
  257. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/builders/agent.py +0 -0
  258. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/config.py +0 -0
  259. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/hook_projection.py +0 -0
  260. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/host/__init__.py +0 -0
  261. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/host/_policy_commands.py +0 -0
  262. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/host/_policy_paths.py +0 -0
  263. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/host/context.py +0 -0
  264. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/host/filesystem.py +0 -0
  265. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/host/policy.py +0 -0
  266. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/host/terminal.py +0 -0
  267. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/models.py +0 -0
  268. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/projection.py +0 -0
  269. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/projection_helpers.py +0 -0
  270. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/providers.py +0 -0
  271. {acpkit-0.8.2/packages/helpers/codex-auth-helper/src/codex_auth_helper → acpkit-0.9.1/packages/adapters/pydantic-acp/src/pydantic_acp}/py.typed +0 -0
  272. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/__init__.py +0 -0
  273. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_mixins.py +0 -0
  274. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_prompt.py +0 -0
  275. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_agent_state.py +0 -0
  276. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_compat.py +0 -0
  277. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_native_plan_runtime.py +0 -0
  278. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_execution.py +0 -0
  279. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_model_runtime.py +0 -0
  280. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_runtime.py +0 -0
  281. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_lifecycle.py +0 -0
  282. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_runtime.py +0 -0
  283. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_surface_runtime.py +0 -0
  284. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/adapter.py +0 -0
  285. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/bridge_manager.py +0 -0
  286. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/hook_introspection.py +0 -0
  287. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/server.py +0 -0
  288. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/session_surface.py +0 -0
  289. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/runtime/slash_commands.py +0 -0
  290. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/serialization.py +0 -0
  291. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/session/__init__.py +0 -0
  292. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/session/state.py +0 -0
  293. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/session/store.py +0 -0
  294. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/__init__.py +0 -0
  295. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/fakes.py +0 -0
  296. {acpkit-0.8.2 → acpkit-0.9.1}/packages/adapters/pydantic-acp/src/pydantic_acp/testing/harness.py +0 -0
  297. {acpkit-0.8.2 → acpkit-0.9.1}/packages/helpers/codex-auth-helper/.gitignore +0 -0
  298. {acpkit-0.8.2 → acpkit-0.9.1}/packages/helpers/codex-auth-helper/LICENSE +0 -0
  299. {acpkit-0.8.2 → acpkit-0.9.1}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/__init__.py +0 -0
  300. {acpkit-0.8.2 → acpkit-0.9.1}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/config.py +0 -0
  301. {acpkit-0.8.2 → acpkit-0.9.1}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/state.py +0 -0
  302. {acpkit-0.8.2 → acpkit-0.9.1}/packages/helpers/codex-auth-helper/src/codex_auth_helper/auth/store.py +0 -0
  303. {acpkit-0.8.2 → acpkit-0.9.1}/scripts/check_pypi_versions.py +0 -0
  304. {acpkit-0.8.2 → acpkit-0.9.1}/scripts/demo_mcp_server.py +0 -0
  305. {acpkit-0.8.2 → acpkit-0.9.1}/scripts/mock_hook_audit.py +0 -0
  306. {acpkit-0.8.2 → acpkit-0.9.1}/scripts/mock_hook_snapshot.py +0 -0
  307. {acpkit-0.8.2 → acpkit-0.9.1}/scripts/run_if_major_change.py +0 -0
  308. {acpkit-0.8.2 → acpkit-0.9.1}/src/acpkit/__main__.py +0 -0
  309. {acpkit-0.8.2 → acpkit-0.9.1}/src/acpkit/compatibility.py +0 -0
  310. {acpkit-0.8.2 → acpkit-0.9.1}/src/acpkit/py.typed +0 -0
  311. {acpkit-0.8.2/tests/pydantic → acpkit-0.9.1/tests}/__init__.py +0 -0
  312. {acpkit-0.8.2 → acpkit-0.9.1}/tests/codex_auth_helper/__init__.py +0 -0
  313. {acpkit-0.8.2 → acpkit-0.9.1}/tests/codex_auth_helper/support.py +0 -0
  314. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/support.py +0 -0
  315. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_bridge_hooks.py +0 -0
  316. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_bridge_thinking.py +0 -0
  317. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_host.py +0 -0
  318. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_projection_helpers.py +0 -0
  319. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_sources.py +0 -0
  320. {acpkit-0.8.2 → acpkit-0.9.1}/tests/pydantic/test_testing_fakes.py +0 -0
  321. {acpkit-0.8.2 → acpkit-0.9.1}/tests/test_compatibility_manifest.py +0 -0
@@ -0,0 +1,279 @@
1
+ ---
2
+ name: "acpkit-sdk"
3
+ description: "Use for ACP Kit root-package work: CLI target resolution, `acpkit run`, `acpkit serve`, `acpkit launch`, cross-package routing, and end-to-end flows that span adapters plus transport."
4
+ ---
5
+
6
+ # acpkit Root Skill
7
+
8
+ Use this skill when the task is primarily about the root `acpkit` package.
9
+
10
+ This skill owns the repo-level orchestration layer:
11
+
12
+ - CLI entrypoints
13
+ - Python target loading
14
+ - adapter auto-dispatch
15
+ - native ACP passthrough
16
+ - `--addr` remote mirror entrypoints
17
+ - Toad launch integration
18
+ - end-to-end flows that combine the root package with adapters and transport
19
+
20
+ It does not own the detailed runtime semantics of the adapter packages.
21
+
22
+ ## Start Here
23
+
24
+ If you only need the shortest high-signal path:
25
+
26
+ 1. read `Quick Routing`
27
+ 2. open the [CLI module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/cli.py) for command-shape questions
28
+ 3. open the [runtime module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/runtime.py) for execution-path questions
29
+ 4. open the [adapter-dispatch module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/adapters.py) for adapter-selection questions
30
+
31
+ ## Quick Routing
32
+
33
+ | If the task is about... | Use this skill? | Open first |
34
+ | --- | --- | --- |
35
+ | `acpkit run ...` or `acpkit serve ...` | Yes | [CLI module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/cli.py), [runtime module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/runtime.py) |
36
+ | `module` vs `module:attribute` target resolution | Yes | [CLI module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/cli.py), [runtime module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/runtime.py) |
37
+ | missing adapter install hints | Yes | [adapter-dispatch module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/adapters.py) |
38
+ | native ACP passthrough | Yes | [adapter-dispatch module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/adapters.py), [runtime module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/runtime.py) |
39
+ | `acpkit launch ...` or `launch --command ...` | Yes | [runtime module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/runtime.py), [CLI module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/cli.py) |
40
+ | `pydantic_ai.Agent` runtime behavior | No, pair with `pydantic-acp` | [Pydantic adapter package](https://github.com/vcoderun/acpkit/tree/main/packages/adapters/pydantic-acp) |
41
+ | LangGraph / DeepAgents runtime behavior | No, pair with `langchain-acp` | [LangChain adapter package](https://github.com/vcoderun/acpkit/tree/main/packages/adapters/langchain-acp) |
42
+ | WebSocket transport or remote mirroring | No, pair with `acpremote` | [Remote transport package](https://github.com/vcoderun/acpkit/tree/main/packages/transports/acpremote) |
43
+
44
+ ## Package Boundary
45
+
46
+ `acpkit` is not an adapter and not a transport package.
47
+
48
+ It is the root runtime package that:
49
+
50
+ 1. accepts CLI input
51
+ 2. resolves a target from Python import space or remote address
52
+ 3. selects the correct runtime lane
53
+ 4. dispatches to the relevant package
54
+
55
+ That means it owns control flow, not framework semantics.
56
+
57
+ What it owns:
58
+
59
+ - CLI parsing
60
+ - target loading
61
+ - adapter detection
62
+ - dispatch to `pydantic-acp` or `langchain-acp`
63
+ - direct passthrough for already-materialized ACP agents
64
+ - remote mirror startup through `--addr`
65
+ - Toad launch wrapping
66
+
67
+ What it does not own:
68
+
69
+ - Pydantic plan/approval/projection details
70
+ - LangChain graph/provider/projection details
71
+ - WebSocket transport behavior
72
+ - Codex auth parsing
73
+
74
+ ## Primary References
75
+
76
+ Root-package references:
77
+
78
+ - [Raw skill](https://raw.githubusercontent.com/vcoderun/acpkit/main/.agents/skills/acpkit-sdk/SKILL.md)
79
+ - [Raw CLI docs](https://raw.githubusercontent.com/vcoderun/acpkit/main/docs/cli.md)
80
+ - [Raw examples index](https://raw.githubusercontent.com/vcoderun/acpkit/main/docs/examples/index.md)
81
+ - [Rendered CLI docs](https://vcoderun.github.io/acpkit/cli/)
82
+ - [Source tree](https://github.com/vcoderun/acpkit/tree/main/src/acpkit)
83
+
84
+ Cross-package references often needed from this skill:
85
+
86
+ - [Pydantic adapter skill](https://raw.githubusercontent.com/vcoderun/acpkit/main/.agents/skills/pydantic-acp/SKILL.md)
87
+ - [LangChain adapter skill](https://raw.githubusercontent.com/vcoderun/acpkit/main/.agents/skills/langchain-acp/SKILL.md)
88
+ - [Remote transport skill](https://raw.githubusercontent.com/vcoderun/acpkit/main/.agents/skills/acpremote/SKILL.md)
89
+ - [Codex helper skill](https://raw.githubusercontent.com/vcoderun/acpkit/main/.agents/skills/codex-auth-helper/SKILL.md)
90
+
91
+ ## Public Entry Points
92
+
93
+ User-facing commands:
94
+
95
+ - `acpkit run TARGET`
96
+ - `acpkit run --addr ws://...`
97
+ - `acpkit serve TARGET`
98
+ - `acpkit launch TARGET`
99
+ - `acpkit launch --command "..."`
100
+
101
+ Important runtime helpers:
102
+
103
+ - `run_target(...)`
104
+ - `serve_target(...)`
105
+ - `launch_target(...)`
106
+ - `run_remote_addr(...)`
107
+
108
+ Important distinction:
109
+
110
+ - `run TARGET`
111
+ starts a local stdio ACP server from a Python target
112
+ - `serve TARGET`
113
+ materializes a compatible ACP agent and exposes it through `acpremote`
114
+ - `run --addr ...`
115
+ skips Python target resolution entirely and mirrors a remote ACP endpoint locally
116
+ - `launch`
117
+ wraps the `run` path through Toad or shells out directly for command mode
118
+
119
+ ## Target Resolution
120
+
121
+ High-level target resolution flow:
122
+
123
+ 1. add the current working directory to `sys.path`
124
+ 2. add any explicit `-p/--path` roots
125
+ 3. import the module
126
+ 4. if an attribute path exists, resolve it
127
+ 5. if no attribute path exists, select the last defined supported target
128
+
129
+ Current supported target families:
130
+
131
+ - `pydantic_ai.Agent`
132
+ - LangGraph / LangChain compiled graphs
133
+ - native ACP agents
134
+
135
+ When debugging target resolution:
136
+
137
+ 1. inspect import roots first
138
+ 2. inspect the resolved object type second
139
+ 3. inspect adapter installation/import errors third
140
+
141
+ Do not jump into adapter internals before confirming the root package selected the correct object.
142
+
143
+ ## Adapter Dispatch
144
+
145
+ The root package decides the runtime lane, then hands off.
146
+
147
+ Conceptual dispatch:
148
+
149
+ 1. if the target already satisfies the ACP agent boundary, pass it through
150
+ 2. if the target is a `pydantic_ai.Agent`, materialize through `pydantic-acp`
151
+ 3. if the target is a LangGraph/LangChain graph, materialize through `langchain-acp`
152
+ 4. if the user passed `--addr`, bypass target loading and mirror the remote ACP endpoint
153
+
154
+ `acpkit` should stay explicit about:
155
+
156
+ - target typing
157
+ - adapter availability
158
+ - dispatch selection
159
+
160
+ It should stay intentionally ignorant about:
161
+
162
+ - Pydantic adapter internals
163
+ - LangChain adapter internals
164
+ - WebSocket wire semantics
165
+
166
+ ## Do Not Confuse With
167
+
168
+ - `acpkit-sdk` vs `pydantic-acp`
169
+ `acpkit` decides the lane; `pydantic-acp` owns the Pydantic runtime semantics
170
+ - `acpkit-sdk` vs `langchain-acp`
171
+ `acpkit` resolves and dispatches; `langchain-acp` owns graph adaptation and projection
172
+ - `acpkit-sdk` vs `acpremote`
173
+ `acpkit` is the root CLI/runtime package; `acpremote` is transport
174
+
175
+ ## Module Guide
176
+
177
+ | Module | Use it for | Notes |
178
+ | --- | --- | --- |
179
+ | [CLI module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/cli.py) | Click command definitions, argument validation, help/flag behavior | First stop for CLI UX bugs |
180
+ | [Runtime module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/runtime.py) | `run`, `serve`, `launch`, remote mirror runtime paths | First stop for dispatch behavior after parsing |
181
+ | [Adapter-dispatch module](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/adapters.py) | target typing, adapter import/load, native ACP detection | First stop for wrong lane selection |
182
+ | [Compatibility helpers](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/compatibility.py) | compatibility manifest helpers | Not part of normal runtime dispatch |
183
+ | [Compatibility schema](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/_compatibility_schema.py) | manifest schema and validation | Use only for compatibility-surface work |
184
+ | [Console entrypoint](https://github.com/vcoderun/acpkit/blob/main/src/acpkit/__main__.py) | console entrypoint | Usually not the source of behavior bugs |
185
+
186
+ ## Common Workflows
187
+
188
+ ### Run an adapter-backed local ACP server
189
+
190
+ Pydantic:
191
+
192
+ ```bash
193
+ acpkit run examples.pydantic.finance_agent:agent
194
+ ```
195
+
196
+ LangChain:
197
+
198
+ ```bash
199
+ acpkit run examples.langchain.workspace_graph:graph
200
+ ```
201
+
202
+ ### Expose a remote ACP host
203
+
204
+ ```bash
205
+ acpkit serve examples.langchain.workspace_graph:graph --host 0.0.0.0 --port 8080
206
+ ```
207
+
208
+ ### Mirror a remote ACP host back into a local ACP boundary
209
+
210
+ ```bash
211
+ acpkit run --addr ws://127.0.0.1:8080/acp/ws
212
+ ```
213
+
214
+ ### Launch through Toad
215
+
216
+ ```bash
217
+ acpkit launch examples.pydantic.finance_agent:agent
218
+ acpkit launch examples.langchain.workspace_graph:graph
219
+ ```
220
+
221
+ ### Launch a script that already starts ACP itself
222
+
223
+ ```bash
224
+ acpkit launch --command "python3.11 some_script_that_starts_acp.py"
225
+ ```
226
+
227
+ ## Cross-Package Workflows
228
+
229
+ Typical combinations:
230
+
231
+ - `acpkit` + `pydantic-acp`
232
+ when the root package resolves and runs or serves a `pydantic_ai.Agent`
233
+ - `acpkit` + `langchain-acp`
234
+ when the root package resolves and runs or serves a LangChain/LangGraph target
235
+ - `acpkit` + `acpremote`
236
+ when the root package is part of a remote-host topology via `serve` or `--addr`
237
+ - `pydantic-acp` + `codex-auth-helper`
238
+ when a Codex-backed Pydantic model is exposed through ACP and then possibly launched through `acpkit`
239
+
240
+ ## Skill-Bundled Recipes
241
+
242
+ Skill-local recipe index:
243
+
244
+ - [Skill-local recipe index](https://github.com/vcoderun/acpkit/blob/main/.agents/skills/acpkit-sdk/examples/README.md)
245
+
246
+ Public adapter examples commonly launched through the root package:
247
+
248
+ - [Pydantic public examples](https://raw.githubusercontent.com/vcoderun/acpkit/main/examples/pydantic/README.md)
249
+ - [LangChain public examples](https://raw.githubusercontent.com/vcoderun/acpkit/main/examples/langchain/README.md)
250
+
251
+ Remote pairing examples:
252
+
253
+ - [Remote command exposure recipe](https://github.com/vcoderun/acpkit/blob/main/.agents/skills/acpremote/examples/serve_command.py)
254
+ - [Remote mirror recipe](https://github.com/vcoderun/acpkit/blob/main/.agents/skills/acpremote/examples/mirror_remote.py)
255
+
256
+ ## Handoff Rules
257
+
258
+ Switch to a narrower skill when:
259
+
260
+ - the bug is clearly inside adapter runtime behavior
261
+ - the task is about approvals, plans, projections, or host policy
262
+ - the task is about transport or remote ownership rather than CLI or dispatch
263
+ - the task is about Codex auth refresh or `auth.json`
264
+
265
+ Stay in this skill when:
266
+
267
+ - the main question is import resolution
268
+ - the main question is runtime lane selection
269
+ - the main question is CLI behavior
270
+ - the main question is how multiple packages fit together end-to-end
271
+
272
+ ## Guardrails
273
+
274
+ - Do not claim the root package itself adapts framework runtimes. It routes them.
275
+ - Do not describe `acpremote` as an adapter.
276
+ - Do not describe `codex-auth-helper` as part of target resolution.
277
+ - 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, projections, host ownership,
279
+ or provider behavior, move to the narrower package skill.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "ACP Kit"
3
+ short_description: "Root CLI, dispatch, and ACP app wiring"
4
+ default_prompt: "Use $acpkit-sdk to update ACP Kit CLI behavior, target resolution, adapter dispatch, or end-to-end root-package flows."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true
@@ -0,0 +1,52 @@
1
+ # acpkit-sdk Examples
2
+
3
+ These are skill-local operator recipes for the root `acpkit` package.
4
+
5
+ ## Run Adapter-Backed Targets
6
+
7
+ Pydantic AI:
8
+
9
+ ```bash
10
+ acpkit run examples.pydantic.finance_agent:agent
11
+ acpkit run examples.pydantic.travel_agent:agent
12
+ ```
13
+
14
+ LangChain / LangGraph:
15
+
16
+ ```bash
17
+ acpkit run examples.langchain.workspace_graph:graph
18
+ acpkit run examples.langchain.deepagents_graph:graph
19
+ ```
20
+
21
+ ## Serve A Remote ACP Host
22
+
23
+ Pydantic AI:
24
+
25
+ ```bash
26
+ acpkit serve examples.pydantic.finance_agent:agent --host 0.0.0.0 --port 8080
27
+ ```
28
+
29
+ LangChain / LangGraph:
30
+
31
+ ```bash
32
+ acpkit serve examples.langchain.workspace_graph:graph --host 0.0.0.0 --port 8080
33
+ ```
34
+
35
+ Mirror the remote host back into a local ACP boundary:
36
+
37
+ ```bash
38
+ acpkit run --addr ws://127.0.0.1:8080/acp/ws
39
+ ```
40
+
41
+ ## Launch Through Toad
42
+
43
+ ```bash
44
+ acpkit launch examples.pydantic.finance_agent:agent
45
+ acpkit launch examples.langchain.workspace_graph:graph
46
+ ```
47
+
48
+ If a script already starts ACP by itself:
49
+
50
+ ```bash
51
+ acpkit launch --command "python3.11 some_script_that_starts_acp.py"
52
+ ```
@@ -0,0 +1,247 @@
1
+ ---
2
+ name: "acpremote"
3
+ description: "Use for `acpremote` tasks: exposing ACP agents or stdio ACP commands over WebSocket, mirroring remote ACP endpoints locally, host ownership semantics, metadata/auth routes, and remote transport examples."
4
+ ---
5
+
6
+ # acpremote Skill
7
+
8
+ Use this skill when the task is about the `acpremote` transport package.
9
+
10
+ This package is the repo's ACP transport/helper layer. It assumes the runtime already speaks ACP
11
+ and focuses on moving that ACP boundary across WebSocket transport or back into a local ACP proxy.
12
+
13
+ It is not an adapter.
14
+
15
+ That distinction matters:
16
+
17
+ - adapters turn framework runtimes into ACP
18
+ - `acpremote` transports or mirrors an ACP boundary that already exists
19
+
20
+ ## Start Here
21
+
22
+ If you only need the shortest high-signal path:
23
+
24
+ 1. read `Quick Routing`
25
+ 2. open the [server transport module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/server.py) for exposure-path questions
26
+ 3. open the [remote client module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/client.py) and the [proxy agent module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/proxy_agent.py) for mirror-path questions
27
+ 4. open the [command transport module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/command.py) only when the upstream runtime is ACP-over-stdio
28
+
29
+ ## Quick Routing
30
+
31
+ | If the task is about... | Use this skill? | Open first |
32
+ | --- | --- | --- |
33
+ | expose an existing ACP agent over WebSocket | Yes | [server transport module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/server.py), [transport config module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/config.py) |
34
+ | expose a stdio ACP command over WebSocket | Yes | [command transport module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/command.py), [server transport module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/server.py) |
35
+ | mirror a remote ACP endpoint locally | Yes | [remote client module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/client.py), [proxy agent module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/proxy_agent.py) |
36
+ | bearer auth or metadata routes | Yes | [auth helpers](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/auth.py), [metadata module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/metadata.py), [server transport module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/server.py) |
37
+ | remote host ownership or `remote_cwd` | Yes | [proxy agent module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/proxy_agent.py), [remote client module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/client.py), [metadata module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/metadata.py) |
38
+ | line buffering / frame relay issues | Yes | [stream bridge module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/stream.py) |
39
+ | adapting a Pydantic or LangChain runtime to ACP | No, pair with adapter skill | adapter packages |
40
+
41
+ ## Package Boundary
42
+
43
+ `acpremote` owns:
44
+
45
+ - WebSocket transport
46
+ - stdio-to-WebSocket ACP relaying
47
+ - remote mirror proxy behavior
48
+ - `/acp` metadata
49
+ - `/healthz`
50
+ - bearer-token protection
51
+ - transport latency metadata/projection
52
+ - host-ownership policy for mirrored clients
53
+
54
+ It does not own:
55
+
56
+ - adapting `pydantic_ai.Agent`
57
+ - adapting LangGraph/LangChain graphs
58
+ - root CLI target loading
59
+ - Codex auth parsing
60
+
61
+ ## Do Not Confuse With
62
+
63
+ - `acpremote` vs `acpkit-sdk`
64
+ `acpremote` is transport; `acpkit` is the root CLI/runtime package
65
+ - `acpremote` vs `pydantic-acp`
66
+ `acpremote` exposes or mirrors ACP; `pydantic-acp` creates ACP from a Pydantic runtime
67
+ - `acpremote` vs `langchain-acp`
68
+ `acpremote` transports ACP; `langchain-acp` adapts graph runtimes into ACP
69
+
70
+ ## Primary References
71
+
72
+ Package references:
73
+
74
+ - [Raw skill](https://raw.githubusercontent.com/vcoderun/acpkit/main/.agents/skills/acpremote/SKILL.md)
75
+ - [Raw transport docs](https://raw.githubusercontent.com/vcoderun/acpkit/main/docs/acpremote.md)
76
+ - [Raw remote-host docs](https://raw.githubusercontent.com/vcoderun/acpkit/main/docs/examples/remote-hosting.md)
77
+ - [Rendered docs](https://vcoderun.github.io/acpkit/acpremote/)
78
+ - [Source tree](https://github.com/vcoderun/acpkit/tree/main/packages/transports/acpremote)
79
+
80
+ Cross-skill references:
81
+
82
+ - [Root package skill](https://raw.githubusercontent.com/vcoderun/acpkit/main/.agents/skills/acpkit-sdk/SKILL.md)
83
+ - [Pydantic adapter skill](https://raw.githubusercontent.com/vcoderun/acpkit/main/.agents/skills/pydantic-acp/SKILL.md)
84
+ - [LangChain adapter skill](https://raw.githubusercontent.com/vcoderun/acpkit/main/.agents/skills/langchain-acp/SKILL.md)
85
+
86
+ ## Public Surface
87
+
88
+ Server-side seams:
89
+
90
+ - `serve_acp(...)`
91
+ - `serve_command(...)`
92
+ - `serve_stdio_command(...)`
93
+
94
+ Client-side seam:
95
+
96
+ - `connect_acp(...)`
97
+
98
+ Support types:
99
+
100
+ - `TransportOptions`
101
+ - `CommandOptions`
102
+ - `ServerOptions`
103
+
104
+ Package entrypoint:
105
+
106
+ - [Package entrypoint](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/__init__.py)
107
+
108
+ ## Module Guide
109
+
110
+ | Subsystem | Key files | Use them for |
111
+ | --- | --- | --- |
112
+ | server and routing | [server transport module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/server.py), [auth helpers](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/auth.py), [metadata module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/metadata.py), [transport config module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/config.py), [limit definitions](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/limits.py) | server startup, mount paths, metadata, health, auth, limits |
113
+ | remote client and proxy behavior | [remote client module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/client.py), [proxy agent module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/proxy_agent.py) | remote connection setup, metadata fetch, local mirroring, host ownership |
114
+ | command-backed transport | [command transport module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/command.py) | stdio ACP commands that need WebSocket exposure |
115
+ | stream plumbing | [stream bridge module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/stream.py) | line buffering, text/binary frame handling, sender/receiver lifecycle |
116
+
117
+ ## Core Transport Shapes
118
+
119
+ ### Shape 1: Existing ACP agent object
120
+
121
+ Use:
122
+
123
+ - `serve_acp(...)`
124
+
125
+ Meaning:
126
+
127
+ 1. some runtime already produced an `acp.interfaces.Agent`
128
+ 2. `acpremote` exposes that ACP boundary over WebSocket
129
+
130
+ ### Shape 2: Existing stdio ACP command
131
+
132
+ Use:
133
+
134
+ - `serve_command(...)`
135
+ - `serve_stdio_command(...)`
136
+
137
+ Meaning:
138
+
139
+ 1. the upstream runtime only exposes ACP on stdin/stdout
140
+ 2. `acpremote` spawns that command
141
+ 3. stdin/stdout ACP frames are bridged onto WebSocket
142
+
143
+ ### Shape 3: Remote ACP mirrored locally
144
+
145
+ Use:
146
+
147
+ - `connect_acp(...)`
148
+
149
+ Meaning:
150
+
151
+ 1. there is an existing remote ACP WebSocket endpoint
152
+ 2. `acpremote` opens a remote connection
153
+ 3. the local machine gets a proxy ACP agent that mirrors the remote endpoint
154
+
155
+ ## Remote Host Ownership
156
+
157
+ This is one of the most important rules in the package.
158
+
159
+ The default should keep the remote host authoritative for:
160
+
161
+ - `cwd`
162
+ - host-backed filesystem ownership
163
+ - host-backed terminal ownership
164
+
165
+ That is why the proxy layer:
166
+
167
+ - prefers remote metadata like `remote_cwd`
168
+ - strips local host-backed capabilities before forwarding `initialize(...)`
169
+
170
+ Use client passthrough only when the product explicitly wants the local machine to become host
171
+ owner.
172
+
173
+ If a user reports:
174
+
175
+ - remote command executed in local cwd
176
+ - local filesystem used instead of remote filesystem
177
+ - remote agent owning the wrong host
178
+
179
+ inspect the [proxy agent module](https://github.com/vcoderun/acpkit/blob/main/packages/transports/acpremote/src/acpremote/proxy_agent.py) and metadata flow first.
180
+
181
+ ## Metadata and Health Surface
182
+
183
+ The transport package also owns the lightweight HTTP surface around the WebSocket endpoint:
184
+
185
+ - `/acp`
186
+ - `/healthz`
187
+
188
+ Typical uses:
189
+
190
+ - health checks
191
+ - transport metadata inspection
192
+ - remote `cwd` discovery
193
+ - debugging auth and route configuration
194
+
195
+ This is transport-level behavior. Do not push it into adapter code.
196
+
197
+ ## Latency and Transport Visibility
198
+
199
+ `acpremote` can emit transport-observed latency through:
200
+
201
+ - metadata fields
202
+ - optional visible latency projection
203
+
204
+ Keep the distinction explicit:
205
+
206
+ - this is proxy-observed timing
207
+ - it is not a claim of clock-synchronized one-way network truth
208
+
209
+ ## Skill-Bundled Examples
210
+
211
+ Skill-local examples:
212
+
213
+ - [Remote command exposure recipe](https://github.com/vcoderun/acpkit/blob/main/.agents/skills/acpremote/examples/serve_command.py)
214
+ - [Remote mirror recipe](https://github.com/vcoderun/acpkit/blob/main/.agents/skills/acpremote/examples/mirror_remote.py)
215
+ - [Skill-local example notes](https://github.com/vcoderun/acpkit/blob/main/.agents/skills/acpremote/examples/README.md)
216
+
217
+ These demonstrate:
218
+
219
+ - exposing a stdio ACP command remotely
220
+ - mirroring a remote ACP endpoint locally
221
+ - using `TransportOptions` intentionally
222
+
223
+ ## Handoff Rules
224
+
225
+ Pair or switch to:
226
+
227
+ - `acpkit-sdk`
228
+ when the remote host is reached through `acpkit serve ...` or the local mirror is
229
+ `acpkit run --addr ...`
230
+ - `pydantic-acp`
231
+ when a Pydantic agent is adapted first, then exposed remotely
232
+ - `langchain-acp`
233
+ when a LangGraph or DeepAgents graph is adapted first, then exposed remotely
234
+
235
+ Common end-to-end references:
236
+
237
+ - [Root recipe index](https://github.com/vcoderun/acpkit/blob/main/.agents/skills/acpkit-sdk/examples/README.md)
238
+ - [Public Pydantic example](https://github.com/vcoderun/acpkit/blob/main/examples/pydantic/finance_agent.py)
239
+ - [Public LangChain example](https://github.com/vcoderun/acpkit/blob/main/examples/langchain/workspace_graph.py)
240
+
241
+ ## Guardrails
242
+
243
+ - Do not call `acpremote` an adapter.
244
+ - Do not claim it can adapt a framework runtime by itself.
245
+ - Do not blur ACP adaptation with ACP transport.
246
+ - If the task is really about `acpkit run ...` or `acpkit serve ...`, pair this skill with
247
+ `acpkit-sdk`.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "ACP Remote"
3
+ short_description: "Expose and mirror ACP over WebSocket transport"
4
+ default_prompt: "Use $acpremote to update ACP WebSocket transport, stdio command exposure, remote mirroring, or host-ownership behavior."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true
@@ -0,0 +1,32 @@
1
+ # acpremote Examples
2
+
3
+ `acpremote` examples focus on transport, not runtime adaptation.
4
+
5
+ ## Expose A Stdio ACP Command Over WebSocket
6
+
7
+ ```bash
8
+ uv run python .agents/skills/acpremote/examples/serve_command.py
9
+ ```
10
+
11
+ By default this example exposes:
12
+
13
+ ```bash
14
+ acpkit run examples.langchain.workspace_graph:graph
15
+ ```
16
+
17
+ over:
18
+
19
+ ```text
20
+ ws://127.0.0.1:8080/acp/ws
21
+ ```
22
+
23
+ Override the command with `ACPREMOTE_COMMAND` when needed.
24
+
25
+ ## Mirror A Remote ACP Endpoint Locally
26
+
27
+ ```bash
28
+ ACPREMOTE_URL=ws://127.0.0.1:8080/acp/ws \
29
+ uv run python .agents/skills/acpremote/examples/mirror_remote.py
30
+ ```
31
+
32
+ That starts a local stdio ACP boundary backed by the remote WebSocket server.
@@ -0,0 +1,32 @@
1
+ from __future__ import annotations as _annotations
2
+
3
+ import asyncio
4
+ import os
5
+
6
+ from acp import run_agent
7
+ from acpremote import TransportOptions, connect_acp
8
+
9
+
10
+ def _remote_url() -> str:
11
+ return os.getenv("ACPREMOTE_URL", "ws://127.0.0.1:8080/acp/ws")
12
+
13
+
14
+ def _bearer_token() -> str | None:
15
+ token = os.getenv("ACPREMOTE_BEARER_TOKEN", "").strip()
16
+ return token or None
17
+
18
+
19
+ async def main() -> None:
20
+ agent = connect_acp(
21
+ _remote_url(),
22
+ bearer_token=_bearer_token(),
23
+ options=TransportOptions(
24
+ emit_latency_meta=True,
25
+ emit_latency_projection=True,
26
+ ),
27
+ )
28
+ await run_agent(agent)
29
+
30
+
31
+ if __name__ == "__main__":
32
+ asyncio.run(main())