Move compact (#6454)
This commit is contained in:
@@ -6,6 +6,7 @@ use std::sync::atomic::AtomicU64;
|
|||||||
|
|
||||||
use crate::AuthManager;
|
use crate::AuthManager;
|
||||||
use crate::client_common::REVIEW_PROMPT;
|
use crate::client_common::REVIEW_PROMPT;
|
||||||
|
use crate::compact;
|
||||||
use crate::features::Feature;
|
use crate::features::Feature;
|
||||||
use crate::function_tool::FunctionCallError;
|
use crate::function_tool::FunctionCallError;
|
||||||
use crate::mcp::auth::McpAuthStatusEntry;
|
use crate::mcp::auth::McpAuthStatusEntry;
|
||||||
@@ -66,6 +67,8 @@ use crate::error::Result as CodexResult;
|
|||||||
use crate::exec::StreamOutput;
|
use crate::exec::StreamOutput;
|
||||||
// Removed: legacy executor wiring replaced by ToolOrchestrator flows.
|
// Removed: legacy executor wiring replaced by ToolOrchestrator flows.
|
||||||
// legacy normalize_exec_result no longer used after orchestrator migration
|
// legacy normalize_exec_result no longer used after orchestrator migration
|
||||||
|
use crate::compact::build_compacted_history;
|
||||||
|
use crate::compact::collect_user_messages;
|
||||||
use crate::mcp::auth::compute_auth_statuses;
|
use crate::mcp::auth::compute_auth_statuses;
|
||||||
use crate::mcp_connection_manager::McpConnectionManager;
|
use crate::mcp_connection_manager::McpConnectionManager;
|
||||||
use crate::model_family::find_family_for_model;
|
use crate::model_family::find_family_for_model;
|
||||||
@@ -129,10 +132,6 @@ use codex_protocol::user_input::UserInput;
|
|||||||
use codex_utils_readiness::Readiness;
|
use codex_utils_readiness::Readiness;
|
||||||
use codex_utils_readiness::ReadinessFlag;
|
use codex_utils_readiness::ReadinessFlag;
|
||||||
|
|
||||||
pub mod compact;
|
|
||||||
use self::compact::build_compacted_history;
|
|
||||||
use self::compact::collect_user_messages;
|
|
||||||
|
|
||||||
/// The high-level interface to the Codex system.
|
/// The high-level interface to the Codex system.
|
||||||
/// It operates as a queue pair where you send submissions and receive events.
|
/// It operates as a queue pair where you send submissions and receive events.
|
||||||
pub struct Codex {
|
pub struct Codex {
|
||||||
@@ -968,7 +967,7 @@ impl Session {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Append ResponseItems to the in-memory conversation history only.
|
/// Append ResponseItems to the in-memory conversation history only.
|
||||||
async fn record_into_history(&self, items: &[ResponseItem]) {
|
pub(crate) async fn record_into_history(&self, items: &[ResponseItem]) {
|
||||||
let mut state = self.state.lock().await;
|
let mut state = self.state.lock().await;
|
||||||
state.record_items(items.iter());
|
state.record_items(items.iter());
|
||||||
}
|
}
|
||||||
@@ -1020,7 +1019,7 @@ impl Session {
|
|||||||
items
|
items
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn persist_rollout_items(&self, items: &[RolloutItem]) {
|
pub(crate) async fn persist_rollout_items(&self, items: &[RolloutItem]) {
|
||||||
let recorder = {
|
let recorder = {
|
||||||
let guard = self.services.rollout.lock().await;
|
let guard = self.services.rollout.lock().await;
|
||||||
guard.clone()
|
guard.clone()
|
||||||
@@ -1037,7 +1036,7 @@ impl Session {
|
|||||||
state.clone_history()
|
state.clone_history()
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn update_token_usage_info(
|
pub(crate) async fn update_token_usage_info(
|
||||||
&self,
|
&self,
|
||||||
turn_context: &TurnContext,
|
turn_context: &TurnContext,
|
||||||
token_usage: Option<&TokenUsage>,
|
token_usage: Option<&TokenUsage>,
|
||||||
@@ -1054,7 +1053,7 @@ impl Session {
|
|||||||
self.send_token_count_event(turn_context).await;
|
self.send_token_count_event(turn_context).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn update_rate_limits(
|
pub(crate) async fn update_rate_limits(
|
||||||
&self,
|
&self,
|
||||||
turn_context: &TurnContext,
|
turn_context: &TurnContext,
|
||||||
new_rate_limits: RateLimitSnapshot,
|
new_rate_limits: RateLimitSnapshot,
|
||||||
@@ -1075,7 +1074,7 @@ impl Session {
|
|||||||
self.send_event(turn_context, event).await;
|
self.send_event(turn_context, event).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn set_total_tokens_full(&self, turn_context: &TurnContext) {
|
pub(crate) async fn set_total_tokens_full(&self, turn_context: &TurnContext) {
|
||||||
let context_window = turn_context.client.get_model_context_window();
|
let context_window = turn_context.client.get_model_context_window();
|
||||||
if let Some(context_window) = context_window {
|
if let Some(context_window) = context_window {
|
||||||
{
|
{
|
||||||
@@ -1118,7 +1117,11 @@ impl Session {
|
|||||||
self.send_event(turn_context, event).await;
|
self.send_event(turn_context, event).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn notify_stream_error(&self, turn_context: &TurnContext, message: impl Into<String>) {
|
pub(crate) async fn notify_stream_error(
|
||||||
|
&self,
|
||||||
|
turn_context: &TurnContext,
|
||||||
|
message: impl Into<String>,
|
||||||
|
) {
|
||||||
let event = EventMsg::StreamError(StreamErrorEvent {
|
let event = EventMsg::StreamError(StreamErrorEvent {
|
||||||
message: message.into(),
|
message: message.into(),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use super::Session;
|
|
||||||
use super::TurnContext;
|
|
||||||
use super::get_last_assistant_message_from_turn;
|
|
||||||
use crate::Prompt;
|
use crate::Prompt;
|
||||||
use crate::client_common::ResponseEvent;
|
use crate::client_common::ResponseEvent;
|
||||||
|
use crate::codex::Session;
|
||||||
|
use crate::codex::TurnContext;
|
||||||
|
use crate::codex::get_last_assistant_message_from_turn;
|
||||||
use crate::error::CodexErr;
|
use crate::error::CodexErr;
|
||||||
use crate::error::Result as CodexResult;
|
use crate::error::Result as CodexResult;
|
||||||
use crate::protocol::AgentMessageEvent;
|
use crate::protocol::AgentMessageEvent;
|
||||||
@@ -25,7 +25,7 @@ use codex_protocol::user_input::UserInput;
|
|||||||
use futures::prelude::*;
|
use futures::prelude::*;
|
||||||
use tracing::error;
|
use tracing::error;
|
||||||
|
|
||||||
pub const SUMMARIZATION_PROMPT: &str = include_str!("../../templates/compact/prompt.md");
|
pub const SUMMARIZATION_PROMPT: &str = include_str!("../templates/compact/prompt.md");
|
||||||
const COMPACT_USER_MESSAGE_MAX_TOKENS: usize = 20_000;
|
const COMPACT_USER_MESSAGE_MAX_TOKENS: usize = 20_000;
|
||||||
|
|
||||||
pub(crate) async fn run_inline_auto_compact_task(
|
pub(crate) async fn run_inline_auto_compact_task(
|
||||||
@@ -99,11 +99,12 @@ pub use client_common::Prompt;
|
|||||||
pub use client_common::REVIEW_PROMPT;
|
pub use client_common::REVIEW_PROMPT;
|
||||||
pub use client_common::ResponseEvent;
|
pub use client_common::ResponseEvent;
|
||||||
pub use client_common::ResponseStream;
|
pub use client_common::ResponseStream;
|
||||||
pub use codex::compact::content_items_to_text;
|
|
||||||
pub use codex_protocol::models::ContentItem;
|
pub use codex_protocol::models::ContentItem;
|
||||||
pub use codex_protocol::models::LocalShellAction;
|
pub use codex_protocol::models::LocalShellAction;
|
||||||
pub use codex_protocol::models::LocalShellExecAction;
|
pub use codex_protocol::models::LocalShellExecAction;
|
||||||
pub use codex_protocol::models::LocalShellStatus;
|
pub use codex_protocol::models::LocalShellStatus;
|
||||||
pub use codex_protocol::models::ResponseItem;
|
pub use codex_protocol::models::ResponseItem;
|
||||||
|
pub use compact::content_items_to_text;
|
||||||
pub use event_mapping::parse_turn_item;
|
pub use event_mapping::parse_turn_item;
|
||||||
|
pub mod compact;
|
||||||
pub mod otel_init;
|
pub mod otel_init;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use async_trait::async_trait;
|
|||||||
use tokio_util::sync::CancellationToken;
|
use tokio_util::sync::CancellationToken;
|
||||||
|
|
||||||
use crate::codex::TurnContext;
|
use crate::codex::TurnContext;
|
||||||
use crate::codex::compact;
|
use crate::compact;
|
||||||
use crate::state::TaskKind;
|
use crate::state::TaskKind;
|
||||||
use codex_protocol::user_input::UserInput;
|
use codex_protocol::user_input::UserInput;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user