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/schema/base.py ADDED
@@ -0,0 +1,39 @@
1
+ """Base class for generated models."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ from pydantic import BaseModel, ConfigDict
8
+ from pydantic.alias_generators import to_camel
9
+
10
+
11
+ def convert(text: str) -> str:
12
+ if text == "field_meta":
13
+ return "_meta"
14
+ return to_camel(text)
15
+
16
+
17
+ class Schema(BaseModel):
18
+ """Base class for generated models."""
19
+
20
+ model_config = ConfigDict(
21
+ populate_by_name=True,
22
+ alias_generator=convert,
23
+ use_attribute_docstrings=True,
24
+ )
25
+
26
+
27
+ class AnnotatedObject(Schema):
28
+ """Base class for generated models."""
29
+
30
+ field_meta: dict[str, Any] | None = None
31
+ """Extension point for implementations."""
32
+
33
+
34
+ class Request(AnnotatedObject):
35
+ """Base request model."""
36
+
37
+
38
+ class Response(AnnotatedObject):
39
+ """Base request model."""
@@ -0,0 +1,230 @@
1
+ """Capability schema."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Self
6
+
7
+ from pydantic import Field
8
+
9
+ from acp.schema.base import AnnotatedObject
10
+
11
+
12
+ class FileSystemCapability(AnnotatedObject):
13
+ """File system capabilities that a client may support.
14
+
15
+ See protocol docs: [FileSystem](https://agentclientprotocol.com/protocol/initialization#filesystem)
16
+ """
17
+
18
+ read_text_file: bool | None = False
19
+ """Whether the Client supports `fs/read_text_file` requests."""
20
+
21
+ write_text_file: bool | None = False
22
+ """Whether the Client supports `fs/write_text_file` requests."""
23
+
24
+
25
+ class ClientCapabilities(AnnotatedObject):
26
+ """Capabilities supported by the client.
27
+
28
+ Advertised during initialization to inform the agent about
29
+ available features and methods.
30
+
31
+ See protocol docs: [Client Capabilities](https://agentclientprotocol.com/protocol/initialization#client-capabilities)
32
+ """
33
+
34
+ fs: FileSystemCapability | None = Field(default_factory=FileSystemCapability)
35
+ """File system capabilities supported by the client.
36
+
37
+ Determines which file operations the agent can request.
38
+ """
39
+
40
+ terminal: bool | None = False
41
+ """Whether the Client support all `terminal/*` methods."""
42
+
43
+ @classmethod
44
+ def create(
45
+ cls,
46
+ read_text_file: bool | None = False,
47
+ write_text_file: bool | None = False,
48
+ terminal: bool | None = False,
49
+ ) -> Self:
50
+ """Create a new instance of ClientCapabilities.
51
+
52
+ Args:
53
+ read_text_file: Whether the Client supports `fs/read_text_file` requests.
54
+ write_text_file: Whether the Client supports `fs/write_text_file` requests.
55
+ terminal: Whether the Client supports all `terminal/*` methods.
56
+
57
+ Returns:
58
+ A new instance of ClientCapabilities.
59
+ """
60
+ fs = FileSystemCapability(read_text_file=read_text_file, write_text_file=write_text_file)
61
+ return cls(fs=fs, terminal=terminal)
62
+
63
+
64
+ class PromptCapabilities(AnnotatedObject):
65
+ """Prompt capabilities supported by the agent in `session/prompt` requests.
66
+
67
+ Baseline agent functionality requires support for [`ContentBlock::Text`]
68
+ and [`ContentBlock::ResourceContentBlock`] in prompt requests.
69
+
70
+ Other variants must be explicitly opted in to.
71
+ Capabilities for different types of content in prompt requests.
72
+
73
+ Indicates which content types beyond the baseline (text and resource links)
74
+ the agent can process.
75
+
76
+ See protocol docs: [Prompt Capabilities](https://agentclientprotocol.com/protocol/initialization#prompt-capabilities)
77
+ """
78
+
79
+ audio: bool | None = False
80
+ """Agent supports [`ContentBlock::Audio`]."""
81
+
82
+ embedded_context: bool | None = False
83
+ """Agent supports embedded context in `session/prompt` requests.
84
+
85
+ When enabled, the Client is allowed to include [`ContentBlock::Resource`]
86
+ in prompt requests for pieces of context that are referenced in the message.
87
+ """
88
+
89
+ image: bool | None = False
90
+ """Agent supports [`ContentBlock::Image`]."""
91
+
92
+
93
+ class McpCapabilities(AnnotatedObject):
94
+ """MCP capabilities supported by the agent."""
95
+
96
+ http: bool | None = False
97
+ """Agent supports [`McpServer::Http`]."""
98
+
99
+ sse: bool | None = False
100
+ """Agent supports [`McpServer::Sse`]."""
101
+
102
+
103
+ class SessionListCapabilities(AnnotatedObject):
104
+ """Capabilities for the `session/list` method.
105
+
106
+ **UNSTABLE**: This capability is not part of the spec yet,
107
+ and may be removed or changed at any point.
108
+
109
+ By supplying `{}` it means that the agent supports listing of sessions.
110
+ Further capabilities can be added in the future for other means of
111
+ filtering or searching the list.
112
+ """
113
+
114
+
115
+ class SessionForkCapabilities(AnnotatedObject):
116
+ """Capabilities for the `session/fork` method.
117
+
118
+ **UNSTABLE**: This capability is not part of the spec yet,
119
+ and may be removed or changed at any point.
120
+
121
+ By supplying `{}` it means that the agent supports forking of sessions.
122
+ """
123
+
124
+
125
+ class SessionResumeCapabilities(AnnotatedObject):
126
+ """Capabilities for the `session/resume` method.
127
+
128
+ **UNSTABLE**: This capability is not part of the spec yet,
129
+ and may be removed or changed at any point.
130
+
131
+ By supplying `{}` it means that the agent supports resuming of sessions.
132
+ """
133
+
134
+
135
+ class SessionCapabilities(AnnotatedObject):
136
+ """Session capabilities supported by the agent.
137
+
138
+ As a baseline, all Agents **MUST** support `session/new`, `session/prompt`,
139
+ `session/cancel`, and `session/update`.
140
+
141
+ Optionally, they **MAY** support other session methods and notifications
142
+ by specifying additional capabilities.
143
+
144
+ Note: `session/load` is still handled by the top-level `load_session` capability.
145
+ This will be unified in future versions of the protocol.
146
+
147
+ See protocol docs: [Session Capabilities](https://agentclientprotocol.com/protocol/initialization#session-capabilities)
148
+ """
149
+
150
+ fork: SessionForkCapabilities | None = None
151
+ """**UNSTABLE**
152
+
153
+ This capability is not part of the spec yet, and may be removed or changed at any point.
154
+
155
+ Whether the agent supports `session/fork`.
156
+ """
157
+
158
+ list: SessionListCapabilities | None = None
159
+ """**UNSTABLE**
160
+
161
+ This capability is not part of the spec yet, and may be removed or changed at any point.
162
+
163
+ Whether the agent supports `session/list`.
164
+ """
165
+
166
+ resume: SessionResumeCapabilities | None = None
167
+ """**UNSTABLE**
168
+
169
+ This capability is not part of the spec yet, and may be removed or changed at any point.
170
+
171
+ Whether the agent supports `session/resume`.
172
+ """
173
+
174
+
175
+ class AgentCapabilities(AnnotatedObject):
176
+ """Capabilities supported by the agent.
177
+
178
+ Advertised during initialization to inform the client about
179
+ available features and content types.
180
+
181
+ See protocol docs: [Agent Capabilities](https://agentclientprotocol.com/protocol/initialization#agent-capabilities)
182
+ """
183
+
184
+ load_session: bool | None = False
185
+ """Whether the agent supports `session/load`."""
186
+
187
+ mcp_capabilities: McpCapabilities | None = Field(default_factory=McpCapabilities)
188
+ """MCP capabilities supported by the agent."""
189
+
190
+ prompt_capabilities: PromptCapabilities | None = Field(default_factory=PromptCapabilities)
191
+ """Prompt capabilities supported by the agent."""
192
+
193
+ session_capabilities: SessionCapabilities | None = Field(default_factory=SessionCapabilities)
194
+ """Session capabilities supported by the agent."""
195
+
196
+ @classmethod
197
+ def create(
198
+ cls,
199
+ load_session: bool | None = False,
200
+ http_mcp_servers: bool = False,
201
+ sse_mcp_servers: bool = False,
202
+ audio_prompts: bool = False,
203
+ embedded_context_prompts: bool = False,
204
+ image_prompts: bool = False,
205
+ list_sessions: bool = False,
206
+ ) -> Self:
207
+ """Create an instance of AgentCapabilities.
208
+
209
+ Args:
210
+ load_session: Whether the agent supports `session/load`.
211
+ http_mcp_servers: Whether the agent supports HTTP MCP servers.
212
+ sse_mcp_servers: Whether the agent supports SSE MCP servers.
213
+ audio_prompts: Whether the agent supports audio prompts.
214
+ embedded_context_prompts: Whether the agent supports embedded context prompts.
215
+ image_prompts: Whether the agent supports image prompts.
216
+ list_sessions: Whether the agent supports `session/list` (unstable).
217
+ """
218
+ session_caps = SessionCapabilities(
219
+ list=SessionListCapabilities() if list_sessions else None,
220
+ )
221
+ return cls(
222
+ load_session=load_session,
223
+ mcp_capabilities=McpCapabilities(http=http_mcp_servers, sse=sse_mcp_servers),
224
+ prompt_capabilities=PromptCapabilities(
225
+ audio=audio_prompts,
226
+ embedded_context=embedded_context_prompts,
227
+ image=image_prompts,
228
+ ),
229
+ session_capabilities=session_caps,
230
+ )
@@ -0,0 +1,247 @@
1
+ """Client request schema definitions."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Sequence # noqa: TC003
6
+ from typing import Any, Self
7
+
8
+ from pydantic import Field
9
+
10
+ from acp.schema.base import Request
11
+ from acp.schema.capabilities import ClientCapabilities, FileSystemCapability
12
+ from acp.schema.common import Implementation
13
+ from acp.schema.content_blocks import ContentBlock # noqa: TC001
14
+ from acp.schema.mcp import McpServer # noqa: TC001
15
+
16
+
17
+ class CustomRequest(Request):
18
+ """Request for custom/extension methods."""
19
+
20
+ method: str
21
+ """The custom method name (without underscore prefix)."""
22
+
23
+ data: dict[str, Any]
24
+ """The method parameters."""
25
+
26
+
27
+ class NewSessionRequest(Request):
28
+ """Request parameters for creating a new session.
29
+
30
+ See protocol docs: [Creating a Session](https://agentclientprotocol.com/protocol/session-setup#creating-a-session)
31
+ """
32
+
33
+ cwd: str
34
+ """The working directory for this session. Must be an absolute path."""
35
+
36
+ mcp_servers: Sequence[McpServer]
37
+ """List of MCP (Model Context Protocol) servers the agent should connect to."""
38
+
39
+
40
+ class LoadSessionRequest(Request):
41
+ """Request parameters for loading an existing session.
42
+
43
+ Only available if the Agent supports the `loadSession` capability.
44
+
45
+ See protocol docs: [Loading Sessions](https://agentclientprotocol.com/protocol/session-setup#loading-sessions)
46
+ """
47
+
48
+ cwd: str
49
+ """The working directory for this session."""
50
+
51
+ mcp_servers: Sequence[McpServer]
52
+ """List of MCP servers to connect to for this session."""
53
+
54
+ session_id: str
55
+ """The ID of the session to load."""
56
+
57
+
58
+ class ListSessionsRequest(Request):
59
+ """**UNSTABLE**: This capability is not part of the spec yet.
60
+
61
+ Request parameters for listing existing sessions.
62
+
63
+ Only available if the Agent supports the `listSessions` capability.
64
+ """
65
+
66
+ cursor: str | None = None
67
+ """Opaque cursor token from a previous response's nextCursor field for pagination."""
68
+
69
+ cwd: str | None = None
70
+ """Filter sessions by working directory. Must be an absolute path."""
71
+
72
+
73
+ class ForkSessionRequest(Request):
74
+ """**UNSTABLE**: This capability is not part of the spec yet.
75
+
76
+ Request parameters for forking an existing session.
77
+
78
+ Creates a new session based on the context of an existing one, allowing
79
+ operations like generating summaries without affecting the original session's history.
80
+
81
+ Only available if the Agent supports the `session.fork` capability.
82
+ """
83
+
84
+ session_id: str
85
+ """The ID of the session to fork."""
86
+
87
+ cwd: str
88
+ """The working directory for the new session."""
89
+
90
+ mcp_servers: Sequence[McpServer] = Field(default_factory=list)
91
+ """List of MCP servers to connect to for this session."""
92
+
93
+
94
+ class ResumeSessionRequest(Request):
95
+ """**UNSTABLE**: This capability is not part of the spec yet.
96
+
97
+ Request parameters for resuming an existing session.
98
+
99
+ Resumes an existing session without returning previous messages (unlike `session/load`).
100
+ This is useful for agents that can resume sessions but don't implement full session loading.
101
+
102
+ Only available if the Agent supports the `session.resume` capability.
103
+ """
104
+
105
+ cwd: str
106
+ """The working directory for this session."""
107
+
108
+ mcp_servers: Sequence[McpServer] = Field(default_factory=list)
109
+ """List of MCP servers to connect to for this session."""
110
+
111
+ session_id: str
112
+ """The ID of the session to resume."""
113
+
114
+
115
+ class SetSessionModeRequest(Request):
116
+ """Request parameters for setting a session mode."""
117
+
118
+ mode_id: str
119
+ """The ID of the mode to set."""
120
+
121
+ session_id: str
122
+ """The ID of the session to set the mode for."""
123
+
124
+
125
+ class PromptRequest(Request):
126
+ """Request parameters for sending a user prompt to the agent.
127
+
128
+ Contains the user's message and any additional context.
129
+
130
+ See protocol docs: [User Message](https://agentclientprotocol.com/protocol/prompt-turn#1-user-message)
131
+ """
132
+
133
+ prompt: Sequence[ContentBlock]
134
+ """The blocks of content that compose the user's message.
135
+
136
+ As a baseline, the Agent MUST support [`ContentBlock::Text`] and
137
+ [`ContentBlock::ResourceContentBlock`],
138
+ while other variants are optionally enabled via [`PromptCapabilities`].
139
+
140
+ The Client MUST adapt its interface according to [`PromptCapabilities`].
141
+
142
+ The client MAY include referenced pieces of context as either
143
+ [`ContentBlock::Resource`] or [`ContentBlock::ResourceContentBlock`].
144
+
145
+ When available, [`ContentBlock::Resource`] is preferred
146
+ as it avoids extra round-trips and allows the message to include
147
+ pieces of context from sources the agent may not have access to.
148
+ """
149
+
150
+ session_id: str
151
+ """The ID of the session to send this user message to."""
152
+
153
+
154
+ class SetSessionModelRequest(Request):
155
+ """**UNSTABLE**: This capability is not part of the spec yet.
156
+
157
+ Request parameters for setting a session model.
158
+ """
159
+
160
+ model_id: str
161
+ """The ID of the model to set."""
162
+
163
+ session_id: str
164
+ """The ID of the session to set the model for."""
165
+
166
+
167
+ class SetSessionConfigOptionRequest(Request):
168
+ """Request parameters for setting a session configuration option.
169
+
170
+ See protocol docs: [Session Config Options](https://agentclientprotocol.com/protocol/session-config-options)
171
+ """
172
+
173
+ config_id: str
174
+ """The ID of the configuration option to set."""
175
+
176
+ session_id: str
177
+ """The ID of the session to set the config option for."""
178
+
179
+ value_id: str
180
+ """The ID of the value to set for this configuration option."""
181
+
182
+
183
+ class InitializeRequest(Request):
184
+ """Request parameters for the initialize method.
185
+
186
+ Sent by the client to establish connection and negotiate capabilities.
187
+
188
+ See protocol docs: [Initialization](https://agentclientprotocol.com/protocol/initialization)
189
+ """
190
+
191
+ client_capabilities: ClientCapabilities | None = Field(default_factory=ClientCapabilities)
192
+ """Capabilities supported by the client."""
193
+
194
+ client_info: Implementation | None = None
195
+ """Information about the Client name and version sent to the Agent.
196
+
197
+ Note: in future versions of the protocol, this will be required.
198
+ """
199
+
200
+ protocol_version: int
201
+ """The latest protocol version supported by the client."""
202
+
203
+ @classmethod
204
+ def create(
205
+ cls,
206
+ title: str,
207
+ name: str,
208
+ version: str,
209
+ terminal: bool = True,
210
+ read_text_file: bool = True,
211
+ write_text_file: bool = True,
212
+ protocol_version: int = 1,
213
+ ) -> Self:
214
+ """Create a new InitializeRequest instance."""
215
+ fs = FileSystemCapability(read_text_file=read_text_file, write_text_file=write_text_file)
216
+ caps = ClientCapabilities(terminal=terminal, fs=fs)
217
+ impl = Implementation(title=title, name=name, version=version)
218
+ return cls(client_capabilities=caps, client_info=impl, protocol_version=protocol_version)
219
+
220
+
221
+ class AuthenticateRequest(Request):
222
+ """Request parameters for the authenticate method.
223
+
224
+ Specifies which authentication method to use.
225
+ """
226
+
227
+ method_id: str
228
+ """The ID of the authentication method to use.
229
+
230
+ Must be one of the methods advertised in the initialize response.
231
+ """
232
+
233
+
234
+ ClientRequest = (
235
+ InitializeRequest
236
+ | AuthenticateRequest
237
+ | NewSessionRequest
238
+ | LoadSessionRequest
239
+ | ListSessionsRequest
240
+ | ForkSessionRequest
241
+ | ResumeSessionRequest
242
+ | SetSessionModeRequest
243
+ | SetSessionConfigOptionRequest
244
+ | PromptRequest
245
+ | SetSessionModelRequest
246
+ | CustomRequest
247
+ )
@@ -0,0 +1,96 @@
1
+ """Client response schema definitions."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Self
6
+
7
+ from acp.schema.base import Response
8
+ from acp.schema.terminal import TerminalExitStatus # noqa: TC001
9
+ from acp.schema.tool_call import AllowedOutcome, DeniedOutcome
10
+
11
+
12
+ # terminal
13
+
14
+
15
+ class CreateTerminalResponse(Response):
16
+ """Response containing the ID of the created terminal."""
17
+
18
+ terminal_id: str
19
+ """The unique identifier for the created terminal."""
20
+
21
+
22
+ class KillTerminalCommandResponse(Response):
23
+ """Response to terminal/kill command method."""
24
+
25
+
26
+ class ReleaseTerminalResponse(Response):
27
+ """Response to terminal/release method."""
28
+
29
+
30
+ class TerminalOutputResponse(Response):
31
+ """Response containing the terminal output and exit status."""
32
+
33
+ exit_status: TerminalExitStatus | None = None
34
+ """Exit status if the command has completed."""
35
+
36
+ output: str
37
+ """The terminal output captured so far."""
38
+
39
+ truncated: bool
40
+ """Whether the output was truncated due to byte limits."""
41
+
42
+
43
+ class WaitForTerminalExitResponse(Response):
44
+ """Response containing the exit status of a terminal command."""
45
+
46
+ exit_code: int | None = None
47
+ """The process exit code (may be null if terminated by signal)."""
48
+
49
+ signal: str | None = None
50
+ """The signal that terminated the process (may be null if exited normally)."""
51
+
52
+
53
+ # Filesystem
54
+
55
+
56
+ class WriteTextFileResponse(Response):
57
+ """Response to `fs/write_text_file`."""
58
+
59
+
60
+ class ReadTextFileResponse(Response):
61
+ """Response containing the contents of a text file."""
62
+
63
+ content: str
64
+ """The contents of the text file."""
65
+
66
+
67
+ # permissions
68
+
69
+
70
+ class RequestPermissionResponse(Response):
71
+ """Response to a permission request."""
72
+
73
+ outcome: DeniedOutcome | AllowedOutcome
74
+ """The user's decision on the permission request."""
75
+
76
+ @classmethod
77
+ def denied(cls) -> Self:
78
+ """Create a response indicating that the permission request was denied."""
79
+ return cls(outcome=DeniedOutcome())
80
+
81
+ @classmethod
82
+ def allowed(cls, option_id: str) -> Self:
83
+ """Create a response indicating that the permission request was allowed."""
84
+ return cls(outcome=AllowedOutcome(option_id=option_id))
85
+
86
+
87
+ ClientResponse = (
88
+ WriteTextFileResponse
89
+ | ReadTextFileResponse
90
+ | RequestPermissionResponse
91
+ | CreateTerminalResponse
92
+ | TerminalOutputResponse
93
+ | ReleaseTerminalResponse
94
+ | WaitForTerminalExitResponse
95
+ | KillTerminalCommandResponse
96
+ )
acp/schema/common.py ADDED
@@ -0,0 +1,81 @@
1
+ """Common schema definitions."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ from acp.schema.base import AnnotatedObject, Schema
8
+
9
+
10
+ class EnvVariable(AnnotatedObject):
11
+ """An environment variable to set when launching an MCP server."""
12
+
13
+ name: str
14
+ """The name of the environment variable."""
15
+
16
+ value: str
17
+ """The value to set for the environment variable."""
18
+
19
+
20
+ class Implementation(Schema):
21
+ """Describes the name and version of an ACP implementation.
22
+
23
+ Includes an optional title for UI representation.
24
+ """
25
+
26
+ name: str
27
+ """Intended for programmatic or logical use.
28
+
29
+ Can be used as a display name fallback if title isn't present."""
30
+
31
+ title: str | None = None
32
+ """Intended for UI and end-user contexts.
33
+
34
+ Optimized to be human-readable and easily understood.
35
+ If not provided, the name should be used for display."""
36
+
37
+ version: str
38
+ """Version of the implementation.
39
+
40
+ Can be displayed to the user or used for debugging or metrics purposes."""
41
+
42
+
43
+ class AuthMethod(AnnotatedObject):
44
+ """Describes an available authentication method."""
45
+
46
+ description: str | None = None
47
+ """Optional description providing more details about this authentication method."""
48
+
49
+ id: str
50
+ """Unique identifier for this authentication method."""
51
+
52
+ name: str
53
+ """Human-readable name of the authentication method."""
54
+
55
+
56
+ class Error(Schema):
57
+ """JSON-RPC error object.
58
+
59
+ Represents an error that occurred during method execution, following the
60
+ JSON-RPC 2.0 error object specification with optional additional data.
61
+
62
+ See protocol docs: [JSON-RPC Error Object](https://www.jsonrpc.org/specification#error_object)
63
+ """
64
+
65
+ code: int
66
+ """A number indicating the error type that occurred.
67
+
68
+ This must be an integer as defined in the JSON-RPC specification.
69
+ """
70
+
71
+ data: Any | None = None
72
+ """Optional primitive or structured value that contains additional errorinformation.
73
+
74
+ This may include debugging information or context-specific details.
75
+ """
76
+
77
+ message: str
78
+ """A string providing a short description of the error.
79
+
80
+ The message should be limited to a concise single sentence.
81
+ """