From 80de3acc18e058f649c3b25ce617f8869f038670 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 25 Aug 2026 05:13:56 +0200 Subject: [PATCH] Admit additional connector callers --- src/main.rs | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 65ca37a..c926a6c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,7 @@ use std::path::PathBuf; use codex_connector::{CodexCallerConfig, CodexDaemonConfig}; -const USAGE: &str = "usage:\n codex-connector --config PATH.cc\n codex-connector --initialize-single-caller-config PATH.cc BIND CODEX_EXECUTABLE CODEX_SHA256 CODEX_HOME REPLAY_STORE CALLER_RUNTIME_ID CONNECTION_KEY_FILE CONNECTION_KEY_EPOCH ALLOWED_MODEL MAX_CONCURRENT_REQUESTS MAX_PAYLOAD_BYTES MAX_OUTPUT_TOKENS\n codex-connector --enroll-provider-health-identity PATH.cc\n codex-connector --provider-health-public-key PATH.cc"; +const USAGE: &str = "usage:\n codex-connector --config PATH.cc\n codex-connector --initialize-single-caller-config PATH.cc BIND CODEX_EXECUTABLE CODEX_SHA256 CODEX_HOME REPLAY_STORE CALLER_RUNTIME_ID CONNECTION_KEY_FILE CONNECTION_KEY_EPOCH ALLOWED_MODEL MAX_CONCURRENT_REQUESTS MAX_PAYLOAD_BYTES MAX_OUTPUT_TOKENS\n codex-connector --admit-caller-config SOURCE.cc DESTINATION.cc CALLER_RUNTIME_ID CONNECTION_KEY_FILE CONNECTION_KEY_EPOCH ALLOWED_MODEL MAX_CONCURRENT_REQUESTS MAX_PAYLOAD_BYTES MAX_OUTPUT_TOKENS\n codex-connector --enroll-provider-health-identity PATH.cc\n codex-connector --provider-health-public-key PATH.cc"; fn main() { let args = std::env::args_os().skip(1).collect::>(); @@ -41,6 +41,16 @@ fn main() { } return; } + if args + .first() + .is_some_and(|value| value == "--admit-caller-config") + { + if let Err(error) = admit_caller_config(&args[1..]) { + eprintln!("codex-connector caller admission failed: {error}"); + std::process::exit(2); + } + return; + } let config = match args.as_slice() { [flag, path] if flag == "--config" => PathBuf::from(path), _ => { @@ -54,6 +64,51 @@ fn main() { } } +fn admit_caller_config(args: &[OsString]) -> Result<(), String> { + let [ + source, + destination, + caller_runtime_id, + connection_key_file, + connection_key_epoch, + allowed_model, + max_concurrent_requests, + max_payload_bytes, + max_output_tokens, + ] = args + else { + return Err("expected exactly nine caller-admission values".to_string()); + }; + let mut config = codex_connector::load_daemon_config(&PathBuf::from(source)) + .map_err(|error| error.to_string())?; + let caller_runtime_id = os_text(caller_runtime_id, "caller runtime")?; + if config + .callers + .iter() + .any(|caller| caller.caller_runtime_id == caller_runtime_id) + { + return Err(format!("caller {caller_runtime_id} is already admitted")); + } + let caller = CodexCallerConfig { + caller_runtime_id, + connection_key_file: PathBuf::from(connection_key_file), + connection_key_epoch: parse_number(connection_key_epoch, "connection key epoch")?, + allowed_models: vec![os_text(allowed_model, "allowed model")?], + max_concurrent_requests: parse_number(max_concurrent_requests, "max concurrent requests")?, + max_payload_bytes: parse_number(max_payload_bytes, "max payload bytes")?, + max_output_tokens: parse_number(max_output_tokens, "max output tokens")?, + }; + config.max_frame_bytes = config + .max_frame_bytes + .max(caller.max_payload_bytes.saturating_add(4096)); + config.max_connections = config + .max_connections + .max(caller.max_concurrent_requests.max(8)); + config.callers.push(caller); + codex_connector::write_daemon_config(&PathBuf::from(destination), &config) + .map_err(|error| error.to_string()) +} + fn initialize_single_caller_config(args: &[OsString]) -> Result<(), String> { let [ path,