acp-sdk 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -0
  3. data/README.md +18 -4
  4. data/lib/acp/agent_connection/client.rb +31 -1
  5. data/lib/acp/agent_connection/optional_method/disable_provider.rb +23 -0
  6. data/lib/acp/agent_connection/optional_method/fork_session.rb +23 -0
  7. data/lib/acp/agent_connection/optional_method/list_providers.rb +23 -0
  8. data/lib/acp/agent_connection/optional_method/set_provider.rb +23 -0
  9. data/lib/acp/agent_connection.rb +73 -3
  10. data/lib/acp/client_connection.rb +108 -9
  11. data/lib/acp/request_error.rb +10 -0
  12. data/lib/acp/sdk.rb +3 -1
  13. data/lib/acp/transport/cancellation.rb +42 -0
  14. data/lib/acp/transport/stdio.rb +72 -1
  15. data/lib/acp/types/unstable/accept_nes_notification.rb +41 -0
  16. data/lib/acp/types/unstable/agent_capabilities.rb +122 -0
  17. data/lib/acp/types/unstable/client_capabilities.rb +127 -0
  18. data/lib/acp/types/unstable/client_nes_capabilities.rb +62 -0
  19. data/lib/acp/types/unstable/client_session_capabilities.rb +57 -0
  20. data/lib/acp/types/unstable/close_nes_request.rb +35 -0
  21. data/lib/acp/types/unstable/close_nes_response.rb +27 -0
  22. data/lib/acp/types/unstable/compaction_status.rb +11 -0
  23. data/lib/acp/types/unstable/compaction_summary_chunk.rb +41 -0
  24. data/lib/acp/types/unstable/compaction_update.rb +62 -0
  25. data/lib/acp/types/unstable/did_change_document_notification.rb +65 -0
  26. data/lib/acp/types/unstable/did_close_document_notification.rb +41 -0
  27. data/lib/acp/types/unstable/did_focus_document_notification.rb +74 -0
  28. data/lib/acp/types/unstable/did_open_document_notification.rb +66 -0
  29. data/lib/acp/types/unstable/did_save_document_notification.rb +41 -0
  30. data/lib/acp/types/unstable/disable_provider_request.rb +35 -0
  31. data/lib/acp/types/unstable/disable_provider_response.rb +27 -0
  32. data/lib/acp/types/unstable/fork_session_request.rb +69 -0
  33. data/lib/acp/types/unstable/fork_session_response.rb +55 -0
  34. data/lib/acp/types/unstable/idle_state_update.rb +46 -0
  35. data/lib/acp/types/unstable/initialize_response.rb +72 -0
  36. data/lib/acp/types/unstable/list_providers_request.rb +27 -0
  37. data/lib/acp/types/unstable/list_providers_response.rb +35 -0
  38. data/lib/acp/types/unstable/llm_protocol.rb +12 -0
  39. data/lib/acp/types/unstable/mcp_capabilities.rb +47 -0
  40. data/lib/acp/types/unstable/mcp_error.rb +41 -0
  41. data/lib/acp/types/unstable/mcp_server/acp.rb +41 -0
  42. data/lib/acp/types/unstable/mcp_server/http.rb +50 -0
  43. data/lib/acp/types/unstable/mcp_server/sse.rb +50 -0
  44. data/lib/acp/types/unstable/mcp_server.rb +25 -0
  45. data/lib/acp/types/unstable/mcp_server_acp.rb +41 -0
  46. data/lib/acp/types/unstable/message_mcp_notification.rb +59 -0
  47. data/lib/acp/types/unstable/message_mcp_request.rb +59 -0
  48. data/lib/acp/types/unstable/message_mcp_response/error.rb +35 -0
  49. data/lib/acp/types/unstable/message_mcp_response/result.rb +32 -0
  50. data/lib/acp/types/unstable/message_mcp_response.rb +23 -0
  51. data/lib/acp/types/unstable/nes_capabilities.rb +51 -0
  52. data/lib/acp/types/unstable/nes_context_capabilities.rb +111 -0
  53. data/lib/acp/types/unstable/nes_diagnostic.rb +57 -0
  54. data/lib/acp/types/unstable/nes_diagnostic_severity.rb +11 -0
  55. data/lib/acp/types/unstable/nes_diagnostics_capabilities.rb +27 -0
  56. data/lib/acp/types/unstable/nes_document_did_change_capabilities.rb +35 -0
  57. data/lib/acp/types/unstable/nes_document_did_close_capabilities.rb +27 -0
  58. data/lib/acp/types/unstable/nes_document_did_focus_capabilities.rb +27 -0
  59. data/lib/acp/types/unstable/nes_document_did_open_capabilities.rb +27 -0
  60. data/lib/acp/types/unstable/nes_document_did_save_capabilities.rb +27 -0
  61. data/lib/acp/types/unstable/nes_document_event_capabilities.rb +91 -0
  62. data/lib/acp/types/unstable/nes_edit_history_capabilities.rb +35 -0
  63. data/lib/acp/types/unstable/nes_edit_history_entry.rb +41 -0
  64. data/lib/acp/types/unstable/nes_edit_suggestion.rb +67 -0
  65. data/lib/acp/types/unstable/nes_event_capabilities.rb +40 -0
  66. data/lib/acp/types/unstable/nes_excerpt.rb +47 -0
  67. data/lib/acp/types/unstable/nes_jump_capabilities.rb +27 -0
  68. data/lib/acp/types/unstable/nes_jump_suggestion.rb +51 -0
  69. data/lib/acp/types/unstable/nes_open_file.rb +64 -0
  70. data/lib/acp/types/unstable/nes_open_files_capabilities.rb +27 -0
  71. data/lib/acp/types/unstable/nes_recent_file.rb +47 -0
  72. data/lib/acp/types/unstable/nes_recent_files_capabilities.rb +35 -0
  73. data/lib/acp/types/unstable/nes_reject_reason.rb +11 -0
  74. data/lib/acp/types/unstable/nes_related_snippet.rb +40 -0
  75. data/lib/acp/types/unstable/nes_related_snippets_capabilities.rb +27 -0
  76. data/lib/acp/types/unstable/nes_rename_capabilities.rb +27 -0
  77. data/lib/acp/types/unstable/nes_rename_suggestion.rb +57 -0
  78. data/lib/acp/types/unstable/nes_repository.rb +47 -0
  79. data/lib/acp/types/unstable/nes_search_and_replace_capabilities.rb +27 -0
  80. data/lib/acp/types/unstable/nes_search_and_replace_suggestion.rb +66 -0
  81. data/lib/acp/types/unstable/nes_suggest_context.rb +95 -0
  82. data/lib/acp/types/unstable/nes_suggestion/edit.rb +68 -0
  83. data/lib/acp/types/unstable/nes_suggestion/jump.rb +51 -0
  84. data/lib/acp/types/unstable/nes_suggestion/rename.rb +64 -0
  85. data/lib/acp/types/unstable/nes_suggestion/searchandreplace.rb +67 -0
  86. data/lib/acp/types/unstable/nes_suggestion.rb +25 -0
  87. data/lib/acp/types/unstable/nes_text_edit.rb +41 -0
  88. data/lib/acp/types/unstable/nes_trigger_kind.rb +10 -0
  89. data/lib/acp/types/unstable/nes_user_action.rb +63 -0
  90. data/lib/acp/types/unstable/nes_user_actions_capabilities.rb +35 -0
  91. data/lib/acp/types/unstable/notice.rb +47 -0
  92. data/lib/acp/types/unstable/notice_severity.rb +10 -0
  93. data/lib/acp/types/unstable/plan_capabilities.rb +27 -0
  94. data/lib/acp/types/unstable/plan_file.rb +41 -0
  95. data/lib/acp/types/unstable/plan_items.rb +44 -0
  96. data/lib/acp/types/unstable/plan_markdown.rb +41 -0
  97. data/lib/acp/types/unstable/plan_removed.rb +32 -0
  98. data/lib/acp/types/unstable/plan_update.rb +39 -0
  99. data/lib/acp/types/unstable/plan_update_content/file.rb +41 -0
  100. data/lib/acp/types/unstable/plan_update_content/items.rb +44 -0
  101. data/lib/acp/types/unstable/plan_update_content/markdown.rb +41 -0
  102. data/lib/acp/types/unstable/plan_update_content.rb +23 -0
  103. data/lib/acp/types/unstable/position.rb +41 -0
  104. data/lib/acp/types/unstable/position_encoding_kind.rb +10 -0
  105. data/lib/acp/types/unstable/prompt_response.rb +45 -0
  106. data/lib/acp/types/unstable/provider_current_config.rb +41 -0
  107. data/lib/acp/types/unstable/provider_info.rb +64 -0
  108. data/lib/acp/types/unstable/providers_capabilities.rb +27 -0
  109. data/lib/acp/types/unstable/range.rb +41 -0
  110. data/lib/acp/types/unstable/reject_nes_notification.rb +52 -0
  111. data/lib/acp/types/unstable/requires_action_state_update.rb +27 -0
  112. data/lib/acp/types/unstable/running_state_update.rb +27 -0
  113. data/lib/acp/types/unstable/session_cancel_capabilities.rb +27 -0
  114. data/lib/acp/types/unstable/session_capabilities.rb +93 -0
  115. data/lib/acp/types/unstable/session_fork_capabilities.rb +27 -0
  116. data/lib/acp/types/unstable/session_message.rb +62 -0
  117. data/lib/acp/types/unstable/session_message_chunk.rb +59 -0
  118. data/lib/acp/types/unstable/session_update/agent_message_chunk.rb +46 -0
  119. data/lib/acp/types/unstable/session_update/agent_thought_chunk.rb +46 -0
  120. data/lib/acp/types/unstable/session_update/available_commands_update.rb +42 -0
  121. data/lib/acp/types/unstable/session_update/compaction_summary_chunk.rb +46 -0
  122. data/lib/acp/types/unstable/session_update/compaction_update.rb +63 -0
  123. data/lib/acp/types/unstable/session_update/config_option_update.rb +42 -0
  124. data/lib/acp/types/unstable/session_update/current_mode_update.rb +35 -0
  125. data/lib/acp/types/unstable/session_update/notice.rb +53 -0
  126. data/lib/acp/types/unstable/session_update/plan.rb +35 -0
  127. data/lib/acp/types/unstable/session_update/plan_removed.rb +32 -0
  128. data/lib/acp/types/unstable/session_update/plan_update.rb +39 -0
  129. data/lib/acp/types/unstable/session_update/session_info_update.rb +49 -0
  130. data/lib/acp/types/unstable/session_update/session_message.rb +63 -0
  131. data/lib/acp/types/unstable/session_update/session_message_chunk.rb +60 -0
  132. data/lib/acp/types/unstable/session_update/subagent_update.rb +72 -0
  133. data/lib/acp/types/unstable/session_update/tool_call.rb +122 -0
  134. data/lib/acp/types/unstable/session_update/tool_call_update.rb +122 -0
  135. data/lib/acp/types/unstable/session_update/usage_update.rb +47 -0
  136. data/lib/acp/types/unstable/session_update/user_message_chunk.rb +46 -0
  137. data/lib/acp/types/unstable/session_update.rb +55 -0
  138. data/lib/acp/types/unstable/set_provider_request.rb +62 -0
  139. data/lib/acp/types/unstable/set_provider_response.rb +27 -0
  140. data/lib/acp/types/unstable/start_nes_request.rb +64 -0
  141. data/lib/acp/types/unstable/start_nes_response.rb +35 -0
  142. data/lib/acp/types/unstable/state_update/idle.rb +46 -0
  143. data/lib/acp/types/unstable/state_update/requires_action.rb +27 -0
  144. data/lib/acp/types/unstable/state_update/running.rb +27 -0
  145. data/lib/acp/types/unstable/state_update/unknown.rb +27 -0
  146. data/lib/acp/types/unstable/state_update.rb +25 -0
  147. data/lib/acp/types/unstable/subagent_capabilities.rb +27 -0
  148. data/lib/acp/types/unstable/subagent_session_capabilities.rb +40 -0
  149. data/lib/acp/types/unstable/subagent_update.rb +71 -0
  150. data/lib/acp/types/unstable/suggest_nes_request.rb +93 -0
  151. data/lib/acp/types/unstable/suggest_nes_response.rb +35 -0
  152. data/lib/acp/types/unstable/text_document_content_change_event.rb +41 -0
  153. data/lib/acp/types/unstable/text_document_sync_kind.rb +9 -0
  154. data/lib/acp/types/unstable/unknown_state_update.rb +27 -0
  155. data/lib/acp/types/unstable/usage.rb +91 -0
  156. data/lib/acp/types/unstable/workspace_folder.rb +41 -0
  157. data/lib/acp/types/unstable.rb +155 -0
  158. data/lib/acp/version.rb +1 -1
  159. data/sig/generated/acp/agent_connection/client.rbs +20 -1
  160. data/sig/generated/acp/agent_connection/optional_method/disable_provider.rbs +13 -0
  161. data/sig/generated/acp/agent_connection/optional_method/fork_session.rbs +13 -0
  162. data/sig/generated/acp/agent_connection/optional_method/list_providers.rbs +13 -0
  163. data/sig/generated/acp/agent_connection/optional_method/set_provider.rbs +13 -0
  164. data/sig/generated/acp/agent_connection.rbs +29 -0
  165. data/sig/generated/acp/client_connection.rbs +57 -1
  166. data/sig/generated/acp/request_error.rbs +8 -0
  167. data/sig/generated/acp/transport/cancellation.rbs +32 -0
  168. data/sig/generated/acp/transport/stdio.rbs +42 -0
  169. data/sig/generated/acp/types/unstable/accept_nes_notification.rbs +25 -0
  170. data/sig/generated/acp/types/unstable/agent_capabilities.rbs +49 -0
  171. data/sig/generated/acp/types/unstable/client_capabilities.rbs +53 -0
  172. data/sig/generated/acp/types/unstable/client_nes_capabilities.rbs +29 -0
  173. data/sig/generated/acp/types/unstable/client_session_capabilities.rbs +29 -0
  174. data/sig/generated/acp/types/unstable/close_nes_request.rbs +21 -0
  175. data/sig/generated/acp/types/unstable/close_nes_response.rbs +17 -0
  176. data/sig/generated/acp/types/unstable/compaction_status.rbs +11 -0
  177. data/sig/generated/acp/types/unstable/compaction_summary_chunk.rbs +25 -0
  178. data/sig/generated/acp/types/unstable/compaction_update.rbs +33 -0
  179. data/sig/generated/acp/types/unstable/did_change_document_notification.rbs +33 -0
  180. data/sig/generated/acp/types/unstable/did_close_document_notification.rbs +25 -0
  181. data/sig/generated/acp/types/unstable/did_focus_document_notification.rbs +37 -0
  182. data/sig/generated/acp/types/unstable/did_open_document_notification.rbs +37 -0
  183. data/sig/generated/acp/types/unstable/did_save_document_notification.rbs +25 -0
  184. data/sig/generated/acp/types/unstable/disable_provider_request.rbs +21 -0
  185. data/sig/generated/acp/types/unstable/disable_provider_response.rbs +17 -0
  186. data/sig/generated/acp/types/unstable/fork_session_request.rbs +33 -0
  187. data/sig/generated/acp/types/unstable/fork_session_response.rbs +29 -0
  188. data/sig/generated/acp/types/unstable/idle_state_update.rbs +25 -0
  189. data/sig/generated/acp/types/unstable/initialize_response.rbs +33 -0
  190. data/sig/generated/acp/types/unstable/list_providers_request.rbs +17 -0
  191. data/sig/generated/acp/types/unstable/list_providers_response.rbs +21 -0
  192. data/sig/generated/acp/types/unstable/llm_protocol.rbs +13 -0
  193. data/sig/generated/acp/types/unstable/mcp_capabilities.rbs +29 -0
  194. data/sig/generated/acp/types/unstable/mcp_error.rbs +25 -0
  195. data/sig/generated/acp/types/unstable/mcp_server/acp.rbs +25 -0
  196. data/sig/generated/acp/types/unstable/mcp_server/http.rbs +29 -0
  197. data/sig/generated/acp/types/unstable/mcp_server/sse.rbs +29 -0
  198. data/sig/generated/acp/types/unstable/mcp_server.rbs +9 -0
  199. data/sig/generated/acp/types/unstable/mcp_server_acp.rbs +25 -0
  200. data/sig/generated/acp/types/unstable/message_mcp_notification.rbs +33 -0
  201. data/sig/generated/acp/types/unstable/message_mcp_request.rbs +33 -0
  202. data/sig/generated/acp/types/unstable/message_mcp_response/error.rbs +21 -0
  203. data/sig/generated/acp/types/unstable/message_mcp_response/result.rbs +21 -0
  204. data/sig/generated/acp/types/unstable/message_mcp_response.rbs +9 -0
  205. data/sig/generated/acp/types/unstable/nes_capabilities.rbs +25 -0
  206. data/sig/generated/acp/types/unstable/nes_context_capabilities.rbs +41 -0
  207. data/sig/generated/acp/types/unstable/nes_diagnostic.rbs +33 -0
  208. data/sig/generated/acp/types/unstable/nes_diagnostic_severity.rbs +11 -0
  209. data/sig/generated/acp/types/unstable/nes_diagnostics_capabilities.rbs +17 -0
  210. data/sig/generated/acp/types/unstable/nes_document_did_change_capabilities.rbs +21 -0
  211. data/sig/generated/acp/types/unstable/nes_document_did_close_capabilities.rbs +17 -0
  212. data/sig/generated/acp/types/unstable/nes_document_did_focus_capabilities.rbs +17 -0
  213. data/sig/generated/acp/types/unstable/nes_document_did_open_capabilities.rbs +17 -0
  214. data/sig/generated/acp/types/unstable/nes_document_did_save_capabilities.rbs +17 -0
  215. data/sig/generated/acp/types/unstable/nes_document_event_capabilities.rbs +37 -0
  216. data/sig/generated/acp/types/unstable/nes_edit_history_capabilities.rbs +21 -0
  217. data/sig/generated/acp/types/unstable/nes_edit_history_entry.rbs +25 -0
  218. data/sig/generated/acp/types/unstable/nes_edit_suggestion.rbs +33 -0
  219. data/sig/generated/acp/types/unstable/nes_event_capabilities.rbs +21 -0
  220. data/sig/generated/acp/types/unstable/nes_excerpt.rbs +29 -0
  221. data/sig/generated/acp/types/unstable/nes_jump_capabilities.rbs +17 -0
  222. data/sig/generated/acp/types/unstable/nes_jump_suggestion.rbs +29 -0
  223. data/sig/generated/acp/types/unstable/nes_open_file.rbs +33 -0
  224. data/sig/generated/acp/types/unstable/nes_open_files_capabilities.rbs +17 -0
  225. data/sig/generated/acp/types/unstable/nes_recent_file.rbs +29 -0
  226. data/sig/generated/acp/types/unstable/nes_recent_files_capabilities.rbs +21 -0
  227. data/sig/generated/acp/types/unstable/nes_reject_reason.rbs +11 -0
  228. data/sig/generated/acp/types/unstable/nes_related_snippet.rbs +25 -0
  229. data/sig/generated/acp/types/unstable/nes_related_snippets_capabilities.rbs +17 -0
  230. data/sig/generated/acp/types/unstable/nes_rename_capabilities.rbs +17 -0
  231. data/sig/generated/acp/types/unstable/nes_rename_suggestion.rbs +33 -0
  232. data/sig/generated/acp/types/unstable/nes_repository.rbs +29 -0
  233. data/sig/generated/acp/types/unstable/nes_search_and_replace_capabilities.rbs +17 -0
  234. data/sig/generated/acp/types/unstable/nes_search_and_replace_suggestion.rbs +37 -0
  235. data/sig/generated/acp/types/unstable/nes_suggest_context.rbs +41 -0
  236. data/sig/generated/acp/types/unstable/nes_suggestion/edit.rbs +33 -0
  237. data/sig/generated/acp/types/unstable/nes_suggestion/jump.rbs +29 -0
  238. data/sig/generated/acp/types/unstable/nes_suggestion/rename.rbs +33 -0
  239. data/sig/generated/acp/types/unstable/nes_suggestion/searchandreplace.rbs +37 -0
  240. data/sig/generated/acp/types/unstable/nes_suggestion.rbs +9 -0
  241. data/sig/generated/acp/types/unstable/nes_text_edit.rbs +25 -0
  242. data/sig/generated/acp/types/unstable/nes_trigger_kind.rbs +9 -0
  243. data/sig/generated/acp/types/unstable/nes_user_action.rbs +33 -0
  244. data/sig/generated/acp/types/unstable/nes_user_actions_capabilities.rbs +21 -0
  245. data/sig/generated/acp/types/unstable/notice.rbs +29 -0
  246. data/sig/generated/acp/types/unstable/notice_severity.rbs +9 -0
  247. data/sig/generated/acp/types/unstable/plan_capabilities.rbs +17 -0
  248. data/sig/generated/acp/types/unstable/plan_file.rbs +25 -0
  249. data/sig/generated/acp/types/unstable/plan_items.rbs +25 -0
  250. data/sig/generated/acp/types/unstable/plan_markdown.rbs +25 -0
  251. data/sig/generated/acp/types/unstable/plan_removed.rbs +21 -0
  252. data/sig/generated/acp/types/unstable/plan_update.rbs +21 -0
  253. data/sig/generated/acp/types/unstable/plan_update_content/file.rbs +25 -0
  254. data/sig/generated/acp/types/unstable/plan_update_content/items.rbs +25 -0
  255. data/sig/generated/acp/types/unstable/plan_update_content/markdown.rbs +25 -0
  256. data/sig/generated/acp/types/unstable/plan_update_content.rbs +9 -0
  257. data/sig/generated/acp/types/unstable/position.rbs +25 -0
  258. data/sig/generated/acp/types/unstable/position_encoding_kind.rbs +9 -0
  259. data/sig/generated/acp/types/unstable/prompt_response.rbs +25 -0
  260. data/sig/generated/acp/types/unstable/provider_current_config.rbs +25 -0
  261. data/sig/generated/acp/types/unstable/provider_info.rbs +33 -0
  262. data/sig/generated/acp/types/unstable/providers_capabilities.rbs +17 -0
  263. data/sig/generated/acp/types/unstable/range.rbs +25 -0
  264. data/sig/generated/acp/types/unstable/reject_nes_notification.rbs +29 -0
  265. data/sig/generated/acp/types/unstable/requires_action_state_update.rbs +17 -0
  266. data/sig/generated/acp/types/unstable/running_state_update.rbs +17 -0
  267. data/sig/generated/acp/types/unstable/session_cancel_capabilities.rbs +17 -0
  268. data/sig/generated/acp/types/unstable/session_capabilities.rbs +41 -0
  269. data/sig/generated/acp/types/unstable/session_fork_capabilities.rbs +17 -0
  270. data/sig/generated/acp/types/unstable/session_message.rbs +33 -0
  271. data/sig/generated/acp/types/unstable/session_message_chunk.rbs +33 -0
  272. data/sig/generated/acp/types/unstable/session_update/agent_message_chunk.rbs +25 -0
  273. data/sig/generated/acp/types/unstable/session_update/agent_thought_chunk.rbs +25 -0
  274. data/sig/generated/acp/types/unstable/session_update/available_commands_update.rbs +21 -0
  275. data/sig/generated/acp/types/unstable/session_update/compaction_summary_chunk.rbs +25 -0
  276. data/sig/generated/acp/types/unstable/session_update/compaction_update.rbs +33 -0
  277. data/sig/generated/acp/types/unstable/session_update/config_option_update.rbs +21 -0
  278. data/sig/generated/acp/types/unstable/session_update/current_mode_update.rbs +21 -0
  279. data/sig/generated/acp/types/unstable/session_update/notice.rbs +29 -0
  280. data/sig/generated/acp/types/unstable/session_update/plan.rbs +21 -0
  281. data/sig/generated/acp/types/unstable/session_update/plan_removed.rbs +21 -0
  282. data/sig/generated/acp/types/unstable/session_update/plan_update.rbs +21 -0
  283. data/sig/generated/acp/types/unstable/session_update/session_info_update.rbs +25 -0
  284. data/sig/generated/acp/types/unstable/session_update/session_message.rbs +33 -0
  285. data/sig/generated/acp/types/unstable/session_update/session_message_chunk.rbs +33 -0
  286. data/sig/generated/acp/types/unstable/session_update/subagent_update.rbs +37 -0
  287. data/sig/generated/acp/types/unstable/session_update/tool_call.rbs +53 -0
  288. data/sig/generated/acp/types/unstable/session_update/tool_call_update.rbs +53 -0
  289. data/sig/generated/acp/types/unstable/session_update/usage_update.rbs +29 -0
  290. data/sig/generated/acp/types/unstable/session_update/user_message_chunk.rbs +25 -0
  291. data/sig/generated/acp/types/unstable/session_update.rbs +9 -0
  292. data/sig/generated/acp/types/unstable/set_provider_request.rbs +33 -0
  293. data/sig/generated/acp/types/unstable/set_provider_response.rbs +17 -0
  294. data/sig/generated/acp/types/unstable/start_nes_request.rbs +29 -0
  295. data/sig/generated/acp/types/unstable/start_nes_response.rbs +21 -0
  296. data/sig/generated/acp/types/unstable/state_update/idle.rbs +25 -0
  297. data/sig/generated/acp/types/unstable/state_update/requires_action.rbs +17 -0
  298. data/sig/generated/acp/types/unstable/state_update/running.rbs +17 -0
  299. data/sig/generated/acp/types/unstable/state_update/unknown.rbs +17 -0
  300. data/sig/generated/acp/types/unstable/state_update.rbs +9 -0
  301. data/sig/generated/acp/types/unstable/subagent_capabilities.rbs +17 -0
  302. data/sig/generated/acp/types/unstable/subagent_session_capabilities.rbs +21 -0
  303. data/sig/generated/acp/types/unstable/subagent_update.rbs +37 -0
  304. data/sig/generated/acp/types/unstable/suggest_nes_request.rbs +45 -0
  305. data/sig/generated/acp/types/unstable/suggest_nes_response.rbs +21 -0
  306. data/sig/generated/acp/types/unstable/text_document_content_change_event.rbs +25 -0
  307. data/sig/generated/acp/types/unstable/text_document_sync_kind.rbs +7 -0
  308. data/sig/generated/acp/types/unstable/unknown_state_update.rbs +17 -0
  309. data/sig/generated/acp/types/unstable/usage.rbs +41 -0
  310. data/sig/generated/acp/types/unstable/workspace_folder.rbs +25 -0
  311. data/sig/generated/acp/types/unstable.rbs +4 -0
  312. data/sig/manual/acp/agent_connection/optional_method/disable_provider.rbs +6 -0
  313. data/sig/manual/acp/agent_connection/optional_method/fork_session.rbs +6 -0
  314. data/sig/manual/acp/agent_connection/optional_method/list_providers.rbs +6 -0
  315. data/sig/manual/acp/agent_connection/optional_method/set_provider.rbs +6 -0
  316. data/sig/manual/acp/agent_connection.rbs +30 -0
  317. metadata +302 -2
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.unstable.json. Do not edit.
4
+ # Unstable: not part of the ACP spec, may change or disappear at any point.
5
+
6
+ class ACP::Types::Unstable::UnknownStateUpdate
7
+ # @dynamic meta
8
+ attr_reader :meta #: Hash[String, untyped]?
9
+
10
+ # @rbs meta: Hash[String, untyped]?
11
+ # @rbs return: void
12
+ def initialize(meta: nil)
13
+ @meta = meta
14
+ freeze
15
+ end
16
+
17
+ # @rbs hash: Hash[String, untyped]
18
+ # @rbs return: ACP::Types::Unstable::UnknownStateUpdate
19
+ def self.from_h(hash)
20
+ new(meta: hash['_meta'])
21
+ end
22
+
23
+ # @rbs return: Hash[String, untyped]
24
+ def to_h
25
+ { '_meta' => meta }.compact
26
+ end
27
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.unstable.json. Do not edit.
4
+ # Unstable: not part of the ACP spec, may change or disappear at any point.
5
+
6
+ class ACP::Types::Unstable::Usage
7
+ # @dynamic total_tokens
8
+ attr_reader :total_tokens #: Integer
9
+
10
+ # @dynamic input_tokens
11
+ attr_reader :input_tokens #: Integer
12
+
13
+ # @dynamic output_tokens
14
+ attr_reader :output_tokens #: Integer
15
+
16
+ # @dynamic thought_tokens
17
+ attr_reader :thought_tokens #: Integer?
18
+
19
+ # @dynamic cached_read_tokens
20
+ attr_reader :cached_read_tokens #: Integer?
21
+
22
+ # @dynamic cached_write_tokens
23
+ attr_reader :cached_write_tokens #: Integer?
24
+
25
+ # @dynamic meta
26
+ attr_reader :meta #: Hash[String, untyped]?
27
+
28
+ # @rbs total_tokens: Integer
29
+ # @rbs input_tokens: Integer
30
+ # @rbs output_tokens: Integer
31
+ # @rbs thought_tokens: Integer?
32
+ # @rbs cached_read_tokens: Integer?
33
+ # @rbs cached_write_tokens: Integer?
34
+ # @rbs meta: Hash[String, untyped]?
35
+ # @rbs return: void
36
+ def initialize(
37
+ total_tokens:,
38
+ input_tokens:,
39
+ output_tokens:,
40
+ thought_tokens: nil,
41
+ cached_read_tokens: nil,
42
+ cached_write_tokens: nil,
43
+ meta: nil
44
+ )
45
+ @total_tokens = total_tokens
46
+ @input_tokens = input_tokens
47
+ @output_tokens = output_tokens
48
+ @thought_tokens = thought_tokens
49
+ @cached_read_tokens = cached_read_tokens
50
+ @cached_write_tokens = cached_write_tokens
51
+ @meta = meta
52
+ freeze
53
+ end
54
+
55
+ # @rbs hash: Hash[String, untyped]
56
+ # @rbs return: ACP::Types::Unstable::Usage
57
+ def self.from_h(hash)
58
+ new(
59
+ total_tokens: ACP::Types::Check.integer(ACP::Types::Check.key(hash, 'totalTokens'), 'totalTokens', min: 0),
60
+ input_tokens: ACP::Types::Check.integer(ACP::Types::Check.key(hash, 'inputTokens'), 'inputTokens', min: 0),
61
+ output_tokens: ACP::Types::Check.integer(ACP::Types::Check.key(hash, 'outputTokens'), 'outputTokens', min: 0),
62
+ thought_tokens: ACP::Types::Check.integer(hash['thoughtTokens'], 'thoughtTokens', min: 0, allow_nil: true),
63
+ cached_read_tokens: ACP::Types::Check.integer(
64
+ hash['cachedReadTokens'],
65
+ 'cachedReadTokens',
66
+ min: 0,
67
+ allow_nil: true
68
+ ),
69
+ cached_write_tokens: ACP::Types::Check.integer(
70
+ hash['cachedWriteTokens'],
71
+ 'cachedWriteTokens',
72
+ min: 0,
73
+ allow_nil: true
74
+ ),
75
+ meta: hash['_meta']
76
+ )
77
+ end
78
+
79
+ # @rbs return: Hash[String, untyped]
80
+ def to_h
81
+ {
82
+ 'totalTokens' => total_tokens,
83
+ 'inputTokens' => input_tokens,
84
+ 'outputTokens' => output_tokens,
85
+ 'thoughtTokens' => thought_tokens,
86
+ 'cachedReadTokens' => cached_read_tokens,
87
+ 'cachedWriteTokens' => cached_write_tokens,
88
+ '_meta' => meta
89
+ }.compact
90
+ end
91
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.unstable.json. Do not edit.
4
+ # Unstable: not part of the ACP spec, may change or disappear at any point.
5
+
6
+ class ACP::Types::Unstable::WorkspaceFolder
7
+ # @dynamic uri
8
+ attr_reader :uri #: String
9
+
10
+ # @dynamic name
11
+ attr_reader :name #: String
12
+
13
+ # @dynamic meta
14
+ attr_reader :meta #: Hash[String, untyped]?
15
+
16
+ # @rbs uri: String
17
+ # @rbs name: String
18
+ # @rbs meta: Hash[String, untyped]?
19
+ # @rbs return: void
20
+ def initialize(uri:, name:, meta: nil)
21
+ @uri = uri
22
+ @name = name
23
+ @meta = meta
24
+ freeze
25
+ end
26
+
27
+ # @rbs hash: Hash[String, untyped]
28
+ # @rbs return: ACP::Types::Unstable::WorkspaceFolder
29
+ def self.from_h(hash)
30
+ new(
31
+ uri: ACP::Types::Check.string(ACP::Types::Check.key(hash, 'uri'), 'uri'),
32
+ name: ACP::Types::Check.string(ACP::Types::Check.key(hash, 'name'), 'name'),
33
+ meta: hash['_meta']
34
+ )
35
+ end
36
+
37
+ # @rbs return: Hash[String, untyped]
38
+ def to_h
39
+ { 'uri' => uri, 'name' => name, '_meta' => meta }.compact
40
+ end
41
+ end
@@ -0,0 +1,155 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.unstable.json. Do not edit.
4
+ #
5
+ # Callers opt into the unstable types with `require 'acp/types/unstable'`.
6
+ # Zeitwerk ignores lib/acp/types/unstable, so referencing
7
+ # ACP::Types::Unstable without this require raises NameError.
8
+ # These types are not part of the ACP spec and may change or disappear at
9
+ # any point; the stable ACP::Types namespace is unaffected.
10
+
11
+ module ACP::Types::Unstable
12
+ end
13
+
14
+ require_relative 'unstable/accept_nes_notification'
15
+ require_relative 'unstable/agent_capabilities'
16
+ require_relative 'unstable/client_capabilities'
17
+ require_relative 'unstable/client_nes_capabilities'
18
+ require_relative 'unstable/client_session_capabilities'
19
+ require_relative 'unstable/close_nes_request'
20
+ require_relative 'unstable/close_nes_response'
21
+ require_relative 'unstable/compaction_status'
22
+ require_relative 'unstable/compaction_summary_chunk'
23
+ require_relative 'unstable/compaction_update'
24
+ require_relative 'unstable/did_change_document_notification'
25
+ require_relative 'unstable/did_close_document_notification'
26
+ require_relative 'unstable/did_focus_document_notification'
27
+ require_relative 'unstable/did_open_document_notification'
28
+ require_relative 'unstable/did_save_document_notification'
29
+ require_relative 'unstable/disable_provider_request'
30
+ require_relative 'unstable/disable_provider_response'
31
+ require_relative 'unstable/fork_session_request'
32
+ require_relative 'unstable/fork_session_response'
33
+ require_relative 'unstable/idle_state_update'
34
+ require_relative 'unstable/initialize_response'
35
+ require_relative 'unstable/list_providers_request'
36
+ require_relative 'unstable/list_providers_response'
37
+ require_relative 'unstable/llm_protocol'
38
+ require_relative 'unstable/mcp_capabilities'
39
+ require_relative 'unstable/mcp_error'
40
+ require_relative 'unstable/mcp_server'
41
+ require_relative 'unstable/mcp_server/acp'
42
+ require_relative 'unstable/mcp_server/http'
43
+ require_relative 'unstable/mcp_server/sse'
44
+ require_relative 'unstable/mcp_server_acp'
45
+ require_relative 'unstable/message_mcp_notification'
46
+ require_relative 'unstable/message_mcp_request'
47
+ require_relative 'unstable/message_mcp_response'
48
+ require_relative 'unstable/message_mcp_response/error'
49
+ require_relative 'unstable/message_mcp_response/result'
50
+ require_relative 'unstable/nes_capabilities'
51
+ require_relative 'unstable/nes_context_capabilities'
52
+ require_relative 'unstable/nes_diagnostic'
53
+ require_relative 'unstable/nes_diagnostic_severity'
54
+ require_relative 'unstable/nes_diagnostics_capabilities'
55
+ require_relative 'unstable/nes_document_did_change_capabilities'
56
+ require_relative 'unstable/nes_document_did_close_capabilities'
57
+ require_relative 'unstable/nes_document_did_focus_capabilities'
58
+ require_relative 'unstable/nes_document_did_open_capabilities'
59
+ require_relative 'unstable/nes_document_did_save_capabilities'
60
+ require_relative 'unstable/nes_document_event_capabilities'
61
+ require_relative 'unstable/nes_edit_history_capabilities'
62
+ require_relative 'unstable/nes_edit_history_entry'
63
+ require_relative 'unstable/nes_edit_suggestion'
64
+ require_relative 'unstable/nes_event_capabilities'
65
+ require_relative 'unstable/nes_excerpt'
66
+ require_relative 'unstable/nes_jump_capabilities'
67
+ require_relative 'unstable/nes_jump_suggestion'
68
+ require_relative 'unstable/nes_open_file'
69
+ require_relative 'unstable/nes_open_files_capabilities'
70
+ require_relative 'unstable/nes_recent_file'
71
+ require_relative 'unstable/nes_recent_files_capabilities'
72
+ require_relative 'unstable/nes_reject_reason'
73
+ require_relative 'unstable/nes_related_snippet'
74
+ require_relative 'unstable/nes_related_snippets_capabilities'
75
+ require_relative 'unstable/nes_rename_capabilities'
76
+ require_relative 'unstable/nes_rename_suggestion'
77
+ require_relative 'unstable/nes_repository'
78
+ require_relative 'unstable/nes_search_and_replace_capabilities'
79
+ require_relative 'unstable/nes_search_and_replace_suggestion'
80
+ require_relative 'unstable/nes_suggest_context'
81
+ require_relative 'unstable/nes_suggestion'
82
+ require_relative 'unstable/nes_suggestion/edit'
83
+ require_relative 'unstable/nes_suggestion/jump'
84
+ require_relative 'unstable/nes_suggestion/rename'
85
+ require_relative 'unstable/nes_suggestion/searchandreplace'
86
+ require_relative 'unstable/nes_text_edit'
87
+ require_relative 'unstable/nes_trigger_kind'
88
+ require_relative 'unstable/nes_user_action'
89
+ require_relative 'unstable/nes_user_actions_capabilities'
90
+ require_relative 'unstable/notice'
91
+ require_relative 'unstable/notice_severity'
92
+ require_relative 'unstable/plan_capabilities'
93
+ require_relative 'unstable/plan_file'
94
+ require_relative 'unstable/plan_items'
95
+ require_relative 'unstable/plan_markdown'
96
+ require_relative 'unstable/plan_removed'
97
+ require_relative 'unstable/plan_update'
98
+ require_relative 'unstable/plan_update_content'
99
+ require_relative 'unstable/plan_update_content/file'
100
+ require_relative 'unstable/plan_update_content/items'
101
+ require_relative 'unstable/plan_update_content/markdown'
102
+ require_relative 'unstable/position'
103
+ require_relative 'unstable/position_encoding_kind'
104
+ require_relative 'unstable/prompt_response'
105
+ require_relative 'unstable/provider_current_config'
106
+ require_relative 'unstable/provider_info'
107
+ require_relative 'unstable/providers_capabilities'
108
+ require_relative 'unstable/range'
109
+ require_relative 'unstable/reject_nes_notification'
110
+ require_relative 'unstable/requires_action_state_update'
111
+ require_relative 'unstable/running_state_update'
112
+ require_relative 'unstable/session_cancel_capabilities'
113
+ require_relative 'unstable/session_capabilities'
114
+ require_relative 'unstable/session_fork_capabilities'
115
+ require_relative 'unstable/session_message'
116
+ require_relative 'unstable/session_message_chunk'
117
+ require_relative 'unstable/session_update'
118
+ require_relative 'unstable/session_update/agent_message_chunk'
119
+ require_relative 'unstable/session_update/agent_thought_chunk'
120
+ require_relative 'unstable/session_update/available_commands_update'
121
+ require_relative 'unstable/session_update/compaction_summary_chunk'
122
+ require_relative 'unstable/session_update/compaction_update'
123
+ require_relative 'unstable/session_update/config_option_update'
124
+ require_relative 'unstable/session_update/current_mode_update'
125
+ require_relative 'unstable/session_update/notice'
126
+ require_relative 'unstable/session_update/plan'
127
+ require_relative 'unstable/session_update/plan_removed'
128
+ require_relative 'unstable/session_update/plan_update'
129
+ require_relative 'unstable/session_update/session_info_update'
130
+ require_relative 'unstable/session_update/session_message'
131
+ require_relative 'unstable/session_update/session_message_chunk'
132
+ require_relative 'unstable/session_update/subagent_update'
133
+ require_relative 'unstable/session_update/tool_call'
134
+ require_relative 'unstable/session_update/tool_call_update'
135
+ require_relative 'unstable/session_update/usage_update'
136
+ require_relative 'unstable/session_update/user_message_chunk'
137
+ require_relative 'unstable/set_provider_request'
138
+ require_relative 'unstable/set_provider_response'
139
+ require_relative 'unstable/start_nes_request'
140
+ require_relative 'unstable/start_nes_response'
141
+ require_relative 'unstable/state_update'
142
+ require_relative 'unstable/state_update/idle'
143
+ require_relative 'unstable/state_update/requires_action'
144
+ require_relative 'unstable/state_update/running'
145
+ require_relative 'unstable/state_update/unknown'
146
+ require_relative 'unstable/subagent_capabilities'
147
+ require_relative 'unstable/subagent_session_capabilities'
148
+ require_relative 'unstable/subagent_update'
149
+ require_relative 'unstable/suggest_nes_request'
150
+ require_relative 'unstable/suggest_nes_response'
151
+ require_relative 'unstable/text_document_content_change_event'
152
+ require_relative 'unstable/text_document_sync_kind'
153
+ require_relative 'unstable/unknown_state_update'
154
+ require_relative 'unstable/usage'
155
+ require_relative 'unstable/workspace_folder'
data/lib/acp/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ACP
4
- VERSION = '0.8.0'
4
+ VERSION = '0.10.0'
5
5
  end
@@ -1,14 +1,17 @@
1
1
  # Generated from lib/acp/agent_connection/client.rb with RBS::Inline
2
2
 
3
3
  class ACP::AgentConnection::Client
4
+ @mcp_advertised: bool
5
+
4
6
  @peer: ACP::AgentConnection::_Peer
5
7
 
6
8
  # @dynamic capabilities, capabilities=
7
9
  attr_accessor capabilities: ACP::Types::ClientCapabilities?
8
10
 
9
11
  # @rbs peer: ACP::AgentConnection::_Peer
12
+ # @rbs mcp_advertised: bool
10
13
  # @rbs return: void
11
- def initialize: (peer: ACP::AgentConnection::_Peer) -> void
14
+ def initialize: (peer: ACP::AgentConnection::_Peer, ?mcp_advertised: bool) -> void
12
15
 
13
16
  # @rbs session_id: String
14
17
  # @rbs update: ACP::Types::SessionUpdate::t
@@ -27,6 +30,14 @@ class ACP::AgentConnection::Client
27
30
  # @rbs return: ACP::Types::RequestPermissionResponse | ACP::RequestError
28
31
  def request_permission: (ACP::Types::RequestPermissionRequest request) -> (ACP::Types::RequestPermissionResponse | ACP::RequestError)
29
32
 
33
+ # @rbs return: void
34
+ def cancel_requests: () -> void
35
+
36
+ # Always false off a handler thread.
37
+ #
38
+ # @rbs return: bool
39
+ def cancelled?: () -> bool
40
+
30
41
  # @rbs request: ACP::Types::ReadTextFileRequest
31
42
  # @rbs return: ACP::Types::ReadTextFileResponse | ACP::RequestError
32
43
  def read_text_file: (ACP::Types::ReadTextFileRequest request) -> (ACP::Types::ReadTextFileResponse | ACP::RequestError)
@@ -63,6 +74,14 @@ class ACP::AgentConnection::Client
63
74
  # @rbs return: void
64
75
  def complete_elicitation: (ACP::Types::CompleteElicitationNotification notification) -> void
65
76
 
77
+ # Sends one inner MCP operation to the client's declared ACP MCP server. The
78
+ # reply's result may be null, and a reply matching neither carrier branch
79
+ # comes back as the raw hash.
80
+ #
81
+ # @rbs request: ACP::Types::Unstable::MessageMcpRequest
82
+ # @rbs return: (ACP::Types::Unstable::MessageMcpResponse::t | ACP::RequestError)
83
+ def mcp_message: (ACP::Types::Unstable::MessageMcpRequest request) -> (ACP::Types::Unstable::MessageMcpResponse::t | ACP::RequestError)
84
+
66
85
  # Sends an extension request, keyed by its raw `_`-prefixed wire name, and
67
86
  # returns the client's reply as-is: extension methods have no schema to
68
87
  # parse the result into.
@@ -0,0 +1,13 @@
1
+ # Generated from lib/acp/agent_connection/optional_method/disable_provider.rb with RBS::Inline
2
+
3
+ module ACP::AgentConnection::OptionalMethod::DisableProvider
4
+ # @rbs return: String
5
+ def rpc_method: () -> String
6
+
7
+ # @rbs return: Symbol
8
+ def agent_method: () -> Symbol
9
+
10
+ # @rbs initialize_response: ACP::Types::InitializeResponse
11
+ # @rbs return: bool
12
+ def advertised?: (ACP::Types::InitializeResponse initialize_response) -> bool
13
+ end
@@ -0,0 +1,13 @@
1
+ # Generated from lib/acp/agent_connection/optional_method/fork_session.rb with RBS::Inline
2
+
3
+ module ACP::AgentConnection::OptionalMethod::ForkSession
4
+ # @rbs return: String
5
+ def rpc_method: () -> String
6
+
7
+ # @rbs return: Symbol
8
+ def agent_method: () -> Symbol
9
+
10
+ # @rbs initialize_response: ACP::Types::InitializeResponse
11
+ # @rbs return: bool
12
+ def advertised?: (ACP::Types::InitializeResponse initialize_response) -> bool
13
+ end
@@ -0,0 +1,13 @@
1
+ # Generated from lib/acp/agent_connection/optional_method/list_providers.rb with RBS::Inline
2
+
3
+ module ACP::AgentConnection::OptionalMethod::ListProviders
4
+ # @rbs return: String
5
+ def rpc_method: () -> String
6
+
7
+ # @rbs return: Symbol
8
+ def agent_method: () -> Symbol
9
+
10
+ # @rbs initialize_response: ACP::Types::InitializeResponse
11
+ # @rbs return: bool
12
+ def advertised?: (ACP::Types::InitializeResponse initialize_response) -> bool
13
+ end
@@ -0,0 +1,13 @@
1
+ # Generated from lib/acp/agent_connection/optional_method/set_provider.rb with RBS::Inline
2
+
3
+ module ACP::AgentConnection::OptionalMethod::SetProvider
4
+ # @rbs return: String
5
+ def rpc_method: () -> String
6
+
7
+ # @rbs return: Symbol
8
+ def agent_method: () -> Symbol
9
+
10
+ # @rbs initialize_response: ACP::Types::InitializeResponse
11
+ # @rbs return: bool
12
+ def advertised?: (ACP::Types::InitializeResponse initialize_response) -> bool
13
+ end
@@ -47,6 +47,21 @@ class ACP::AgentConnection
47
47
  # @rbs return: Hash[String, ^(untyped) -> (ACP::AgentConnection::_Response | ACP::RequestError | ACP::Transport::Reply)]
48
48
  def requests: (ACP::AgentConnection::_Agent agent, ACP::AgentConnection::Client client) -> Hash[String, ^(untyped) -> (ACP::AgentConnection::_Response | ACP::RequestError | ACP::Transport::Reply)]
49
49
 
50
+ # The unstable request types are referenced while the hash is built, so
51
+ # without the guard start would raise NameError even for an agent that never
52
+ # advertises fork or providers.
53
+ #
54
+ # @rbs full: ACP::AgentConnection::_FullAgent
55
+ # @rbs return: Hash[String, ^(untyped) -> (ACP::AgentConnection::_Response | ACP::RequestError | ACP::Transport::Reply)]
56
+ def unstable_requests: (ACP::AgentConnection::_FullAgent full) -> Hash[String, ^(untyped) -> (ACP::AgentConnection::_Response | ACP::RequestError | ACP::Transport::Reply)]
57
+
58
+ # ForkSession's and the provider methods' advertised? reference the unstable
59
+ # types, so they can only be probed when the caller opted in with
60
+ # `require 'acp/types/unstable'`.
61
+ #
62
+ # @rbs return: Array[ACP::AgentConnection::_OptionalMethod]
63
+ def optional_methods: () -> Array[ACP::AgentConnection::_OptionalMethod]
64
+
50
65
  # @rbs agent: ACP::AgentConnection::_Agent
51
66
  # @rbs return: Hash[String, ^(untyped) -> void]
52
67
  def notifications: (ACP::AgentConnection::_Agent agent) -> Hash[String, ^(untyped) -> void]
@@ -58,6 +73,20 @@ class ACP::AgentConnection
58
73
  # @rbs return: void
59
74
  def cancel: (ACP::AgentConnection::_Agent agent, untyped params) -> void
60
75
 
76
+ # The unstable gates reference the unstable types, so they can only be
77
+ # probed when the caller opted in with `require 'acp/types/unstable'`; the
78
+ # stable McpCapabilities has no acp field at all.
79
+ #
80
+ # @rbs return: bool
81
+ def mcp_acp_advertised?: () -> bool
82
+
83
+ # A notification has no reply to carry a parse failure.
84
+ #
85
+ # @rbs agent: ACP::AgentConnection::_Agent
86
+ # @rbs params: untyped
87
+ # @rbs return: void
88
+ def mcp_message_notification: (ACP::AgentConnection::_Agent agent, untyped params) -> void
89
+
61
90
  # Generated from_h raises on a missing key or a value of the wrong shape.
62
91
  #
63
92
  # @rbs type: ACP::AgentConnection::_Parser
@@ -25,6 +25,10 @@ class ACP::ClientConnection
25
25
 
26
26
  @updates: ACP::ClientConnection::_UpdateHandler
27
27
 
28
+ @mcp_message: (^(ACP::Types::Unstable::MessageMcpRequest) -> (ACP::Types::Unstable::MessageMcpResponse::t | ACP::RequestError))?
29
+
30
+ @mcp_advertised: bool?
31
+
28
32
  @fs_capabilities: ACP::Types::FileSystemCapabilities?
29
33
 
30
34
  @terminal: bool?
@@ -65,11 +69,13 @@ class ACP::ClientConnection
65
69
  # (ACP::Types::CreateElicitationResponse | ACP::RequestError))?
66
70
  # @rbs complete_elicitation: (^(ACP::Types::CompleteElicitationNotification) -> void)?
67
71
  # @rbs updates: ACP::ClientConnection::_UpdateHandler
72
+ # @rbs mcp_message: (^(ACP::Types::Unstable::MessageMcpRequest) ->
73
+ # (ACP::Types::Unstable::MessageMcpResponse::t | ACP::RequestError))?
68
74
  # @rbs extension_requests: Hash[String, ^(untyped) -> untyped]
69
75
  # @rbs extension_notifications: Hash[String, ^(untyped) -> void]
70
76
  # @rbs logger: ACP::Transport::_Logger
71
77
  # @rbs return: void
72
- def initialize: (transport: ACP::AgentConnection::_Transport, permission: ACP::ClientConnection::_PermissionHandler, ?read_text_file: (^(ACP::Types::ReadTextFileRequest) -> (ACP::Types::ReadTextFileResponse | ACP::RequestError))?, ?write_text_file: (^(ACP::Types::WriteTextFileRequest) -> (ACP::Types::WriteTextFileResponse | ACP::RequestError))?, ?create_terminal: (^(ACP::Types::CreateTerminalRequest) -> (ACP::Types::CreateTerminalResponse | ACP::RequestError))?, ?terminal_output: (^(ACP::Types::TerminalOutputRequest) -> (ACP::Types::TerminalOutputResponse | ACP::RequestError))?, ?wait_for_terminal_exit: (^(ACP::Types::WaitForTerminalExitRequest) -> (ACP::Types::WaitForTerminalExitResponse | ACP::RequestError))?, ?kill_terminal: (^(ACP::Types::KillTerminalRequest) -> (ACP::Types::KillTerminalResponse | ACP::RequestError))?, ?release_terminal: (^(ACP::Types::ReleaseTerminalRequest) -> (ACP::Types::ReleaseTerminalResponse | ACP::RequestError))?, ?elicitation: (^(ACP::Types::CreateElicitationRequest) -> (ACP::Types::CreateElicitationResponse | ACP::RequestError))?, ?complete_elicitation: (^(ACP::Types::CompleteElicitationNotification) -> void)?, ?updates: ACP::ClientConnection::_UpdateHandler, ?extension_requests: Hash[String, ^(untyped) -> untyped], ?extension_notifications: Hash[String, ^(untyped) -> void], ?logger: ACP::Transport::_Logger) -> void
78
+ def initialize: (transport: ACP::AgentConnection::_Transport, permission: ACP::ClientConnection::_PermissionHandler, ?read_text_file: (^(ACP::Types::ReadTextFileRequest) -> (ACP::Types::ReadTextFileResponse | ACP::RequestError))?, ?write_text_file: (^(ACP::Types::WriteTextFileRequest) -> (ACP::Types::WriteTextFileResponse | ACP::RequestError))?, ?create_terminal: (^(ACP::Types::CreateTerminalRequest) -> (ACP::Types::CreateTerminalResponse | ACP::RequestError))?, ?terminal_output: (^(ACP::Types::TerminalOutputRequest) -> (ACP::Types::TerminalOutputResponse | ACP::RequestError))?, ?wait_for_terminal_exit: (^(ACP::Types::WaitForTerminalExitRequest) -> (ACP::Types::WaitForTerminalExitResponse | ACP::RequestError))?, ?kill_terminal: (^(ACP::Types::KillTerminalRequest) -> (ACP::Types::KillTerminalResponse | ACP::RequestError))?, ?release_terminal: (^(ACP::Types::ReleaseTerminalRequest) -> (ACP::Types::ReleaseTerminalResponse | ACP::RequestError))?, ?elicitation: (^(ACP::Types::CreateElicitationRequest) -> (ACP::Types::CreateElicitationResponse | ACP::RequestError))?, ?complete_elicitation: (^(ACP::Types::CompleteElicitationNotification) -> void)?, ?updates: ACP::ClientConnection::_UpdateHandler, ?mcp_message: (^(ACP::Types::Unstable::MessageMcpRequest) -> (ACP::Types::Unstable::MessageMcpResponse::t | ACP::RequestError))?, ?extension_requests: Hash[String, ^(untyped) -> untyped], ?extension_notifications: Hash[String, ^(untyped) -> void], ?logger: ACP::Transport::_Logger) -> void
73
79
 
74
80
  # @rbs return: Thread
75
81
  def start: () -> Thread
@@ -114,6 +120,22 @@ class ACP::ClientConnection
114
120
  # @rbs return: ACP::Types::DeleteSessionResponse | ACP::RequestError
115
121
  def session_delete: (ACP::Types::DeleteSessionRequest request) -> (ACP::Types::DeleteSessionResponse | ACP::RequestError)
116
122
 
123
+ # @rbs request: ACP::Types::Unstable::ForkSessionRequest
124
+ # @rbs return: (ACP::Types::Unstable::ForkSessionResponse | ACP::RequestError)
125
+ def session_fork: (ACP::Types::Unstable::ForkSessionRequest request) -> (ACP::Types::Unstable::ForkSessionResponse | ACP::RequestError)
126
+
127
+ # @rbs request: ACP::Types::Unstable::ListProvidersRequest
128
+ # @rbs return: (ACP::Types::Unstable::ListProvidersResponse | ACP::RequestError)
129
+ def providers_list: (ACP::Types::Unstable::ListProvidersRequest request) -> (ACP::Types::Unstable::ListProvidersResponse | ACP::RequestError)
130
+
131
+ # @rbs request: ACP::Types::Unstable::SetProviderRequest
132
+ # @rbs return: (ACP::Types::Unstable::SetProviderResponse | ACP::RequestError)
133
+ def providers_set: (ACP::Types::Unstable::SetProviderRequest request) -> (ACP::Types::Unstable::SetProviderResponse | ACP::RequestError)
134
+
135
+ # @rbs request: ACP::Types::Unstable::DisableProviderRequest
136
+ # @rbs return: (ACP::Types::Unstable::DisableProviderResponse | ACP::RequestError)
137
+ def providers_disable: (ACP::Types::Unstable::DisableProviderRequest request) -> (ACP::Types::Unstable::DisableProviderResponse | ACP::RequestError)
138
+
117
139
  # The spec requires a pending session/request_permission to be answered with
118
140
  # the cancelled outcome once the turn is cancelled, so every queue registered
119
141
  # for the session gets one before this returns. The notification goes first
@@ -151,13 +173,40 @@ class ACP::ClientConnection
151
173
  # @rbs return: (Hash[String, untyped] | ACP::RequestError)
152
174
  def ext_request: (String method, ?untyped params) -> (Hash[String, untyped] | ACP::RequestError)
153
175
 
176
+ # Always false off a handler thread.
177
+ #
178
+ # @rbs return: bool
179
+ def cancelled?: () -> bool
180
+
154
181
  # @rbs method: String
155
182
  # @rbs params: untyped
156
183
  # @rbs return: void
157
184
  def ext_notify: (String method, ?untyped params) -> void
158
185
 
186
+ # Unlike the mcp/message serve route, this send is not gated: a notification
187
+ # has no reply to carry a refusal, and the agent drops what it did not
188
+ # advertise.
189
+ #
190
+ # @rbs notification: ACP::Types::Unstable::MessageMcpNotification
191
+ # @rbs return: void
192
+ def mcp_message_notification: (ACP::Types::Unstable::MessageMcpNotification notification) -> void
193
+
159
194
  private
160
195
 
196
+ # The route is only registered when a handler serves it, but the agent's
197
+ # advertisement is only known after connect, so an unadvertised request
198
+ # still reaches the route and is refused there.
199
+ #
200
+ # @rbs return: Hash[String, ACP::Transport::Stdio::_Handler]
201
+ def mcp_requests: () -> Hash[String, ACP::Transport::Stdio::_Handler]
202
+
203
+ # The stable McpCapabilities has no acp field, so the gate re-reads the raw
204
+ # initialize reply with the unstable types when they are opted into.
205
+ #
206
+ # @rbs result: (Hash[String, untyped] | ACP::RequestError)
207
+ # @rbs return: bool
208
+ def agent_mcp_advertised?: (Hash[String, untyped] | ACP::RequestError result) -> bool
209
+
161
210
  # @rbs type: ACP::AgentConnection::_Parser
162
211
  # @rbs result: (Hash[String, untyped] | ACP::RequestError)
163
212
  # @rbs return: untyped
@@ -237,6 +286,13 @@ class ACP::ClientConnection
237
286
  # @rbs return: (ACP::Types::ReleaseTerminalResponse | ACP::RequestError)
238
287
  def release_terminal: (untyped params) -> (ACP::Types::ReleaseTerminalResponse | ACP::RequestError)
239
288
 
289
+ # The route is registered at start, before connect records the agent's
290
+ # advertisement, so an unadvertised request answers -32601 until then.
291
+ #
292
+ # @rbs params: untyped
293
+ # @rbs return: (ACP::Types::Unstable::MessageMcpResponse::t | ACP::RequestError)
294
+ def mcp_message: (untyped params) -> (ACP::Types::Unstable::MessageMcpResponse::t | ACP::RequestError)
295
+
240
296
  # The routes are registered at start, before connect records the advertised
241
297
  # capabilities, so a request for an unadvertised mode answers -32602.
242
298
  #
@@ -70,6 +70,14 @@ class ACP::RequestError
70
70
  # @rbs return: ACP::RequestError
71
71
  def self.unadvertised_mode: (String mode) -> ACP::RequestError
72
72
 
73
+ # unadvertised names a capability of the client's, this one a capability of
74
+ # the agent's: the same method-not-found code, with a message naming which
75
+ # side's advertisement is missing.
76
+ #
77
+ # @rbs capability: String
78
+ # @rbs return: ACP::RequestError
79
+ def self.unadvertised_agent: (String capability) -> ACP::RequestError
80
+
73
81
  # @rbs return: ACP::RequestError
74
82
  def self.internal_error: () -> ACP::RequestError
75
83
 
@@ -0,0 +1,32 @@
1
+ # Generated from lib/acp/transport/cancellation.rb with RBS::Inline
2
+
3
+ # Whether the peer cancelled one request. The transport creates one per served
4
+ # request, marks it when the peer's $/cancel_request arrives, and hands it to
5
+ # the serving thread, whose handler can observe it and end the request early.
6
+ class ACP::Transport::Cancellation
7
+ KEY: Symbol
8
+
9
+ # Connections read this to expose the serving state to their handlers and
10
+ # write it to carry serving identity onto a thread they spawn; nil off a
11
+ # serve thread.
12
+ #
13
+ # @rbs return: ACP::Transport::Cancellation?
14
+ def self.current: () -> ACP::Transport::Cancellation?
15
+
16
+ # @rbs cancellation: ACP::Transport::Cancellation?
17
+ # @rbs return: void
18
+ def self.current=: (ACP::Transport::Cancellation? cancellation) -> void
19
+
20
+ @lock: Thread::Mutex
21
+
22
+ @cancelled: bool
23
+
24
+ # @rbs return: void
25
+ def initialize: () -> void
26
+
27
+ # @rbs return: void
28
+ def cancel: () -> void
29
+
30
+ # @rbs return: bool
31
+ def cancelled?: () -> bool
32
+ end