aws-runtime-bridge 1.9.91 → 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/cli-commands.js +6 -6
- 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
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Token 用量明细
|
|
6
|
-
*/
|
|
1
|
+
|
|
2
|
+
|
|
7
3
|
export interface TokenUsage {
|
|
8
4
|
input: number;
|
|
9
5
|
output: number;
|
|
@@ -13,60 +9,52 @@ export interface TokenUsage {
|
|
|
13
9
|
write: number;
|
|
14
10
|
};
|
|
15
11
|
}
|
|
16
|
-
|
|
17
|
-
* 模型信息
|
|
18
|
-
*/
|
|
12
|
+
|
|
19
13
|
export interface ModelInfo {
|
|
20
14
|
provider: string;
|
|
21
15
|
model: string;
|
|
22
|
-
|
|
16
|
+
|
|
23
17
|
contextLimit: number;
|
|
24
|
-
|
|
18
|
+
|
|
25
19
|
maxOutput?: number;
|
|
26
|
-
|
|
20
|
+
|
|
27
21
|
maxInput?: number;
|
|
28
22
|
}
|
|
29
|
-
|
|
30
|
-
* 会话上下文统计
|
|
31
|
-
*/
|
|
23
|
+
|
|
32
24
|
export interface ContextStats {
|
|
33
|
-
|
|
25
|
+
|
|
34
26
|
totalUsed: number;
|
|
35
|
-
|
|
27
|
+
|
|
36
28
|
totalInput: number;
|
|
37
|
-
|
|
29
|
+
|
|
38
30
|
totalOutput: number;
|
|
39
|
-
|
|
31
|
+
|
|
40
32
|
contextLimit: number;
|
|
41
|
-
|
|
33
|
+
|
|
42
34
|
remaining: number;
|
|
43
|
-
|
|
35
|
+
|
|
44
36
|
usagePercent: number;
|
|
45
|
-
|
|
37
|
+
|
|
46
38
|
overflowWarning: boolean;
|
|
47
|
-
|
|
39
|
+
|
|
48
40
|
lastChecked?: string;
|
|
49
41
|
}
|
|
50
|
-
|
|
51
|
-
* 压缩策略
|
|
52
|
-
*/
|
|
42
|
+
|
|
53
43
|
export type CompactionStrategy = "prune" | "summarize" | "auto";
|
|
54
|
-
|
|
55
|
-
* 压缩结果
|
|
56
|
-
*/
|
|
44
|
+
|
|
57
45
|
export interface CompactionResult {
|
|
58
46
|
strategy: CompactionStrategy;
|
|
59
|
-
|
|
47
|
+
|
|
60
48
|
freedTokens: number;
|
|
61
|
-
|
|
49
|
+
|
|
62
50
|
preservedTurns: number;
|
|
63
|
-
|
|
51
|
+
|
|
64
52
|
compactedMessages: number;
|
|
65
|
-
|
|
53
|
+
|
|
66
54
|
remainingTokens: number;
|
|
67
|
-
|
|
55
|
+
|
|
68
56
|
summary?: string;
|
|
69
|
-
|
|
57
|
+
|
|
70
58
|
timestamp: string;
|
|
71
59
|
}
|
|
72
60
|
export interface AgentConfig {
|
|
@@ -76,12 +64,10 @@ export interface AgentConfig {
|
|
|
76
64
|
workspacePath: string;
|
|
77
65
|
prompt: string;
|
|
78
66
|
describe: string;
|
|
79
|
-
|
|
67
|
+
|
|
80
68
|
modelInfo?: ModelInfo;
|
|
81
69
|
}
|
|
82
|
-
|
|
83
|
-
* YAML 角色配置(原 AgentRoleTemplate → AgentProfileTemplate)
|
|
84
|
-
*/
|
|
70
|
+
|
|
85
71
|
export interface YmlAgentProfileTemplate {
|
|
86
72
|
name: string;
|
|
87
73
|
path: string;
|
|
@@ -99,62 +85,34 @@ export interface ServerConfig {
|
|
|
99
85
|
heartbeatInterval: number;
|
|
100
86
|
heartbeatTimeout?: number;
|
|
101
87
|
reconnectInterval: number;
|
|
102
|
-
|
|
88
|
+
|
|
103
89
|
reconnectMaxInterval?: number;
|
|
104
|
-
|
|
90
|
+
|
|
105
91
|
reconnectJitterMs?: number;
|
|
106
|
-
|
|
107
|
-
* 最大重连次数。
|
|
108
|
-
* -1 表示无限重试。
|
|
109
|
-
*/
|
|
92
|
+
|
|
110
93
|
maxReconnectAttempts: number;
|
|
111
|
-
|
|
112
|
-
* 调度器下发给 runtime bridge 的访问令牌,MCP HTTP 调用会随请求携带。
|
|
113
|
-
*/
|
|
94
|
+
|
|
114
95
|
runtimeAccessToken?: string;
|
|
115
96
|
runtimeAccessTokenExpiresAt?: string;
|
|
116
|
-
|
|
117
|
-
* 运行时令牌归属用户 ID,用于 bridge 按 userId + serverIp 读取本地令牌。
|
|
118
|
-
*/
|
|
97
|
+
|
|
119
98
|
userId?: string;
|
|
120
|
-
|
|
121
|
-
* 当前机器 runtime-bridge 地址;当 runtimeAccessToken 缺失时用于向 bridge 申请。
|
|
122
|
-
*/
|
|
99
|
+
|
|
123
100
|
runtimeBridgeBaseUrl?: string;
|
|
124
|
-
|
|
125
|
-
* 可选:MCP HTTP 调用地址。
|
|
126
|
-
* 支持完整地址(推荐),若仅提供主机地址会自动补全为 /mcp/call。
|
|
127
|
-
*/
|
|
101
|
+
|
|
128
102
|
mcpHttpUrl?: string;
|
|
129
|
-
|
|
130
|
-
* 后台 runtime token 主动刷新间隔,毫秒。用于在 24h 服务端 TTL 过期前稳定续期。
|
|
131
|
-
*/
|
|
103
|
+
|
|
132
104
|
runtimeTokenRefreshIntervalMs?: number;
|
|
133
|
-
|
|
134
|
-
* MCP HTTP 请求硬超时,毫秒。避免 fetch 半开或服务端卡住导致工具调用永久挂起。
|
|
135
|
-
*/
|
|
105
|
+
|
|
136
106
|
mcpHttpRequestTimeoutMs?: number;
|
|
137
|
-
|
|
138
|
-
* MCP HTTP 请求失败重试间隔,毫秒。默认 5000(5 秒)。
|
|
139
|
-
*/
|
|
107
|
+
|
|
140
108
|
mcpRetryIntervalMs?: number;
|
|
141
|
-
|
|
142
|
-
* MCP HTTP 请求失败累计最大重试时间,毫秒。默认 30000(30 秒)。
|
|
143
|
-
* 设置为 0 可禁用重试。
|
|
144
|
-
*/
|
|
109
|
+
|
|
145
110
|
mcpRetryMaxAccumulatedMs?: number;
|
|
146
|
-
|
|
147
|
-
* 最近一次已尝试强制刷新的被拒绝 runtime token。
|
|
148
|
-
*/
|
|
111
|
+
|
|
149
112
|
lastForceRefreshAttemptedForToken?: string;
|
|
150
|
-
|
|
151
|
-
* 当前共享 runtime token 刷新任务。
|
|
152
|
-
* 主流程:HTTP 与 WebSocket 共用该 promise,避免同一 MCP 进程内并发刷新轮换互相作废 token。
|
|
153
|
-
*/
|
|
113
|
+
|
|
154
114
|
runtimeAccessTokenRefreshPromise?: Promise<void>;
|
|
155
|
-
|
|
156
|
-
* 当前共享刷新任务是否为强制刷新。
|
|
157
|
-
*/
|
|
115
|
+
|
|
158
116
|
runtimeAccessTokenRefreshForce?: boolean;
|
|
159
117
|
}
|
|
160
118
|
export interface RuntimeLaunchBinding {
|
|
@@ -217,13 +175,13 @@ export interface GroupMessage {
|
|
|
217
175
|
roomId?: string;
|
|
218
176
|
content: string;
|
|
219
177
|
timestamp: string;
|
|
220
|
-
|
|
178
|
+
|
|
221
179
|
tokens?: TokenUsage;
|
|
222
|
-
|
|
180
|
+
|
|
223
181
|
modelInfo?: ModelInfo;
|
|
224
|
-
|
|
182
|
+
|
|
225
183
|
compacted?: boolean;
|
|
226
|
-
|
|
184
|
+
|
|
227
185
|
compactionSummary?: string;
|
|
228
186
|
}
|
|
229
187
|
export interface GroupMessagesResponse {
|
|
@@ -231,15 +189,9 @@ export interface GroupMessagesResponse {
|
|
|
231
189
|
currentReadPos: number;
|
|
232
190
|
hasMore: boolean;
|
|
233
191
|
}
|
|
234
|
-
|
|
235
|
-
* 绑定文件的逐文件状态,用于 memory_file_change 自动委托时标注每个文件。
|
|
236
|
-
* - no_change: MD5 与基线一致
|
|
237
|
-
* - content_changed: 文件存在但 MD5 与基线不一致
|
|
238
|
-
* - not_found: 文件读取不到(被删除/移动)
|
|
239
|
-
* - no_baseline: 该文件无可用基线(新增绑定尚未建基线,或基线键不匹配),无法判定变更
|
|
240
|
-
*/
|
|
192
|
+
|
|
241
193
|
export type BoundFileStatus = 'no_change' | 'content_changed' | 'not_found' | 'no_baseline';
|
|
242
|
-
|
|
194
|
+
|
|
243
195
|
export interface BoundFileStatusEntry {
|
|
244
196
|
path: string;
|
|
245
197
|
status: BoundFileStatus;
|
|
@@ -255,34 +207,29 @@ export interface DirectMessage {
|
|
|
255
207
|
content: string;
|
|
256
208
|
requireReply: boolean;
|
|
257
209
|
prompt?: string;
|
|
258
|
-
|
|
259
|
-
* role=system 的消息应被 AI 客户端作为系统提示词(system message)处理,
|
|
260
|
-
* 而非普通对话消息。用于实现多条 system prompt 的分层注入。 */
|
|
210
|
+
|
|
261
211
|
role?: 'system' | 'user' | 'assistant';
|
|
262
212
|
timestamp: string;
|
|
263
|
-
|
|
213
|
+
|
|
264
214
|
tokens?: TokenUsage;
|
|
265
|
-
|
|
215
|
+
|
|
266
216
|
modelInfo?: ModelInfo;
|
|
267
|
-
|
|
217
|
+
|
|
268
218
|
compacted?: boolean;
|
|
269
|
-
|
|
219
|
+
|
|
270
220
|
compactionSummary?: string;
|
|
271
|
-
|
|
221
|
+
|
|
272
222
|
_acodeAutoDelegate?: {
|
|
273
223
|
type: 'memory_expiration' | 'memory_file_change' | 'memory_cleanup';
|
|
274
224
|
uris: string[];
|
|
275
|
-
|
|
276
|
-
* 仅 memory_file_change 类型使用:每个 URI 对应的绑定文件与变更文件详情。
|
|
277
|
-
* 让子 agent 无需先调用 read_memory 即可知晓每个 memory 绑定了哪些文件、本次哪个文件发生变更。
|
|
278
|
-
*/
|
|
225
|
+
|
|
279
226
|
fileChanges?: Array<{
|
|
280
227
|
uri: string;
|
|
281
|
-
|
|
228
|
+
|
|
282
229
|
boundFiles?: string[];
|
|
283
|
-
|
|
230
|
+
|
|
284
231
|
changedFiles?: string[];
|
|
285
|
-
|
|
232
|
+
|
|
286
233
|
fileStatuses?: BoundFileStatusEntry[];
|
|
287
234
|
}>;
|
|
288
235
|
};
|
|
@@ -322,10 +269,7 @@ export interface WebSocketMessage<T = unknown> {
|
|
|
322
269
|
data: T;
|
|
323
270
|
timestamp: string;
|
|
324
271
|
}
|
|
325
|
-
|
|
326
|
-
* PROFILE_INFO 消息类型
|
|
327
|
-
* 用于在 Agent 连接时自动推送 profile 信息
|
|
328
|
-
*/
|
|
272
|
+
|
|
329
273
|
export declare const TYPE_PROFILE_INFO = "PROFILE_INFO";
|
|
330
274
|
export type MessageHandler = (message: DirectMessage | GroupMessage) => Promise<string | undefined>;
|
|
331
275
|
export interface AgentState {
|
|
@@ -427,9 +371,9 @@ export interface HireBatchResult {
|
|
|
427
371
|
summary: HireBatchSummary;
|
|
428
372
|
results: HireBatchItemResult[];
|
|
429
373
|
}
|
|
430
|
-
|
|
374
|
+
|
|
431
375
|
export type McpToolName = "get_colleague" | "get_group_rooms" | "get_profile" | "hire_colleague" | "hire_colleagues_batch" | "send_group" | "send_private" | "poll_message" | "get_message" | "get_dm_history" | "get_group_history" | "start_listening" | "stop_listening";
|
|
432
|
-
|
|
376
|
+
|
|
433
377
|
export interface SendPrivateArgs {
|
|
434
378
|
targetId: string;
|
|
435
379
|
content: string;
|
|
@@ -437,43 +381,40 @@ export interface SendPrivateArgs {
|
|
|
437
381
|
replyToCallId?: string;
|
|
438
382
|
timeoutMs?: number;
|
|
439
383
|
}
|
|
440
|
-
|
|
384
|
+
|
|
441
385
|
export interface SendGroupArgs {
|
|
442
386
|
content: string;
|
|
443
387
|
projectName?: string;
|
|
444
388
|
roomId?: string;
|
|
445
389
|
}
|
|
446
|
-
|
|
390
|
+
|
|
447
391
|
export interface GetDmHistoryArgs {
|
|
448
392
|
targetUserId?: string;
|
|
449
393
|
limit?: number;
|
|
450
394
|
since?: string;
|
|
451
395
|
}
|
|
452
|
-
|
|
396
|
+
|
|
453
397
|
export interface GetGroupHistoryArgs {
|
|
454
398
|
roomId?: string;
|
|
455
399
|
limit?: number;
|
|
456
400
|
since?: string;
|
|
457
401
|
}
|
|
458
|
-
|
|
402
|
+
|
|
459
403
|
export interface TaskInstanceCommentArgs {
|
|
460
404
|
taskInstanceId: string;
|
|
461
405
|
content: string;
|
|
462
406
|
}
|
|
463
|
-
|
|
407
|
+
|
|
464
408
|
export interface PollMessageResult {
|
|
465
|
-
|
|
466
|
-
* 与 directMessages/groupMessages 不同,这些消息的 role='system',
|
|
467
|
-
* AI 客户端应将它们按 system message 注入到上下文中。
|
|
468
|
-
* 顺序:第一条为全局系统提示词,后续为启动记忆等。 */
|
|
409
|
+
|
|
469
410
|
systemMessages?: DirectMessage[];
|
|
470
411
|
directMessages: DirectMessage[];
|
|
471
412
|
groupMessages: GroupMessage[];
|
|
472
413
|
fromBuffer: boolean;
|
|
473
414
|
}
|
|
474
|
-
|
|
415
|
+
|
|
475
416
|
export type AgentActionType = "skill" | "mcp" | "idle" | "edit_file" | "write_file" | "read_file" | "bash" | "search" | "web" | "thinking" | "tool_using";
|
|
476
|
-
|
|
417
|
+
|
|
477
418
|
export interface AgentStatusUpdate {
|
|
478
419
|
agentId: string;
|
|
479
420
|
status: "running" | "starting" | "waiting_input" | "thinking" | "tool_using" | "stopped" | "error";
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* WebSocket 客户端模块
|
|
3
|
-
* 负责与调度中心建立和维护 WebSocket 连接
|
|
4
|
-
*/
|
|
1
|
+
|
|
5
2
|
import { EventEmitter } from 'node:events';
|
|
6
3
|
import WebSocket from 'ws';
|
|
7
4
|
import type { ServerConfig } from './types.js';
|
|
@@ -15,171 +12,79 @@ export declare class WebSocketClient extends EventEmitter {
|
|
|
15
12
|
private reconnectTimer;
|
|
16
13
|
private isManualClose;
|
|
17
14
|
private websocketFactory;
|
|
18
|
-
|
|
15
|
+
|
|
19
16
|
private lastRefreshedToken;
|
|
20
|
-
|
|
17
|
+
|
|
21
18
|
private consecutiveRefreshFailures;
|
|
22
19
|
private logBatchQueue;
|
|
23
20
|
private logBatchTimer;
|
|
24
21
|
private logSequenceNumber;
|
|
25
22
|
private pendingLogBatches;
|
|
26
23
|
private isProcessingLogBatch;
|
|
27
|
-
|
|
28
|
-
* 已处理的 reliable 消息 ID(msgId → 处理时间戳)。
|
|
29
|
-
* 用于对冲服务端 ACK 超时/丢失导致的消息重投,覆盖所有 reliable 事件类型,
|
|
30
|
-
* 而非仅靠下游 MessageBuffer 对私信/群聊的去重。
|
|
31
|
-
*/
|
|
24
|
+
|
|
32
25
|
private processedMsgIds;
|
|
33
26
|
constructor(config: ServerConfig, websocketFactory?: (url: string) => WebSocket);
|
|
34
|
-
|
|
35
|
-
* 建立 WebSocket 连接
|
|
36
|
-
* 主流程:准备连接 -> 创建连接 -> 设置事件监听
|
|
37
|
-
*/
|
|
27
|
+
|
|
38
28
|
connect(agentId: string): Promise<void>;
|
|
39
|
-
|
|
40
|
-
* 准备连接前的状态清理
|
|
41
|
-
*/
|
|
29
|
+
|
|
42
30
|
private prepareConnection;
|
|
43
|
-
|
|
44
|
-
* 构建 WebSocket URL
|
|
45
|
-
*/
|
|
31
|
+
|
|
46
32
|
private buildWebSocketUrl;
|
|
47
33
|
private maskRuntimeTokenInUrl;
|
|
48
|
-
|
|
49
|
-
* 创建一次性 resolve/reject 处理器
|
|
50
|
-
*/
|
|
34
|
+
|
|
51
35
|
private createSettledHandlers;
|
|
52
|
-
|
|
53
|
-
* 设置 WebSocket 事件监听器
|
|
54
|
-
*/
|
|
36
|
+
|
|
55
37
|
private setupWebSocketEventHandlers;
|
|
56
|
-
|
|
57
|
-
* 处理 WebSocket 打开事件
|
|
58
|
-
*/
|
|
38
|
+
|
|
59
39
|
private handleWebSocketOpen;
|
|
60
|
-
|
|
61
|
-
* 处理 WebSocket 消息
|
|
62
|
-
*
|
|
63
|
-
* 可靠消息去重:服务端 ReliableMessageDeliveryService 在 ACK 超时(5s)或丢失时会
|
|
64
|
-
* 重发同一 messageId 的消息(最多 3 次 + 用户上线重投)。接收方若不区分重投与
|
|
65
|
-
* 首次投递,会对同一事件(如 agentStatus、profileInfo 等)重复处理。
|
|
66
|
-
* 这里在 ACK 之前检查 messageId 是否已处理过:
|
|
67
|
-
* - 重复消息:仍回 ACK(避免服务端继续重试堆积),但跳过 handleMessage;
|
|
68
|
-
* - 新消息:记录 messageId,回 ACK,正常处理。
|
|
69
|
-
*/
|
|
40
|
+
|
|
70
41
|
private handleWebSocketMessage;
|
|
71
|
-
|
|
72
|
-
* 提取 reliable 消息的 messageId。
|
|
73
|
-
* 仅当 data 为对象、含非空 _msgId 且 _requireAck 为真时返回 messageId,否则返回 null。
|
|
74
|
-
*/
|
|
42
|
+
|
|
75
43
|
private extractReliableMessageId;
|
|
76
|
-
|
|
77
|
-
* 标记 messageId 为已处理。
|
|
78
|
-
* 返回 true 表示该 messageId 此前已被处理过(重复投递),false 表示首次处理。
|
|
79
|
-
* 超出上限时淘汰最旧记录,避免内存无界增长。
|
|
80
|
-
*/
|
|
44
|
+
|
|
81
45
|
private markMsgIdProcessed;
|
|
82
46
|
private acknowledgeReliableMessage;
|
|
83
|
-
|
|
84
|
-
* 处理 WebSocket 关闭事件
|
|
85
|
-
*/
|
|
47
|
+
|
|
86
48
|
private handleWebSocketClose;
|
|
87
|
-
|
|
88
|
-
* WebSocket 1008(token 失效)时的反应式刷新。
|
|
89
|
-
* 修复死循环:旧实现在刷新失败时仍用旧 token 立即重连,导致被 1008 反复拒绝、
|
|
90
|
-
* 200ms 无限重连且 Agent 永远 offline。新实现:
|
|
91
|
-
* - 仅当拿到【新】token 时才视为刷新成功并立即重连;
|
|
92
|
-
* - 服务端返回 token 不变(unchanged)说明换 token 无法解决 1008,直接终止重连,避免死循环;
|
|
93
|
-
* - 刷新失败(网络/超时/异常)计入连续失败次数,达到上限后终止重连并上报事件,
|
|
94
|
-
* 交由上层 supervisor 重启,而非用旧 token 无限重试。
|
|
95
|
-
*/
|
|
49
|
+
|
|
96
50
|
private handleTokenExpiredAndReconnect;
|
|
97
|
-
|
|
98
|
-
* 向 bridge 请求刷新 runtimeAccessToken(forceRefresh 模式)。
|
|
99
|
-
* 返回:
|
|
100
|
-
* - 'refreshed':成功拿到【新】token 并已更新 config;
|
|
101
|
-
* - 'unchanged':服务端返回 token 与当前一致(换 token 无法解决 1008);
|
|
102
|
-
* - 'failed':刷新请求失败(网络/超时/非 2xx/异常)。
|
|
103
|
-
* 仅当真正获得新 token 时才记录 lastRefreshedToken(hammer 保护),
|
|
104
|
-
* 失败时不再把当前 token 标记为"已刷新",从而允许后续在退避约束下重试。
|
|
105
|
-
*/
|
|
51
|
+
|
|
106
52
|
private refreshRuntimeTokenOnPolicyRejection;
|
|
107
|
-
|
|
108
|
-
* 处理 WebSocket 错误事件
|
|
109
|
-
*/
|
|
53
|
+
|
|
110
54
|
private handleWebSocketError;
|
|
111
|
-
|
|
112
|
-
* 断开 WebSocket 连接
|
|
113
|
-
*/
|
|
55
|
+
|
|
114
56
|
disconnect(): void;
|
|
115
|
-
|
|
116
|
-
* 发送消息
|
|
117
|
-
*/
|
|
57
|
+
|
|
118
58
|
send(message: unknown): boolean;
|
|
119
|
-
|
|
120
|
-
* 上报 MCP Node.js 进程启动后的运行日志(批处理模式)。
|
|
121
|
-
* 日志先入队,每 100ms 节流窗口内累积后批量发送,
|
|
122
|
-
* 等待 bridge 返回 LOG_ACK 确认后再发送下一批。
|
|
123
|
-
*/
|
|
59
|
+
|
|
124
60
|
sendMcpNodeLog(data: {
|
|
125
61
|
level: string;
|
|
126
62
|
message: string;
|
|
127
63
|
timestamp: string;
|
|
128
64
|
}): boolean;
|
|
129
|
-
|
|
130
|
-
* 刷新日志批次:取出队列中的日志,按序列号打包发送。
|
|
131
|
-
* 等待 bridge 返回 LOG_ACK 后方可发送下一批。
|
|
132
|
-
*/
|
|
65
|
+
|
|
133
66
|
private flushLogBatch;
|
|
134
|
-
|
|
135
|
-
* 发送日志批次(实际发送 + 重试逻辑)
|
|
136
|
-
*/
|
|
67
|
+
|
|
137
68
|
private sendLogBatch;
|
|
138
|
-
|
|
139
|
-
* 处理日志批次发送失败(重试或放弃)
|
|
140
|
-
*/
|
|
69
|
+
|
|
141
70
|
private handleLogBatchSendFailure;
|
|
142
|
-
|
|
143
|
-
* 处理 LOG_ACK 确认。
|
|
144
|
-
* 收到 bridge 对某序列号日志批次的确认后,标记该批次完成,继续发送下一批。
|
|
145
|
-
*/
|
|
71
|
+
|
|
146
72
|
private handleLogAck;
|
|
147
|
-
|
|
148
|
-
* 是否已连接
|
|
149
|
-
*/
|
|
73
|
+
|
|
150
74
|
isConnected(): boolean;
|
|
151
|
-
|
|
152
|
-
* 处理接收到的消息
|
|
153
|
-
*/
|
|
75
|
+
|
|
154
76
|
private handleMessage;
|
|
155
|
-
|
|
156
|
-
* 启动心跳
|
|
157
|
-
*/
|
|
77
|
+
|
|
158
78
|
private startHeartbeat;
|
|
159
|
-
|
|
160
|
-
* 停止心跳
|
|
161
|
-
*/
|
|
79
|
+
|
|
162
80
|
private stopHeartbeat;
|
|
163
81
|
private sendProtocolPing;
|
|
164
82
|
private markHeartbeatReceived;
|
|
165
83
|
private ensureHeartbeatTimeout;
|
|
166
84
|
private clearHeartbeatTimeout;
|
|
167
85
|
private resolveHeartbeatTimeout;
|
|
168
|
-
|
|
169
|
-
* 安排重连(指数退避 + 随机抖动)
|
|
170
|
-
*
|
|
171
|
-
* 主流程:校验重连上限 -> 计算指数退避间隔(含抖动)-> 延迟后重连
|
|
172
|
-
*
|
|
173
|
-
* 退避公式:baseDelay = min(reconnectInterval * 2^(attempt-1), reconnectMaxInterval)
|
|
174
|
-
* jitter = random(0, reconnectJitterMs)
|
|
175
|
-
* delay = baseDelay + jitter
|
|
176
|
-
*
|
|
177
|
-
* 首次重连 (attempt=1):baseDelay = reconnectInterval(200ms),与之前行为一致
|
|
178
|
-
* 后续重连指数递增,上限 30s + 1s 随机抖动,避免重连风暴
|
|
179
|
-
*/
|
|
86
|
+
|
|
180
87
|
private scheduleReconnect;
|
|
181
|
-
|
|
182
|
-
* 清除重连定时器
|
|
183
|
-
*/
|
|
88
|
+
|
|
184
89
|
private clearReconnectTimer;
|
|
185
90
|
}
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* @cc-switch/sdk - 纯配置管理 SDK
|
|
3
|
-
*
|
|
4
|
-
* 负责 MCP/Skill 的 CRUD 操作和状态管理。
|
|
5
|
-
* 注意:adapters 需要外部注入,SDK 不提供默认实现。
|
|
6
|
-
*/
|
|
1
|
+
|
|
7
2
|
import type { AppId, AppFlags, McpServer, McpServerSpec, InstalledSkill, SkillSyncMethod, SdkOptions, SdkPaths, SdkState, IMcpAdapter, ISkillAdapter, AdapterOverrides } from "./types.js";
|
|
8
3
|
import { CcSwitchSdk } from "./sdk.js";
|
|
9
4
|
import { AiConfigService, buildToolSpecificAiConfig, type AiConfigTemplate, type ClaudeCodeConfig, type CodexConfig, type OpenCodeConfig, type AiConfigPaths } from "./services/ai-config-service.js";
|
|
@@ -8,16 +8,7 @@ export declare class CcSwitchSdk {
|
|
|
8
8
|
private readonly skillAdapters;
|
|
9
9
|
private state;
|
|
10
10
|
private operationQueue;
|
|
11
|
-
|
|
12
|
-
* 创建 CcSwitchSdk 实例
|
|
13
|
-
*
|
|
14
|
-
* 注意:adapters 必须通过 options.adapters 注入,
|
|
15
|
-
* cc-switch-sdk 不再提供默认的 adapter 实现。
|
|
16
|
-
*
|
|
17
|
-
* @param options - SDK 配置选项
|
|
18
|
-
* @param options.adapters.mcp - MCP 适配器映射(必需)
|
|
19
|
-
* @param options.adapters.skill - Skill 适配器映射(必需)
|
|
20
|
-
*/
|
|
11
|
+
|
|
21
12
|
constructor(options: SdkOptions);
|
|
22
13
|
private executeExclusive;
|
|
23
14
|
load(): Promise<void>;
|
|
@@ -37,22 +28,13 @@ export declare class CcSwitchSdk {
|
|
|
37
28
|
deleteMcpServer(id: string): Promise<void>;
|
|
38
29
|
toggleMcpApp(serverId: string, appId: AppId, enabled: boolean): Promise<McpServer>;
|
|
39
30
|
importMcpFromApps(): Promise<number>;
|
|
40
|
-
|
|
41
|
-
* 从单个应用导入 MCP 服务器
|
|
42
|
-
*/
|
|
31
|
+
|
|
43
32
|
private importMcpFromApp;
|
|
44
|
-
|
|
45
|
-
* 处理导入的 MCP 服务器(合并或创建)
|
|
46
|
-
* @returns 是否为新创建的 MCP
|
|
47
|
-
*/
|
|
33
|
+
|
|
48
34
|
private processImportedMcp;
|
|
49
|
-
|
|
50
|
-
* 根据名称查找 MCP 服务器
|
|
51
|
-
*/
|
|
35
|
+
|
|
52
36
|
private findMcpServerByName;
|
|
53
|
-
|
|
54
|
-
* 创建带有应用标记的 MCP 服务器
|
|
55
|
-
*/
|
|
37
|
+
|
|
56
38
|
private createMcpWithAppFlag;
|
|
57
39
|
getAllSkills(): InstalledSkill[];
|
|
58
40
|
getSkillById(id: string): InstalledSkill | undefined;
|
|
@@ -61,30 +43,17 @@ export declare class CcSwitchSdk {
|
|
|
61
43
|
uninstallSkill(id: string): Promise<void>;
|
|
62
44
|
toggleSkillApp(skillId: string, appId: AppId, enabled: boolean): Promise<InstalledSkill>;
|
|
63
45
|
importSkillsFromApps(): Promise<number>;
|
|
64
|
-
|
|
65
|
-
* 从单个应用导入 Skills
|
|
66
|
-
*/
|
|
46
|
+
|
|
67
47
|
private importSkillsFromApp;
|
|
68
|
-
|
|
69
|
-
* 处理导入的 Skill(合并或创建)
|
|
70
|
-
* @returns 是否为新创建的 Skill
|
|
71
|
-
*/
|
|
48
|
+
|
|
72
49
|
private processImportedSkill;
|
|
73
|
-
|
|
74
|
-
* 根据名称查找 Skill
|
|
75
|
-
*/
|
|
50
|
+
|
|
76
51
|
private findSkillByName;
|
|
77
|
-
|
|
78
|
-
* 合并已存在的 Skill
|
|
79
|
-
*/
|
|
52
|
+
|
|
80
53
|
private mergeExistingSkill;
|
|
81
|
-
|
|
82
|
-
* 创建新导入的 Skill
|
|
83
|
-
*/
|
|
54
|
+
|
|
84
55
|
private createNewImportedSkill;
|
|
85
|
-
|
|
86
|
-
* 创建带有应用标记的 Skill
|
|
87
|
-
*/
|
|
56
|
+
|
|
88
57
|
private createSkillWithAppFlag;
|
|
89
58
|
getPaths(): SdkPaths;
|
|
90
59
|
}
|