Codex Handbook
core/src/tools/handlers/get_context_remaining_spec.rs 36 lines
use codex_tools::JsonSchema;use codex_tools::ResponsesApiTool;use codex_tools::ToolSpec;use serde_json::Value;use serde_json::json;use std::collections::BTreeMap;pub(crate) const GET_CONTEXT_REMAINING_TOOL_NAME: &str = "get_context_remaining";pub fn create_get_context_remaining_tool() -> ToolSpec {    ToolSpec::Function(ResponsesApiTool {        name: GET_CONTEXT_REMAINING_TOOL_NAME.to_string(),        description: "Get the remaining tokens in the current context window.".to_string(),        strict: false,        defer_loading: None,        parameters: JsonSchema::object(BTreeMap::new(), /*required*/ None, Some(false.into())),        output_schema: Some(get_context_remaining_output_schema()),    })}fn get_context_remaining_output_schema() -> Value {    json!({        "type": "object",        "properties": {            "tokens_left": {                "anyOf": [                    { "type": "integer" },                    { "type": "null" }                ],                "description": "Remaining tokens in the current context window, or null when unavailable."            }        },        "required": ["tokens_left"],        "additionalProperties": false    })}