From 13e4f2ddd937be27b6fb8feae6dd5874417b9f16 Mon Sep 17 00:00:00 2001 From: Jean Mertz Date: Tue, 3 Feb 2026 10:48:20 +0100 Subject: [PATCH 1/6] fix(config): Use correct `Deserialize` impl for enums Since the latest version of `schematic`, untagged enums have a custom `Deserialize` implementation that conflicts with our `with` attributes. The new `skip_custom_untagged_enum_deserialize_impl` attribute ensures our `with` attributes are used instead. Additionally, the new `literal` attribute makes sure that `schematic`'s schema generation uses string literals for enum variants, as opposed to the default `null` for unit variants in enums. Signed-off-by: Jean Mertz --- Cargo.lock | 277 +++++++++++++---------- crates/jp_config/src/model/id.rs | 2 +- crates/jp_config/src/model/parameters.rs | 6 +- 3 files changed, 160 insertions(+), 125 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c212175e..4e03c41c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -185,7 +185,7 @@ dependencies = [ "secrecy", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.18", "tokio", "tokio-stream", "tracing", @@ -651,15 +651,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "convert_case" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "convert_case" version = "0.10.0" @@ -851,6 +842,16 @@ dependencies = [ "darling_macro 0.21.3", ] +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + [[package]] name = "darling_core" version = "0.20.11" @@ -879,6 +880,19 @@ dependencies = [ "syn", ] +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + [[package]] name = "darling_macro" version = "0.20.11" @@ -901,6 +915,17 @@ dependencies = [ "syn", ] +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core 0.23.0", + "quote", + "syn", +] + [[package]] name = "data-encoding" version = "2.9.0" @@ -1394,7 +1419,7 @@ dependencies = [ "reqwest-eventsource", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.18", "tokio", ] @@ -1648,7 +1673,7 @@ dependencies = [ "similar", "stringmetrics", "tabwriter", - "thiserror 2.0.16", + "thiserror 2.0.18", "tokio", "tracing", "url", @@ -1894,9 +1919,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", "hashbrown 0.16.1", @@ -1971,12 +1996,6 @@ dependencies = [ "serde", ] -[[package]] -name = "is_ci" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" - [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -2163,17 +2182,18 @@ dependencies = [ "relative-path", "reqwest", "schemars 1.0.4", + "schematic", "serde", "serde_json", "serial_test", "strip-ansi-escapes", "termimad", "test-log", - "thiserror 2.0.16", + "thiserror 2.0.18", "time", "timeago", "tokio", - "toml 0.9.7", + "toml 0.9.11+spec-1.1.0", "tracing", "tracing-subscriber", "url", @@ -2208,8 +2228,8 @@ dependencies = [ "serde_yaml", "serial_test", "test-log", - "thiserror 2.0.16", - "toml 0.9.7", + "thiserror 2.0.18", + "toml 0.9.11+spec-1.1.0", "tracing", "url", "which", @@ -2229,7 +2249,7 @@ dependencies = [ "serde", "serde_json", "test-log", - "thiserror 2.0.16", + "thiserror 2.0.18", "time", "tracing", ] @@ -2251,7 +2271,7 @@ version = "0.1.0" dependencies = [ "serde", "test-log", - "thiserror 2.0.16", + "thiserror 2.0.18", "time", ] @@ -2298,7 +2318,7 @@ dependencies = [ "serde", "serde_json", "test-log", - "thiserror 2.0.16", + "thiserror 2.0.18", "time", "tokio", "tokio-stream", @@ -2321,7 +2341,7 @@ dependencies = [ "serde_json", "sha1", "sha2", - "thiserror 2.0.16", + "thiserror 2.0.18", "tokio", "tracing", "which", @@ -2339,7 +2359,7 @@ dependencies = [ "serde", "serde_json", "test-log", - "thiserror 2.0.16", + "thiserror 2.0.18", "time", "tokio", "tokio-util", @@ -2378,9 +2398,9 @@ dependencies = [ "serde", "serde_json", "test-log", - "thiserror 2.0.16", + "thiserror 2.0.18", "time", - "toml 0.9.7", + "toml 0.9.11+spec-1.1.0", "tracing", ] @@ -2453,7 +2473,7 @@ dependencies = [ "jp_tombmap", "serde", "test-log", - "thiserror 2.0.16", + "thiserror 2.0.18", "time", "tracing", ] @@ -2468,6 +2488,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json-strip-comments" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25376d12b2f6ae53f986f86e2a808a56af03d72284ae24fc35a2e290d09ee3c3" +dependencies = [ + "memchr", +] + [[package]] name = "jsonschema" version = "0.37.4" @@ -2944,7 +2973,7 @@ dependencies = [ "serde", "serde_json", "static_assertions", - "thiserror 2.0.16", + "thiserror 2.0.18", "tokio", "tokio-stream", "url", @@ -3023,7 +3052,7 @@ dependencies = [ "reqwest-eventsource", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.18", ] [[package]] @@ -3063,12 +3092,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" -[[package]] -name = "owo-colors" -version = "4.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e" - [[package]] name = "parking" version = "2.2.1" @@ -3145,7 +3168,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21e0a3a33733faeaf8651dfee72dd0f388f0c8e5ad496a3478fa5a922f49cfa8" dependencies = [ "memchr", - "thiserror 2.0.16", + "thiserror 2.0.18", "ucd-trie", ] @@ -3269,7 +3292,7 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ @@ -3301,7 +3324,7 @@ dependencies = [ "rustc-hash 2.1.1", "rustls", "socket2", - "thiserror 2.0.16", + "thiserror 2.0.18", "tokio", "tracing", "web-time", @@ -3322,7 +3345,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.16", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -3339,14 +3362,14 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" dependencies = [ "proc-macro2", ] @@ -3423,7 +3446,7 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.16", + "thiserror 2.0.18", ] [[package]] @@ -3597,7 +3620,7 @@ dependencies = [ "schemars 0.8.22", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.18", "tokio", "tokio-util", "tracing", @@ -3736,7 +3759,7 @@ dependencies = [ "hashlink", "ordered-float", "saphyr-parser", - "thiserror 2.0.16", + "thiserror 2.0.18", ] [[package]] @@ -3745,7 +3768,7 @@ version = "0.0.6" source = "git+https://github.com/JeanMertz/saphyr?branch=jean%2Ffix-multinewline-endings#b7dff7bf64516936b4ffc3ac76160138eb325118" dependencies = [ "arraydeque", - "thiserror 2.0.16", + "thiserror 2.0.18", ] [[package]] @@ -3817,30 +3840,32 @@ dependencies = [ [[package]] name = "schematic" -version = "0.18.12" -source = "git+https://github.com/JeanMertz/schematic?branch=merged#533dc9ada5af11a74f44adfe19d7c056a174db32" +version = "0.19.4" +source = "git+https://github.com/JeanMertz/schematic?branch=merged#de733f0586ecef6ccccdcd4ce60b515fd82251bc" dependencies = [ + "convert_case 0.10.0", "indexmap", + "json-strip-comments", "miette", "schematic_macros", "schematic_types", "serde", + "serde-content", "serde_json", "serde_path_to_error", - "serde_yaml", - "starbase_styles", - "thiserror 2.0.16", - "toml 0.9.7", + "thiserror 2.0.18", + "toml 0.9.11+spec-1.1.0", "tracing", + "yaml_serde", ] [[package]] name = "schematic_macros" -version = "0.18.11" -source = "git+https://github.com/JeanMertz/schematic?branch=merged#533dc9ada5af11a74f44adfe19d7c056a174db32" +version = "0.19.3" +source = "git+https://github.com/JeanMertz/schematic?branch=merged#de733f0586ecef6ccccdcd4ce60b515fd82251bc" dependencies = [ - "convert_case 0.8.0", - "darling 0.21.3", + "convert_case 0.10.0", + "darling 0.23.0", "proc-macro2", "quote", "syn", @@ -3848,15 +3873,16 @@ dependencies = [ [[package]] name = "schematic_types" -version = "0.10.6" -source = "git+https://github.com/JeanMertz/schematic?branch=merged#533dc9ada5af11a74f44adfe19d7c056a174db32" +version = "0.11.3" +source = "git+https://github.com/JeanMertz/schematic?branch=merged#de733f0586ecef6ccccdcd4ce60b515fd82251bc" dependencies = [ "indexmap", "relative-path", + "serde", "serde_json", - "serde_yaml", - "toml 0.9.7", + "toml 0.9.11+spec-1.1.0", "url", + "yaml_serde", ] [[package]] @@ -3911,14 +3937,23 @@ checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" -version = "1.0.226" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ "serde_core", "serde_derive", ] +[[package]] +name = "serde-content" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3753ca04f350fa92d00b6146a3555e63c55388c9ef2e11e09bce2ff1c0b509c6" +dependencies = [ + "serde", +] + [[package]] name = "serde-untagged" version = "0.1.9" @@ -3933,18 +3968,18 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.226" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.226" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -3964,16 +3999,16 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "indexmap", "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -4019,9 +4054,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5417783452c2be558477e104686f7de5dae53dba813c28435e0e70f82d9b04ee" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" dependencies = [ "serde_core", ] @@ -4263,17 +4298,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" -[[package]] -name = "starbase_styles" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0349ad67ce08b85bac46bf215e818732609552e2e591e14e5c13ed2f95ccef98" -dependencies = [ - "dirs", - "owo-colors", - "supports-color", -] - [[package]] name = "static_assertions" version = "1.1.0" @@ -4319,20 +4343,11 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "supports-color" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6" -dependencies = [ - "is_ci", -] - [[package]] name = "syn" -version = "2.0.106" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", @@ -4494,11 +4509,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.16", + "thiserror-impl 2.0.18", ] [[package]] @@ -4514,9 +4529,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", @@ -4691,14 +4706,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.7" +version = "0.9.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0" +checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" dependencies = [ "indexmap", "serde_core", - "serde_spanned 1.0.2", - "toml_datetime 0.7.2", + "serde_spanned 1.0.4", + "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "toml_writer", "winnow", @@ -4715,9 +4730,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.2" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ "serde_core", ] @@ -4738,9 +4753,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.3" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ "winnow", ] @@ -4753,9 +4768,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "toml_writer" -version = "1.0.3" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d163a63c116ce562a22cda521fcc4d79152e7aba014456fb5eb442f6d6a10109" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" [[package]] name = "tools" @@ -4842,9 +4857,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -4854,9 +4869,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", @@ -4865,9 +4880,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -5036,14 +5051,15 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] @@ -5566,6 +5582,19 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4de5f056fb9dc8b7908754867544e26145767187aaac5a98495e88ad7cb8a80f" +[[package]] +name = "yaml_serde" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a7f5270edc6fab0529a772a772b3e505dfd883a8de5cc5b464e35fabe586411" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "yansi" version = "1.0.1" @@ -5675,3 +5704,9 @@ dependencies = [ "quote", "syn", ] + +[[package]] +name = "zmij" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439" diff --git a/crates/jp_config/src/model/id.rs b/crates/jp_config/src/model/id.rs index 88e43471..be87ff4f 100644 --- a/crates/jp_config/src/model/id.rs +++ b/crates/jp_config/src/model/id.rs @@ -23,7 +23,7 @@ use crate::{ /// Either a [`ModelIdConfig`] or a named alias for one. #[derive(Debug, Clone, PartialEq, Config)] -#[config(serde(untagged))] +#[config(serde(untagged), skip_custom_untagged_enum_deserialize_impl)] pub enum ModelIdOrAliasConfig { /// A model ID configuration. #[setting(nested, empty)] diff --git a/crates/jp_config/src/model/parameters.rs b/crates/jp_config/src/model/parameters.rs index 322fc239..d1f28881 100644 --- a/crates/jp_config/src/model/parameters.rs +++ b/crates/jp_config/src/model/parameters.rs @@ -138,15 +138,15 @@ mod strings { /// Reasoning configuration. #[derive(Debug, Clone, Copy, PartialEq, Config)] -#[config(serde(untagged))] +#[config(serde(untagged), skip_custom_untagged_enum_deserialize_impl)] pub enum ReasoningConfig { /// Reasoning is disabled, regardless of the model's capabilities. - #[setting(with = "strings::off")] + #[setting(with = "strings::off", literal = "off")] Off, /// Reasoning is enabled with reasonable defaults if the model supports it, /// otherwise disabled. - #[setting(default, with = "strings::auto")] + #[setting(default, with = "strings::auto", literal = "auto")] Auto, /// Reasoning is enabled with custom configuration, unless the model is From b5a3b8c77a3a7ce7d64921f35418b1cd794f70f7 Mon Sep 17 00:00:00 2001 From: Jean Mertz Date: Tue, 3 Feb 2026 11:03:08 +0100 Subject: [PATCH 2/6] fixup! fix(config): Use correct `Deserialize` impl for enums Signed-off-by: Jean Mertz --- Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 4e03c41c..b94487da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3294,7 +3294,7 @@ dependencies = [ name = "proc-macro2" version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] From c081cf6f2f6ad89a286fc2c27d0e9c0fb98550a8 Mon Sep 17 00:00:00 2001 From: Jean Mertz Date: Tue, 3 Feb 2026 12:39:01 +0100 Subject: [PATCH 3/6] fixup! fix(config): Use correct `Deserialize` impl for enums Signed-off-by: Jean Mertz --- Cargo.lock | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b94487da..15bcdfc1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1035,15 +1035,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" -dependencies = [ - "dirs-sys", -] - [[package]] name = "dirs-sys" version = "0.5.0" @@ -2182,7 +2173,6 @@ dependencies = [ "relative-path", "reqwest", "schemars 1.0.4", - "schematic", "serde", "serde_json", "serial_test", @@ -3878,7 +3868,6 @@ source = "git+https://github.com/JeanMertz/schematic?branch=merged#de733f0586ece dependencies = [ "indexmap", "relative-path", - "serde", "serde_json", "toml 0.9.11+spec-1.1.0", "url", @@ -4245,7 +4234,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.16", + "thiserror 2.0.18", "time", ] @@ -4437,7 +4426,7 @@ dependencies = [ "lazy-regex", "minimad", "serde", - "thiserror 2.0.16", + "thiserror 2.0.18", "unicode-width 0.1.14", ] From fc54d5a42c910c63fbc8965cb89903e740eb7621 Mon Sep 17 00:00:00 2001 From: Jean Mertz Date: Tue, 3 Feb 2026 12:43:18 +0100 Subject: [PATCH 4/6] fixup! fix(config): Use correct `Deserialize` impl for enums Signed-off-by: Jean Mertz --- crates/jp_config/src/conversation/tool/item.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/jp_config/src/conversation/tool/item.rs b/crates/jp_config/src/conversation/tool/item.rs index e6ec814c..f0a27ec0 100644 --- a/crates/jp_config/src/conversation/tool/item.rs +++ b/crates/jp_config/src/conversation/tool/item.rs @@ -28,7 +28,7 @@ pub struct ToolParameterItemConfig { pub description: Option, /// A list of possible values for the parameter. - #[setting(rename = "enum")] + #[setting(rename = "enum", skip_serializing_if = "Option::is_none")] #[serde(default, rename = "enum", skip_serializing_if = "Vec::is_empty")] pub enumeration: Vec, } From b778ba826fb0968e6a0725ae3db8ec88c5f17f16 Mon Sep 17 00:00:00 2001 From: Jean Mertz Date: Tue, 3 Feb 2026 12:55:52 +0100 Subject: [PATCH 5/6] fixup! fix(config): Use correct `Deserialize` impl for enums Signed-off-by: Jean Mertz --- crates/jp_config/src/util.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/jp_config/src/util.rs b/crates/jp_config/src/util.rs index 10f09e64..8bf28e61 100644 --- a/crates/jp_config/src/util.rs +++ b/crates/jp_config/src/util.rs @@ -658,7 +658,7 @@ mod tests { file: "config.ini", data: "", arg: "config.ini", - want: Err("Unsupported format for"), + want: Err("no matching source format for extension ini"), }), ]; @@ -672,8 +672,8 @@ mod tests { assert!(partial.is_err(), "failed case: {name}"); let actual = partial.unwrap_err().to_string(); assert!( - actual.starts_with(err), - "failed case: {name}, expected error '{actual}' to start with '{err}'" + actual.contains(err), + "failed case: {name}, expected error '{actual}' to contain '{err}'" ); continue; } From b65790a25161c23e7882c7bee91a566f803a3056 Mon Sep 17 00:00:00 2001 From: Jean Mertz Date: Tue, 3 Feb 2026 12:56:50 +0100 Subject: [PATCH 6/6] fixup! fix(config): Use correct `Deserialize` impl for enums Signed-off-by: Jean Mertz --- crates/jp_config/src/conversation/tool/style.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crates/jp_config/src/conversation/tool/style.rs b/crates/jp_config/src/conversation/tool/style.rs index ced2fc65..ca1848f3 100644 --- a/crates/jp_config/src/conversation/tool/style.rs +++ b/crates/jp_config/src/conversation/tool/style.rs @@ -277,16 +277,19 @@ pub enum ParametersStyle { /// A JSON representation of the tool call parameters. #[default] #[serde(with = "strings::json")] + #[schema(literal = "json")] Json, /// Function call syntax. /// /// e.g. `tool_name(arg1 = "value", arg2 = 123)`. #[serde(with = "strings::function_call")] + #[schema(literal = "function_call")] FunctionCall, /// No parameters are displayed. #[serde(with = "strings::off")] + #[schema(literal = "off")] Off, /// A custom command to format how the tool call parameters are displayed in