旧单页 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 标记单测未动且通过。
25 lines
949 B
TypeScript
25 lines
949 B
TypeScript
import { useState } from "react";
|
|
import { useConsole } from "../context";
|
|
import { Card, Bar } from "../components/ui";
|
|
|
|
// Right-panel context for the Skills view: MCP reload + OAuth initiate.
|
|
// Previously embedded in the skills card; the centre now stays the lists.
|
|
export default function SkillsToolsPanel() {
|
|
const ctx = useConsole();
|
|
const [oauthName, setOauthName] = useState("");
|
|
return (
|
|
<Card title="MCP 操作">
|
|
<Bar>
|
|
<button onClick={ctx.reloadMcp}>重载配置</button>
|
|
<span className="muted">{ctx.mcpMsg}</span>
|
|
</Bar>
|
|
<Bar>
|
|
<input type="text" placeholder="MCP 服务名" value={oauthName} onChange={(e) => setOauthName(e.target.value)} />
|
|
<button onClick={() => void ctx.mcpOauth(oauthName)}>发起 OAuth 登录</button>
|
|
<span className="muted">{ctx.mcpOauthMsg}</span>
|
|
</Bar>
|
|
{ctx.mcpOauthBox ? <pre>{ctx.mcpOauthBox}</pre> : null}
|
|
</Card>
|
|
);
|
|
}
|