mirror of
https://github.com/openai/codex.git
synced 2026-04-27 16:15:09 +00:00
This brings us into better alignment with the JSON schema subset that is supported in <https://developers.openai.com/api/docs/guides/structured-outputs#supported-schemas>, and also allows us to render richer function signatures in code mode (e.g., anyOf{null, OtherObjectType})
44 lines
1.1 KiB
Rust
44 lines
1.1 KiB
Rust
use super::ToolDefinition;
|
|
use crate::JsonSchema;
|
|
use pretty_assertions::assert_eq;
|
|
use std::collections::BTreeMap;
|
|
|
|
fn tool_definition() -> ToolDefinition {
|
|
ToolDefinition {
|
|
name: "lookup_order".to_string(),
|
|
description: "Look up an order".to_string(),
|
|
input_schema: JsonSchema::object(
|
|
BTreeMap::new(),
|
|
/*required*/ None,
|
|
/*additional_properties*/ None,
|
|
),
|
|
output_schema: Some(serde_json::json!({
|
|
"type": "object",
|
|
})),
|
|
defer_loading: false,
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn renamed_overrides_name_only() {
|
|
assert_eq!(
|
|
tool_definition().renamed("mcp__orders__lookup_order".to_string()),
|
|
ToolDefinition {
|
|
name: "mcp__orders__lookup_order".to_string(),
|
|
..tool_definition()
|
|
}
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn into_deferred_drops_output_schema_and_sets_defer_loading() {
|
|
assert_eq!(
|
|
tool_definition().into_deferred(),
|
|
ToolDefinition {
|
|
output_schema: None,
|
|
defer_loading: true,
|
|
..tool_definition()
|
|
}
|
|
);
|
|
}
|