OCaml Claude SDK using Eio and Jsont
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 }