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
@@ -0,0 +1,419 @@
1
+ """Session update schema definitions."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import base64
6
+ from collections.abc import Sequence # noqa: TC003
7
+ from typing import TYPE_CHECKING, Annotated, Any, Literal, Self
8
+
9
+ from pydantic import Field
10
+
11
+ from acp.schema.agent_plan import PlanEntry # noqa: TC001
12
+ from acp.schema.base import AnnotatedObject
13
+ from acp.schema.content_blocks import ( # noqa: TC001
14
+ Annotations,
15
+ Audience,
16
+ AudioContentBlock,
17
+ BlobResourceContents,
18
+ ContentBlock,
19
+ EmbeddedResourceContentBlock,
20
+ ImageContentBlock,
21
+ ResourceContentBlock,
22
+ TextContentBlock,
23
+ TextResourceContents,
24
+ )
25
+ from acp.schema.slash_commands import AvailableCommand # noqa: TC001
26
+ from acp.schema.tool_call import ( # noqa: TC001
27
+ ToolCallContent,
28
+ ToolCallKind,
29
+ ToolCallLocation,
30
+ )
31
+
32
+
33
+ if TYPE_CHECKING:
34
+ from datetime import datetime
35
+
36
+
37
+ ToolCallStatus = Literal["pending", "in_progress", "completed", "failed"]
38
+
39
+
40
+ class BaseChunk(AnnotatedObject):
41
+ """Base class for all session update chunks."""
42
+
43
+ content: ContentBlock
44
+ """A single item of content"""
45
+
46
+ @classmethod
47
+ def text(
48
+ cls,
49
+ text: str,
50
+ *,
51
+ audience: Audience | None = None,
52
+ last_modified: datetime | str | None = None,
53
+ priority: float | None = None,
54
+ ) -> Self:
55
+ """Create a chunk containing text.
56
+
57
+ Args:
58
+ text: The text content.
59
+ audience: The audience for the text.
60
+ last_modified: The last modified date of the text.
61
+ priority: The priority of the text.
62
+ """
63
+ annotations = Annotations.optionally_create(
64
+ audience=audience,
65
+ last_modified=last_modified,
66
+ priority=priority,
67
+ )
68
+ return cls(content=TextContentBlock(text=text, annotations=annotations))
69
+
70
+ @classmethod
71
+ def image(
72
+ cls,
73
+ data: str | bytes,
74
+ mime_type: str,
75
+ uri: str | None = None,
76
+ audience: Audience | None = None,
77
+ last_modified: datetime | str | None = None,
78
+ priority: float | None = None,
79
+ ) -> Self:
80
+ """Create a chunk containing an embedded image resource.
81
+
82
+ Args:
83
+ data: The image data.
84
+ mime_type: The MIME type of the image.
85
+ uri: The URI of the image.
86
+ audience: The audience for the image.
87
+ last_modified: The last modified date of the image.
88
+ priority: The priority of the image.
89
+ """
90
+ if isinstance(data, bytes):
91
+ data = base64.b64encode(data).decode()
92
+ annotations = Annotations.optionally_create(
93
+ audience=audience,
94
+ last_modified=last_modified,
95
+ priority=priority,
96
+ )
97
+ image = ImageContentBlock(
98
+ data=data,
99
+ mime_type=mime_type,
100
+ uri=uri,
101
+ annotations=annotations,
102
+ )
103
+ return cls(content=image)
104
+
105
+ @classmethod
106
+ def audio(
107
+ cls,
108
+ data: str | bytes,
109
+ mime_type: str,
110
+ audience: Audience | None = None,
111
+ last_modified: datetime | str | None = None,
112
+ priority: float | None = None,
113
+ ) -> Self:
114
+ """Create a chunk containing audio content.
115
+
116
+ Args:
117
+ data: The audio data.
118
+ mime_type: The MIME type of the audio data.
119
+ audience: The audience for the audio chunk.
120
+ last_modified: The last modified date of the audio chunk.
121
+ priority: The priority of the audio chunk.
122
+ """
123
+ if isinstance(data, bytes):
124
+ data = base64.b64encode(data).decode()
125
+ annotations = Annotations.optionally_create(
126
+ audience=audience,
127
+ last_modified=last_modified,
128
+ priority=priority,
129
+ )
130
+ content = AudioContentBlock(
131
+ data=data,
132
+ mime_type=mime_type,
133
+ annotations=annotations,
134
+ )
135
+ return cls(content=content)
136
+
137
+ @classmethod
138
+ def resource(
139
+ cls,
140
+ name: str,
141
+ uri: str,
142
+ description: str | None = None,
143
+ mime_type: str | None = None,
144
+ size: int | None = None,
145
+ title: str | None = None,
146
+ audience: Audience | None = None,
147
+ last_modified: datetime | str | None = None,
148
+ priority: float | None = None,
149
+ ) -> Self:
150
+ """Create a chunk containing a resource content block.
151
+
152
+ Args:
153
+ name: The name of the resource.
154
+ uri: The URI of the resource.
155
+ description: The description of the resource.
156
+ mime_type: The MIME type of the resource.
157
+ size: The size of the resource.
158
+ title: The title of the resource.
159
+ audience: The audience of the resource.
160
+ last_modified: The last modified date of the resource.
161
+ priority: The priority of the resource.
162
+ """
163
+ annotations = Annotations.optionally_create(
164
+ audience=audience,
165
+ last_modified=last_modified,
166
+ priority=priority,
167
+ )
168
+ block = ResourceContentBlock(
169
+ name=name,
170
+ uri=uri,
171
+ description=description,
172
+ mime_type=mime_type,
173
+ size=size,
174
+ title=title,
175
+ annotations=annotations,
176
+ )
177
+ return cls(content=block)
178
+
179
+ @classmethod
180
+ def embedded_text_resource(
181
+ cls,
182
+ text: str,
183
+ uri: str,
184
+ mime_type: str | None = None,
185
+ audience: Audience | None = None,
186
+ last_modified: datetime | str | None = None,
187
+ priority: float | None = None,
188
+ ) -> Self:
189
+ """Create a chunk containing an embedded text resource.
190
+
191
+ Args:
192
+ text: The text to embed.
193
+ uri: The URI of the resource.
194
+ mime_type: The MIME type of the resource.
195
+ audience: The audience to apply to the resource.
196
+ last_modified: The last modified date of the resource.
197
+ priority: The priority of the resource.
198
+ """
199
+ annotations = Annotations.optionally_create(
200
+ audience=audience,
201
+ last_modified=last_modified,
202
+ priority=priority,
203
+ )
204
+ contents = TextResourceContents(text=text, mime_type=mime_type, uri=uri)
205
+ content = EmbeddedResourceContentBlock(annotations=annotations, resource=contents)
206
+ return cls(content=content) # pyright: ignore[reportArgumentType] # ty: ignore[invalid-argument-type]
207
+
208
+ @classmethod
209
+ def embedded_blob_resource(
210
+ cls,
211
+ data: bytes | str,
212
+ uri: str,
213
+ mime_type: str | None = None,
214
+ audience: Audience | None = None,
215
+ last_modified: datetime | str | None = None,
216
+ priority: float | None = None,
217
+ ) -> Self:
218
+ """Create a chunk containing an embedded blob resource.
219
+
220
+ Args:
221
+ data: The data to embed.
222
+ uri: The URI of the resource.
223
+ mime_type: The MIME type of the resource.
224
+ audience: The audience to apply to the resource.
225
+ last_modified: The last modified date of the resource.
226
+ priority: The priority of the resource.
227
+ """
228
+ if isinstance(data, bytes):
229
+ data = base64.b64encode(data).decode()
230
+ annotations = Annotations.optionally_create(
231
+ audience=audience,
232
+ last_modified=last_modified,
233
+ priority=priority,
234
+ )
235
+ resource = BlobResourceContents(blob=data, mime_type=mime_type, uri=uri)
236
+ content = EmbeddedResourceContentBlock(annotations=annotations, resource=resource)
237
+ return cls(content=content) # pyright: ignore[reportArgumentType] # ty: ignore[invalid-argument-type]
238
+
239
+
240
+ class UserMessageChunk(BaseChunk):
241
+ """A chunk of the user's message being streamed."""
242
+
243
+ session_update: Literal["user_message_chunk"] = Field(default="user_message_chunk", init=False)
244
+ """User message chunk."""
245
+
246
+
247
+ class AgentMessageChunk(BaseChunk):
248
+ """A chunk of the agent's response being streamed."""
249
+
250
+ session_update: Literal["agent_message_chunk"] = Field(
251
+ default="agent_message_chunk", init=False
252
+ )
253
+ """Agent message chunk."""
254
+
255
+
256
+ class AgentThoughtChunk(BaseChunk):
257
+ """A chunk of the agent's internal reasoning being streamed."""
258
+
259
+ session_update: Literal["agent_thought_chunk"] = Field(
260
+ default="agent_thought_chunk", init=False
261
+ )
262
+ """Agent thought chunk."""
263
+
264
+
265
+ class ToolCallProgress(AnnotatedObject):
266
+ """Update on the status or results of a tool call."""
267
+
268
+ session_update: Literal["tool_call_update"] = Field(default="tool_call_update", init=False)
269
+ """Tool call update."""
270
+
271
+ content: Sequence[ToolCallContent] | None = None
272
+ """Replace the content collection."""
273
+
274
+ kind: ToolCallKind | None = None
275
+ """Update the tool kind."""
276
+
277
+ locations: Sequence[ToolCallLocation] | None = None
278
+ """Replace the locations collection."""
279
+
280
+ raw_input: Any | None = None
281
+ """Update the raw input."""
282
+
283
+ raw_output: Any | None = None
284
+ """Update the raw output."""
285
+
286
+ status: ToolCallStatus | None = None
287
+ """Update the execution status."""
288
+
289
+ title: str | None = None
290
+ """Update the human-readable title."""
291
+
292
+ tool_call_id: str
293
+ """The ID of the tool call being updated."""
294
+
295
+
296
+ class CurrentModeUpdate(AnnotatedObject):
297
+ """The current mode of the session has changed.
298
+
299
+ See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes)
300
+ """
301
+
302
+ current_mode_id: str
303
+ """The ID of the current mode"""
304
+
305
+ session_update: Literal["current_mode_update"] = Field(
306
+ default="current_mode_update", init=False
307
+ )
308
+
309
+
310
+ class AgentPlanUpdate(AnnotatedObject):
311
+ """The agent's execution plan for complex tasks.
312
+
313
+ See protocol docs: [Agent Plan](https://agentclientprotocol.com/protocol/agent-plan).
314
+ """
315
+
316
+ session_update: Literal["plan"] = Field(default="plan", init=False)
317
+
318
+ entries: Sequence[PlanEntry]
319
+ """The list of tasks to be accomplished.
320
+
321
+ When updating a plan, the agent must send a complete list of all entries
322
+ with their current status. The client replaces the entire plan with each update."""
323
+
324
+
325
+ class AvailableCommandsUpdate(AnnotatedObject):
326
+ """Available commands are ready or have changed."""
327
+
328
+ session_update: Literal["available_commands_update"] = Field(
329
+ default="available_commands_update", init=False
330
+ )
331
+ """Available commands are ready or have changed."""
332
+
333
+ available_commands: Sequence[AvailableCommand]
334
+ """Commands the agent can execute"""
335
+
336
+
337
+ class CurrentModelUpdate(AnnotatedObject):
338
+ """**UNSTABLE**: This capability is not part of the spec yet.
339
+
340
+ The current model of the session has changed.
341
+ """
342
+
343
+ current_model_id: str
344
+ """The ID of the current model."""
345
+
346
+ session_update: Literal["current_model_update"] = Field(
347
+ default="current_model_update", init=False
348
+ )
349
+
350
+
351
+ class ConfigOptionUpdate(AnnotatedObject):
352
+ """A session configuration option value has changed.
353
+
354
+ See protocol docs: [Session Config Options](https://agentclientprotocol.com/protocol/session-config-options)
355
+ """
356
+
357
+ session_update: Literal["config_option_update"] = Field(
358
+ default="config_option_update", init=False
359
+ )
360
+
361
+ config_id: str
362
+ """The ID of the configuration option that changed."""
363
+
364
+ value_id: str
365
+ """The new value ID for this configuration option."""
366
+
367
+
368
+ class ToolCallStart(AnnotatedObject):
369
+ """Notification that a new tool call has been initiated."""
370
+
371
+ session_update: Literal["tool_call"] = Field(default="tool_call", init=False)
372
+ """Notification that a new tool call has been initiated."""
373
+
374
+ content: Sequence[ToolCallContent] | None = None
375
+ """Content produced by the tool call."""
376
+
377
+ kind: ToolCallKind | None = None
378
+ """The category of tool being invoked.
379
+
380
+ Helps clients choose appropriate icons and UI treatment.
381
+ """
382
+
383
+ locations: Sequence[ToolCallLocation] | None = None
384
+ """File locations affected by this tool call.
385
+
386
+ Enables "follow-along" features in clients.
387
+ """
388
+
389
+ raw_input: Any | None = None
390
+ """Raw input parameters sent to the tool."""
391
+
392
+ raw_output: Any | None = None
393
+ """Raw output returned by the tool."""
394
+
395
+ status: ToolCallStatus | None = None
396
+ """Current execution status of the tool call."""
397
+
398
+ title: str
399
+ """Human-readable title describing what the tool is doing."""
400
+
401
+ tool_call_id: str
402
+ """Unique identifier for this tool call within the session."""
403
+
404
+
405
+ SessionUpdate = Annotated[
406
+ (
407
+ UserMessageChunk
408
+ | AgentMessageChunk
409
+ | AgentThoughtChunk
410
+ | ToolCallStart
411
+ | ToolCallProgress
412
+ | AvailableCommandsUpdate
413
+ | AgentPlanUpdate
414
+ | CurrentModeUpdate
415
+ | CurrentModelUpdate
416
+ | ConfigOptionUpdate
417
+ ),
418
+ Field(discriminator="session_update"),
419
+ ]
@@ -0,0 +1,51 @@
1
+ """Slash command schema definitions."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Self
6
+
7
+ from pydantic import RootModel
8
+
9
+ from acp.schema.base import AnnotatedObject, Schema
10
+
11
+
12
+ class CommandInputHint(Schema):
13
+ """All text that was typed after the command name is provided as input."""
14
+
15
+ hint: str
16
+ """A hint to display when the input hasn't been provided yet."""
17
+
18
+
19
+ class AvailableCommandInput(RootModel[CommandInputHint]):
20
+ """A container for the input specification for a command."""
21
+
22
+ root: CommandInputHint
23
+ """The input specification for a command."""
24
+
25
+
26
+ class AvailableCommand(AnnotatedObject):
27
+ """Information about a command."""
28
+
29
+ description: str
30
+ """Human-readable description of what the command does."""
31
+
32
+ input: AvailableCommandInput | None = None
33
+ """Input for the command if required."""
34
+
35
+ name: str
36
+ """Command name (e.g., `create_plan`, `research_codebase`)."""
37
+
38
+ @classmethod
39
+ def create(cls, name: str, description: str, input_hint: str | None = None) -> Self:
40
+ """Create a new Command.
41
+
42
+ Args:
43
+ name: Name of the command.
44
+ description: Description of the command.
45
+ input_hint: Hint for the input.
46
+
47
+ Returns:
48
+ A new available command.
49
+ """
50
+ spec = AvailableCommandInput(root=CommandInputHint(hint=input_hint)) if input_hint else None
51
+ return cls(name=name, description=description, input=spec)
acp/schema/terminal.py ADDED
@@ -0,0 +1,15 @@
1
+ """Terminal schema definitions."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from acp.schema.base import AnnotatedObject
6
+
7
+
8
+ class TerminalExitStatus(AnnotatedObject):
9
+ """Exit status of a terminal command."""
10
+
11
+ exit_code: int | None = None
12
+ """The process exit code (may be null if terminated by signal)."""
13
+
14
+ signal: str | None = None
15
+ """The signal that terminated the process (may be null if exited normally)."""