aws-runtime-bridge 1.9.92 → 1.9.93
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/dist/adapter/AcodeSdkAdapter.d.ts +22 -126
- package/dist/adapter/AdapterRegistry.d.ts +10 -38
- package/dist/adapter/ClaudeSdkAdapter.d.ts +21 -84
- package/dist/adapter/CodexSdkAdapter.d.ts +2 -10
- package/dist/adapter/OpencodeSdkAdapter.d.ts +6 -42
- package/dist/adapter/acode-tool-names.d.ts +3 -12
- package/dist/adapter/idle-poll-loop.d.ts +4 -16
- package/dist/adapter/index.d.ts +1 -4
- package/dist/adapter/instance-ai-config-resolver.d.ts +9 -29
- package/dist/adapter/types.d.ts +124 -242
- package/dist/adapters/cc-switch/common.d.ts +4 -14
- package/dist/adapters/cc-switch/index.d.ts +3 -11
- package/dist/adapters/cc-switch/mcp-acode.d.ts +1 -7
- package/dist/adapters/cc-switch/mcp-claude.d.ts +1 -5
- package/dist/adapters/cc-switch/mcp-claudecode.d.ts +1 -5
- package/dist/adapters/cc-switch/mcp-codex.d.ts +1 -7
- package/dist/adapters/cc-switch/mcp-opencode.d.ts +3 -11
- package/dist/adapters/cc-switch/mcp-placeholder.d.ts +1 -5
- package/dist/adapters/cc-switch/skill-acode.d.ts +1 -6
- package/dist/adapters/cc-switch/skill-claude.d.ts +1 -5
- package/dist/adapters/cc-switch/skill-claudecode.d.ts +1 -5
- package/dist/adapters/cc-switch/skill-opencode.d.ts +1 -5
- package/dist/adapters/cc-switch/skill-placeholder.d.ts +1 -5
- package/dist/config.d.ts +39 -57
- package/dist/index.d.ts +1 -5
- package/dist/middleware/auth.d.ts +4 -22
- package/dist/routes/acode-todos.d.ts +1 -9
- package/dist/routes/dashboard.d.ts +1 -6
- package/dist/routes/events.d.ts +1 -5
- package/dist/routes/file-browser.d.ts +2 -8
- package/dist/routes/file-diff-rollback.d.ts +13 -41
- package/dist/routes/file-snapshot.d.ts +1 -8
- package/dist/routes/git.d.ts +18 -91
- package/dist/routes/instance.d.ts +4 -15
- package/dist/routes/processes.d.ts +1 -5
- package/dist/routes/properties.d.ts +1 -5
- package/dist/routes/pty.d.ts +9 -36
- package/dist/routes/runtime-binding.d.ts +1 -4
- package/dist/routes/sessions.d.ts +2 -9
- package/dist/routes/sub-agents.d.ts +1 -12
- package/dist/routes/task-context.d.ts +1 -6
- package/dist/routes/terminal.d.ts +18 -92
- package/dist/routes/yml.d.ts +1 -5
- package/dist/services/acode-package.d.ts +2 -12
- package/dist/services/agent-event-store.d.ts +6 -26
- package/dist/services/agent-process-manager.d.ts +30 -184
- package/dist/services/ai-source-apply.d.ts +1 -3
- package/dist/services/auto-register.d.ts +29 -106
- package/dist/services/bridge-package-publish-hooks.d.ts +5 -19
- package/dist/services/cc-switch-sdk.d.ts +1 -6
- package/dist/services/cli-commands.d.ts +12 -33
- package/dist/services/event-delta-pusher.d.ts +5 -20
- package/dist/services/fileSnapshotStore.d.ts +7 -35
- package/dist/services/instance-ai-config-service.d.ts +4 -21
- package/dist/services/instance-service.d.ts +1 -10
- package/dist/services/instance-state.d.ts +5 -30
- package/dist/services/legacy-path-migration.d.ts +1 -1
- package/dist/services/lifecycle-state.d.ts +1 -4
- package/dist/services/mcp-launch-binding-queue.d.ts +2 -8
- package/dist/services/orphan-monitor.d.ts +20 -63
- package/dist/services/panel-auth.d.ts +12 -28
- package/dist/services/process-detector.d.ts +18 -122
- package/dist/services/process-registry.d.ts +30 -150
- package/dist/services/ring-buffer.d.ts +9 -42
- package/dist/services/runtime-binding.d.ts +2 -9
- package/dist/services/runtime-lifecycle-policy.d.ts +3 -15
- package/dist/services/session-output.d.ts +14 -67
- package/dist/services/startup-config-wizard.d.ts +3 -10
- package/dist/services/system-metrics.d.ts +1 -4
- package/dist/services/terminal-persistence.d.ts +10 -53
- package/dist/services/tool-installer.d.ts +6 -18
- package/dist/services/tunnel-client.d.ts +3 -18
- package/dist/services/windows-service-manager.d.ts +1 -13
- package/dist/services/workspace-files.d.ts +17 -57
- package/dist/services/workspace-watch.d.ts +2 -6
- package/dist/services/workspaceTaskChangeWatcher.d.ts +13 -51
- package/dist/types.d.ts +2 -8
- package/dist/utils/instance-ai-config-debug-logger.d.ts +5 -20
- package/dist/utils/logger.d.ts +7 -20
- package/dist/utils/mcp-utils.d.ts +8 -44
- package/dist/utils/path-utils.d.ts +3 -15
- package/dist/utils/sdk-package-loader.d.ts +2 -8
- package/dist/utils/validation.d.ts +3 -20
- package/dist/utils/yaml-utils.d.ts +8 -56
- package/node_modules/@cc-switch/sdk/dist/index.d.ts +1 -6
- package/node_modules/@cc-switch/sdk/dist/sdk.d.ts +11 -42
- package/package/acode/dist/ask-user-question-tool.d.ts +7 -20
- package/package/acode/dist/built-in-file-tools.d.ts +3 -6
- package/package/acode/dist/built-in-symbols-tool.d.ts +1 -4
- package/package/acode/dist/builtins/commandArtifacts.d.ts +1 -4
- package/package/acode/dist/builtins/shellOutputDecoder.d.ts +3 -18
- package/package/acode/dist/commands/commandLoader.d.ts +1 -4
- package/package/acode/dist/commands/commandParser.d.ts +1 -4
- package/package/acode/dist/compaction.d.ts +38 -175
- package/package/acode/dist/config.d.ts +1 -4
- package/package/acode/dist/fs-utils.d.ts +1 -19
- package/package/acode/dist/hooks/hookBus.d.ts +1 -4
- package/package/acode/dist/mcpToolNames.d.ts +2 -8
- package/package/acode/dist/parsers/ast-cache.d.ts +7 -20
- package/package/acode/dist/parsers/language-detector.d.ts +1 -5
- package/package/acode/dist/parsers/language-queries.d.ts +1 -1
- package/package/acode/dist/parsers/tree-sitter-loader.d.ts +4 -12
- package/package/acode/dist/parsers/types.d.ts +19 -30
- package/package/acode/dist/runtime.d.ts +47 -269
- package/package/acode/dist/skill-tool.d.ts +3 -23
- package/package/acode/dist/sub-agent-manager.d.ts +41 -206
- package/package/acode/dist/sub-agent-store.d.ts +12 -61
- package/package/acode/dist/sub-agent-tools.d.ts +9 -18
- package/package/acode/dist/sub-agent-types.d.ts +32 -38
- package/package/acode/dist/todo-store.d.ts +8 -23
- package/package/acode/dist/todo-tool.d.ts +2 -2
- package/package/acode/dist/types.d.ts +17 -38
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts +44 -161
- package/package/aws-client-agent-mcp/dist/config.d.ts +4 -18
- package/package/aws-client-agent-mcp/dist/constants.d.ts +1 -3
- package/package/aws-client-agent-mcp/dist/context-manager.d.ts +25 -95
- package/package/aws-client-agent-mcp/dist/context-manager.test.d.ts +1 -4
- package/package/aws-client-agent-mcp/dist/http-client.d.ts +15 -56
- package/package/aws-client-agent-mcp/dist/index.d.ts +1 -11
- package/package/aws-client-agent-mcp/dist/logger.d.ts +5 -22
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +76 -365
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +21 -83
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts +15 -70
- package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +4 -17
- package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +23 -92
- package/package/aws-client-agent-mcp/dist/messageContent.d.ts +5 -29
- package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +2 -9
- package/package/aws-client-agent-mcp/dist/status-reporter.d.ts +17 -55
- package/package/aws-client-agent-mcp/dist/types.d.ts +66 -125
- package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +30 -125
- package/package/cc-switch-sdk/dist/index.d.ts +1 -6
- package/package/cc-switch-sdk/dist/sdk.d.ts +11 -42
- package/package.json +1 -1
|
@@ -48,13 +48,10 @@ export interface ACodeSkillMetadata {
|
|
|
48
48
|
name: string;
|
|
49
49
|
description?: string;
|
|
50
50
|
directory: string;
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
content: string;
|
|
53
53
|
}
|
|
54
|
-
|
|
55
|
-
* 单个 skills 目录的加载结果:包含目录路径、是否存在、以及该目录下的 skills 列表。
|
|
56
|
-
* 即使目录不存在也会返回(exists=false, skills=[]),供前端展示空节点。
|
|
57
|
-
*/
|
|
54
|
+
|
|
58
55
|
export interface ACodeSkillGroup {
|
|
59
56
|
dir: string;
|
|
60
57
|
exists: boolean;
|
|
@@ -107,69 +104,51 @@ export interface ACodeRuntimeConfig {
|
|
|
107
104
|
skillsDir?: string;
|
|
108
105
|
initialPrompt?: string;
|
|
109
106
|
model?: string;
|
|
110
|
-
|
|
107
|
+
|
|
111
108
|
effort?: string;
|
|
112
109
|
systemPrompt?: string;
|
|
113
|
-
|
|
110
|
+
|
|
114
111
|
globalPrompt?: string;
|
|
115
|
-
|
|
112
|
+
|
|
116
113
|
rolePrompt?: string;
|
|
117
|
-
|
|
114
|
+
|
|
118
115
|
memory?: string;
|
|
119
116
|
env?: Record<string, string>;
|
|
120
117
|
commandDirs?: string[];
|
|
121
118
|
hooks?: ACodeHookHandler[];
|
|
122
119
|
permissions?: ACodePermissionConfig;
|
|
123
|
-
|
|
120
|
+
|
|
124
121
|
subAgentManager?: SubAgentManager;
|
|
125
|
-
|
|
126
|
-
* 可选:共享的 MCP 连接(由父 agent 注入)。
|
|
127
|
-
* 设置后子 agent 跳过 connectMcpServers,直接复用父 agent 的 MCP 连接,
|
|
128
|
-
* 避免子 agent 启动新的 MCP server 进程后因 launch binding 已被消费而 401。
|
|
129
|
-
* stop() 时不会关闭共享连接(由创建者管理生命周期)。
|
|
130
|
-
*/
|
|
122
|
+
|
|
131
123
|
sharedMcpConnections?: ACodeMcpConnection[];
|
|
132
|
-
|
|
124
|
+
|
|
133
125
|
subAgentModel?: string;
|
|
134
|
-
|
|
126
|
+
|
|
135
127
|
subAgentEffort?: string;
|
|
136
|
-
|
|
137
|
-
* Sub Agent 类型(general | explore)。
|
|
138
|
-
* - general:完整工具权限(可读写工作区文件)
|
|
139
|
-
* - explore:只读模式,过滤掉会修改工作区文件的内建工具
|
|
140
|
-
* (write_file/edit_file/delete_file/Bash),仅保留 read_file/grep/symbols
|
|
141
|
-
* 等只读工具 + memory MCP 工具。MCP 工具白名单由
|
|
142
|
-
* SUB_AGENT_ALLOWED_MCP_TOOLS 独立施加,此处不重复。
|
|
143
|
-
* 未设置时视为 general(向后兼容)。
|
|
144
|
-
*/
|
|
128
|
+
|
|
145
129
|
subagentType?: SubAgentType;
|
|
146
|
-
|
|
147
|
-
* 可选:Agent 文件操作变更回调。
|
|
148
|
-
* 当 Agent 调用 write_file/edit_file/delete_file 工具时,
|
|
149
|
-
* 执行前后会调用此回调上报精确变更记录(供 bridge 差异回滚使用)。
|
|
150
|
-
*/
|
|
130
|
+
|
|
151
131
|
onFileChange?: import("./built-in-file-tools.js").OnAgentFileChange;
|
|
152
132
|
}
|
|
153
133
|
export interface ACodeResolvedProviderConfig {
|
|
154
134
|
model: string;
|
|
155
135
|
baseURL?: string;
|
|
156
136
|
apiKey?: string;
|
|
157
|
-
|
|
137
|
+
|
|
158
138
|
effort?: string;
|
|
159
139
|
systemPrompt?: string;
|
|
160
140
|
stream: boolean;
|
|
161
141
|
requestTimeoutMs: number;
|
|
162
|
-
|
|
142
|
+
|
|
163
143
|
requestTotalTimeoutMs: number;
|
|
164
144
|
requestRetryCount: number;
|
|
165
145
|
mcpToolTimeoutMs: number;
|
|
166
146
|
mcpPollingToolTimeoutMs: number;
|
|
167
147
|
supportsImageInput: boolean;
|
|
168
|
-
|
|
148
|
+
|
|
169
149
|
contextLimit?: number;
|
|
170
|
-
|
|
171
|
-
* 设置后压缩阈值基于 inputLimit 计算,更精确。未配置时降级到 contextLimit。 */
|
|
150
|
+
|
|
172
151
|
inputLimit?: number;
|
|
173
|
-
|
|
152
|
+
|
|
174
153
|
maxOutput?: number;
|
|
175
154
|
}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Agent 客户端核心模块
|
|
3
|
-
* 负责与调度中心通信,管理消息循环
|
|
4
|
-
*/
|
|
1
|
+
|
|
5
2
|
import type { MemoryStats } from "./memory-store.js";
|
|
6
3
|
import { StatusReporter } from "./status-reporter.js";
|
|
7
4
|
import type { AgentConfig, DirectMessage, DmHistoryResponse, FetchUnreadMessagesOptions, FinishTaskRollbackArgs, GroupHistoryResponse, GroupRoomsResponse, HireBatchResult, HireColleagueArgs, HireColleaguesBatchArgs, HiredColleagueResult, MessageHandler, OnlineListResponse, ProfileInfo, RegisterResult, SendDmResult, SendMessageResult, StartTaskRollbackArgs, TaskInstanceCommentArgs, UnreadMessagesResult } from "./types.js";
|
|
@@ -21,181 +18,89 @@ export declare class AgentClient {
|
|
|
21
18
|
private pollTimer;
|
|
22
19
|
private statusReporter;
|
|
23
20
|
private newCharacterHandler;
|
|
24
|
-
|
|
21
|
+
|
|
25
22
|
private runtimeTokenRefreshTimer;
|
|
26
|
-
|
|
27
|
-
* Profile 缓存
|
|
28
|
-
* 用于处理 PROFILE_INFO 消息在 profileHandler 设置之前到达的情况
|
|
29
|
-
*/
|
|
23
|
+
|
|
30
24
|
private cachedProfile;
|
|
31
25
|
constructor();
|
|
32
26
|
initialize(): Promise<void>;
|
|
33
27
|
private setupWebSocketListeners;
|
|
34
|
-
|
|
35
|
-
* 注册 Agent 上线
|
|
36
|
-
*/
|
|
28
|
+
|
|
37
29
|
register(): Promise<RegisterResult>;
|
|
38
30
|
private hasPresetAgentId;
|
|
39
|
-
|
|
40
|
-
* 使用预设 AgentID 注册(绑定已有实例)
|
|
41
|
-
*/
|
|
31
|
+
|
|
42
32
|
private registerWithExistingAgentId;
|
|
43
|
-
|
|
44
|
-
* 作为新 Agent 注册
|
|
45
|
-
*/
|
|
33
|
+
|
|
46
34
|
private registerAsNewAgent;
|
|
47
|
-
|
|
48
|
-
* 注销 Agent 下线
|
|
49
|
-
*/
|
|
35
|
+
|
|
50
36
|
unregister(): Promise<void>;
|
|
51
|
-
|
|
52
|
-
* 获取当前 Agent 可见的同事列表(包含离线 Agent)。
|
|
53
|
-
*/
|
|
37
|
+
|
|
54
38
|
discoverColleagues(): Promise<OnlineListResponse>;
|
|
55
|
-
|
|
56
|
-
* 获取当前 Agent 在关系图中可发现的群组列表。
|
|
57
|
-
*/
|
|
39
|
+
|
|
58
40
|
discoverGroupRooms(): Promise<GroupRoomsResponse>;
|
|
59
|
-
|
|
60
|
-
* 招聘同事并创建新的 Agent 实例。
|
|
61
|
-
* 主流程:校验当前实例已注册 -> 透传创建角色参数到服务端 MCP tool -> 返回新实例信息。
|
|
62
|
-
*/
|
|
41
|
+
|
|
63
42
|
hireColleague(args: HireColleagueArgs): Promise<HiredColleagueResult>;
|
|
64
|
-
|
|
65
|
-
* 批量发起招聘审批请求。
|
|
66
|
-
* 主流程:校验当前实例已注册 -> 透传批量招聘参数到服务端 MCP tool -> 返回整批审批与创建结果。
|
|
67
|
-
*/
|
|
43
|
+
|
|
68
44
|
hireColleaguesBatch(args: HireColleaguesBatchArgs): Promise<HireBatchResult>;
|
|
69
|
-
|
|
70
|
-
* 调用需要当前 Agent 实例身份的 server MCP tool。
|
|
71
|
-
* 主流程:确认已注册 -> 自动附加 agentId -> 复用带 runtime token 的 HTTP 通道。
|
|
72
|
-
*/
|
|
45
|
+
|
|
73
46
|
callAgentScopedTool<T = unknown>(toolName: string, args: Record<string, unknown>): Promise<T>;
|
|
74
|
-
|
|
75
|
-
* 上报当前 MCP 本地合并后的记忆统计。
|
|
76
|
-
* 主流程:自动附加 agentId -> 交给 server 广播给 Dashboard,避免前端只看到 server 实例级统计。
|
|
77
|
-
*/
|
|
47
|
+
|
|
78
48
|
reportMemoryStats(memoryStats: MemoryStats): Promise<void>;
|
|
79
|
-
|
|
80
|
-
* 发送群消息
|
|
81
|
-
* @param content 消息内容
|
|
82
|
-
* @param projectName 目标项目名,不传则使用 Agent 所属项目(由服务端决定)
|
|
83
|
-
* @param roomId 目标群房间 ID,小组群场景下优先使用以避免误发到项目公共群
|
|
84
|
-
*/
|
|
49
|
+
|
|
85
50
|
sendGroupMessage(content: string, projectName?: string, roomId?: string): Promise<SendMessageResult>;
|
|
86
|
-
|
|
87
|
-
* 发送私信
|
|
88
|
-
*
|
|
89
|
-
* waitReply=true(调用式)时使用 callToolOnce 替代 callTool,原因:
|
|
90
|
-
* - callTool 的全局 HTTP 超时固定为 120s(DEFAULT_MCP_HTTP_REQUEST_TIMEOUT_MS),
|
|
91
|
-
* 无法匹配服务端 sendCallAndWaitReply 的较长等待时间
|
|
92
|
-
* - callTool 的重试循环(累计最多重试 30s)在服务端排队 503 时还可能额外拖累
|
|
93
|
-
* - callToolOnce 无自动重试、支持自定义超时,与服务端阻塞等待语义一致
|
|
94
|
-
*/
|
|
51
|
+
|
|
95
52
|
sendDirectMessage(targetId: string, content: string, waitReply?: boolean, replyToCallId?: string, timeoutMs?: number): Promise<SendDmResult>;
|
|
96
|
-
|
|
97
|
-
* 发送私信并等待回复(阻塞式)
|
|
98
|
-
*/
|
|
53
|
+
|
|
99
54
|
sendCallAndWaitReply(targetId: string, content: string, timeoutMs?: number): Promise<DirectMessage>;
|
|
100
|
-
|
|
101
|
-
* 回复调用式消息
|
|
102
|
-
*/
|
|
55
|
+
|
|
103
56
|
replyToCall(callId: string, targetId: string, content: string): Promise<SendDmResult>;
|
|
104
|
-
|
|
105
|
-
* 获取私信历史消息
|
|
106
|
-
*/
|
|
57
|
+
|
|
107
58
|
getDmHistory(targetUserId?: string, limit?: number, since?: string): Promise<DmHistoryResponse>;
|
|
108
|
-
|
|
109
|
-
* 获取群消息历史记录
|
|
110
|
-
*/
|
|
59
|
+
|
|
111
60
|
getGroupHistory(limit?: number, roomId?: string, since?: string): Promise<GroupHistoryResponse>;
|
|
112
|
-
|
|
113
|
-
* 拉取当前 Agent 尚未消费的未读消息。
|
|
114
|
-
* 主流程:校验注册状态 -> 获取未读私信 -> 获取未读群消息 -> 合并返回。
|
|
115
|
-
* @param since 可选的起始时间(ISO 8601),早于该时间的消息将被过滤
|
|
116
|
-
*/
|
|
61
|
+
|
|
117
62
|
fetchUnreadMessages(options?: FetchUnreadMessagesOptions): Promise<UnreadMessagesResult>;
|
|
118
|
-
|
|
119
|
-
* 拉取服务端私信并对 poll_message 长轮询做容错处理。
|
|
120
|
-
* 主流程:针对 poll_message 使用 callToolOnce(单次长阻塞,无重试干扰);
|
|
121
|
-
* 非 poll_message 工具走 callTool(标准带重试逻辑)。
|
|
122
|
-
* callToolOnce 超时后转为空结果,让 hydrateUnreadMessagesUntilAvailable 继续等待。
|
|
123
|
-
*/
|
|
63
|
+
|
|
124
64
|
private fetchDirectMessagesWithRecovery;
|
|
125
|
-
|
|
126
|
-
* 判断是否为 poll_message 长轮询的可恢复失败。
|
|
127
|
-
* 主流程:只匹配明确的 HTTP 503 或客户端硬超时,避免吞掉业务工具错误或认证错误。
|
|
128
|
-
*/
|
|
65
|
+
|
|
129
66
|
private isRecoverableLongPollError;
|
|
130
|
-
|
|
131
|
-
* 规范化服务端群消息响应。
|
|
132
|
-
* 主流程:只接受数组中的完整群消息对象,忽略 401/空响应/异常元素,避免补拉消息时崩溃。
|
|
133
|
-
*/
|
|
67
|
+
|
|
134
68
|
private normalizeGroupMessages;
|
|
135
|
-
|
|
136
|
-
* 收集当前项目下 Agent 可访问的群房间 ID,避免离线补拉和历史查询遗漏小组群。
|
|
137
|
-
*/
|
|
69
|
+
|
|
138
70
|
private collectRoomIds;
|
|
139
|
-
|
|
140
|
-
* 获取当前 Agent 的个人信息
|
|
141
|
-
*/
|
|
71
|
+
|
|
142
72
|
getProfile(): Promise<ProfileInfo>;
|
|
143
73
|
private getProfileByAgentId;
|
|
144
|
-
|
|
145
|
-
* 获取当前 Agent 被分配的流程线任务列表
|
|
146
|
-
*/
|
|
74
|
+
|
|
147
75
|
getMyTasks(): Promise<unknown[]>;
|
|
148
|
-
|
|
149
|
-
* 创建流程线实例级留言。
|
|
150
|
-
* 主流程:确认已注册 -> 自动附加 agentId -> 服务端校验当前 Agent 正在处理该实例节点。
|
|
151
|
-
*/
|
|
76
|
+
|
|
152
77
|
createTaskInstanceComment(args: TaskInstanceCommentArgs): Promise<unknown>;
|
|
153
|
-
|
|
154
|
-
* 提交流程线任务结果
|
|
155
|
-
* @param changeLog 可选。本次任务处理期间产生的文件/内容变更日志,服务端会在节点翻转状态前持久化,供 AI 回退使用。
|
|
156
|
-
*/
|
|
78
|
+
|
|
157
79
|
submitTaskResult(nodeId: string, outputPayload: string, changeLog?: unknown[]): Promise<unknown>;
|
|
158
|
-
|
|
159
|
-
* 将分配给当前 Agent 的 AI 回退任务标记为回退中。
|
|
160
|
-
*/
|
|
80
|
+
|
|
161
81
|
startTaskRollback(args: StartTaskRollbackArgs): Promise<unknown>;
|
|
162
|
-
|
|
163
|
-
* 将分配给当前 Agent 的 AI 回退任务标记为已回退,并写入结果说明。
|
|
164
|
-
*/
|
|
82
|
+
|
|
165
83
|
finishTaskRollback(args: FinishTaskRollbackArgs): Promise<unknown>;
|
|
166
|
-
|
|
167
|
-
* 拒绝流程线任务
|
|
168
|
-
*/
|
|
84
|
+
|
|
169
85
|
rejectTask(nodeId: string, reason: string): Promise<unknown>;
|
|
170
|
-
|
|
171
|
-
* 终止流程线任务(终止后不再流转)
|
|
172
|
-
*/
|
|
86
|
+
|
|
173
87
|
terminateTask(taskInstanceId: string, reason: string): Promise<unknown>;
|
|
174
|
-
|
|
175
|
-
* 启动消息监听
|
|
176
|
-
*/
|
|
88
|
+
|
|
177
89
|
start(handler: MessageHandler, options?: {
|
|
178
90
|
pollMode?: boolean;
|
|
179
91
|
profileHandler?: ProfileHandler;
|
|
180
92
|
}): void;
|
|
181
|
-
|
|
182
|
-
* 停止消息监听
|
|
183
|
-
*/
|
|
93
|
+
|
|
184
94
|
stop(): void;
|
|
185
95
|
private messageLoop;
|
|
186
96
|
private handleIncomingDm;
|
|
187
97
|
private handleIncomingGroup;
|
|
188
|
-
|
|
189
|
-
* 处理收到的 Profile 信息
|
|
190
|
-
* 由服务端在 Agent 连接时自动推送
|
|
191
|
-
*/
|
|
98
|
+
|
|
192
99
|
private handleProfileInfo;
|
|
193
100
|
private processMessage;
|
|
194
101
|
private ensureRegistered;
|
|
195
102
|
private delay;
|
|
196
|
-
|
|
197
|
-
* 注册新角色回调:当 registerAsNewAgent 返回 isExisting === false 时触发。
|
|
198
|
-
*/
|
|
103
|
+
|
|
199
104
|
onNewCharacter(handler: () => void): void;
|
|
200
105
|
getState(): {
|
|
201
106
|
agentId: string | null;
|
|
@@ -206,43 +111,21 @@ export declare class AgentClient {
|
|
|
206
111
|
};
|
|
207
112
|
getAgentConfig(): AgentConfig;
|
|
208
113
|
reloadConfig(): void;
|
|
209
|
-
|
|
210
|
-
* 进入降级模式
|
|
211
|
-
* 当注册失败时,Agent 可以降级运行,等待后续重试注册
|
|
212
|
-
*/
|
|
114
|
+
|
|
213
115
|
enterDegradedMode(): void;
|
|
214
|
-
|
|
215
|
-
* 退出降级模式
|
|
216
|
-
* 当重连成功时,退出降级模式
|
|
217
|
-
*/
|
|
116
|
+
|
|
218
117
|
exitDegradedMode(): void;
|
|
219
|
-
|
|
220
|
-
* 是否处于降级模式
|
|
221
|
-
*/
|
|
118
|
+
|
|
222
119
|
isInDegradedMode(): boolean;
|
|
223
|
-
|
|
224
|
-
* 降级模式下重试注册
|
|
225
|
-
* 在后台持续尝试重新注册到调度中心
|
|
226
|
-
*/
|
|
120
|
+
|
|
227
121
|
retryRegistrationInBackground(retryIntervalMs: number, maxRetries: number): Promise<void>;
|
|
228
|
-
|
|
229
|
-
* 初始化状态报告器
|
|
230
|
-
*/
|
|
122
|
+
|
|
231
123
|
private initializeStatusReporter;
|
|
232
|
-
|
|
233
|
-
* 启动 runtimeAccessToken 主动续期定时器。
|
|
234
|
-
* 主流程:消费 serverConfig.runtimeTokenRefreshIntervalMs(默认 12h),在服务端 24h TTL 过期前
|
|
235
|
-
* 通过 bridge refresh-token 端点续期,避免 token 过期后 WebSocket 重连被拒(1008)导致 zombie。
|
|
236
|
-
*/
|
|
124
|
+
|
|
237
125
|
private startRuntimeTokenRefresh;
|
|
238
126
|
private stopRuntimeTokenRefresh;
|
|
239
|
-
|
|
240
|
-
* 上报 MCP Node.js 进程自身日志。
|
|
241
|
-
* 主流程:logger 写入 stderr/file -> sink 回调 -> WebSocket 转发给调度中心和面板。
|
|
242
|
-
*/
|
|
127
|
+
|
|
243
128
|
private reportMcpNodeLog;
|
|
244
|
-
|
|
245
|
-
* 获取状态报告器(供 MCP Server 使用)
|
|
246
|
-
*/
|
|
129
|
+
|
|
247
130
|
getStatusReporter(): StatusReporter | null;
|
|
248
131
|
}
|
|
@@ -1,29 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
* 配置管理模块
|
|
3
|
-
* 负责读取环境变量配置
|
|
4
|
-
*
|
|
5
|
-
* 注意:Agent 角色配置(roleName, prompt 等)由后端从 runtime-bridge 获取
|
|
6
|
-
* MCP 客户端只需要传递 workspacePath
|
|
7
|
-
*/
|
|
1
|
+
|
|
8
2
|
import type { AgentConfig, RuntimeLaunchBinding, ServerConfig } from "./types.js";
|
|
9
3
|
export declare class ConfigManager {
|
|
10
4
|
private agentConfig;
|
|
11
5
|
private serverConfig;
|
|
12
|
-
|
|
13
|
-
* 加载配置
|
|
14
|
-
* MCP 客户端只提供 workspacePath,角色配置由后端从 runtime-bridge 获取
|
|
15
|
-
*/
|
|
6
|
+
|
|
16
7
|
loadConfig(): void;
|
|
17
8
|
applyRuntimeLaunchBinding(binding: RuntimeLaunchBinding): void;
|
|
18
9
|
private parseRuntimeTokenRefreshInterval;
|
|
19
|
-
|
|
20
|
-
* 解析正整数环境变量。
|
|
21
|
-
* 主流程:读取字符串 -> 转为整数 -> 非法值回退默认值并记录警告。
|
|
22
|
-
*/
|
|
10
|
+
|
|
23
11
|
private parsePositiveIntegerEnv;
|
|
24
|
-
|
|
25
|
-
* 仅更新 runtimeAccessToken,供 401 恢复时调用。
|
|
26
|
-
*/
|
|
12
|
+
|
|
27
13
|
updateRuntimeAccessToken(newToken: string): boolean;
|
|
28
14
|
getAgentConfig(): AgentConfig;
|
|
29
15
|
getServerConfig(): ServerConfig;
|
|
@@ -1,138 +1,68 @@
|
|
|
1
|
-
|
|
2
|
-
* 上下文管理器 — 会话级 Token 追踪、溢出检测与压缩
|
|
3
|
-
*
|
|
4
|
-
* 核心职责:
|
|
5
|
-
* 1. 追踪每轮会话的累计 token 消耗
|
|
6
|
-
* 2. 根据模型上下文窗口判断是否溢出
|
|
7
|
-
* 3. 提供 prune(裁剪旧工具输出)/ summarize(摘要化)两种压缩策略
|
|
8
|
-
* 4. 通过 MemoryStore(session_context) 持久化压缩后的摘要
|
|
9
|
-
*
|
|
10
|
-
* 设计思路(参考 OpenCode compaction.ts):
|
|
11
|
-
* - 保持 20K token 作为缓冲区,避免溢出前措手不及
|
|
12
|
-
* - Prune 从最旧消息开始累计工具输出,超过保护线后标记 compacted
|
|
13
|
-
* - Summarize 将早期对话结构化为摘要存入 session_context memory
|
|
14
|
-
*
|
|
15
|
-
* 关于模型上下文窗口大小:
|
|
16
|
-
* - 当前版本通过模型名查找表获取(见 MODEL_CONTEXT_LIMITS)
|
|
17
|
-
* - 查找不到时默认使用 128K(保守值)
|
|
18
|
-
* - 后续可通过服务端 AiSourceTemplate 扩展 contextLimit/maxOutput 字段
|
|
19
|
-
*/
|
|
1
|
+
|
|
20
2
|
import type { MemoryStorePort } from "./memory-store.js";
|
|
21
3
|
import type { TokenUsage, ModelInfo, ContextStats, CompactionStrategy, CompactionResult, DirectMessage, GroupMessage } from "./types.js";
|
|
22
|
-
|
|
4
|
+
|
|
23
5
|
export interface SessionContextRecord {
|
|
24
|
-
|
|
6
|
+
|
|
25
7
|
sessionId: string;
|
|
26
|
-
|
|
8
|
+
|
|
27
9
|
tokens: {
|
|
28
10
|
totalInput: number;
|
|
29
11
|
totalOutput: number;
|
|
30
12
|
totalReasoning: number;
|
|
31
13
|
};
|
|
32
|
-
|
|
14
|
+
|
|
33
15
|
modelInfo?: ModelInfo;
|
|
34
|
-
|
|
16
|
+
|
|
35
17
|
lastActivity: string;
|
|
36
|
-
|
|
18
|
+
|
|
37
19
|
compactions: {
|
|
38
20
|
timestamp: string;
|
|
39
21
|
strategy: CompactionStrategy;
|
|
40
22
|
freedTokens: number;
|
|
41
23
|
messageCount: number;
|
|
42
24
|
}[];
|
|
43
|
-
|
|
25
|
+
|
|
44
26
|
overflowWarned: boolean;
|
|
45
|
-
|
|
27
|
+
|
|
46
28
|
messageCount: number;
|
|
47
29
|
}
|
|
48
30
|
export declare class ContextManager {
|
|
49
|
-
|
|
31
|
+
|
|
50
32
|
private sessions;
|
|
51
33
|
private memoryStore;
|
|
52
34
|
constructor(memoryStore: MemoryStorePort);
|
|
53
|
-
|
|
54
|
-
* 根据模型名查找上下文窗口大小。
|
|
55
|
-
* 公开方法,供外部(如 mcp-server)使用。
|
|
56
|
-
*/
|
|
35
|
+
|
|
57
36
|
lookupModelLimits(modelName: string): {
|
|
58
37
|
contextLimit: number;
|
|
59
38
|
maxOutput: number;
|
|
60
39
|
};
|
|
61
|
-
|
|
62
|
-
* 粗略估算文本的 token 数。
|
|
63
|
-
* 不使用真实 tokenizer(太慢),基于字符数乘经验系数。
|
|
64
|
-
* 对纯 ASCII 约 4 字符/token,对中文约 1.5 字符/token。
|
|
65
|
-
*
|
|
66
|
-
* x1.15 安全填充确保本地估算始终偏大(安全侧),
|
|
67
|
-
* 与 compaction.ts 的 estimateTokens 策略保持一致。
|
|
68
|
-
*/
|
|
40
|
+
|
|
69
41
|
estimateTokens(text: string): number;
|
|
70
|
-
|
|
71
|
-
* 从 TokenUsage 估算总 token 数。
|
|
72
|
-
*/
|
|
42
|
+
|
|
73
43
|
estimateTotalUsage(tokens: TokenUsage): number;
|
|
74
|
-
|
|
75
|
-
* 获取或创建会话上下文记录。
|
|
76
|
-
*/
|
|
44
|
+
|
|
77
45
|
private getOrCreateSession;
|
|
78
|
-
|
|
79
|
-
* 记录一次 token 消耗。
|
|
80
|
-
*/
|
|
46
|
+
|
|
81
47
|
recordUsage(sessionId: string, tokens: TokenUsage, modelInfo?: ModelInfo): Promise<void>;
|
|
82
|
-
|
|
83
|
-
* 判断当前会话是否上下文溢出。
|
|
84
|
-
* 逻辑参考 OpenCode SessionCompaction.isOverflow:
|
|
85
|
-
* - 已用 token >= (contextLimit - maxOutput - COMPACTION_BUFFER)
|
|
86
|
-
*/
|
|
48
|
+
|
|
87
49
|
isOverflow(sessionId: string, modelInfo?: ModelInfo): Promise<boolean>;
|
|
88
|
-
|
|
89
|
-
* 获取当前会话的上下文统计。
|
|
90
|
-
*/
|
|
50
|
+
|
|
91
51
|
getStats(sessionId: string, modelInfo?: ModelInfo): Promise<ContextStats>;
|
|
92
|
-
|
|
93
|
-
* Prune:从消息列表中裁剪旧工具的输出内容。
|
|
94
|
-
*
|
|
95
|
-
* 算法(参考 OpenCode compaction.ts:50-99):
|
|
96
|
-
* 1. 从最新消息往旧遍历
|
|
97
|
-
* 2. 跳过前 keepLastTurns 轮对话
|
|
98
|
-
* 3. 遇到已有 summary 标记的助手消息就停止
|
|
99
|
-
* 4. 累计已完成工具调用的输出 token
|
|
100
|
-
* 5. 超过 PRUNE_PROTECT 保护线的标记为 compacted
|
|
101
|
-
* 6. 只有收益超过 PRUNE_MINIMUM 才真正执行
|
|
102
|
-
*
|
|
103
|
-
* @param messages 消息列表(从旧到新)
|
|
104
|
-
* @param keepLastTurns 保留最近的完整轮次
|
|
105
|
-
* @returns 修剪结果
|
|
106
|
-
*/
|
|
52
|
+
|
|
107
53
|
prune(messages: (DirectMessage | GroupMessage)[], keepLastTurns?: number): CompactionResult;
|
|
108
|
-
|
|
109
|
-
* 判断消息是否为"用户消息"(用于轮次计数)。
|
|
110
|
-
* 在 ACode 的上下文中,DirectMessage 我们都是"用户发给 Agent"或"Agent 间"的消息。
|
|
111
|
-
* 简单启发:判断是否有 requireReply 或消息较短(工具输出通常很长)。
|
|
112
|
-
*/
|
|
54
|
+
|
|
113
55
|
private isUserMessage;
|
|
114
|
-
|
|
115
|
-
* 获取最后一次压缩的摘要(如有)。
|
|
116
|
-
*/
|
|
56
|
+
|
|
117
57
|
getCompactionSummary(sessionId: string): Promise<string | null>;
|
|
118
|
-
|
|
119
|
-
* 将会话上下文记录持久化到 MemoryStore。
|
|
120
|
-
*/
|
|
58
|
+
|
|
121
59
|
saveToMemory(session: SessionContextRecord): Promise<void>;
|
|
122
|
-
|
|
123
|
-
* 从 MemoryStore 加载会话上下文记录。
|
|
124
|
-
*/
|
|
60
|
+
|
|
125
61
|
loadFromMemory(sessionId: string): Promise<SessionContextRecord | null>;
|
|
126
|
-
|
|
127
|
-
* 保存压缩结果到 MemoryStore。
|
|
128
|
-
*/
|
|
62
|
+
|
|
129
63
|
saveCompactionResult(sessionId: string, result: CompactionResult): Promise<void>;
|
|
130
|
-
|
|
131
|
-
* 重置溢出警告状态。
|
|
132
|
-
*/
|
|
64
|
+
|
|
133
65
|
resetOverflowWarning(sessionId: string): Promise<void>;
|
|
134
|
-
|
|
135
|
-
* 清空内存态记录(进程退出或会话切换时调用)。
|
|
136
|
-
*/
|
|
66
|
+
|
|
137
67
|
clearSession(sessionId?: string): void;
|
|
138
68
|
}
|