注释:收尾接单化后两个入口的分工与待办
direct_runtime/user_input.rs:补 CLI 与 GUI 的分工——CLI 入口保持 await(它要回复文本,没有事件订阅),两个入口共用同一份接单前检查、同一个命令主体与同一份 Display 文案;DirectTaonierActiveInvocationGuard 的注释改成只挡并发、不再是首页快照来源。 direct_runtime/mod.rs:TODO(Direct 命令接单化) 改成 TODO(失败条目进历史),指向备选方案第 3 条;失败说明本轮不落历史的口径不变。 cli.rs:删掉"带上诊断与 详情: 引用"的过期注释,改成与 GUI 同一份 Display 文案、不另加引用,差别只在 CLI 自己 await 整轮。
This commit is contained in:
@@ -4593,7 +4593,7 @@ async fn run_direct_game_creator_turn_at_with_creation_type_and_emitter(
|
||||
&failure,
|
||||
turn_emitter.map(|emitter| emitter.turn_id()),
|
||||
);
|
||||
// TODO(Direct 命令接单化):失败说明本轮不写进项目历史——重进项目只会看到那条没有回复的
|
||||
// TODO(失败条目进历史):失败说明本轮不写进项目历史——重进项目只会看到那条没有回复的
|
||||
// 用户消息,原因只在当轮界面与宿主诊断里。以后要给"进历史但不喂模型"的条目留一条通道
|
||||
// (见 `docs/adr/【ADR】DirectProject命令接单化-2026-09-23.md` 的备选方案第 3 条)。
|
||||
if let Some(emitter) = turn_emitter {
|
||||
|
||||
@@ -37,6 +37,10 @@ pub(crate) fn normalize_direct_client_turn_id(
|
||||
/// 于是"这一轮跑成什么"只有订阅事件一个来源:命令返回 `Ok` 只说明**接单成立**。可留痕的调用级
|
||||
/// 拒绝(宿主 / 环境事实)仍在边界补一份运行错误诊断,返回串不带诊断引用。
|
||||
///
|
||||
/// 与 CLI 的分工:CLI 入口(`cli.rs` 的 `direct-codex.chat`)**保持 await**——它要把那段回复文本
|
||||
/// 打到终端上,没有事件订阅可用;它复用同一份接单前检查与同一个命令主体,只是自己等整轮的返回值。
|
||||
/// 两个入口共用 [`direct_turn_error_boundary_text`] / [`direct_turn_rejection`],不要再各写一套判据。
|
||||
///
|
||||
/// 设计见 `docs/adr/【ADR】DirectProject命令接单化-2026-09-23.md`。
|
||||
#[tauri::command]
|
||||
pub(crate) async fn chat_with_game_creator_direct_codex(
|
||||
@@ -74,8 +78,9 @@ async fn chat_with_game_creator_direct_codex_typed(
|
||||
analytics_attempt_id: Option<String>,
|
||||
) -> Result<(), DirectTurnError> {
|
||||
let turn_id = normalize_direct_client_turn_id(client_turn_id.as_deref())?;
|
||||
// 占用调用身份:并发拒单要早于工程准备,避免两个请求同时改同一个项目。它同时是首页
|
||||
// "运行中的项目"看到的那张表的来源,所以必须与整轮同生共死——随任务一起搬进后台。
|
||||
// 占用调用身份:并发拒单要早于工程准备,避免两个请求同时改同一个项目。它只挡并发,**不是**
|
||||
// 首页"运行中的项目"的来源(那张表由 Thread Manager 的逻辑回合导出),但仍必须与整轮同生
|
||||
// 共死——随任务一起搬进后台。
|
||||
let active_invocation = DirectTaonierActiveInvocationGuard::enter(root, &turn_id)?;
|
||||
recover_direct_taonier_regeneration_workflow_at(root).map_err(|error| {
|
||||
DirectTurnError::HostStateUnavailable {
|
||||
|
||||
@@ -976,7 +976,8 @@ pub(crate) fn run_cli_command(command: CliCommand) -> Result<(), String> {
|
||||
run_direct_game_creator_turn_at(&project_path, &prompt)
|
||||
.await
|
||||
// CLI 也是命令边界:typed 错误在这里序列化成一行给终端看的文本;可留痕的
|
||||
// 调用级拒绝(宿主 / 环境事实)与 GUI 走同一份投影,带上诊断与 `详情:` 引用。
|
||||
// 调用级拒绝(宿主 / 环境事实)与 GUI 走同一份投影(同一份 `Display` 文案,
|
||||
// 不另加 `详情:` 引用),差别只在 CLI 自己 await 整轮、拿到回复文本。
|
||||
.map_err(|failure| {
|
||||
direct_turn_error_boundary_text(&project_path, None, failure)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user