@jesonliu/lark-claudecode-bridge 0.13.0 → 0.15.0
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 +8 -3
- package/assets/web/index.html +375 -22
- package/dist/claude-config.d.ts +10 -5
- package/dist/claude-config.js +73 -6
- package/dist/claude-config.js.map +1 -1
- package/dist/config.js +18 -1
- package/dist/config.js.map +1 -1
- package/dist/executor/claude-executor.d.ts +16 -3
- package/dist/executor/claude-executor.js +137 -61
- package/dist/executor/claude-executor.js.map +1 -1
- package/dist/executor/output-collector.d.ts +2 -0
- package/dist/executor/output-collector.js +15 -3
- package/dist/executor/output-collector.js.map +1 -1
- package/dist/executor/permission-gate.d.ts +29 -2
- package/dist/executor/permission-gate.js +71 -3
- package/dist/executor/permission-gate.js.map +1 -1
- package/dist/executor/plugin-discovery.d.ts +19 -0
- package/dist/executor/plugin-discovery.js +40 -1
- package/dist/executor/plugin-discovery.js.map +1 -1
- package/dist/executor/plugin-manager.d.ts +16 -0
- package/dist/executor/plugin-manager.js +25 -0
- package/dist/executor/plugin-manager.js.map +1 -1
- package/dist/gateway/card-builder.d.ts +18 -0
- package/dist/gateway/card-builder.js +61 -1
- package/dist/gateway/card-builder.js.map +1 -1
- package/dist/gateway/feishu-gateway.d.ts +10 -0
- package/dist/gateway/feishu-gateway.js +4 -0
- package/dist/gateway/feishu-gateway.js.map +1 -1
- package/dist/gateway/progress-card.d.ts +10 -0
- package/dist/gateway/progress-card.js +29 -0
- package/dist/gateway/progress-card.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +233 -20
- package/dist/index.js.map +1 -1
- package/dist/session/commands.d.ts +6 -3
- package/dist/session/commands.js +94 -34
- package/dist/session/commands.js.map +1 -1
- package/dist/session/session-store.d.ts +20 -1
- package/dist/session/session-store.js +14 -0
- package/dist/session/session-store.js.map +1 -1
- package/dist/types.d.ts +17 -1
- package/dist/web/config-api.d.ts +2 -0
- package/dist/web/config-api.js +2 -0
- package/dist/web/config-api.js.map +1 -1
- package/dist/web/server.js +80 -5
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feishu-gateway.js","sourceRoot":"","sources":["../../src/gateway/feishu-gateway.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"feishu-gateway.js","sourceRoot":"","sources":["../../src/gateway/feishu-gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export interface CardSender {
|
|
2
2
|
sendCard(card: unknown): Promise<string>;
|
|
3
3
|
updateCard(messageId: string, card: unknown): Promise<void>;
|
|
4
|
+
/** 撤回消息(进度卡沉底用);缺省(旧 gateway/测试 mock)时沉底退化为仅重刷 */
|
|
5
|
+
deleteCard?(messageId: string): Promise<void>;
|
|
4
6
|
}
|
|
5
7
|
export declare class ProgressCard {
|
|
6
8
|
private sender;
|
|
@@ -25,6 +27,14 @@ export declare class ProgressCard {
|
|
|
25
27
|
toolResult(name: string, ok: boolean): void;
|
|
26
28
|
setStatus(status: string): void;
|
|
27
29
|
finish(summary: string): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* 沉底:撤回当前进度卡并在会话底部重发(确认卡/计划卡/提问卡/中途推送都会把进度卡
|
|
32
|
+
* 顶上去,用户看不出任务是否还在跑)。删除失败(权限/网络)时降级为仅重发——
|
|
33
|
+
* 极端情况出现两张进度卡,任务照常。终态后不再沉底。
|
|
34
|
+
* 重发失败(限流/网络)重试一次,仍失败则放弃本卡(messageId 留空,flush 自动跳过)——
|
|
35
|
+
* 绝不向上抛:调用方多为 void 调用,未处理 rejection 会拖垮整个 bridge 进程。
|
|
36
|
+
*/
|
|
37
|
+
sinkToBottom(): Promise<void>;
|
|
28
38
|
/**
|
|
29
39
|
* 串行化 flush:所有更新走同一条 promise 链按发起顺序落地。
|
|
30
40
|
* - in-flight 中再来请求 → 标记 dirty,本轮落地后自动补刷一次(带上最新 state);
|
|
@@ -62,12 +62,41 @@ export class ProgressCard {
|
|
|
62
62
|
}
|
|
63
63
|
async finish(summary) {
|
|
64
64
|
this.done = true;
|
|
65
|
+
this.state.done = true;
|
|
65
66
|
clearInterval(this.flushTimer);
|
|
66
67
|
clearInterval(this.heartbeatTimer);
|
|
67
68
|
this.state.status = summary;
|
|
68
69
|
this.state.toolLine = '';
|
|
69
70
|
await this.flush(); // 经由同一串行链落地,保证是最后一张(终态不被旧 flush 覆盖)
|
|
70
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* 沉底:撤回当前进度卡并在会话底部重发(确认卡/计划卡/提问卡/中途推送都会把进度卡
|
|
74
|
+
* 顶上去,用户看不出任务是否还在跑)。删除失败(权限/网络)时降级为仅重发——
|
|
75
|
+
* 极端情况出现两张进度卡,任务照常。终态后不再沉底。
|
|
76
|
+
* 重发失败(限流/网络)重试一次,仍失败则放弃本卡(messageId 留空,flush 自动跳过)——
|
|
77
|
+
* 绝不向上抛:调用方多为 void 调用,未处理 rejection 会拖垮整个 bridge 进程。
|
|
78
|
+
*/
|
|
79
|
+
async sinkToBottom() {
|
|
80
|
+
if (this.done || !this.messageId)
|
|
81
|
+
return;
|
|
82
|
+
const old = this.messageId;
|
|
83
|
+
this.messageId = undefined; // 期间 flush 自动跳过,避免 PATCH 打到已删除的旧卡
|
|
84
|
+
if (this.sender.deleteCard)
|
|
85
|
+
await this.sender.deleteCard(old).catch(() => { });
|
|
86
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
87
|
+
try {
|
|
88
|
+
this.messageId = await this.sender.sendCard(buildProgressCard(this.state));
|
|
89
|
+
void this.flush();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
if (attempt === 0)
|
|
94
|
+
await new Promise((r) => setTimeout(r, 800)); // 退避后重试一次(飞书偶发限流)
|
|
95
|
+
else
|
|
96
|
+
console.warn('[进度卡] 沉底重发失败,本卡后续更新暂停(任务不受影响):', e instanceof Error ? e.message : e);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
71
100
|
/**
|
|
72
101
|
* 串行化 flush:所有更新走同一条 promise 链按发起顺序落地。
|
|
73
102
|
* - in-flight 中再来请求 → 标记 dirty,本轮落地后自动补刷一次(带上最新 state);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress-card.js","sourceRoot":"","sources":["../../src/gateway/progress-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAsB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"progress-card.js","sourceRoot":"","sources":["../../src/gateway/progress-card.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export interface BridgeDeps {
|
|
|
13
13
|
uploadAndSendFile(chatId: string, p: string): Promise<void>;
|
|
14
14
|
/** 上传图片并发带 caption 的卡片(lcb-notify 逐张发图用);可选——旧 gateway/测试 mock 缺省走降级 */
|
|
15
15
|
sendImageTo?(chatId: string, p: string, caption?: string): Promise<string>;
|
|
16
|
+
/** 撤回消息(进度卡沉底);可选——缺省时沉底退化为仅重刷 */
|
|
17
|
+
deleteCard?(id: string): Promise<void>;
|
|
16
18
|
};
|
|
17
19
|
access: AccessControl;
|
|
18
20
|
store: SessionStore;
|
|
@@ -23,6 +25,7 @@ export interface BridgeDeps {
|
|
|
23
25
|
export declare function createBridge(config: BridgeConfig, app: FeishuAppConfig, // 本 bridge 绑定的飞书应用:并发/默认工作区/Claude Code 环境/人格均 per-app
|
|
24
26
|
deps: BridgeDeps, opts?: {
|
|
25
27
|
confirmTimeoutMs?: number;
|
|
28
|
+
cardSendTimeoutMs?: number;
|
|
26
29
|
reloadConfig?: () => void;
|
|
27
30
|
}): GatewayHandlers;
|
|
28
31
|
/**
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,7 @@ import { clearPidFile, writePidFile, stopExistingBridgeAndWait } from './web/lif
|
|
|
11
11
|
import { AccessControl } from './access/access-control.js';
|
|
12
12
|
import { FeishuGateway } from './gateway/feishu-gateway.js';
|
|
13
13
|
import { ProgressCard } from './gateway/progress-card.js';
|
|
14
|
-
import { buildConfirmCard, buildConfirmResultCard, DECISION_TEXT, buildPlanCards, buildPlanResultCard, buildExpiredPlanCard, PROGRESS_TAIL_CHARS, } from './gateway/card-builder.js';
|
|
14
|
+
import { buildConfirmCard, buildConfirmResultCard, DECISION_TEXT, buildPlanCards, buildPlanResultCard, buildExpiredPlanCard, PROGRESS_TAIL_CHARS, buildQuestionCard, buildQuestionResultCard, buildExpiredQuestionCard, } from './gateway/card-builder.js';
|
|
15
15
|
import { buildDiffSummaryCards } from './gateway/diff-card.js';
|
|
16
16
|
import { runTask } from './executor/claude-executor.js';
|
|
17
17
|
import { PermissionGate } from './executor/permission-gate.js';
|
|
@@ -36,6 +36,18 @@ const TASK_HARD_TIMEOUT_MS = 4 * 60 * 60 * 1000;
|
|
|
36
36
|
const CONFIRM_TIMEOUT_MS = 10 * 60 * 1000;
|
|
37
37
|
// PermissionGate 的兜底超时:仅当 wiring 侧超时机制失效时才触发(正常流程 ask 必在 CONFIRM_TIMEOUT_MS 内 settle)
|
|
38
38
|
const GATE_FALLBACK_TIMEOUT_MS = CONFIRM_TIMEOUT_MS + 60_000;
|
|
39
|
+
// 卡片发送超时:飞书 WS 偶发无响应时 sendCardTo 可能永久挂起,而 ask/askQuestion 闭包的
|
|
40
|
+
// 超时定时器在 await 发卡之后才 arm——挂起即意味着永不超时。超时/失败快速降级为 deny,
|
|
41
|
+
// 模型自行决策或重试,不再整轮卡死等 gate 兜底
|
|
42
|
+
const CARD_SEND_TIMEOUT_MS = 30_000;
|
|
43
|
+
/** 发卡类 gateway 调用超时包装:到点或失败均回落 fallback(永不 reject),调用方据此降级 */
|
|
44
|
+
function raceFallback(p, ms, fallback) {
|
|
45
|
+
return new Promise((resolve) => {
|
|
46
|
+
const timer = setTimeout(() => resolve(fallback), ms);
|
|
47
|
+
timer.unref();
|
|
48
|
+
p.then((v) => { clearTimeout(timer); resolve(v); }, () => { clearTimeout(timer); resolve(fallback); });
|
|
49
|
+
});
|
|
50
|
+
}
|
|
39
51
|
/** 确认超时后的过期态卡片(此后迟到点击不再改写此卡片) */
|
|
40
52
|
function expiredConfirmCard(req, timeoutMs) {
|
|
41
53
|
return {
|
|
@@ -51,7 +63,7 @@ function expiredConfirmCard(req, timeoutMs) {
|
|
|
51
63
|
}
|
|
52
64
|
/** plan 卡片按钮文案(toast 用) */
|
|
53
65
|
const PLAN_DECISION_TEXT = {
|
|
54
|
-
'plan-approve': '✅
|
|
66
|
+
'plan-approve': '✅ 计划已批准,开始执行(后续写操作免确认)',
|
|
55
67
|
'plan-revise': '📝 修改意见已提交',
|
|
56
68
|
'plan-reject': '❌ 计划已放弃',
|
|
57
69
|
};
|
|
@@ -88,13 +100,28 @@ deps, opts = {}) {
|
|
|
88
100
|
const confirmPending = new Map();
|
|
89
101
|
// plan 确认挂起项:requestId → 等待中的计划决策(plan-approve/revise/reject)
|
|
90
102
|
const planPending = new Map();
|
|
103
|
+
// 提问挂起项:requestId → 等待中的问题答案(qa-pick 逐项收集,qa-submit 一次性 resolve)
|
|
104
|
+
const qaPending = new Map();
|
|
105
|
+
// 通道当前任务的进度卡:gate 的 ask/planAsk/askQuestion 闭包随 gate 通道级复用,
|
|
106
|
+
// 不能捕获任务级 progress 实例(会是首个任务的旧卡)——经此间接引用每次任务的新卡
|
|
107
|
+
const activeProgress = new Map();
|
|
108
|
+
// 当前存活 query 的 MCP 状态拉取句柄(executor onQuery 注入、任务 finally 删除):
|
|
109
|
+
// /mcp 命令在任务运行中经此实时拉取;句柄随 query 结束失效,调用侧须 catch
|
|
110
|
+
const activeQueries = new Map();
|
|
91
111
|
function workspacePath(name) {
|
|
92
112
|
return config.workspaces.find((w) => w.name === name)?.path ?? config.workspaces[0].path;
|
|
93
113
|
}
|
|
94
|
-
/** 通道内串行入队(每 key 一条 Promise 链),全局并发由 Semaphore
|
|
114
|
+
/** 通道内串行入队(每 key 一条 Promise 链),全局并发由 Semaphore 限制。
|
|
115
|
+
* 有任务在跑时新消息静默 FIFO 排队——不提示的话用户不知道消息已被接收,会反复重发或误以为丢失。
|
|
116
|
+
* queuedCount 计「等待中」消息数:enqueue 一律自增(含首位),executeTask 启动时递减(该条离开队列) */
|
|
95
117
|
function enqueue(key, msg, prompt, wsName) {
|
|
96
118
|
const rt = runtimes.get(key) ?? { queue: Promise.resolve() };
|
|
97
119
|
runtimes.set(key, rt);
|
|
120
|
+
rt.queuedCount = (rt.queuedCount ?? 0) + 1;
|
|
121
|
+
if (rt.busy) {
|
|
122
|
+
void deps.gateway.sendTextTo(msg.chatId, `⏳ 当前有任务在运行,本条消息已排队(第 ${rt.queuedCount} 位),完成后自动开始`)
|
|
123
|
+
.catch(() => { }); // 提示失败静默:不影响任务本身入队
|
|
124
|
+
}
|
|
98
125
|
rt.queue = rt.queue.then(() => executeTask(key, msg, prompt, wsName)).catch((e) => {
|
|
99
126
|
console.error(tag, '[任务异常]', e);
|
|
100
127
|
});
|
|
@@ -153,8 +180,9 @@ deps, opts = {}) {
|
|
|
153
180
|
// 2. 命令:/help /new /resume /stop /status /ws
|
|
154
181
|
const st = deps.store.getChannelState(key);
|
|
155
182
|
// currentWorkspace 语义:store 中已设置的工作区优先,否则 app 默认,最后全局默认——
|
|
156
|
-
// 保证 /new、/status
|
|
157
|
-
|
|
183
|
+
// 保证 /new、/status 回复与实际一致。用 || 而非 ??:archiveSession 为新通道建档时
|
|
184
|
+
// workspaceName 存 ''(归档时不知工作区),空串必须回退默认,否则 inventory 键错位
|
|
185
|
+
const currentWorkspace = st?.workspaceName || app.defaultWorkspace || config.defaults.workspace;
|
|
158
186
|
// 2.5 触发词映射:必须放在本地命令之前——斜杠触发词(如 /produce)会被 handleCommand
|
|
159
187
|
// 的未知命令分支吞掉;rewriteByTrigger 对本地命令(/stop 等)直接放行,不会被劫持
|
|
160
188
|
const triggered = rewriteByTrigger(msg.text, app.triggers);
|
|
@@ -171,6 +199,18 @@ deps, opts = {}) {
|
|
|
171
199
|
isAdmin: deps.access.isAdmin(msg.userId),
|
|
172
200
|
currentWorkspace: () => currentWorkspace,
|
|
173
201
|
getInventory: () => inventories.get(currentWorkspace),
|
|
202
|
+
// /mcp 实时拉取:当前工作区有存活 query 才有实时数据(5s 超时),否则回退 init/收尾快照
|
|
203
|
+
getLiveMcpStatus: async () => {
|
|
204
|
+
try {
|
|
205
|
+
for (const { wsName: w, handle } of activeQueries.values()) {
|
|
206
|
+
if (w !== currentWorkspace)
|
|
207
|
+
continue;
|
|
208
|
+
return await raceFallback(handle.mcpServerStatus(), 5000, null);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
catch { /* 句柄随 query 结束失效等:回退快照 */ }
|
|
212
|
+
return null;
|
|
213
|
+
},
|
|
174
214
|
// /plugin 插件管理依赖:claudeConfigDir = 双模式解析的当前生效目录;userClaudeDir = 本机
|
|
175
215
|
// ~/.claude(managed 模式下作为第二来源 + install 默认目标);结果回传 = 当前聊天
|
|
176
216
|
claudeConfigDir: claudeDir,
|
|
@@ -198,15 +238,21 @@ deps, opts = {}) {
|
|
|
198
238
|
enqueue(key, msg, cmd.taskText ?? msg.text, currentWorkspace);
|
|
199
239
|
}
|
|
200
240
|
async function executeTask(key, msg, prompt, wsName) {
|
|
241
|
+
const rt = runtimes.get(key);
|
|
242
|
+
rt.busy = true; // enqueue 据此给后续消息发「已排队」提示(sem 等待期同样算占用)
|
|
243
|
+
rt.queuedCount = Math.max(0, (rt.queuedCount ?? 1) - 1); // 本条离开等待队列开始执行
|
|
201
244
|
const release = await sem.acquire();
|
|
202
245
|
const abort = new AbortController();
|
|
203
|
-
const rt = runtimes.get(key);
|
|
204
246
|
rt.abort = abort;
|
|
205
247
|
const progress = new ProgressCard({
|
|
206
248
|
sendCard: (c) => deps.gateway.sendCardTo(msg.chatId, c),
|
|
207
249
|
updateCard: (id, c) => deps.gateway.updateCard(id, c),
|
|
250
|
+
deleteCard: deps.gateway.deleteCard
|
|
251
|
+
? (id) => deps.gateway.deleteCard(id)
|
|
252
|
+
: undefined,
|
|
208
253
|
}, `任务 · ${wsName}`);
|
|
209
254
|
const confirmTimeoutMs = opts.confirmTimeoutMs ?? CONFIRM_TIMEOUT_MS;
|
|
255
|
+
const cardSendTimeoutMs = opts.cardSendTimeoutMs ?? CARD_SEND_TIMEOUT_MS;
|
|
210
256
|
// 通道级复用:已存在则沿用(allow-session 记忆跨任务),不存在才建。
|
|
211
257
|
// 白名单每任务现读 config.permissions(热重载改配置下一条消息即生效——但 gate 是
|
|
212
258
|
// 通道级复用实例,decide 时才查 allowTools,故以构造时引用为准;改 permissions 后
|
|
@@ -221,7 +267,15 @@ deps, opts = {}) {
|
|
|
221
267
|
// 超时由本闭包自管:到点删除条目 + 卡片置为过期态 + 以 deny 继续——
|
|
222
268
|
// 条目有界(无人点击、/stop、4h abort 挂起中的 ask 均会被定时器清理),
|
|
223
269
|
// 此后的迟到点击因条目已删被 toast 提示后忽略,卡片不再被改写为与实际不符的决策态
|
|
224
|
-
|
|
270
|
+
// 发卡本身带超时:sendCardTo 挂起/失败时降级 deny(下面的等待定时器在 await 之后,挂起即永不 arm)
|
|
271
|
+
const cardId = await raceFallback(deps.gateway.sendCardTo(msg.chatId, buildConfirmCard(req)), cardSendTimeoutMs, '');
|
|
272
|
+
if (!cardId) {
|
|
273
|
+
void deps.gateway.sendTextTo(msg.chatId, `⚠️ 确认卡发送失败(${req.toolName}),已自动拒绝;模型重试时会再次弹出`)
|
|
274
|
+
.catch(() => { });
|
|
275
|
+
return 'deny';
|
|
276
|
+
}
|
|
277
|
+
// 确认卡在进度卡下方追加会把进度卡顶上去:删旧卡重发,让进度卡始终沉在会话最底
|
|
278
|
+
void activeProgress.get(key)?.sinkToBottom();
|
|
225
279
|
return new Promise((resolve) => {
|
|
226
280
|
const gc = setTimeout(() => {
|
|
227
281
|
confirmPending.delete(req.requestId);
|
|
@@ -245,9 +299,17 @@ deps, opts = {}) {
|
|
|
245
299
|
planAsk: async (req) => {
|
|
246
300
|
const planReq = { requestId: randomUUID(), plan: req.plan, workspaceName: req.workspaceName };
|
|
247
301
|
const ids = [];
|
|
248
|
-
for (const c of buildPlanCards(planReq))
|
|
249
|
-
|
|
302
|
+
for (const c of buildPlanCards(planReq)) {
|
|
303
|
+
const id = await raceFallback(deps.gateway.sendCardTo(msg.chatId, c), cardSendTimeoutMs, '');
|
|
304
|
+
if (!id) {
|
|
305
|
+
void deps.gateway.sendTextTo(msg.chatId, '⚠️ 计划卡发送失败,本次计划已自动放弃;模型重新提交计划时会再次弹出')
|
|
306
|
+
.catch(() => { });
|
|
307
|
+
return { action: 'reject' };
|
|
308
|
+
}
|
|
309
|
+
ids.push(id);
|
|
310
|
+
}
|
|
250
311
|
const cardId = ids[0];
|
|
312
|
+
void activeProgress.get(key)?.sinkToBottom();
|
|
251
313
|
return new Promise((resolve) => {
|
|
252
314
|
const gc = setTimeout(() => {
|
|
253
315
|
planPending.delete(planReq.requestId);
|
|
@@ -266,26 +328,83 @@ deps, opts = {}) {
|
|
|
266
328
|
});
|
|
267
329
|
});
|
|
268
330
|
},
|
|
331
|
+
// 提问确认:AskUserQuestion 的问题选项卡(每问选项按钮 + 提交);qa-pick 逐项
|
|
332
|
+
// 更新选中态(PATCH 重渲染),qa-submit 全部作答后一次性 resolve。超时自动跳过
|
|
333
|
+
askQuestion: async (req) => {
|
|
334
|
+
const qaReq = {
|
|
335
|
+
requestId: randomUUID(),
|
|
336
|
+
questions: req.questions,
|
|
337
|
+
workspaceName: req.workspaceName,
|
|
338
|
+
};
|
|
339
|
+
const answers = {};
|
|
340
|
+
// 发卡失败/超时返回空答案:gate 对空答案统一按「未作答」deny,模型自行决策或停下等待
|
|
341
|
+
const cardId = await raceFallback(deps.gateway.sendCardTo(msg.chatId, buildQuestionCard(qaReq, answers)), cardSendTimeoutMs, '');
|
|
342
|
+
if (!cardId) {
|
|
343
|
+
void deps.gateway.sendTextTo(msg.chatId, '⚠️ 提问卡发送失败,已按未作答处理;模型会自行决策或停下等待你的回复')
|
|
344
|
+
.catch(() => { });
|
|
345
|
+
return {};
|
|
346
|
+
}
|
|
347
|
+
void activeProgress.get(key)?.sinkToBottom();
|
|
348
|
+
return new Promise((resolve) => {
|
|
349
|
+
const gc = setTimeout(() => {
|
|
350
|
+
qaPending.delete(qaReq.requestId);
|
|
351
|
+
void deps.gateway.updateCard(cardId, buildExpiredQuestionCard(qaReq, confirmTimeoutMs)).catch(() => { });
|
|
352
|
+
resolve({});
|
|
353
|
+
}, confirmTimeoutMs);
|
|
354
|
+
gc.unref();
|
|
355
|
+
qaPending.set(qaReq.requestId, {
|
|
356
|
+
resolve: (r) => {
|
|
357
|
+
clearTimeout(gc);
|
|
358
|
+
resolve(r);
|
|
359
|
+
},
|
|
360
|
+
req: qaReq,
|
|
361
|
+
ownerId: msg.userId,
|
|
362
|
+
cardId,
|
|
363
|
+
answers,
|
|
364
|
+
});
|
|
365
|
+
});
|
|
366
|
+
},
|
|
269
367
|
timeoutMs: GATE_FALLBACK_TIMEOUT_MS,
|
|
270
368
|
});
|
|
271
369
|
gates.set(key, gate);
|
|
272
370
|
}
|
|
273
|
-
|
|
371
|
+
// 硬超时 abort 带 reason 标记:catch 侧据此与 /stop 区分停止文案
|
|
372
|
+
const hardTimeout = setTimeout(() => abort.abort(new Error('hard-timeout')), TASK_HARD_TIMEOUT_MS);
|
|
274
373
|
hardTimeout.unref();
|
|
275
374
|
// lcb-notify 发送能力:chatId 硬绑定当前任务(权限闸直通的安全前提);
|
|
276
|
-
// sentPaths
|
|
375
|
+
// sentPaths 记录中途已推送的文件,任务收尾的产出回传据此去重(用户已收过的不重发)。
|
|
376
|
+
// 每次中途推送后进度卡沉底一次(删旧卡重发),保持「任务是否还在跑」始终可见于会话底部
|
|
277
377
|
const sentPaths = new Set();
|
|
378
|
+
const sink = async () => { await activeProgress.get(key)?.sinkToBottom(); };
|
|
278
379
|
const notifySender = createGatewaySender({
|
|
279
380
|
chatId: msg.chatId,
|
|
280
381
|
sentPaths,
|
|
281
|
-
sendText: (c, md) =>
|
|
282
|
-
|
|
283
|
-
|
|
382
|
+
sendText: async (c, md) => {
|
|
383
|
+
await deps.gateway.sendTextTo(c, md);
|
|
384
|
+
await sink();
|
|
385
|
+
},
|
|
386
|
+
...(deps.gateway.sendImageTo
|
|
387
|
+
? {
|
|
388
|
+
sendImageWithCaption: async (c, p, caption) => {
|
|
389
|
+
await deps.gateway.sendImageTo(c, p, caption);
|
|
390
|
+
await sink();
|
|
391
|
+
},
|
|
392
|
+
}
|
|
393
|
+
: {}),
|
|
394
|
+
sendFileTo: async (c, p) => {
|
|
395
|
+
await deps.gateway.uploadAndSendFile(c, p);
|
|
396
|
+
await sink();
|
|
397
|
+
},
|
|
284
398
|
});
|
|
399
|
+
activeProgress.set(key, progress);
|
|
285
400
|
try {
|
|
286
401
|
await progress.start();
|
|
287
402
|
const state = deps.store.getChannelState(key);
|
|
288
|
-
|
|
403
|
+
// 续接指针三态:undefined=旧版存量数据 → 回退 sessions[0](旧语义 sessions[0] 即当前);
|
|
404
|
+
// null=/new 或 /ws use 已清指针 → 新开会话;字符串 → resume 该会话。
|
|
405
|
+
// 不能用 ??:null 会被 ?? 当成空值回退 sessions[0],/new 的意图就被吞掉了
|
|
406
|
+
const pointer = state?.currentSessionId;
|
|
407
|
+
const resumeId = pointer === undefined ? state?.sessions?.[0]?.sessionId : pointer || undefined;
|
|
289
408
|
const now = () => nowBeijingISO();
|
|
290
409
|
// 落盘 · user:任务起点(prompt 全文 + resume 链上一轮 sessionId)
|
|
291
410
|
deps.transcript?.user({
|
|
@@ -317,13 +436,25 @@ deps, opts = {}) {
|
|
|
317
436
|
const merged = resolvePluginPaths(app.plugins, discovered);
|
|
318
437
|
return merged.length ? { plugins: merged.map((p) => ({ path: p.path })) } : {};
|
|
319
438
|
})(),
|
|
320
|
-
canUseTool: (toolName, input) => gate.decide(toolName, input, wsName),
|
|
439
|
+
canUseTool: (toolName, input, ctx) => gate.decide(toolName, input, wsName, ctx),
|
|
440
|
+
onQuery: (handle) => { activeQueries.set(key, { wsName, handle }); },
|
|
321
441
|
}, {
|
|
322
442
|
onInit: (inv) => {
|
|
323
443
|
inventories.set(wsName, { ...inv, workspace: wsName, loadedAt: new Date().toISOString() });
|
|
324
444
|
},
|
|
445
|
+
onMcpStatus: (servers) => {
|
|
446
|
+
// 任务收尾时 executor 拉取的真实 MCP 状态回写 inventory——init 快照必为 pending,
|
|
447
|
+
// 这是 /mcp 空闲期显示 connected/failed 的数据源(prev 不存在说明 init 未到,等 init 全量落盘)
|
|
448
|
+
const prev = inventories.get(wsName);
|
|
449
|
+
if (prev)
|
|
450
|
+
inventories.set(wsName, { ...prev, mcpServers: servers, loadedAt: new Date().toISOString() });
|
|
451
|
+
},
|
|
325
452
|
onProgress: (e) => {
|
|
326
|
-
if (e.kind === '
|
|
453
|
+
if (e.kind === 'status') {
|
|
454
|
+
// CLI 状态心跳(等待模型响应/上下文压缩):刷新进度卡状态行,避免静默期黑盒感
|
|
455
|
+
progress.setStatus(e.content);
|
|
456
|
+
}
|
|
457
|
+
else if (e.kind === 'text') {
|
|
327
458
|
progress.appendText(e.content);
|
|
328
459
|
// 落盘 · assistant:流式文本块全文(每块一行,天然增量)
|
|
329
460
|
deps.transcript?.assistant({
|
|
@@ -390,7 +521,9 @@ deps, opts = {}) {
|
|
|
390
521
|
};
|
|
391
522
|
// 把非图片文件记入通道,供后续用户消息按 basename 命中匹配(图片已自动发,不进 tracker)
|
|
392
523
|
fileTracker.record(key, outcome.producedFiles.filter((f) => !isImageFile(f)));
|
|
393
|
-
//
|
|
524
|
+
// 收尾文件清单(纯文本索引):用户从这里知道改了哪些文件、可点名 basename 取本体。
|
|
525
|
+
// 文件本体(非图片)默认不发——用户主动点名才发;计划文件等工作区外路径已被
|
|
526
|
+
// OutputCollector 按 cwd 过滤,不会混进清单
|
|
394
527
|
if (outcome.producedFiles.length > 0) {
|
|
395
528
|
const list = outcome.producedFiles.map((f) => `- ${f}`).join('\n');
|
|
396
529
|
await deps.gateway.sendTextTo(msg.chatId, `📁 本次修改/新增的文件(共 ${outcome.producedFiles.length} 个):\n${list}`);
|
|
@@ -412,6 +545,20 @@ deps, opts = {}) {
|
|
|
412
545
|
}
|
|
413
546
|
}
|
|
414
547
|
catch (e) {
|
|
548
|
+
// 主动中止(/stop 或 4h 硬超时):SDK 多数场景把 AbortError("Operation aborted") 抛进消息循环
|
|
549
|
+
// 而非正常收尾——按停止处理不误报「出错」,与上方 executor 正常 return 后的 aborted 判断二选一命中
|
|
550
|
+
if (abort.signal.aborted) {
|
|
551
|
+
const hardTimedOut = abort.signal.reason instanceof Error && abort.signal.reason.message === 'hard-timeout';
|
|
552
|
+
await progress.finish(hardTimedOut ? '🛑 已停止(超过 4 小时上限自动停止)' : '🛑 已停止');
|
|
553
|
+
const stoppedSessionId = e?.sessionId;
|
|
554
|
+
if (stoppedSessionId)
|
|
555
|
+
deps.store.archiveSession(key, stoppedSessionId, prompt);
|
|
556
|
+
deps.transcript?.result({
|
|
557
|
+
v: 1, ts: nowBeijingISO(), kind: 'result', app: app.appId,
|
|
558
|
+
chatId: msg.chatId, userId: msg.userId, sessionId: stoppedSessionId ?? '', subtype: 'stopped', text: '',
|
|
559
|
+
});
|
|
560
|
+
return;
|
|
561
|
+
}
|
|
415
562
|
// 常见错误附配置指引(认证 hint 按模式分流:managed 指向配置页,inherit 指向 claude login);
|
|
416
563
|
// No conversation found 多因旧版独立目录里的会话(本版起统一 Claude 配置目录,旧会话无法跨目录 resume)
|
|
417
564
|
const errText = String(e);
|
|
@@ -422,8 +569,17 @@ deps, opts = {}) {
|
|
|
422
569
|
: '\n\n💡 没有可用的 Claude Code 认证:在本机终端跑一次 claude login 登录(登录态存于 ~/.claude,所有机器人共享);或在本机 ~/.claude/settings.json 的 env 配 ANTHROPIC_AUTH_TOKEN(第三方端点另配 ANTHROPIC_BASE_URL),改完重启 bridge。'
|
|
423
570
|
: /No conversation found|session not found/i.test(errText)
|
|
424
571
|
? '\n\n💡 该会话可能已失效(或属于旧版独立配置目录):发 /new 开启新会话即可。'
|
|
425
|
-
:
|
|
572
|
+
: /429|rate.?limit|usage.?limit|已达到.*上限|quota/i.test(errText)
|
|
573
|
+
// 限额/限流:CLI 内部带指数退避自动重试数分钟,期间计时持续走属正常——
|
|
574
|
+
// 错误到达飞书时已是重试耗尽后的终态,并非桥接器卡死(提示重置时间以 CLI 返回为准)
|
|
575
|
+
? '\n\n💡 模型额度受限(Claude Code 已自动重试数分钟仍失败,等待期间计时持续属正常)。等额度恢复后重发任务即可;频繁出现请检查套餐限额或改用 /model 切换模型。'
|
|
576
|
+
: '';
|
|
426
577
|
await progress.finish(`❌ 出错:${errText.slice(0, 300)}${hint}`);
|
|
578
|
+
// 出错任务的会话同样归档:错误轮的上下文对追问「刚才为什么错」有价值,
|
|
579
|
+
// 也让 /resume 历史随真实使用持续积累(executor 抛错时携带 sessionId)
|
|
580
|
+
const errSessionId = e?.sessionId;
|
|
581
|
+
if (errSessionId)
|
|
582
|
+
deps.store.archiveSession(key, errSessionId, prompt);
|
|
427
583
|
deps.transcript?.result({
|
|
428
584
|
v: 1, ts: nowBeijingISO(), kind: 'result', app: app.appId,
|
|
429
585
|
chatId: msg.chatId, userId: msg.userId, sessionId: '',
|
|
@@ -432,7 +588,10 @@ deps, opts = {}) {
|
|
|
432
588
|
}
|
|
433
589
|
finally {
|
|
434
590
|
clearTimeout(hardTimeout);
|
|
591
|
+
activeProgress.delete(key);
|
|
592
|
+
activeQueries.delete(key);
|
|
435
593
|
rt.abort = undefined;
|
|
594
|
+
rt.busy = false;
|
|
436
595
|
release();
|
|
437
596
|
}
|
|
438
597
|
}
|
|
@@ -472,6 +631,53 @@ deps, opts = {}) {
|
|
|
472
631
|
card: { type: 'raw', data: resultCard },
|
|
473
632
|
};
|
|
474
633
|
}
|
|
634
|
+
// 提问回调分流:qa-pick 更新选中态(卡片 PATCH 重渲染,不消耗挂起项);qa-submit 全部作答后 resolve
|
|
635
|
+
const qa = qaPending.get(action.value.requestId);
|
|
636
|
+
if (qa) {
|
|
637
|
+
if (action.operatorId !== qa.ownerId) {
|
|
638
|
+
console.log(tag, `[卡片回调] 非发起人 ${action.operatorId} 点击提问卡 ${action.value.requestId},已忽略`);
|
|
639
|
+
return { toast: { type: 'info', content: '仅任务发起人可作答' } };
|
|
640
|
+
}
|
|
641
|
+
const { decision } = action.value;
|
|
642
|
+
if (decision === 'qa-pick') {
|
|
643
|
+
const q = qa.req.questions[action.value.qIndex ?? -1];
|
|
644
|
+
const label = action.value.option;
|
|
645
|
+
if (!q || !label || !q.options.some((o) => o.label === label)) {
|
|
646
|
+
return { toast: { type: 'info', content: '该选项无效' } };
|
|
647
|
+
}
|
|
648
|
+
const cur = qa.answers[action.value.qIndex];
|
|
649
|
+
if (q.multiSelect) {
|
|
650
|
+
const arr = Array.isArray(cur) ? cur : cur !== undefined ? [cur] : [];
|
|
651
|
+
qa.answers[action.value.qIndex] = arr.includes(label)
|
|
652
|
+
? (arr.length > 1 ? arr.filter((x) => x !== label) : arr) // 至少保留一项:全取消等于未答
|
|
653
|
+
: [...arr, label];
|
|
654
|
+
}
|
|
655
|
+
else {
|
|
656
|
+
qa.answers[action.value.qIndex] = label;
|
|
657
|
+
}
|
|
658
|
+
void deps.gateway.updateCard(qa.cardId, buildQuestionCard(qa.req, qa.answers)).catch(() => { });
|
|
659
|
+
return { toast: { type: 'success', content: `已选:${label}` } };
|
|
660
|
+
}
|
|
661
|
+
if (decision === 'qa-submit') {
|
|
662
|
+
const missing = qa.req.questions
|
|
663
|
+
.filter((_, i) => qa.answers[i] === undefined || (Array.isArray(qa.answers[i]) && qa.answers[i].length === 0));
|
|
664
|
+
if (missing.length > 0) {
|
|
665
|
+
return { toast: { type: 'warning', content: `还有 ${missing.length} 个问题未作答(多选题至少选 1 项)` } };
|
|
666
|
+
}
|
|
667
|
+
qaPending.delete(action.value.requestId);
|
|
668
|
+
const result = {};
|
|
669
|
+
qa.req.questions.forEach((q, i) => { result[q.question] = qa.answers[i]; });
|
|
670
|
+
qa.resolve(result);
|
|
671
|
+
const resultCard = buildQuestionResultCard(qa.req, qa.answers, '任务发起人');
|
|
672
|
+
void deps.gateway.updateCard(qa.cardId, resultCard)
|
|
673
|
+
.catch((e) => console.error('[提问卡兜底更新失败]', action.value.requestId, e));
|
|
674
|
+
return {
|
|
675
|
+
toast: { type: 'success', content: '✅ 答案已提交' },
|
|
676
|
+
card: { type: 'raw', data: resultCard },
|
|
677
|
+
};
|
|
678
|
+
}
|
|
679
|
+
return { toast: { type: 'info', content: '该提问已被处理或已过期' } };
|
|
680
|
+
}
|
|
475
681
|
const pending = confirmPending.get(action.value.requestId);
|
|
476
682
|
if (!pending) {
|
|
477
683
|
// 已处理/超时清理/桥接器重启后的孤儿卡:toast 提示后忽略,不重复决策
|
|
@@ -502,7 +708,7 @@ deps, opts = {}) {
|
|
|
502
708
|
catch (e) {
|
|
503
709
|
console.error(tag, '[卡片回调异常]', action.value.requestId, e);
|
|
504
710
|
// resolve 之后的代码理论不可抛;若未来插入可抛代码,按条目是否仍在区分决策是否已生效
|
|
505
|
-
const retryable = confirmPending.has(action.value.requestId) || planPending.has(action.value.requestId);
|
|
711
|
+
const retryable = confirmPending.has(action.value.requestId) || planPending.has(action.value.requestId) || qaPending.has(action.value.requestId);
|
|
506
712
|
return { toast: { type: 'error', content: retryable ? '处理失败,请重试' : '处理出现异常,决策可能已生效,请勿盲目重试' } };
|
|
507
713
|
}
|
|
508
714
|
}
|
|
@@ -597,6 +803,7 @@ export async function startBridge(configPath = CONFIG_PATH) {
|
|
|
597
803
|
updateCard: (id, card) => gateway.updateCard(id, card),
|
|
598
804
|
uploadAndSendFile: (chatId, p) => gateway.uploadAndSendFile(chatId, p),
|
|
599
805
|
sendImageTo: (chatId, p, caption) => gateway.sendImage(chatId, p, caption),
|
|
806
|
+
deleteCard: (id) => gateway.deleteCard(id),
|
|
600
807
|
},
|
|
601
808
|
access,
|
|
602
809
|
store: SessionStore.load(join(CONFIG_DIR, `sessions.${app.appId}.json`)),
|
|
@@ -657,5 +864,11 @@ export async function startBridge(configPath = CONFIG_PATH) {
|
|
|
657
864
|
}
|
|
658
865
|
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
659
866
|
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
867
|
+
// 长驻进程兜底:任何遗漏的未处理 rejection 只记日志不退出——飞书发送偶发失败若崩掉整个
|
|
868
|
+
// bridge(Node 默认行为),systemd 重启会掩盖崩溃,但当时所有在跑回合横死、会话尾部残缺,
|
|
869
|
+
// 下一轮 resume 便是「上一轮被中断」的连环错乱
|
|
870
|
+
process.on('unhandledRejection', (reason) => {
|
|
871
|
+
console.error('[unhandledRejection](已忽略,进程继续运行)', reason);
|
|
872
|
+
});
|
|
660
873
|
}
|
|
661
874
|
//# sourceMappingURL=index.js.map
|