You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+4-1Lines changed: 4 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -95,9 +95,12 @@ runtime = "codex"
95
95
model = "gpt-5.4-mini"
96
96
temperature = "0.1"
97
97
max_output_tokens = 4096
98
+
thinking_level = "extra_high"
98
99
```
99
100
100
-
`codex_exec` writes a temporary JSON Schema file, runs `codex exec --output-schema <schema-file> --output-last-message <result-file>`, and returns the parsed result file as `parsed_json`. `claude_code_print` runs `claude -p --output-format json --allowedTools Read,Grep,Glob` and treats schema adherence as prompt-guided JSON rather than strict schema enforcement.
101
+
`thinking_level` is optional and only supported by local CLI-agent drivers. For `codex_exec`, supported values are `low`, `medium`, `high`, `extra_high`, and `xhigh`; both `extra_high` and `xhigh` run Codex with `model_reasoning_effort="xhigh"`. For `claude_code_print`, supported values are Claude Code's native effort names: `low`, `medium`, `high`, `xhigh`, and `max`.
102
+
103
+
`codex_exec` writes a temporary JSON Schema file, runs `codex exec --output-schema <schema-file> --output-last-message <result-file>`, and returns the parsed result file as `parsed_json`. `claude_code_print` runs `claude -p --model <model> --output-format json --input-format text --json-schema <schema> --allowedTools Read,Grep,Glob`, writes the combined prompt to stdin, and returns Claude Code's JSON output as `parsed_json`. When `thinking_level` is present, it is passed as provider-specific CLI configuration. The `--json-schema` argument is included when the inference request metadata contains `json_schema`.
"profile '{profile_name}' field '{field_name}' has unsupported value '{other}' for driver 'codex_exec'; supported values are low, medium, high, extra_high, xhigh"
533
+
))),
534
+
}
535
+
}
536
+
537
+
fnparse_claude_thinking_level(
538
+
profile_name:&str,
539
+
field_name:&str,
540
+
raw:&str,
541
+
) -> Result<ThinkingLevel,ConfigError>{
542
+
match raw {
543
+
"low" => Ok(ThinkingLevel::Low),
544
+
"medium" => Ok(ThinkingLevel::Medium),
545
+
"high" => Ok(ThinkingLevel::High),
546
+
"xhigh" => Ok(ThinkingLevel::ExtraHigh),
547
+
"max" => Ok(ThinkingLevel::Max),
548
+
other => Err(ConfigError::Validation(format!(
549
+
"profile '{profile_name}' field '{field_name}' has unsupported value '{other}' for driver 'claude_code_print'; supported values are low, medium, high, xhigh, max"
550
+
))),
551
+
}
552
+
}
553
+
457
554
fnvalidate_non_empty(
458
555
profile_name:&str,
459
556
field_name:&str,
@@ -802,6 +899,142 @@ mod tests {
802
899
assert_eq!(profile.timeout_secs,300);
803
900
}
804
901
902
+
#[test]
903
+
fnaccepts_codex_thinking_level_extra_high(){
904
+
let config = parse_config(
905
+
r#"
906
+
[inference.runtimes.codex]
907
+
command = "codex"
908
+
startup_timeout_secs = 5
909
+
request_timeout_secs = 300
910
+
911
+
[inference.profiles.local_agent]
912
+
task = "structured_generation"
913
+
driver = "codex_exec"
914
+
runtime = "codex"
915
+
model = "gpt-5.4-mini"
916
+
temperature = "0.1"
917
+
max_output_tokens = 4096
918
+
thinking_level = "extra_high"
919
+
"#,
920
+
&|_| None,
921
+
)
922
+
.expect("config should parse");
923
+
924
+
let profile = config.profile("local_agent").expect("profile should exist");
0 commit comments