agentpool 2.1.9__py3-none-any.whl

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.

Potentially problematic release.


This version of agentpool might be problematic. Click here for more details.

Files changed (474) hide show
  1. acp/README.md +64 -0
  2. acp/__init__.py +172 -0
  3. acp/__main__.py +10 -0
  4. acp/acp_requests.py +285 -0
  5. acp/agent/__init__.py +6 -0
  6. acp/agent/connection.py +256 -0
  7. acp/agent/implementations/__init__.py +6 -0
  8. acp/agent/implementations/debug_server/__init__.py +1 -0
  9. acp/agent/implementations/debug_server/cli.py +79 -0
  10. acp/agent/implementations/debug_server/debug.html +234 -0
  11. acp/agent/implementations/debug_server/debug_server.py +496 -0
  12. acp/agent/implementations/testing.py +91 -0
  13. acp/agent/protocol.py +65 -0
  14. acp/bridge/README.md +162 -0
  15. acp/bridge/__init__.py +6 -0
  16. acp/bridge/__main__.py +91 -0
  17. acp/bridge/bridge.py +246 -0
  18. acp/bridge/py.typed +0 -0
  19. acp/bridge/settings.py +15 -0
  20. acp/client/__init__.py +7 -0
  21. acp/client/connection.py +251 -0
  22. acp/client/implementations/__init__.py +7 -0
  23. acp/client/implementations/default_client.py +185 -0
  24. acp/client/implementations/headless_client.py +266 -0
  25. acp/client/implementations/noop_client.py +110 -0
  26. acp/client/protocol.py +61 -0
  27. acp/connection.py +280 -0
  28. acp/exceptions.py +46 -0
  29. acp/filesystem.py +524 -0
  30. acp/notifications.py +832 -0
  31. acp/py.typed +0 -0
  32. acp/schema/__init__.py +265 -0
  33. acp/schema/agent_plan.py +30 -0
  34. acp/schema/agent_requests.py +126 -0
  35. acp/schema/agent_responses.py +256 -0
  36. acp/schema/base.py +39 -0
  37. acp/schema/capabilities.py +230 -0
  38. acp/schema/client_requests.py +247 -0
  39. acp/schema/client_responses.py +96 -0
  40. acp/schema/common.py +81 -0
  41. acp/schema/content_blocks.py +188 -0
  42. acp/schema/mcp.py +82 -0
  43. acp/schema/messages.py +171 -0
  44. acp/schema/notifications.py +82 -0
  45. acp/schema/protocol_stuff.md +3 -0
  46. acp/schema/session_state.py +160 -0
  47. acp/schema/session_updates.py +419 -0
  48. acp/schema/slash_commands.py +51 -0
  49. acp/schema/terminal.py +15 -0
  50. acp/schema/tool_call.py +347 -0
  51. acp/stdio.py +250 -0
  52. acp/task/__init__.py +53 -0
  53. acp/task/debug.py +197 -0
  54. acp/task/dispatcher.py +93 -0
  55. acp/task/queue.py +69 -0
  56. acp/task/sender.py +82 -0
  57. acp/task/state.py +87 -0
  58. acp/task/supervisor.py +93 -0
  59. acp/terminal_handle.py +30 -0
  60. acp/tool_call_reporter.py +199 -0
  61. acp/tool_call_state.py +178 -0
  62. acp/transports.py +104 -0
  63. acp/utils.py +240 -0
  64. agentpool/__init__.py +63 -0
  65. agentpool/__main__.py +7 -0
  66. agentpool/agents/__init__.py +30 -0
  67. agentpool/agents/acp_agent/__init__.py +5 -0
  68. agentpool/agents/acp_agent/acp_agent.py +837 -0
  69. agentpool/agents/acp_agent/acp_converters.py +294 -0
  70. agentpool/agents/acp_agent/client_handler.py +317 -0
  71. agentpool/agents/acp_agent/session_state.py +44 -0
  72. agentpool/agents/agent.py +1264 -0
  73. agentpool/agents/agui_agent/__init__.py +19 -0
  74. agentpool/agents/agui_agent/agui_agent.py +677 -0
  75. agentpool/agents/agui_agent/agui_converters.py +423 -0
  76. agentpool/agents/agui_agent/chunk_transformer.py +204 -0
  77. agentpool/agents/agui_agent/event_types.py +83 -0
  78. agentpool/agents/agui_agent/helpers.py +192 -0
  79. agentpool/agents/architect.py +71 -0
  80. agentpool/agents/base_agent.py +177 -0
  81. agentpool/agents/claude_code_agent/__init__.py +11 -0
  82. agentpool/agents/claude_code_agent/claude_code_agent.py +1021 -0
  83. agentpool/agents/claude_code_agent/converters.py +243 -0
  84. agentpool/agents/context.py +105 -0
  85. agentpool/agents/events/__init__.py +61 -0
  86. agentpool/agents/events/builtin_handlers.py +129 -0
  87. agentpool/agents/events/event_emitter.py +320 -0
  88. agentpool/agents/events/events.py +561 -0
  89. agentpool/agents/events/tts_handlers.py +186 -0
  90. agentpool/agents/interactions.py +419 -0
  91. agentpool/agents/slashed_agent.py +244 -0
  92. agentpool/agents/sys_prompts.py +178 -0
  93. agentpool/agents/tool_wrapping.py +184 -0
  94. agentpool/base_provider.py +28 -0
  95. agentpool/common_types.py +226 -0
  96. agentpool/config_resources/__init__.py +16 -0
  97. agentpool/config_resources/acp_assistant.yml +24 -0
  98. agentpool/config_resources/agents.yml +109 -0
  99. agentpool/config_resources/agents_template.yml +18 -0
  100. agentpool/config_resources/agui_test.yml +18 -0
  101. agentpool/config_resources/claude_code_agent.yml +16 -0
  102. agentpool/config_resources/claude_style_subagent.md +30 -0
  103. agentpool/config_resources/external_acp_agents.yml +77 -0
  104. agentpool/config_resources/opencode_style_subagent.md +19 -0
  105. agentpool/config_resources/tts_test_agents.yml +78 -0
  106. agentpool/delegation/__init__.py +8 -0
  107. agentpool/delegation/base_team.py +504 -0
  108. agentpool/delegation/message_flow_tracker.py +39 -0
  109. agentpool/delegation/pool.py +1129 -0
  110. agentpool/delegation/team.py +325 -0
  111. agentpool/delegation/teamrun.py +343 -0
  112. agentpool/docs/__init__.py +5 -0
  113. agentpool/docs/gen_examples.py +42 -0
  114. agentpool/docs/utils.py +370 -0
  115. agentpool/functional/__init__.py +20 -0
  116. agentpool/functional/py.typed +0 -0
  117. agentpool/functional/run.py +80 -0
  118. agentpool/functional/structure.py +136 -0
  119. agentpool/hooks/__init__.py +20 -0
  120. agentpool/hooks/agent_hooks.py +247 -0
  121. agentpool/hooks/base.py +119 -0
  122. agentpool/hooks/callable.py +140 -0
  123. agentpool/hooks/command.py +180 -0
  124. agentpool/hooks/prompt.py +122 -0
  125. agentpool/jinja_filters.py +132 -0
  126. agentpool/log.py +224 -0
  127. agentpool/mcp_server/__init__.py +17 -0
  128. agentpool/mcp_server/client.py +429 -0
  129. agentpool/mcp_server/constants.py +32 -0
  130. agentpool/mcp_server/conversions.py +172 -0
  131. agentpool/mcp_server/helpers.py +47 -0
  132. agentpool/mcp_server/manager.py +232 -0
  133. agentpool/mcp_server/message_handler.py +164 -0
  134. agentpool/mcp_server/registries/__init__.py +1 -0
  135. agentpool/mcp_server/registries/official_registry_client.py +345 -0
  136. agentpool/mcp_server/registries/pulsemcp_client.py +88 -0
  137. agentpool/mcp_server/tool_bridge.py +548 -0
  138. agentpool/messaging/__init__.py +58 -0
  139. agentpool/messaging/compaction.py +928 -0
  140. agentpool/messaging/connection_manager.py +319 -0
  141. agentpool/messaging/context.py +66 -0
  142. agentpool/messaging/event_manager.py +426 -0
  143. agentpool/messaging/events.py +39 -0
  144. agentpool/messaging/message_container.py +209 -0
  145. agentpool/messaging/message_history.py +491 -0
  146. agentpool/messaging/messagenode.py +377 -0
  147. agentpool/messaging/messages.py +655 -0
  148. agentpool/messaging/processing.py +76 -0
  149. agentpool/mime_utils.py +95 -0
  150. agentpool/models/__init__.py +21 -0
  151. agentpool/models/acp_agents/__init__.py +22 -0
  152. agentpool/models/acp_agents/base.py +308 -0
  153. agentpool/models/acp_agents/mcp_capable.py +790 -0
  154. agentpool/models/acp_agents/non_mcp.py +842 -0
  155. agentpool/models/agents.py +450 -0
  156. agentpool/models/agui_agents.py +89 -0
  157. agentpool/models/claude_code_agents.py +238 -0
  158. agentpool/models/file_agents.py +116 -0
  159. agentpool/models/file_parsing.py +367 -0
  160. agentpool/models/manifest.py +658 -0
  161. agentpool/observability/__init__.py +9 -0
  162. agentpool/observability/observability_registry.py +97 -0
  163. agentpool/prompts/__init__.py +1 -0
  164. agentpool/prompts/base.py +27 -0
  165. agentpool/prompts/builtin_provider.py +75 -0
  166. agentpool/prompts/conversion_manager.py +95 -0
  167. agentpool/prompts/convert.py +96 -0
  168. agentpool/prompts/manager.py +204 -0
  169. agentpool/prompts/parts/zed.md +33 -0
  170. agentpool/prompts/prompts.py +581 -0
  171. agentpool/py.typed +0 -0
  172. agentpool/queries/tree-sitter-language-pack/README.md +7 -0
  173. agentpool/queries/tree-sitter-language-pack/arduino-tags.scm +5 -0
  174. agentpool/queries/tree-sitter-language-pack/c-tags.scm +9 -0
  175. agentpool/queries/tree-sitter-language-pack/chatito-tags.scm +16 -0
  176. agentpool/queries/tree-sitter-language-pack/clojure-tags.scm +7 -0
  177. agentpool/queries/tree-sitter-language-pack/commonlisp-tags.scm +122 -0
  178. agentpool/queries/tree-sitter-language-pack/cpp-tags.scm +15 -0
  179. agentpool/queries/tree-sitter-language-pack/csharp-tags.scm +26 -0
  180. agentpool/queries/tree-sitter-language-pack/d-tags.scm +26 -0
  181. agentpool/queries/tree-sitter-language-pack/dart-tags.scm +92 -0
  182. agentpool/queries/tree-sitter-language-pack/elisp-tags.scm +5 -0
  183. agentpool/queries/tree-sitter-language-pack/elixir-tags.scm +54 -0
  184. agentpool/queries/tree-sitter-language-pack/elm-tags.scm +19 -0
  185. agentpool/queries/tree-sitter-language-pack/gleam-tags.scm +41 -0
  186. agentpool/queries/tree-sitter-language-pack/go-tags.scm +42 -0
  187. agentpool/queries/tree-sitter-language-pack/java-tags.scm +20 -0
  188. agentpool/queries/tree-sitter-language-pack/javascript-tags.scm +88 -0
  189. agentpool/queries/tree-sitter-language-pack/lua-tags.scm +34 -0
  190. agentpool/queries/tree-sitter-language-pack/matlab-tags.scm +10 -0
  191. agentpool/queries/tree-sitter-language-pack/ocaml-tags.scm +115 -0
  192. agentpool/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +98 -0
  193. agentpool/queries/tree-sitter-language-pack/pony-tags.scm +39 -0
  194. agentpool/queries/tree-sitter-language-pack/properties-tags.scm +5 -0
  195. agentpool/queries/tree-sitter-language-pack/python-tags.scm +14 -0
  196. agentpool/queries/tree-sitter-language-pack/r-tags.scm +21 -0
  197. agentpool/queries/tree-sitter-language-pack/racket-tags.scm +12 -0
  198. agentpool/queries/tree-sitter-language-pack/ruby-tags.scm +64 -0
  199. agentpool/queries/tree-sitter-language-pack/rust-tags.scm +60 -0
  200. agentpool/queries/tree-sitter-language-pack/solidity-tags.scm +43 -0
  201. agentpool/queries/tree-sitter-language-pack/swift-tags.scm +51 -0
  202. agentpool/queries/tree-sitter-language-pack/udev-tags.scm +20 -0
  203. agentpool/queries/tree-sitter-languages/README.md +24 -0
  204. agentpool/queries/tree-sitter-languages/c-tags.scm +9 -0
  205. agentpool/queries/tree-sitter-languages/c_sharp-tags.scm +46 -0
  206. agentpool/queries/tree-sitter-languages/cpp-tags.scm +15 -0
  207. agentpool/queries/tree-sitter-languages/dart-tags.scm +91 -0
  208. agentpool/queries/tree-sitter-languages/elisp-tags.scm +8 -0
  209. agentpool/queries/tree-sitter-languages/elixir-tags.scm +54 -0
  210. agentpool/queries/tree-sitter-languages/elm-tags.scm +19 -0
  211. agentpool/queries/tree-sitter-languages/fortran-tags.scm +15 -0
  212. agentpool/queries/tree-sitter-languages/go-tags.scm +30 -0
  213. agentpool/queries/tree-sitter-languages/haskell-tags.scm +3 -0
  214. agentpool/queries/tree-sitter-languages/hcl-tags.scm +77 -0
  215. agentpool/queries/tree-sitter-languages/java-tags.scm +20 -0
  216. agentpool/queries/tree-sitter-languages/javascript-tags.scm +88 -0
  217. agentpool/queries/tree-sitter-languages/julia-tags.scm +60 -0
  218. agentpool/queries/tree-sitter-languages/kotlin-tags.scm +27 -0
  219. agentpool/queries/tree-sitter-languages/matlab-tags.scm +10 -0
  220. agentpool/queries/tree-sitter-languages/ocaml-tags.scm +115 -0
  221. agentpool/queries/tree-sitter-languages/ocaml_interface-tags.scm +98 -0
  222. agentpool/queries/tree-sitter-languages/php-tags.scm +26 -0
  223. agentpool/queries/tree-sitter-languages/python-tags.scm +12 -0
  224. agentpool/queries/tree-sitter-languages/ql-tags.scm +26 -0
  225. agentpool/queries/tree-sitter-languages/ruby-tags.scm +64 -0
  226. agentpool/queries/tree-sitter-languages/rust-tags.scm +60 -0
  227. agentpool/queries/tree-sitter-languages/scala-tags.scm +65 -0
  228. agentpool/queries/tree-sitter-languages/typescript-tags.scm +41 -0
  229. agentpool/queries/tree-sitter-languages/zig-tags.scm +3 -0
  230. agentpool/repomap.py +1231 -0
  231. agentpool/resource_providers/__init__.py +17 -0
  232. agentpool/resource_providers/aggregating.py +54 -0
  233. agentpool/resource_providers/base.py +172 -0
  234. agentpool/resource_providers/codemode/__init__.py +9 -0
  235. agentpool/resource_providers/codemode/code_executor.py +215 -0
  236. agentpool/resource_providers/codemode/default_prompt.py +19 -0
  237. agentpool/resource_providers/codemode/helpers.py +83 -0
  238. agentpool/resource_providers/codemode/progress_executor.py +212 -0
  239. agentpool/resource_providers/codemode/provider.py +150 -0
  240. agentpool/resource_providers/codemode/remote_mcp_execution.py +143 -0
  241. agentpool/resource_providers/codemode/remote_provider.py +171 -0
  242. agentpool/resource_providers/filtering.py +42 -0
  243. agentpool/resource_providers/mcp_provider.py +246 -0
  244. agentpool/resource_providers/plan_provider.py +196 -0
  245. agentpool/resource_providers/pool.py +69 -0
  246. agentpool/resource_providers/static.py +289 -0
  247. agentpool/running/__init__.py +20 -0
  248. agentpool/running/decorators.py +56 -0
  249. agentpool/running/discovery.py +101 -0
  250. agentpool/running/executor.py +284 -0
  251. agentpool/running/injection.py +111 -0
  252. agentpool/running/py.typed +0 -0
  253. agentpool/running/run_nodes.py +87 -0
  254. agentpool/server.py +122 -0
  255. agentpool/sessions/__init__.py +13 -0
  256. agentpool/sessions/manager.py +302 -0
  257. agentpool/sessions/models.py +71 -0
  258. agentpool/sessions/session.py +239 -0
  259. agentpool/sessions/store.py +163 -0
  260. agentpool/skills/__init__.py +5 -0
  261. agentpool/skills/manager.py +120 -0
  262. agentpool/skills/registry.py +210 -0
  263. agentpool/skills/skill.py +36 -0
  264. agentpool/storage/__init__.py +17 -0
  265. agentpool/storage/manager.py +419 -0
  266. agentpool/storage/serialization.py +136 -0
  267. agentpool/talk/__init__.py +13 -0
  268. agentpool/talk/registry.py +128 -0
  269. agentpool/talk/stats.py +159 -0
  270. agentpool/talk/talk.py +604 -0
  271. agentpool/tasks/__init__.py +20 -0
  272. agentpool/tasks/exceptions.py +25 -0
  273. agentpool/tasks/registry.py +33 -0
  274. agentpool/testing.py +129 -0
  275. agentpool/text_templates/__init__.py +39 -0
  276. agentpool/text_templates/system_prompt.jinja +30 -0
  277. agentpool/text_templates/tool_call_default.jinja +13 -0
  278. agentpool/text_templates/tool_call_markdown.jinja +25 -0
  279. agentpool/text_templates/tool_call_simple.jinja +5 -0
  280. agentpool/tools/__init__.py +16 -0
  281. agentpool/tools/base.py +269 -0
  282. agentpool/tools/exceptions.py +9 -0
  283. agentpool/tools/manager.py +255 -0
  284. agentpool/tools/tool_call_info.py +87 -0
  285. agentpool/ui/__init__.py +2 -0
  286. agentpool/ui/base.py +89 -0
  287. agentpool/ui/mock_provider.py +81 -0
  288. agentpool/ui/stdlib_provider.py +150 -0
  289. agentpool/utils/__init__.py +44 -0
  290. agentpool/utils/baseregistry.py +185 -0
  291. agentpool/utils/count_tokens.py +62 -0
  292. agentpool/utils/dag.py +184 -0
  293. agentpool/utils/importing.py +206 -0
  294. agentpool/utils/inspection.py +334 -0
  295. agentpool/utils/model_capabilities.py +25 -0
  296. agentpool/utils/network.py +28 -0
  297. agentpool/utils/now.py +22 -0
  298. agentpool/utils/parse_time.py +87 -0
  299. agentpool/utils/result_utils.py +35 -0
  300. agentpool/utils/signatures.py +305 -0
  301. agentpool/utils/streams.py +112 -0
  302. agentpool/utils/tasks.py +186 -0
  303. agentpool/vfs_registry.py +250 -0
  304. agentpool-2.1.9.dist-info/METADATA +336 -0
  305. agentpool-2.1.9.dist-info/RECORD +474 -0
  306. agentpool-2.1.9.dist-info/WHEEL +4 -0
  307. agentpool-2.1.9.dist-info/entry_points.txt +14 -0
  308. agentpool-2.1.9.dist-info/licenses/LICENSE +22 -0
  309. agentpool_cli/__init__.py +34 -0
  310. agentpool_cli/__main__.py +66 -0
  311. agentpool_cli/agent.py +175 -0
  312. agentpool_cli/cli_types.py +23 -0
  313. agentpool_cli/common.py +163 -0
  314. agentpool_cli/create.py +175 -0
  315. agentpool_cli/history.py +217 -0
  316. agentpool_cli/log.py +78 -0
  317. agentpool_cli/py.typed +0 -0
  318. agentpool_cli/run.py +84 -0
  319. agentpool_cli/serve_acp.py +177 -0
  320. agentpool_cli/serve_api.py +69 -0
  321. agentpool_cli/serve_mcp.py +74 -0
  322. agentpool_cli/serve_vercel.py +233 -0
  323. agentpool_cli/store.py +171 -0
  324. agentpool_cli/task.py +84 -0
  325. agentpool_cli/utils.py +104 -0
  326. agentpool_cli/watch.py +54 -0
  327. agentpool_commands/__init__.py +180 -0
  328. agentpool_commands/agents.py +199 -0
  329. agentpool_commands/base.py +45 -0
  330. agentpool_commands/commands.py +58 -0
  331. agentpool_commands/completers.py +110 -0
  332. agentpool_commands/connections.py +175 -0
  333. agentpool_commands/markdown_utils.py +31 -0
  334. agentpool_commands/models.py +62 -0
  335. agentpool_commands/prompts.py +78 -0
  336. agentpool_commands/py.typed +0 -0
  337. agentpool_commands/read.py +77 -0
  338. agentpool_commands/resources.py +210 -0
  339. agentpool_commands/session.py +48 -0
  340. agentpool_commands/tools.py +269 -0
  341. agentpool_commands/utils.py +189 -0
  342. agentpool_commands/workers.py +163 -0
  343. agentpool_config/__init__.py +53 -0
  344. agentpool_config/builtin_tools.py +265 -0
  345. agentpool_config/commands.py +237 -0
  346. agentpool_config/conditions.py +301 -0
  347. agentpool_config/converters.py +30 -0
  348. agentpool_config/durable.py +331 -0
  349. agentpool_config/event_handlers.py +600 -0
  350. agentpool_config/events.py +153 -0
  351. agentpool_config/forward_targets.py +251 -0
  352. agentpool_config/hook_conditions.py +331 -0
  353. agentpool_config/hooks.py +241 -0
  354. agentpool_config/jinja.py +206 -0
  355. agentpool_config/knowledge.py +41 -0
  356. agentpool_config/loaders.py +350 -0
  357. agentpool_config/mcp_server.py +243 -0
  358. agentpool_config/nodes.py +202 -0
  359. agentpool_config/observability.py +191 -0
  360. agentpool_config/output_types.py +55 -0
  361. agentpool_config/pool_server.py +267 -0
  362. agentpool_config/prompt_hubs.py +105 -0
  363. agentpool_config/prompts.py +185 -0
  364. agentpool_config/py.typed +0 -0
  365. agentpool_config/resources.py +33 -0
  366. agentpool_config/session.py +119 -0
  367. agentpool_config/skills.py +17 -0
  368. agentpool_config/storage.py +288 -0
  369. agentpool_config/system_prompts.py +190 -0
  370. agentpool_config/task.py +162 -0
  371. agentpool_config/teams.py +52 -0
  372. agentpool_config/tools.py +112 -0
  373. agentpool_config/toolsets.py +1033 -0
  374. agentpool_config/workers.py +86 -0
  375. agentpool_prompts/__init__.py +1 -0
  376. agentpool_prompts/braintrust_hub.py +235 -0
  377. agentpool_prompts/fabric.py +75 -0
  378. agentpool_prompts/langfuse_hub.py +79 -0
  379. agentpool_prompts/promptlayer_provider.py +59 -0
  380. agentpool_prompts/py.typed +0 -0
  381. agentpool_server/__init__.py +9 -0
  382. agentpool_server/a2a_server/__init__.py +5 -0
  383. agentpool_server/a2a_server/a2a_types.py +41 -0
  384. agentpool_server/a2a_server/server.py +190 -0
  385. agentpool_server/a2a_server/storage.py +81 -0
  386. agentpool_server/acp_server/__init__.py +22 -0
  387. agentpool_server/acp_server/acp_agent.py +786 -0
  388. agentpool_server/acp_server/acp_tools.py +43 -0
  389. agentpool_server/acp_server/commands/__init__.py +18 -0
  390. agentpool_server/acp_server/commands/acp_commands.py +594 -0
  391. agentpool_server/acp_server/commands/debug_commands.py +376 -0
  392. agentpool_server/acp_server/commands/docs_commands/__init__.py +39 -0
  393. agentpool_server/acp_server/commands/docs_commands/fetch_repo.py +169 -0
  394. agentpool_server/acp_server/commands/docs_commands/get_schema.py +176 -0
  395. agentpool_server/acp_server/commands/docs_commands/get_source.py +110 -0
  396. agentpool_server/acp_server/commands/docs_commands/git_diff.py +111 -0
  397. agentpool_server/acp_server/commands/docs_commands/helpers.py +33 -0
  398. agentpool_server/acp_server/commands/docs_commands/url_to_markdown.py +90 -0
  399. agentpool_server/acp_server/commands/spawn.py +210 -0
  400. agentpool_server/acp_server/converters.py +235 -0
  401. agentpool_server/acp_server/input_provider.py +338 -0
  402. agentpool_server/acp_server/server.py +288 -0
  403. agentpool_server/acp_server/session.py +969 -0
  404. agentpool_server/acp_server/session_manager.py +313 -0
  405. agentpool_server/acp_server/syntax_detection.py +250 -0
  406. agentpool_server/acp_server/zed_tools.md +90 -0
  407. agentpool_server/aggregating_server.py +309 -0
  408. agentpool_server/agui_server/__init__.py +11 -0
  409. agentpool_server/agui_server/server.py +128 -0
  410. agentpool_server/base.py +189 -0
  411. agentpool_server/http_server.py +164 -0
  412. agentpool_server/mcp_server/__init__.py +6 -0
  413. agentpool_server/mcp_server/server.py +314 -0
  414. agentpool_server/mcp_server/zed_wrapper.py +110 -0
  415. agentpool_server/openai_api_server/__init__.py +5 -0
  416. agentpool_server/openai_api_server/completions/__init__.py +1 -0
  417. agentpool_server/openai_api_server/completions/helpers.py +81 -0
  418. agentpool_server/openai_api_server/completions/models.py +98 -0
  419. agentpool_server/openai_api_server/responses/__init__.py +1 -0
  420. agentpool_server/openai_api_server/responses/helpers.py +74 -0
  421. agentpool_server/openai_api_server/responses/models.py +96 -0
  422. agentpool_server/openai_api_server/server.py +242 -0
  423. agentpool_server/py.typed +0 -0
  424. agentpool_storage/__init__.py +9 -0
  425. agentpool_storage/base.py +310 -0
  426. agentpool_storage/file_provider.py +378 -0
  427. agentpool_storage/formatters.py +129 -0
  428. agentpool_storage/memory_provider.py +396 -0
  429. agentpool_storage/models.py +108 -0
  430. agentpool_storage/py.typed +0 -0
  431. agentpool_storage/session_store.py +262 -0
  432. agentpool_storage/sql_provider/__init__.py +21 -0
  433. agentpool_storage/sql_provider/cli.py +146 -0
  434. agentpool_storage/sql_provider/models.py +249 -0
  435. agentpool_storage/sql_provider/queries.py +15 -0
  436. agentpool_storage/sql_provider/sql_provider.py +444 -0
  437. agentpool_storage/sql_provider/utils.py +234 -0
  438. agentpool_storage/text_log_provider.py +275 -0
  439. agentpool_toolsets/__init__.py +15 -0
  440. agentpool_toolsets/builtin/__init__.py +33 -0
  441. agentpool_toolsets/builtin/agent_management.py +239 -0
  442. agentpool_toolsets/builtin/chain.py +288 -0
  443. agentpool_toolsets/builtin/code.py +398 -0
  444. agentpool_toolsets/builtin/debug.py +291 -0
  445. agentpool_toolsets/builtin/execution_environment.py +381 -0
  446. agentpool_toolsets/builtin/file_edit/__init__.py +11 -0
  447. agentpool_toolsets/builtin/file_edit/file_edit.py +747 -0
  448. agentpool_toolsets/builtin/file_edit/fuzzy_matcher/__init__.py +5 -0
  449. agentpool_toolsets/builtin/file_edit/fuzzy_matcher/example_usage.py +311 -0
  450. agentpool_toolsets/builtin/file_edit/fuzzy_matcher/streaming_fuzzy_matcher.py +443 -0
  451. agentpool_toolsets/builtin/history.py +36 -0
  452. agentpool_toolsets/builtin/integration.py +85 -0
  453. agentpool_toolsets/builtin/skills.py +77 -0
  454. agentpool_toolsets/builtin/subagent_tools.py +324 -0
  455. agentpool_toolsets/builtin/tool_management.py +90 -0
  456. agentpool_toolsets/builtin/user_interaction.py +52 -0
  457. agentpool_toolsets/builtin/workers.py +128 -0
  458. agentpool_toolsets/composio_toolset.py +96 -0
  459. agentpool_toolsets/config_creation.py +192 -0
  460. agentpool_toolsets/entry_points.py +47 -0
  461. agentpool_toolsets/fsspec_toolset/__init__.py +7 -0
  462. agentpool_toolsets/fsspec_toolset/diagnostics.py +115 -0
  463. agentpool_toolsets/fsspec_toolset/grep.py +450 -0
  464. agentpool_toolsets/fsspec_toolset/helpers.py +631 -0
  465. agentpool_toolsets/fsspec_toolset/streaming_diff_parser.py +249 -0
  466. agentpool_toolsets/fsspec_toolset/toolset.py +1384 -0
  467. agentpool_toolsets/mcp_run_toolset.py +61 -0
  468. agentpool_toolsets/notifications.py +146 -0
  469. agentpool_toolsets/openapi.py +118 -0
  470. agentpool_toolsets/py.typed +0 -0
  471. agentpool_toolsets/search_toolset.py +202 -0
  472. agentpool_toolsets/semantic_memory_toolset.py +536 -0
  473. agentpool_toolsets/streaming_tools.py +265 -0
  474. agentpool_toolsets/vfs_toolset.py +124 -0
acp/bridge/README.md ADDED
@@ -0,0 +1,162 @@
1
+ # ACP Bridge
2
+
3
+ A stdio-to-HTTP bridge for ACP (Agent Client Protocol) agents.
4
+
5
+ ## Overview
6
+
7
+ The ACP Bridge allows you to expose stdio-based ACP agents via a streamable HTTP endpoint. This is useful when you want to run an agent as a subprocess but communicate with it over HTTP instead of stdio.
8
+
9
+ ## Features
10
+
11
+ - **Stdio to HTTP**: Spawns an ACP agent subprocess and exposes it via HTTP
12
+ - **Streamable HTTP**: Uses streamable HTTP transport for efficient communication
13
+ - **CORS Support**: Optional CORS configuration for web clients
14
+ - **Health Endpoint**: Built-in `/status` endpoint for monitoring
15
+ - **Type-Safe**: Full type hints and Pydantic validation
16
+
17
+ ## Installation
18
+
19
+ The bridge is included in the `acp` package:
20
+
21
+ ```python
22
+ from acp.bridge import ACPBridge, BridgeSettings
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ ### Programmatic Usage
28
+
29
+ ```python
30
+ import anyio
31
+ from acp.bridge import ACPBridge, BridgeSettings
32
+
33
+ settings = BridgeSettings(
34
+ host="127.0.0.1",
35
+ port=8080,
36
+ log_level="INFO",
37
+ allow_origins=["*"], # Optional CORS
38
+ )
39
+
40
+ bridge = ACPBridge(
41
+ command="uv",
42
+ args=["run", "my-agent"],
43
+ settings=settings,
44
+ )
45
+
46
+ anyio.run(bridge.run)
47
+ ```
48
+
49
+ ### Command Line Usage
50
+
51
+ ```bash
52
+ # Basic usage
53
+ acp-bridge my-agent-command
54
+
55
+ # With custom port and host
56
+ acp-bridge --port 8080 --host 0.0.0.0 -- uv run my-agent
57
+
58
+ # With debug logging
59
+ acp-bridge --log-level DEBUG my-agent
60
+
61
+ # With CORS enabled
62
+ acp-bridge --allow-origin "*" my-agent
63
+ ```
64
+
65
+ ## Endpoints
66
+
67
+ ### POST /acp
68
+
69
+ The main endpoint for ACP JSON-RPC requests. Send ACP protocol messages here.
70
+
71
+ ```bash
72
+ curl -X POST http://localhost:8080/acp \
73
+ -H "Content-Type: application/json" \
74
+ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{...}}'
75
+ ```
76
+
77
+ ### GET /status
78
+
79
+ Health check endpoint that returns the bridge status.
80
+
81
+ ```bash
82
+ curl http://localhost:8080/status
83
+ ```
84
+
85
+ Response:
86
+ ```json
87
+ {
88
+ "status": "connected",
89
+ "command": "my-agent",
90
+ "args": ["--config", "config.yml"]
91
+ }
92
+ ```
93
+
94
+ ## Configuration
95
+
96
+ ### BridgeSettings
97
+
98
+ - `host` (str): Host to bind the server to. Default: `"127.0.0.1"`
99
+ - `port` (int): Port to serve on. Default: `8080`
100
+ - `log_level` (str): Logging level. Default: `"INFO"`
101
+ - `allow_origins` (list[str] | None): CORS allowed origins. Default: `None`
102
+
103
+ ### ACPBridge
104
+
105
+ - `command` (str): Command to spawn the ACP agent
106
+ - `args` (list[str] | None): Arguments for the command
107
+ - `env` (Mapping[str, str] | None): Environment variables
108
+ - `cwd` (str | Path | None): Working directory
109
+ - `settings` (BridgeSettings | None): Server settings
110
+
111
+ ## Example: Bridging an Existing Agent
112
+
113
+ ```python
114
+ from acp.bridge import ACPBridge
115
+
116
+ # Bridge the debug server
117
+ bridge = ACPBridge(
118
+ command="uv",
119
+ args=["run", "python", "-m", "acp.debug_server"],
120
+ )
121
+
122
+ await bridge.run()
123
+ ```
124
+
125
+ ## Architecture
126
+
127
+ The bridge works by:
128
+
129
+ 1. Spawning the specified command as a subprocess with stdio pipes
130
+ 2. Creating a `ClientSideConnection` to communicate with the agent via stdio
131
+ 3. Exposing an HTTP server that accepts JSON-RPC requests
132
+ 4. Forwarding HTTP requests to the stdio agent and returning responses
133
+
134
+ ```
135
+ HTTP Client → HTTP Server → ClientSideConnection → stdio → Agent Process
136
+ ```
137
+
138
+ ## Supported Methods
139
+
140
+ The bridge supports all standard ACP protocol methods:
141
+
142
+ - `initialize`
143
+ - `session/new`, `session/load`, `session/list`
144
+ - `session/fork`, `session/resume`
145
+ - `session/prompt`, `session/cancel`
146
+ - `session/set_mode`, `session/set_model`
147
+ - `authenticate`
148
+ - Extension methods (prefixed with `_`)
149
+
150
+ ## Error Handling
151
+
152
+ The bridge returns standard JSON-RPC error responses:
153
+
154
+ - `-32700`: Parse error (invalid JSON)
155
+ - `-32600`: Invalid Request (missing method)
156
+ - `-32603`: Internal error (agent communication failure)
157
+ - `503`: Service unavailable (agent not connected)
158
+
159
+ ## See Also
160
+
161
+ - [ACP Protocol Documentation](../README.md)
162
+ - [MCP Proxy](https://github.com/modelcontextprotocol/mcp-proxy) - Similar concept for MCP
acp/bridge/__init__.py ADDED
@@ -0,0 +1,6 @@
1
+ """ACP Bridge - stdio to streamable-http transport bridge for ACP agents."""
2
+
3
+ from acp.bridge.bridge import ACPBridge
4
+ from acp.bridge.settings import BridgeSettings
5
+
6
+ __all__ = ["ACPBridge", "BridgeSettings"]
acp/bridge/__main__.py ADDED
@@ -0,0 +1,91 @@
1
+ """CLI entry point for running the ACP bridge.
2
+
3
+ Usage:
4
+ uv run -m acp_bridge <command> [args...]
5
+ uv run -m acp_bridge --port 8080 -- your-agent-command --arg1 value1
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import argparse
11
+ import contextlib
12
+ import logging
13
+ import sys
14
+
15
+ import anyio
16
+
17
+
18
+ def main() -> None:
19
+ """Run the ACP bridge from command line."""
20
+ parser = argparse.ArgumentParser(
21
+ description="Bridge a stdio ACP agent to streamable HTTP transport.",
22
+ epilog=(
23
+ "Examples:\n"
24
+ " acp-bridge your-agent-command\n"
25
+ " acp-bridge --port 8080 -- your-agent --config config.yml\n"
26
+ " acp-bridge -H 0.0.0.0 -p 9000 -- uv run my-agent\n"
27
+ ),
28
+ formatter_class=argparse.RawTextHelpFormatter,
29
+ )
30
+
31
+ parser.add_argument("command", help="Command to spawn the ACP agent.")
32
+ parser.add_argument("args", nargs="*", help="Arguments for the agent command.")
33
+ parser.add_argument(
34
+ "-p",
35
+ "--port",
36
+ type=int,
37
+ default=8080,
38
+ help="Port to serve the HTTP endpoint on. Default: 8080",
39
+ )
40
+ parser.add_argument(
41
+ "-H",
42
+ "--host",
43
+ default="127.0.0.1",
44
+ help="Host to bind the server to. Default: 127.0.0.1",
45
+ )
46
+ parser.add_argument(
47
+ "--log-level",
48
+ choices=["DEBUG", "INFO", "WARNING", "ERROR"],
49
+ default="INFO",
50
+ help="Log level. Default: INFO",
51
+ )
52
+ parser.add_argument(
53
+ "--allow-origin",
54
+ action="append",
55
+ default=[],
56
+ help="Allowed CORS origins. Can be specified multiple times.",
57
+ )
58
+ parser.add_argument(
59
+ "--cwd",
60
+ default=None,
61
+ help="Working directory for the agent subprocess.",
62
+ )
63
+
64
+ parsed = parser.parse_args()
65
+
66
+ if not parsed.command:
67
+ parser.print_help()
68
+ sys.exit(1)
69
+
70
+ logging.basicConfig(
71
+ level=getattr(logging, parsed.log_level),
72
+ format="[%(levelname)1.1s %(asctime)s.%(msecs)03d %(name)s] %(message)s",
73
+ datefmt="%H:%M:%S",
74
+ )
75
+
76
+ from acp.bridge import ACPBridge, BridgeSettings
77
+
78
+ settings = BridgeSettings(
79
+ host=parsed.host,
80
+ port=parsed.port,
81
+ log_level=parsed.log_level,
82
+ allow_origins=parsed.allow_origin if parsed.allow_origin else None,
83
+ )
84
+
85
+ bridge = ACPBridge(command=parsed.command, args=parsed.args, cwd=parsed.cwd, settings=settings)
86
+ with contextlib.suppress(KeyboardInterrupt):
87
+ anyio.run(bridge.run)
88
+
89
+
90
+ if __name__ == "__main__":
91
+ main()
acp/bridge/bridge.py ADDED
@@ -0,0 +1,246 @@
1
+ """ACP Bridge - Proxy stdio ACP agents to streamable HTTP transport.
2
+
3
+ This module provides functionality to spawn a stdio-based ACP agent subprocess
4
+ and expose it via a streamable HTTP endpoint.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import contextlib
10
+ import logging
11
+ from typing import TYPE_CHECKING, Any
12
+
13
+ from starlette.applications import Starlette
14
+ from starlette.middleware import Middleware
15
+ from starlette.middleware.cors import CORSMiddleware
16
+ from starlette.responses import JSONResponse, Response
17
+ from starlette.routing import Route
18
+ import uvicorn
19
+
20
+ from acp.bridge.settings import BridgeSettings
21
+ from acp.client.connection import ClientSideConnection
22
+ from acp.client.implementations import NoOpClient
23
+ from acp.schema import (
24
+ AuthenticateRequest,
25
+ CancelNotification,
26
+ ForkSessionRequest,
27
+ InitializeRequest,
28
+ ListSessionsRequest,
29
+ LoadSessionRequest,
30
+ NewSessionRequest,
31
+ PromptRequest,
32
+ ResumeSessionRequest,
33
+ SetSessionModelRequest,
34
+ SetSessionModeRequest,
35
+ )
36
+ from acp.transports import spawn_stdio_transport
37
+
38
+
39
+ if TYPE_CHECKING:
40
+ from collections.abc import Mapping
41
+ from pathlib import Path
42
+
43
+ import anyio
44
+ from starlette.requests import Request
45
+
46
+ from acp.schema import AgentMethod
47
+
48
+
49
+ logger = logging.getLogger(__name__)
50
+
51
+
52
+ class ACPBridge:
53
+ """Bridge that proxies stdio ACP agents to streamable HTTP."""
54
+
55
+ def __init__(
56
+ self,
57
+ command: str,
58
+ args: list[str] | None = None,
59
+ *,
60
+ env: Mapping[str, str] | None = None,
61
+ cwd: str | Path | None = None,
62
+ settings: BridgeSettings | None = None,
63
+ ) -> None:
64
+ """Initialize the ACP bridge.
65
+
66
+ Args:
67
+ command: Command to spawn the ACP agent.
68
+ args: Arguments for the command.
69
+ env: Environment variables for the subprocess.
70
+ cwd: Working directory for the subprocess.
71
+ settings: Bridge server settings.
72
+ """
73
+ self.command = command
74
+ self.args = args or []
75
+ self.env = env
76
+ self.cwd = cwd
77
+ self.settings = settings or BridgeSettings()
78
+ self._connection: ClientSideConnection | None = None
79
+ self._process: anyio.abc.Process | None = None
80
+
81
+ async def _handle_acp_request(self, request: Request) -> Response:
82
+ """Handle incoming ACP JSON-RPC requests."""
83
+ if self._connection is None:
84
+ response = {"jsonrpc": "2.0", "error": {"code": -32603, "message": "Not connected"}}
85
+ return JSONResponse(response, status_code=503)
86
+
87
+ try:
88
+ body = await request.json()
89
+ except Exception: # noqa: BLE001
90
+ response = {"jsonrpc": "2.0", "error": {"code": -32700, "message": "Parse error"}}
91
+ return JSONResponse(response, status_code=400)
92
+
93
+ method = body.get("method")
94
+ params = body.get("params")
95
+ request_id = body.get("id")
96
+ is_notification = request_id is None
97
+
98
+ if method is None:
99
+ return JSONResponse(
100
+ {
101
+ "jsonrpc": "2.0",
102
+ "id": request_id,
103
+ "error": {"code": -32600, "message": "Invalid Request"},
104
+ },
105
+ status_code=400,
106
+ )
107
+
108
+ try:
109
+ result = await self._dispatch_to_agent(method, params, is_notification)
110
+ if is_notification:
111
+ return Response(status_code=204)
112
+ return JSONResponse({"jsonrpc": "2.0", "id": request_id, "result": result})
113
+ except Exception as exc:
114
+ logger.exception("Error dispatching request to agent")
115
+ err = {"code": -32603, "message": str(exc)}
116
+ return JSONResponse({"jsonrpc": "2.0", "id": request_id, "error": err}, status_code=500)
117
+
118
+ async def _dispatch_to_agent( # noqa: PLR0911
119
+ self,
120
+ method: AgentMethod,
121
+ params: dict[str, Any] | None,
122
+ is_notification: bool,
123
+ ) -> Any:
124
+ """Dispatch a request to the connected agent."""
125
+ if self._connection is None:
126
+ msg = "No agent connection"
127
+ raise RuntimeError(msg)
128
+ match method:
129
+ case "initialize":
130
+ init_request = InitializeRequest.model_validate(params)
131
+ init_resp = await self._connection.initialize(init_request)
132
+ return init_resp.model_dump(by_alias=True, exclude_none=True)
133
+ case "session/new":
134
+ new_session_request = NewSessionRequest.model_validate(params)
135
+ new_session_resp = await self._connection.new_session(new_session_request)
136
+ return new_session_resp.model_dump(by_alias=True, exclude_none=True)
137
+ case "session/load":
138
+ load_session_request = LoadSessionRequest.model_validate(params)
139
+ load_sessoin_resp = await self._connection.load_session(load_session_request)
140
+ return load_sessoin_resp.model_dump(by_alias=True, exclude_none=True)
141
+ case "session/list":
142
+ list_sessions_request = ListSessionsRequest.model_validate(params)
143
+ list_session_resp = await self._connection.list_sessions(list_sessions_request)
144
+ return list_session_resp.model_dump(by_alias=True, exclude_none=True)
145
+ case "session/fork":
146
+ fork_session_request = ForkSessionRequest.model_validate(params)
147
+ fork_session_resp = await self._connection.fork_session(fork_session_request)
148
+ return fork_session_resp.model_dump(by_alias=True, exclude_none=True)
149
+ case "session/resume":
150
+ resume_session_request = ResumeSessionRequest.model_validate(params)
151
+ resume_session_resp = await self._connection.resume_session(resume_session_request)
152
+ return resume_session_resp.model_dump(by_alias=True, exclude_none=True)
153
+ case "session/prompt":
154
+ prompt_request = PromptRequest.model_validate(params)
155
+ prompt_resp = await self._connection.prompt(prompt_request)
156
+ return prompt_resp.model_dump(by_alias=True, exclude_none=True)
157
+ case "session/cancel":
158
+ cancel_request = CancelNotification.model_validate(params)
159
+ await self._connection.cancel(cancel_request)
160
+ return None
161
+ case "session/set_mode":
162
+ set_mode_request = SetSessionModeRequest.model_validate(params)
163
+ resp = await self._connection.set_session_mode(set_mode_request)
164
+ return resp.model_dump(by_alias=True, exclude_none=True) if resp else {}
165
+ case "session/set_model":
166
+ set_model_request = SetSessionModelRequest.model_validate(params)
167
+ set_model_resp = await self._connection.set_session_model(set_model_request)
168
+ return (
169
+ set_model_resp.model_dump(by_alias=True, exclude_none=True)
170
+ if set_model_resp
171
+ else {}
172
+ )
173
+ case "authenticate":
174
+ authenticate_request = AuthenticateRequest.model_validate(params)
175
+ authenticate_resp = await self._connection.authenticate(authenticate_request)
176
+ return (
177
+ authenticate_resp.model_dump(by_alias=True, exclude_none=True)
178
+ if authenticate_resp
179
+ else {}
180
+ )
181
+ case str() if method.startswith("_") and is_notification:
182
+ await self._connection.ext_notification(method[1:], params or {})
183
+ return None
184
+ case str() if method.startswith("_"):
185
+ return await self._connection.ext_method(method[1:], params or {})
186
+ case _:
187
+ msg = f"Method not found: {method}"
188
+ raise ValueError(msg)
189
+
190
+ async def _handle_status(self, request: Request) -> Response:
191
+ """Health check endpoint."""
192
+ status = "connected" if self._connection else "disconnected"
193
+ return JSONResponse({"status": status, "command": self.command, "args": self.args})
194
+
195
+ def _create_app(self) -> Starlette:
196
+ """Create the Starlette application."""
197
+ routes = [
198
+ Route("/acp", endpoint=self._handle_acp_request, methods=["POST"]),
199
+ Route("/status", endpoint=self._handle_status, methods=["GET"]),
200
+ ]
201
+
202
+ middleware: list[Middleware] = []
203
+ if self.settings.allow_origins:
204
+ middleware.append(
205
+ Middleware(
206
+ CORSMiddleware, # ty: ignore[invalid-argument-type]
207
+ allow_origins=self.settings.allow_origins,
208
+ allow_methods=["*"],
209
+ allow_headers=["*"],
210
+ )
211
+ )
212
+
213
+ return Starlette(
214
+ debug=(self.settings.log_level == "DEBUG"),
215
+ routes=routes,
216
+ middleware=middleware,
217
+ )
218
+
219
+ async def run(self) -> None:
220
+ """Run the bridge server."""
221
+ async with contextlib.AsyncExitStack() as stack:
222
+ # Spawn the stdio agent subprocess
223
+ logger.info("Spawning ACP agent: %s %s", self.command, " ".join(self.args))
224
+ reader, writer, process = await stack.enter_async_context(
225
+ spawn_stdio_transport(self.command, *self.args, env=self.env, cwd=self.cwd)
226
+ )
227
+ self._process = process
228
+
229
+ # Create client connection to the agent
230
+ def client_factory(agent: Any) -> NoOpClient:
231
+ return NoOpClient()
232
+
233
+ self._connection = ClientSideConnection(client_factory, writer, reader)
234
+ stack.push_async_callback(self._connection.close)
235
+ # Create and run the HTTP server
236
+ app = self._create_app()
237
+ config = uvicorn.Config(
238
+ app,
239
+ host=self.settings.host,
240
+ port=self.settings.port,
241
+ log_level=self.settings.log_level.lower(),
242
+ )
243
+ server = uvicorn.Server(config)
244
+ url = f"http://{self.settings.host}:{self.settings.port}"
245
+ logger.info("ACP Bridge serving at %s/acp", url)
246
+ await server.serve()
acp/bridge/py.typed ADDED
File without changes
acp/bridge/settings.py ADDED
@@ -0,0 +1,15 @@
1
+ """Configuration settings for ACP Bridge."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass
6
+
7
+
8
+ @dataclass
9
+ class BridgeSettings:
10
+ """Settings for the ACP Bridge server."""
11
+
12
+ host: str = "127.0.0.1"
13
+ port: int = 8080
14
+ log_level: str = "INFO"
15
+ allow_origins: list[str] | None = None
acp/client/__init__.py ADDED
@@ -0,0 +1,7 @@
1
+ """Client ACP Connection."""
2
+
3
+ from acp.client.protocol import Client
4
+ from acp.client.implementations import DefaultACPClient, HeadlessACPClient, NoOpClient
5
+ from acp.client.connection import ClientSideConnection
6
+
7
+ __all__ = ["Client", "ClientSideConnection", "DefaultACPClient", "HeadlessACPClient", "NoOpClient"]