@jesonliu/lark-claudecode-bridge 0.18.1 → 0.20.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.
Files changed (78) hide show
  1. package/README.md +14 -12
  2. package/assets/web/css/main.css +509 -111
  3. package/assets/web/index.html +12 -2
  4. package/assets/web/js/main.js +19 -11
  5. package/assets/web/js/pages/apps.js +10 -5
  6. package/assets/web/js/pages/claude.js +15 -5
  7. package/assets/web/js/pages/mcp.js +265 -0
  8. package/assets/web/js/pages/overview.js +5 -4
  9. package/assets/web/js/pages/permissions.js +56 -30
  10. package/assets/web/js/pages/plugins.js +29 -6
  11. package/assets/web/js/pages/skills.js +342 -0
  12. package/assets/web/js/pages/slash.js +11 -5
  13. package/assets/web/js/pages/workspaces.js +36 -14
  14. package/assets/web/js/theme.js +23 -0
  15. package/assets/web/js/ui.js +75 -4
  16. package/config.example.yaml +2 -3
  17. package/dist/access/access-control.d.ts +17 -1
  18. package/dist/access/access-control.js +31 -2
  19. package/dist/access/access-control.js.map +1 -1
  20. package/dist/bin/lcb.js +5 -0
  21. package/dist/bin/lcb.js.map +1 -1
  22. package/dist/claude-config.d.ts +14 -2
  23. package/dist/claude-config.js +75 -4
  24. package/dist/claude-config.js.map +1 -1
  25. package/dist/cli/setup-wizard.d.ts +0 -1
  26. package/dist/cli/setup-wizard.js +2 -4
  27. package/dist/cli/setup-wizard.js.map +1 -1
  28. package/dist/config.js +39 -14
  29. package/dist/config.js.map +1 -1
  30. package/dist/executor/claude-executor.d.ts +1 -1
  31. package/dist/executor/claude-executor.js +4 -2
  32. package/dist/executor/claude-executor.js.map +1 -1
  33. package/dist/executor/notify-server.d.ts +20 -0
  34. package/dist/executor/notify-server.js +85 -4
  35. package/dist/executor/notify-server.js.map +1 -1
  36. package/dist/executor/plugin-discovery.d.ts +6 -0
  37. package/dist/executor/plugin-discovery.js +14 -0
  38. package/dist/executor/plugin-discovery.js.map +1 -1
  39. package/dist/gateway/card-builder.d.ts +60 -24
  40. package/dist/gateway/card-builder.js +200 -109
  41. package/dist/gateway/card-builder.js.map +1 -1
  42. package/dist/gateway/diff-card.js +1 -1
  43. package/dist/gateway/diff-card.js.map +1 -1
  44. package/dist/gateway/feishu-gateway.d.ts +27 -0
  45. package/dist/gateway/feishu-gateway.js +106 -4
  46. package/dist/gateway/feishu-gateway.js.map +1 -1
  47. package/dist/gateway/progress-card.d.ts +77 -0
  48. package/dist/gateway/progress-card.js +231 -8
  49. package/dist/gateway/progress-card.js.map +1 -1
  50. package/dist/index.d.ts +16 -1
  51. package/dist/index.js +354 -98
  52. package/dist/index.js.map +1 -1
  53. package/dist/notify-sop.d.ts +1 -0
  54. package/dist/notify-sop.js +33 -0
  55. package/dist/notify-sop.js.map +1 -0
  56. package/dist/session/commands.d.ts +1 -1
  57. package/dist/session/commands.js +25 -2
  58. package/dist/session/commands.js.map +1 -1
  59. package/dist/session/session-store.d.ts +3 -0
  60. package/dist/session/session-store.js.map +1 -1
  61. package/dist/types.d.ts +23 -5
  62. package/dist/util/log-tee.d.ts +4 -0
  63. package/dist/util/log-tee.js +99 -0
  64. package/dist/util/log-tee.js.map +1 -0
  65. package/dist/util/runtime-dirs.d.ts +4 -0
  66. package/dist/util/runtime-dirs.js +27 -0
  67. package/dist/util/runtime-dirs.js.map +1 -0
  68. package/dist/util/workspace-diff.js +2 -2
  69. package/dist/util/workspace-diff.js.map +1 -1
  70. package/dist/web/lifecycle.d.ts +4 -1
  71. package/dist/web/lifecycle.js +11 -25
  72. package/dist/web/lifecycle.js.map +1 -1
  73. package/dist/web/server.js +404 -11
  74. package/dist/web/server.js.map +1 -1
  75. package/dist/web/skills-mcp-api.d.ts +120 -0
  76. package/dist/web/skills-mcp-api.js +348 -0
  77. package/dist/web/skills-mcp-api.js.map +1 -0
  78. package/package.json +3 -1
@@ -1,9 +1,34 @@
1
- import { buildProgressCard } from './card-builder.js';
1
+ import { buildProgressCard, buildPartialUpdateActions } from './card-builder.js';
2
2
  const FLUSH_CHARS = 200;
3
+ /** 单次卡片更新请求超时:飞书 SDK 的 axios 无超时(timeout=0),请求被网络黑洞时
4
+ * flush 串行链会无限期挂起(生产实测单次挂 7.4 分钟)——挂起期间计时/交互区全停,
5
+ * 与任务卡死无从区分。到点按失败处理(seq 不推进)下轮重试;若超时请求实际已在
6
+ * 服务端落地,下轮会收 300317 经跳号分支自愈 */
7
+ const UPDATE_TIMEOUT_MS = 30_000;
8
+ /** 给单次更新请求加超时闸:到点 reject 由 flush catch 统一按失败重试 */
9
+ function withTimeout(p, ms) {
10
+ return new Promise((resolve, reject) => {
11
+ const timer = setTimeout(() => reject(new Error(`卡片更新超时(${ms}ms 无响应),按失败处理下轮重试`)), ms);
12
+ timer.unref();
13
+ p.then((v) => { clearTimeout(timer); resolve(v); }, (e) => { clearTimeout(timer); reject(e); });
14
+ });
15
+ }
3
16
  export class ProgressCard {
4
17
  sender;
5
18
  opts;
6
19
  messageId;
20
+ /** 卡片实体 ID(cardkit 实体模式):非空时状态刷新走局部更新(保 form 输入),结构变化走全量替换 */
21
+ cardId;
22
+ /** cardkit 操作序号:同一实体的每次 update/batch_update 必须严格递增 */
23
+ seq = 0;
24
+ /** 上次全量渲染的结构签名:交互区(confirm/plan/question)增删、终态需要全量重渲染。
25
+ * 0.20.0 起 qa 选中态不进签名(见 structureKey)——改走 partial 按钮级局部更新 */
26
+ lastStructure = '';
27
+ /** qa 选中态脏标记:updateQuestionAnswer 置位,下一次 partial 附带按钮级 actions 后清除。
28
+ * 显式标记取代快照对比——快照在 replace 与求值之间可能被新一轮点击改写(竞态丢刷) */
29
+ qaButtonsDirty = false;
30
+ /** 挂起输入期间收到的沉底请求(sinkToBottom 会删卡重发清空输入态):挂起解除后补执行 */
31
+ deferSink = false;
7
32
  buffer = '';
8
33
  state;
9
34
  flushTimer;
@@ -22,7 +47,24 @@ export class ProgressCard {
22
47
  this.state = { title, status: '🚀 已接收,启动中…', textTail: '', toolLine: '', startedAt: Date.now(), agents: [] };
23
48
  }
24
49
  async start() {
25
- this.messageId = await this.sender.sendCard(buildProgressCard(this.state));
50
+ const initial = buildProgressCard(this.state, this.opts.cardWidthMode ?? 'default');
51
+ // 优先卡片实体模式(支持局部更新 → plan 表单输入不被心跳刷掉);
52
+ // 创建失败(cardkit:card:write 权限缺失/接口异常)降级为普通卡片 + 整卡 PATCH,功能不退化
53
+ if (this.sender.sendCardEntity) {
54
+ try {
55
+ const { messageId, cardId } = await this.sender.sendCardEntity(initial);
56
+ this.messageId = messageId;
57
+ this.cardId = cardId;
58
+ }
59
+ catch (e) {
60
+ console.warn('[进度卡] 卡片实体模式不可用,降级为整卡更新(plan 表单输入可能被心跳清空):', e instanceof Error ? e.message : e);
61
+ }
62
+ }
63
+ if (!this.messageId) {
64
+ this.messageId = await this.sender.sendCard(initial);
65
+ }
66
+ this.lastStructure = this.structureKey();
67
+ this.qaButtonsDirty = false;
26
68
  const interval = this.opts.flushIntervalMs ?? 1500;
27
69
  this.flushTimer = setInterval(() => void this.flush(), interval).unref();
28
70
  this.heartbeatTimer = setInterval(() => {
@@ -32,6 +74,8 @@ export class ProgressCard {
32
74
  }
33
75
  }, 1000).unref();
34
76
  }
77
+ /** 过程文本累积(产品决策:运行中不在卡片渲染过程文本与思考内容,仅终态露出结果尾部——
78
+ * 见 card-builder buildProgressCard 的 done 分支;buffer 照常积累供终态使用,不丢内容) */
35
79
  appendText(delta) {
36
80
  if (this.done)
37
81
  return;
@@ -73,6 +117,67 @@ export class ProgressCard {
73
117
  this.lastActivityAt = Date.now();
74
118
  void this.flush();
75
119
  }
120
+ /**
121
+ * 挂起/清除内嵌计划确认(#3+#6):plan 内容过长仅露 600 字预览,完整原文落盘到 planFilePath,
122
+ * 「查看完整方案」按钮 callback 触发 send_file 而非嵌入卡片。决策后 clearPlan() 收回区域
123
+ */
124
+ setPlan(req) {
125
+ if (this.done)
126
+ return;
127
+ this.state.plan = req;
128
+ this.lastActivityAt = Date.now();
129
+ void this.flush();
130
+ }
131
+ /**
132
+ * 挂起/清除内嵌提问确认(#3):每题选项全宽单行 + 提交按钮全部在主卡上,qa-pick PATCH 选中态。
133
+ * 决策后 clearQuestion() 收回区域
134
+ */
135
+ setQuestion(req) {
136
+ if (this.done)
137
+ return;
138
+ this.state.question = req;
139
+ this.lastActivityAt = Date.now();
140
+ void this.flush();
141
+ }
142
+ /** 当前某题的选中答案(wiring 的 qa-pick 回调同步给 qaPending 校验用;公开读,
143
+ * 替代旧版 wiring 直接访问私有 state 的 hack) */
144
+ getQuestionAnswer(qIndex) {
145
+ return this.state.question?.answers[qIndex];
146
+ }
147
+ /** 当前挂起的内嵌 plan / question requestId(wiring 诊断入口 _pendingAsk 用) */
148
+ pendingAsk() {
149
+ return {
150
+ planId: this.state.plan?.requestId,
151
+ questionId: this.state.question?.requestId,
152
+ };
153
+ }
154
+ /**
155
+ * qa-pick 选项点击:更新选中态并 flush(multiSelect 累加/移除,单选直接覆盖)。
156
+ * 异常状态(如 question 已被清空)静默忽略——迟到点击不报错
157
+ */
158
+ updateQuestionAnswer(qIndex, option, multiSelect) {
159
+ if (this.done || !this.state.question)
160
+ return;
161
+ const q = this.state.question.questions[qIndex];
162
+ if (!q)
163
+ return;
164
+ if (multiSelect) {
165
+ const cur = this.state.question.answers[qIndex];
166
+ const arr = Array.isArray(cur) ? [...cur] : cur !== undefined ? [cur] : [];
167
+ const i = arr.indexOf(option);
168
+ if (i >= 0 && arr.length > 1)
169
+ arr.splice(i, 1); // 至少保留一项:单选/全取消等于未答
170
+ else if (i < 0)
171
+ arr.push(option);
172
+ this.state.question.answers[qIndex] = arr;
173
+ }
174
+ else {
175
+ this.state.question.answers[qIndex] = option;
176
+ }
177
+ this.qaButtonsDirty = true; // 下次实体 partial 附带按钮级选中态更新(不走全量替换,保 form 输入)
178
+ this.lastActivityAt = Date.now();
179
+ void this.flush();
180
+ }
76
181
  /** 子代理/后台任务启动:加入清单(同 id 重复启动幂等跳过) */
77
182
  agentStart(agent) {
78
183
  if (this.done)
@@ -109,8 +214,10 @@ export class ProgressCard {
109
214
  clearInterval(this.heartbeatTimer);
110
215
  this.state.status = summary;
111
216
  this.state.toolLine = '';
112
- // 终态不再带确认按钮(决策未落的最极端兜底;正常路径 ask 先于 finish settle)
217
+ // 终态不再带交互区(决策未落的最极端兜底;正常路径 plan/question/confirm 先于 finish settle)
113
218
  this.state.confirm = undefined;
219
+ this.state.plan = undefined;
220
+ this.state.question = undefined;
114
221
  await this.flush(); // 经由同一串行链落地,保证是最后一张(终态不被旧 flush 覆盖)
115
222
  }
116
223
  /**
@@ -121,15 +228,39 @@ export class ProgressCard {
121
228
  * 绝不向上抛:调用方多为 void 调用,未处理 rejection 会拖垮整个 bridge 进程。
122
229
  */
123
230
  async sinkToBottom() {
124
- if (this.done || !this.messageId)
231
+ if (this.done) {
232
+ this.deferSink = false;
233
+ return;
234
+ }
235
+ if (!this.messageId)
236
+ return;
237
+ // 挂起输入期间沉底会删卡重发(输入态归零,用户打的意见/自定义答案被清掉)——
238
+ // 记录请求延迟到挂起解除(flush 落地后检查补执行)
239
+ if (this.hasInputPending()) {
240
+ this.deferSink = true;
125
241
  return;
242
+ }
126
243
  const old = this.messageId;
244
+ const oldCardId = this.cardId;
127
245
  this.messageId = undefined; // 期间 flush 自动跳过,避免 PATCH 打到已删除的旧卡
246
+ this.cardId = undefined;
128
247
  if (this.sender.deleteCard)
129
248
  await this.sender.deleteCard(old).catch(() => { });
130
249
  for (let attempt = 0; attempt < 2; attempt++) {
131
250
  try {
132
- this.messageId = await this.sender.sendCard(buildProgressCard(this.state));
251
+ const fresh = buildProgressCard(this.state, this.opts.cardWidthMode ?? 'default');
252
+ // 沉底重发沿用当前模式:原先是实体模式则新建实体(旧实体已随消息撤回弃用)
253
+ if (this.sender.sendCardEntity && oldCardId) {
254
+ const { messageId, cardId } = await this.sender.sendCardEntity(fresh);
255
+ this.messageId = messageId;
256
+ this.cardId = cardId;
257
+ this.seq = 0; // sequence 按实体计数:新实体从 1 重新递增
258
+ }
259
+ else {
260
+ this.messageId = await this.sender.sendCard(fresh);
261
+ }
262
+ this.lastStructure = this.structureKey();
263
+ this.qaButtonsDirty = false; // 重发卡片已含最新选中态
133
264
  void this.flush();
134
265
  return;
135
266
  }
@@ -145,6 +276,10 @@ export class ProgressCard {
145
276
  * 串行化 flush:所有更新走同一条 promise 链按发起顺序落地。
146
277
  * - in-flight 中再来请求 → 标记 dirty,本轮落地后自动补刷一次(带上最新 state);
147
278
  * - finish 的终态 flush 也入链,天然排在先前挂起的更新之后。
279
+ * 实体模式下按结构签名分流:结构未变(纯状态/计时/子代理刷新、qa 选中态)→ 局部更新
280
+ * (只改 main/timer 两个 markdown 组件,form 输入保留;选中态变化附带按钮级 actions);
281
+ * 结构变化(交互区增删、终态)→ 全量替换实体。旧模式(无实体能力)维持整卡 PATCH,
282
+ * 且挂起输入期间冻结维持性刷新(防整卡 PATCH 清空未提交输入)。
148
283
  */
149
284
  flush() {
150
285
  if (!this.messageId)
@@ -161,19 +296,107 @@ export class ProgressCard {
161
296
  this.state.textTail += this.buffer;
162
297
  this.buffer = '';
163
298
  }
299
+ const expectedSeq = this.seq + 1; // 仅期望值,await 成功才提交推进
300
+ const timeoutMs = this.opts.updateTimeoutMs ?? UPDATE_TIMEOUT_MS;
164
301
  try {
165
- await this.sender.updateCard(this.messageId, buildProgressCard(this.state));
302
+ if (this.cardId && this.sender.partialUpdateCard && this.sender.replaceCard) {
303
+ const structure = this.structureKey();
304
+ if (structure === this.lastStructure) {
305
+ // 纯状态刷新:局部更新,form/按钮区不动(用户输入保留)。
306
+ // qa 选中态变化也走这里(answers 不触发全量替换——那会清空 form 内未提交的
307
+ // 自定义输入):脏标记决定是否附带按钮级局部更新,落地后清除
308
+ const withQaButtons = this.qaButtonsDirty;
309
+ await withTimeout(this.sender.partialUpdateCard(this.cardId, expectedSeq, buildPartialUpdateActions(this.state, withQaButtons)), timeoutMs);
310
+ this.qaButtonsDirty = false;
311
+ }
312
+ else {
313
+ // 结构变化:全量替换实体(form 输入会重置,但这些时刻用户尚未输入或已提交;
314
+ // 全量渲染已含最新选中态)
315
+ await withTimeout(this.sender.replaceCard(this.cardId, expectedSeq, buildProgressCard(this.state, this.opts.cardWidthMode ?? 'default')), timeoutMs);
316
+ this.lastStructure = structure;
317
+ this.qaButtonsDirty = false;
318
+ }
319
+ }
320
+ else {
321
+ // 降级模式挂起冻结(0.20.0):im.message.patch 整卡 PATCH 会重置卡片全部客户端
322
+ // 输入态——plan/qa 挂起期间 1.5s 心跳会把用户正在输入的意见/自定义答案瞬间清掉。
323
+ // 仅冻结「结构不变」的维持性刷新;挂起区出现/消失(结构变化)必须放行——
324
+ // 否则确认按钮根本不上屏。计时/状态行在挂起期间停更可接受(任务实际在等用户)
325
+ const structure = this.structureKey();
326
+ if (this.hasInputPending() && structure === this.lastStructure)
327
+ break;
328
+ await withTimeout(this.sender.updateCard(this.messageId, buildProgressCard(this.state, this.opts.cardWidthMode ?? 'default')), timeoutMs);
329
+ this.lastStructure = structure;
330
+ }
331
+ this.seq = expectedSeq; // 仅成功后提交推进
166
332
  }
167
- catch {
168
- // 单次 PATCH 失败不致命(限流/网络抖动),下轮重试
333
+ catch (e) {
334
+ // cardkit sequence OCC:失败时区分错误码
335
+ // - 300317(服务端 sequence 已推进超过本地,网络超时但服务端已处理):
336
+ // 飞书不提供读服务端 sequence 接口,跳到 Date.now() 兜底(飞书允许 sequence 是时间戳,且保证 next > 服务端 last)
337
+ // - 其他错误(限流/200810 交互进行中/网络抖动):服务端没接受本次 seq,seq 不推进,下轮重试用同一 expectedSeq
338
+ // 错误码可能在 axios 的 response.data 里(HTTP 400 时 message 只有 status code),一并带出供定位
339
+ const code = extractFeishuErrorCode(e);
340
+ const detail = feishuErrorBody(e);
341
+ if (code === '300317') {
342
+ this.seq = Date.now();
343
+ console.warn('[进度卡] sequence 错位(300317),本地 seq 跳到时间戳:', this.seq, e instanceof Error ? e.message : e, detail ?? '');
344
+ }
345
+ else {
346
+ console.warn('[进度卡] 更新失败(seq 未推进,下次用相同 expectedSeq 重试):', e instanceof Error ? e.message : e, detail ?? '');
347
+ }
169
348
  }
170
349
  if (!this.dirty)
171
350
  break; // 落地期间无新请求,收工
172
351
  }
352
+ // 沉底延迟触发:挂起期间被暂存的 sink 请求,在挂起解除(plan/question 已清)后补执行
353
+ if (this.deferSink && !this.hasInputPending()) {
354
+ this.deferSink = false;
355
+ void this.sinkToBottom();
356
+ }
173
357
  })().finally(() => {
174
358
  this.flushing = false;
175
359
  });
176
360
  return this.flushChain;
177
361
  }
362
+ /** 是否有等待用户输入的挂起区(plan 意见框 / qa 自定义输入):降级模式冻结与沉底延迟的判定依据 */
363
+ hasInputPending() {
364
+ return !!(this.state.plan || this.state.question);
365
+ }
366
+ /** 结构签名:交互区存在性 + 终态——任一变化都需要全量重渲染才能上屏。
367
+ * 0.20.0 起不含 qa 选中态:选中态变化只走按钮 element_id 级局部更新,全量替换会
368
+ * 清空 form 内未提交的自定义输入(用户点选项时输入框里可能已打了字) */
369
+ structureKey() {
370
+ const s = this.state;
371
+ return JSON.stringify([!!s.confirm, !!s.plan, !!s.question, !!s.done]);
372
+ }
373
+ }
374
+ /**
375
+ * 飞书错误响应体原文(截断防刷屏)。axios 把 HTTP 400 的业务错误码藏在 e.response.data
376
+ * (300317/99992402 等),e.message 只有 "Request failed with status code 400"——
377
+ * 不提取响应体的话日志无从定位拒绝原因(本次 card is required 事故即如此)。
378
+ *
379
+ * 导出供单元测试使用;不在生产逻辑外暴露。
380
+ */
381
+ export function feishuErrorBody(e) {
382
+ const data = e?.response?.data;
383
+ if (data === undefined || data === null)
384
+ return undefined;
385
+ const s = typeof data === 'string' ? data : JSON.stringify(data);
386
+ return s.length > 300 ? `${s.slice(0, 300)}…` : s;
387
+ }
388
+ /**
389
+ * 从 gateway 抛出的 Error 中提取飞书 cardkit 错误码。
390
+ * 优先读 axios 响应体(HTTP 400 场景),回落 message 正则容错匹配——
391
+ * gateway 业务级错误信息形如 `卡片局部更新失败: {"code":300317,"msg":"..."}`。
392
+ * 这里用正则容错匹配 — 不引入新依赖,只对错误信息做最小解析。
393
+ *
394
+ * 导出供单元测试使用;不在生产逻辑外暴露。
395
+ */
396
+ export function extractFeishuErrorCode(e) {
397
+ if (!(e instanceof Error))
398
+ return undefined;
399
+ const m = /"code"\s*:\s*(\d+)/.exec(feishuErrorBody(e) ?? e.message);
400
+ return m?.[1];
178
401
  }
179
402
  //# sourceMappingURL=progress-card.js.map
@@ -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;AAU1E,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,OAAO,YAAY;IAgBb,MAAM;IAEN,IAAI;IAjBN,SAAS,CAAU;IACnB,MAAM,GAAG,EAAE,CAAC;IACZ,KAAK,CAAgB;IACrB,UAAU,CAAkB;IAC5B,cAAc,CAAkB;IAChC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5B,IAAI,GAAG,KAAK,CAAC;IACrB,oDAAoD;IACpD,2CAA2C;IAC3C,iCAAiC;IACzB,UAAU,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC9C,KAAK,GAAG,KAAK,CAAC;IACd,QAAQ,GAAG,KAAK,CAAC;IAEzB,YACU,MAAkB,EAC1B,KAAa,EACL,IAAI,GAA2D,EAAE;sBAFjE,MAAM;oBAEN,IAAI;QAEZ,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC/G,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;QACzE,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,EAAE,CAAC;gBAC9E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,8BAA8B;gBAChE,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,kBAAkB;YACvC,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,WAAW;YAAE,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,OAAe;QACrC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,EAAW,EAAE,IAAa;QACjD,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,4CAA4C;QAC5C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACjG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,GAAoC;QAC7C,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,qCAAqC;IACrC,UAAU,CAAC,KAAwD;QACjE,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO;QAC7D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,EAAU,EAAE,MAAqC,EAAE,OAAgB;QAC7E,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,EAAE,CAAC;YACN,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YAClB,IAAI,OAAO;gBAAE,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzJ,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACvB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACzB,kDAAkD;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC/B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,oCAAoC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,kCAAkC;QAC9D,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9E,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3E,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,OAAO,KAAK,CAAC;oBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB;;oBAC9E,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK;QACX,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,4BAA4B;YAC/C,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE;YAC5B,SAAS,CAAC;gBACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC;oBACnC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/E,CAAC;gBAAC,MAAM,CAAC;oBACP,+BAA+B;gBACjC,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,KAAK;oBAAE,MAAM,CAAC,cAAc;YACxC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF"}
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
@@ -15,6 +15,15 @@ export interface BridgeDeps {
15
15
  sendImageTo?(chatId: string, p: string, caption?: string): Promise<string>;
16
16
  /** 撤回消息(进度卡沉底);可选——缺省时沉底退化为仅重刷 */
17
17
  deleteCard?(id: string): Promise<void>;
18
+ /** 卡片实体模式(cardkit):进度卡专用,支持局部更新保 form 输入;可选——缺省降级整卡 PATCH */
19
+ sendCardEntityTo?(chatId: string, card: unknown): Promise<{
20
+ messageId: string;
21
+ cardId: string;
22
+ }>;
23
+ /** 卡片实体局部更新(batch_update);可选 */
24
+ partialUpdateCardElements?(cardId: string, sequence: number, actions: unknown[]): Promise<void>;
25
+ /** 卡片实体全量替换;可选 */
26
+ replaceCardEntity?(cardId: string, sequence: number, card: unknown): Promise<void>;
18
27
  };
19
28
  access: AccessControl;
20
29
  store: SessionStore;
@@ -27,7 +36,13 @@ deps: BridgeDeps, opts?: {
27
36
  confirmTimeoutMs?: number;
28
37
  cardSendTimeoutMs?: number;
29
38
  reloadConfig?: () => void;
30
- }): GatewayHandlers;
39
+ }): GatewayHandlers & {
40
+ /** 测试/诊断入口:返回通道当前挂起的内嵌 plan / question requestId */
41
+ _pendingAsk(channelKey: string): {
42
+ planId?: string;
43
+ questionId?: string;
44
+ };
45
+ };
31
46
  /**
32
47
  * 配置热重载器:lcb ws add/remove 写盘后,运行实例下一条消息即见新工作区
33
48
  * (与 access.reload 同款模式——长驻进程不重读会持旧配置直至重启)。