import { useConsole } from "../context"; import { Card } from "../components/ui"; import { shortId, fmt } from "../api/client"; import { STATUS_EXPLAIN } from "../api/types"; import { firstChar, durationOf, tokenOf, fmtCostUsd } from "../api/taskMeta"; import DetailActions from "./detail/DetailActions"; import ReviewPanel from "./detail/ReviewPanel"; import { CoordPanel, AgentsPanel, ApprovalPanel, PeerPanel, ThreadPanel } from "./detail/DetailLists"; // Right detail column for the task view, card-style layout. // Everything structured lives here — never inside a chat bubble. // Layout only: data, actions and sub-sections are unchanged, // just grouped into cards instead of one
-separated block: // 概览(状态 + 耗时/token/成本三张指标卡) // 基本信息(键值网格) // prompt(单独一张卡,长 prompt 不再挤在信息行末尾) // 操作与结果 // 协调子任务 / 子代理链路 / 评审队列 / 运行时审批队列 / // 给其他任务发消息 / 线程(各一张卡) export default function TaskDetailPanel() { const ctx = useConsole(); const t = ctx.currentTask; if (!t) return
点任务行查看详情
; const [dur, durTitle] = durationOf(t); const [tok, tokTitle] = tokenOf(t); const fc = firstChar(t); const cost = ctx.costSummary; const modeText = t.plan ? "计划模式(只读)" : t.goal_mode ? (t.no_time_limit ? "goal 模式无敌版(不限时)" : "goal 模式(不限轮次,模型宣告完成)") : t.verify_command ? "goal 模式(旧语义,验收命令)" : null; return ( ); }