fix: subagent unique ID matching + AgentState serialization + pre-existing TS errors
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
- S-3: Thread task_id (UUID) through all 6 layers (LoopEvent → StreamChatEvent → kernel-types → gateway-client → streamStore) so subtasks are matched by ID, not description string
- AgentState: Add #[serde(rename_all = "lowercase")] to fix PascalCase serialization ("Running" → "running"), update frontend matcher
- S-1: Remove unused onClose prop from ArtifactPanel + ChatArea call site
- Fix hooks/index.ts: remove orphaned useAutomationEvents re-exports (module deleted)
- Fix types/index.ts: remove orphaned automation type/value re-exports (module deleted)
- Fix ChatArea.tsx: framer-motion 12 + React 19 type compat — use createElement + explicit any return type to avoid unknown-in-JSX-child error
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1074,6 +1074,7 @@ pub enum LoopEvent {
|
||||
ToolEnd { name: String, output: serde_json::Value },
|
||||
/// Sub-agent task status update (started/running/completed/failed)
|
||||
SubtaskStatus {
|
||||
task_id: String,
|
||||
description: String,
|
||||
status: String,
|
||||
detail: Option<String>,
|
||||
|
||||
@@ -107,17 +107,19 @@ impl Tool for TaskTool {
|
||||
);
|
||||
|
||||
// Emit subtask_started event
|
||||
// Create a sub-agent with its own ID
|
||||
let sub_agent_id = AgentId::new();
|
||||
let task_id = sub_agent_id.to_string();
|
||||
|
||||
if let Some(ref tx) = context.event_sender {
|
||||
let _ = tx.send(LoopEvent::SubtaskStatus {
|
||||
task_id: task_id.clone(),
|
||||
description: description.to_string(),
|
||||
status: "started".to_string(),
|
||||
detail: None,
|
||||
}).await;
|
||||
}
|
||||
|
||||
// Create a sub-agent with its own ID
|
||||
let sub_agent_id = AgentId::new();
|
||||
|
||||
// Create a fresh session for the sub-agent
|
||||
let session_id = self.memory.create_session(&sub_agent_id).await?;
|
||||
|
||||
@@ -160,6 +162,7 @@ impl Tool for TaskTool {
|
||||
// Emit subtask_running event
|
||||
if let Some(ref tx) = context.event_sender {
|
||||
let _ = tx.send(LoopEvent::SubtaskStatus {
|
||||
task_id: task_id.clone(),
|
||||
description: description.to_string(),
|
||||
status: "running".to_string(),
|
||||
detail: Some("子Agent正在执行中...".to_string()),
|
||||
@@ -177,6 +180,7 @@ impl Tool for TaskTool {
|
||||
// Emit subtask_completed event
|
||||
if let Some(ref tx) = context.event_sender {
|
||||
let _ = tx.send(LoopEvent::SubtaskStatus {
|
||||
task_id: task_id.clone(),
|
||||
description: description.to_string(),
|
||||
status: "completed".to_string(),
|
||||
detail: Some(format!(
|
||||
@@ -201,6 +205,7 @@ impl Tool for TaskTool {
|
||||
// Emit subtask_failed event
|
||||
if let Some(ref tx) = context.event_sender {
|
||||
let _ = tx.send(LoopEvent::SubtaskStatus {
|
||||
task_id: task_id.clone(),
|
||||
description: description.to_string(),
|
||||
status: "failed".to_string(),
|
||||
detail: Some(e.to_string()),
|
||||
|
||||
Reference in New Issue
Block a user