My agentic slop goes here. Not intended for anyone else!
1open Claude 2open Eio.Std 3 4let () = Logs.set_reporter (Logs_fmt.reporter ()) 5let () = Logs.set_level (Some Logs.Info) 6 7let run env = 8 Switch.run @@ fun sw -> 9 let process_mgr = Eio.Stdenv.process_mgr env in 10 11 (* Create client with default options *) 12 let options = Options.default in 13 let client = Client.create ~options ~sw ~process_mgr () in 14 15 traceln "=== Dynamic Control Demo ===\n"; 16 17 (* First query with default model *) 18 traceln "1. Initial query with default model"; 19 Client.query client "What model are you?"; 20 21 (* Consume initial messages *) 22 let messages = Client.receive_all client in 23 List.iter (function 24 | Message.Assistant msg -> 25 List.iter (function 26 | Content_block.Text t -> 27 traceln "Assistant: %s" (Content_block.Text.text t) 28 | _ -> () 29 ) (Message.Assistant.content msg) 30 | _ -> () 31 ) messages; 32 33 traceln "\n2. Getting server info..."; 34 (try 35 let info = Client.get_server_info client in 36 traceln "Server version: %s" (Sdk_control.Server_info.version info); 37 traceln "Capabilities: [%s]" 38 (String.concat ", " (Sdk_control.Server_info.capabilities info)); 39 traceln "Commands: [%s]" 40 (String.concat ", " (Sdk_control.Server_info.commands info)); 41 traceln "Output styles: [%s]" 42 (String.concat ", " (Sdk_control.Server_info.output_styles info)); 43 with 44 | Failure msg -> traceln "Failed to get server info: %s" msg 45 | exn -> traceln "Error getting server info: %s" (Printexc.to_string exn)); 46 47 traceln "\n3. Switching to a different model (if available)..."; 48 (try 49 Client.set_model_string client "claude-sonnet-4"; 50 traceln "Model switched successfully"; 51 52 (* Query with new model *) 53 Client.query client "Confirm your model again please."; 54 let messages = Client.receive_all client in 55 List.iter (function 56 | Message.Assistant msg -> 57 List.iter (function 58 | Content_block.Text t -> 59 traceln "Assistant (new model): %s" (Content_block.Text.text t) 60 | _ -> () 61 ) (Message.Assistant.content msg) 62 | _ -> () 63 ) messages; 64 with 65 | Failure msg -> traceln "Failed to switch model: %s" msg 66 | exn -> traceln "Error switching model: %s" (Printexc.to_string exn)); 67 68 traceln "\n4. Changing permission mode..."; 69 (try 70 Client.set_permission_mode client Permissions.Mode.Accept_edits; 71 traceln "Permission mode changed to Accept_edits"; 72 with 73 | Failure msg -> traceln "Failed to change permission mode: %s" msg 74 | exn -> traceln "Error changing permission mode: %s" (Printexc.to_string exn)); 75 76 traceln "\n=== Demo Complete ==="; 77 () 78 79let () = 80 Eio_main.run @@ fun env -> 81 try 82 run env 83 with 84 | Transport.CLI_not_found msg -> 85 traceln "Error: %s" msg; 86 traceln "Make sure the 'claude' CLI is installed and authenticated."; 87 exit 1 88 | exn -> 89 traceln "Unexpected error: %s" (Printexc.to_string exn); 90 Printexc.print_backtrace stderr; 91 exit 1