@downcity/agent 1.1.43 → 1.1.62
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/README.md +11 -12
- package/bin/agent/Agent.d.ts +31 -16
- package/bin/agent/Agent.d.ts.map +1 -1
- package/bin/agent/Agent.js +47 -63
- package/bin/agent/Agent.js.map +1 -1
- package/bin/agent/RemoteAgent.d.ts +6 -6
- package/bin/agent/RemoteAgent.d.ts.map +1 -1
- package/bin/agent/RemoteAgent.js +377 -267
- package/bin/agent/RemoteAgent.js.map +1 -1
- package/bin/config/AgentInitializer.d.ts +5 -5
- package/bin/config/AgentInitializer.d.ts.map +1 -1
- package/bin/config/AgentInitializer.js +15 -13
- package/bin/config/AgentInitializer.js.map +1 -1
- package/bin/config/Config.d.ts +9 -30
- package/bin/config/Config.d.ts.map +1 -1
- package/bin/config/Config.js +23 -70
- package/bin/config/Config.js.map +1 -1
- package/bin/config/Defaults.d.ts.map +1 -1
- package/bin/config/Defaults.js +1 -9
- package/bin/config/Defaults.js.map +1 -1
- package/bin/config/DowncitySchema.d.ts.map +1 -1
- package/bin/config/DowncitySchema.js +4 -112
- package/bin/config/DowncitySchema.js.map +1 -1
- package/bin/config/ExecutionBinding.d.ts +1 -16
- package/bin/config/ExecutionBinding.d.ts.map +1 -1
- package/bin/config/ExecutionBinding.js +2 -22
- package/bin/config/ExecutionBinding.js.map +1 -1
- package/bin/config/Paths.d.ts +4 -43
- package/bin/config/Paths.d.ts.map +1 -1
- package/bin/config/Paths.js +10 -30
- package/bin/config/Paths.js.map +1 -1
- package/bin/config/PlatformPaths.d.ts +0 -4
- package/bin/config/PlatformPaths.d.ts.map +1 -1
- package/bin/config/PlatformPaths.js +5 -1
- package/bin/config/PlatformPaths.js.map +1 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.d.ts.map +1 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js +0 -4
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js.map +1 -1
- package/bin/executor/composer/system/default/InitPrompts.d.ts +1 -1
- package/bin/executor/composer/system/default/InitPrompts.js +1 -1
- package/bin/executor/composer/system/default/SystemDomain.js +1 -1
- package/bin/executor/composer/system/default/assets/core.prompt.d.ts +1 -1
- package/bin/executor/composer/system/default/assets/core.prompt.js +1 -1
- package/bin/executor/composer/system/default/assets/init/PROFILE.md.d.ts +1 -1
- package/bin/executor/composer/system/default/assets/init/PROFILE.md.d.ts.map +1 -1
- package/bin/executor/composer/system/default/assets/init/PROFILE.md.js +1 -1
- package/bin/executor/composer/system/default/assets/init/PROFILE.md.js.map +1 -1
- package/bin/executor/composer/system/default/assets/plugin.prompt.d.ts +1 -1
- package/bin/executor/composer/system/default/assets/plugin.prompt.js +1 -1
- package/bin/executor/composer/system/default/assets/task.prompt.d.ts +1 -1
- package/bin/executor/composer/system/default/assets/task.prompt.js +1 -1
- package/bin/executor/messages/ChatMessageMarkupTypes.d.ts +1 -1
- package/bin/executor/messages/ChatMessageMarkupTypes.js +1 -1
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts +1 -2
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts.map +1 -1
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js +17 -56
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js.map +1 -1
- package/bin/executor/tools/shell/ShellToolBridge.js +1 -1
- package/bin/executor/tools/shell/ShellToolBridge.js.map +1 -1
- package/bin/executor/tools/shell/ShellToolDefinition.d.ts +2 -2
- package/bin/executor/tools/shell/ShellToolFormatting.d.ts +1 -1
- package/bin/executor/tools/shell/ShellToolFormatting.js +9 -9
- package/bin/executor/tools/shell/ShellToolFormatting.js.map +1 -1
- package/bin/executor/tools/shell/ShellToolSchemas.d.ts +7 -75
- package/bin/executor/tools/shell/ShellToolSchemas.d.ts.map +1 -1
- package/bin/executor/types/SessionHistoryMeta.d.ts +5 -24
- package/bin/executor/types/SessionHistoryMeta.d.ts.map +1 -1
- package/bin/executor/types/SessionHistoryMeta.js +1 -1
- package/bin/executor/types/SessionRun.d.ts +1 -1
- package/bin/index.d.ts +5 -6
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +6 -5
- package/bin/index.js.map +1 -1
- package/bin/model/CityModelAdapter.d.ts +23 -0
- package/bin/model/CityModelAdapter.d.ts.map +1 -0
- package/bin/model/CityModelAdapter.js +338 -0
- package/bin/model/CityModelAdapter.js.map +1 -0
- package/bin/plugin/core/PluginCommandRequest.d.ts +1 -1
- package/bin/plugin/core/PluginCommandRequest.js +1 -1
- package/bin/plugin/core/PluginLocalExecution.d.ts.map +1 -1
- package/bin/plugin/core/PluginLocalExecution.js +4 -8
- package/bin/plugin/core/PluginLocalExecution.js.map +1 -1
- package/bin/plugin/types/PluginApi.d.ts +1 -1
- package/bin/rpc/Client.d.ts +104 -0
- package/bin/rpc/Client.d.ts.map +1 -0
- package/bin/rpc/Client.js +300 -0
- package/bin/rpc/Client.js.map +1 -0
- package/bin/rpc/Server.d.ts +41 -0
- package/bin/rpc/Server.d.ts.map +1 -0
- package/bin/rpc/Server.js +164 -0
- package/bin/rpc/Server.js.map +1 -0
- package/bin/runtime/host/daemon/Api.d.ts +1 -1
- package/bin/runtime/host/daemon/Client.d.ts +1 -1
- package/bin/runtime/host/daemon/Client.d.ts.map +1 -1
- package/bin/runtime/host/daemon/Client.js +30 -20
- package/bin/runtime/host/daemon/Client.js.map +1 -1
- package/bin/runtime/host/daemon/Paths.d.ts +1 -1
- package/bin/runtime/host/daemon/Paths.js +1 -1
- package/bin/runtime/host/daemon/ProjectSetup.js +2 -2
- package/bin/runtime/server/http/control/OverviewRoutes.js +1 -1
- package/bin/runtime/server/http/control/OverviewRoutes.js.map +1 -1
- package/bin/session/Session.d.ts +1 -0
- package/bin/session/Session.d.ts.map +1 -1
- package/bin/session/Session.js +32 -6
- package/bin/session/Session.js.map +1 -1
- package/bin/session/SessionTitle.d.ts +49 -0
- package/bin/session/SessionTitle.d.ts.map +1 -0
- package/bin/session/SessionTitle.js +130 -0
- package/bin/session/SessionTitle.js.map +1 -0
- package/bin/session/browse/Browse.d.ts +2 -1
- package/bin/session/browse/Browse.d.ts.map +1 -1
- package/bin/session/browse/Browse.js +18 -15
- package/bin/session/browse/Browse.js.map +1 -1
- package/bin/session/index.d.ts +3 -2
- package/bin/session/index.d.ts.map +1 -1
- package/bin/session/index.js +3 -2
- package/bin/session/index.js.map +1 -1
- package/bin/session/storage/Metadata.d.ts +4 -0
- package/bin/session/storage/Metadata.d.ts.map +1 -1
- package/bin/session/storage/Metadata.js +12 -25
- package/bin/session/storage/Metadata.js.map +1 -1
- package/bin/session/storage/Paths.d.ts +0 -4
- package/bin/session/storage/Paths.d.ts.map +1 -1
- package/bin/session/storage/Paths.js +0 -6
- package/bin/session/storage/Paths.js.map +1 -1
- package/bin/session/storage/Persistence.d.ts.map +1 -1
- package/bin/session/storage/Persistence.js +1 -4
- package/bin/session/storage/Persistence.js.map +1 -1
- package/bin/types/agent/AgentTypes.d.ts +32 -57
- package/bin/types/agent/AgentTypes.d.ts.map +1 -1
- package/bin/types/config/AgentProject.d.ts +7 -6
- package/bin/types/config/AgentProject.d.ts.map +1 -1
- package/bin/types/config/DowncityConfig.d.ts +11 -69
- package/bin/types/config/DowncityConfig.d.ts.map +1 -1
- package/bin/types/config/ExecutionBinding.d.ts +4 -4
- package/bin/types/config/ExecutionBinding.js +1 -1
- package/bin/types/config/LlmConfig.d.ts +1 -1
- package/bin/types/config/Start.d.ts +3 -0
- package/bin/types/config/Start.d.ts.map +1 -1
- package/bin/types/config/Start.js +2 -0
- package/bin/types/config/Start.js.map +1 -1
- package/bin/types/runtime/auth/AuthPermission.js +2 -2
- package/bin/types/runtime/auth/AuthPermission.js.map +1 -1
- package/bin/types/runtime/host/Store.d.ts +10 -227
- package/bin/types/runtime/host/Store.d.ts.map +1 -1
- package/bin/types/runtime/host/Store.js +7 -0
- package/bin/types/runtime/host/Store.js.map +1 -1
- package/bin/types/runtime/http/InlineInstant.d.ts +1 -1
- package/bin/types/runtime/platform/Platform.d.ts +7 -7
- package/bin/types/runtime/platform/Platform.d.ts.map +1 -1
- package/bin/types/runtime/platform/PlatformGateway.d.ts +2 -2
- package/bin/types/runtime/platform/PlatformGateway.d.ts.map +1 -1
- package/bin/utils/Time.d.ts +0 -1
- package/bin/utils/Time.d.ts.map +1 -1
- package/bin/utils/Time.js +0 -7
- package/bin/utils/Time.js.map +1 -1
- package/bin/utils/storage/index.d.ts +0 -1
- package/bin/utils/storage/index.d.ts.map +1 -1
- package/bin/utils/storage/index.js +0 -6
- package/bin/utils/storage/index.js.map +1 -1
- package/package.json +22 -23
- package/src/agent/Agent.ts +57 -73
- package/src/agent/RemoteAgent.ts +515 -345
- package/src/config/AgentInitializer.ts +15 -13
- package/src/config/Config.ts +28 -85
- package/src/config/Defaults.ts +1 -9
- package/src/config/DowncitySchema.ts +4 -114
- package/src/config/ExecutionBinding.ts +2 -24
- package/src/config/Paths.ts +10 -43
- package/src/config/PlatformPaths.ts +5 -1
- package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.ts +0 -4
- package/src/executor/composer/system/default/InitPrompts.ts +1 -1
- package/src/executor/composer/system/default/SystemDomain.ts +1 -1
- package/src/executor/composer/system/default/assets/core.prompt.ts +1 -1
- package/src/executor/composer/system/default/assets/core.prompt.ts.txt +1 -1
- package/src/executor/composer/system/default/assets/init/PROFILE.md.ts +1 -1
- package/src/executor/composer/system/default/assets/init/PROFILE.md.ts.txt +1 -2
- package/src/executor/composer/system/default/assets/plugin.prompt.ts +1 -1
- package/src/executor/composer/system/default/assets/plugin.prompt.ts.txt +18 -18
- package/src/executor/composer/system/default/assets/task.prompt.ts +1 -1
- package/src/executor/composer/system/default/assets/task.prompt.ts.txt +1 -1
- package/src/executor/messages/ChatMessageMarkupTypes.ts +1 -1
- package/src/executor/store/history/jsonl/JsonlSessionHistoryStore.ts +17 -57
- package/src/executor/tools/shell/ShellToolBridge.ts +1 -1
- package/src/executor/tools/shell/ShellToolFormatting.ts +9 -9
- package/src/executor/types/SessionHistoryMeta.ts +5 -25
- package/src/executor/types/SessionRun.ts +1 -1
- package/src/index.ts +12 -19
- package/src/model/CityModelAdapter.ts +384 -0
- package/src/plugin/core/PluginCommandRequest.ts +1 -1
- package/src/plugin/core/PluginLocalExecution.ts +4 -8
- package/src/plugin/types/PluginApi.ts +1 -1
- package/src/rpc/Client.ts +467 -0
- package/src/rpc/Server.ts +302 -0
- package/src/runtime/host/daemon/Api.ts +1 -1
- package/src/runtime/host/daemon/Client.ts +44 -22
- package/src/runtime/host/daemon/Paths.ts +1 -1
- package/src/runtime/host/daemon/ProjectSetup.ts +2 -2
- package/src/runtime/server/http/control/OverviewRoutes.ts +1 -1
- package/src/session/Session.ts +40 -6
- package/src/session/SessionTitle.ts +192 -0
- package/src/session/browse/Browse.ts +22 -13
- package/src/session/index.ts +5 -1
- package/src/session/storage/Metadata.ts +14 -29
- package/src/session/storage/Paths.ts +0 -10
- package/src/session/storage/Persistence.ts +1 -4
- package/src/types/agent/AgentTypes.ts +33 -62
- package/src/types/config/AgentProject.ts +7 -6
- package/src/types/config/DowncityConfig.ts +11 -70
- package/src/types/config/ExecutionBinding.ts +4 -4
- package/src/types/config/LlmConfig.ts +1 -1
- package/src/types/config/Start.ts +3 -0
- package/src/types/runtime/auth/AuthPermission.ts +2 -2
- package/src/types/runtime/host/Store.ts +10 -235
- package/src/types/runtime/http/InlineInstant.ts +1 -1
- package/src/types/runtime/platform/Platform.ts +7 -7
- package/src/types/runtime/platform/PlatformGateway.ts +2 -2
- package/src/utils/Time.ts +0 -6
- package/src/utils/storage/index.ts +0 -7
- package/tsconfig.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/bin/config/ConfigEnvResolver.d.ts +0 -22
- package/bin/config/ConfigEnvResolver.d.ts.map +0 -1
- package/bin/config/ConfigEnvResolver.js +0 -41
- package/bin/config/ConfigEnvResolver.js.map +0 -1
- package/bin/runtime/server/rpc/Server.d.ts +0 -18
- package/bin/runtime/server/rpc/Server.d.ts.map +0 -1
- package/bin/runtime/server/rpc/Server.js +0 -315
- package/bin/runtime/server/rpc/Server.js.map +0 -1
- package/bin/runtime/transport/rpc/Client.d.ts +0 -13
- package/bin/runtime/transport/rpc/Client.d.ts.map +0 -1
- package/bin/runtime/transport/rpc/Client.js +0 -98
- package/bin/runtime/transport/rpc/Client.js.map +0 -1
- package/bin/runtime/transport/rpc/Paths.d.ts +0 -14
- package/bin/runtime/transport/rpc/Paths.d.ts.map +0 -1
- package/bin/runtime/transport/rpc/Paths.js +0 -42
- package/bin/runtime/transport/rpc/Paths.js.map +0 -1
- package/bin/runtime/transport/rpc/Transport.d.ts +0 -21
- package/bin/runtime/transport/rpc/Transport.d.ts.map +0 -1
- package/bin/runtime/transport/rpc/Transport.js +0 -30
- package/bin/runtime/transport/rpc/Transport.js.map +0 -1
- package/bin/types/common/ResolvedConfigValue.d.ts +0 -12
- package/bin/types/common/ResolvedConfigValue.d.ts.map +0 -1
- package/bin/types/common/ResolvedConfigValue.js +0 -2
- package/bin/types/common/ResolvedConfigValue.js.map +0 -1
- package/bin/types/runtime/rpc/LocalRpc.d.ts +0 -69
- package/bin/types/runtime/rpc/LocalRpc.d.ts.map +0 -1
- package/bin/types/runtime/rpc/LocalRpc.js +0 -9
- package/bin/types/runtime/rpc/LocalRpc.js.map +0 -1
- package/src/config/ConfigEnvResolver.ts +0 -52
- package/src/runtime/server/rpc/Server.ts +0 -408
- package/src/runtime/transport/rpc/Client.ts +0 -113
- package/src/runtime/transport/rpc/Paths.ts +0 -50
- package/src/runtime/transport/rpc/Transport.ts +0 -43
- package/src/types/common/ResolvedConfigValue.ts +0 -16
- package/src/types/runtime/rpc/LocalRpc.ts +0 -72
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent 配置域环境变量占位符解析模块。
|
|
3
|
-
*
|
|
4
|
-
* 职责说明(中文)
|
|
5
|
-
* - 负责把配置树中的 `${ENV_NAME}` 形式占位符替换为运行时可见的环境变量值。
|
|
6
|
-
* - 服务 `downcity.json` 等配置载体的解析流程,让配置读取相关逻辑集中留在 `config/` 语义域。
|
|
7
|
-
*
|
|
8
|
-
* 边界说明(中文)
|
|
9
|
-
* - 该模块只处理结构遍历与替换,不读取文件,也不决定环境变量来源优先级。
|
|
10
|
-
* - 这里只负责“如何替换”,不负责“缺失变量时是否报错”的业务策略。
|
|
11
|
-
*/
|
|
12
|
-
import type { ResolvedConfigValue } from "../types/common/ResolvedConfigValue.js";
|
|
13
|
-
/**
|
|
14
|
-
* 递归解析配置值中的环境变量占位符。
|
|
15
|
-
*
|
|
16
|
-
* 关键点(中文)
|
|
17
|
-
* - 仅替换“整个字符串就是 `${VAR}`”的场景,不处理字符串内插值拼接。
|
|
18
|
-
* - 数组与对象会递归遍历,保持原有结构不变。
|
|
19
|
-
* - 未命中的环境变量会返回 `undefined`,由调用方决定后续行为。
|
|
20
|
-
*/
|
|
21
|
-
export declare function resolveEnvPlaceholdersDeep(value: ResolvedConfigValue, resolveEnvVar: (name: string) => string | undefined): ResolvedConfigValue;
|
|
22
|
-
//# sourceMappingURL=ConfigEnvResolver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigEnvResolver.d.ts","sourceRoot":"","sources":["../../src/config/ConfigEnvResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAEjF;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAClD,mBAAmB,CAyBrB"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent 配置域环境变量占位符解析模块。
|
|
3
|
-
*
|
|
4
|
-
* 职责说明(中文)
|
|
5
|
-
* - 负责把配置树中的 `${ENV_NAME}` 形式占位符替换为运行时可见的环境变量值。
|
|
6
|
-
* - 服务 `downcity.json` 等配置载体的解析流程,让配置读取相关逻辑集中留在 `config/` 语义域。
|
|
7
|
-
*
|
|
8
|
-
* 边界说明(中文)
|
|
9
|
-
* - 该模块只处理结构遍历与替换,不读取文件,也不决定环境变量来源优先级。
|
|
10
|
-
* - 这里只负责“如何替换”,不负责“缺失变量时是否报错”的业务策略。
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* 递归解析配置值中的环境变量占位符。
|
|
14
|
-
*
|
|
15
|
-
* 关键点(中文)
|
|
16
|
-
* - 仅替换“整个字符串就是 `${VAR}`”的场景,不处理字符串内插值拼接。
|
|
17
|
-
* - 数组与对象会递归遍历,保持原有结构不变。
|
|
18
|
-
* - 未命中的环境变量会返回 `undefined`,由调用方决定后续行为。
|
|
19
|
-
*/
|
|
20
|
-
export function resolveEnvPlaceholdersDeep(value, resolveEnvVar) {
|
|
21
|
-
if (typeof value === "string") {
|
|
22
|
-
const match = value.match(/^\$\{([A-Z0-9_]+)\}$/);
|
|
23
|
-
if (!match)
|
|
24
|
-
return value;
|
|
25
|
-
const envVar = match[1];
|
|
26
|
-
return resolveEnvVar(envVar);
|
|
27
|
-
}
|
|
28
|
-
if (Array.isArray(value)) {
|
|
29
|
-
return value.map((item) => resolveEnvPlaceholdersDeep(item, resolveEnvVar));
|
|
30
|
-
}
|
|
31
|
-
if (value && typeof value === "object") {
|
|
32
|
-
const obj = value;
|
|
33
|
-
const out = {};
|
|
34
|
-
for (const [key, child] of Object.entries(obj)) {
|
|
35
|
-
out[key] = resolveEnvPlaceholdersDeep(child, resolveEnvVar);
|
|
36
|
-
}
|
|
37
|
-
return out;
|
|
38
|
-
}
|
|
39
|
-
return value;
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=ConfigEnvResolver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigEnvResolver.js","sourceRoot":"","sources":["../../src/config/ConfigEnvResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAA0B,EAC1B,aAAmD;IAEnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,0BAA0B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,KAAmB,CAAC;QAChC,MAAM,GAAG,GAA2C,EAAE,CAAC;QACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,GAAG,CAAC,GAAG,0BAA0B,CACnC,KAA4B,EAC5B,aAAa,CACd,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local RPC server。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - 只服务本地受信任进程,不暴露 HTTP 协议。
|
|
6
|
-
* - 这里承接本机 CLI 访问 agent runtime 的 IPC 路由,并与 HTTP 能力保持语义一致。
|
|
7
|
-
*/
|
|
8
|
-
import type { AgentRuntime } from "../../../types/runtime/agent/AgentRuntime.js";
|
|
9
|
-
import type { AgentContext } from "../../../types/runtime/agent/AgentContext.js";
|
|
10
|
-
import type { LocalRpcServerHandle } from "../../../types/runtime/rpc/LocalRpc.js";
|
|
11
|
-
/**
|
|
12
|
-
* 启动本地 RPC server。
|
|
13
|
-
*/
|
|
14
|
-
export declare function startLocalRpcServer(params: {
|
|
15
|
-
context: AgentContext;
|
|
16
|
-
runtime: AgentRuntime;
|
|
17
|
-
}): Promise<LocalRpcServerHandle>;
|
|
18
|
-
//# sourceMappingURL=Server.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../../../src/runtime/server/rpc/Server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAE1E,OAAO,KAAK,EAAqC,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAwW/G;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE;IAChD,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;CACvB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA2BhC"}
|
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local RPC server。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - 只服务本地受信任进程,不暴露 HTTP 协议。
|
|
6
|
-
* - 这里承接本机 CLI 访问 agent runtime 的 IPC 路由,并与 HTTP 能力保持语义一致。
|
|
7
|
-
*/
|
|
8
|
-
import fs from "fs-extra";
|
|
9
|
-
import net from "node:net";
|
|
10
|
-
import path from "node:path";
|
|
11
|
-
import { listPluginStates, controlPluginState } from "../../../plugin/core/PluginStateController.js";
|
|
12
|
-
import { runPluginCommand } from "../../../plugin/core/PluginActionRunner.js";
|
|
13
|
-
import { parsePluginCommandRequestBody } from "../../../plugin/core/PluginCommandRequest.js";
|
|
14
|
-
import { executeBySessionId } from "../../../runtime/server/http/control/ExecuteBySession.js";
|
|
15
|
-
import { getLocalRpcEndpoint } from "../../../runtime/transport/rpc/Paths.js";
|
|
16
|
-
async function isSocketEndpointActive(endpoint) {
|
|
17
|
-
return await new Promise((resolve) => {
|
|
18
|
-
const socket = net.createConnection(endpoint);
|
|
19
|
-
let settled = false;
|
|
20
|
-
const finish = (value) => {
|
|
21
|
-
if (settled)
|
|
22
|
-
return;
|
|
23
|
-
settled = true;
|
|
24
|
-
socket.destroy();
|
|
25
|
-
resolve(value);
|
|
26
|
-
};
|
|
27
|
-
socket.setTimeout(200);
|
|
28
|
-
socket.on("connect", () => finish(true));
|
|
29
|
-
socket.on("timeout", () => finish(false));
|
|
30
|
-
socket.on("error", () => finish(false));
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
function isObjectRecord(value) {
|
|
34
|
-
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
35
|
-
}
|
|
36
|
-
function createSuccessResponse(requestId, data, status = 200) {
|
|
37
|
-
return {
|
|
38
|
-
requestId,
|
|
39
|
-
status,
|
|
40
|
-
success: true,
|
|
41
|
-
data,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
function createErrorResponse(requestId, status, error) {
|
|
45
|
-
return {
|
|
46
|
-
requestId,
|
|
47
|
-
status,
|
|
48
|
-
success: false,
|
|
49
|
-
error,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
async function handlePluginControl(params) {
|
|
53
|
-
const body = isObjectRecord(params.body) ? params.body : {};
|
|
54
|
-
const pluginName = String(body.pluginName || "").trim();
|
|
55
|
-
const action = String(body.action || "").trim();
|
|
56
|
-
if (!pluginName || !action) {
|
|
57
|
-
return createErrorResponse(params.requestId, 400, "pluginName and action are required");
|
|
58
|
-
}
|
|
59
|
-
const result = await controlPluginState({
|
|
60
|
-
pluginName,
|
|
61
|
-
action,
|
|
62
|
-
context: params.context,
|
|
63
|
-
});
|
|
64
|
-
const payload = {
|
|
65
|
-
success: result.success,
|
|
66
|
-
...(result.plugin ? { plugin: result.plugin } : {}),
|
|
67
|
-
...(result.error ? { error: result.error } : {}),
|
|
68
|
-
};
|
|
69
|
-
return createSuccessResponse(params.requestId, payload);
|
|
70
|
-
}
|
|
71
|
-
async function handlePluginCommand(params) {
|
|
72
|
-
let body;
|
|
73
|
-
try {
|
|
74
|
-
body = parsePluginCommandRequestBody(params.body);
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
return createErrorResponse(params.requestId, 400, String(error));
|
|
78
|
-
}
|
|
79
|
-
if (!body.pluginName || !body.command) {
|
|
80
|
-
return createErrorResponse(params.requestId, 400, "pluginName and command are required");
|
|
81
|
-
}
|
|
82
|
-
const result = await runPluginCommand({
|
|
83
|
-
pluginName: body.pluginName,
|
|
84
|
-
command: body.command,
|
|
85
|
-
payload: body.payload,
|
|
86
|
-
schedule: body.schedule,
|
|
87
|
-
context: params.context,
|
|
88
|
-
});
|
|
89
|
-
const payload = {
|
|
90
|
-
success: result.success,
|
|
91
|
-
...(result.plugin ? { plugin: result.plugin } : {}),
|
|
92
|
-
...(result.data !== undefined ? { data: result.data } : {}),
|
|
93
|
-
...(result.message ? { message: result.message } : {}),
|
|
94
|
-
...(result.success ? {} : { error: result.message || "plugin command failed" }),
|
|
95
|
-
};
|
|
96
|
-
return createSuccessResponse(params.requestId, payload);
|
|
97
|
-
}
|
|
98
|
-
async function handlePluginAvailability(params) {
|
|
99
|
-
const body = isObjectRecord(params.body) ? params.body : {};
|
|
100
|
-
const pluginName = String(body.pluginName || "").trim();
|
|
101
|
-
if (!pluginName) {
|
|
102
|
-
return createErrorResponse(params.requestId, 400, "pluginName is required");
|
|
103
|
-
}
|
|
104
|
-
const availability = await params.context.plugins.availability(pluginName);
|
|
105
|
-
const payload = {
|
|
106
|
-
success: true,
|
|
107
|
-
pluginName,
|
|
108
|
-
availability,
|
|
109
|
-
};
|
|
110
|
-
return createSuccessResponse(params.requestId, payload);
|
|
111
|
-
}
|
|
112
|
-
async function handlePluginAction(params) {
|
|
113
|
-
const body = isObjectRecord(params.body) ? params.body : {};
|
|
114
|
-
const pluginName = String(body.pluginName || "").trim();
|
|
115
|
-
const actionName = String(body.actionName || "").trim();
|
|
116
|
-
if (!pluginName) {
|
|
117
|
-
return createErrorResponse(params.requestId, 400, "pluginName is required");
|
|
118
|
-
}
|
|
119
|
-
if (!actionName) {
|
|
120
|
-
return createErrorResponse(params.requestId, 400, "actionName is required");
|
|
121
|
-
}
|
|
122
|
-
const result = await params.context.plugins.runAction({
|
|
123
|
-
plugin: pluginName,
|
|
124
|
-
action: actionName,
|
|
125
|
-
payload: body.payload,
|
|
126
|
-
});
|
|
127
|
-
const payload = {
|
|
128
|
-
success: result.success,
|
|
129
|
-
pluginName,
|
|
130
|
-
actionName,
|
|
131
|
-
...(result.data !== undefined ? { data: result.data } : {}),
|
|
132
|
-
...(result.message ? { message: result.message } : {}),
|
|
133
|
-
...(result.error ? { error: result.error } : {}),
|
|
134
|
-
};
|
|
135
|
-
return createSuccessResponse(params.requestId, payload, result.success ? 200 : 400);
|
|
136
|
-
}
|
|
137
|
-
function matchControlSessionExecutePath(pathname) {
|
|
138
|
-
const match = /^\/api\/control\/sessions\/([^/]+)\/execute$/.exec(String(pathname || "").trim());
|
|
139
|
-
if (!match)
|
|
140
|
-
return null;
|
|
141
|
-
try {
|
|
142
|
-
return decodeURIComponent(match[1] || "").trim() || null;
|
|
143
|
-
}
|
|
144
|
-
catch {
|
|
145
|
-
return null;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
async function handleControlSessionExecute(params) {
|
|
149
|
-
if (!params.runtime) {
|
|
150
|
-
return createErrorResponse(params.requestId, 500, "Local RPC control execute requires agent runtime");
|
|
151
|
-
}
|
|
152
|
-
const body = isObjectRecord(params.body) ? params.body : {};
|
|
153
|
-
const instructions = String(body.instructions || "").trim();
|
|
154
|
-
const attachments = Array.isArray(body.attachments)
|
|
155
|
-
? body.attachments
|
|
156
|
-
: undefined;
|
|
157
|
-
if (!params.sessionId) {
|
|
158
|
-
return createErrorResponse(params.requestId, 400, "sessionId is required");
|
|
159
|
-
}
|
|
160
|
-
if (!instructions) {
|
|
161
|
-
return createErrorResponse(params.requestId, 400, "instructions are required");
|
|
162
|
-
}
|
|
163
|
-
try {
|
|
164
|
-
const result = await executeBySessionId({
|
|
165
|
-
agentState: params.runtime,
|
|
166
|
-
executionContext: params.context,
|
|
167
|
-
sessionId: params.sessionId,
|
|
168
|
-
instructions,
|
|
169
|
-
attachments,
|
|
170
|
-
});
|
|
171
|
-
return createSuccessResponse(params.requestId, {
|
|
172
|
-
success: true,
|
|
173
|
-
sessionId: params.sessionId,
|
|
174
|
-
result,
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
catch (error) {
|
|
178
|
-
return createErrorResponse(params.requestId, 500, String(error));
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
async function dispatchRequest(params) {
|
|
182
|
-
const { request } = params;
|
|
183
|
-
if (request.method === "GET" &&
|
|
184
|
-
request.path === "/api/plugins/list") {
|
|
185
|
-
const payload = {
|
|
186
|
-
success: true,
|
|
187
|
-
plugins: listPluginStates({ context: params.context }),
|
|
188
|
-
};
|
|
189
|
-
return createSuccessResponse(request.requestId, payload);
|
|
190
|
-
}
|
|
191
|
-
if (request.method === "POST" &&
|
|
192
|
-
request.path === "/api/plugins/control") {
|
|
193
|
-
return await handlePluginControl({
|
|
194
|
-
requestId: request.requestId,
|
|
195
|
-
body: request.body,
|
|
196
|
-
context: params.context,
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
if (request.method === "POST" &&
|
|
200
|
-
request.path === "/api/plugins/command") {
|
|
201
|
-
return await handlePluginCommand({
|
|
202
|
-
requestId: request.requestId,
|
|
203
|
-
body: request.body,
|
|
204
|
-
context: params.context,
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
if (request.method === "GET" && request.path === "/api/plugins/catalog") {
|
|
208
|
-
const payload = {
|
|
209
|
-
success: true,
|
|
210
|
-
plugins: params.context.plugins.list(),
|
|
211
|
-
};
|
|
212
|
-
return createSuccessResponse(request.requestId, payload);
|
|
213
|
-
}
|
|
214
|
-
if (request.method === "POST" && request.path === "/api/plugins/availability") {
|
|
215
|
-
return await handlePluginAvailability({
|
|
216
|
-
requestId: request.requestId,
|
|
217
|
-
body: request.body,
|
|
218
|
-
context: params.context,
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
if (request.method === "POST" && request.path === "/api/plugins/action") {
|
|
222
|
-
return await handlePluginAction({
|
|
223
|
-
requestId: request.requestId,
|
|
224
|
-
body: request.body,
|
|
225
|
-
context: params.context,
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
const controlSessionId = request.method === "POST"
|
|
229
|
-
? matchControlSessionExecutePath(request.path)
|
|
230
|
-
: null;
|
|
231
|
-
if (controlSessionId) {
|
|
232
|
-
return await handleControlSessionExecute({
|
|
233
|
-
requestId: request.requestId,
|
|
234
|
-
body: request.body,
|
|
235
|
-
context: params.context,
|
|
236
|
-
runtime: params.runtime,
|
|
237
|
-
sessionId: controlSessionId,
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
return createErrorResponse(request.requestId, 404, `Unknown local RPC path: ${request.method} ${request.path}`);
|
|
241
|
-
}
|
|
242
|
-
async function ensureEndpointReady(endpoint) {
|
|
243
|
-
if (process.platform === "win32")
|
|
244
|
-
return;
|
|
245
|
-
await fs.ensureDir(path.dirname(endpoint));
|
|
246
|
-
const exists = await fs.pathExists(endpoint);
|
|
247
|
-
if (!exists)
|
|
248
|
-
return;
|
|
249
|
-
if (await isSocketEndpointActive(endpoint)) {
|
|
250
|
-
throw new Error(`Local RPC endpoint already in use: ${endpoint}`);
|
|
251
|
-
}
|
|
252
|
-
await fs.remove(endpoint);
|
|
253
|
-
}
|
|
254
|
-
function writeResponse(socket, response) {
|
|
255
|
-
socket.end(`${JSON.stringify(response)}\n`);
|
|
256
|
-
}
|
|
257
|
-
function bindConnectionHandler(params) {
|
|
258
|
-
const { server, context, runtime } = params;
|
|
259
|
-
server.on("connection", (socket) => {
|
|
260
|
-
let buffered = "";
|
|
261
|
-
socket.setEncoding("utf8");
|
|
262
|
-
socket.on("data", async (chunk) => {
|
|
263
|
-
buffered += String(chunk || "");
|
|
264
|
-
const newlineIndex = buffered.indexOf("\n");
|
|
265
|
-
if (newlineIndex < 0)
|
|
266
|
-
return;
|
|
267
|
-
const raw = buffered.slice(0, newlineIndex).trim();
|
|
268
|
-
if (!raw) {
|
|
269
|
-
writeResponse(socket, createErrorResponse("unknown", 400, "Empty local RPC payload"));
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
try {
|
|
273
|
-
const request = JSON.parse(raw);
|
|
274
|
-
const response = await dispatchRequest({
|
|
275
|
-
request,
|
|
276
|
-
context,
|
|
277
|
-
runtime,
|
|
278
|
-
});
|
|
279
|
-
writeResponse(socket, response);
|
|
280
|
-
}
|
|
281
|
-
catch (error) {
|
|
282
|
-
writeResponse(socket, createErrorResponse("unknown", 400, `Invalid local RPC request: ${String(error)}`));
|
|
283
|
-
}
|
|
284
|
-
});
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* 启动本地 RPC server。
|
|
289
|
-
*/
|
|
290
|
-
export async function startLocalRpcServer(params) {
|
|
291
|
-
const endpoint = getLocalRpcEndpoint(params.context.rootPath);
|
|
292
|
-
await ensureEndpointReady(endpoint);
|
|
293
|
-
const server = net.createServer();
|
|
294
|
-
bindConnectionHandler({
|
|
295
|
-
server,
|
|
296
|
-
context: params.context,
|
|
297
|
-
runtime: params.runtime,
|
|
298
|
-
});
|
|
299
|
-
await new Promise((resolve, reject) => {
|
|
300
|
-
server.once("error", reject);
|
|
301
|
-
server.listen(endpoint, () => resolve());
|
|
302
|
-
});
|
|
303
|
-
return {
|
|
304
|
-
endpoint,
|
|
305
|
-
async stop() {
|
|
306
|
-
await new Promise((resolve) => {
|
|
307
|
-
server.close(() => resolve());
|
|
308
|
-
});
|
|
309
|
-
if (process.platform !== "win32") {
|
|
310
|
-
await fs.remove(endpoint);
|
|
311
|
-
}
|
|
312
|
-
},
|
|
313
|
-
};
|
|
314
|
-
}
|
|
315
|
-
//# sourceMappingURL=Server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../../../../src/runtime/server/rpc/Server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local RPC 客户端。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - 只用于本机受信任 IPC,不附加 HTTP Bearer 鉴权。
|
|
6
|
-
* - 返回结构与 HTTP `callServer()` 对齐,便于上层透明切换 transport。
|
|
7
|
-
*/
|
|
8
|
-
import type { DaemonJsonApiCallParams, DaemonJsonApiCallResult } from "../../../runtime/host/daemon/Api.js";
|
|
9
|
-
/**
|
|
10
|
-
* 通过本地 IPC 调用 agent runtime。
|
|
11
|
-
*/
|
|
12
|
-
export declare function callLocalServer<T>(params: DaemonJsonApiCallParams): Promise<DaemonJsonApiCallResult<T>>;
|
|
13
|
-
//# sourceMappingURL=Client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../../../src/runtime/transport/rpc/Client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AAetC;;GAEG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CA+ErC"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local RPC 客户端。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - 只用于本机受信任 IPC,不附加 HTTP Bearer 鉴权。
|
|
6
|
-
* - 返回结构与 HTTP `callServer()` 对齐,便于上层透明切换 transport。
|
|
7
|
-
*/
|
|
8
|
-
import net from "node:net";
|
|
9
|
-
import { nanoid } from "nanoid";
|
|
10
|
-
import { getLocalRpcEndpoint } from "./Paths.js";
|
|
11
|
-
const LOCAL_RPC_TIMEOUT_MS = 5_000;
|
|
12
|
-
function toLocalRpcRequest(params) {
|
|
13
|
-
return {
|
|
14
|
-
requestId: nanoid(),
|
|
15
|
-
path: String(params.path || "").trim(),
|
|
16
|
-
method: params.method || "GET",
|
|
17
|
-
...(params.body !== undefined ? { body: params.body } : {}),
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* 通过本地 IPC 调用 agent runtime。
|
|
22
|
-
*/
|
|
23
|
-
export async function callLocalServer(params) {
|
|
24
|
-
const endpoint = getLocalRpcEndpoint(params.projectRoot);
|
|
25
|
-
const request = toLocalRpcRequest(params);
|
|
26
|
-
const timeoutMs = typeof params.timeoutMs === "number" &&
|
|
27
|
-
Number.isFinite(params.timeoutMs) &&
|
|
28
|
-
params.timeoutMs > 0
|
|
29
|
-
? Math.floor(params.timeoutMs)
|
|
30
|
-
: LOCAL_RPC_TIMEOUT_MS;
|
|
31
|
-
return await new Promise((resolve) => {
|
|
32
|
-
const socket = net.createConnection(endpoint);
|
|
33
|
-
let settled = false;
|
|
34
|
-
let buffered = "";
|
|
35
|
-
const finish = (result) => {
|
|
36
|
-
if (settled)
|
|
37
|
-
return;
|
|
38
|
-
settled = true;
|
|
39
|
-
socket.destroy();
|
|
40
|
-
resolve(result);
|
|
41
|
-
};
|
|
42
|
-
socket.setEncoding("utf8");
|
|
43
|
-
socket.setTimeout(timeoutMs);
|
|
44
|
-
socket.on("connect", () => {
|
|
45
|
-
socket.write(`${JSON.stringify(request)}\n`);
|
|
46
|
-
});
|
|
47
|
-
socket.on("data", (chunk) => {
|
|
48
|
-
buffered += String(chunk || "");
|
|
49
|
-
const newlineIndex = buffered.indexOf("\n");
|
|
50
|
-
if (newlineIndex < 0)
|
|
51
|
-
return;
|
|
52
|
-
const raw = buffered.slice(0, newlineIndex).trim();
|
|
53
|
-
if (!raw) {
|
|
54
|
-
finish({
|
|
55
|
-
success: false,
|
|
56
|
-
error: `Local RPC returned empty payload from ${endpoint}`,
|
|
57
|
-
});
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
try {
|
|
61
|
-
const response = JSON.parse(raw);
|
|
62
|
-
finish({
|
|
63
|
-
success: response.success,
|
|
64
|
-
status: response.status,
|
|
65
|
-
...(response.data !== undefined ? { data: response.data } : {}),
|
|
66
|
-
...(response.error ? { error: response.error } : {}),
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
finish({
|
|
71
|
-
success: false,
|
|
72
|
-
error: `Local RPC returned invalid JSON from ${endpoint}: ${String(error)}`,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
socket.on("timeout", () => {
|
|
77
|
-
finish({
|
|
78
|
-
success: false,
|
|
79
|
-
error: `Local RPC timed out after ${timeoutMs}ms (${endpoint})`,
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
socket.on("error", (error) => {
|
|
83
|
-
finish({
|
|
84
|
-
success: false,
|
|
85
|
-
error: `Local RPC unavailable at ${endpoint}: ${String(error)}`,
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
socket.on("end", () => {
|
|
89
|
-
if (settled)
|
|
90
|
-
return;
|
|
91
|
-
finish({
|
|
92
|
-
success: false,
|
|
93
|
-
error: `Local RPC closed without response (${endpoint})`,
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=Client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../../src/runtime/transport/rpc/Client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAEnC,SAAS,iBAAiB,CAAC,MAA+B;IACxD,OAAO;QACL,SAAS,EAAE,MAAM,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACtC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK;QAC9B,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAA+B;IAE/B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,SAAS,GACb,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;QACjC,MAAM,CAAC,SAAS,GAAG,CAAC;QAClB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;QAC9B,CAAC,CAAC,oBAAoB,CAAC;IAE3B,OAAO,MAAM,IAAI,OAAO,CAA6B,CAAC,OAAO,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAElB,MAAM,MAAM,GAAG,CAAC,MAAkC,EAAQ,EAAE;YAC1D,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE7B,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,YAAY,GAAG,CAAC;gBAAE,OAAO;YAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,CAAC;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,yCAAyC,QAAQ,EAAE;iBAC3D,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;gBACrD,MAAM,CAAC;oBACL,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACrD,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,wCAAwC,QAAQ,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC5E,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,6BAA6B,SAAS,OAAO,QAAQ,GAAG;aAChE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3B,MAAM,CAAC;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,4BAA4B,QAAQ,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE;aAChE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACpB,IAAI,OAAO;gBAAE,OAAO;YACpB,MAAM,CAAC;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,sCAAsC,QAAQ,GAAG;aACzD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local RPC 路径工具。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - 本地受信任进程之间统一通过 IPC socket/pipe 通信。
|
|
6
|
-
* - Unix 平台使用 city 全局 runtime 目录下的稳定 socket 文件,避免不同启动上下文
|
|
7
|
-
* 的 `TMPDIR` 不一致,导致同一个 agent 被解析到两个不同 socket 路径。
|
|
8
|
-
* - Windows 平台使用命名 pipe,并基于项目路径 hash 保证稳定唯一。
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* 返回本地 RPC endpoint。
|
|
12
|
-
*/
|
|
13
|
-
export declare function getLocalRpcEndpoint(projectRoot: string): string;
|
|
14
|
-
//# sourceMappingURL=Paths.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Paths.d.ts","sourceRoot":"","sources":["../../../../src/runtime/transport/rpc/Paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA8BH;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQ/D"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local RPC 路径工具。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - 本地受信任进程之间统一通过 IPC socket/pipe 通信。
|
|
6
|
-
* - Unix 平台使用 city 全局 runtime 目录下的稳定 socket 文件,避免不同启动上下文
|
|
7
|
-
* 的 `TMPDIR` 不一致,导致同一个 agent 被解析到两个不同 socket 路径。
|
|
8
|
-
* - Windows 平台使用命名 pipe,并基于项目路径 hash 保证稳定唯一。
|
|
9
|
-
*/
|
|
10
|
-
import crypto from "node:crypto";
|
|
11
|
-
import path from "node:path";
|
|
12
|
-
import { getPlatformRootDirPath } from "../../../config/PlatformPaths.js";
|
|
13
|
-
/**
|
|
14
|
-
* 读取平台级运行目录。
|
|
15
|
-
*/
|
|
16
|
-
function getPlatformRuntimeDirPath() {
|
|
17
|
-
return path.join(getPlatformRootDirPath(), "main");
|
|
18
|
-
}
|
|
19
|
-
function buildProjectDigest(projectRoot) {
|
|
20
|
-
return crypto
|
|
21
|
-
.createHash("sha1")
|
|
22
|
-
.update(path.resolve(projectRoot))
|
|
23
|
-
.digest("hex")
|
|
24
|
-
.slice(0, 16);
|
|
25
|
-
}
|
|
26
|
-
function buildWindowsPipeName(projectRoot) {
|
|
27
|
-
const digest = buildProjectDigest(projectRoot);
|
|
28
|
-
return `\\\\.\\pipe\\downcity-local-${digest}`;
|
|
29
|
-
}
|
|
30
|
-
function getLocalRpcUnixDirPath() {
|
|
31
|
-
return path.join(getPlatformRuntimeDirPath(), "local-rpc");
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* 返回本地 RPC endpoint。
|
|
35
|
-
*/
|
|
36
|
-
export function getLocalRpcEndpoint(projectRoot) {
|
|
37
|
-
if (process.platform === "win32") {
|
|
38
|
-
return buildWindowsPipeName(projectRoot);
|
|
39
|
-
}
|
|
40
|
-
return path.join(getLocalRpcUnixDirPath(), `downcity-local-${buildProjectDigest(projectRoot)}.sock`);
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=Paths.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Paths.js","sourceRoot":"","sources":["../../../../src/runtime/transport/rpc/Paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;GAEG;AACH,SAAS,yBAAyB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,OAAO,MAAM;SACV,UAAU,CAAC,MAAM,CAAC;SAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SACjC,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC/C,OAAO,+BAA+B,MAAM,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,sBAAsB;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,WAAW,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CACd,sBAAsB,EAAE,EACxB,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,OAAO,CACzD,CAAC;AACJ,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 本地/远程 transport 选择器。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - 本地受信任调用默认优先使用 IPC。
|
|
6
|
-
* - 只有显式传入 `host/port` 时,才视为外部 HTTP 调用。
|
|
7
|
-
* - 当前返回结构与 `callServer()` 保持一致,方便命令层复用。
|
|
8
|
-
*/
|
|
9
|
-
import type { DaemonJsonApiCallParams, DaemonJsonApiCallResult } from "../../../runtime/host/daemon/Api.js";
|
|
10
|
-
/**
|
|
11
|
-
* 判断是否应强制使用 HTTP transport。
|
|
12
|
-
*/
|
|
13
|
-
export declare function shouldUseHttpTransport(params: {
|
|
14
|
-
host?: string;
|
|
15
|
-
port?: number;
|
|
16
|
-
}): boolean;
|
|
17
|
-
/**
|
|
18
|
-
* 统一调用 agent transport。
|
|
19
|
-
*/
|
|
20
|
-
export declare function callAgentTransport<T>(params: DaemonJsonApiCallParams): Promise<DaemonJsonApiCallResult<T>>;
|
|
21
|
-
//# sourceMappingURL=Transport.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Transport.d.ts","sourceRoot":"","sources":["../../../../src/runtime/transport/rpc/Transport.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AAItC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAKV;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAQrC"}
|