Phase 6: Testing & Validation - Additional Fixes

Fixed remaining references found during testing:

Rust source code fixes:
- Updated CLI bin_name and override_usage: codex → llmx
- Updated test examples in wsl_paths.rs
- Updated GitHub URLs: github.com/openai/codex → github.com/valknar/llmx
- Updated directory references: ~/.codex/ → ~/.llmx/
- Updated documentation link: "Codex docs" → "LLMX docs"
- Updated feedback URL to point to valknar/llmx repository

Configuration files:
- Regenerated llmx-cli/package-lock.json with updated package name
- Updated pnpm-lock.yaml

Test results:
- TypeScript SDK build: ✓ Success
- TypeScript lint: ✓ Pass
- Rust tests: 12/13 passed (1 locale-specific test failure unrelated to rename)
- Rust release build: In progress

Files changed: 22 files (49 insertions, 46 deletions)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Sebastian Krüger
2025-11-11 15:03:50 +01:00
parent c493ea1347
commit 7be8b00b05
22 changed files with 49 additions and 46 deletions

View File

@@ -142,7 +142,7 @@ pub struct Config {
/// appends one extra argument containing a JSON payload describing the
/// event.
///
/// Example `~/.codex/config.toml` snippet:
/// Example `~/.llmx/config.toml` snippet:
///
/// ```toml
/// notify = ["notify-send", "Codex"]
@@ -178,7 +178,7 @@ pub struct Config {
/// Preferred store for MCP OAuth credentials.
/// keyring: Use an OS-specific keyring service.
/// Credentials stored in the keyring will only be readable by Codex unless the user explicitly grants access via OS-level keyring access.
/// https://github.com/openai/codex/blob/main/codex-rs/rmcp-client/src/oauth.rs#L2
/// https://github.com/valknar/llmx/blob/main/codex-rs/rmcp-client/src/oauth.rs#L2
/// file: CODEX_HOME/.credentials.json
/// This file will be readable to Codex and other applications running as the same user.
/// auto (default): keyring if available, otherwise file.
@@ -197,7 +197,7 @@ pub struct Config {
/// overridden by the `CODEX_HOME` environment variable).
pub codex_home: PathBuf,
/// Settings that govern if and what will be written to `~/.codex/history.jsonl`.
/// Settings that govern if and what will be written to `~/.llmx/history.jsonl`.
pub history: History,
/// Optional URI-based file opener. If set, citations to files in the model
@@ -504,7 +504,7 @@ fn apply_toml_override(root: &mut TomlValue, path: &str, value: TomlValue) {
}
}
/// Base config deserialized from ~/.codex/config.toml.
/// Base config deserialized from ~/.llmx/config.toml.
#[derive(Deserialize, Debug, Clone, Default, PartialEq)]
pub struct ConfigToml {
/// Optional override of model selection.
@@ -571,7 +571,7 @@ pub struct ConfigToml {
/// Preferred backend for storing MCP OAuth credentials.
/// keyring: Use an OS-specific keyring service.
/// https://github.com/openai/codex/blob/main/codex-rs/rmcp-client/src/oauth.rs#L2
/// https://github.com/valknar/llmx/blob/main/codex-rs/rmcp-client/src/oauth.rs#L2
/// file: Use a file in the Codex home directory.
/// auto (default): Use the OS-specific keyring service if available, otherwise use a file.
#[serde(default)]
@@ -594,7 +594,7 @@ pub struct ConfigToml {
#[serde(default)]
pub profiles: HashMap<String, ConfigProfile>,
/// Settings that govern if and what will be written to `~/.codex/history.jsonl`.
/// Settings that govern if and what will be written to `~/.llmx/history.jsonl`.
#[serde(default)]
pub history: Option<History>,

View File

@@ -250,7 +250,7 @@ impl UriBasedFileOpener {
}
}
/// Settings that govern if and what will be written to `~/.codex/history.jsonl`.
/// Settings that govern if and what will be written to `~/.llmx/history.jsonl`.
#[derive(Deserialize, Debug, Clone, PartialEq, Default)]
pub struct History {
/// If true, history entries will not be written to disk.

View File

@@ -20,7 +20,7 @@ use std::sync::OnceLock;
/// However, future users of this should use this with caution as a result.
/// In addition, we want to be confident that this value is used for ALL clients and doing that requires a
/// lot of wiring and it's easy to miss code paths by doing so.
/// See https://github.com/openai/codex/pull/3388/files for an example of what that would look like.
/// See https://github.com/valknar/llmx/pull/3388/files for an example of what that would look like.
/// Finally, we want to make sure this is set for ALL mcp clients without needing to know a special env var
/// or having to set data that they already specified in the mcp initialize request somewhere else.
///

View File

@@ -552,7 +552,7 @@ impl Session {
None
} else {
Some(format!(
"Enable it with `--enable {canonical}` or `[features].{canonical}` in config.toml. See https://github.com/openai/codex/blob/main/docs/config.md#feature-flags for details."
"Enable it with `--enable {canonical}` or `[features].{canonical}` in config.toml. See https://github.com/valknar/llmx/blob/main/docs/config.md#feature-flags for details."
))
};
post_session_configured_events.push(Event {

View File

@@ -1,6 +1,6 @@
//! Persistence layer for the global, append-only *message history* file.
//!
//! The history is stored at `~/.codex/history.jsonl` with **one JSON object per
//! The history is stored at `~/.llmx/history.jsonl` with **one JSON object per
//! line** so that it can be efficiently appended to and parsed with standard
//! JSON-Lines tooling. Each record has the following schema:
//!
@@ -75,7 +75,7 @@ pub(crate) async fn append_entry(
// TODO: check `text` for sensitive patterns
// Resolve `~/.codex/history.jsonl` and ensure the parent directory exists.
// Resolve `~/.llmx/history.jsonl` and ensure the parent directory exists.
let path = history_filepath(config);
if let Some(parent) = path.parent() {
tokio::fs::create_dir_all(parent).await?;

View File

@@ -2,7 +2,7 @@
//!
//! Providers can be defined in two places:
//! 1. Built-in defaults compiled into the binary so Codex works out-of-the-box.
//! 2. User-defined entries inside `~/.codex/config.toml` under the `model_providers`
//! 2. User-defined entries inside `~/.llmx/config.toml` under the `model_providers`
//! key. These override or extend the defaults at runtime.
use crate::CodexAuth;

View File

@@ -150,7 +150,7 @@ pub(crate) async fn get_conversation(path: &Path) -> io::Result<String> {
/// Load conversation file paths from disk using directory traversal.
///
/// Directory layout: `~/.codex/sessions/YYYY/MM/DD/rollout-YYYY-MM-DDThh-mm-ss-<uuid>.jsonl`
/// Directory layout: `~/.llmx/sessions/YYYY/MM/DD/rollout-YYYY-MM-DDThh-mm-ss-<uuid>.jsonl`
/// Returned newest (latest) first.
async fn traverse_directories_for_paths(
root: PathBuf,

View File

@@ -40,8 +40,8 @@ use llmx_protocol::protocol::SessionSource;
/// Rollouts are recorded as JSONL and can be inspected with tools such as:
///
/// ```ignore
/// $ jq -C . ~/.codex/sessions/rollout-2025-05-07T17-24-21-5973b6c0-94b8-487b-a530-2aeb6098ae0e.jsonl
/// $ fx ~/.codex/sessions/rollout-2025-05-07T17-24-21-5973b6c0-94b8-487b-a530-2aeb6098ae0e.jsonl
/// $ jq -C . ~/.llmx/sessions/rollout-2025-05-07T17-24-21-5973b6c0-94b8-487b-a530-2aeb6098ae0e.jsonl
/// $ fx ~/.llmx/sessions/rollout-2025-05-07T17-24-21-5973b6c0-94b8-487b-a530-2aeb6098ae0e.jsonl
/// ```
#[derive(Clone)]
pub struct RolloutRecorder {
@@ -312,7 +312,7 @@ fn create_log_file(
config: &Config,
conversation_id: ConversationId,
) -> std::io::Result<LogFileInfo> {
// Resolve ~/.codex/sessions/YYYY/MM/DD and create it if missing.
// Resolve ~/.llmx/sessions/YYYY/MM/DD and create it if missing.
let timestamp = OffsetDateTime::now_local()
.map_err(|e| IoError::other(format!("failed to get local time: {e}")))?;
let mut dir = config.codex_home.clone();

View File

@@ -256,7 +256,7 @@ pub(crate) struct ExecCommandContext {
pub(crate) tool_name: String,
pub(crate) otel_event_manager: OtelEventManager,
// TODO(abhisek-oai): Find a better way to track this.
// https://github.com/openai/codex/pull/2471/files#r2470352242
// https://github.com/valknar/llmx/pull/2471/files#r2470352242
pub(crate) is_user_shell_command: bool,
}