downcity 1.1.86 → 1.1.87

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.
Files changed (74) hide show
  1. package/package.json +4 -4
  2. package/town/agent/AgentHttpGateway.d.ts +48 -0
  3. package/town/agent/AgentHttpGateway.d.ts.map +1 -0
  4. package/town/agent/AgentHttpGateway.js +128 -0
  5. package/town/agent/AgentHttpGateway.js.map +1 -0
  6. package/town/agent/Run.d.ts.map +1 -1
  7. package/town/agent/Run.js +3 -2
  8. package/town/agent/Run.js.map +1 -1
  9. package/town/agent/http/control/ControlApiRoutes.d.ts +14 -0
  10. package/town/agent/http/control/ControlApiRoutes.d.ts.map +1 -0
  11. package/town/agent/http/control/ControlApiRoutes.js +25 -0
  12. package/town/agent/http/control/ControlApiRoutes.js.map +1 -0
  13. package/town/agent/http/control/ControlAuthorizationRoutes.d.ts +17 -0
  14. package/town/agent/http/control/ControlAuthorizationRoutes.d.ts.map +1 -0
  15. package/town/agent/http/control/ControlAuthorizationRoutes.js +84 -0
  16. package/town/agent/http/control/ControlAuthorizationRoutes.js.map +1 -0
  17. package/town/agent/http/control/ControlRouter.d.ts +35 -0
  18. package/town/agent/http/control/ControlRouter.d.ts.map +1 -0
  19. package/town/agent/http/control/ControlRouter.js +28 -0
  20. package/town/agent/http/control/ControlRouter.js.map +1 -0
  21. package/town/agent/http/control/OverviewRoutes.d.ts +13 -0
  22. package/town/agent/http/control/OverviewRoutes.d.ts.map +1 -0
  23. package/town/agent/http/control/OverviewRoutes.js +101 -0
  24. package/town/agent/http/control/OverviewRoutes.js.map +1 -0
  25. package/town/agent/http/control/SessionRoutes.d.ts +14 -0
  26. package/town/agent/http/control/SessionRoutes.d.ts.map +1 -0
  27. package/town/agent/http/control/SessionRoutes.js +334 -0
  28. package/town/agent/http/control/SessionRoutes.js.map +1 -0
  29. package/town/agent/http/control/TaskRoutes.d.ts +13 -0
  30. package/town/agent/http/control/TaskRoutes.d.ts.map +1 -0
  31. package/town/agent/http/control/TaskRoutes.js +364 -0
  32. package/town/agent/http/control/TaskRoutes.js.map +1 -0
  33. package/town/agent/http/control/types/ControlRoutes.d.ts +28 -0
  34. package/town/agent/http/control/types/ControlRoutes.d.ts.map +1 -0
  35. package/town/agent/http/control/types/ControlRoutes.js +9 -0
  36. package/town/agent/http/control/types/ControlRoutes.js.map +1 -0
  37. package/town/agent/http/execute/execute.d.ts +25 -0
  38. package/town/agent/http/execute/execute.d.ts.map +1 -0
  39. package/town/agent/http/execute/execute.js +63 -0
  40. package/town/agent/http/execute/execute.js.map +1 -0
  41. package/town/agent/http/health/health.d.ts +14 -0
  42. package/town/agent/http/health/health.d.ts.map +1 -0
  43. package/town/agent/http/health/health.js +24 -0
  44. package/town/agent/http/health/health.js.map +1 -0
  45. package/town/agent/http/plugins/plugins.d.ts +25 -0
  46. package/town/agent/http/plugins/plugins.d.ts.map +1 -0
  47. package/town/agent/http/plugins/plugins.js +114 -0
  48. package/town/agent/http/plugins/plugins.js.map +1 -0
  49. package/town/agent/http/sdk/Router.d.ts +14 -0
  50. package/town/agent/http/sdk/Router.d.ts.map +1 -0
  51. package/town/agent/http/sdk/Router.js +18 -0
  52. package/town/agent/http/sdk/Router.js.map +1 -0
  53. package/town/agent/http/sdk/SessionRoutes.d.ts +15 -0
  54. package/town/agent/http/sdk/SessionRoutes.d.ts.map +1 -0
  55. package/town/agent/http/sdk/SessionRoutes.js +249 -0
  56. package/town/agent/http/sdk/SessionRoutes.js.map +1 -0
  57. package/town/agent/http/static/static.d.ts +25 -0
  58. package/town/agent/http/static/static.d.ts.map +1 -0
  59. package/town/agent/http/static/static.js +99 -0
  60. package/town/agent/http/static/static.js.map +1 -0
  61. package/town/control/DashboardOverviewApiRoutes.js +1 -1
  62. package/town/control/DashboardOverviewApiRoutes.js.map +1 -1
  63. package/town/control/DashboardSessionApiRoutes.js +1 -1
  64. package/town/control/DashboardSessionApiRoutes.js.map +1 -1
  65. package/town/control/DashboardTaskApiRoutes.js +1 -1
  66. package/town/control/DashboardTaskApiRoutes.js.map +1 -1
  67. package/town/process/daemon/Manager.d.ts +1 -1
  68. package/town/process/daemon/Manager.d.ts.map +1 -1
  69. package/town/process/daemon/Manager.js +1 -1
  70. package/town/process/daemon/Manager.js.map +1 -1
  71. package/town/process/daemon/Types.d.ts +42 -0
  72. package/town/process/daemon/Types.d.ts.map +1 -0
  73. package/town/process/daemon/Types.js +14 -0
  74. package/town/process/daemon/Types.js.map +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "downcity",
3
- "version": "1.1.86",
3
+ "version": "1.1.87",
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/agent": "^1.1.71",
49
- "@downcity/city": "^0.2.33",
50
- "@downcity/plugins": "^1.0.27"
48
+ "@downcity/city": "^0.2.34",
49
+ "@downcity/agent": "^1.1.72",
50
+ "@downcity/plugins": "^1.0.28"
51
51
  },
52
52
  "scripts": {
53
53
  "build": "node scripts/copy-cli-products.mjs && node scripts/ensure-cli-executable.mjs",
@@ -0,0 +1,48 @@
1
+ /**
2
+ * AgentHttpGateway:Town 托管的 Agent HTTP 网关。
3
+ *
4
+ * 职责说明(中文)
5
+ * - 由 `town agent start` 启动 HTTP 入口,对外承载控制面、plugin 与 SDK HTTP 路由。
6
+ * - Agent 进程本体只暴露本机 RPC;HTTP server 生命周期归 Town CLI 管理。
7
+ * - HTTP route 实现放在 Town 内部,Agent 只提供 runtime/context/sessionCollection。
8
+ */
9
+ import { Hono } from "hono";
10
+ import http from "node:http";
11
+ import type { AgentRuntime } from "@downcity/agent/internal/types/runtime/agent/AgentRuntime.js";
12
+ import type { AgentContext } from "@downcity/agent/internal/types/runtime/agent/AgentContext.js";
13
+ import type { AgentSessionCollection } from "@downcity/agent";
14
+ /**
15
+ * Agent HTTP 网关启动参数。
16
+ */
17
+ export interface AgentHttpGatewayStartOptions {
18
+ /** HTTP 服务监听端口。 */
19
+ port: number;
20
+ /** HTTP 服务监听主机。 */
21
+ host: string;
22
+ /** 当前 agent runtime 读取函数。 */
23
+ getAgentRuntime: () => AgentRuntime;
24
+ /** 当前 agent context 读取函数。 */
25
+ getAgentContext: () => AgentContext;
26
+ /** 可选 SDK Session 集合绑定。 */
27
+ sessionCollection?: AgentSessionCollection;
28
+ }
29
+ /**
30
+ * Agent HTTP 网关运行实例。
31
+ */
32
+ export interface AgentHttpGatewayInstance {
33
+ /** Hono 应用实例。 */
34
+ app: Hono;
35
+ /** 原生 HTTP Server 实例。 */
36
+ server: http.Server;
37
+ /** 停止当前服务。 */
38
+ stop(): Promise<void>;
39
+ }
40
+ /**
41
+ * 创建 Agent HTTP 网关 Hono 应用。
42
+ */
43
+ export declare function createAgentHttpGatewayApp(options: Pick<AgentHttpGatewayStartOptions, "getAgentRuntime" | "getAgentContext" | "sessionCollection">): Hono;
44
+ /**
45
+ * 启动 Town 托管的 Agent HTTP 网关。
46
+ */
47
+ export declare function startAgentHttpGateway(options: AgentHttpGatewayStartOptions): Promise<AgentHttpGatewayInstance>;
48
+ //# sourceMappingURL=AgentHttpGateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentHttpGateway.d.ts","sourceRoot":"","sources":["../../src/agent/AgentHttpGateway.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAC;AACjG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAC;AACjG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,eAAe,EAAE,MAAM,YAAY,CAAC;IACpC,6BAA6B;IAC7B,eAAe,EAAE,MAAM,YAAY,CAAC;IACpC,2BAA2B;IAC3B,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iBAAiB;IACjB,GAAG,EAAE,IAAI,CAAC;IACV,yBAAyB;IACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,cAAc;IACd,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,IAAI,CACX,4BAA4B,EAC5B,iBAAiB,GAAG,iBAAiB,GAAG,mBAAmB,CAC5D,GACA,IAAI,CAwCN;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,wBAAwB,CAAC,CAwBnC"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * AgentHttpGateway:Town 托管的 Agent HTTP 网关。
3
+ *
4
+ * 职责说明(中文)
5
+ * - 由 `town agent start` 启动 HTTP 入口,对外承载控制面、plugin 与 SDK HTTP 路由。
6
+ * - Agent 进程本体只暴露本机 RPC;HTTP server 生命周期归 Town CLI 管理。
7
+ * - HTTP route 实现放在 Town 内部,Agent 只提供 runtime/context/sessionCollection。
8
+ */
9
+ import { Hono } from "hono";
10
+ import { cors } from "hono/cors";
11
+ import { logger } from "hono/logger";
12
+ import http from "node:http";
13
+ import { Readable } from "node:stream";
14
+ import { finished } from "node:stream/promises";
15
+ import { logger as serverLogger } from "@downcity/agent/internal/utils/logger/Logger.js";
16
+ import { createExecuteRouter } from "../agent/http/execute/execute.js";
17
+ import { healthRouter } from "../agent/http/health/health.js";
18
+ import { createPluginsRouter } from "../agent/http/plugins/plugins.js";
19
+ import { createStaticRouter } from "../agent/http/static/static.js";
20
+ import { createControlRouter } from "../agent/http/control/ControlRouter.js";
21
+ import { createSdkRouter } from "../agent/http/sdk/Router.js";
22
+ /**
23
+ * 创建 Agent HTTP 网关 Hono 应用。
24
+ */
25
+ export function createAgentHttpGatewayApp(options) {
26
+ const app = new Hono();
27
+ app.use("*", logger());
28
+ app.use("*", cors({
29
+ origin: "*",
30
+ allowMethods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
31
+ allowHeaders: ["Content-Type", "Authorization"],
32
+ }));
33
+ // 关键点(中文):HTTP 协议面由 Town 装配,Agent 只提供 runtime/context。
34
+ app.route("/", createStaticRouter({
35
+ getAgentRuntime: options.getAgentRuntime,
36
+ }));
37
+ app.route("/", healthRouter);
38
+ app.route("/", createPluginsRouter({
39
+ getAgentContext: options.getAgentContext,
40
+ }));
41
+ app.route("/", createExecuteRouter({
42
+ getAgentRuntime: options.getAgentRuntime,
43
+ }));
44
+ app.route("/", createControlRouter({
45
+ getAgentRuntime: options.getAgentRuntime,
46
+ getAgentContext: options.getAgentContext,
47
+ }));
48
+ if (options.sessionCollection) {
49
+ app.route("/", createSdkRouter(options.sessionCollection));
50
+ }
51
+ for (const plugin of options.getAgentContext().agent.pluginInstances.values()) {
52
+ plugin.http?.server?.register({
53
+ app,
54
+ getContext: options.getAgentContext,
55
+ pluginName: plugin.name,
56
+ });
57
+ }
58
+ return app;
59
+ }
60
+ /**
61
+ * 启动 Town 托管的 Agent HTTP 网关。
62
+ */
63
+ export async function startAgentHttpGateway(options) {
64
+ const app = createAgentHttpGatewayApp(options);
65
+ const server = createNodeServer(app, options);
66
+ await new Promise((resolve) => {
67
+ server.listen(options.port, options.host, () => {
68
+ serverLogger.info(`🚀 Town Agent HTTP gateway started: http://${options.host}:${options.port}`);
69
+ resolve();
70
+ });
71
+ });
72
+ return {
73
+ app,
74
+ server,
75
+ async stop() {
76
+ await serverLogger.saveAllLogs();
77
+ await new Promise((resolve) => {
78
+ server.close(() => resolve());
79
+ });
80
+ serverLogger.info("Town Agent HTTP gateway stopped");
81
+ },
82
+ };
83
+ }
84
+ /**
85
+ * 创建 Node HTTP Server 适配层。
86
+ */
87
+ function createNodeServer(app, options) {
88
+ return http.createServer(async (req, res) => {
89
+ try {
90
+ const url = new URL(req.url || "/", `http://${options.host}:${options.port}`);
91
+ const method = req.method || "GET";
92
+ const bodyBuffer = await readRequestBody(req);
93
+ const request = new Request(url.toString(), {
94
+ method,
95
+ headers: new Headers(req.headers),
96
+ body: bodyBuffer.length > 0 ? bodyBuffer : undefined,
97
+ });
98
+ const response = await app.fetch(request);
99
+ res.statusCode = response.status;
100
+ for (const [key, value] of response.headers.entries()) {
101
+ res.setHeader(key, value);
102
+ }
103
+ if (!response.body) {
104
+ res.end();
105
+ return;
106
+ }
107
+ const bodyStream = Readable.fromWeb(response.body);
108
+ bodyStream.pipe(res);
109
+ await finished(bodyStream).catch(() => undefined);
110
+ }
111
+ catch {
112
+ res.statusCode = 500;
113
+ res.end("Internal Server Error");
114
+ }
115
+ });
116
+ }
117
+ /**
118
+ * 读取原生请求体。
119
+ */
120
+ async function readRequestBody(req) {
121
+ return new Promise((resolve, reject) => {
122
+ const chunks = [];
123
+ req.on("data", (chunk) => chunks.push(chunk));
124
+ req.on("end", () => resolve(Buffer.concat(chunks)));
125
+ req.on("error", reject);
126
+ });
127
+ }
128
+ //# sourceMappingURL=AgentHttpGateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentHttpGateway.js","sourceRoot":"","sources":["../../src/agent/AgentHttpGateway.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Run.d.ts","sourceRoot":"","sources":["../../src/agent/Run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMpD;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,YAAM,EACjB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAyHf"}
1
+ {"version":3,"file":"Run.d.ts","sourceRoot":"","sources":["../../src/agent/Run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOpD;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,YAAM,EACjB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAyHf"}
package/town/agent/Run.js CHANGED
@@ -10,12 +10,13 @@
10
10
  * `town agent restart` 管理。
11
11
  */
12
12
  import path from "node:path";
13
- import { Agent, loadDowncityConfig, loadStaticSystemPrompts, shellTools, startServer, StaticPromptCatalog, } from "@downcity/agent";
13
+ import { Agent, loadDowncityConfig, loadStaticSystemPrompts, shellTools, StaticPromptCatalog, } from "@downcity/agent";
14
14
  import { createBuiltinPlugins } from "@downcity/plugins";
15
15
  import { CliError } from "../shared/CliError.js";
16
16
  import { createRuntimeModel } from "../model/runtime/CreateRuntimeModel.js";
17
17
  import { readPlatformGlobalEnv } from "../env/ProcessEnv.js";
18
18
  import { resolveAgentId } from "../shared/IndexSupport.js";
19
+ import { startAgentHttpGateway } from "../agent/AgentHttpGateway.js";
19
20
  /**
20
21
  * 前台启动入口(由 `agent start` 前台模式与内部 daemon 子进程复用)。
21
22
  *
@@ -105,7 +106,7 @@ export async function runCommand(cwd = ".", options) {
105
106
  if (!startResult.rpc?.server) {
106
107
  throw new Error("Agent start did not return expected RPC binding");
107
108
  }
108
- const server = await startServer({
109
+ const server = await startAgentHttpGateway({
109
110
  host,
110
111
  port,
111
112
  getAgentRuntime: () => agent.getRuntime(),
@@ -1 +1 @@
1
- {"version":3,"file":"Run.js","sourceRoot":"","sources":["../../src/agent/Run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Run.js","sourceRoot":"","sources":["../../src/agent/Run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Agent Control API 路由聚合入口。
3
+ *
4
+ * 关键点(中文)
5
+ * - 本文件只做模块装配,不再承载具体业务逻辑。
6
+ * - 单 agent control API 子路由按 overview/session/task/auth 四类拆分,便于继续维护。
7
+ * - 单 agent control API 统一暴露在 `/api/control/*` 下。
8
+ */
9
+ import type { ControlRouteRegistrationParams } from "../../../agent/http/control/types/ControlRoutes.js";
10
+ /**
11
+ * 注册单 agent control API 路由。
12
+ */
13
+ export declare function registerControlApiRoutes(params: ControlRouteRegistrationParams): void;
14
+ //# sourceMappingURL=ControlApiRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlApiRoutes.d.ts","sourceRoot":"","sources":["../../../../src/agent/http/control/ControlApiRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAMlG;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,8BAA8B,GACrC,IAAI,CAQN"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Agent Control API 路由聚合入口。
3
+ *
4
+ * 关键点(中文)
5
+ * - 本文件只做模块装配,不再承载具体业务逻辑。
6
+ * - 单 agent control API 子路由按 overview/session/task/auth 四类拆分,便于继续维护。
7
+ * - 单 agent control API 统一暴露在 `/api/control/*` 下。
8
+ */
9
+ import { registerControlAuthorizationRoutes } from "../../../agent/http/control/ControlAuthorizationRoutes.js";
10
+ import { registerControlSessionRoutes } from "../../../agent/http/control/SessionRoutes.js";
11
+ import { registerControlOverviewRoutes } from "../../../agent/http/control/OverviewRoutes.js";
12
+ import { registerControlTaskRoutes } from "../../../agent/http/control/TaskRoutes.js";
13
+ /**
14
+ * 注册单 agent control API 路由。
15
+ */
16
+ export function registerControlApiRoutes(params) {
17
+ registerControlAuthorizationRoutes({
18
+ app: params.app,
19
+ getAgentContext: params.getAgentContext,
20
+ });
21
+ registerControlOverviewRoutes(params);
22
+ registerControlSessionRoutes(params);
23
+ registerControlTaskRoutes(params);
24
+ }
25
+ //# sourceMappingURL=ControlApiRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlApiRoutes.js","sourceRoot":"","sources":["../../../../src/agent/http/control/ControlApiRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,kCAAkC,EAAE,MAAM,oDAAoD,CAAC;AACxG,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAsC;IAEtC,kCAAkC,CAAC;QACjC,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,eAAe,EAAE,MAAM,CAAC,eAAe;KACxC,CAAC,CAAC;IACH,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Agent Control Authorization 路由。
3
+ *
4
+ * 关键点(中文)
5
+ * - 单独承接 `/api/control/authorization*`。
6
+ * - 授权页面的数据统一通过 auth plugin API 读取与写入。
7
+ */
8
+ import type { Hono } from "hono";
9
+ import type { AgentContext } from "@downcity/agent/internal/types/runtime/agent/AgentContext.js";
10
+ /**
11
+ * 注册 authorization 相关路由。
12
+ */
13
+ export declare function registerControlAuthorizationRoutes(params: {
14
+ app: Hono;
15
+ getAgentContext: () => AgentContext;
16
+ }): void;
17
+ //# sourceMappingURL=ControlAuthorizationRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlAuthorizationRoutes.d.ts","sourceRoot":"","sources":["../../../../src/agent/http/control/ControlAuthorizationRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAC;AAejG;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE;IACzD,GAAG,EAAE,IAAI,CAAC;IACV,eAAe,EAAE,MAAM,YAAY,CAAC;CACrC,GAAG,IAAI,CAwEP"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Agent Control Authorization 路由。
3
+ *
4
+ * 关键点(中文)
5
+ * - 单独承接 `/api/control/authorization*`。
6
+ * - 授权页面的数据统一通过 auth plugin API 读取与写入。
7
+ */
8
+ import { readAuthControlPayload, setAuthControlUserRole, writeAuthControlConfig, } from "@downcity/agent/internal/runtime/control/AuthControlService.js";
9
+ import { buildControlRouteAliases } from "@downcity/agent/internal/runtime/control/CommonHelpers.js";
10
+ function normalizeChatChannel(value) {
11
+ const text = String(value || "").trim().toLowerCase();
12
+ if (text === "telegram" || text === "feishu" || text === "qq")
13
+ return text;
14
+ return null;
15
+ }
16
+ /**
17
+ * 注册 authorization 相关路由。
18
+ */
19
+ export function registerControlAuthorizationRoutes(params) {
20
+ const { app, getAgentContext } = params;
21
+ for (const routePath of buildControlRouteAliases("/authorization")) {
22
+ app.get(routePath, async (c) => {
23
+ try {
24
+ const payload = await readAuthControlPayload(getAgentContext());
25
+ return c.json({
26
+ success: true,
27
+ ...payload,
28
+ });
29
+ }
30
+ catch (error) {
31
+ return c.json({ success: false, error: String(error) }, 500);
32
+ }
33
+ });
34
+ }
35
+ for (const routePath of buildControlRouteAliases("/authorization/config")) {
36
+ app.post(routePath, async (c) => {
37
+ try {
38
+ const body = (await c.req.json().catch(() => ({})));
39
+ const payload = await writeAuthControlConfig({
40
+ context: getAgentContext(),
41
+ config: body.config && typeof body.config === "object" ? body.config : {},
42
+ });
43
+ return c.json({
44
+ success: true,
45
+ ...payload,
46
+ });
47
+ }
48
+ catch (error) {
49
+ return c.json({ success: false, error: String(error) }, 500);
50
+ }
51
+ });
52
+ }
53
+ for (const routePath of buildControlRouteAliases("/authorization/action")) {
54
+ app.post(routePath, async (c) => {
55
+ try {
56
+ const body = (await c.req.json().catch(() => ({})));
57
+ const action = String(body.action || "").trim();
58
+ const channel = normalizeChatChannel(body.channel);
59
+ if (!action || !channel) {
60
+ return c.json({ success: false, error: "Missing action/channel" }, 400);
61
+ }
62
+ if (action !== "setUserRole") {
63
+ return c.json({ success: false, error: `Unsupported action: ${action}` }, 400);
64
+ }
65
+ const payload = await setAuthControlUserRole({
66
+ context: getAgentContext(),
67
+ input: {
68
+ channel,
69
+ userId: String(body.userId || "").trim(),
70
+ roleId: String(body.roleId || "").trim(),
71
+ },
72
+ });
73
+ return c.json({
74
+ success: true,
75
+ ...payload,
76
+ });
77
+ }
78
+ catch (error) {
79
+ return c.json({ success: false, error: String(error) }, 500);
80
+ }
81
+ });
82
+ }
83
+ }
84
+ //# sourceMappingURL=ControlAuthorizationRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlAuthorizationRoutes.js","sourceRoot":"","sources":["../../../../src/agent/http/control/ControlAuthorizationRoutes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Agent Control API 路由入口模块。
3
+ *
4
+ * 职责说明:
5
+ * 1. 为单 agent control API 暴露独立 router。
6
+ * 2. 将控制域的 API 装配收敛在 `server/http/control/` 下。
7
+ * 3. server 只负责挂载该 router,不再持有控制面细节。
8
+ *
9
+ * 命名说明(中文)
10
+ * - 这里的 control 指“单 agent 控制域”。
11
+ * - 它不是 city 的 gateway / control plane。
12
+ * - 当前公开路径统一使用 `/api/control/*`。
13
+ */
14
+ import { Hono } from "hono";
15
+ import type { AgentRuntime } from "@downcity/agent/internal/types/runtime/agent/AgentRuntime.js";
16
+ import type { AgentContext } from "@downcity/agent/internal/types/runtime/agent/AgentContext.js";
17
+ /**
18
+ * control router 参数。
19
+ */
20
+ type ControlRouterOptions = {
21
+ /**
22
+ * 读取当前 agent runtime。
23
+ */
24
+ getAgentRuntime: () => AgentRuntime;
25
+ /**
26
+ * 读取当前 agent 执行上下文。
27
+ */
28
+ getAgentContext: () => AgentContext;
29
+ };
30
+ /**
31
+ * 创建单 agent control API 专用路由。
32
+ */
33
+ export declare function createControlRouter(options: ControlRouterOptions): Hono;
34
+ export {};
35
+ //# sourceMappingURL=ControlRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlRouter.d.ts","sourceRoot":"","sources":["../../../../src/agent/http/control/ControlRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAC;AACjG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAC;AAGjG;;GAEG;AACH,KAAK,oBAAoB,GAAG;IAC1B;;OAEG;IACH,eAAe,EAAE,MAAM,YAAY,CAAC;IACpC;;OAEG;IACH,eAAe,EAAE,MAAM,YAAY,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,GAC5B,IAAI,CAQN"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Agent Control API 路由入口模块。
3
+ *
4
+ * 职责说明:
5
+ * 1. 为单 agent control API 暴露独立 router。
6
+ * 2. 将控制域的 API 装配收敛在 `server/http/control/` 下。
7
+ * 3. server 只负责挂载该 router,不再持有控制面细节。
8
+ *
9
+ * 命名说明(中文)
10
+ * - 这里的 control 指“单 agent 控制域”。
11
+ * - 它不是 city 的 gateway / control plane。
12
+ * - 当前公开路径统一使用 `/api/control/*`。
13
+ */
14
+ import { Hono } from "hono";
15
+ import { registerControlApiRoutes } from "../../../agent/http/control/ControlApiRoutes.js";
16
+ /**
17
+ * 创建单 agent control API 专用路由。
18
+ */
19
+ export function createControlRouter(options) {
20
+ const router = new Hono();
21
+ registerControlApiRoutes({
22
+ app: router,
23
+ getAgentRuntime: options.getAgentRuntime,
24
+ getAgentContext: options.getAgentContext,
25
+ });
26
+ return router;
27
+ }
28
+ //# sourceMappingURL=ControlRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlRouter.js","sourceRoot":"","sources":["../../../../src/agent/http/control/ControlRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAgBpF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA6B;IAE7B,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,wBAAwB,CAAC;QACvB,GAAG,EAAE,MAAM;QACX,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Control 概览路由。
3
+ *
4
+ * 关键点(中文)
5
+ * - 聚合 overview 与 plugin 运行态两块轻量只读接口。
6
+ * - 只负责路由层拼装,不承载复杂业务状态机。
7
+ */
8
+ import type { ControlRouteRegistrationParams } from "../../../agent/http/control/types/ControlRoutes.js";
9
+ /**
10
+ * 注册概览与运行态 plugin 路由。
11
+ */
12
+ export declare function registerControlOverviewRoutes(params: ControlRouteRegistrationParams): void;
13
+ //# sourceMappingURL=OverviewRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverviewRoutes.d.ts","sourceRoot":"","sources":["../../../../src/agent/http/control/OverviewRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAoBlG;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,8BAA8B,GACrC,IAAI,CA2EN"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Control 概览路由。
3
+ *
4
+ * 关键点(中文)
5
+ * - 聚合 overview 与 plugin 运行态两块轻量只读接口。
6
+ * - 只负责路由层拼装,不承载复杂业务状态机。
7
+ */
8
+ import fs from "fs-extra";
9
+ import { dirname, join } from "path";
10
+ import { fileURLToPath } from "url";
11
+ import { listPluginStates } from "@downcity/agent/internal/plugin/core/Manager.js";
12
+ import { buildControlRouteAliases, toLimit } from "@downcity/agent/internal/runtime/control/CommonHelpers.js";
13
+ import { listControlSessionSummaries, readRecentLogs } from "@downcity/agent/internal/runtime/control/Helpers.js";
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = dirname(__filename);
16
+ /**
17
+ * 当前 DC 版本号(用于 Overview 显示)。
18
+ */
19
+ const DC_VERSION = (() => {
20
+ try {
21
+ const pkg = fs.readJsonSync(join(__dirname, "../../../package.json"));
22
+ const version = String(pkg?.version || "").trim();
23
+ return version || "unknown";
24
+ }
25
+ catch {
26
+ return "unknown";
27
+ }
28
+ })();
29
+ /**
30
+ * 注册概览与运行态 plugin 路由。
31
+ */
32
+ export function registerControlOverviewRoutes(params) {
33
+ const { app } = params;
34
+ for (const routePath of buildControlRouteAliases("/overview")) {
35
+ app.get(routePath, async (c) => {
36
+ try {
37
+ const runtime = params.getAgentRuntime();
38
+ const sessionLimit = toLimit(c.req.query("sessionLimit") || c.req.query("contextLimit"), 20);
39
+ const sessions = await listControlSessionSummaries({
40
+ projectRoot: runtime.rootPath,
41
+ agentId: runtime.paths.agentId,
42
+ executionContext: params.getAgentContext(),
43
+ limit: sessionLimit,
44
+ });
45
+ const runtimePlugins = listPluginStates({
46
+ context: params.getAgentContext(),
47
+ });
48
+ const taskResult = await params.getAgentContext().plugins.runAction({
49
+ plugin: "task",
50
+ action: "list",
51
+ });
52
+ const taskData = taskResult.data && typeof taskResult.data === "object" && !Array.isArray(taskResult.data)
53
+ ? taskResult.data
54
+ : {};
55
+ const tasks = Array.isArray(taskData.tasks) ? taskData.tasks : [];
56
+ const logs = await readRecentLogs({
57
+ projectRoot: runtime.rootPath,
58
+ limit: 50,
59
+ });
60
+ const statusCount = {
61
+ enabled: tasks.filter((x) => x.status === "enabled").length,
62
+ paused: tasks.filter((x) => x.status === "paused").length,
63
+ disabled: tasks.filter((x) => x.status === "disabled").length,
64
+ };
65
+ return c.json({
66
+ success: true,
67
+ cityVersion: DC_VERSION,
68
+ now: new Date().toISOString(),
69
+ agent: {
70
+ id: runtime.config.id,
71
+ status: "running",
72
+ },
73
+ sessions: {
74
+ total: sessions.length,
75
+ items: sessions,
76
+ },
77
+ plugins: runtimePlugins,
78
+ tasks: {
79
+ total: tasks.length,
80
+ statusCount,
81
+ },
82
+ logs,
83
+ });
84
+ }
85
+ catch (error) {
86
+ return c.json({ success: false, error: String(error) }, 500);
87
+ }
88
+ });
89
+ }
90
+ for (const routePath of buildControlRouteAliases("/plugins/list")) {
91
+ app.get(routePath, (c) => {
92
+ return c.json({
93
+ success: true,
94
+ plugins: listPluginStates({
95
+ context: params.getAgentContext(),
96
+ }),
97
+ });
98
+ });
99
+ }
100
+ }
101
+ //# sourceMappingURL=OverviewRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverviewRoutes.js","sourceRoot":"","sources":["../../../../src/agent/http/control/OverviewRoutes.ts"],"names":[],"mappings":"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"}