downcity 1.1.85 → 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.
- package/package.json +4 -4
- package/town/agent/AgentHttpGateway.d.ts +48 -0
- package/town/agent/AgentHttpGateway.d.ts.map +1 -0
- package/town/agent/AgentHttpGateway.js +128 -0
- package/town/agent/AgentHttpGateway.js.map +1 -0
- package/town/agent/Run.d.ts.map +1 -1
- package/town/agent/Run.js +3 -2
- package/town/agent/Run.js.map +1 -1
- package/town/agent/http/control/ControlApiRoutes.d.ts +14 -0
- package/town/agent/http/control/ControlApiRoutes.d.ts.map +1 -0
- package/town/agent/http/control/ControlApiRoutes.js +25 -0
- package/town/agent/http/control/ControlApiRoutes.js.map +1 -0
- package/town/agent/http/control/ControlAuthorizationRoutes.d.ts +17 -0
- package/town/agent/http/control/ControlAuthorizationRoutes.d.ts.map +1 -0
- package/town/agent/http/control/ControlAuthorizationRoutes.js +84 -0
- package/town/agent/http/control/ControlAuthorizationRoutes.js.map +1 -0
- package/town/agent/http/control/ControlRouter.d.ts +35 -0
- package/town/agent/http/control/ControlRouter.d.ts.map +1 -0
- package/town/agent/http/control/ControlRouter.js +28 -0
- package/town/agent/http/control/ControlRouter.js.map +1 -0
- package/town/agent/http/control/OverviewRoutes.d.ts +13 -0
- package/town/agent/http/control/OverviewRoutes.d.ts.map +1 -0
- package/town/agent/http/control/OverviewRoutes.js +101 -0
- package/town/agent/http/control/OverviewRoutes.js.map +1 -0
- package/town/agent/http/control/SessionRoutes.d.ts +14 -0
- package/town/agent/http/control/SessionRoutes.d.ts.map +1 -0
- package/town/agent/http/control/SessionRoutes.js +334 -0
- package/town/agent/http/control/SessionRoutes.js.map +1 -0
- package/town/agent/http/control/TaskRoutes.d.ts +13 -0
- package/town/agent/http/control/TaskRoutes.d.ts.map +1 -0
- package/town/agent/http/control/TaskRoutes.js +364 -0
- package/town/agent/http/control/TaskRoutes.js.map +1 -0
- package/town/agent/http/control/types/ControlRoutes.d.ts +28 -0
- package/town/agent/http/control/types/ControlRoutes.d.ts.map +1 -0
- package/town/agent/http/control/types/ControlRoutes.js +9 -0
- package/town/agent/http/control/types/ControlRoutes.js.map +1 -0
- package/town/agent/http/execute/execute.d.ts +25 -0
- package/town/agent/http/execute/execute.d.ts.map +1 -0
- package/town/agent/http/execute/execute.js +63 -0
- package/town/agent/http/execute/execute.js.map +1 -0
- package/town/agent/http/health/health.d.ts +14 -0
- package/town/agent/http/health/health.d.ts.map +1 -0
- package/town/agent/http/health/health.js +24 -0
- package/town/agent/http/health/health.js.map +1 -0
- package/town/agent/http/plugins/plugins.d.ts +25 -0
- package/town/agent/http/plugins/plugins.d.ts.map +1 -0
- package/town/agent/http/plugins/plugins.js +114 -0
- package/town/agent/http/plugins/plugins.js.map +1 -0
- package/town/agent/http/sdk/Router.d.ts +14 -0
- package/town/agent/http/sdk/Router.d.ts.map +1 -0
- package/town/agent/http/sdk/Router.js +18 -0
- package/town/agent/http/sdk/Router.js.map +1 -0
- package/town/agent/http/sdk/SessionRoutes.d.ts +15 -0
- package/town/agent/http/sdk/SessionRoutes.d.ts.map +1 -0
- package/town/agent/http/sdk/SessionRoutes.js +249 -0
- package/town/agent/http/sdk/SessionRoutes.js.map +1 -0
- package/town/agent/http/static/static.d.ts +25 -0
- package/town/agent/http/static/static.d.ts.map +1 -0
- package/town/agent/http/static/static.js +99 -0
- package/town/agent/http/static/static.js.map +1 -0
- package/town/control/ControlGateway.d.ts +1 -3
- package/town/control/ControlGateway.d.ts.map +1 -1
- package/town/control/ControlGateway.js +1 -10
- package/town/control/ControlGateway.js.map +1 -1
- package/town/control/DashboardOverviewApiRoutes.js +1 -1
- package/town/control/DashboardOverviewApiRoutes.js.map +1 -1
- package/town/control/DashboardRuntimeApiRoutes.d.ts +29 -0
- package/town/control/DashboardRuntimeApiRoutes.d.ts.map +1 -0
- package/town/control/DashboardRuntimeApiRoutes.js +183 -0
- package/town/control/DashboardRuntimeApiRoutes.js.map +1 -0
- package/town/control/DashboardSessionApiRoutes.d.ts +2 -2
- package/town/control/DashboardSessionApiRoutes.js +3 -3
- package/town/control/DashboardSessionApiRoutes.js.map +1 -1
- package/town/control/DashboardTaskApiRoutes.js +1 -1
- package/town/control/DashboardTaskApiRoutes.js.map +1 -1
- package/town/control/PlatformApiRoutes.d.ts +0 -4
- package/town/control/PlatformApiRoutes.d.ts.map +1 -1
- package/town/control/PlatformApiRoutes.js +6 -30
- package/town/control/PlatformApiRoutes.js.map +1 -1
- package/town/process/daemon/Manager.d.ts +1 -1
- package/town/process/daemon/Manager.d.ts.map +1 -1
- package/town/process/daemon/Manager.js +1 -1
- package/town/process/daemon/Manager.js.map +1 -1
- package/town/process/daemon/Types.d.ts +42 -0
- package/town/process/daemon/Types.d.ts.map +1 -0
- package/town/process/daemon/Types.js +14 -0
- package/town/process/daemon/Types.js.map +1 -0
- package/town/control/gateway/Proxy.d.ts +0 -16
- package/town/control/gateway/Proxy.d.ts.map +0 -1
- package/town/control/gateway/Proxy.js +0 -47
- package/town/control/gateway/Proxy.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "downcity",
|
|
3
|
-
"version": "1.1.
|
|
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/
|
|
49
|
-
"@downcity/
|
|
50
|
-
"@downcity/
|
|
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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"}
|
package/town/agent/Run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Run.d.ts","sourceRoot":"","sources":["../../src/agent/Run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
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,
|
|
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
|
|
109
|
+
const server = await startAgentHttpGateway({
|
|
109
110
|
host,
|
|
110
111
|
port,
|
|
111
112
|
getAgentRuntime: () => agent.getRuntime(),
|
package/town/agent/Run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Run.js","sourceRoot":"","sources":["../../src/agent/Run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,KAAK,EACL,kBAAkB,EAClB,uBAAuB,EACvB,UAAU,EACV,
|
|
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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"}
|