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,265 @@
1
+ """Models for PydanticAI builtin tools configuration."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING, Annotated, Literal
6
+
7
+ from pydantic import ConfigDict, Field
8
+ from pydantic_ai import (
9
+ CodeExecutionTool,
10
+ ImageGenerationTool,
11
+ MCPServerTool,
12
+ MemoryTool,
13
+ WebFetchTool,
14
+ WebSearchTool,
15
+ )
16
+ from pydantic_ai.builtin_tools import WebSearchUserLocation # noqa: TC002
17
+
18
+ from agentpool_config.tools import BaseToolConfig
19
+
20
+
21
+ if TYPE_CHECKING:
22
+ from pydantic_ai.builtin_tools import AbstractBuiltinTool
23
+
24
+
25
+ class BaseBuiltinToolConfig(BaseToolConfig):
26
+ """Base configuration for PydanticAI builtin tools."""
27
+
28
+ def get_builtin_tool(self) -> AbstractBuiltinTool:
29
+ """Convert config to PydanticAI builtin tool instance."""
30
+ raise NotImplementedError
31
+
32
+
33
+ class WebSearchToolConfig(BaseBuiltinToolConfig):
34
+ """Configuration for PydanticAI web search builtin tool."""
35
+
36
+ model_config = ConfigDict(title="Web Search Tool")
37
+
38
+ type: Literal["web_search"] = Field("web_search", init=False)
39
+ """Web search builtin tool."""
40
+
41
+ search_context_size: Literal["low", "medium", "high"] = Field(
42
+ default="medium",
43
+ examples=["low", "medium", "high"],
44
+ title="Search context size",
45
+ )
46
+ """The search context size parameter controls how much context is retrieved."""
47
+
48
+ user_location: WebSearchUserLocation | None = Field(default=None, title="User location")
49
+ """User location for localizing search results (city, country, region, timezone)."""
50
+
51
+ blocked_domains: list[str] | None = Field(
52
+ default=None,
53
+ examples=[["spam.com", "ads.example.com"], ["blocked.site"]],
54
+ title="Blocked domains",
55
+ )
56
+ """Domains that will never appear in results."""
57
+
58
+ allowed_domains: list[str] | None = Field(
59
+ default=None,
60
+ examples=[["wikipedia.org", "github.com"], ["trusted.site"]],
61
+ title="Allowed domains",
62
+ )
63
+ """Only these domains will be included in results."""
64
+
65
+ max_uses: int | None = Field(default=None, examples=[5, 10, 20], title="Maximum uses")
66
+ """Maximum number of times the tool can be used."""
67
+
68
+ def get_builtin_tool(self) -> WebSearchTool:
69
+ """Convert config to WebSearchTool instance."""
70
+ return WebSearchTool(
71
+ search_context_size=self.search_context_size,
72
+ user_location=self.user_location,
73
+ blocked_domains=self.blocked_domains,
74
+ allowed_domains=self.allowed_domains,
75
+ max_uses=self.max_uses,
76
+ )
77
+
78
+
79
+ class CodeExecutionToolConfig(BaseBuiltinToolConfig):
80
+ """Configuration for PydanticAI code execution builtin tool."""
81
+
82
+ model_config = ConfigDict(title="Code Execution Tool")
83
+
84
+ type: Literal["code_execution"] = Field("code_execution", init=False)
85
+ """Code execution builtin tool."""
86
+
87
+ def get_builtin_tool(self) -> CodeExecutionTool:
88
+ """Convert config to CodeExecutionTool instance."""
89
+ return CodeExecutionTool()
90
+
91
+
92
+ class WebFetchToolConfig(BaseBuiltinToolConfig):
93
+ """Configuration for PydanticAI URL context builtin tool."""
94
+
95
+ model_config = ConfigDict(title="Url Context Tool")
96
+
97
+ type: Literal["web_fetch"] = Field("web_fetch", init=False)
98
+ """URL context builtin tool."""
99
+
100
+ def get_builtin_tool(self) -> WebFetchTool:
101
+ """Convert config to WebFetchTool instance."""
102
+ return WebFetchTool()
103
+
104
+
105
+ class ImageGenerationToolConfig(BaseBuiltinToolConfig):
106
+ """Configuration for PydanticAI image generation builtin tool."""
107
+
108
+ model_config = ConfigDict(title="Image Generation Tool")
109
+
110
+ type: Literal["image_generation"] = Field("image_generation", init=False)
111
+ """Image generation builtin tool."""
112
+
113
+ background: Literal["transparent", "opaque", "auto"] = Field(
114
+ default="auto",
115
+ examples=["transparent", "opaque", "auto"],
116
+ title="Background type",
117
+ )
118
+ """Background type for the generated image."""
119
+
120
+ input_fidelity: Literal["high", "low"] | None = Field(
121
+ default=None,
122
+ examples=["high", "low"],
123
+ title="Input fidelity",
124
+ )
125
+ """Control how much effort the model will exert to match input image features."""
126
+
127
+ moderation: Literal["auto", "low"] = Field(
128
+ default="auto",
129
+ examples=["auto", "low"],
130
+ title="Moderation level",
131
+ )
132
+ """Moderation level for the generated image."""
133
+
134
+ output_compression: int = Field(
135
+ default=100,
136
+ ge=0,
137
+ le=100,
138
+ examples=[80, 90, 100],
139
+ title="Output compression",
140
+ )
141
+ """Compression level for the output image."""
142
+
143
+ output_format: Literal["png", "webp", "jpeg"] | None = Field(
144
+ default=None,
145
+ examples=["png", "webp", "jpeg"],
146
+ title="Output format",
147
+ )
148
+ """The output format of the generated image."""
149
+
150
+ partial_images: int = Field(
151
+ default=0,
152
+ ge=0,
153
+ examples=[0, 2, 4],
154
+ title="Partial images count",
155
+ )
156
+ """Number of partial images to generate in streaming mode."""
157
+
158
+ quality: Literal["low", "medium", "high", "auto"] = Field(
159
+ default="auto",
160
+ examples=["low", "medium", "high", "auto"],
161
+ title="Image quality",
162
+ )
163
+ """The quality of the generated image."""
164
+
165
+ size: Literal["1024x1024", "1024x1536", "1536x1024", "auto"] = Field(
166
+ default="auto",
167
+ examples=["1024x1024", "1024x1536", "1536x1024", "auto"],
168
+ title="Image size",
169
+ )
170
+ """The size of the generated image."""
171
+
172
+ def get_builtin_tool(self) -> ImageGenerationTool:
173
+ """Convert config to ImageGenerationTool instance."""
174
+ return ImageGenerationTool(
175
+ background=self.background,
176
+ input_fidelity=self.input_fidelity,
177
+ moderation=self.moderation,
178
+ output_compression=self.output_compression,
179
+ output_format=self.output_format,
180
+ partial_images=self.partial_images,
181
+ quality=self.quality,
182
+ size=self.size,
183
+ )
184
+
185
+
186
+ class MemoryToolConfig(BaseBuiltinToolConfig):
187
+ """Configuration for PydanticAI memory builtin tool."""
188
+
189
+ model_config = ConfigDict(title="Memory Tool")
190
+
191
+ type: Literal["memory"] = Field("memory", init=False)
192
+ """Memory builtin tool."""
193
+
194
+ def get_builtin_tool(self) -> MemoryTool:
195
+ """Convert config to MemoryTool instance."""
196
+ return MemoryTool()
197
+
198
+
199
+ class MCPServerToolConfig(BaseBuiltinToolConfig):
200
+ """Configuration for PydanticAI MCP server builtin tool."""
201
+
202
+ model_config = ConfigDict(title="MCP Server Tool")
203
+
204
+ type: Literal["mcp_server"] = Field("mcp_server", init=False)
205
+ """MCP server builtin tool."""
206
+
207
+ server_id: str = Field(
208
+ alias="id",
209
+ examples=["my_mcp_server", "code_tools", "web_api"],
210
+ title="Server ID",
211
+ )
212
+ """A unique identifier for the MCP server."""
213
+
214
+ url: str = Field(
215
+ examples=["https://api.example.com/mcp", "http://localhost:8080"],
216
+ title="Server URL",
217
+ )
218
+ """The URL of the MCP server to use."""
219
+
220
+ authorization_token: str | None = Field(
221
+ default=None,
222
+ examples=["Bearer token123", "api_key_abc"],
223
+ title="Authorization token",
224
+ )
225
+ """Authorization header to use when making requests to the MCP server."""
226
+
227
+ description: str | None = Field(
228
+ default=None,
229
+ examples=["External API tools", "Code execution server"],
230
+ title="Server description",
231
+ )
232
+ """A description of the MCP server."""
233
+
234
+ allowed_tools: list[str] | None = Field(
235
+ default=None,
236
+ examples=[["search", "fetch"], ["execute", "compile"]],
237
+ title="Allowed tools",
238
+ )
239
+ """A list of tools that the MCP server can use."""
240
+
241
+ headers: dict[str, str] | None = Field(default=None, title="HTTP headers")
242
+ """Optional HTTP headers to send to the MCP server."""
243
+
244
+ def get_builtin_tool(self) -> MCPServerTool:
245
+ """Convert config to MCPServerTool instance."""
246
+ return MCPServerTool(
247
+ id=self.server_id,
248
+ url=self.url,
249
+ authorization_token=self.authorization_token,
250
+ description=self.description,
251
+ allowed_tools=self.allowed_tools,
252
+ headers=self.headers,
253
+ )
254
+
255
+
256
+ # Union type for builtin tool configs
257
+ BuiltinToolConfig = Annotated[
258
+ WebSearchToolConfig
259
+ | CodeExecutionToolConfig
260
+ | WebFetchToolConfig
261
+ | ImageGenerationToolConfig
262
+ | MemoryToolConfig
263
+ | MCPServerToolConfig,
264
+ Field(discriminator="type"),
265
+ ]
@@ -0,0 +1,237 @@
1
+ """Command configuration for prompt shortcuts."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Callable
6
+ import inspect
7
+ from pathlib import Path
8
+ import re
9
+ from typing import Annotated, Any, Literal
10
+
11
+ from pydantic import ConfigDict, Field, ImportString
12
+ from schemez import Schema
13
+
14
+
15
+ class BaseCommandConfig(Schema):
16
+ """Base configuration for commands."""
17
+
18
+ model_config = ConfigDict(json_schema_extra={"title": "Base Command"})
19
+
20
+ type: str = Field(title="Command type")
21
+ """Type discriminator for command configurations."""
22
+
23
+ name: str | None = Field(
24
+ default=None,
25
+ examples=["summarize", "code_review", "translate"],
26
+ title="Command name",
27
+ )
28
+ """Command name (optional, can be inferred from key)."""
29
+
30
+ description: str | None = Field(
31
+ default=None,
32
+ examples=["Summarize the given text", "Review code for issues"],
33
+ title="Command description",
34
+ )
35
+ """Optional description of what this command does."""
36
+
37
+ def get_callable(self) -> Callable[..., str]:
38
+ """Generate a callable function from the command configuration.
39
+
40
+ Returns:
41
+ A function with proper signature that can be introspected by libraries
42
+ like slashed that examine Python callables.
43
+ """
44
+ raise NotImplementedError
45
+
46
+
47
+ class StaticCommandConfig(BaseCommandConfig):
48
+ """Static command with inline content."""
49
+
50
+ model_config = ConfigDict(json_schema_extra={"title": "Static Command"})
51
+
52
+ type: Literal["static"] = Field("static", init=False)
53
+ """Static command configuration."""
54
+
55
+ content: str = Field(
56
+ examples=[
57
+ "Summarize this text: {text}",
58
+ "Translate {text} to {language}",
59
+ "Review this code: {code}",
60
+ ],
61
+ title="Template content",
62
+ )
63
+ """The prompt template content. Supports ${env.VAR} substitution."""
64
+
65
+ def get_callable(self) -> Callable[..., str]:
66
+ """Generate a callable function from the static command content.
67
+
68
+ Parses {param} placeholders in content to create function parameters.
69
+
70
+ Returns:
71
+ A function with signature matching the template parameters
72
+ """
73
+ # Extract parameter names from {param} placeholders
74
+ param_names = list(set(re.findall(r"\{(\w+)\}", self.content)))
75
+ param_names.sort() # Consistent ordering
76
+
77
+ # Create function that does template substitution
78
+ def command_func(*args: Any, **kwargs: Any) -> str:
79
+ """Generated command function."""
80
+ # Build substitution dict from args and kwargs
81
+ substitutions = {}
82
+ for i, name in enumerate(param_names):
83
+ if i < len(args):
84
+ substitutions[name] = args[i]
85
+ elif name in kwargs:
86
+ substitutions[name] = kwargs[name]
87
+ else:
88
+ substitutions[name] = "" # Default empty string
89
+
90
+ # Substitute into template
91
+ return self.content.format(**substitutions)
92
+
93
+ # Create proper signature
94
+ parameters = [
95
+ inspect.Parameter(
96
+ name, inspect.Parameter.POSITIONAL_OR_KEYWORD, annotation=str, default=""
97
+ )
98
+ for name in param_names
99
+ ]
100
+ signature = inspect.Signature(parameters, return_annotation=str)
101
+ # Set function metadata
102
+ command_func.__name__ = self.name or "unnamed_command"
103
+ command_func.__doc__ = self.description or self.content
104
+ command_func.__signature__ = signature # type: ignore
105
+
106
+ return command_func
107
+
108
+
109
+ class CallableCommandConfig(BaseCommandConfig):
110
+ """Callable command that references a Python function."""
111
+
112
+ model_config = ConfigDict(json_schema_extra={"title": "Callable Command"})
113
+
114
+ type: Literal["callable"] = Field("callable", init=False)
115
+ """Callable command configuration."""
116
+
117
+ function: ImportString[Callable[..., Any]] = Field(
118
+ examples=[
119
+ "mymodule.commands.summarize",
120
+ "utils.prompts:code_review",
121
+ "external.tools:translate_text",
122
+ ],
123
+ title="Function import path",
124
+ )
125
+ """Python function import path (e.g., 'my.package.module.function_name')."""
126
+
127
+ def get_callable(self) -> Callable[..., str]:
128
+ """Return the imported function directly.
129
+
130
+ Returns:
131
+ The imported Python function
132
+
133
+ Raises:
134
+ ImportError: If the function cannot be imported
135
+ TypeError: If the imported object is not callable
136
+ """
137
+ func = self.function
138
+ if not callable(func):
139
+ msg = f"Imported object {self.function} is not callable"
140
+ raise TypeError(msg)
141
+
142
+ # Set name if provided and function has __name__
143
+ if self.name and hasattr(func, "__name__"):
144
+ func.__name__ = self.name # ty: ignore
145
+
146
+ # Set description as docstring if provided
147
+ if self.description and not func.__doc__:
148
+ func.__doc__ = self.description
149
+ elif self.description:
150
+ # Prepend description to existing docstring
151
+ existing_doc = func.__doc__ or ""
152
+ func.__doc__ = f"{self.description}\n\n{existing_doc}".strip()
153
+
154
+ return func
155
+
156
+
157
+ class FileCommandConfig(BaseCommandConfig):
158
+ """File-based command that loads content from external file."""
159
+
160
+ model_config = ConfigDict(json_schema_extra={"title": "File-based Command"})
161
+
162
+ type: Literal["file"] = Field("file", init=False)
163
+ """File-based command configuration."""
164
+
165
+ path: str = Field(
166
+ examples=[
167
+ "prompts/summarize.txt",
168
+ "/templates/code_review.j2",
169
+ "commands/translate.md",
170
+ ],
171
+ title="Template file path",
172
+ )
173
+ """Path to file containing the prompt template."""
174
+
175
+ encoding: str = Field(
176
+ default="utf-8",
177
+ examples=["utf-8", "ascii", "latin1"],
178
+ title="File encoding",
179
+ )
180
+ """File encoding to use when reading the file."""
181
+
182
+ def get_callable(self) -> Callable[..., str]:
183
+ """Generate a callable function from the file-based command.
184
+
185
+ Loads content from file and creates function with parameters
186
+ based on {param} placeholders in the file content.
187
+
188
+ Returns:
189
+ A function with signature matching the template parameters
190
+
191
+ Raises:
192
+ FileNotFoundError: If the specified file doesn't exist
193
+ UnicodeDecodeError: If file cannot be decoded with specified encoding
194
+ """
195
+ file_path = Path(self.path)
196
+ content = file_path.read_text(encoding=self.encoding)
197
+ # Extract parameter names from {param} placeholders
198
+ param_names = list(set(re.findall(r"\{(\w+)\}", content)))
199
+ param_names.sort() # Consistent ordering
200
+
201
+ # Create function that does template substitution
202
+ def command_func(*args: Any, **kwargs: Any) -> str:
203
+ """Generated command function from file."""
204
+ # Build substitution dict from args and kwargs
205
+ substitutions = {}
206
+ for i, name in enumerate(param_names):
207
+ if i < len(args):
208
+ substitutions[name] = args[i]
209
+ elif name in kwargs:
210
+ substitutions[name] = kwargs[name]
211
+ else:
212
+ substitutions[name] = "" # Default empty string
213
+
214
+ # Substitute into template
215
+ return content.format(**substitutions)
216
+
217
+ # Create proper signature
218
+ parameters = [
219
+ inspect.Parameter(
220
+ name, inspect.Parameter.POSITIONAL_OR_KEYWORD, annotation=str, default=""
221
+ )
222
+ for name in param_names
223
+ ]
224
+ signature = inspect.Signature(parameters, return_annotation=str)
225
+
226
+ # Set function metadata
227
+ command_func.__name__ = self.name or "unnamed_command"
228
+ command_func.__doc__ = self.description or f"Command from {self.path}"
229
+ command_func.__signature__ = signature # type: ignore
230
+
231
+ return command_func
232
+
233
+
234
+ CommandConfig = Annotated[
235
+ StaticCommandConfig | FileCommandConfig | CallableCommandConfig,
236
+ Field(discriminator="type"),
237
+ ]