@downcity/server 0.1.3
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/LICENSE +183 -0
- package/README.md +51 -0
- package/bin/http/AgentHTTP.d.ts +53 -0
- package/bin/http/AgentHTTP.d.ts.map +1 -0
- package/bin/http/AgentHTTP.js +118 -0
- package/bin/http/AgentHTTP.js.map +1 -0
- package/bin/http/NodeHttpAdapter.d.ts +21 -0
- package/bin/http/NodeHttpAdapter.d.ts.map +1 -0
- package/bin/http/NodeHttpAdapter.js +56 -0
- package/bin/http/NodeHttpAdapter.js.map +1 -0
- package/bin/http/routes/SessionRoutes.d.ts +15 -0
- package/bin/http/routes/SessionRoutes.d.ts.map +1 -0
- package/bin/http/routes/SessionRoutes.js +249 -0
- package/bin/http/routes/SessionRoutes.js.map +1 -0
- package/bin/index.d.ts +13 -0
- package/bin/index.d.ts.map +1 -0
- package/bin/index.js +10 -0
- package/bin/index.js.map +1 -0
- package/bin/rpc/AgentRPC.d.ts +37 -0
- package/bin/rpc/AgentRPC.d.ts.map +1 -0
- package/bin/rpc/AgentRPC.js +81 -0
- package/bin/rpc/AgentRPC.js.map +1 -0
- package/bin/rpc/RpcServer.d.ts +30 -0
- package/bin/rpc/RpcServer.d.ts.map +1 -0
- package/bin/rpc/RpcServer.js +106 -0
- package/bin/rpc/RpcServer.js.map +1 -0
- package/bin/rpc/server/InternalHandlers.d.ts +22 -0
- package/bin/rpc/server/InternalHandlers.d.ts.map +1 -0
- package/bin/rpc/server/InternalHandlers.js +248 -0
- package/bin/rpc/server/InternalHandlers.js.map +1 -0
- package/bin/rpc/server/RequestDispatcher.d.ts +27 -0
- package/bin/rpc/server/RequestDispatcher.d.ts.map +1 -0
- package/bin/rpc/server/RequestDispatcher.js +38 -0
- package/bin/rpc/server/RequestDispatcher.js.map +1 -0
- package/bin/rpc/server/SdkSessionHandlers.d.ts +25 -0
- package/bin/rpc/server/SdkSessionHandlers.d.ts.map +1 -0
- package/bin/rpc/server/SdkSessionHandlers.js +86 -0
- package/bin/rpc/server/SdkSessionHandlers.js.map +1 -0
- package/bin/rpc/server/ServerTypes.d.ts +58 -0
- package/bin/rpc/server/ServerTypes.d.ts.map +1 -0
- package/bin/rpc/server/ServerTypes.js +9 -0
- package/bin/rpc/server/ServerTypes.js.map +1 -0
- package/bin/types/AgentHttpBinding.d.ts +24 -0
- package/bin/types/AgentHttpBinding.d.ts.map +1 -0
- package/bin/types/AgentHttpBinding.js +5 -0
- package/bin/types/AgentHttpBinding.js.map +1 -0
- package/bin/types/AgentRpcBinding.d.ts +27 -0
- package/bin/types/AgentRpcBinding.d.ts.map +1 -0
- package/bin/types/AgentRpcBinding.js +8 -0
- package/bin/types/AgentRpcBinding.js.map +1 -0
- package/bin/types/RpcProtocol.d.ts +9 -0
- package/bin/types/RpcProtocol.d.ts.map +1 -0
- package/bin/types/RpcProtocol.js +9 -0
- package/bin/types/RpcProtocol.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RPC internal handlers。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - 只处理 `internal.*` 方法。
|
|
6
|
+
* - 这些方法服务 Town 本机管理通道,不属于 RemoteAgent 的用户 SDK 面。
|
|
7
|
+
* - 实现依赖 `@downcity/agent` 的 internal 路径,故只能由 `@downcity/server` 同进程使用。
|
|
8
|
+
*/
|
|
9
|
+
import { rm } from "node:fs/promises";
|
|
10
|
+
import { dirname } from "node:path";
|
|
11
|
+
import { getDowncityChatHistoryPath, getDowncitySessionMessagesPath, } from "@downcity/agent/internal/config/Paths.js";
|
|
12
|
+
import { resolveSessionSystemMessages } from "@downcity/agent/internal/executor/composer/system/default/SystemDomain.js";
|
|
13
|
+
import { controlPluginState, listPluginStates, } from "@downcity/agent/internal/plugin/core/PluginStateController.js";
|
|
14
|
+
import { parsePluginCommandRequestBody } from "@downcity/agent/internal/plugin/core/PluginCommandRequest.js";
|
|
15
|
+
import { runPluginCommand } from "@downcity/agent/internal/plugin/core/PluginActionRunner.js";
|
|
16
|
+
/**
|
|
17
|
+
* 处理 internal RPC 请求。
|
|
18
|
+
*/
|
|
19
|
+
export async function handleInternalRpcRequest(params) {
|
|
20
|
+
const { request, options, write_success } = params;
|
|
21
|
+
switch (request.method) {
|
|
22
|
+
case "internal.status.get": {
|
|
23
|
+
write_success(request.id, { status: "ok" });
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
case "internal.sessions.clear_messages": {
|
|
27
|
+
const runtime = requireAgentRuntime(options);
|
|
28
|
+
const session_id = String(request.params.sessionId || "").trim();
|
|
29
|
+
if (!session_id)
|
|
30
|
+
throw new Error("Missing sessionId");
|
|
31
|
+
const messages_path = getDowncitySessionMessagesPath(runtime.rootPath, runtime.paths.agentId, session_id);
|
|
32
|
+
await rm(dirname(messages_path), { recursive: true, force: true });
|
|
33
|
+
runtime.getSession(session_id).clearExecutor();
|
|
34
|
+
write_success(request.id, {
|
|
35
|
+
sessionId: session_id,
|
|
36
|
+
cleared: true,
|
|
37
|
+
});
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
case "internal.sessions.clear_chat_history": {
|
|
41
|
+
const runtime = requireAgentRuntime(options);
|
|
42
|
+
const session_id = String(request.params.sessionId || "").trim();
|
|
43
|
+
if (!session_id)
|
|
44
|
+
throw new Error("Missing sessionId");
|
|
45
|
+
await rm(getDowncityChatHistoryPath(runtime.rootPath, session_id), {
|
|
46
|
+
recursive: true,
|
|
47
|
+
force: true,
|
|
48
|
+
});
|
|
49
|
+
write_success(request.id, {
|
|
50
|
+
sessionId: session_id,
|
|
51
|
+
cleared: true,
|
|
52
|
+
});
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
case "internal.sessions.resolve_system_prompt": {
|
|
56
|
+
const runtime = requireAgentRuntime(options);
|
|
57
|
+
const context = requireAgentContext(options);
|
|
58
|
+
const session_id = String(request.params.sessionId || "").trim() || "consoleui-chat-main";
|
|
59
|
+
const system_messages = await resolveSessionSystemMessages({
|
|
60
|
+
projectRoot: runtime.rootPath,
|
|
61
|
+
sessionId: session_id,
|
|
62
|
+
profile: "chat",
|
|
63
|
+
staticSystemPrompts: runtime.systems,
|
|
64
|
+
context,
|
|
65
|
+
});
|
|
66
|
+
write_success(request.id, {
|
|
67
|
+
sessionId: session_id,
|
|
68
|
+
...toSystemPromptPayload(system_messages),
|
|
69
|
+
});
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
case "internal.plugins.catalog": {
|
|
73
|
+
const context = requireAgentContext(options);
|
|
74
|
+
write_success(request.id, {
|
|
75
|
+
plugins: context.plugins.list(),
|
|
76
|
+
});
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
case "internal.plugins.list": {
|
|
80
|
+
const context = requireAgentContext(options);
|
|
81
|
+
write_success(request.id, {
|
|
82
|
+
plugins: listPluginStates({ context }),
|
|
83
|
+
});
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
case "internal.plugins.control": {
|
|
87
|
+
const context = requireAgentContext(options);
|
|
88
|
+
const result = await controlPluginState({
|
|
89
|
+
pluginName: request.params.pluginName,
|
|
90
|
+
action: request.params.action,
|
|
91
|
+
context,
|
|
92
|
+
});
|
|
93
|
+
write_success(request.id, result);
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
case "internal.plugins.command": {
|
|
97
|
+
const context = requireAgentContext(options);
|
|
98
|
+
const body = parsePluginCommandRequestBody(request.params);
|
|
99
|
+
const result = await runPluginCommand({
|
|
100
|
+
pluginName: body.pluginName,
|
|
101
|
+
command: body.command,
|
|
102
|
+
payload: body.payload,
|
|
103
|
+
schedule: body.schedule,
|
|
104
|
+
context,
|
|
105
|
+
});
|
|
106
|
+
write_success(request.id, result);
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
case "internal.plugins.availability": {
|
|
110
|
+
const context = requireAgentContext(options);
|
|
111
|
+
const availability = await context.plugins.availability(request.params.pluginName);
|
|
112
|
+
write_success(request.id, {
|
|
113
|
+
pluginName: request.params.pluginName,
|
|
114
|
+
availability,
|
|
115
|
+
});
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
case "internal.plugins.action": {
|
|
119
|
+
const context = requireAgentContext(options);
|
|
120
|
+
const result = await context.plugins.runAction({
|
|
121
|
+
plugin: request.params.pluginName,
|
|
122
|
+
action: request.params.actionName,
|
|
123
|
+
payload: request.params.payload,
|
|
124
|
+
});
|
|
125
|
+
write_success(request.id, {
|
|
126
|
+
...result,
|
|
127
|
+
pluginName: request.params.pluginName,
|
|
128
|
+
actionName: request.params.actionName,
|
|
129
|
+
});
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
case "internal.shell.approvals": {
|
|
133
|
+
const shell = requireShell(options);
|
|
134
|
+
write_success(request.id, {
|
|
135
|
+
approvals: shell.approvals(),
|
|
136
|
+
});
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
case "internal.shell.approvalModes": {
|
|
140
|
+
const shell = requireShell(options);
|
|
141
|
+
write_success(request.id, {
|
|
142
|
+
modes: shell.approval_modes(),
|
|
143
|
+
});
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
case "internal.shell.approvalMode": {
|
|
147
|
+
const shell = requireShell(options);
|
|
148
|
+
const result = shell.approval_mode({
|
|
149
|
+
session_id: String(request.params.sessionId || "").trim(),
|
|
150
|
+
});
|
|
151
|
+
write_success(request.id, result);
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
case "internal.shell.setApprovalMode": {
|
|
155
|
+
const shell = requireShell(options);
|
|
156
|
+
const result = shell.set_approval_mode({
|
|
157
|
+
session_id: String(request.params.sessionId || "").trim(),
|
|
158
|
+
mode: request.params.mode,
|
|
159
|
+
});
|
|
160
|
+
write_success(request.id, result);
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
case "internal.shell.approve": {
|
|
164
|
+
const shell = requireShell(options);
|
|
165
|
+
const result = await shell.approve({
|
|
166
|
+
approval_id: String(request.params.approvalId || "").trim(),
|
|
167
|
+
});
|
|
168
|
+
write_success(request.id, result);
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
case "internal.shell.deny": {
|
|
172
|
+
const shell = requireShell(options);
|
|
173
|
+
const result = await shell.deny({
|
|
174
|
+
approval_id: String(request.params.approvalId || "").trim(),
|
|
175
|
+
});
|
|
176
|
+
write_success(request.id, result);
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
default:
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function requireShell(options) {
|
|
184
|
+
const shell = options.getShell?.();
|
|
185
|
+
if (!shell) {
|
|
186
|
+
throw new Error("Agent RPC server was started without Shell");
|
|
187
|
+
}
|
|
188
|
+
return shell;
|
|
189
|
+
}
|
|
190
|
+
function requireAgentContext(options) {
|
|
191
|
+
const context = options.getAgentContext?.();
|
|
192
|
+
if (!context) {
|
|
193
|
+
throw new Error("Agent RPC server was started without AgentContext");
|
|
194
|
+
}
|
|
195
|
+
return context;
|
|
196
|
+
}
|
|
197
|
+
function requireAgentRuntime(options) {
|
|
198
|
+
const runtime = options.getAgentRuntime?.();
|
|
199
|
+
if (!runtime) {
|
|
200
|
+
throw new Error("Agent RPC server was started without AgentRuntime");
|
|
201
|
+
}
|
|
202
|
+
return runtime;
|
|
203
|
+
}
|
|
204
|
+
function normalizeSystemText(input) {
|
|
205
|
+
return String(input || "").trim();
|
|
206
|
+
}
|
|
207
|
+
function toSystemMessageText(message) {
|
|
208
|
+
const content = message.content;
|
|
209
|
+
if (typeof content === "string")
|
|
210
|
+
return normalizeSystemText(content);
|
|
211
|
+
if (!Array.isArray(content))
|
|
212
|
+
return "";
|
|
213
|
+
const parts = content;
|
|
214
|
+
const texts = [];
|
|
215
|
+
for (const part of parts) {
|
|
216
|
+
if (!part || typeof part !== "object")
|
|
217
|
+
continue;
|
|
218
|
+
const text = normalizeSystemText(String(part.text || ""));
|
|
219
|
+
if (!text)
|
|
220
|
+
continue;
|
|
221
|
+
texts.push(text);
|
|
222
|
+
}
|
|
223
|
+
return texts.join("\n").trim();
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* 把 system messages 转成 Console/Town 可直接渲染的结构。
|
|
227
|
+
*/
|
|
228
|
+
function toSystemPromptPayload(messages) {
|
|
229
|
+
const items = messages
|
|
230
|
+
.map((message, index) => ({
|
|
231
|
+
index: index + 1,
|
|
232
|
+
content: toSystemMessageText(message),
|
|
233
|
+
}))
|
|
234
|
+
.filter((item) => item.content);
|
|
235
|
+
const totalChars = items.reduce((acc, item) => acc + String(item.content || "").length, 0);
|
|
236
|
+
return {
|
|
237
|
+
sections: [
|
|
238
|
+
{
|
|
239
|
+
key: "resolved",
|
|
240
|
+
title: "Resolved System Messages",
|
|
241
|
+
items,
|
|
242
|
+
},
|
|
243
|
+
],
|
|
244
|
+
totalMessages: items.length,
|
|
245
|
+
totalChars,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=InternalHandlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InternalHandlers.js","sourceRoot":"","sources":["../../../src/rpc/server/InternalHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RPC request dispatcher。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - server.ts 不直接包含业务 switch,只负责把已解析请求交给这里。
|
|
6
|
+
* - dispatcher 按命名空间分发,避免 SDK 与 Town internal 方法混在一起。
|
|
7
|
+
*/
|
|
8
|
+
import type { RpcRequest } from "../../types/RpcProtocol.js";
|
|
9
|
+
import type { RpcRequestHandlerOptions, RpcSocketSubscription, RpcWriteError, RpcWriteEvent, RpcWriteSuccess } from "../../rpc/server/ServerTypes.js";
|
|
10
|
+
/**
|
|
11
|
+
* 分发并执行单个 RPC 请求。
|
|
12
|
+
*/
|
|
13
|
+
export declare function dispatchRpcRequest(params: {
|
|
14
|
+
/** 当前 RPC 请求。 */
|
|
15
|
+
request: RpcRequest;
|
|
16
|
+
/** handler 依赖。 */
|
|
17
|
+
options: RpcRequestHandlerOptions;
|
|
18
|
+
/** 当前 socket 的订阅表。 */
|
|
19
|
+
subscriptions: Map<string, RpcSocketSubscription>;
|
|
20
|
+
/** 成功帧写入函数。 */
|
|
21
|
+
write_success: RpcWriteSuccess;
|
|
22
|
+
/** 失败帧写入函数。 */
|
|
23
|
+
write_error: RpcWriteError;
|
|
24
|
+
/** 事件帧写入函数。 */
|
|
25
|
+
write_event: RpcWriteEvent;
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=RequestDispatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestDispatcher.d.ts","sourceRoot":"","sources":["../../../src/rpc/server/RequestDispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAIrC;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,iBAAiB;IACjB,OAAO,EAAE,UAAU,CAAC;IACpB,kBAAkB;IAClB,OAAO,EAAE,wBAAwB,CAAC;IAClC,sBAAsB;IACtB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAClD,eAAe;IACf,aAAa,EAAE,eAAe,CAAC;IAC/B,eAAe;IACf,WAAW,EAAE,aAAa,CAAC;IAC3B,eAAe;IACf,WAAW,EAAE,aAAa,CAAC;CAC5B,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RPC request dispatcher。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - server.ts 不直接包含业务 switch,只负责把已解析请求交给这里。
|
|
6
|
+
* - dispatcher 按命名空间分发,避免 SDK 与 Town internal 方法混在一起。
|
|
7
|
+
*/
|
|
8
|
+
import { handleSdkSessionRpcRequest } from "../../rpc/server/SdkSessionHandlers.js";
|
|
9
|
+
import { handleInternalRpcRequest } from "../../rpc/server/InternalHandlers.js";
|
|
10
|
+
/**
|
|
11
|
+
* 分发并执行单个 RPC 请求。
|
|
12
|
+
*/
|
|
13
|
+
export async function dispatchRpcRequest(params) {
|
|
14
|
+
const { request, options, subscriptions, write_success, write_error, write_event, } = params;
|
|
15
|
+
try {
|
|
16
|
+
const handled_by_sdk = await handleSdkSessionRpcRequest({
|
|
17
|
+
request,
|
|
18
|
+
options,
|
|
19
|
+
subscriptions,
|
|
20
|
+
write_success,
|
|
21
|
+
write_event,
|
|
22
|
+
});
|
|
23
|
+
if (handled_by_sdk)
|
|
24
|
+
return;
|
|
25
|
+
const handled_by_internal = await handleInternalRpcRequest({
|
|
26
|
+
request,
|
|
27
|
+
options,
|
|
28
|
+
write_success,
|
|
29
|
+
});
|
|
30
|
+
if (handled_by_internal)
|
|
31
|
+
return;
|
|
32
|
+
throw new Error(`Unsupported RPC method: ${request.method}`);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
write_error(request.id, error);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=RequestDispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestDispatcher.js","sourceRoot":"","sources":["../../../src/rpc/server/RequestDispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAaxC;IACC,MAAM,EACJ,OAAO,EACP,OAAO,EACP,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,GACZ,GAAG,MAAM,CAAC;IAEX,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,0BAA0B,CAAC;YACtD,OAAO;YACP,OAAO;YACP,aAAa;YACb,aAAa;YACb,WAAW;SACZ,CAAC,CAAC;QACH,IAAI,cAAc;YAAE,OAAO;QAE3B,MAAM,mBAAmB,GAAG,MAAM,wBAAwB,CAAC;YACzD,OAAO;YACP,OAAO;YACP,aAAa;SACd,CAAC,CAAC;QACH,IAAI,mBAAmB;YAAE,OAAO;QAEhC,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RPC SDK session handlers。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - 只处理 `sdk.sessions.*` 方法。
|
|
6
|
+
* - 这些方法是 RemoteAgent RPC transport 的稳定 SDK 面。
|
|
7
|
+
*/
|
|
8
|
+
import type { RpcRequest } from "../../types/RpcProtocol.js";
|
|
9
|
+
import type { RpcSocketSubscription, RpcWriteEvent, RpcWriteSuccess, RpcRequestHandlerOptions } from "../../rpc/server/ServerTypes.js";
|
|
10
|
+
/**
|
|
11
|
+
* 处理 SDK session RPC 请求。
|
|
12
|
+
*/
|
|
13
|
+
export declare function handleSdkSessionRpcRequest(params: {
|
|
14
|
+
/** 当前 RPC 请求。 */
|
|
15
|
+
request: RpcRequest;
|
|
16
|
+
/** handler 依赖。 */
|
|
17
|
+
options: RpcRequestHandlerOptions;
|
|
18
|
+
/** 当前 socket 的订阅表。 */
|
|
19
|
+
subscriptions: Map<string, RpcSocketSubscription>;
|
|
20
|
+
/** 成功帧写入函数。 */
|
|
21
|
+
write_success: RpcWriteSuccess;
|
|
22
|
+
/** 事件帧写入函数。 */
|
|
23
|
+
write_event: RpcWriteEvent;
|
|
24
|
+
}): Promise<boolean>;
|
|
25
|
+
//# sourceMappingURL=SdkSessionHandlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdkSessionHandlers.d.ts","sourceRoot":"","sources":["../../../src/rpc/server/SdkSessionHandlers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EACV,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,wBAAwB,EACzB,MAAM,6BAA6B,CAAC;AAErC;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,MAAM,EAAE;IACvD,iBAAiB;IACjB,OAAO,EAAE,UAAU,CAAC;IACpB,kBAAkB;IAClB,OAAO,EAAE,wBAAwB,CAAC;IAClC,sBAAsB;IACtB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAClD,eAAe;IACf,aAAa,EAAE,eAAe,CAAC;IAC/B,eAAe;IACf,WAAW,EAAE,aAAa,CAAC;CAC5B,GAAG,OAAO,CAAC,OAAO,CAAC,CA2EnB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RPC SDK session handlers。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - 只处理 `sdk.sessions.*` 方法。
|
|
6
|
+
* - 这些方法是 RemoteAgent RPC transport 的稳定 SDK 面。
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* 处理 SDK session RPC 请求。
|
|
10
|
+
*/
|
|
11
|
+
export async function handleSdkSessionRpcRequest(params) {
|
|
12
|
+
const { request, options, subscriptions, write_success, write_event } = params;
|
|
13
|
+
switch (request.method) {
|
|
14
|
+
case "sdk.sessions.list": {
|
|
15
|
+
const page = await options.sessionCollection.listSessions(request.params);
|
|
16
|
+
write_success(request.id, { page });
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
case "sdk.sessions.create": {
|
|
20
|
+
const session = await options.sessionCollection.createSession(request.params);
|
|
21
|
+
write_success(request.id, { session: await session.getInfo() });
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
case "sdk.sessions.get": {
|
|
25
|
+
const session = await options.sessionCollection.getSession(request.params.sessionId);
|
|
26
|
+
write_success(request.id, { session: await session.getInfo() });
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
case "sdk.sessions.prompt": {
|
|
30
|
+
const session = await options.sessionCollection.getSession(request.params.sessionId);
|
|
31
|
+
const turn = await session.prompt(request.params.input);
|
|
32
|
+
write_success(request.id, { turn: { id: turn.id } });
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
case "sdk.sessions.history": {
|
|
36
|
+
const session = await options.sessionCollection.getSession(request.params.sessionId);
|
|
37
|
+
const history = await session.history(request.params.input);
|
|
38
|
+
write_success(request.id, { history });
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
case "sdk.sessions.system": {
|
|
42
|
+
const session = await options.sessionCollection.getSession(request.params.sessionId);
|
|
43
|
+
write_success(request.id, { system: await session.system() });
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
case "sdk.sessions.fork": {
|
|
47
|
+
const session = await options.sessionCollection.getSession(request.params.sessionId);
|
|
48
|
+
const forked = await session.fork(request.params.messageId);
|
|
49
|
+
write_success(request.id, { session: await forked.getInfo() });
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
case "sdk.sessions.subscribe": {
|
|
53
|
+
const session = await options.sessionCollection.getSession(request.params.sessionId);
|
|
54
|
+
const subscription_id = [
|
|
55
|
+
request.params.sessionId,
|
|
56
|
+
Date.now(),
|
|
57
|
+
Math.random().toString(36).slice(2, 10),
|
|
58
|
+
].join(":");
|
|
59
|
+
const unsubscribe = session.subscribe((event) => {
|
|
60
|
+
write_event({
|
|
61
|
+
type: "event",
|
|
62
|
+
subscriptionId: subscription_id,
|
|
63
|
+
event,
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
subscriptions.set(subscription_id, {
|
|
67
|
+
sessionId: request.params.sessionId,
|
|
68
|
+
unsubscribe,
|
|
69
|
+
});
|
|
70
|
+
write_success(request.id, { subscriptionId: subscription_id });
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
case "sdk.sessions.unsubscribe": {
|
|
74
|
+
const subscription = subscriptions.get(request.params.subscriptionId);
|
|
75
|
+
if (subscription) {
|
|
76
|
+
subscription.unsubscribe();
|
|
77
|
+
subscriptions.delete(request.params.subscriptionId);
|
|
78
|
+
}
|
|
79
|
+
write_success(request.id, { unsubscribed: true });
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
default:
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=SdkSessionHandlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdkSessionHandlers.js","sourceRoot":"","sources":["../../../src/rpc/server/SdkSessionHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent RPC server 内部类型。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - 这里描述 handler 需要的依赖,不承载 socket 生命周期。
|
|
6
|
+
* - `RpcServer.ts` 负责网络层,handler 把协议方法转成 Agent 操作。
|
|
7
|
+
*/
|
|
8
|
+
import type { AgentSessionCollection } from "@downcity/agent";
|
|
9
|
+
import type { AgentContext } from "@downcity/agent/internal/types/runtime/agent/AgentContext.js";
|
|
10
|
+
import type { AgentRuntime } from "@downcity/agent/internal/types/runtime/agent/AgentRuntime.js";
|
|
11
|
+
import type { Shell } from "@downcity/shell";
|
|
12
|
+
import type { RpcEventFrame } from "../../types/RpcProtocol.js";
|
|
13
|
+
/**
|
|
14
|
+
* RPC server 启动参数。
|
|
15
|
+
*/
|
|
16
|
+
export interface RpcServerStartOptions {
|
|
17
|
+
/** RPC 服务监听端口。 */
|
|
18
|
+
port: number;
|
|
19
|
+
/** RPC 服务监听主机。 */
|
|
20
|
+
host: string;
|
|
21
|
+
/** Session 集合访问口。 */
|
|
22
|
+
sessionCollection: AgentSessionCollection;
|
|
23
|
+
/** Agent 上下文访问口。 */
|
|
24
|
+
getAgentContext?: () => AgentContext;
|
|
25
|
+
/** Agent 运行态访问口。 */
|
|
26
|
+
getAgentRuntime?: () => AgentRuntime;
|
|
27
|
+
/** Shell 访问口。 */
|
|
28
|
+
getShell?: () => Shell | undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* RPC request handler 依赖。
|
|
32
|
+
*/
|
|
33
|
+
export interface RpcRequestHandlerOptions {
|
|
34
|
+
/** Session 集合访问口。 */
|
|
35
|
+
sessionCollection: AgentSessionCollection;
|
|
36
|
+
/** Agent 上下文访问口。 */
|
|
37
|
+
getAgentContext?: () => AgentContext;
|
|
38
|
+
/** Agent 运行态访问口。 */
|
|
39
|
+
getAgentRuntime?: () => AgentRuntime;
|
|
40
|
+
/** Shell 访问口。 */
|
|
41
|
+
getShell?: () => Shell | undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 单个 socket 上的 session 订阅。
|
|
45
|
+
*/
|
|
46
|
+
export interface RpcSocketSubscription {
|
|
47
|
+
/** 被订阅的 session id。 */
|
|
48
|
+
sessionId: string;
|
|
49
|
+
/** 取消订阅函数。 */
|
|
50
|
+
unsubscribe: () => void;
|
|
51
|
+
}
|
|
52
|
+
/** 写入 RPC 成功帧。 */
|
|
53
|
+
export type RpcWriteSuccess = (id: string, data?: unknown) => void;
|
|
54
|
+
/** 写入 RPC 失败帧。 */
|
|
55
|
+
export type RpcWriteError = (id: string, error: unknown) => void;
|
|
56
|
+
/** 写入 RPC 事件帧。 */
|
|
57
|
+
export type RpcWriteEvent = (frame: RpcEventFrame) => void;
|
|
58
|
+
//# sourceMappingURL=ServerTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerTypes.d.ts","sourceRoot":"","sources":["../../../src/rpc/server/ServerTypes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAC;AACjG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAC;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C,oBAAoB;IACpB,eAAe,CAAC,EAAE,MAAM,YAAY,CAAC;IACrC,oBAAoB;IACpB,eAAe,CAAC,EAAE,MAAM,YAAY,CAAC;IACrC,iBAAiB;IACjB,QAAQ,CAAC,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,qBAAqB;IACrB,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C,oBAAoB;IACpB,eAAe,CAAC,EAAE,MAAM,YAAY,CAAC;IACrC,oBAAoB;IACpB,eAAe,CAAC,EAAE,MAAM,YAAY,CAAC;IACrC,iBAAiB;IACjB,QAAQ,CAAC,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc;IACd,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,kBAAkB;AAClB,MAAM,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAEnE,kBAAkB;AAClB,MAAM,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAEjE,kBAAkB;AAClB,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerTypes.js","sourceRoot":"","sources":["../../../src/rpc/server/ServerTypes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentHTTP server 监听绑定类型。
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* AgentHTTP server 监听绑定信息。
|
|
6
|
+
*/
|
|
7
|
+
export interface AgentHttpBinding {
|
|
8
|
+
/** 完整 HTTP 访问 URL。 */
|
|
9
|
+
url: string;
|
|
10
|
+
/** 当前监听主机。 */
|
|
11
|
+
host: string;
|
|
12
|
+
/** 当前监听端口。 */
|
|
13
|
+
port: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* AgentHTTP server 监听参数。
|
|
17
|
+
*/
|
|
18
|
+
export interface AgentHttpListenOptions {
|
|
19
|
+
/** 监听主机,默认 `127.0.0.1`。 */
|
|
20
|
+
host?: string;
|
|
21
|
+
/** 监听端口(必填)。 */
|
|
22
|
+
port: number;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=AgentHttpBinding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentHttpBinding.d.ts","sourceRoot":"","sources":["../../src/types/AgentHttpBinding.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentHttpBinding.js","sourceRoot":"","sources":["../../src/types/AgentHttpBinding.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentRPC 监听绑定类型。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - 仅描述监听后的可观测信息,不暴露底层 net.Server。
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* AgentRPC 监听绑定信息。
|
|
9
|
+
*/
|
|
10
|
+
export interface AgentRpcBinding {
|
|
11
|
+
/** 完整 RPC 访问 URL,例如 `rpc://127.0.0.1:15314`。 */
|
|
12
|
+
url: string;
|
|
13
|
+
/** 当前监听主机。 */
|
|
14
|
+
host: string;
|
|
15
|
+
/** 当前监听端口。 */
|
|
16
|
+
port: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* AgentRPC 监听参数。
|
|
20
|
+
*/
|
|
21
|
+
export interface AgentRpcListenOptions {
|
|
22
|
+
/** 监听主机,默认 `127.0.0.1`。 */
|
|
23
|
+
host?: string;
|
|
24
|
+
/** 监听端口,默认 `15314`。 */
|
|
25
|
+
port?: number;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=AgentRpcBinding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentRpcBinding.d.ts","sourceRoot":"","sources":["../../src/types/AgentRpcBinding.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentRpcBinding.js","sourceRoot":"","sources":["../../src/types/AgentRpcBinding.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server 包内部使用的 RPC 协议类型 re-export。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - 直接转出 `@downcity/agent/internal/types/rpc/RpcProtocol.js` 的协议类型。
|
|
6
|
+
* - 让 server 内部模块只依赖一个本地路径,避免到处写 `@downcity/agent/internal/...` 长路径。
|
|
7
|
+
*/
|
|
8
|
+
export type { RpcRequest, RpcEventFrame, RpcServerFrame, } from "@downcity/agent/internal/types/rpc/RpcProtocol.js";
|
|
9
|
+
//# sourceMappingURL=RpcProtocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RpcProtocol.d.ts","sourceRoot":"","sources":["../../src/types/RpcProtocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EACV,UAAU,EACV,aAAa,EACb,cAAc,GACf,MAAM,mDAAmD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RpcProtocol.js","sourceRoot":"","sources":["../../src/types/RpcProtocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|