acp-sdk 0.1.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 (421) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +11 -0
  3. data/LICENSE.txt +9 -0
  4. data/README.md +81 -0
  5. data/lib/acp/agent_connection/client.rb +39 -0
  6. data/lib/acp/agent_connection/optional_method.rb +28 -0
  7. data/lib/acp/agent_connection.rb +122 -0
  8. data/lib/acp/client_connection.rb +129 -0
  9. data/lib/acp/sdk.rb +13 -0
  10. data/lib/acp/transport/reply.rb +20 -0
  11. data/lib/acp/transport/response_error.rb +28 -0
  12. data/lib/acp/transport/result.rb +35 -0
  13. data/lib/acp/transport/stdio.rb +207 -0
  14. data/lib/acp/transport.rb +4 -0
  15. data/lib/acp/types/agent_auth_capabilities.rb +31 -0
  16. data/lib/acp/types/agent_capabilities.rb +72 -0
  17. data/lib/acp/types/annotations.rb +46 -0
  18. data/lib/acp/types/audio_content.rb +46 -0
  19. data/lib/acp/types/auth_capabilities.rb +31 -0
  20. data/lib/acp/types/auth_method/terminal.rb +66 -0
  21. data/lib/acp/types/auth_method.rb +20 -0
  22. data/lib/acp/types/auth_method_agent.rb +41 -0
  23. data/lib/acp/types/auth_method_terminal.rb +58 -0
  24. data/lib/acp/types/authenticate_request.rb +31 -0
  25. data/lib/acp/types/authenticate_response.rb +26 -0
  26. data/lib/acp/types/available_command.rb +46 -0
  27. data/lib/acp/types/available_command_input.rb +19 -0
  28. data/lib/acp/types/available_commands_update.rb +34 -0
  29. data/lib/acp/types/blob_resource_contents.rb +41 -0
  30. data/lib/acp/types/boolean_config_option_capabilities.rb +26 -0
  31. data/lib/acp/types/boolean_property_schema.rb +41 -0
  32. data/lib/acp/types/cancel_notification.rb +31 -0
  33. data/lib/acp/types/cancel_request_notification.rb +31 -0
  34. data/lib/acp/types/client_capabilities.rb +65 -0
  35. data/lib/acp/types/client_session_capabilities.rb +36 -0
  36. data/lib/acp/types/close_session_request.rb +31 -0
  37. data/lib/acp/types/close_session_response.rb +26 -0
  38. data/lib/acp/types/complete_elicitation_notification.rb +31 -0
  39. data/lib/acp/types/config_option_update.rb +34 -0
  40. data/lib/acp/types/content.rb +31 -0
  41. data/lib/acp/types/content_block/audio.rb +52 -0
  42. data/lib/acp/types/content_block/image.rb +59 -0
  43. data/lib/acp/types/content_block/resource.rb +40 -0
  44. data/lib/acp/types/content_block/resource_link.rb +80 -0
  45. data/lib/acp/types/content_block/text.rb +40 -0
  46. data/lib/acp/types/content_block.rb +26 -0
  47. data/lib/acp/types/content_chunk.rb +40 -0
  48. data/lib/acp/types/cost.rb +36 -0
  49. data/lib/acp/types/create_elicitation_request/mode/form.rb +34 -0
  50. data/lib/acp/types/create_elicitation_request/mode/url.rb +40 -0
  51. data/lib/acp/types/create_elicitation_request/mode.rb +20 -0
  52. data/lib/acp/types/create_elicitation_request.rb +40 -0
  53. data/lib/acp/types/create_elicitation_response/action/accept.rb +26 -0
  54. data/lib/acp/types/create_elicitation_response/action/cancel.rb +21 -0
  55. data/lib/acp/types/create_elicitation_response/action/decline.rb +21 -0
  56. data/lib/acp/types/create_elicitation_response/action.rb +22 -0
  57. data/lib/acp/types/create_elicitation_response.rb +31 -0
  58. data/lib/acp/types/create_terminal_request.rb +72 -0
  59. data/lib/acp/types/create_terminal_response.rb +31 -0
  60. data/lib/acp/types/current_mode_update.rb +31 -0
  61. data/lib/acp/types/delete_session_request.rb +31 -0
  62. data/lib/acp/types/delete_session_response.rb +26 -0
  63. data/lib/acp/types/diff.rb +41 -0
  64. data/lib/acp/types/elicitation_accept_action.rb +26 -0
  65. data/lib/acp/types/elicitation_capabilities.rb +40 -0
  66. data/lib/acp/types/elicitation_form_capabilities.rb +26 -0
  67. data/lib/acp/types/elicitation_form_mode/scope.rb +22 -0
  68. data/lib/acp/types/elicitation_form_mode.rb +34 -0
  69. data/lib/acp/types/elicitation_property_schema/boolean_property_schema.rb +47 -0
  70. data/lib/acp/types/elicitation_property_schema/integer_property_schema.rb +66 -0
  71. data/lib/acp/types/elicitation_property_schema/multi_select_property_schema.rb +73 -0
  72. data/lib/acp/types/elicitation_property_schema/number_property_schema.rb +66 -0
  73. data/lib/acp/types/elicitation_property_schema/string_property_schema.rb +105 -0
  74. data/lib/acp/types/elicitation_property_schema.rb +26 -0
  75. data/lib/acp/types/elicitation_request_scope.rb +26 -0
  76. data/lib/acp/types/elicitation_schema.rb +65 -0
  77. data/lib/acp/types/elicitation_schema_type.rb +7 -0
  78. data/lib/acp/types/elicitation_session_scope.rb +31 -0
  79. data/lib/acp/types/elicitation_url_capabilities.rb +26 -0
  80. data/lib/acp/types/elicitation_url_mode/scope.rb +22 -0
  81. data/lib/acp/types/elicitation_url_mode.rb +40 -0
  82. data/lib/acp/types/embedded_resource.rb +40 -0
  83. data/lib/acp/types/embedded_resource_resource.rb +22 -0
  84. data/lib/acp/types/enum_option.rb +41 -0
  85. data/lib/acp/types/env_variable.rb +36 -0
  86. data/lib/acp/types/file_system_capabilities.rb +36 -0
  87. data/lib/acp/types/http_header.rb +36 -0
  88. data/lib/acp/types/image_content.rb +58 -0
  89. data/lib/acp/types/implementation.rb +41 -0
  90. data/lib/acp/types/initialize_request.rb +51 -0
  91. data/lib/acp/types/initialize_response.rb +58 -0
  92. data/lib/acp/types/integer_property_schema.rb +65 -0
  93. data/lib/acp/types/kill_terminal_request.rb +36 -0
  94. data/lib/acp/types/kill_terminal_response.rb +26 -0
  95. data/lib/acp/types/list_sessions_request.rb +36 -0
  96. data/lib/acp/types/list_sessions_response.rb +40 -0
  97. data/lib/acp/types/load_session_request.rb +58 -0
  98. data/lib/acp/types/load_session_response.rb +40 -0
  99. data/lib/acp/types/logout_capabilities.rb +26 -0
  100. data/lib/acp/types/logout_request.rb +26 -0
  101. data/lib/acp/types/logout_response.rb +26 -0
  102. data/lib/acp/types/mcp_capabilities.rb +36 -0
  103. data/lib/acp/types/mcp_server/http.rb +46 -0
  104. data/lib/acp/types/mcp_server/sse.rb +46 -0
  105. data/lib/acp/types/mcp_server.rb +22 -0
  106. data/lib/acp/types/mcp_server_http.rb +46 -0
  107. data/lib/acp/types/mcp_server_sse.rb +46 -0
  108. data/lib/acp/types/mcp_server_stdio.rb +52 -0
  109. data/lib/acp/types/multi_select_items/string_multi_select_items.rb +31 -0
  110. data/lib/acp/types/multi_select_items.rb +20 -0
  111. data/lib/acp/types/multi_select_property_schema.rb +72 -0
  112. data/lib/acp/types/new_session_request.rb +51 -0
  113. data/lib/acp/types/new_session_response.rb +51 -0
  114. data/lib/acp/types/number_property_schema.rb +65 -0
  115. data/lib/acp/types/permission_option.rb +41 -0
  116. data/lib/acp/types/permission_option_kind.rb +10 -0
  117. data/lib/acp/types/plan.rb +31 -0
  118. data/lib/acp/types/plan_entry.rb +46 -0
  119. data/lib/acp/types/plan_entry_priority.rb +9 -0
  120. data/lib/acp/types/plan_entry_status.rb +9 -0
  121. data/lib/acp/types/prompt_capabilities.rb +41 -0
  122. data/lib/acp/types/prompt_request.rb +40 -0
  123. data/lib/acp/types/prompt_response.rb +31 -0
  124. data/lib/acp/types/read_text_file_request.rb +52 -0
  125. data/lib/acp/types/read_text_file_response.rb +31 -0
  126. data/lib/acp/types/release_terminal_request.rb +36 -0
  127. data/lib/acp/types/release_terminal_response.rb +26 -0
  128. data/lib/acp/types/request_permission_outcome/cancelled.rb +21 -0
  129. data/lib/acp/types/request_permission_outcome/selected.rb +31 -0
  130. data/lib/acp/types/request_permission_outcome.rb +20 -0
  131. data/lib/acp/types/request_permission_request.rb +51 -0
  132. data/lib/acp/types/request_permission_response.rb +31 -0
  133. data/lib/acp/types/resource_link.rb +79 -0
  134. data/lib/acp/types/resume_session_request.rb +58 -0
  135. data/lib/acp/types/resume_session_response.rb +40 -0
  136. data/lib/acp/types/role.rb +8 -0
  137. data/lib/acp/types/selected_permission_outcome.rb +31 -0
  138. data/lib/acp/types/session_additional_directories_capabilities.rb +26 -0
  139. data/lib/acp/types/session_capabilities.rb +67 -0
  140. data/lib/acp/types/session_close_capabilities.rb +26 -0
  141. data/lib/acp/types/session_config_boolean.rb +26 -0
  142. data/lib/acp/types/session_config_option/kind/boolean.rb +26 -0
  143. data/lib/acp/types/session_config_option/kind/select.rb +34 -0
  144. data/lib/acp/types/session_config_option/kind.rb +20 -0
  145. data/lib/acp/types/session_config_option.rb +64 -0
  146. data/lib/acp/types/session_config_option_category.rb +10 -0
  147. data/lib/acp/types/session_config_options_capabilities.rb +34 -0
  148. data/lib/acp/types/session_config_select.rb +34 -0
  149. data/lib/acp/types/session_config_select_group.rb +46 -0
  150. data/lib/acp/types/session_config_select_option.rb +41 -0
  151. data/lib/acp/types/session_config_select_options.rb +22 -0
  152. data/lib/acp/types/session_delete_capabilities.rb +26 -0
  153. data/lib/acp/types/session_info.rb +65 -0
  154. data/lib/acp/types/session_info_update.rb +38 -0
  155. data/lib/acp/types/session_list_capabilities.rb +26 -0
  156. data/lib/acp/types/session_list_request.rb +8 -0
  157. data/lib/acp/types/session_list_response.rb +8 -0
  158. data/lib/acp/types/session_load_request.rb +8 -0
  159. data/lib/acp/types/session_mode.rb +41 -0
  160. data/lib/acp/types/session_mode_state.rb +40 -0
  161. data/lib/acp/types/session_new_request.rb +8 -0
  162. data/lib/acp/types/session_notification.rb +40 -0
  163. data/lib/acp/types/session_prompt_request.rb +8 -0
  164. data/lib/acp/types/session_resume_capabilities.rb +26 -0
  165. data/lib/acp/types/session_update/agent_message_chunk.rb +45 -0
  166. data/lib/acp/types/session_update/agent_thought_chunk.rb +45 -0
  167. data/lib/acp/types/session_update/available_commands_update.rb +38 -0
  168. data/lib/acp/types/session_update/config_option_update.rb +38 -0
  169. data/lib/acp/types/session_update/current_mode_update.rb +31 -0
  170. data/lib/acp/types/session_update/plan.rb +31 -0
  171. data/lib/acp/types/session_update/session_info_update.rb +39 -0
  172. data/lib/acp/types/session_update/tool_call.rb +97 -0
  173. data/lib/acp/types/session_update/tool_call_update.rb +97 -0
  174. data/lib/acp/types/session_update/usage_update.rb +46 -0
  175. data/lib/acp/types/session_update/user_message_chunk.rb +45 -0
  176. data/lib/acp/types/session_update.rb +38 -0
  177. data/lib/acp/types/set_session_config_option_request/value/boolean.rb +26 -0
  178. data/lib/acp/types/set_session_config_option_request/value/value_id.rb +26 -0
  179. data/lib/acp/types/set_session_config_option_request/value.rb +20 -0
  180. data/lib/acp/types/set_session_config_option_request.rb +46 -0
  181. data/lib/acp/types/set_session_config_option_response.rb +34 -0
  182. data/lib/acp/types/set_session_mode_request.rb +36 -0
  183. data/lib/acp/types/set_session_mode_response.rb +26 -0
  184. data/lib/acp/types/stop_reason.rb +11 -0
  185. data/lib/acp/types/string_format.rb +10 -0
  186. data/lib/acp/types/string_multi_select_items.rb +31 -0
  187. data/lib/acp/types/string_property_schema.rb +104 -0
  188. data/lib/acp/types/terminal.rb +31 -0
  189. data/lib/acp/types/terminal_exit_status.rb +36 -0
  190. data/lib/acp/types/terminal_output_request.rb +36 -0
  191. data/lib/acp/types/terminal_output_response.rb +46 -0
  192. data/lib/acp/types/text_content.rb +40 -0
  193. data/lib/acp/types/text_resource_contents.rb +41 -0
  194. data/lib/acp/types/titled_multi_select_items.rb +31 -0
  195. data/lib/acp/types/tool_call.rb +96 -0
  196. data/lib/acp/types/tool_call_content/content.rb +31 -0
  197. data/lib/acp/types/tool_call_content/diff.rb +41 -0
  198. data/lib/acp/types/tool_call_content/terminal.rb +31 -0
  199. data/lib/acp/types/tool_call_content.rb +22 -0
  200. data/lib/acp/types/tool_call_location.rb +36 -0
  201. data/lib/acp/types/tool_call_status.rb +10 -0
  202. data/lib/acp/types/tool_call_update.rb +96 -0
  203. data/lib/acp/types/tool_kind.rb +16 -0
  204. data/lib/acp/types/unstructured_command_input.rb +31 -0
  205. data/lib/acp/types/usage_update.rb +46 -0
  206. data/lib/acp/types/wait_for_terminal_exit_request.rb +36 -0
  207. data/lib/acp/types/wait_for_terminal_exit_response.rb +36 -0
  208. data/lib/acp/types/write_text_file_request.rb +46 -0
  209. data/lib/acp/types/write_text_file_response.rb +26 -0
  210. data/lib/acp/version.rb +5 -0
  211. data/sig/generated/acp/agent_connection/client.rbs +29 -0
  212. data/sig/generated/acp/agent_connection/optional_method.rbs +21 -0
  213. data/sig/generated/acp/agent_connection.rbs +65 -0
  214. data/sig/generated/acp/client_connection.rbs +82 -0
  215. data/sig/generated/acp/sdk.rbs +2 -0
  216. data/sig/generated/acp/transport/reply.rbs +16 -0
  217. data/sig/generated/acp/transport/response_error.rbs +21 -0
  218. data/sig/generated/acp/transport/result.rbs +25 -0
  219. data/sig/generated/acp/transport/stdio.rbs +116 -0
  220. data/sig/generated/acp/transport.rbs +4 -0
  221. data/sig/generated/acp/types/agent_auth_capabilities.rbs +21 -0
  222. data/sig/generated/acp/types/agent_capabilities.rbs +37 -0
  223. data/sig/generated/acp/types/annotations.rbs +29 -0
  224. data/sig/generated/acp/types/audio_content.rbs +29 -0
  225. data/sig/generated/acp/types/auth_capabilities.rbs +21 -0
  226. data/sig/generated/acp/types/auth_method/terminal.rbs +37 -0
  227. data/sig/generated/acp/types/auth_method.rbs +9 -0
  228. data/sig/generated/acp/types/auth_method_agent.rbs +29 -0
  229. data/sig/generated/acp/types/auth_method_terminal.rbs +37 -0
  230. data/sig/generated/acp/types/authenticate_request.rbs +21 -0
  231. data/sig/generated/acp/types/authenticate_response.rbs +17 -0
  232. data/sig/generated/acp/types/available_command.rbs +29 -0
  233. data/sig/generated/acp/types/available_command_input.rbs +9 -0
  234. data/sig/generated/acp/types/available_commands_update.rbs +21 -0
  235. data/sig/generated/acp/types/blob_resource_contents.rbs +29 -0
  236. data/sig/generated/acp/types/boolean_config_option_capabilities.rbs +17 -0
  237. data/sig/generated/acp/types/boolean_property_schema.rbs +29 -0
  238. data/sig/generated/acp/types/cancel_notification.rbs +21 -0
  239. data/sig/generated/acp/types/cancel_request_notification.rbs +21 -0
  240. data/sig/generated/acp/types/client_capabilities.rbs +37 -0
  241. data/sig/generated/acp/types/client_session_capabilities.rbs +21 -0
  242. data/sig/generated/acp/types/close_session_request.rbs +21 -0
  243. data/sig/generated/acp/types/close_session_response.rbs +17 -0
  244. data/sig/generated/acp/types/complete_elicitation_notification.rbs +21 -0
  245. data/sig/generated/acp/types/config_option_update.rbs +21 -0
  246. data/sig/generated/acp/types/content.rbs +21 -0
  247. data/sig/generated/acp/types/content_block/audio.rbs +29 -0
  248. data/sig/generated/acp/types/content_block/image.rbs +33 -0
  249. data/sig/generated/acp/types/content_block/resource.rbs +25 -0
  250. data/sig/generated/acp/types/content_block/resource_link.rbs +45 -0
  251. data/sig/generated/acp/types/content_block/text.rbs +25 -0
  252. data/sig/generated/acp/types/content_block.rbs +9 -0
  253. data/sig/generated/acp/types/content_chunk.rbs +25 -0
  254. data/sig/generated/acp/types/cost.rbs +25 -0
  255. data/sig/generated/acp/types/create_elicitation_request/mode/form.rbs +21 -0
  256. data/sig/generated/acp/types/create_elicitation_request/mode/url.rbs +25 -0
  257. data/sig/generated/acp/types/create_elicitation_request/mode.rbs +9 -0
  258. data/sig/generated/acp/types/create_elicitation_request.rbs +25 -0
  259. data/sig/generated/acp/types/create_elicitation_response/action/accept.rbs +17 -0
  260. data/sig/generated/acp/types/create_elicitation_response/action/cancel.rbs +13 -0
  261. data/sig/generated/acp/types/create_elicitation_response/action/decline.rbs +13 -0
  262. data/sig/generated/acp/types/create_elicitation_response/action.rbs +9 -0
  263. data/sig/generated/acp/types/create_elicitation_response.rbs +21 -0
  264. data/sig/generated/acp/types/create_terminal_request.rbs +41 -0
  265. data/sig/generated/acp/types/create_terminal_response.rbs +21 -0
  266. data/sig/generated/acp/types/current_mode_update.rbs +21 -0
  267. data/sig/generated/acp/types/delete_session_request.rbs +21 -0
  268. data/sig/generated/acp/types/delete_session_response.rbs +17 -0
  269. data/sig/generated/acp/types/diff.rbs +29 -0
  270. data/sig/generated/acp/types/elicitation_accept_action.rbs +17 -0
  271. data/sig/generated/acp/types/elicitation_capabilities.rbs +25 -0
  272. data/sig/generated/acp/types/elicitation_form_capabilities.rbs +17 -0
  273. data/sig/generated/acp/types/elicitation_form_mode/scope.rbs +9 -0
  274. data/sig/generated/acp/types/elicitation_form_mode.rbs +21 -0
  275. data/sig/generated/acp/types/elicitation_property_schema/boolean_property_schema.rbs +29 -0
  276. data/sig/generated/acp/types/elicitation_property_schema/integer_property_schema.rbs +37 -0
  277. data/sig/generated/acp/types/elicitation_property_schema/multi_select_property_schema.rbs +41 -0
  278. data/sig/generated/acp/types/elicitation_property_schema/number_property_schema.rbs +37 -0
  279. data/sig/generated/acp/types/elicitation_property_schema/string_property_schema.rbs +53 -0
  280. data/sig/generated/acp/types/elicitation_property_schema.rbs +9 -0
  281. data/sig/generated/acp/types/elicitation_request_scope.rbs +17 -0
  282. data/sig/generated/acp/types/elicitation_schema.rbs +37 -0
  283. data/sig/generated/acp/types/elicitation_schema_type.rbs +5 -0
  284. data/sig/generated/acp/types/elicitation_session_scope.rbs +21 -0
  285. data/sig/generated/acp/types/elicitation_url_capabilities.rbs +17 -0
  286. data/sig/generated/acp/types/elicitation_url_mode/scope.rbs +9 -0
  287. data/sig/generated/acp/types/elicitation_url_mode.rbs +25 -0
  288. data/sig/generated/acp/types/embedded_resource.rbs +25 -0
  289. data/sig/generated/acp/types/embedded_resource_resource.rbs +9 -0
  290. data/sig/generated/acp/types/enum_option.rbs +29 -0
  291. data/sig/generated/acp/types/env_variable.rbs +25 -0
  292. data/sig/generated/acp/types/file_system_capabilities.rbs +25 -0
  293. data/sig/generated/acp/types/http_header.rbs +25 -0
  294. data/sig/generated/acp/types/image_content.rbs +33 -0
  295. data/sig/generated/acp/types/implementation.rbs +29 -0
  296. data/sig/generated/acp/types/initialize_request.rbs +29 -0
  297. data/sig/generated/acp/types/initialize_response.rbs +33 -0
  298. data/sig/generated/acp/types/integer_property_schema.rbs +37 -0
  299. data/sig/generated/acp/types/kill_terminal_request.rbs +25 -0
  300. data/sig/generated/acp/types/kill_terminal_response.rbs +17 -0
  301. data/sig/generated/acp/types/list_sessions_request.rbs +25 -0
  302. data/sig/generated/acp/types/list_sessions_response.rbs +25 -0
  303. data/sig/generated/acp/types/load_session_request.rbs +33 -0
  304. data/sig/generated/acp/types/load_session_response.rbs +25 -0
  305. data/sig/generated/acp/types/logout_capabilities.rbs +17 -0
  306. data/sig/generated/acp/types/logout_request.rbs +17 -0
  307. data/sig/generated/acp/types/logout_response.rbs +17 -0
  308. data/sig/generated/acp/types/mcp_capabilities.rbs +25 -0
  309. data/sig/generated/acp/types/mcp_server/http.rbs +29 -0
  310. data/sig/generated/acp/types/mcp_server/sse.rbs +29 -0
  311. data/sig/generated/acp/types/mcp_server.rbs +9 -0
  312. data/sig/generated/acp/types/mcp_server_http.rbs +29 -0
  313. data/sig/generated/acp/types/mcp_server_sse.rbs +29 -0
  314. data/sig/generated/acp/types/mcp_server_stdio.rbs +33 -0
  315. data/sig/generated/acp/types/multi_select_items/string_multi_select_items.rbs +21 -0
  316. data/sig/generated/acp/types/multi_select_items.rbs +9 -0
  317. data/sig/generated/acp/types/multi_select_property_schema.rbs +41 -0
  318. data/sig/generated/acp/types/new_session_request.rbs +29 -0
  319. data/sig/generated/acp/types/new_session_response.rbs +29 -0
  320. data/sig/generated/acp/types/number_property_schema.rbs +37 -0
  321. data/sig/generated/acp/types/permission_option.rbs +29 -0
  322. data/sig/generated/acp/types/permission_option_kind.rbs +11 -0
  323. data/sig/generated/acp/types/plan.rbs +21 -0
  324. data/sig/generated/acp/types/plan_entry.rbs +29 -0
  325. data/sig/generated/acp/types/plan_entry_priority.rbs +9 -0
  326. data/sig/generated/acp/types/plan_entry_status.rbs +9 -0
  327. data/sig/generated/acp/types/prompt_capabilities.rbs +29 -0
  328. data/sig/generated/acp/types/prompt_request.rbs +25 -0
  329. data/sig/generated/acp/types/prompt_response.rbs +21 -0
  330. data/sig/generated/acp/types/read_text_file_request.rbs +33 -0
  331. data/sig/generated/acp/types/read_text_file_response.rbs +21 -0
  332. data/sig/generated/acp/types/release_terminal_request.rbs +25 -0
  333. data/sig/generated/acp/types/release_terminal_response.rbs +17 -0
  334. data/sig/generated/acp/types/request_permission_outcome/cancelled.rbs +13 -0
  335. data/sig/generated/acp/types/request_permission_outcome/selected.rbs +21 -0
  336. data/sig/generated/acp/types/request_permission_outcome.rbs +9 -0
  337. data/sig/generated/acp/types/request_permission_request.rbs +29 -0
  338. data/sig/generated/acp/types/request_permission_response.rbs +21 -0
  339. data/sig/generated/acp/types/resource_link.rbs +45 -0
  340. data/sig/generated/acp/types/resume_session_request.rbs +33 -0
  341. data/sig/generated/acp/types/resume_session_response.rbs +25 -0
  342. data/sig/generated/acp/types/role.rbs +7 -0
  343. data/sig/generated/acp/types/selected_permission_outcome.rbs +21 -0
  344. data/sig/generated/acp/types/session_additional_directories_capabilities.rbs +17 -0
  345. data/sig/generated/acp/types/session_capabilities.rbs +37 -0
  346. data/sig/generated/acp/types/session_close_capabilities.rbs +17 -0
  347. data/sig/generated/acp/types/session_config_boolean.rbs +17 -0
  348. data/sig/generated/acp/types/session_config_option/kind/boolean.rbs +17 -0
  349. data/sig/generated/acp/types/session_config_option/kind/select.rbs +21 -0
  350. data/sig/generated/acp/types/session_config_option/kind.rbs +9 -0
  351. data/sig/generated/acp/types/session_config_option.rbs +37 -0
  352. data/sig/generated/acp/types/session_config_option_category.rbs +11 -0
  353. data/sig/generated/acp/types/session_config_options_capabilities.rbs +21 -0
  354. data/sig/generated/acp/types/session_config_select.rbs +21 -0
  355. data/sig/generated/acp/types/session_config_select_group.rbs +29 -0
  356. data/sig/generated/acp/types/session_config_select_option.rbs +29 -0
  357. data/sig/generated/acp/types/session_config_select_options.rbs +9 -0
  358. data/sig/generated/acp/types/session_delete_capabilities.rbs +17 -0
  359. data/sig/generated/acp/types/session_info.rbs +37 -0
  360. data/sig/generated/acp/types/session_info_update.rbs +25 -0
  361. data/sig/generated/acp/types/session_list_capabilities.rbs +17 -0
  362. data/sig/generated/acp/types/session_list_request.rbs +3 -0
  363. data/sig/generated/acp/types/session_list_response.rbs +3 -0
  364. data/sig/generated/acp/types/session_load_request.rbs +3 -0
  365. data/sig/generated/acp/types/session_mode.rbs +29 -0
  366. data/sig/generated/acp/types/session_mode_state.rbs +25 -0
  367. data/sig/generated/acp/types/session_new_request.rbs +3 -0
  368. data/sig/generated/acp/types/session_notification.rbs +25 -0
  369. data/sig/generated/acp/types/session_prompt_request.rbs +3 -0
  370. data/sig/generated/acp/types/session_resume_capabilities.rbs +17 -0
  371. data/sig/generated/acp/types/session_update/agent_message_chunk.rbs +25 -0
  372. data/sig/generated/acp/types/session_update/agent_thought_chunk.rbs +25 -0
  373. data/sig/generated/acp/types/session_update/available_commands_update.rbs +21 -0
  374. data/sig/generated/acp/types/session_update/config_option_update.rbs +21 -0
  375. data/sig/generated/acp/types/session_update/current_mode_update.rbs +21 -0
  376. data/sig/generated/acp/types/session_update/plan.rbs +21 -0
  377. data/sig/generated/acp/types/session_update/session_info_update.rbs +25 -0
  378. data/sig/generated/acp/types/session_update/tool_call.rbs +49 -0
  379. data/sig/generated/acp/types/session_update/tool_call_update.rbs +49 -0
  380. data/sig/generated/acp/types/session_update/usage_update.rbs +29 -0
  381. data/sig/generated/acp/types/session_update/user_message_chunk.rbs +25 -0
  382. data/sig/generated/acp/types/session_update.rbs +9 -0
  383. data/sig/generated/acp/types/set_session_config_option_request/value/boolean.rbs +17 -0
  384. data/sig/generated/acp/types/set_session_config_option_request/value/value_id.rbs +17 -0
  385. data/sig/generated/acp/types/set_session_config_option_request/value.rbs +9 -0
  386. data/sig/generated/acp/types/set_session_config_option_request.rbs +29 -0
  387. data/sig/generated/acp/types/set_session_config_option_response.rbs +21 -0
  388. data/sig/generated/acp/types/set_session_mode_request.rbs +25 -0
  389. data/sig/generated/acp/types/set_session_mode_response.rbs +17 -0
  390. data/sig/generated/acp/types/stop_reason.rbs +13 -0
  391. data/sig/generated/acp/types/string_format.rbs +11 -0
  392. data/sig/generated/acp/types/string_multi_select_items.rbs +21 -0
  393. data/sig/generated/acp/types/string_property_schema.rbs +53 -0
  394. data/sig/generated/acp/types/terminal.rbs +21 -0
  395. data/sig/generated/acp/types/terminal_exit_status.rbs +25 -0
  396. data/sig/generated/acp/types/terminal_output_request.rbs +25 -0
  397. data/sig/generated/acp/types/terminal_output_response.rbs +29 -0
  398. data/sig/generated/acp/types/text_content.rbs +25 -0
  399. data/sig/generated/acp/types/text_resource_contents.rbs +29 -0
  400. data/sig/generated/acp/types/titled_multi_select_items.rbs +21 -0
  401. data/sig/generated/acp/types/tool_call.rbs +49 -0
  402. data/sig/generated/acp/types/tool_call_content/content.rbs +21 -0
  403. data/sig/generated/acp/types/tool_call_content/diff.rbs +29 -0
  404. data/sig/generated/acp/types/tool_call_content/terminal.rbs +21 -0
  405. data/sig/generated/acp/types/tool_call_content.rbs +9 -0
  406. data/sig/generated/acp/types/tool_call_location.rbs +25 -0
  407. data/sig/generated/acp/types/tool_call_status.rbs +11 -0
  408. data/sig/generated/acp/types/tool_call_update.rbs +49 -0
  409. data/sig/generated/acp/types/tool_kind.rbs +23 -0
  410. data/sig/generated/acp/types/unstructured_command_input.rbs +21 -0
  411. data/sig/generated/acp/types/usage_update.rbs +29 -0
  412. data/sig/generated/acp/types/wait_for_terminal_exit_request.rbs +25 -0
  413. data/sig/generated/acp/types/wait_for_terminal_exit_response.rbs +25 -0
  414. data/sig/generated/acp/types/write_text_file_request.rbs +29 -0
  415. data/sig/generated/acp/types/write_text_file_response.rbs +17 -0
  416. data/sig/generated/acp/version.rbs +5 -0
  417. data/sig/manual/acp/agent_connection.rbs +52 -0
  418. data/sig/manual/acp/client_connection.rbs +13 -0
  419. data/sig/manual/acp/transport/stdio.rbs +18 -0
  420. data/sig/manual/acp/types.rbs +2 -0
  421. metadata +477 -0
@@ -0,0 +1,207 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ # JSON-RPC 2.0 over newline-delimited JSON on an IO pair. A reader thread
6
+ # dispatches inbound messages while outbound requests are pending, and each
7
+ # inbound request is served on its own thread, so a handler can make an
8
+ # outbound request mid-turn and still see notifications (e.g. session/cancel)
9
+ # that arrive meanwhile.
10
+ class ACP::Transport::Stdio
11
+ # @rbs @input: _Reader
12
+ # @rbs @output: _Writer
13
+ # @rbs @write_lock: Thread::Mutex
14
+ # @rbs @lock: Thread::Mutex
15
+ # @rbs @pending: Hash[untyped, Thread::Queue]
16
+ # @rbs @next_id: Integer
17
+ # @rbs @closed: bool
18
+
19
+ INTERNAL_ERROR = -32_603 #: Integer
20
+ PARSE_ERROR = ACP::Transport::ResponseError.new(code: -32_700, message: 'Parse error') #: ACP::Transport::ResponseError
21
+ INVALID_REQUEST = ACP::Transport::ResponseError.new(code: -32_600, message: 'Invalid request') #: ACP::Transport::ResponseError
22
+ METHOD_NOT_FOUND = ACP::Transport::ResponseError.new(code: -32_601, message: 'Method not found') #: ACP::Transport::ResponseError
23
+ CONNECTION_CLOSED = ACP::Transport::ResponseError.new(code: INTERNAL_ERROR, message: 'Connection closed') #: ACP::Transport::ResponseError
24
+
25
+ # @rbs input: _Reader
26
+ # @rbs output: _Writer
27
+ # @rbs return: void
28
+ def initialize(input:, output:)
29
+ @input = input
30
+ @output = output
31
+ @write_lock = Mutex.new
32
+ @lock = Mutex.new
33
+ @pending = {}
34
+ @next_id = 0
35
+ @closed = false
36
+ end
37
+
38
+ # Returns the reader thread, which ends at EOF on input after releasing any
39
+ # pending outbound requests.
40
+ #
41
+ # @rbs requests: Hash[String, _Handler]
42
+ # @rbs notifications: Hash[String, _NotificationHandler]
43
+ # @rbs return: Thread
44
+ def start(requests: {}, notifications: {})
45
+ Thread.new do
46
+ # Binary copy: String#strip raises on invalid UTF-8, which parse reports.
47
+ @input.each_line { |line| receive(line, requests, notifications) unless line.b.strip.empty? }
48
+ ensure
49
+ close
50
+ end
51
+ end
52
+
53
+ # @rbs method: String
54
+ # @rbs params: untyped
55
+ # @rbs return: ACP::Transport::Result
56
+ def request(method, params = nil)
57
+ queue = Thread::Queue.new
58
+ id = register(queue)
59
+ return ACP::Transport::Result.error(CONNECTION_CLOSED) unless id
60
+
61
+ write({ 'jsonrpc' => '2.0', 'id' => id, 'method' => method, 'params' => params }.compact)
62
+ queue.pop || ACP::Transport::Result.error(CONNECTION_CLOSED)
63
+ end
64
+
65
+ # @rbs method: String
66
+ # @rbs params: untyped
67
+ # @rbs return: void
68
+ def notify(method, params = nil)
69
+ write({ 'jsonrpc' => '2.0', 'method' => method, 'params' => params }.compact)
70
+ end
71
+
72
+ private
73
+
74
+ # @rbs line: String
75
+ # @rbs requests: Hash[String, _Handler]
76
+ # @rbs notifications: Hash[String, _NotificationHandler]
77
+ # @rbs return: void
78
+ def receive(line, requests, notifications)
79
+ message = parse(line)
80
+ case message
81
+ when ACP::Transport::ResponseError then reply(nil, ACP::Transport::Result.error(message))
82
+ else route(message, requests, notifications)
83
+ end
84
+ end
85
+
86
+ # @rbs message: Hash[String, untyped]
87
+ # @rbs requests: Hash[String, _Handler]
88
+ # @rbs notifications: Hash[String, _NotificationHandler]
89
+ # @rbs return: void
90
+ def route(message, requests, notifications)
91
+ method = message['method']
92
+ error = message['error']
93
+ if method.is_a?(String) && message.key?('id')
94
+ serve(requests[method], message['id'], message['params'])
95
+ elsif method.is_a?(String)
96
+ # Run on the reader thread so notifications (session/update) keep their
97
+ # order; a JSON-RPC notification has no reply to carry a handler error.
98
+ handler = notifications[method]
99
+ quietly { handler.call(message['params']) } if handler
100
+ elsif message.key?('result')
101
+ settle(message['id'], ACP::Transport::Result.ok(message['result']))
102
+ elsif error.is_a?(Hash) && error['code'].is_a?(Integer) && error['message'].is_a?(String)
103
+ code, text, data = error.values_at('code', 'message', 'data')
104
+ response_error = ACP::Transport::ResponseError.new(code:, message: text, data:)
105
+ settle(message['id'], ACP::Transport::Result.error(response_error))
106
+ else
107
+ reply(nil, ACP::Transport::Result.error(INVALID_REQUEST))
108
+ end
109
+ end
110
+
111
+ # @rbs line: String
112
+ # @rbs return: Hash[String, untyped] | ACP::Transport::ResponseError
113
+ def parse(line)
114
+ return PARSE_ERROR unless line.valid_encoding?
115
+
116
+ message = JSON.parse(line)
117
+ message.is_a?(Hash) ? message : INVALID_REQUEST
118
+ rescue JSON::ParserError
119
+ PARSE_ERROR
120
+ end
121
+
122
+ # @rbs handler: _Handler?
123
+ # @rbs id: untyped
124
+ # @rbs params: untyped
125
+ # @rbs return: void
126
+ def serve(handler, id, params)
127
+ Thread.new do
128
+ outcome = handler ? invoke(handler, params) : ACP::Transport::Result.error(METHOD_NOT_FOUND)
129
+ case outcome
130
+ when ACP::Transport::Reply
131
+ reply(id, outcome.result)
132
+ quietly(&outcome.after)
133
+ else reply(id, outcome)
134
+ end
135
+ end
136
+ end
137
+
138
+ # For code with no reply to carry an error: a notification handler, or a
139
+ # Reply's after once the reply is on the wire. An exception must not kill
140
+ # the reader thread or print a thread report.
141
+ #
142
+ # @rbs &block: () -> void
143
+ # @rbs return: void
144
+ def quietly
145
+ yield
146
+ rescue StandardError
147
+ nil
148
+ end
149
+
150
+ # Handlers are application code at the protocol boundary: an exception
151
+ # becomes an error response instead of killing the thread serving it.
152
+ #
153
+ # @rbs handler: _Handler
154
+ # @rbs params: untyped
155
+ # @rbs return: ACP::Transport::Result | ACP::Transport::Reply
156
+ def invoke(handler, params)
157
+ handler.call(params)
158
+ rescue StandardError => e
159
+ ACP::Transport::Result.error(ACP::Transport::ResponseError.new(code: INTERNAL_ERROR, message: e.message))
160
+ end
161
+
162
+ # @rbs id: untyped
163
+ # @rbs result: ACP::Transport::Result
164
+ # @rbs return: void
165
+ def reply(id, result)
166
+ error = result.error
167
+ write({ 'jsonrpc' => '2.0', 'id' => id }.merge(error ? { 'error' => error.to_h } : { 'result' => result.value }))
168
+ end
169
+
170
+ # @rbs queue: Thread::Queue
171
+ # @rbs return: Integer?
172
+ def register(queue)
173
+ @lock.synchronize do
174
+ next if @closed
175
+
176
+ id = @next_id += 1
177
+ @pending[id] = queue
178
+ id
179
+ end
180
+ end
181
+
182
+ # @rbs id: untyped
183
+ # @rbs result: ACP::Transport::Result
184
+ # @rbs return: void
185
+ def settle(id, result)
186
+ @lock.synchronize { @pending.delete(id) }&.push(result)
187
+ end
188
+
189
+ # @rbs return: void
190
+ def close
191
+ @lock.synchronize do
192
+ @closed = true
193
+ @pending.each_value(&:close)
194
+ @pending.clear
195
+ end
196
+ end
197
+
198
+ # @rbs message: Hash[String, untyped]
199
+ # @rbs return: void
200
+ def write(message)
201
+ line = "#{JSON.generate(message)}\n"
202
+ @write_lock.synchronize do
203
+ @output.write(line)
204
+ @output.flush
205
+ end
206
+ end
207
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ACP::Transport
4
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.json. Do not edit.
4
+
5
+ class ACP::Types::AgentAuthCapabilities
6
+ # @dynamic logout
7
+ attr_reader :logout #: ACP::Types::LogoutCapabilities?
8
+
9
+ # @dynamic meta
10
+ attr_reader :meta #: Hash[String, untyped]?
11
+
12
+ # @rbs logout: ACP::Types::LogoutCapabilities?
13
+ # @rbs meta: Hash[String, untyped]?
14
+ # @rbs return: void
15
+ def initialize(logout: nil, meta: nil)
16
+ @logout = logout
17
+ @meta = meta
18
+ freeze
19
+ end
20
+
21
+ # @rbs hash: Hash[String, untyped]
22
+ # @rbs return: ACP::Types::AgentAuthCapabilities
23
+ def self.from_h(hash)
24
+ new(logout: hash['logout']&.then { |value| ACP::Types::LogoutCapabilities.from_h(value) }, meta: hash['_meta'])
25
+ end
26
+
27
+ # @rbs return: Hash[String, untyped]
28
+ def to_h
29
+ { 'logout' => logout&.to_h, '_meta' => meta }.compact
30
+ end
31
+ end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.json. Do not edit.
4
+
5
+ class ACP::Types::AgentCapabilities
6
+ # @dynamic load_session
7
+ attr_reader :load_session #: bool?
8
+
9
+ # @dynamic prompt_capabilities
10
+ attr_reader :prompt_capabilities #: ACP::Types::PromptCapabilities?
11
+
12
+ # @dynamic mcp_capabilities
13
+ attr_reader :mcp_capabilities #: ACP::Types::McpCapabilities?
14
+
15
+ # @dynamic session_capabilities
16
+ attr_reader :session_capabilities #: ACP::Types::SessionCapabilities?
17
+
18
+ # @dynamic auth
19
+ attr_reader :auth #: ACP::Types::AgentAuthCapabilities?
20
+
21
+ # @dynamic meta
22
+ attr_reader :meta #: Hash[String, untyped]?
23
+
24
+ # @rbs load_session: bool?
25
+ # @rbs prompt_capabilities: ACP::Types::PromptCapabilities?
26
+ # @rbs mcp_capabilities: ACP::Types::McpCapabilities?
27
+ # @rbs session_capabilities: ACP::Types::SessionCapabilities?
28
+ # @rbs auth: ACP::Types::AgentAuthCapabilities?
29
+ # @rbs meta: Hash[String, untyped]?
30
+ # @rbs return: void
31
+ def initialize(
32
+ load_session: nil,
33
+ prompt_capabilities: nil,
34
+ mcp_capabilities: nil,
35
+ session_capabilities: nil,
36
+ auth: nil,
37
+ meta: nil
38
+ )
39
+ @load_session = load_session
40
+ @prompt_capabilities = prompt_capabilities
41
+ @mcp_capabilities = mcp_capabilities
42
+ @session_capabilities = session_capabilities
43
+ @auth = auth
44
+ @meta = meta
45
+ freeze
46
+ end
47
+
48
+ # @rbs hash: Hash[String, untyped]
49
+ # @rbs return: ACP::Types::AgentCapabilities
50
+ def self.from_h(hash)
51
+ new(
52
+ load_session: hash['loadSession'],
53
+ prompt_capabilities: hash['promptCapabilities']&.then { |value| ACP::Types::PromptCapabilities.from_h(value) },
54
+ mcp_capabilities: hash['mcpCapabilities']&.then { |value| ACP::Types::McpCapabilities.from_h(value) },
55
+ session_capabilities: hash['sessionCapabilities']&.then { |value| ACP::Types::SessionCapabilities.from_h(value) },
56
+ auth: hash['auth']&.then { |value| ACP::Types::AgentAuthCapabilities.from_h(value) },
57
+ meta: hash['_meta']
58
+ )
59
+ end
60
+
61
+ # @rbs return: Hash[String, untyped]
62
+ def to_h
63
+ {
64
+ 'loadSession' => load_session,
65
+ 'promptCapabilities' => prompt_capabilities&.to_h,
66
+ 'mcpCapabilities' => mcp_capabilities&.to_h,
67
+ 'sessionCapabilities' => session_capabilities&.to_h,
68
+ 'auth' => auth&.to_h,
69
+ '_meta' => meta
70
+ }.compact
71
+ end
72
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.json. Do not edit.
4
+
5
+ class ACP::Types::Annotations
6
+ # @dynamic audience
7
+ attr_reader :audience #: Array[String]?
8
+
9
+ # @dynamic last_modified
10
+ attr_reader :last_modified #: String?
11
+
12
+ # @dynamic priority
13
+ attr_reader :priority #: Numeric?
14
+
15
+ # @dynamic meta
16
+ attr_reader :meta #: Hash[String, untyped]?
17
+
18
+ # @rbs audience: Array[String]?
19
+ # @rbs last_modified: String?
20
+ # @rbs priority: Numeric?
21
+ # @rbs meta: Hash[String, untyped]?
22
+ # @rbs return: void
23
+ def initialize(audience: nil, last_modified: nil, priority: nil, meta: nil)
24
+ @audience = audience
25
+ @last_modified = last_modified
26
+ @priority = priority
27
+ @meta = meta
28
+ freeze
29
+ end
30
+
31
+ # @rbs hash: Hash[String, untyped]
32
+ # @rbs return: ACP::Types::Annotations
33
+ def self.from_h(hash)
34
+ new(
35
+ audience: hash['audience'],
36
+ last_modified: hash['lastModified'],
37
+ priority: hash['priority'],
38
+ meta: hash['_meta']
39
+ )
40
+ end
41
+
42
+ # @rbs return: Hash[String, untyped]
43
+ def to_h
44
+ { 'audience' => audience, 'lastModified' => last_modified, 'priority' => priority, '_meta' => meta }.compact
45
+ end
46
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.json. Do not edit.
4
+
5
+ class ACP::Types::AudioContent
6
+ # @dynamic annotations
7
+ attr_reader :annotations #: ACP::Types::Annotations?
8
+
9
+ # @dynamic data
10
+ attr_reader :data #: String
11
+
12
+ # @dynamic mime_type
13
+ attr_reader :mime_type #: String
14
+
15
+ # @dynamic meta
16
+ attr_reader :meta #: Hash[String, untyped]?
17
+
18
+ # @rbs annotations: ACP::Types::Annotations?
19
+ # @rbs data: String
20
+ # @rbs mime_type: String
21
+ # @rbs meta: Hash[String, untyped]?
22
+ # @rbs return: void
23
+ def initialize(data:, mime_type:, annotations: nil, meta: nil)
24
+ @annotations = annotations
25
+ @data = data
26
+ @mime_type = mime_type
27
+ @meta = meta
28
+ freeze
29
+ end
30
+
31
+ # @rbs hash: Hash[String, untyped]
32
+ # @rbs return: ACP::Types::AudioContent
33
+ def self.from_h(hash)
34
+ new(
35
+ annotations: hash['annotations']&.then { |value| ACP::Types::Annotations.from_h(value) },
36
+ data: hash.fetch('data'),
37
+ mime_type: hash.fetch('mimeType'),
38
+ meta: hash['_meta']
39
+ )
40
+ end
41
+
42
+ # @rbs return: Hash[String, untyped]
43
+ def to_h
44
+ { 'data' => data, 'mimeType' => mime_type, 'annotations' => annotations&.to_h, '_meta' => meta }.compact
45
+ end
46
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.json. Do not edit.
4
+
5
+ class ACP::Types::AuthCapabilities
6
+ # @dynamic terminal
7
+ attr_reader :terminal #: bool?
8
+
9
+ # @dynamic meta
10
+ attr_reader :meta #: Hash[String, untyped]?
11
+
12
+ # @rbs terminal: bool?
13
+ # @rbs meta: Hash[String, untyped]?
14
+ # @rbs return: void
15
+ def initialize(terminal: nil, meta: nil)
16
+ @terminal = terminal
17
+ @meta = meta
18
+ freeze
19
+ end
20
+
21
+ # @rbs hash: Hash[String, untyped]
22
+ # @rbs return: ACP::Types::AuthCapabilities
23
+ def self.from_h(hash)
24
+ new(terminal: hash['terminal'], meta: hash['_meta'])
25
+ end
26
+
27
+ # @rbs return: Hash[String, untyped]
28
+ def to_h
29
+ { 'terminal' => terminal, '_meta' => meta }.compact
30
+ end
31
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.json. Do not edit.
4
+
5
+ class ACP::Types::AuthMethod::Terminal
6
+ # @dynamic id
7
+ attr_reader :id #: String
8
+
9
+ # @dynamic name
10
+ attr_reader :name #: String
11
+
12
+ # @dynamic description
13
+ attr_reader :description #: String?
14
+
15
+ # @dynamic args
16
+ attr_reader :args #: Array[String]?
17
+
18
+ # @dynamic env
19
+ attr_reader :env #: Hash[String, String]?
20
+
21
+ # @dynamic meta
22
+ attr_reader :meta #: Hash[String, untyped]?
23
+
24
+ # @rbs id: String
25
+ # @rbs name: String
26
+ # @rbs description: String?
27
+ # @rbs args: Array[String]?
28
+ # @rbs env: Hash[String, String]?
29
+ # @rbs meta: Hash[String, untyped]?
30
+ # @rbs return: void
31
+ def initialize(id:, name:, description: nil, args: nil, env: nil, meta: nil)
32
+ @id = id
33
+ @name = name
34
+ @description = description
35
+ @args = args
36
+ @env = env
37
+ @meta = meta
38
+ freeze
39
+ end
40
+
41
+ # @rbs hash: Hash[String, untyped]
42
+ # @rbs return: ACP::Types::AuthMethod::Terminal
43
+ def self.from_h(hash)
44
+ new(
45
+ id: hash.fetch('id'),
46
+ name: hash.fetch('name'),
47
+ description: hash['description'],
48
+ args: hash['args'],
49
+ env: hash['env'],
50
+ meta: hash['_meta']
51
+ )
52
+ end
53
+
54
+ # @rbs return: Hash[String, untyped]
55
+ def to_h
56
+ {
57
+ 'type' => 'terminal',
58
+ 'id' => id,
59
+ 'name' => name,
60
+ 'description' => description,
61
+ 'args' => args,
62
+ 'env' => env,
63
+ '_meta' => meta
64
+ }.compact
65
+ end
66
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.json. Do not edit.
4
+
5
+ module ACP::Types::AuthMethod
6
+ # @rbs!
7
+ # type t = ACP::Types::AuthMethod::Terminal
8
+ # | ACP::Types::AuthMethodAgent
9
+ # | Hash[String, untyped]
10
+
11
+ # @rbs hash: Hash[String, untyped]
12
+ # @rbs return: t
13
+ def self.from_h(hash)
14
+ case hash['type']
15
+ when 'terminal' then ACP::Types::AuthMethod::Terminal.from_h(hash)
16
+ when nil then ACP::Types::AuthMethodAgent.from_h(hash)
17
+ else hash
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.json. Do not edit.
4
+
5
+ class ACP::Types::AuthMethodAgent
6
+ # @dynamic id
7
+ attr_reader :id #: String
8
+
9
+ # @dynamic name
10
+ attr_reader :name #: String
11
+
12
+ # @dynamic description
13
+ attr_reader :description #: String?
14
+
15
+ # @dynamic meta
16
+ attr_reader :meta #: Hash[String, untyped]?
17
+
18
+ # @rbs id: String
19
+ # @rbs name: String
20
+ # @rbs description: String?
21
+ # @rbs meta: Hash[String, untyped]?
22
+ # @rbs return: void
23
+ def initialize(id:, name:, description: nil, meta: nil)
24
+ @id = id
25
+ @name = name
26
+ @description = description
27
+ @meta = meta
28
+ freeze
29
+ end
30
+
31
+ # @rbs hash: Hash[String, untyped]
32
+ # @rbs return: ACP::Types::AuthMethodAgent
33
+ def self.from_h(hash)
34
+ new(id: hash.fetch('id'), name: hash.fetch('name'), description: hash['description'], meta: hash['_meta'])
35
+ end
36
+
37
+ # @rbs return: Hash[String, untyped]
38
+ def to_h
39
+ { 'id' => id, 'name' => name, 'description' => description, '_meta' => meta }.compact
40
+ end
41
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.json. Do not edit.
4
+
5
+ class ACP::Types::AuthMethodTerminal
6
+ # @dynamic id
7
+ attr_reader :id #: String
8
+
9
+ # @dynamic name
10
+ attr_reader :name #: String
11
+
12
+ # @dynamic description
13
+ attr_reader :description #: String?
14
+
15
+ # @dynamic args
16
+ attr_reader :args #: Array[String]?
17
+
18
+ # @dynamic env
19
+ attr_reader :env #: Hash[String, String]?
20
+
21
+ # @dynamic meta
22
+ attr_reader :meta #: Hash[String, untyped]?
23
+
24
+ # @rbs id: String
25
+ # @rbs name: String
26
+ # @rbs description: String?
27
+ # @rbs args: Array[String]?
28
+ # @rbs env: Hash[String, String]?
29
+ # @rbs meta: Hash[String, untyped]?
30
+ # @rbs return: void
31
+ def initialize(id:, name:, description: nil, args: nil, env: nil, meta: nil)
32
+ @id = id
33
+ @name = name
34
+ @description = description
35
+ @args = args
36
+ @env = env
37
+ @meta = meta
38
+ freeze
39
+ end
40
+
41
+ # @rbs hash: Hash[String, untyped]
42
+ # @rbs return: ACP::Types::AuthMethodTerminal
43
+ def self.from_h(hash)
44
+ new(
45
+ id: hash.fetch('id'),
46
+ name: hash.fetch('name'),
47
+ description: hash['description'],
48
+ args: hash['args'],
49
+ env: hash['env'],
50
+ meta: hash['_meta']
51
+ )
52
+ end
53
+
54
+ # @rbs return: Hash[String, untyped]
55
+ def to_h
56
+ { 'id' => id, 'name' => name, 'description' => description, 'args' => args, 'env' => env, '_meta' => meta }.compact
57
+ end
58
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.json. Do not edit.
4
+
5
+ class ACP::Types::AuthenticateRequest
6
+ # @dynamic method_id
7
+ attr_reader :method_id #: String
8
+
9
+ # @dynamic meta
10
+ attr_reader :meta #: Hash[String, untyped]?
11
+
12
+ # @rbs method_id: String
13
+ # @rbs meta: Hash[String, untyped]?
14
+ # @rbs return: void
15
+ def initialize(method_id:, meta: nil)
16
+ @method_id = method_id
17
+ @meta = meta
18
+ freeze
19
+ end
20
+
21
+ # @rbs hash: Hash[String, untyped]
22
+ # @rbs return: ACP::Types::AuthenticateRequest
23
+ def self.from_h(hash)
24
+ new(method_id: hash.fetch('methodId'), meta: hash['_meta'])
25
+ end
26
+
27
+ # @rbs return: Hash[String, untyped]
28
+ def to_h
29
+ { 'methodId' => method_id, '_meta' => meta }.compact
30
+ end
31
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by bin/types from schema/schema.json. Do not edit.
4
+
5
+ class ACP::Types::AuthenticateResponse
6
+ # @dynamic meta
7
+ attr_reader :meta #: Hash[String, untyped]?
8
+
9
+ # @rbs meta: Hash[String, untyped]?
10
+ # @rbs return: void
11
+ def initialize(meta: nil)
12
+ @meta = meta
13
+ freeze
14
+ end
15
+
16
+ # @rbs hash: Hash[String, untyped]
17
+ # @rbs return: ACP::Types::AuthenticateResponse
18
+ def self.from_h(hash)
19
+ new(meta: hash['_meta'])
20
+ end
21
+
22
+ # @rbs return: Hash[String, untyped]
23
+ def to_h
24
+ { '_meta' => meta }.compact
25
+ end
26
+ end