@downcity/agent 1.1.126 → 1.1.135

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 (77) hide show
  1. package/bin/agent/local/Agent.d.ts +38 -6
  2. package/bin/agent/local/Agent.d.ts.map +1 -1
  3. package/bin/agent/local/Agent.js +62 -11
  4. package/bin/agent/local/Agent.js.map +1 -1
  5. package/bin/agent/local/AgentRuntimeFactory.d.ts +9 -34
  6. package/bin/agent/local/AgentRuntimeFactory.d.ts.map +1 -1
  7. package/bin/agent/local/AgentRuntimeFactory.js +2 -41
  8. package/bin/agent/local/AgentRuntimeFactory.js.map +1 -1
  9. package/bin/agent/local/services/AgentAssemblyService.d.ts +1 -1
  10. package/bin/agent/local/services/AgentAssemblyService.d.ts.map +1 -1
  11. package/bin/agent/local/services/AgentAssemblyService.js +28 -9
  12. package/bin/agent/local/services/AgentAssemblyService.js.map +1 -1
  13. package/bin/agent/local/services/AgentBackgroundService.d.ts +55 -0
  14. package/bin/agent/local/services/AgentBackgroundService.d.ts.map +1 -0
  15. package/bin/agent/local/services/AgentBackgroundService.js +86 -0
  16. package/bin/agent/local/services/AgentBackgroundService.js.map +1 -0
  17. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts +8 -0
  18. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts.map +1 -1
  19. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js +22 -0
  20. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js.map +1 -1
  21. package/bin/index.d.ts +3 -3
  22. package/bin/index.d.ts.map +1 -1
  23. package/bin/index.js +1 -2
  24. package/bin/index.js.map +1 -1
  25. package/bin/session/services/SessionViewService.d.ts.map +1 -1
  26. package/bin/session/services/SessionViewService.js +1 -7
  27. package/bin/session/services/SessionViewService.js.map +1 -1
  28. package/bin/types/agent/AgentOptions.d.ts +0 -63
  29. package/bin/types/agent/AgentOptions.d.ts.map +1 -1
  30. package/bin/types/agent/AgentTypes.d.ts +1 -1
  31. package/bin/types/agent/AgentTypes.d.ts.map +1 -1
  32. package/bin/types/runtime/agent/AgentContext.d.ts +66 -42
  33. package/bin/types/runtime/agent/AgentContext.d.ts.map +1 -1
  34. package/bin/types/runtime/agent/AgentContext.js +77 -3
  35. package/bin/types/runtime/agent/AgentContext.js.map +1 -1
  36. package/package.json +3 -3
  37. package/src/agent/local/Agent.ts +63 -14
  38. package/src/agent/local/AgentRuntimeFactory.ts +9 -83
  39. package/src/agent/local/services/AgentAssemblyService.ts +30 -13
  40. package/src/agent/local/services/AgentBackgroundService.ts +116 -0
  41. package/src/executor/store/history/jsonl/JsonlSessionHistoryStore.ts +22 -0
  42. package/src/index.ts +2 -9
  43. package/src/session/services/SessionViewService.ts +1 -7
  44. package/src/types/agent/AgentOptions.ts +0 -69
  45. package/src/types/agent/AgentTypes.ts +0 -5
  46. package/src/types/runtime/agent/AgentContext.ts +103 -43
  47. package/tsconfig.tsbuildinfo +1 -1
  48. package/bin/agent/local/services/AgentLifecycleService.d.ts +0 -65
  49. package/bin/agent/local/services/AgentLifecycleService.d.ts.map +0 -1
  50. package/bin/agent/local/services/AgentLifecycleService.js +0 -140
  51. package/bin/agent/local/services/AgentLifecycleService.js.map +0 -1
  52. package/bin/rpc/Server.d.ts +0 -31
  53. package/bin/rpc/Server.d.ts.map +0 -1
  54. package/bin/rpc/Server.js +0 -106
  55. package/bin/rpc/Server.js.map +0 -1
  56. package/bin/rpc/server/InternalHandlers.d.ts +0 -21
  57. package/bin/rpc/server/InternalHandlers.d.ts.map +0 -1
  58. package/bin/rpc/server/InternalHandlers.js +0 -244
  59. package/bin/rpc/server/InternalHandlers.js.map +0 -1
  60. package/bin/rpc/server/RequestDispatcher.d.ts +0 -27
  61. package/bin/rpc/server/RequestDispatcher.d.ts.map +0 -1
  62. package/bin/rpc/server/RequestDispatcher.js +0 -38
  63. package/bin/rpc/server/RequestDispatcher.js.map +0 -1
  64. package/bin/rpc/server/SdkSessionHandlers.d.ts +0 -25
  65. package/bin/rpc/server/SdkSessionHandlers.d.ts.map +0 -1
  66. package/bin/rpc/server/SdkSessionHandlers.js +0 -86
  67. package/bin/rpc/server/SdkSessionHandlers.js.map +0 -1
  68. package/bin/rpc/server/ServerTypes.d.ts +0 -64
  69. package/bin/rpc/server/ServerTypes.d.ts.map +0 -1
  70. package/bin/rpc/server/ServerTypes.js +0 -9
  71. package/bin/rpc/server/ServerTypes.js.map +0 -1
  72. package/src/agent/local/services/AgentLifecycleService.ts +0 -198
  73. package/src/rpc/Server.ts +0 -143
  74. package/src/rpc/server/InternalHandlers.ts +0 -285
  75. package/src/rpc/server/RequestDispatcher.ts +0 -67
  76. package/src/rpc/server/SdkSessionHandlers.ts +0 -106
  77. package/src/rpc/server/ServerTypes.ts +0 -70
@@ -1,65 +0,0 @@
1
- /**
2
- * AgentLifecycleService:本地 Agent 生命周期服务。
3
- *
4
- * 关键点(中文)
5
- * - 统一管理 plugins、ActionSchedule 与本机 RPC 的启动/停止。
6
- * - 该服务只负责长期后台能力生命周期,不负责 session 构造与运行时装配。
7
- * - facade 通过它暴露 `start()` / `stop()` 语义,避免生命周期状态散落在 Agent 主类中。
8
- */
9
- import type { AgentContext } from "../../../types/runtime/agent/AgentContext.js";
10
- import type { AgentSessionCollection, AgentStartOptions, AgentStartResult, AgentStopResult } from "../../../types/agent/AgentTypes.js";
11
- import type { Logger } from "../../../utils/logger/Logger.js";
12
- import type { AgentRuntime } from "../../../types/runtime/agent/AgentRuntime.js";
13
- import type { Shell } from "@downcity/shell";
14
- type AgentLifecycleServiceOptions = {
15
- /**
16
- * 当前统一日志器。
17
- */
18
- logger: Logger;
19
- /**
20
- * 当前 agent context。
21
- */
22
- agent_context: AgentContext;
23
- /**
24
- * 当前 session collection。
25
- */
26
- session_collection: AgentSessionCollection;
27
- /**
28
- * 读取当前 agent runtime。
29
- */
30
- get_runtime: () => AgentRuntime;
31
- /**
32
- * 读取当前 agent 挂载的 Shell。
33
- */
34
- get_shell?: () => Shell | undefined;
35
- };
36
- /**
37
- * 本地 Agent 生命周期服务。
38
- */
39
- export declare class AgentLifecycleService {
40
- private readonly logger;
41
- private readonly agent_context;
42
- private readonly session_collection;
43
- private readonly get_runtime;
44
- private readonly get_shell;
45
- private plugins_started;
46
- private action_schedule_runtime;
47
- private start_promise;
48
- private rpc_binding;
49
- constructor(options: AgentLifecycleServiceOptions);
50
- /**
51
- * 启动当前 agent 实例的长期运行能力。
52
- */
53
- start(options?: AgentStartOptions): Promise<AgentStartResult>;
54
- /**
55
- * 停止当前 agent 实例的长期运行能力。
56
- */
57
- stop(): Promise<AgentStopResult>;
58
- private ensure_plugins_started;
59
- private ensure_action_schedule_runtime_started;
60
- private stop_action_schedule_runtime;
61
- private start_rpc;
62
- private stop_rpc;
63
- }
64
- export {};
65
- //# sourceMappingURL=AgentLifecycleService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentLifecycleService.d.ts","sourceRoot":"","sources":["../../../../src/agent/local/services/AgentLifecycleService.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAGV,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAKvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,KAAK,4BAA4B,GAAG;IAClC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,EAAE,YAAY,CAAC;IAE5B;;OAEG;IACH,kBAAkB,EAAE,sBAAsB,CAAC;IAE3C;;OAEG;IACH,WAAW,EAAE,MAAM,YAAY,CAAC;IAEhC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyB;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IAEtE,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,uBAAuB,CAA4C;IAC3E,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,WAAW,CAAgC;gBAEvC,OAAO,EAAE,4BAA4B;IAQjD;;OAEG;IACG,KAAK,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0BnE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;YAwBxB,sBAAsB;YActB,sCAAsC;YAWtC,4BAA4B;YAM5B,SAAS;YA4BT,QAAQ;CAMvB"}
@@ -1,140 +0,0 @@
1
- /**
2
- * AgentLifecycleService:本地 Agent 生命周期服务。
3
- *
4
- * 关键点(中文)
5
- * - 统一管理 plugins、ActionSchedule 与本机 RPC 的启动/停止。
6
- * - 该服务只负责长期后台能力生命周期,不负责 session 构造与运行时装配。
7
- * - facade 通过它暴露 `start()` / `stop()` 语义,避免生命周期状态散落在 Agent 主类中。
8
- */
9
- import { startActionScheduleRuntime } from "../../../plugin/core/ActionScheduleRuntime.js";
10
- import { startAllPlugins, stopAllPlugins } from "../../../plugin/core/Manager.js";
11
- import { startRpcServer } from "../../../rpc/Server.js";
12
- /**
13
- * 本地 Agent 生命周期服务。
14
- */
15
- export class AgentLifecycleService {
16
- logger;
17
- agent_context;
18
- session_collection;
19
- get_runtime;
20
- get_shell;
21
- plugins_started = false;
22
- action_schedule_runtime = null;
23
- start_promise = null;
24
- rpc_binding = null;
25
- constructor(options) {
26
- this.logger = options.logger;
27
- this.agent_context = options.agent_context;
28
- this.session_collection = options.session_collection;
29
- this.get_runtime = options.get_runtime;
30
- this.get_shell = options.get_shell;
31
- }
32
- /**
33
- * 启动当前 agent 实例的长期运行能力。
34
- */
35
- async start(options) {
36
- if (this.start_promise) {
37
- return await this.start_promise;
38
- }
39
- this.start_promise = (async () => {
40
- const should_start_plugins = options?.plugins !== false;
41
- if (should_start_plugins) {
42
- await this.ensure_plugins_started();
43
- }
44
- const rpc_binding = options?.rpc === false || options?.rpc === undefined
45
- ? undefined
46
- : await this.start_rpc(options.rpc);
47
- return {
48
- ...(rpc_binding ? { rpc: rpc_binding } : {}),
49
- pluginsStarted: this.plugins_started,
50
- };
51
- })();
52
- try {
53
- return await this.start_promise;
54
- }
55
- catch (error) {
56
- this.start_promise = null;
57
- throw error;
58
- }
59
- }
60
- /**
61
- * 停止当前 agent 实例的长期运行能力。
62
- */
63
- async stop() {
64
- const plugins_started = this.plugins_started;
65
- const rpc_started = this.rpc_binding !== null;
66
- if (plugins_started) {
67
- await this.stop_action_schedule_runtime();
68
- await stopAllPlugins(this.agent_context);
69
- this.plugins_started = false;
70
- }
71
- if (rpc_started) {
72
- await this.stop_rpc();
73
- }
74
- await this.get_shell?.()?.dispose();
75
- this.start_promise = null;
76
- return {
77
- rpcStopped: rpc_started,
78
- pluginsStopped: plugins_started,
79
- };
80
- }
81
- async ensure_plugins_started() {
82
- if (this.plugins_started)
83
- return;
84
- const lifecycle = await startAllPlugins(this.agent_context);
85
- this.plugins_started = true;
86
- for (const item of lifecycle.results) {
87
- if (!item.success) {
88
- this.logger.error(`Plugin start failed: ${item.plugin?.name || "unknown"} - ${item.error || "unknown error"}`);
89
- }
90
- }
91
- await this.ensure_action_schedule_runtime_started();
92
- }
93
- async ensure_action_schedule_runtime_started() {
94
- if (this.action_schedule_runtime)
95
- return;
96
- try {
97
- this.action_schedule_runtime = await startActionScheduleRuntime(this.agent_context);
98
- }
99
- catch (error) {
100
- this.logger.error(`ActionSchedule start failed: ${String(error)}`);
101
- }
102
- }
103
- async stop_action_schedule_runtime() {
104
- const runtime = this.action_schedule_runtime;
105
- this.action_schedule_runtime = null;
106
- runtime?.stop();
107
- }
108
- async start_rpc(options) {
109
- if (this.rpc_binding) {
110
- return this.rpc_binding;
111
- }
112
- const host = String(options?.host || "127.0.0.1").trim() || "127.0.0.1";
113
- const port = typeof options?.port === "number" && Number.isInteger(options.port)
114
- ? options.port
115
- : 15314;
116
- const server = await startRpcServer({
117
- host,
118
- port,
119
- sessionCollection: this.session_collection,
120
- getAgentContext: () => this.agent_context,
121
- getAgentRuntime: () => this.get_runtime(),
122
- getShell: () => this.get_shell?.(),
123
- });
124
- this.rpc_binding = {
125
- url: `rpc://${host}:${port}`,
126
- host,
127
- port,
128
- server,
129
- };
130
- return this.rpc_binding;
131
- }
132
- async stop_rpc() {
133
- if (!this.rpc_binding)
134
- return;
135
- const current = this.rpc_binding;
136
- this.rpc_binding = null;
137
- await current.server.stop();
138
- }
139
- }
140
- //# sourceMappingURL=AgentLifecycleService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentLifecycleService.js","sourceRoot":"","sources":["../../../../src/agent/local/services/AgentLifecycleService.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Agent 本机 RPC Server。
3
- *
4
- * 职责说明(中文)
5
- * - 为本机 `RemoteAgent(rpc://...)` 与 Town runtime 提供 Agent RPC 入口。
6
- * - 只负责 TCP/NDJSON framing、socket 生命周期与订阅清理。
7
- * - 具体 `sdk.*` / `internal.*` 方法由 server handlers 承接。
8
- */
9
- import net from "node:net";
10
- import type { RpcServerStartOptions } from "../rpc/server/ServerTypes.js";
11
- export type { RpcServerStartOptions } from "../rpc/server/ServerTypes.js";
12
- /**
13
- * RPC Server 运行实例。
14
- */
15
- export interface RpcServerInstance {
16
- /** 当前监听 host。 */
17
- host: string;
18
- /** 当前监听 port。 */
19
- port: number;
20
- /** 当前访问 URL。 */
21
- url: string;
22
- /** 原生 net server。 */
23
- server: net.Server;
24
- /** 停止当前服务。 */
25
- stop(): Promise<void>;
26
- }
27
- /**
28
- * 启动 Agent 本机 RPC 服务。
29
- */
30
- export declare function startRpcServer(options: RpcServerStartOptions): Promise<RpcServerInstance>;
31
- //# sourceMappingURL=Server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../src/rpc/Server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,GAAG,MAAM,UAAU,CAAC;AAK3B,OAAO,KAAK,EACV,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IACnB,cAAc;IACd,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAmG5B"}
package/bin/rpc/Server.js DELETED
@@ -1,106 +0,0 @@
1
- /**
2
- * Agent 本机 RPC Server。
3
- *
4
- * 职责说明(中文)
5
- * - 为本机 `RemoteAgent(rpc://...)` 与 Town runtime 提供 Agent RPC 入口。
6
- * - 只负责 TCP/NDJSON framing、socket 生命周期与订阅清理。
7
- * - 具体 `sdk.*` / `internal.*` 方法由 server handlers 承接。
8
- */
9
- import net from "node:net";
10
- import { dispatchRpcRequest } from "../rpc/server/RequestDispatcher.js";
11
- /**
12
- * 启动 Agent 本机 RPC 服务。
13
- */
14
- export async function startRpcServer(options) {
15
- const sockets = new Set();
16
- const server = net.createServer((socket) => {
17
- sockets.add(socket);
18
- const subscriptions = new Map();
19
- let buffered = "";
20
- const cleanup_subscriptions = () => {
21
- for (const subscription of subscriptions.values()) {
22
- subscription.unsubscribe();
23
- }
24
- subscriptions.clear();
25
- };
26
- const write_frame = (frame) => {
27
- socket.write(`${JSON.stringify(frame)}\n`);
28
- };
29
- const write_success = (id, data) => {
30
- write_frame({
31
- id,
32
- success: true,
33
- ...(data === undefined ? {} : { data }),
34
- });
35
- };
36
- const write_error = (id, error) => {
37
- write_frame({
38
- id,
39
- success: false,
40
- error: error instanceof Error ? error.message : String(error),
41
- });
42
- };
43
- const handle_line = (line) => {
44
- try {
45
- const request = JSON.parse(line);
46
- void dispatchRpcRequest({
47
- request,
48
- options,
49
- subscriptions,
50
- write_success,
51
- write_error,
52
- write_event: write_frame,
53
- });
54
- }
55
- catch (error) {
56
- write_error("parse", error);
57
- }
58
- };
59
- socket.on("data", (chunk) => {
60
- buffered += chunk.toString("utf8");
61
- let newline_index = buffered.indexOf("\n");
62
- while (newline_index >= 0) {
63
- const line = buffered.slice(0, newline_index).trim();
64
- buffered = buffered.slice(newline_index + 1);
65
- if (line) {
66
- handle_line(line);
67
- }
68
- newline_index = buffered.indexOf("\n");
69
- }
70
- });
71
- socket.on("error", () => {
72
- cleanup_subscriptions();
73
- });
74
- socket.on("close", () => {
75
- sockets.delete(socket);
76
- cleanup_subscriptions();
77
- });
78
- socket.on("end", () => {
79
- cleanup_subscriptions();
80
- });
81
- });
82
- await new Promise((resolve, reject) => {
83
- server.once("error", reject);
84
- server.listen(options.port, options.host, () => {
85
- server.off("error", reject);
86
- resolve();
87
- });
88
- });
89
- return {
90
- host: options.host,
91
- port: options.port,
92
- url: `rpc://${options.host}:${options.port}`,
93
- server,
94
- async stop() {
95
- // 关键点(中文):RPC 是长连接;停止 server 时必须主动关闭现有 socket。
96
- for (const socket of sockets) {
97
- socket.destroy();
98
- }
99
- sockets.clear();
100
- await new Promise((resolve) => {
101
- server.close(() => resolve());
102
- });
103
- },
104
- };
105
- }
106
- //# sourceMappingURL=Server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/rpc/Server.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- /**
2
- * RPC internal handlers。
3
- *
4
- * 关键点(中文)
5
- * - 只处理 `internal.*` 方法。
6
- * - 这些方法服务 Town 本机管理通道,不属于 RemoteAgent 的用户 SDK 面。
7
- */
8
- import type { RpcRequest } from "../../types/rpc/RpcProtocol.js";
9
- import type { RpcRequestHandlerOptions, RpcWriteSuccess } from "../../rpc/server/ServerTypes.js";
10
- /**
11
- * 处理 internal RPC 请求。
12
- */
13
- export declare function handleInternalRpcRequest(params: {
14
- /** 当前 RPC 请求。 */
15
- request: RpcRequest;
16
- /** handler 依赖。 */
17
- options: RpcRequestHandlerOptions;
18
- /** 成功帧写入函数。 */
19
- write_success: RpcWriteSuccess;
20
- }): Promise<boolean>;
21
- //# sourceMappingURL=InternalHandlers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InternalHandlers.d.ts","sourceRoot":"","sources":["../../../src/rpc/server/InternalHandlers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EACV,wBAAwB,EACxB,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAarC;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE;IACrD,iBAAiB;IACjB,OAAO,EAAE,UAAU,CAAC;IACpB,kBAAkB;IAClB,OAAO,EAAE,wBAAwB,CAAC;IAClC,eAAe;IACf,aAAa,EAAE,eAAe,CAAC;CAChC,GAAG,OAAO,CAAC,OAAO,CAAC,CAsKnB"}
@@ -1,244 +0,0 @@
1
- /**
2
- * RPC internal handlers。
3
- *
4
- * 关键点(中文)
5
- * - 只处理 `internal.*` 方法。
6
- * - 这些方法服务 Town 本机管理通道,不属于 RemoteAgent 的用户 SDK 面。
7
- */
8
- import fs from "fs-extra";
9
- import { dirname } from "node:path";
10
- import { getDowncityChatHistoryPath, getDowncitySessionMessagesPath, } from "../../config/Paths.js";
11
- import { resolveSessionSystemMessages } from "../../executor/composer/system/default/SystemDomain.js";
12
- import { controlPluginState, listPluginStates, } from "../../plugin/core/PluginStateController.js";
13
- import { parsePluginCommandRequestBody } from "../../plugin/core/PluginCommandRequest.js";
14
- import { runPluginCommand } from "../../plugin/core/PluginActionRunner.js";
15
- /**
16
- * 处理 internal RPC 请求。
17
- */
18
- export async function handleInternalRpcRequest(params) {
19
- const { request, options, write_success } = params;
20
- switch (request.method) {
21
- case "internal.status.get": {
22
- write_success(request.id, { status: "ok" });
23
- return true;
24
- }
25
- case "internal.sessions.clear_messages": {
26
- const runtime = requireAgentRuntime(options);
27
- const session_id = String(request.params.sessionId || "").trim();
28
- if (!session_id)
29
- throw new Error("Missing sessionId");
30
- const messages_path = getDowncitySessionMessagesPath(runtime.rootPath, runtime.paths.agentId, session_id);
31
- await fs.remove(dirname(messages_path));
32
- runtime.getSession(session_id).clearExecutor();
33
- write_success(request.id, {
34
- sessionId: session_id,
35
- cleared: true,
36
- });
37
- return true;
38
- }
39
- case "internal.sessions.clear_chat_history": {
40
- const runtime = requireAgentRuntime(options);
41
- const session_id = String(request.params.sessionId || "").trim();
42
- if (!session_id)
43
- throw new Error("Missing sessionId");
44
- await fs.remove(getDowncityChatHistoryPath(runtime.rootPath, session_id));
45
- write_success(request.id, {
46
- sessionId: session_id,
47
- cleared: true,
48
- });
49
- return true;
50
- }
51
- case "internal.sessions.resolve_system_prompt": {
52
- const runtime = requireAgentRuntime(options);
53
- const context = requireAgentContext(options);
54
- const session_id = String(request.params.sessionId || "").trim() || "consoleui-chat-main";
55
- const system_messages = await resolveSessionSystemMessages({
56
- projectRoot: runtime.rootPath,
57
- sessionId: session_id,
58
- profile: "chat",
59
- staticSystemPrompts: runtime.systems,
60
- context,
61
- });
62
- write_success(request.id, {
63
- sessionId: session_id,
64
- ...toSystemPromptPayload(system_messages),
65
- });
66
- return true;
67
- }
68
- case "internal.plugins.catalog": {
69
- const context = requireAgentContext(options);
70
- write_success(request.id, {
71
- plugins: context.plugins.list(),
72
- });
73
- return true;
74
- }
75
- case "internal.plugins.list": {
76
- const context = requireAgentContext(options);
77
- write_success(request.id, {
78
- plugins: listPluginStates({ context }),
79
- });
80
- return true;
81
- }
82
- case "internal.plugins.control": {
83
- const context = requireAgentContext(options);
84
- const result = await controlPluginState({
85
- pluginName: request.params.pluginName,
86
- action: request.params.action,
87
- context,
88
- });
89
- write_success(request.id, result);
90
- return true;
91
- }
92
- case "internal.plugins.command": {
93
- const context = requireAgentContext(options);
94
- const body = parsePluginCommandRequestBody(request.params);
95
- const result = await runPluginCommand({
96
- pluginName: body.pluginName,
97
- command: body.command,
98
- payload: body.payload,
99
- schedule: body.schedule,
100
- context,
101
- });
102
- write_success(request.id, result);
103
- return true;
104
- }
105
- case "internal.plugins.availability": {
106
- const context = requireAgentContext(options);
107
- const availability = await context.plugins.availability(request.params.pluginName);
108
- write_success(request.id, {
109
- pluginName: request.params.pluginName,
110
- availability,
111
- });
112
- return true;
113
- }
114
- case "internal.plugins.action": {
115
- const context = requireAgentContext(options);
116
- const result = await context.plugins.runAction({
117
- plugin: request.params.pluginName,
118
- action: request.params.actionName,
119
- payload: request.params.payload,
120
- });
121
- write_success(request.id, {
122
- ...result,
123
- pluginName: request.params.pluginName,
124
- actionName: request.params.actionName,
125
- });
126
- return true;
127
- }
128
- case "internal.shell.approvals": {
129
- const shell = requireShell(options);
130
- write_success(request.id, {
131
- approvals: shell.approvals(),
132
- });
133
- return true;
134
- }
135
- case "internal.shell.approvalModes": {
136
- const shell = requireShell(options);
137
- write_success(request.id, {
138
- modes: shell.approval_modes(),
139
- });
140
- return true;
141
- }
142
- case "internal.shell.approvalMode": {
143
- const shell = requireShell(options);
144
- const result = shell.approval_mode({
145
- session_id: String(request.params.sessionId || "").trim(),
146
- });
147
- write_success(request.id, result);
148
- return true;
149
- }
150
- case "internal.shell.setApprovalMode": {
151
- const shell = requireShell(options);
152
- const result = shell.set_approval_mode({
153
- session_id: String(request.params.sessionId || "").trim(),
154
- mode: request.params.mode,
155
- });
156
- write_success(request.id, result);
157
- return true;
158
- }
159
- case "internal.shell.approve": {
160
- const shell = requireShell(options);
161
- const result = await shell.approve({
162
- approval_id: String(request.params.approvalId || "").trim(),
163
- });
164
- write_success(request.id, result);
165
- return true;
166
- }
167
- case "internal.shell.deny": {
168
- const shell = requireShell(options);
169
- const result = await shell.deny({
170
- approval_id: String(request.params.approvalId || "").trim(),
171
- });
172
- write_success(request.id, result);
173
- return true;
174
- }
175
- default:
176
- return false;
177
- }
178
- }
179
- function requireShell(options) {
180
- const shell = options.getShell?.();
181
- if (!shell) {
182
- throw new Error("Agent RPC server was started without Shell");
183
- }
184
- return shell;
185
- }
186
- function requireAgentContext(options) {
187
- const context = options.getAgentContext?.();
188
- if (!context) {
189
- throw new Error("Agent RPC server was started without AgentContext");
190
- }
191
- return context;
192
- }
193
- function requireAgentRuntime(options) {
194
- const runtime = options.getAgentRuntime?.();
195
- if (!runtime) {
196
- throw new Error("Agent RPC server was started without AgentRuntime");
197
- }
198
- return runtime;
199
- }
200
- function normalizeSystemText(input) {
201
- return String(input || "").trim();
202
- }
203
- function toSystemMessageText(message) {
204
- const content = message.content;
205
- if (typeof content === "string")
206
- return normalizeSystemText(content);
207
- if (!Array.isArray(content))
208
- return "";
209
- const parts = content;
210
- const texts = [];
211
- for (const part of parts) {
212
- if (!part || typeof part !== "object")
213
- continue;
214
- const text = normalizeSystemText(String(part.text || ""));
215
- if (!text)
216
- continue;
217
- texts.push(text);
218
- }
219
- return texts.join("\n").trim();
220
- }
221
- /**
222
- * 把 system messages 转成 Console/Town 可直接渲染的结构。
223
- */
224
- function toSystemPromptPayload(messages) {
225
- const items = messages
226
- .map((message, index) => ({
227
- index: index + 1,
228
- content: toSystemMessageText(message),
229
- }))
230
- .filter((item) => item.content);
231
- const totalChars = items.reduce((acc, item) => acc + String(item.content || "").length, 0);
232
- return {
233
- sections: [
234
- {
235
- key: "resolved",
236
- title: "Resolved System Messages",
237
- items,
238
- },
239
- ],
240
- totalMessages: items.length,
241
- totalChars,
242
- };
243
- }
244
- //# sourceMappingURL=InternalHandlers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InternalHandlers.js","sourceRoot":"","sources":["../../../src/rpc/server/InternalHandlers.ts"],"names":[],"mappings":"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"}