OCaml HTML5 parser/serialiser based on Python's JustHTML

Add Opus 4.5 and 4.1 model types, use Opus 4.5 in poe

Update ocaml-claudeio bindings with new Opus model variants from the
Python SDK: Opus_4_5 (claude-opus-4-5) and Opus_4_1 (claude-opus-4-1).
Switch poe bot to use Opus 4.5 for both message handling and changelog
generation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

+20 -2
+6
ocaml-claudeio/lib/model.ml
··· 7 7 [ `Sonnet_4_5 8 8 | `Sonnet_4 9 9 | `Sonnet_3_5 10 + | `Opus_4_5 11 + | `Opus_4_1 10 12 | `Opus_4 11 13 | `Haiku_4 12 14 | `Custom of string ] ··· 15 17 | `Sonnet_4_5 -> "claude-sonnet-4-5" 16 18 | `Sonnet_4 -> "claude-sonnet-4" 17 19 | `Sonnet_3_5 -> "claude-sonnet-3-5" 20 + | `Opus_4_5 -> "claude-opus-4-5" 21 + | `Opus_4_1 -> "claude-opus-4-1" 18 22 | `Opus_4 -> "claude-opus-4" 19 23 | `Haiku_4 -> "claude-haiku-4" 20 24 | `Custom s -> s ··· 23 27 | "claude-sonnet-4-5" -> `Sonnet_4_5 24 28 | "claude-sonnet-4" -> `Sonnet_4 25 29 | "claude-sonnet-3-5" -> `Sonnet_3_5 30 + | "claude-opus-4-5" -> `Opus_4_5 31 + | "claude-opus-4-1" -> `Opus_4_1 26 32 | "claude-opus-4" -> `Opus_4 27 33 | "claude-haiku-4" -> `Haiku_4 28 34 | s -> `Custom s
+3
ocaml-claudeio/lib/model.mli
··· 13 13 [ `Sonnet_4_5 (** claude-sonnet-4-5 - Most recent Sonnet model *) 14 14 | `Sonnet_4 (** claude-sonnet-4 - Sonnet 4 model *) 15 15 | `Sonnet_3_5 (** claude-sonnet-3-5 - Sonnet 3.5 model *) 16 + | `Opus_4_5 (** claude-opus-4-5 - Most recent Opus model *) 17 + | `Opus_4_1 (** claude-opus-4-1 - Opus 4.1 model *) 16 18 | `Opus_4 (** claude-opus-4 - Opus 4 model for complex tasks *) 17 19 | `Haiku_4 (** claude-haiku-4 - Fast, cost-effective Haiku model *) 18 20 | `Custom of string (** Custom model string for future/unknown models *) ] ··· 23 25 24 26 Examples: 25 27 - [`Sonnet_4_5] becomes "claude-sonnet-4-5" 28 + - [`Opus_4_5] becomes "claude-opus-4-5" 26 29 - [`Opus_4] becomes "claude-opus-4" 27 30 - [`Custom "my-model"] becomes "my-model" *) 28 31
+6
ocaml-claudeio/proto/model.ml
··· 7 7 [ `Sonnet_4_5 8 8 | `Sonnet_4 9 9 | `Sonnet_3_5 10 + | `Opus_4_5 11 + | `Opus_4_1 10 12 | `Opus_4 11 13 | `Haiku_4 12 14 | `Custom of string ] ··· 15 17 | `Sonnet_4_5 -> "claude-sonnet-4-5" 16 18 | `Sonnet_4 -> "claude-sonnet-4" 17 19 | `Sonnet_3_5 -> "claude-sonnet-3-5" 20 + | `Opus_4_5 -> "claude-opus-4-5" 21 + | `Opus_4_1 -> "claude-opus-4-1" 18 22 | `Opus_4 -> "claude-opus-4" 19 23 | `Haiku_4 -> "claude-haiku-4" 20 24 | `Custom s -> s ··· 23 27 | "claude-sonnet-4-5" -> `Sonnet_4_5 24 28 | "claude-sonnet-4" -> `Sonnet_4 25 29 | "claude-sonnet-3-5" -> `Sonnet_3_5 30 + | "claude-opus-4-5" -> `Opus_4_5 31 + | "claude-opus-4-1" -> `Opus_4_1 26 32 | "claude-opus-4" -> `Opus_4 27 33 | "claude-haiku-4" -> `Haiku_4 28 34 | s -> `Custom s
+3
ocaml-claudeio/proto/model.mli
··· 13 13 [ `Sonnet_4_5 (** claude-sonnet-4-5 - Most recent Sonnet model *) 14 14 | `Sonnet_4 (** claude-sonnet-4 - Sonnet 4 model *) 15 15 | `Sonnet_3_5 (** claude-sonnet-3-5 - Sonnet 3.5 model *) 16 + | `Opus_4_5 (** claude-opus-4-5 - Most recent Opus model *) 17 + | `Opus_4_1 (** claude-opus-4-1 - Opus 4.1 model *) 16 18 | `Opus_4 (** claude-opus-4 - Opus 4 model for complex tasks *) 17 19 | `Haiku_4 (** claude-haiku-4 - Fast, cost-effective Haiku model *) 18 20 | `Custom of string (** Custom model string for future/unknown models *) ] ··· 23 25 24 26 Examples: 25 27 - [`Sonnet_4_5] becomes "claude-sonnet-4-5" 28 + - [`Opus_4_5] becomes "claude-opus-4-5" 26 29 - [`Opus_4] becomes "claude-opus-4" 27 30 - [`Custom "my-model"] becomes "my-model" *) 28 31
+1 -1
poe/lib/changelog.ml
··· 84 84 let create_claude_client ~sw ~proc ~clock = 85 85 let options = 86 86 Claude.Options.default 87 - |> Claude.Options.with_model `Opus_4 87 + |> Claude.Options.with_model `Opus_4_5 88 88 |> Claude.Options.with_permission_mode Claude.Permissions.Mode.Bypass_permissions 89 89 |> Claude.Options.with_allowed_tools [] 90 90 in
+1 -1
poe/lib/handler.ml
··· 56 56 let create_claude_client env = 57 57 let options = 58 58 Claude.Options.default 59 - |> Claude.Options.with_model `Sonnet_4_5 59 + |> Claude.Options.with_model `Opus_4_5 60 60 |> Claude.Options.with_permission_mode Claude.Permissions.Mode.Bypass_permissions 61 61 |> Claude.Options.with_allowed_tools [ "Read"; "Glob"; "Grep" ] 62 62 |> Claude.Options.with_append_system_prompt