downcity 1.1.77 → 1.1.79

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "downcity",
3
- "version": "1.1.77",
3
+ "version": "1.1.79",
4
4
  "type": "module",
5
5
  "description": "Downcity CLI bundle — installs city and town commands",
6
6
  "bin": {
@@ -45,9 +45,9 @@
45
45
  "prompts": "^2.4.2",
46
46
  "ws": "^8.21.0",
47
47
  "zod": "^4.4.3",
48
+ "@downcity/plugins": "^1.0.26",
48
49
  "@downcity/agent": "^1.1.69",
49
- "@downcity/city": "^0.2.32",
50
- "@downcity/plugins": "^1.0.26"
50
+ "@downcity/city": "^0.2.32"
51
51
  },
52
52
  "scripts": {
53
53
  "build": "node scripts/copy-cli-products.mjs && node scripts/ensure-cli-executable.mjs",
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Console dashboard session 读侧路由。
3
+ *
4
+ * 关键点(中文)
5
+ * - 承接旧 Console 使用的 session 列表与消息时间线读接口。
6
+ * - 读运行态信息时直接复用 Agent RPC 的 SDK session 能力,不再经由 Agent HTTP control API。
7
+ * - 这里只迁移低风险读接口;写操作与归档接口暂时保留在旧 proxy 路径。
8
+ */
9
+ import type { Hono } from "hono";
10
+ import type { PlatformAgentOption } from "@downcity/agent";
11
+ import type { AgentRpcPool } from "../control/gateway/AgentRpcPool.js";
12
+ /**
13
+ * Dashboard session 路由参数。
14
+ */
15
+ export interface DashboardSessionApiRouteParams {
16
+ /**
17
+ * Hono 应用实例。
18
+ */
19
+ app: Hono;
20
+ /**
21
+ * 从请求中读取用户选择的 agent id。
22
+ */
23
+ readRequestedAgentId(request: Request): string;
24
+ /**
25
+ * 解析当前运行中的 agent。
26
+ */
27
+ resolveSelectedAgent(requestedAgentId: string): Promise<PlatformAgentOption | null>;
28
+ /**
29
+ * Town 维护的 Agent RPC 连接池。
30
+ */
31
+ agentRpcPool: AgentRpcPool;
32
+ }
33
+ /**
34
+ * 注册 dashboard session 读侧路由。
35
+ */
36
+ export declare function registerDashboardSessionApiRoutes(params: DashboardSessionApiRouteParams): void;
37
+ //# sourceMappingURL=DashboardSessionApiRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardSessionApiRoutes.d.ts","sourceRoot":"","sources":["../../src/control/DashboardSessionApiRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAItE;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,GAAG,EAAE,IAAI,CAAC;IACV;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/C;;OAEG;IACH,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACpF;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,8BAA8B,GACrC,IAAI,CA8EN"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Console dashboard session 读侧路由。
3
+ *
4
+ * 关键点(中文)
5
+ * - 承接旧 Console 使用的 session 列表与消息时间线读接口。
6
+ * - 读运行态信息时直接复用 Agent RPC 的 SDK session 能力,不再经由 Agent HTTP control API。
7
+ * - 这里只迁移低风险读接口;写操作与归档接口暂时保留在旧 proxy 路径。
8
+ */
9
+ const CONSOLEUI_SESSION_ID = "consoleui-chat-main";
10
+ /**
11
+ * 注册 dashboard session 读侧路由。
12
+ */
13
+ export function registerDashboardSessionApiRoutes(params) {
14
+ const { app } = params;
15
+ app.get("/api/dashboard/sessions", async (c) => {
16
+ try {
17
+ const context = await resolveDashboardAgentContext(params, c.req.raw);
18
+ if (!context)
19
+ return agentUnavailableResponse();
20
+ const page = await context.client.list_sessions({
21
+ limit: toLimit(c.req.query("limit"), 120),
22
+ });
23
+ const sessions = page.items.map((item) => toDashboardSessionSummary(item));
24
+ const has_console_session = sessions.some((item) => String(item.sessionId || "").trim() === CONSOLEUI_SESSION_ID);
25
+ const enriched_sessions = has_console_session
26
+ ? sessions
27
+ : [
28
+ {
29
+ sessionId: CONSOLEUI_SESSION_ID,
30
+ messageCount: 0,
31
+ updatedAt: Date.now(),
32
+ lastRole: "system",
33
+ lastText: "consoleui channel",
34
+ channel: "consoleui",
35
+ },
36
+ ...sessions,
37
+ ];
38
+ return c.json({
39
+ success: true,
40
+ sessions: enriched_sessions,
41
+ });
42
+ }
43
+ catch (error) {
44
+ return c.json({ success: false, error: String(error) }, 500);
45
+ }
46
+ });
47
+ app.get("/api/dashboard/sessions/:sessionId/messages", async (c) => {
48
+ try {
49
+ const context = await resolveDashboardAgentContext(params, c.req.raw);
50
+ if (!context)
51
+ return agentUnavailableResponse();
52
+ const session_id = decodeMaybe(c.req.param("sessionId"));
53
+ if (!session_id)
54
+ return c.json({ success: false, error: "Missing sessionId" }, 400);
55
+ const history = await context.client.get_session_history({
56
+ session_id,
57
+ input: {
58
+ limit: toLimit(c.req.query("limit"), 200),
59
+ order: "asc",
60
+ view: "timeline",
61
+ },
62
+ }).catch((error) => {
63
+ if (isSessionNotFoundError(error))
64
+ return null;
65
+ throw error;
66
+ });
67
+ if (!history) {
68
+ return c.json({
69
+ success: true,
70
+ sessionId: session_id,
71
+ total: 0,
72
+ rawTotal: 0,
73
+ messages: [],
74
+ });
75
+ }
76
+ const messages = Array.isArray(history.items)
77
+ ? history.items
78
+ : [];
79
+ return c.json({
80
+ success: true,
81
+ sessionId: session_id,
82
+ total: messages.length,
83
+ rawTotal: history.total,
84
+ messages,
85
+ });
86
+ }
87
+ catch (error) {
88
+ return c.json({ success: false, error: String(error) }, 500);
89
+ }
90
+ });
91
+ }
92
+ async function resolveDashboardAgentContext(params, request) {
93
+ const requested_agent_id = params.readRequestedAgentId(request);
94
+ const agent = await params.resolveSelectedAgent(requested_agent_id);
95
+ if (!agent || agent.running !== true)
96
+ return null;
97
+ const client = params.agentRpcPool.resolveClientForAgent(agent);
98
+ if (!client)
99
+ return null;
100
+ return {
101
+ agent,
102
+ client,
103
+ };
104
+ }
105
+ function agentUnavailableResponse() {
106
+ return new Response(JSON.stringify({
107
+ success: false,
108
+ error: "No running agent found. Start one via `town agent start` first.",
109
+ }), {
110
+ status: 503,
111
+ headers: {
112
+ "Content-Type": "application/json",
113
+ },
114
+ });
115
+ }
116
+ function toDashboardSessionSummary(item) {
117
+ return {
118
+ sessionId: item.sessionId,
119
+ messageCount: item.messageCount,
120
+ ...(typeof item.updatedAt === "number" ? { updatedAt: item.updatedAt } : {}),
121
+ ...(typeof item.previewText === "string" && item.previewText.trim()
122
+ ? { lastText: item.previewText.trim() }
123
+ : {}),
124
+ ...(item.executing ? { executing: true } : {}),
125
+ };
126
+ }
127
+ function toLimit(raw, fallback) {
128
+ const parsed = Number.parseInt(String(raw || "").trim(), 10);
129
+ if (!Number.isFinite(parsed) || Number.isNaN(parsed))
130
+ return fallback;
131
+ return Math.max(1, Math.min(parsed, 500));
132
+ }
133
+ function isSessionNotFoundError(error) {
134
+ const message = error instanceof Error ? error.message : String(error);
135
+ return /session .* not found/i.test(message);
136
+ }
137
+ function decodeMaybe(value) {
138
+ try {
139
+ return decodeURIComponent(String(value || "")).trim();
140
+ }
141
+ catch {
142
+ return String(value || "").trim();
143
+ }
144
+ }
145
+ //# sourceMappingURL=DashboardSessionApiRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardSessionApiRoutes.js","sourceRoot":"","sources":["../../src/control/DashboardSessionApiRoutes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Console dashboard task/logs 路由。
3
+ *
4
+ * 关键点(中文)
5
+ * - 承接旧 Console 使用的 `/api/dashboard/tasks*` 与 `/api/dashboard/logs` 路径。
6
+ * - 业务动作通过 Town 维护的 Agent RPC 连接执行,不再经由 Agent HTTP control API。
7
+ * - run/log 详情仍读取 agent 项目本地 `.downcity` 运行目录,保持 UI 数据结构稳定。
8
+ */
9
+ import type { Hono } from "hono";
10
+ import type { PlatformAgentOption } from "@downcity/agent";
11
+ import type { AgentRpcPool } from "../control/gateway/AgentRpcPool.js";
12
+ /**
13
+ * Dashboard task 路由参数。
14
+ */
15
+ export interface DashboardTaskApiRouteParams {
16
+ /**
17
+ * Hono 应用实例。
18
+ */
19
+ app: Hono;
20
+ /**
21
+ * 从请求中读取用户选择的 agent id。
22
+ */
23
+ readRequestedAgentId(request: Request): string;
24
+ /**
25
+ * 解析当前运行中的 agent。
26
+ */
27
+ resolveSelectedAgent(requestedAgentId: string): Promise<PlatformAgentOption | null>;
28
+ /**
29
+ * Town 维护的 Agent RPC 连接池。
30
+ */
31
+ agentRpcPool: AgentRpcPool;
32
+ }
33
+ /**
34
+ * 注册旧 dashboard task/logs 路由。
35
+ */
36
+ export declare function registerDashboardTaskApiRoutes(params: DashboardTaskApiRouteParams): void;
37
+ //# sourceMappingURL=DashboardTaskApiRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardTaskApiRoutes.d.ts","sourceRoot":"","sources":["../../src/control/DashboardTaskApiRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAO3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAKtE;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,GAAG,EAAE,IAAI,CAAC;IACV;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/C;;OAEG;IACH,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACpF;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,2BAA2B,GAClC,IAAI,CAmMN"}
@@ -0,0 +1,374 @@
1
+ /**
2
+ * Console dashboard task/logs 路由。
3
+ *
4
+ * 关键点(中文)
5
+ * - 承接旧 Console 使用的 `/api/dashboard/tasks*` 与 `/api/dashboard/logs` 路径。
6
+ * - 业务动作通过 Town 维护的 Agent RPC 连接执行,不再经由 Agent HTTP control API。
7
+ * - run/log 详情仍读取 agent 项目本地 `.downcity` 运行目录,保持 UI 数据结构稳定。
8
+ */
9
+ import fs from "fs-extra";
10
+ import path from "node:path";
11
+ import { TASK_RUN_DIR_REGEX, listTaskRuns, readRecentLogs, readTaskRunDetail, } from "@downcity/agent/internal/runtime/server/http/control/TaskStore.js";
12
+ import { getDowncityDirPath } from "../config/Paths.js";
13
+ const TASK_ID_REGEXP = /^[\p{L}\p{N}][\p{L}\p{N}_\-\s]{0,63}$/u;
14
+ /**
15
+ * 注册旧 dashboard task/logs 路由。
16
+ */
17
+ export function registerDashboardTaskApiRoutes(params) {
18
+ const { app } = params;
19
+ app.get("/api/dashboard/tasks", async (c) => {
20
+ try {
21
+ const context = await resolveDashboardAgentContext(params, c.req.raw);
22
+ if (!context)
23
+ return agentUnavailableResponse();
24
+ const tasks = await listTasksViaRpc(context);
25
+ const enriched = await Promise.all(tasks.map(async (task) => {
26
+ const running = await readTaskRunningState({
27
+ project_root: context.agent.projectRoot,
28
+ task,
29
+ });
30
+ return running ? { ...task, running } : task;
31
+ }));
32
+ return c.json({
33
+ success: true,
34
+ tasks: enriched,
35
+ });
36
+ }
37
+ catch (error) {
38
+ return c.json({ success: false, error: String(error) }, 500);
39
+ }
40
+ });
41
+ app.post("/api/dashboard/tasks/run", async (c) => {
42
+ try {
43
+ const context = await resolveDashboardAgentContext(params, c.req.raw);
44
+ if (!context)
45
+ return agentUnavailableResponse();
46
+ const body = (await c.req.json().catch(() => ({})));
47
+ const title = String(body.title || "").trim();
48
+ if (!title)
49
+ return c.json({ success: false, error: "Invalid title" }, 400);
50
+ const result = await context.client.run_internal_plugin_action({
51
+ plugin_name: "task",
52
+ action_name: "run",
53
+ payload: {
54
+ title,
55
+ ...(typeof body.reason === "string" && body.reason.trim()
56
+ ? { reason: body.reason.trim() }
57
+ : {}),
58
+ },
59
+ });
60
+ return c.json(normalizePluginActionResponse(result), result.success ? 200 : 400);
61
+ }
62
+ catch (error) {
63
+ return c.json({ success: false, error: String(error) }, 500);
64
+ }
65
+ });
66
+ app.post("/api/dashboard/tasks/:title/status", async (c) => {
67
+ try {
68
+ const context = await resolveDashboardAgentContext(params, c.req.raw);
69
+ if (!context)
70
+ return agentUnavailableResponse();
71
+ const title = decodeMaybe(c.req.param("title"));
72
+ const body = (await c.req.json().catch(() => ({})));
73
+ const status = String(body.status || "").trim();
74
+ if (!title)
75
+ return c.json({ success: false, error: "Invalid title" }, 400);
76
+ if (!["enabled", "paused", "disabled"].includes(status)) {
77
+ return c.json({ success: false, error: "Invalid status" }, 400);
78
+ }
79
+ const result = await context.client.run_internal_plugin_action({
80
+ plugin_name: "task",
81
+ action_name: "status",
82
+ payload: {
83
+ title,
84
+ status,
85
+ },
86
+ });
87
+ return c.json(normalizePluginActionResponse(result), result.success ? 200 : 400);
88
+ }
89
+ catch (error) {
90
+ return c.json({ success: false, error: String(error) }, 500);
91
+ }
92
+ });
93
+ app.get("/api/dashboard/tasks/:title/runs", async (c) => {
94
+ try {
95
+ const context = await resolveDashboardAgentContext(params, c.req.raw);
96
+ if (!context)
97
+ return agentUnavailableResponse();
98
+ const title = decodeMaybe(c.req.param("title"));
99
+ if (!title)
100
+ return c.json({ success: false, error: "Invalid title" }, 400);
101
+ const runs = await listTaskRuns({
102
+ projectRoot: context.agent.projectRoot,
103
+ title,
104
+ limit: toLimit(c.req.query("limit"), 50),
105
+ });
106
+ return c.json({ success: true, title, runs });
107
+ }
108
+ catch (error) {
109
+ return c.json({ success: false, error: String(error) }, 500);
110
+ }
111
+ });
112
+ app.delete("/api/dashboard/tasks/:title/runs", async (c) => {
113
+ try {
114
+ const context = await resolveDashboardAgentContext(params, c.req.raw);
115
+ if (!context)
116
+ return agentUnavailableResponse();
117
+ const title = decodeMaybe(c.req.param("title"));
118
+ if (!title)
119
+ return c.json({ success: false, error: "Invalid title" }, 400);
120
+ const result = await clearTaskRuns({
121
+ projectRoot: context.agent.projectRoot,
122
+ title,
123
+ });
124
+ return c.json({ success: true, title, ...result });
125
+ }
126
+ catch (error) {
127
+ return c.json({ success: false, error: String(error) }, 500);
128
+ }
129
+ });
130
+ app.get("/api/dashboard/tasks/:title/runs/:timestamp", async (c) => {
131
+ try {
132
+ const context = await resolveDashboardAgentContext(params, c.req.raw);
133
+ if (!context)
134
+ return agentUnavailableResponse();
135
+ const title = decodeMaybe(c.req.param("title"));
136
+ const timestamp = String(c.req.param("timestamp") || "").trim();
137
+ if (!title)
138
+ return c.json({ success: false, error: "Invalid title" }, 400);
139
+ if (!TASK_RUN_DIR_REGEX.test(timestamp)) {
140
+ return c.json({ success: false, error: "Invalid timestamp" }, 400);
141
+ }
142
+ const detail = await readTaskRunDetail({
143
+ projectRoot: context.agent.projectRoot,
144
+ title,
145
+ timestamp,
146
+ });
147
+ if (!detail)
148
+ return c.json({ success: false, error: "Run not found" }, 404);
149
+ return c.json({ success: true, ...detail });
150
+ }
151
+ catch (error) {
152
+ return c.json({ success: false, error: String(error) }, 500);
153
+ }
154
+ });
155
+ app.delete("/api/dashboard/tasks/:title/runs/:timestamp", async (c) => {
156
+ try {
157
+ const context = await resolveDashboardAgentContext(params, c.req.raw);
158
+ if (!context)
159
+ return agentUnavailableResponse();
160
+ const title = decodeMaybe(c.req.param("title"));
161
+ const timestamp = String(c.req.param("timestamp") || "").trim();
162
+ if (!title)
163
+ return c.json({ success: false, error: "Invalid title" }, 400);
164
+ if (!TASK_RUN_DIR_REGEX.test(timestamp)) {
165
+ return c.json({ success: false, error: "Invalid timestamp" }, 400);
166
+ }
167
+ const deleted = await deleteTaskRun({
168
+ projectRoot: context.agent.projectRoot,
169
+ title,
170
+ timestamp,
171
+ });
172
+ if (!deleted)
173
+ return c.json({ success: false, error: "Run not found" }, 404);
174
+ return c.json({ success: true, title, timestamp, deleted: true });
175
+ }
176
+ catch (error) {
177
+ const message = String(error);
178
+ if (message.includes("Run is still in progress")) {
179
+ return c.json({ success: false, error: message }, 409);
180
+ }
181
+ return c.json({ success: false, error: message }, 500);
182
+ }
183
+ });
184
+ app.delete("/api/dashboard/tasks/:title", async (c) => {
185
+ try {
186
+ const context = await resolveDashboardAgentContext(params, c.req.raw);
187
+ if (!context)
188
+ return agentUnavailableResponse();
189
+ const title = decodeMaybe(c.req.param("title"));
190
+ if (!title)
191
+ return c.json({ success: false, error: "Invalid title" }, 400);
192
+ const result = await context.client.run_internal_plugin_action({
193
+ plugin_name: "task",
194
+ action_name: "delete",
195
+ payload: {
196
+ title,
197
+ },
198
+ });
199
+ return c.json(normalizePluginActionResponse(result), result.success ? 200 : 400);
200
+ }
201
+ catch (error) {
202
+ return c.json({ success: false, error: String(error) }, 500);
203
+ }
204
+ });
205
+ app.get("/api/dashboard/logs", async (c) => {
206
+ try {
207
+ const context = await resolveDashboardAgentContext(params, c.req.raw);
208
+ if (!context)
209
+ return agentUnavailableResponse();
210
+ const logs = await readRecentLogs({
211
+ projectRoot: context.agent.projectRoot,
212
+ limit: toLimit(c.req.query("limit"), 200),
213
+ });
214
+ return c.json({
215
+ success: true,
216
+ logs,
217
+ });
218
+ }
219
+ catch (error) {
220
+ return c.json({ success: false, error: String(error) }, 500);
221
+ }
222
+ });
223
+ }
224
+ async function resolveDashboardAgentContext(params, request) {
225
+ const requested_agent_id = params.readRequestedAgentId(request);
226
+ const agent = await params.resolveSelectedAgent(requested_agent_id);
227
+ if (!agent || agent.running !== true)
228
+ return null;
229
+ const client = params.agentRpcPool.resolveClientForAgent(agent);
230
+ if (!client)
231
+ return null;
232
+ return {
233
+ agent,
234
+ client,
235
+ };
236
+ }
237
+ function agentUnavailableResponse() {
238
+ return new Response(JSON.stringify({
239
+ success: false,
240
+ error: "No running agent found. Start one via `town agent start` first.",
241
+ }), {
242
+ status: 503,
243
+ headers: {
244
+ "Content-Type": "application/json",
245
+ },
246
+ });
247
+ }
248
+ function normalizePluginActionResponse(input) {
249
+ const data = input.data && typeof input.data === "object" && !Array.isArray(input.data)
250
+ ? input.data
251
+ : {};
252
+ return {
253
+ success: input.success === true,
254
+ ...data,
255
+ ...(input.message ? { message: input.message } : {}),
256
+ ...(input.error ? { error: input.error } : {}),
257
+ };
258
+ }
259
+ async function listTasksViaRpc(params) {
260
+ const payload = await params.client.run_internal_plugin_action({
261
+ plugin_name: "task",
262
+ action_name: "list",
263
+ payload: {},
264
+ });
265
+ if (!payload.success) {
266
+ throw new Error(payload.error || payload.message || "task list failed");
267
+ }
268
+ const data = payload.data && typeof payload.data === "object" && !Array.isArray(payload.data)
269
+ ? payload.data
270
+ : {};
271
+ return Array.isArray(data.tasks) ? data.tasks : [];
272
+ }
273
+ function getDowncityTasksDirPath(project_root) {
274
+ return path.join(getDowncityDirPath(project_root), "task");
275
+ }
276
+ function normalizeTaskId(input) {
277
+ const id = String(input || "").trim();
278
+ if (!TASK_ID_REGEXP.test(id)) {
279
+ throw new Error(`Invalid taskId: "${id}"`);
280
+ }
281
+ return id;
282
+ }
283
+ function deriveTaskIdFromTitle(title) {
284
+ const normalized = String(title || "")
285
+ .normalize("NFKC")
286
+ .replace(/[\\/:\u0000]/g, " ")
287
+ .replace(/[^\p{L}\p{N}_\-\s]/gu, " ")
288
+ .replace(/\s+/g, " ")
289
+ .trim()
290
+ .slice(0, 64)
291
+ .trim();
292
+ return normalizeTaskId(normalized);
293
+ }
294
+ function resolveTaskIdFromTaskMdPath(task_md_path) {
295
+ const text = String(task_md_path || "").trim();
296
+ if (!text)
297
+ return "";
298
+ return path.basename(path.dirname(text));
299
+ }
300
+ async function readTaskRunningState(params) {
301
+ const task_id = resolveTaskIdFromTaskMdPath(params.task.taskMdPath) ||
302
+ deriveTaskIdFromTitle(String(params.task.title || ""));
303
+ const timestamp = String(params.task.lastRunTimestamp || "").trim();
304
+ if (!task_id || !timestamp || !TASK_RUN_DIR_REGEX.test(timestamp))
305
+ return false;
306
+ const progress_path = path.join(getDowncityTasksDirPath(params.project_root), task_id, timestamp, "run-progress.json");
307
+ const progress = (await fs.readJson(progress_path).catch(() => null));
308
+ return String(progress?.status || "").trim().toLowerCase() === "running";
309
+ }
310
+ async function deleteTaskRun(params) {
311
+ const task_dir = resolveTaskDir(params.projectRoot, params.title);
312
+ const run_dir = path.join(task_dir, params.timestamp);
313
+ if (!(await fs.pathExists(run_dir)))
314
+ return false;
315
+ const progress = (await fs.readJson(path.join(run_dir, "run-progress.json")).catch(() => null));
316
+ if (String(progress?.status || "").trim().toLowerCase() === "running") {
317
+ throw new Error("Run is still in progress and cannot be deleted");
318
+ }
319
+ await fs.remove(run_dir);
320
+ return true;
321
+ }
322
+ async function clearTaskRuns(params) {
323
+ const task_dir = resolveTaskDir(params.projectRoot, params.title);
324
+ if (!(await fs.pathExists(task_dir))) {
325
+ return {
326
+ deletedCount: 0,
327
+ skippedRunningCount: 0,
328
+ deletedTimestamps: [],
329
+ skippedRunningTimestamps: [],
330
+ };
331
+ }
332
+ const entries = await fs.readdir(task_dir, { withFileTypes: true });
333
+ const timestamps = entries
334
+ .filter((item) => item.isDirectory() && TASK_RUN_DIR_REGEX.test(item.name))
335
+ .map((item) => item.name)
336
+ .sort();
337
+ const deleted_timestamps = [];
338
+ const skipped_running_timestamps = [];
339
+ for (const timestamp of timestamps) {
340
+ const run_dir = path.join(task_dir, timestamp);
341
+ const progress = (await fs.readJson(path.join(run_dir, "run-progress.json")).catch(() => null));
342
+ if (String(progress?.status || "").trim().toLowerCase() === "running") {
343
+ skipped_running_timestamps.push(timestamp);
344
+ continue;
345
+ }
346
+ await fs.remove(run_dir);
347
+ deleted_timestamps.push(timestamp);
348
+ }
349
+ return {
350
+ deletedCount: deleted_timestamps.length,
351
+ skippedRunningCount: skipped_running_timestamps.length,
352
+ deletedTimestamps: deleted_timestamps,
353
+ skippedRunningTimestamps: skipped_running_timestamps,
354
+ };
355
+ }
356
+ function resolveTaskDir(project_root, title) {
357
+ const task_id = deriveTaskIdFromTitle(title);
358
+ return path.join(getDowncityTasksDirPath(project_root), task_id);
359
+ }
360
+ function toLimit(raw, fallback) {
361
+ const parsed = Number.parseInt(String(raw || "").trim(), 10);
362
+ if (!Number.isFinite(parsed) || Number.isNaN(parsed))
363
+ return fallback;
364
+ return Math.max(1, Math.min(parsed, 500));
365
+ }
366
+ function decodeMaybe(value) {
367
+ try {
368
+ return decodeURIComponent(String(value || "")).trim();
369
+ }
370
+ catch {
371
+ return String(value || "").trim();
372
+ }
373
+ }
374
+ //# sourceMappingURL=DashboardTaskApiRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardTaskApiRoutes.js","sourceRoot":"","sources":["../../src/control/DashboardTaskApiRoutes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformApiRoutes.d.ts","sourceRoot":"","sources":["../../src/control/PlatformApiRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlatformApiRoutes.d.ts","sourceRoot":"","sources":["../../src/control/PlatformApiRoutes.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,8 @@ import { registerPlatformChannelAccountRoutes } from "../control/ChannelAccountA
11
11
  import { registerPlatformEnvRoutes } from "../control/EnvApiRoutes.js";
12
12
  import { registerPlatformAgentStatusRoutes } from "../control/AgentStatusApiRoutes.js";
13
13
  import { registerPlatformPluginRoutes } from "../control/PluginApiRoutes.js";
14
+ import { registerDashboardTaskApiRoutes } from "../control/DashboardTaskApiRoutes.js";
15
+ import { registerDashboardSessionApiRoutes } from "../control/DashboardSessionApiRoutes.js";
14
16
  import { buildPlatformWorkloadBlockPayload } from "../control/gateway/GatewaySupport.js";
15
17
  /**
16
18
  * 注册平台控制面 API 路由。
@@ -252,6 +254,18 @@ export function registerPlatformApiRoutes(params) {
252
254
  resolveSelectedAgent: (requestedAgentId) => handlers.resolveSelectedAgent(requestedAgentId),
253
255
  agentRpcPool: handlers.agentRpcPool,
254
256
  });
257
+ registerDashboardTaskApiRoutes({
258
+ app,
259
+ readRequestedAgentId: (request) => handlers.readRequestedAgentId(request),
260
+ resolveSelectedAgent: (requestedAgentId) => handlers.resolveSelectedAgent(requestedAgentId),
261
+ agentRpcPool: handlers.agentRpcPool,
262
+ });
263
+ registerDashboardSessionApiRoutes({
264
+ app,
265
+ readRequestedAgentId: (request) => handlers.readRequestedAgentId(request),
266
+ resolveSelectedAgent: (requestedAgentId) => handlers.resolveSelectedAgent(requestedAgentId),
267
+ agentRpcPool: handlers.agentRpcPool,
268
+ });
255
269
  app.all("/api/*", async (c) => {
256
270
  try {
257
271
  const reqUrl = new URL(c.req.url);
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformApiRoutes.js","sourceRoot":"","sources":["../../src/control/PlatformApiRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlatformApiRoutes.js","sourceRoot":"","sources":["../../src/control/PlatformApiRoutes.ts"],"names":[],"mappings":"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"}