mirror of
https://github.com/openai/codex.git
synced 2026-10-23 18:08:45 +00:00
## Why Local message boards use a fixed database filename. Callers need separate storage for boards that share a session identity. ## What changed - Add `LocalBoardOptions` with a validated `storage_namespace`, and support it when opening, configuring, and permanently deleting boards. - Allow `LocalBoard::with_options` to select storage for its connections. - Store custom namespaces in `message_board_<namespace>_1.sqlite`, while preserving `agent_message_board_1.sqlite` for the default namespace. - Have the agent message board extension select the same namespace for opening, setup, and deletion. ## Testing Add coverage for namespace isolation, reopening saved posts, and avoiding collisions with other runtime databases. Update setup tests to exercise a custom namespace through reopening and deletion. GitOrigin-RevId: a6ea8d171809625edeedc3a8ac3ee2e1bbf1682a
29 lines
1.1 KiB
Rust
29 lines
1.1 KiB
Rust
//! Operator-only setup for local experiments; no administrative agent tools.
|
|
|
|
use codex_agent_message_board_extension::local_board_options;
|
|
use codex_message_board::LocalBoardSetup;
|
|
use codex_message_board::configure_local_board;
|
|
use codex_protocol::SessionId;
|
|
use codex_state::SqliteConfig;
|
|
use std::path::PathBuf;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
let args: Vec<_> = std::env::args_os().collect();
|
|
let [_, sqlite_home, board, input] = args.as_slice() else {
|
|
return Err("Usage: configure_board <sqlite-home> <board-session-id> <setup.json>".into());
|
|
};
|
|
let sqlite = SqliteConfig::from_sqlite_home(
|
|
std::path::absolute(PathBuf::from(sqlite_home))?.try_into()?,
|
|
);
|
|
let board = SessionId::from_string(board.to_str().ok_or("invalid board ID")?)?;
|
|
let input = tokio::fs::read(input).await?;
|
|
if input.len() > 64 * 1024 {
|
|
return Err("setup file exceeds 64 KiB".into());
|
|
}
|
|
let setup: LocalBoardSetup = serde_json::from_slice(&input)?;
|
|
configure_local_board(&sqlite, &local_board_options(), board, setup).await?;
|
|
println!("Configured local board {board}");
|
|
Ok(())
|
|
}
|