console: React 生产级重写(左列表 + 中对话 + 右详情)
旧单页 console.html 换成 Vite + React + TypeScript 单文件构建产物 (309525 字节,sha 90345ec8…,重建字节一致),源码在 cloud/console-react/,改页面只改 src 再 npm run build:console, 产物不手改。布局:左侧列表(模块导航 + 任务列表)、中间标准对话 (实时链路时间线 + 继续会话聊天框,共用 Chat 组件)、右侧详情 (元数据、操作、评审、审批、协调子任务、子代理、线程)。 API 与后端语义未改,key 只存浏览器 localStorage。 6 个 console 标记单测随实现改名更新(意图不变:壳确实调了 这些接口、turn 信息仍在详情里、旧 goal 输入仍不存在); P1 标记单测未动且通过。
This commit is contained in:
1 parent
3f4e849a93
commit
ebc5624893
57 files changed
+4789
-1746
No files matched your search
@@ -0,0 +1,52 @@
|
||||
import { useConsole } from "../context";
|
||||
import { Card } from "../components/ui";
|
||||
import { shortId, fmt } from "../api/client";
|
||||
import { STATUS_EXPLAIN } from "../api/types";
|
||||
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. Everything structured lives
|
||||
// here — never inside a chat bubble: metadata, actions, reviews,
|
||||
// approvals, coordinator children, sub-agents, threads, cost.
|
||||
export default function TaskDetailPanel() {
|
||||
const ctx = useConsole();
|
||||
const t = ctx.currentTask;
|
||||
if (!t) return <Card id="nav-detail" title="任务详情"><div className="muted">点任务行查看详情</div></Card>;
|
||||
return (
|
||||
<Card id="nav-detail" title="任务详情">
|
||||
<div>
|
||||
状态 <b className={"st-" + t.status}>{t.status}</b>({STATUS_EXPLAIN[t.status] || "未知状态"})
|
||||
<br />任务 {t.id} | turn {shortId(t.turn_id)} | root turn {shortId(t.root_turn_id)}
|
||||
<br />executor {t.executor || ""} | 主机 {t.worktree_host || ""}
|
||||
<br />模型 {t.model || "默认"} | 强度 {t.effort || "默认"}
|
||||
{(t.child_model || t.child_effort) ? <><br />子任务默认 {(t.child_model || "跟随本任务") + " / " + (t.child_effort || "跟随本任务")}</> : null}
|
||||
<br />权限 {t.approval || "默认"} | 项目 {shortId(t.project_id)}
|
||||
<br />更新 {fmt(t.updated_at)}
|
||||
{t.plan ? <><br />计划模式(只读)</> : null}
|
||||
{t.forked_from ? <><br />分支自 {shortId(t.forked_from)}</> : null}
|
||||
{t.goal_mode ? <><br />goal 模式(不限轮次,模型宣告完成)</> : t.verify_command ? <><br />goal 模式(旧语义,验收命令)</> : null}
|
||||
{t.coordinator_parts ? <><br />协调员:{t.coordinator_parts.length} 个子任务({t.coordinator_parts.map((p) => p.name).join("、")})</> : null}
|
||||
{t.parent_task_id ? <><br />协调子任务,父任务 {shortId(t.parent_task_id)}{t.coordinator_part ? "(" + t.coordinator_part + ")" : ""}</> : null}
|
||||
{(t.attachments && t.attachments.length) ? <><br />附件:{t.attachments.join("、")}</> : null}
|
||||
{t.pr_url ? <><br /><a href={t.pr_url} target="_blank" rel="noopener noreferrer">PR #{t.pr_number}</a></> : null}
|
||||
<br />prompt:{t.prompt || ""}
|
||||
</div>
|
||||
<DetailActions />
|
||||
<pre>{ctx.detailBody || "(暂无 result/error 输出)"}</pre>
|
||||
{ctx.costBox ? <pre>{ctx.costBox}</pre> : null}
|
||||
<h3>协调子任务</h3>
|
||||
<CoordPanel />
|
||||
<h3>子代理链路</h3>
|
||||
<AgentsPanel />
|
||||
<h3>评审队列</h3>
|
||||
<ReviewPanel />
|
||||
<h3>运行时审批队列</h3>
|
||||
<ApprovalPanel />
|
||||
<h3>给其他任务发消息</h3>
|
||||
<PeerPanel />
|
||||
<h3>线程</h3>
|
||||
<ThreadPanel />
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user