feat: enrich page ai ACP runtime UI

This commit is contained in:
lix-2026
2026-05-17 21:21:59 +08:00
parent bb2f190f50
commit ee0643041a
5 changed files with 282 additions and 30 deletions
@@ -8,8 +8,8 @@
/// - `reference-code/hermes-vscode-main/src/protocol.ts` (dedup logic)
use crate::acp_client::AcpClient;
use crate::acp_types::{
ContentBlock, SessionNewParams, SessionNewResult, SessionPromptParams, SessionPromptResult,
SessionUpdate, ToolCallStatus,
ContentBlock, ContentBlockWrapper, SessionNewParams, SessionNewResult, SessionPromptParams,
SessionPromptResult, SessionUpdate, ToolCallStatus,
};
use serde_json::{json, Value};
use std::sync::{Arc, Mutex};
@@ -33,11 +33,13 @@ pub enum AcpSessionEvent {
title: String,
kind: String,
status: ToolCallStatus,
raw_input: Option<Value>,
},
/// Tool call status update (with optional result content).
ToolCallUpdate {
tool_call_id: String,
status: ToolCallStatus,
content: Option<Vec<ContentBlockWrapper>>,
},
/// Context usage update.
UsageUpdate { used: u64, size: u64 },
@@ -361,6 +363,7 @@ impl AcpSessionManager {
title,
kind,
status,
raw_input,
..
} => {
let title = title.clone().unwrap_or_else(|| "tool".into());
@@ -374,18 +377,21 @@ impl AcpSessionManager {
title,
kind: kind_str,
status,
raw_input: raw_input.clone(),
})
}
SessionUpdate::ToolCallUpdate {
tool_call_id,
status,
content,
..
} => {
let status = status.clone().unwrap_or(ToolCallStatus::Completed);
Some(AcpSessionEvent::ToolCallUpdate {
tool_call_id: tool_call_id.clone(),
status,
content: content.clone(),
})
}