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 @@
|
||||
// Every API path in the app, in one place. No section or hook builds a
|
||||
// URL string by hand; they all go through this table. Paths are
|
||||
// same-origin absolute paths, exactly as in the live console.
|
||||
const enc = encodeURIComponent;
|
||||
export const paths = {
|
||||
health: "/health",
|
||||
relayModels: "/relay/models",
|
||||
quotaMe: "/users/me/quota",
|
||||
githubRepos: "/github/repos",
|
||||
projects: "/projects",
|
||||
project: (id: string) => "/projects/" + enc(id),
|
||||
projectMembers: (pid: string) => "/projects/" + enc(pid) + "/members",
|
||||
projectMember: (pid: string, uid: string) => "/projects/" + enc(pid) + "/members/" + enc(uid),
|
||||
projectSkills: (pid: string) => "/projects/" + enc(pid) + "/skills",
|
||||
projectApps: (pid: string) => "/projects/" + enc(pid) + "/apps",
|
||||
projectMcp: (pid: string) => "/projects/" + enc(pid) + "/mcp-servers",
|
||||
projectMcpReload: (pid: string) => "/projects/" + enc(pid) + "/mcp-servers/reload",
|
||||
projectMcpOauth: (pid: string, name: string) => "/projects/" + enc(pid) + "/mcp-servers/" + enc(name) + "/oauth-login",
|
||||
projectAutomations: (pid: string) => "/projects/" + enc(pid) + "/automations",
|
||||
projectAutomationCancel: (pid: string, id: string) => "/projects/" + enc(pid) + "/automations/" + enc(id) + "/cancel",
|
||||
projectTriage: (pid: string) => "/projects/" + enc(pid) + "/triage",
|
||||
workers: "/workers",
|
||||
environments: (pid: string) => "/environments?project_id=" + enc(pid),
|
||||
environmentsCreate: "/environments",
|
||||
environmentArchive: (id: string) => "/environments/" + enc(id) + "/archive",
|
||||
tasks: (pid: string) => "/tasks?project_id=" + enc(pid),
|
||||
tasksByParent: (pid: string, parent: string) => "/tasks?project_id=" + enc(pid) + "&parent_task_id=" + enc(parent),
|
||||
tasksCreate: "/tasks",
|
||||
task: (id: string) => "/tasks/" + enc(id),
|
||||
taskAction: (id: string, kind: string) => "/tasks/" + enc(id) + "/" + kind,
|
||||
taskFork: (id: string) => "/tasks/" + enc(id) + "/fork",
|
||||
taskContinue: (id: string) => "/tasks/" + enc(id) + "/continue",
|
||||
taskTrace: (id: string) => "/tasks/" + enc(id) + "/trace",
|
||||
taskTraceStream: (id: string) => "/tasks/" + enc(id) + "/trace/stream",
|
||||
taskAgents: (id: string) => "/tasks/" + enc(id) + "/agents",
|
||||
taskReviews: (id: string) => "/tasks/" + enc(id) + "/reviews",
|
||||
taskReviewFindings: (id: string, rid: string) => "/tasks/" + enc(id) + "/reviews/" + enc(rid) + "/findings",
|
||||
taskApprovals: (id: string) => "/tasks/" + enc(id) + "/approvals",
|
||||
taskApprovalDecision: (id: string, aid: string, verb: string) => "/tasks/" + enc(id) + "/approvals/" + enc(aid) + "/" + verb,
|
||||
taskFollowups: (id: string) => "/tasks/" + enc(id) + "/followups",
|
||||
taskMessages: (id: string) => "/tasks/" + enc(id) + "/messages",
|
||||
taskMessagesTo: (target: string) => "/tasks/" + enc(target) + "/messages",
|
||||
taskThread: (id: string) => "/tasks/" + enc(id) + "/thread",
|
||||
taskThreads: (id: string) => "/tasks/" + enc(id) + "/threads",
|
||||
taskThreadAction: (id: string, kind: string) => "/tasks/" + enc(id) + "/thread/" + kind,
|
||||
taskCost: (id: string) => "/tasks/" + enc(id) + "/cost",
|
||||
uploads: "/uploads",
|
||||
adminQuotas: "/admin/quotas",
|
||||
adminQuotaUser: (uid: string) => "/admin/quotas?user_id=" + enc(uid),
|
||||
adminSweep: "/admin/sweep",
|
||||
adminBackup: "/admin/backup",
|
||||
};
|
||||
Reference in new issue
Block a user