mirror of
https://github.com/openai/codex.git
synced 2026-04-27 09:51:03 +03:00
Use codex-utils-template for review exit XML (#15999)
This commit is contained in:
@@ -14,6 +14,7 @@ use codex_protocol::protocol::ExitedReviewModeEvent;
|
||||
use codex_protocol::protocol::ItemCompletedEvent;
|
||||
use codex_protocol::protocol::ReviewOutputEvent;
|
||||
use codex_protocol::protocol::SubAgentSource;
|
||||
use codex_utils_template::Template;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
use crate::codex::Session;
|
||||
@@ -25,10 +26,16 @@ use crate::review_format::render_review_output_text;
|
||||
use crate::state::TaskKind;
|
||||
use codex_features::Feature;
|
||||
use codex_protocol::user_input::UserInput;
|
||||
use std::sync::LazyLock;
|
||||
|
||||
use super::SessionTask;
|
||||
use super::SessionTaskContext;
|
||||
|
||||
static REVIEW_EXIT_SUCCESS_TEMPLATE: LazyLock<Template> = LazyLock::new(|| {
|
||||
Template::parse(crate::client_common::REVIEW_EXIT_SUCCESS_TMPL)
|
||||
.unwrap_or_else(|err| panic!("review exit success template must parse: {err}"))
|
||||
});
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
pub(crate) struct ReviewTask;
|
||||
|
||||
@@ -220,8 +227,7 @@ pub(crate) async fn exit_review_mode(
|
||||
let block = format_review_findings_block(&out.findings, /*selection*/ None);
|
||||
findings_str.push_str(&format!("\n{block}"));
|
||||
}
|
||||
let rendered =
|
||||
crate::client_common::REVIEW_EXIT_SUCCESS_TMPL.replace("{results}", &findings_str);
|
||||
let rendered = render_review_exit_success(&findings_str);
|
||||
let assistant_message = render_review_output_text(&out);
|
||||
(rendered, assistant_message)
|
||||
} else {
|
||||
@@ -271,3 +277,23 @@ pub(crate) async fn exit_review_mode(
|
||||
// file creation + git metadata collection cannot delay client-facing items.
|
||||
session.ensure_rollout_materialized().await;
|
||||
}
|
||||
|
||||
fn render_review_exit_success(results: &str) -> String {
|
||||
REVIEW_EXIT_SUCCESS_TEMPLATE
|
||||
.render([("results", results)])
|
||||
.unwrap_or_else(|err| panic!("review exit success template must render: {err}"))
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::render_review_exit_success;
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
#[test]
|
||||
fn render_review_exit_success_replaces_results_placeholder() {
|
||||
assert_eq!(
|
||||
render_review_exit_success("Finding A\nFinding B"),
|
||||
"<user_action>\n <context>User initiated a review task. Here's the full review output from reviewer model. User may select one or more comments to resolve.</context>\n <action>review</action>\n <results>\n Finding A\nFinding B\n </results>\n </user_action>\n"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
<context>User initiated a review task. Here's the full review output from reviewer model. User may select one or more comments to resolve.</context>
|
||||
<action>review</action>
|
||||
<results>
|
||||
{results}
|
||||
{{results}}
|
||||
</results>
|
||||
</user_action>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user