OCaml Claude SDK using Eio and Jsont
at main 37 lines 1.3 kB view raw
1(*--------------------------------------------------------------------------- 2 Copyright (c) 2025 Anil Madhavapeddy <anil@recoil.org>. All rights reserved. 3 SPDX-License-Identifier: ISC 4 ---------------------------------------------------------------------------*) 5 6(** Server capabilities and metadata. *) 7 8type t = { 9 version : string; 10 capabilities : string list; 11 commands : string list; 12 output_styles : string list; 13} 14 15let version t = t.version 16let capabilities t = t.capabilities 17let commands t = t.commands 18let output_styles t = t.output_styles 19let has_capability t cap = List.mem cap t.capabilities 20let supports_hooks t = has_capability t "hooks" 21let supports_structured_output t = has_capability t "structured-output" 22 23let of_proto (proto : Proto.Control.Server_info.t) : t = 24 { 25 version = Proto.Control.Server_info.version proto; 26 capabilities = Proto.Control.Server_info.capabilities proto; 27 commands = Proto.Control.Server_info.commands proto; 28 output_styles = Proto.Control.Server_info.output_styles proto; 29 } 30 31let of_sdk_control (sdk : Sdk_control.Server_info.t) : t = 32 { 33 version = Sdk_control.Server_info.version sdk; 34 capabilities = Sdk_control.Server_info.capabilities sdk; 35 commands = Sdk_control.Server_info.commands sdk; 36 output_styles = Sdk_control.Server_info.output_styles sdk; 37 }