botmux 2.53.0 → 2.55.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 (142) hide show
  1. package/dist/adapters/backend/zellij-observe-backend.d.ts +15 -0
  2. package/dist/adapters/backend/zellij-observe-backend.d.ts.map +1 -1
  3. package/dist/adapters/backend/zellij-observe-backend.js +37 -0
  4. package/dist/adapters/backend/zellij-observe-backend.js.map +1 -1
  5. package/dist/adapters/cli/claude-code.d.ts +3 -3
  6. package/dist/adapters/cli/claude-code.js.map +1 -1
  7. package/dist/adapters/cli/codex.d.ts.map +1 -1
  8. package/dist/adapters/cli/codex.js +44 -28
  9. package/dist/adapters/cli/codex.js.map +1 -1
  10. package/dist/adapters/cli/seed.d.ts +1 -1
  11. package/dist/adapters/cli/seed.js +2 -2
  12. package/dist/adapters/cli/seed.js.map +1 -1
  13. package/dist/adapters/cli/types.d.ts +5 -1
  14. package/dist/adapters/cli/types.d.ts.map +1 -1
  15. package/dist/bot-registry.d.ts +8 -0
  16. package/dist/bot-registry.d.ts.map +1 -1
  17. package/dist/bot-registry.js +31 -5
  18. package/dist/bot-registry.js.map +1 -1
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +282 -113
  21. package/dist/cli.js.map +1 -1
  22. package/dist/core/dispatch.d.ts +23 -0
  23. package/dist/core/dispatch.d.ts.map +1 -1
  24. package/dist/core/dispatch.js +17 -0
  25. package/dist/core/dispatch.js.map +1 -1
  26. package/dist/core/pending-response.d.ts +25 -0
  27. package/dist/core/pending-response.d.ts.map +1 -0
  28. package/dist/core/pending-response.js +82 -0
  29. package/dist/core/pending-response.js.map +1 -0
  30. package/dist/core/session-discovery.d.ts.map +1 -1
  31. package/dist/core/session-discovery.js +5 -0
  32. package/dist/core/session-discovery.js.map +1 -1
  33. package/dist/core/session-manager.d.ts.map +1 -1
  34. package/dist/core/session-manager.js +16 -1
  35. package/dist/core/session-manager.js.map +1 -1
  36. package/dist/core/types.d.ts +3 -0
  37. package/dist/core/types.d.ts.map +1 -1
  38. package/dist/core/types.js.map +1 -1
  39. package/dist/core/worker-pool.d.ts +27 -1
  40. package/dist/core/worker-pool.d.ts.map +1 -1
  41. package/dist/core/worker-pool.js +134 -6
  42. package/dist/core/worker-pool.js.map +1 -1
  43. package/dist/core/zellij-adopt-discovery.d.ts.map +1 -1
  44. package/dist/core/zellij-adopt-discovery.js +53 -32
  45. package/dist/core/zellij-adopt-discovery.js.map +1 -1
  46. package/dist/daemon.d.ts.map +1 -1
  47. package/dist/daemon.js +63 -1
  48. package/dist/daemon.js.map +1 -1
  49. package/dist/dashboard/bot-onboarding.d.ts +46 -3
  50. package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
  51. package/dist/dashboard/bot-onboarding.js +86 -7
  52. package/dist/dashboard/bot-onboarding.js.map +1 -1
  53. package/dist/dashboard/federated-group-core.js +8 -4
  54. package/dist/dashboard/federated-group-core.js.map +1 -1
  55. package/dist/dashboard/federation-api.d.ts.map +1 -1
  56. package/dist/dashboard/federation-api.js +22 -2
  57. package/dist/dashboard/federation-api.js.map +1 -1
  58. package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
  59. package/dist/dashboard/web/bot-onboarding.js +139 -20
  60. package/dist/dashboard/web/bot-onboarding.js.map +1 -1
  61. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  62. package/dist/dashboard/web/i18n.js +36 -6
  63. package/dist/dashboard/web/i18n.js.map +1 -1
  64. package/dist/dashboard-web/app.js +171 -143
  65. package/dist/dashboard-web/style.css +58 -0
  66. package/dist/dashboard.js +37 -1
  67. package/dist/dashboard.js.map +1 -1
  68. package/dist/global-config.d.ts +5 -0
  69. package/dist/global-config.d.ts.map +1 -1
  70. package/dist/global-config.js +17 -0
  71. package/dist/global-config.js.map +1 -1
  72. package/dist/i18n/en.d.ts.map +1 -1
  73. package/dist/i18n/en.js +8 -0
  74. package/dist/i18n/en.js.map +1 -1
  75. package/dist/i18n/zh.d.ts.map +1 -1
  76. package/dist/i18n/zh.js +8 -0
  77. package/dist/i18n/zh.js.map +1 -1
  78. package/dist/im/lark/card-builder.d.ts +4 -1
  79. package/dist/im/lark/card-builder.d.ts.map +1 -1
  80. package/dist/im/lark/card-builder.js +34 -1
  81. package/dist/im/lark/card-builder.js.map +1 -1
  82. package/dist/im/lark/card-handler.d.ts.map +1 -1
  83. package/dist/im/lark/card-handler.js +72 -11
  84. package/dist/im/lark/card-handler.js.map +1 -1
  85. package/dist/im/lark/client.d.ts +3 -1
  86. package/dist/im/lark/client.d.ts.map +1 -1
  87. package/dist/im/lark/client.js +7 -2
  88. package/dist/im/lark/client.js.map +1 -1
  89. package/dist/im/lark/event-dispatcher.d.ts +8 -1
  90. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  91. package/dist/im/lark/event-dispatcher.js +36 -6
  92. package/dist/im/lark/event-dispatcher.js.map +1 -1
  93. package/dist/services/codex-paths.d.ts +7 -0
  94. package/dist/services/codex-paths.d.ts.map +1 -0
  95. package/dist/services/codex-paths.js +19 -0
  96. package/dist/services/codex-paths.js.map +1 -0
  97. package/dist/services/codex-transcript.d.ts.map +1 -1
  98. package/dist/services/codex-transcript.js +5 -4
  99. package/dist/services/codex-transcript.js.map +1 -1
  100. package/dist/services/pending-response-transaction-store.d.ts +12 -0
  101. package/dist/services/pending-response-transaction-store.d.ts.map +1 -0
  102. package/dist/services/pending-response-transaction-store.js +52 -0
  103. package/dist/services/pending-response-transaction-store.js.map +1 -0
  104. package/dist/services/session-store.d.ts.map +1 -1
  105. package/dist/services/session-store.js +15 -1
  106. package/dist/services/session-store.js.map +1 -1
  107. package/dist/services/voice/audio.d.ts +32 -0
  108. package/dist/services/voice/audio.d.ts.map +1 -0
  109. package/dist/services/voice/audio.js +114 -0
  110. package/dist/services/voice/audio.js.map +1 -0
  111. package/dist/services/voice/index.d.ts +32 -0
  112. package/dist/services/voice/index.d.ts.map +1 -0
  113. package/dist/services/voice/index.js +98 -0
  114. package/dist/services/voice/index.js.map +1 -0
  115. package/dist/services/voice/openai.d.ts +24 -0
  116. package/dist/services/voice/openai.d.ts.map +1 -0
  117. package/dist/services/voice/openai.js +47 -0
  118. package/dist/services/voice/openai.js.map +1 -0
  119. package/dist/services/voice/sami.d.ts +22 -0
  120. package/dist/services/voice/sami.d.ts.map +1 -0
  121. package/dist/services/voice/sami.js +128 -0
  122. package/dist/services/voice/sami.js.map +1 -0
  123. package/dist/services/voice/types.d.ts +32 -0
  124. package/dist/services/voice/types.d.ts.map +1 -0
  125. package/dist/services/voice/types.js +2 -0
  126. package/dist/services/voice/types.js.map +1 -0
  127. package/dist/setup/bot-config-editor.d.ts +9 -0
  128. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  129. package/dist/setup/bot-config-editor.js +26 -0
  130. package/dist/setup/bot-config-editor.js.map +1 -1
  131. package/dist/setup/verify-permissions.js +3 -3
  132. package/dist/setup/verify-permissions.js.map +1 -1
  133. package/dist/skills/definitions.d.ts.map +1 -1
  134. package/dist/skills/definitions.js +0 -1
  135. package/dist/skills/definitions.js.map +1 -1
  136. package/dist/types.d.ts +5 -0
  137. package/dist/types.d.ts.map +1 -1
  138. package/dist/worker.js +147 -7
  139. package/dist/worker.js.map +1 -1
  140. package/dist/workflows/events/payloads.d.ts +20 -20
  141. package/dist/workflows/events/schema.d.ts +188 -188
  142. package/package.json +1 -1
@@ -19,7 +19,7 @@ import { cliIdForComm, readComm, readCwd, getChildPids, readClaudeSessionMeta, }
19
19
  import { findCodexRolloutByPid } from '../services/codex-transcript.js';
20
20
  import { findCocoSessionByPid } from '../services/coco-transcript.js';
21
21
  import { findServerPid } from '../adapters/backend/zellij-backend.js';
22
- import { listLiveSessions, parseDumpLayoutLeafPanes, parseListPanesJson, } from './zellij-session-discovery.js';
22
+ import { listLiveSessions, parseListPanesJson, } from './zellij-session-discovery.js';
23
23
  import { zellijEnv } from '../setup/ensure-zellij.js';
24
24
  import { logger } from '../utils/logger.js';
25
25
  import { execFileSync } from 'node:child_process';
@@ -122,6 +122,31 @@ function findAllClisUnder(rootPid, maxDepth, filterCliId) {
122
122
  };
123
123
  return found.filter(m => !found.some(n => n.pid !== m.pid && n.cliId === m.cliId && isAncestor(m.pid, n.pid)));
124
124
  }
125
+ /** comm values that are never a pane process — transient scan/client tooling
126
+ * that `ps`-based discovery and `zellij action` calls spawn under the server. */
127
+ const TRANSIENT_COMMS = new Set(['zellij', 'ps', 'pgrep', 'sh-from-ps', '']);
128
+ /**
129
+ * Persistent pane-shell children of a zellij server, robust against the
130
+ * transient processes that briefly parent to the server during discovery.
131
+ *
132
+ * Two failure modes are filtered: (1) `getChildPids` snapshots the whole `ps`
133
+ * table, so any `ps`/`zellij`-client process alive at that instant with
134
+ * ppid==server leaks in (comm denylist removes these); (2) anything else
135
+ * transient — caught by taking TWO snapshots and intersecting, since a
136
+ * short-lived process is gone by the second read while real pane shells persist.
137
+ * Without this the children count flaps vs the terminal count → the count guard
138
+ * intermittently refuses → discovery returns nothing on the unlucky call → the
139
+ * card shows panes but the click's re-discovery finds none → "目标 CLI 会话已退出".
140
+ */
141
+ function paneShellChildren(serverPid) {
142
+ const snap = () => new Set(getChildPids(serverPid).filter(pid => {
143
+ const c = readComm(pid) ?? '';
144
+ return c.length > 0 && !TRANSIENT_COMMS.has(c);
145
+ }));
146
+ const first = snap();
147
+ const second = snap();
148
+ return [...first].filter(pid => second.has(pid)).sort((a, b) => a - b);
149
+ }
125
150
  /** Run a read-only `zellij --session S action …`, returning stdout or null. */
126
151
  function zellijRead(session, args) {
127
152
  try {
@@ -184,55 +209,51 @@ export function discoverAdoptableZellijSessions(filterCliId) {
184
209
  for (const session of listLiveSessions()) {
185
210
  if (session.startsWith('bmx-'))
186
211
  continue;
187
- const layoutOut = zellijRead(session, ['dump-layout']);
188
212
  const panesOut = zellijRead(session, ['list-panes', '--json']);
189
- if (!layoutOut || !panesOut)
213
+ if (!panesOut)
190
214
  continue;
191
- // Positional join: ALL leaf terminal panes (command + bare shell) in
192
- // dump-layout document order vs non-plugin/non-floating terminals in
193
- // list-panes sorted by id. Counts MUST match or the alignment is
194
- // untrustworthy — refuse the whole session rather than bind the wrong pane.
195
- const leaves = parseDumpLayoutLeafPanes(layoutOut);
196
215
  const terminals = parseListPanesJson(panesOut)
197
216
  .filter(p => !p.isPlugin && !p.isFloating)
198
217
  .sort((a, b) => paneNum(a.paneId) - paneNum(b.paneId));
199
- if (leaves.length === 0 || leaves.length !== terminals.length) {
200
- if (leaves.length !== terminals.length) {
201
- logger.debug(`[zellij-adopt] ${session}: leaf(${leaves.length})/terminal(${terminals.length}) count mismatch — refusing adopt`);
202
- }
218
+ if (terminals.length === 0)
203
219
  continue;
204
- }
205
220
  const serverPid = findServerPid(session);
206
221
  if (!serverPid)
207
222
  continue;
208
- const clis = findAllClisUnder(serverPid, 4, filterCliId);
209
- for (let i = 0; i < leaves.length; i++) {
210
- const leaf = leaves[i];
211
- const term = terminals[i];
212
- if (!leaf.command)
213
- continue; // bare shell pane not adoptable
214
- // The cliId comes from the actual PROCESS (cliIdForProc handles
215
- // node-wrapped CLIs where dump-layout's command is just "node"); we only
216
- // need leaf.command to know the pane is running something. Bind by cwd:
217
- // each running pane's cwd should match exactly one process-tree CLI of
218
- // the (already filtered) cliId. `clis` is pre-filtered by filterCliId.
219
- const paneCwd = canonPath(leaf.cwd);
220
- const matches = clis.filter(c => c.cwd && c.cwd === paneCwd);
221
- // Refuse ambiguous (>1) or unresolved (0) — never adopt the wrong pane.
222
- if (matches.length !== 1)
223
+ // Bind each pane to its OWN process subtree. The zellij server forks one
224
+ // shell per terminal pane, so its direct children sorted by pid (= process
225
+ // creation order) align positionally with the terminals sorted by id (=
226
+ // pane creation order) — both strictly monotonic. This gives each pane its
227
+ // specific CLI pid WITHOUT a cwd match, which is essential when several
228
+ // panes/tabs run the SAME cli from the SAME dir (e.g. multiple `codex` in
229
+ // ~): a cwd match is then ambiguous and silently drops them all (the bug
230
+ // 申晗 hit). Counts must match or the alignment is unreliable refuse.
231
+ // paneShellChildren filters the transient ps/zellij-client processes that
232
+ // briefly parent to the server during discovery (see its doc) — only
233
+ // persistent pane shells/commands remain, so the count guard is stable.
234
+ const children = paneShellChildren(serverPid);
235
+ if (children.length !== terminals.length) {
236
+ logger.debug(`[zellij-adopt] ${session}: pane processes(${children.length}) != terminals(${terminals.length}) — can't align, refusing`);
237
+ continue;
238
+ }
239
+ for (let i = 0; i < terminals.length; i++) {
240
+ // findAllClisUnder collapses the node-wrapper chain to the native CLI;
241
+ // a bare shell pane yields none and is skipped.
242
+ const clis = findAllClisUnder(children[i], 4, filterCliId);
243
+ if (clis.length === 0)
223
244
  continue;
224
- const cli = matches[0];
225
- const dims = paneDimensions(session, term.paneId);
245
+ const cli = clis[0];
246
+ const dims = paneDimensions(session, terminals[i].paneId);
226
247
  if (!dims)
227
248
  continue;
228
249
  const { sessionId, startedAt } = resolveSessionId(cli.cliId, cli.pid);
229
250
  results.push({
230
251
  zellijSession: session,
231
- zellijPaneId: term.paneId,
252
+ zellijPaneId: terminals[i].paneId,
232
253
  cliPid: cli.pid,
233
254
  cliId: cli.cliId,
234
255
  sessionId,
235
- cwd: cli.cwd ?? leaf.cwd ?? '',
256
+ cwd: cli.cwd ?? '',
236
257
  startedAt,
237
258
  paneCols: dims.cols,
238
259
  paneRows: dims.rows,
@@ -1 +1 @@
1
- {"version":3,"file":"zellij-adopt-discovery.js","sourceRoot":"","sources":["../../src/core/zellij-adopt-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EACL,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,qBAAqB,GACrE,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EACL,gBAAgB,EAAE,wBAAwB,EAAE,kBAAkB,GAC/D,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAclD,iFAAiF;AACjF,SAAS,SAAS,CAAC,CAAqB;IACtC,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,CAAC;QAAC,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACtE,CAAC;AAED;sDACsD;AACtD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAEtH,2EAA2E;AAC3E,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,SAAS,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/H,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAwB,EAAE,IAAc,EAAE,WAAmB;IAC7F,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,4EAA4E;IAC5E,gEAAgE;IAChE,IAAI,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,aAAa;YAChD,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;YACpD,IAAI,EAAE,EAAE,CAAC;gBAAC,QAAQ,GAAG,EAAE,CAAC;gBAAC,MAAM;YAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,WAAW,IAAI,QAAQ,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IAC9D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,WAAmB;IACpD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;sCAMsC;AACtC,SAAS,gBAAgB,CACvB,OAAe,EACf,QAAgB,EAChB,WAAmB;IAEnB,MAAM,KAAK,GAAuD,EAAE,CAAC;IACrE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACrE,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC7C,IAAI,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACpE,KAAK,MAAM,EAAE,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;QAC/E,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,8EAA8E;IAC9E,qCAAqC;IACrC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAY,EAAW,EAAE;QACxD,IAAI,CAAC,GAAuB,IAAI,CAAC;QACjC,OAAO,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAC,IAAI,CAAC,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;QAAC,CAAC;QAC/F,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjH,CAAC;AAED,+EAA+E;AAC/E,SAAS,UAAU,CAAC,OAAe,EAAE,IAAc;IACjD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE;YACvE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE;SACxF,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,SAAS,OAAO,CAAC,MAAc;IAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,qEAAqE;AACrE,SAAS,cAAc,CAAC,OAAe,EAAE,MAAc;IACrD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE;YAC3F,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE;SACxF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,YAAY,CAAC,CAAC,EAAE,EAAE,KAAK,MAAM,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAY,EAAE,GAAW;IACjD,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACpE,CAAC;IACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAAC,WAAmB;IACjE,MAAM,OAAO,GAA6B,EAAE,CAAC;IAE7C,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,SAAS;QAEzC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ;YAAE,SAAS;QAEtC,qEAAqE;QACrE,qEAAqE;QACrE,iEAAiE;QACjE,4EAA4E;QAC5E,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;aACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;gBACvC,MAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,UAAU,MAAM,CAAC,MAAM,cAAc,SAAS,CAAC,MAAM,mCAAmC,CAAC,CAAC;YAClI,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;QAEzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;YACxB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,SAAS,CAAC,kCAAkC;YAE/D,gEAAgE;YAChE,yEAAyE;YACzE,wEAAwE;YACxE,uEAAuE;YACvE,uEAAuE;YACvE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;YAC7D,wEAAwE;YACxE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACnC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;YAExB,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC;gBACX,aAAa,EAAE,OAAO;gBACtB,YAAY,EAAE,IAAI,CAAC,MAAM;gBACzB,MAAM,EAAE,GAAG,CAAC,GAAG;gBACf,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,SAAS;gBACT,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE;gBAC9B,SAAS;gBACT,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,yBAAyB,CAAC,OAAe,EAAE,MAAc,EAAE,WAAmB;IAC5F,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,iCAAiC;IACjC,OAAO,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,SAAS,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"zellij-adopt-discovery.js","sourceRoot":"","sources":["../../src/core/zellij-adopt-discovery.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AA0BA,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAsErD,OAAO,EAAE,oBAAoB,EAA6B,MAAM,uBAAuB,CAAC;AACxF,OAAO,KAAK,EAAE,sBAAsB,EAAiB,MAAM,wBAAwB,CAAC;AAsQpF,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CA4ClB;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAGpB;AAyJD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,sBAAsB,GAAG,oBAAoB,CA0C5G;AAkpED,wBAAsB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6TlE"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AA0BA,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAwErD,OAAO,EAAE,oBAAoB,EAA6B,MAAM,uBAAuB,CAAC;AACxF,OAAO,KAAK,EAAE,sBAAsB,EAAiB,MAAM,wBAAwB,CAAC;AAiTpF,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CA4ClB;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAGpB;AAyJD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,sBAAsB,GAAG,oBAAoB,CA0C5G;AA4pED,wBAAsB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6TlE"}
package/dist/daemon.js CHANGED
@@ -27,7 +27,9 @@ import { buildTerminalUrl, setTerminalProxyPort } from './core/terminal-url.js';
27
27
  import { startTerminalProxy } from './core/terminal-proxy.js';
28
28
  import * as scheduler from './core/scheduler.js';
29
29
  import { scanMultipleProjects } from './services/project-scanner.js';
30
- import { buildQuotaExhaustedCard, buildRepoSelectCard, buildStreamingCard, getCliDisplayName } from './im/lark/card-builder.js';
30
+ import { buildPendingResponseCard, buildQuotaExhaustedCard, buildRepoSelectCard, buildStreamingCard, getCliDisplayName } from './im/lark/card-builder.js';
31
+ import { createPendingResponseQueue, markPendingResponseCardPatched, shouldTreatPendingCardAsPatchedByMarker, startPendingResponseTurn, syncPendingResponseState } from './core/pending-response.js';
32
+ import { readPendingResponsePatchMarker } from './services/pending-response-transaction-store.js';
31
33
  import { t as tr, botLocale, localeForBot } from './i18n/index.js';
32
34
  import { createCliAdapterSync } from './adapters/cli/registry.js';
33
35
  import { initWorkerPool, setActiveSessionsRegistry, forkWorker, killWorker, scheduleCardPatch, setCurrentCliVersion, CARD_POSTING_SENTINEL, parkStreamCard, closeSession as closeSessionHelper, ensureCliEnv, writableTerminalLinkFor, } from './core/worker-pool.js';
@@ -180,6 +182,56 @@ function startMemoryDiagnostics() {
180
182
  * Lark message ids start with `om_` and chat ids with `oc_`, so the two
181
183
  * address spaces never collide; the lookup just tries both.
182
184
  */
185
+ const pendingResponseQueue = createPendingResponseQueue();
186
+ function streamingCardDisabledFor(ds) {
187
+ if (ds.streamingCardForced)
188
+ return false;
189
+ try {
190
+ return getBot(ds.larkAppId).config.disableStreamingCard === true;
191
+ }
192
+ catch {
193
+ return false;
194
+ }
195
+ }
196
+ function readSessionFreshFromDisk(sessionId, larkAppId) {
197
+ const paths = [
198
+ join(config.session.dataDir, `sessions-${larkAppId}.json`),
199
+ join(config.session.dataDir, 'sessions.json'),
200
+ ];
201
+ for (const fp of paths) {
202
+ if (!existsSync(fp))
203
+ continue;
204
+ try {
205
+ const data = JSON.parse(readFileSync(fp, 'utf-8'));
206
+ if (data[sessionId])
207
+ return data[sessionId];
208
+ }
209
+ catch { /* ignore corrupt/racing session file */ }
210
+ }
211
+ return undefined;
212
+ }
213
+ async function postPendingResponseCard(ds, replyToMessageId, prompt, sender) {
214
+ if (!streamingCardDisabledFor(ds))
215
+ return;
216
+ await pendingResponseQueue.run(ds.session.sessionId, async () => {
217
+ syncPendingResponseState(ds, readSessionFreshFromDisk(ds.session.sessionId, ds.larkAppId));
218
+ const marker = readPendingResponsePatchMarker(ds.session.sessionId);
219
+ if (shouldTreatPendingCardAsPatchedByMarker(ds.pendingResponseCardId, marker)) {
220
+ markPendingResponseCardPatched(ds);
221
+ }
222
+ syncPendingResponseState(ds.session, ds);
223
+ const card = buildPendingResponseCard(localeForBot(ds.larkAppId));
224
+ try {
225
+ const messageId = await replyMessage(ds.larkAppId, replyToMessageId, card, 'interactive', false);
226
+ startPendingResponseTurn(ds, messageId);
227
+ startPendingResponseTurn(ds.session, messageId);
228
+ sessionStore.updateSession(ds.session);
229
+ }
230
+ catch (err) {
231
+ logger.warn(`[${tag(ds)}] failed to post pending response card: ${err instanceof Error ? err.message : String(err)}`);
232
+ }
233
+ });
234
+ }
183
235
  async function sessionReply(anchor, content, msgType = 'text', larkAppId) {
184
236
  let ds;
185
237
  if (larkAppId) {
@@ -1673,6 +1725,7 @@ async function handleNewTopic(data, ctx) {
1673
1725
  const selfBot = getBot(larkAppId);
1674
1726
  const prompt = buildNewTopicPrompt(promptContent, session.sessionId, botCfg.cliId, botCfg.cliPathOverride, attachments, parsed.mentions, await getAvailableBots(larkAppId, chatId), undefined, { name: selfBot.botName, openId: selfBot.botOpenId }, localeForBot(larkAppId), newTopicSender, { larkAppId, chatId });
1675
1727
  rememberLastCliInput(ds, promptContent, prompt);
1728
+ await postPendingResponseCard(ds, messageId, content, newTopicSender);
1676
1729
  forkWorker(ds, prompt);
1677
1730
  const reason = oncallEntry
1678
1731
  ? `oncall-bound chat ${chatId}`
@@ -1703,6 +1756,7 @@ async function handleNewTopic(data, ctx) {
1703
1756
  const selfBot = getBot(larkAppId);
1704
1757
  const prompt = buildNewTopicPrompt(promptContent, session.sessionId, botCfg.cliId, botCfg.cliPathOverride, attachments, parsed.mentions, await getAvailableBots(larkAppId, chatId), undefined, { name: selfBot.botName, openId: selfBot.botOpenId }, localeForBot(larkAppId), newTopicSender, { larkAppId, chatId });
1705
1758
  rememberLastCliInput(ds, promptContent, prompt);
1759
+ await postPendingResponseCard(ds, messageId, content, newTopicSender);
1706
1760
  forkWorker(ds, prompt);
1707
1761
  logger.info(`Session ${session.sessionId} ready (no projects to select), total active: ${getActiveCount()}`);
1708
1762
  }
@@ -1863,6 +1917,7 @@ async function handleBotAdded(chatId, operatorOpenId, larkAppId) {
1863
1917
  return;
1864
1918
  const prompt = await buildPrompt();
1865
1919
  rememberLastCliInput(ds, promptBody, prompt);
1920
+ await postPendingResponseCard(ds, anchor, promptBody);
1866
1921
  forkWorker(ds, prompt);
1867
1922
  logger.info(`[auto-start:入群] ${chatId.substring(0, 12)} 自动开工(${mode}/${scope}),workingDir=${pinnedWorkingDir}`);
1868
1923
  return;
@@ -1882,6 +1937,7 @@ async function handleBotAdded(chatId, operatorOpenId, larkAppId) {
1882
1937
  ds.pendingRepo = false;
1883
1938
  const prompt = await buildPrompt();
1884
1939
  rememberLastCliInput(ds, promptBody, prompt);
1940
+ await postPendingResponseCard(ds, anchor, promptBody);
1885
1941
  forkWorker(ds, prompt);
1886
1942
  logger.info(`[auto-start:入群] ${chatId.substring(0, 12)} 无默认目录且无可选项目,直接开工`);
1887
1943
  }
@@ -2133,6 +2189,8 @@ async function handleThreadReply(data, ctx) {
2133
2189
  // reply cards to whoever triggered this turn — matters in oncall groups
2134
2190
  // where the caller is often not the session owner).
2135
2191
  if (ds) {
2192
+ syncPendingResponseState(ds, readSessionFreshFromDisk(ds.session.sessionId, ds.larkAppId));
2193
+ syncPendingResponseState(ds.session, ds);
2136
2194
  markSessionActivity(ds);
2137
2195
  const callerOpenId = parsed.senderId || data?.sender?.sender_id?.open_id;
2138
2196
  // quoteTargetId changes every inbound message (always a new message_id), so
@@ -2285,6 +2343,7 @@ async function handleThreadReply(data, ctx) {
2285
2343
  const selfBot = getBot(larkAppId);
2286
2344
  const prompt = buildNewTopicPrompt(promptContent, session.sessionId, botCfg.cliId, botCfg.cliPathOverride, attachments, parsed.mentions, await getAvailableBots(larkAppId, autoCreateChatId), undefined, { name: selfBot.botName, openId: selfBot.botOpenId }, localeForBot(larkAppId), autoCreateSender, { larkAppId, chatId: autoCreateChatId });
2287
2345
  rememberLastCliInput(newDs, promptContent, prompt);
2346
+ await postPendingResponseCard(newDs, parsed.messageId, parsed.content, autoCreateSender);
2288
2347
  forkWorker(newDs, prompt);
2289
2348
  const reason = oncallEntry
2290
2349
  ? `oncall-bound chat ${autoCreateChatId}`
@@ -2315,6 +2374,7 @@ async function handleThreadReply(data, ctx) {
2315
2374
  const selfBot = getBot(larkAppId);
2316
2375
  const prompt = buildNewTopicPrompt(promptContent, session.sessionId, botCfg.cliId, botCfg.cliPathOverride, attachments, parsed.mentions, await getAvailableBots(larkAppId, autoCreateChatId), undefined, { name: selfBot.botName, openId: selfBot.botOpenId }, localeForBot(larkAppId), autoCreateSender, { larkAppId, chatId: autoCreateChatId });
2317
2376
  rememberLastCliInput(newDs, promptContent, prompt);
2377
+ await postPendingResponseCard(newDs, parsed.messageId, parsed.content, autoCreateSender);
2318
2378
  forkWorker(newDs, prompt);
2319
2379
  }
2320
2380
  return;
@@ -2350,6 +2410,7 @@ async function handleThreadReply(data, ctx) {
2350
2410
  });
2351
2411
  beginNewTurn(ds, parsed.content);
2352
2412
  rememberLastCliInput(ds, promptContent, msgContent);
2413
+ await postPendingResponseCard(ds, parsed.messageId, parsed.content, await getThreadSender());
2353
2414
  ds.worker.send({ type: 'message', content: msgContent });
2354
2415
  }
2355
2416
  else {
@@ -2398,6 +2459,7 @@ async function handleThreadReply(data, ctx) {
2398
2459
  sender: await getThreadSender(),
2399
2460
  });
2400
2461
  rememberLastCliInput(ds, promptContent, wrappedPrompt);
2462
+ await postPendingResponseCard(ds, parsed.messageId, parsed.content, await getThreadSender());
2401
2463
  forkWorker(ds, wrappedPrompt, ds.hasHistory);
2402
2464
  }
2403
2465
  }