mirror of
https://github.com/openai/codex.git
synced 2026-04-24 14:45:27 +00:00
fix: make analytics report Desktop App usage correctly
This commit is contained in:
@@ -8558,6 +8558,7 @@
|
||||
"cli",
|
||||
"vscode",
|
||||
"exec",
|
||||
"desktop_app",
|
||||
"mcp",
|
||||
"unknown"
|
||||
],
|
||||
|
||||
@@ -88,6 +88,7 @@
|
||||
"cli",
|
||||
"vscode",
|
||||
"exec",
|
||||
"desktop_app",
|
||||
"mcp",
|
||||
"unknown"
|
||||
],
|
||||
|
||||
@@ -88,6 +88,7 @@
|
||||
"cli",
|
||||
"vscode",
|
||||
"exec",
|
||||
"desktop_app",
|
||||
"mcp",
|
||||
"unknown"
|
||||
],
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
||||
import type { SubAgentSource } from "./SubAgentSource";
|
||||
|
||||
export type SessionSource = "cli" | "vscode" | "exec" | "mcp" | { "subagent": SubAgentSource } | "unknown";
|
||||
export type SessionSource = "cli" | "vscode" | "exec" | "desktop_app" | "mcp" | { "subagent": SubAgentSource } | "unknown";
|
||||
|
||||
@@ -782,6 +782,7 @@ impl From<CoreSessionSource> for SessionSource {
|
||||
CoreSessionSource::Cli => SessionSource::Cli,
|
||||
CoreSessionSource::VSCode => SessionSource::VsCode,
|
||||
CoreSessionSource::Exec => SessionSource::Exec,
|
||||
CoreSessionSource::DesktopApp => SessionSource::AppServer,
|
||||
CoreSessionSource::Mcp => SessionSource::AppServer,
|
||||
CoreSessionSource::SubAgent(sub) => SessionSource::SubAgent(sub),
|
||||
CoreSessionSource::Unknown => SessionSource::Unknown,
|
||||
|
||||
@@ -55,7 +55,7 @@ pub(crate) fn source_kind_matches(source: &CoreSessionSource, filter: &[ThreadSo
|
||||
ThreadSourceKind::Cli => matches!(source, CoreSessionSource::Cli),
|
||||
ThreadSourceKind::VsCode => matches!(source, CoreSessionSource::VSCode),
|
||||
ThreadSourceKind::Exec => matches!(source, CoreSessionSource::Exec),
|
||||
ThreadSourceKind::AppServer => matches!(source, CoreSessionSource::Mcp),
|
||||
ThreadSourceKind::AppServer => matches!(source, CoreSessionSource::DesktopApp),
|
||||
ThreadSourceKind::SubAgent => matches!(source, CoreSessionSource::SubAgent(_)),
|
||||
ThreadSourceKind::SubAgentReview => {
|
||||
matches!(
|
||||
@@ -152,4 +152,16 @@ mod tests {
|
||||
&[ThreadSourceKind::SubAgentReview]
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn source_kind_matches_app_server_for_desktop_app_only() {
|
||||
assert!(!source_kind_matches(
|
||||
&CoreSessionSource::Mcp,
|
||||
&[ThreadSourceKind::AppServer]
|
||||
));
|
||||
assert!(source_kind_matches(
|
||||
&CoreSessionSource::DesktopApp,
|
||||
&[ThreadSourceKind::AppServer]
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ use codex_core::config_loader::LoaderOverrides;
|
||||
use codex_core::default_client::SetOriginatorError;
|
||||
use codex_core::default_client::USER_AGENT_SUFFIX;
|
||||
use codex_core::default_client::get_codex_user_agent;
|
||||
use codex_core::default_client::originator;
|
||||
use codex_core::default_client::set_default_client_residency_requirement;
|
||||
use codex_core::default_client::set_default_originator;
|
||||
use codex_feedback::CodexFeedback;
|
||||
@@ -153,10 +154,11 @@ impl MessageProcessor {
|
||||
auth_manager.set_external_auth_refresher(Arc::new(ExternalAuthRefreshBridge {
|
||||
outgoing: outgoing.clone(),
|
||||
}));
|
||||
let session_source = session_source_for_originator(originator().value.as_str());
|
||||
let thread_manager = Arc::new(ThreadManager::new(
|
||||
config.codex_home.clone(),
|
||||
auth_manager.clone(),
|
||||
SessionSource::VSCode,
|
||||
session_source,
|
||||
));
|
||||
let cloud_requirements = Arc::new(RwLock::new(cloud_requirements));
|
||||
let codex_message_processor = CodexMessageProcessor::new(CodexMessageProcessorArgs {
|
||||
@@ -435,3 +437,42 @@ impl MessageProcessor {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn session_source_for_originator(originator_name: &str) -> SessionSource {
|
||||
match originator_name {
|
||||
"codex_vscode" => SessionSource::VSCode,
|
||||
name if name.starts_with("Codex ") => SessionSource::DesktopApp,
|
||||
_ => SessionSource::VSCode,
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::session_source_for_originator;
|
||||
use codex_protocol::protocol::SessionSource;
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
#[test]
|
||||
fn maps_vscode_originator_to_vscode_source() {
|
||||
assert_eq!(
|
||||
session_source_for_originator("codex_vscode"),
|
||||
SessionSource::VSCode
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn maps_codex_desktop_originator_to_app_server_source() {
|
||||
assert_eq!(
|
||||
session_source_for_originator("Codex Desktop"),
|
||||
SessionSource::DesktopApp
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn defaults_unknown_originator_to_vscode_source() {
|
||||
assert_eq!(
|
||||
session_source_for_originator("some_other_originator"),
|
||||
SessionSource::VSCode
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1587,6 +1587,9 @@ pub enum SessionSource {
|
||||
#[default]
|
||||
VSCode,
|
||||
Exec,
|
||||
#[serde(rename = "desktop_app")]
|
||||
#[ts(rename = "desktop_app")]
|
||||
DesktopApp,
|
||||
Mcp,
|
||||
SubAgent(SubAgentSource),
|
||||
#[serde(other)]
|
||||
@@ -1612,6 +1615,7 @@ impl fmt::Display for SessionSource {
|
||||
SessionSource::Cli => f.write_str("cli"),
|
||||
SessionSource::VSCode => f.write_str("vscode"),
|
||||
SessionSource::Exec => f.write_str("exec"),
|
||||
SessionSource::DesktopApp => f.write_str("desktop_app"),
|
||||
SessionSource::Mcp => f.write_str("mcp"),
|
||||
SessionSource::SubAgent(sub_source) => write!(f, "subagent_{sub_source}"),
|
||||
SessionSource::Unknown => f.write_str("unknown"),
|
||||
|
||||
Reference in New Issue
Block a user