botmux 2.9.1 → 2.9.2

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 (330) hide show
  1. package/README.en.md +140 -76
  2. package/README.md +134 -75
  3. package/dist/adapters/backend/pty-backend.d.ts +6 -0
  4. package/dist/adapters/backend/pty-backend.d.ts.map +1 -1
  5. package/dist/adapters/backend/pty-backend.js +10 -0
  6. package/dist/adapters/backend/pty-backend.js.map +1 -1
  7. package/dist/adapters/backend/session-backend-selector.d.ts +11 -0
  8. package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -0
  9. package/dist/adapters/backend/session-backend-selector.js +26 -0
  10. package/dist/adapters/backend/session-backend-selector.js.map +1 -0
  11. package/dist/adapters/backend/tmux-backend.d.ts +80 -3
  12. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  13. package/dist/adapters/backend/tmux-backend.js +301 -49
  14. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  15. package/dist/adapters/backend/tmux-pipe-backend.d.ts +100 -0
  16. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -0
  17. package/dist/adapters/backend/tmux-pipe-backend.js +473 -0
  18. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -0
  19. package/dist/adapters/cli/aiden.d.ts.map +1 -1
  20. package/dist/adapters/cli/aiden.js +5 -0
  21. package/dist/adapters/cli/aiden.js.map +1 -1
  22. package/dist/adapters/cli/claude-code.d.ts +40 -1
  23. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  24. package/dist/adapters/cli/claude-code.js +470 -49
  25. package/dist/adapters/cli/claude-code.js.map +1 -1
  26. package/dist/adapters/cli/coco.d.ts.map +1 -1
  27. package/dist/adapters/cli/coco.js +191 -9
  28. package/dist/adapters/cli/coco.js.map +1 -1
  29. package/dist/adapters/cli/codex.d.ts.map +1 -1
  30. package/dist/adapters/cli/codex.js +94 -17
  31. package/dist/adapters/cli/codex.js.map +1 -1
  32. package/dist/adapters/cli/shared-hints.d.ts +2 -2
  33. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  34. package/dist/adapters/cli/shared-hints.js +7 -5
  35. package/dist/adapters/cli/shared-hints.js.map +1 -1
  36. package/dist/adapters/cli/types.d.ts +38 -1
  37. package/dist/adapters/cli/types.d.ts.map +1 -1
  38. package/dist/autostart.d.ts +14 -0
  39. package/dist/autostart.d.ts.map +1 -0
  40. package/dist/autostart.js +357 -0
  41. package/dist/autostart.js.map +1 -0
  42. package/dist/bot-registry.d.ts +29 -3
  43. package/dist/bot-registry.d.ts.map +1 -1
  44. package/dist/bot-registry.js +91 -12
  45. package/dist/bot-registry.js.map +1 -1
  46. package/dist/cli/arg-utils.d.ts +11 -0
  47. package/dist/cli/arg-utils.d.ts.map +1 -0
  48. package/dist/cli/arg-utils.js +25 -0
  49. package/dist/cli/arg-utils.js.map +1 -0
  50. package/dist/cli/create-group-resolver.d.ts +32 -0
  51. package/dist/cli/create-group-resolver.d.ts.map +1 -0
  52. package/dist/cli/create-group-resolver.js +70 -0
  53. package/dist/cli/create-group-resolver.js.map +1 -0
  54. package/dist/cli/quoted-render.d.ts +30 -0
  55. package/dist/cli/quoted-render.d.ts.map +1 -0
  56. package/dist/cli/quoted-render.js +29 -0
  57. package/dist/cli/quoted-render.js.map +1 -0
  58. package/dist/cli.js +916 -272
  59. package/dist/cli.js.map +1 -1
  60. package/dist/config.d.ts +6 -0
  61. package/dist/config.d.ts.map +1 -1
  62. package/dist/config.js +18 -8
  63. package/dist/config.js.map +1 -1
  64. package/dist/core/command-handler.d.ts +43 -0
  65. package/dist/core/command-handler.d.ts.map +1 -1
  66. package/dist/core/command-handler.js +167 -64
  67. package/dist/core/command-handler.js.map +1 -1
  68. package/dist/core/dashboard-events.d.ts +57 -0
  69. package/dist/core/dashboard-events.d.ts.map +1 -0
  70. package/dist/core/dashboard-events.js +23 -0
  71. package/dist/core/dashboard-events.js.map +1 -0
  72. package/dist/core/dashboard-ipc-server.d.ts +43 -0
  73. package/dist/core/dashboard-ipc-server.d.ts.map +1 -0
  74. package/dist/core/dashboard-ipc-server.js +481 -0
  75. package/dist/core/dashboard-ipc-server.js.map +1 -0
  76. package/dist/core/dashboard-locate.d.ts +20 -0
  77. package/dist/core/dashboard-locate.d.ts.map +1 -0
  78. package/dist/core/dashboard-locate.js +26 -0
  79. package/dist/core/dashboard-locate.js.map +1 -0
  80. package/dist/core/dashboard-rows.d.ts +31 -0
  81. package/dist/core/dashboard-rows.d.ts.map +1 -0
  82. package/dist/core/dashboard-rows.js +65 -0
  83. package/dist/core/dashboard-rows.js.map +1 -0
  84. package/dist/core/inherit-peer.d.ts +14 -0
  85. package/dist/core/inherit-peer.d.ts.map +1 -0
  86. package/dist/core/inherit-peer.js +32 -0
  87. package/dist/core/inherit-peer.js.map +1 -0
  88. package/dist/core/scheduler.d.ts +24 -0
  89. package/dist/core/scheduler.d.ts.map +1 -1
  90. package/dist/core/scheduler.js +93 -2
  91. package/dist/core/scheduler.js.map +1 -1
  92. package/dist/core/session-activity.d.ts +3 -0
  93. package/dist/core/session-activity.d.ts.map +1 -0
  94. package/dist/core/session-activity.js +20 -0
  95. package/dist/core/session-activity.js.map +1 -0
  96. package/dist/core/session-discovery.d.ts +39 -0
  97. package/dist/core/session-discovery.d.ts.map +1 -1
  98. package/dist/core/session-discovery.js +114 -21
  99. package/dist/core/session-discovery.js.map +1 -1
  100. package/dist/core/session-manager.d.ts +72 -0
  101. package/dist/core/session-manager.d.ts.map +1 -1
  102. package/dist/core/session-manager.js +396 -106
  103. package/dist/core/session-manager.js.map +1 -1
  104. package/dist/core/types.d.ts +27 -2
  105. package/dist/core/types.d.ts.map +1 -1
  106. package/dist/core/types.js +14 -3
  107. package/dist/core/types.js.map +1 -1
  108. package/dist/core/worker-pool.d.ts +72 -3
  109. package/dist/core/worker-pool.d.ts.map +1 -1
  110. package/dist/core/worker-pool.js +459 -38
  111. package/dist/core/worker-pool.js.map +1 -1
  112. package/dist/daemon.d.ts.map +1 -1
  113. package/dist/daemon.js +601 -309
  114. package/dist/daemon.js.map +1 -1
  115. package/dist/dashboard/aggregator.d.ts +41 -0
  116. package/dist/dashboard/aggregator.d.ts.map +1 -0
  117. package/dist/dashboard/aggregator.js +125 -0
  118. package/dist/dashboard/aggregator.js.map +1 -0
  119. package/dist/dashboard/auth.d.ts +23 -0
  120. package/dist/dashboard/auth.d.ts.map +1 -0
  121. package/dist/dashboard/auth.js +66 -0
  122. package/dist/dashboard/auth.js.map +1 -0
  123. package/dist/dashboard/operator-selector.d.ts +20 -0
  124. package/dist/dashboard/operator-selector.d.ts.map +1 -0
  125. package/dist/dashboard/operator-selector.js +39 -0
  126. package/dist/dashboard/operator-selector.js.map +1 -0
  127. package/dist/dashboard/registry.d.ts +35 -0
  128. package/dist/dashboard/registry.d.ts.map +1 -0
  129. package/dist/dashboard/registry.js +74 -0
  130. package/dist/dashboard/registry.js.map +1 -0
  131. package/dist/dashboard/web/app.d.ts +2 -0
  132. package/dist/dashboard/web/app.d.ts.map +1 -0
  133. package/dist/dashboard/web/app.js +45 -0
  134. package/dist/dashboard/web/app.js.map +1 -0
  135. package/dist/dashboard/web/bot-defaults.d.ts +2 -0
  136. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -0
  137. package/dist/dashboard/web/bot-defaults.js +201 -0
  138. package/dist/dashboard/web/bot-defaults.js.map +1 -0
  139. package/dist/dashboard/web/groups.d.ts +16 -0
  140. package/dist/dashboard/web/groups.d.ts.map +1 -0
  141. package/dist/dashboard/web/groups.js +584 -0
  142. package/dist/dashboard/web/groups.js.map +1 -0
  143. package/dist/dashboard/web/schedules.d.ts +2 -0
  144. package/dist/dashboard/web/schedules.d.ts.map +1 -0
  145. package/dist/dashboard/web/schedules.js +105 -0
  146. package/dist/dashboard/web/schedules.js.map +1 -0
  147. package/dist/dashboard/web/sessions.d.ts +2 -0
  148. package/dist/dashboard/web/sessions.d.ts.map +1 -0
  149. package/dist/dashboard/web/sessions.js +374 -0
  150. package/dist/dashboard/web/sessions.js.map +1 -0
  151. package/dist/dashboard/web/store.d.ts +23 -0
  152. package/dist/dashboard/web/store.d.ts.map +1 -0
  153. package/dist/dashboard/web/store.js +82 -0
  154. package/dist/dashboard/web/store.js.map +1 -0
  155. package/dist/dashboard-web/app.js +263 -0
  156. package/dist/dashboard-web/index.html +23 -0
  157. package/dist/dashboard-web/style.css +93 -0
  158. package/dist/dashboard.d.ts +2 -0
  159. package/dist/dashboard.d.ts.map +1 -0
  160. package/dist/dashboard.js +639 -0
  161. package/dist/dashboard.js.map +1 -0
  162. package/dist/im/lark/card-builder.d.ts +18 -1
  163. package/dist/im/lark/card-builder.d.ts.map +1 -1
  164. package/dist/im/lark/card-builder.js +70 -9
  165. package/dist/im/lark/card-builder.js.map +1 -1
  166. package/dist/im/lark/card-handler.d.ts.map +1 -1
  167. package/dist/im/lark/card-handler.js +123 -109
  168. package/dist/im/lark/card-handler.js.map +1 -1
  169. package/dist/im/lark/client.d.ts +35 -0
  170. package/dist/im/lark/client.d.ts.map +1 -1
  171. package/dist/im/lark/client.js +114 -11
  172. package/dist/im/lark/client.js.map +1 -1
  173. package/dist/im/lark/event-dispatcher.d.ts +88 -6
  174. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  175. package/dist/im/lark/event-dispatcher.js +398 -62
  176. package/dist/im/lark/event-dispatcher.js.map +1 -1
  177. package/dist/im/lark/forwarded-renderer.d.ts +23 -0
  178. package/dist/im/lark/forwarded-renderer.d.ts.map +1 -0
  179. package/dist/im/lark/forwarded-renderer.js +105 -0
  180. package/dist/im/lark/forwarded-renderer.js.map +1 -0
  181. package/dist/im/lark/md-card.d.ts +73 -0
  182. package/dist/im/lark/md-card.d.ts.map +1 -0
  183. package/dist/im/lark/md-card.js +332 -0
  184. package/dist/im/lark/md-card.js.map +1 -0
  185. package/dist/im/lark/merge-forward.d.ts +32 -0
  186. package/dist/im/lark/merge-forward.d.ts.map +1 -0
  187. package/dist/im/lark/merge-forward.js +110 -0
  188. package/dist/im/lark/merge-forward.js.map +1 -0
  189. package/dist/im/lark/message-parser.d.ts +9 -3
  190. package/dist/im/lark/message-parser.d.ts.map +1 -1
  191. package/dist/im/lark/message-parser.js +48 -13
  192. package/dist/im/lark/message-parser.js.map +1 -1
  193. package/dist/im/lark/quote-hint.d.ts +18 -0
  194. package/dist/im/lark/quote-hint.d.ts.map +1 -0
  195. package/dist/im/lark/quote-hint.js +23 -0
  196. package/dist/im/lark/quote-hint.js.map +1 -0
  197. package/dist/services/bridge-fallback-gate.d.ts +42 -0
  198. package/dist/services/bridge-fallback-gate.d.ts.map +1 -0
  199. package/dist/services/bridge-fallback-gate.js +12 -0
  200. package/dist/services/bridge-fallback-gate.js.map +1 -0
  201. package/dist/services/bridge-rotation-policy.d.ts +139 -0
  202. package/dist/services/bridge-rotation-policy.d.ts.map +1 -0
  203. package/dist/services/bridge-rotation-policy.js +125 -0
  204. package/dist/services/bridge-rotation-policy.js.map +1 -0
  205. package/dist/services/bridge-turn-queue.d.ts +154 -0
  206. package/dist/services/bridge-turn-queue.d.ts.map +1 -0
  207. package/dist/services/bridge-turn-queue.js +316 -0
  208. package/dist/services/bridge-turn-queue.js.map +1 -0
  209. package/dist/services/chat-first-seen-store.d.ts +27 -0
  210. package/dist/services/chat-first-seen-store.d.ts.map +1 -0
  211. package/dist/services/chat-first-seen-store.js +114 -0
  212. package/dist/services/chat-first-seen-store.js.map +1 -0
  213. package/dist/services/claude-transcript.d.ts +268 -0
  214. package/dist/services/claude-transcript.d.ts.map +1 -0
  215. package/dist/services/claude-transcript.js +798 -0
  216. package/dist/services/claude-transcript.js.map +1 -0
  217. package/dist/services/coco-transcript.d.ts +35 -0
  218. package/dist/services/coco-transcript.d.ts.map +1 -0
  219. package/dist/services/coco-transcript.js +192 -0
  220. package/dist/services/coco-transcript.js.map +1 -0
  221. package/dist/services/codex-bridge-queue.d.ts +56 -0
  222. package/dist/services/codex-bridge-queue.d.ts.map +1 -0
  223. package/dist/services/codex-bridge-queue.js +150 -0
  224. package/dist/services/codex-bridge-queue.js.map +1 -0
  225. package/dist/services/codex-transcript.d.ts +84 -0
  226. package/dist/services/codex-transcript.d.ts.map +1 -0
  227. package/dist/services/codex-transcript.js +298 -0
  228. package/dist/services/codex-transcript.js.map +1 -0
  229. package/dist/services/group-creator.d.ts +23 -0
  230. package/dist/services/group-creator.d.ts.map +1 -0
  231. package/dist/services/group-creator.js +75 -0
  232. package/dist/services/group-creator.js.map +1 -0
  233. package/dist/services/groups-store.d.ts +98 -0
  234. package/dist/services/groups-store.d.ts.map +1 -0
  235. package/dist/services/groups-store.js +213 -0
  236. package/dist/services/groups-store.js.map +1 -0
  237. package/dist/services/oncall-store.d.ts +80 -8
  238. package/dist/services/oncall-store.d.ts.map +1 -1
  239. package/dist/services/oncall-store.js +265 -55
  240. package/dist/services/oncall-store.js.map +1 -1
  241. package/dist/services/project-scanner.d.ts +1 -2
  242. package/dist/services/project-scanner.d.ts.map +1 -1
  243. package/dist/services/project-scanner.js +118 -68
  244. package/dist/services/project-scanner.js.map +1 -1
  245. package/dist/services/schedule-store.d.ts +5 -0
  246. package/dist/services/schedule-store.d.ts.map +1 -1
  247. package/dist/services/schedule-store.js +77 -1
  248. package/dist/services/schedule-store.js.map +1 -1
  249. package/dist/services/session-store.d.ts +22 -0
  250. package/dist/services/session-store.d.ts.map +1 -1
  251. package/dist/services/session-store.js +62 -4
  252. package/dist/services/session-store.js.map +1 -1
  253. package/dist/setup/bots-store.d.ts +3 -0
  254. package/dist/setup/bots-store.d.ts.map +1 -0
  255. package/dist/setup/bots-store.js +24 -0
  256. package/dist/setup/bots-store.js.map +1 -0
  257. package/dist/setup/detect-platform.d.ts +14 -0
  258. package/dist/setup/detect-platform.d.ts.map +1 -0
  259. package/dist/setup/detect-platform.js +139 -0
  260. package/dist/setup/detect-platform.js.map +1 -0
  261. package/dist/setup/ensure-fonts.d.ts +13 -0
  262. package/dist/setup/ensure-fonts.d.ts.map +1 -0
  263. package/dist/setup/ensure-fonts.js +225 -0
  264. package/dist/setup/ensure-fonts.js.map +1 -0
  265. package/dist/setup/ensure-tmux.d.ts +60 -0
  266. package/dist/setup/ensure-tmux.d.ts.map +1 -0
  267. package/dist/setup/ensure-tmux.js +236 -0
  268. package/dist/setup/ensure-tmux.js.map +1 -0
  269. package/dist/setup/index.d.ts +9 -0
  270. package/dist/setup/index.d.ts.map +1 -0
  271. package/dist/setup/index.js +46 -0
  272. package/dist/setup/index.js.map +1 -0
  273. package/dist/setup/lark-scopes.json +301 -0
  274. package/dist/setup/register-app.d.ts +52 -0
  275. package/dist/setup/register-app.d.ts.map +1 -0
  276. package/dist/setup/register-app.js +91 -0
  277. package/dist/setup/register-app.js.map +1 -0
  278. package/dist/setup/verify-permissions.d.ts +115 -0
  279. package/dist/setup/verify-permissions.d.ts.map +1 -0
  280. package/dist/setup/verify-permissions.js +207 -0
  281. package/dist/setup/verify-permissions.js.map +1 -0
  282. package/dist/skills/definitions.d.ts +4 -0
  283. package/dist/skills/definitions.d.ts.map +1 -1
  284. package/dist/skills/definitions.js +133 -19
  285. package/dist/skills/definitions.js.map +1 -1
  286. package/dist/skills/installer.d.ts +3 -1
  287. package/dist/skills/installer.d.ts.map +1 -1
  288. package/dist/skills/installer.js +18 -3
  289. package/dist/skills/installer.js.map +1 -1
  290. package/dist/types.d.ts +44 -0
  291. package/dist/types.d.ts.map +1 -1
  292. package/dist/utils/bot-routing.d.ts +6 -0
  293. package/dist/utils/bot-routing.d.ts.map +1 -0
  294. package/dist/utils/bot-routing.js +50 -0
  295. package/dist/utils/bot-routing.js.map +1 -0
  296. package/dist/utils/file-lock.d.ts +2 -0
  297. package/dist/utils/file-lock.d.ts.map +1 -0
  298. package/dist/utils/file-lock.js +114 -0
  299. package/dist/utils/file-lock.js.map +1 -0
  300. package/dist/utils/font-installer.js +1 -1
  301. package/dist/utils/font-installer.js.map +1 -1
  302. package/dist/utils/idle-detector.d.ts +6 -0
  303. package/dist/utils/idle-detector.d.ts.map +1 -1
  304. package/dist/utils/idle-detector.js +25 -4
  305. package/dist/utils/idle-detector.js.map +1 -1
  306. package/dist/utils/logger.d.ts +10 -0
  307. package/dist/utils/logger.d.ts.map +1 -1
  308. package/dist/utils/logger.js +60 -8
  309. package/dist/utils/logger.js.map +1 -1
  310. package/dist/utils/render-dimensions.d.ts +48 -0
  311. package/dist/utils/render-dimensions.d.ts.map +1 -0
  312. package/dist/utils/render-dimensions.js +55 -0
  313. package/dist/utils/render-dimensions.js.map +1 -0
  314. package/dist/utils/screen-analyzer.d.ts.map +1 -1
  315. package/dist/utils/screen-analyzer.js +24 -0
  316. package/dist/utils/screen-analyzer.js.map +1 -1
  317. package/dist/utils/screenshot-renderer.d.ts.map +1 -1
  318. package/dist/utils/screenshot-renderer.js +67 -23
  319. package/dist/utils/screenshot-renderer.js.map +1 -1
  320. package/dist/utils/terminal-renderer.d.ts +16 -0
  321. package/dist/utils/terminal-renderer.d.ts.map +1 -1
  322. package/dist/utils/terminal-renderer.js +40 -23
  323. package/dist/utils/terminal-renderer.js.map +1 -1
  324. package/dist/utils/transient-snapshot.d.ts +28 -0
  325. package/dist/utils/transient-snapshot.d.ts.map +1 -0
  326. package/dist/utils/transient-snapshot.js +96 -0
  327. package/dist/utils/transient-snapshot.js.map +1 -0
  328. package/dist/worker.js +2220 -83
  329. package/dist/worker.js.map +1 -1
  330. package/package.json +12 -5
@@ -1,20 +1,15 @@
1
- /**
2
- * Lark card action handler — processes button clicks and dropdown selections
3
- * from Feishu interactive cards.
4
- * Extracted from daemon.ts for modularity.
5
- */
6
- import { execSync } from 'node:child_process';
7
1
  import { config } from '../../config.js';
8
2
  import { getBot, getAllBots } from '../../bot-registry.js';
9
3
  import { canOperate } from './event-dispatcher.js';
10
4
  import { sendUserMessage, updateMessage, deleteMessage } from './client.js';
11
- import { buildSessionCard, buildStreamingCard, buildTuiPromptCard, buildTuiPromptProcessingCard, buildTuiPromptResolvedCard, getCliDisplayName, truncateContent } from './card-builder.js';
5
+ import { buildSessionCard, buildStreamingCard, buildTuiPromptCard, buildTuiPromptProcessingCard, buildTuiPromptResolvedCard, buildSessionClosedCard, getCliDisplayName, truncateContent } from './card-builder.js';
6
+ import { createCliAdapterSync } from '../../adapters/cli/registry.js';
12
7
  import { logger } from '../../utils/logger.js';
13
8
  import * as sessionStore from '../../services/session-store.js';
14
9
  import { loadFrozenCards, saveFrozenCards } from '../../services/frozen-card-store.js';
15
- import { forkWorker, killWorker, scheduleCardPatch } from '../../core/worker-pool.js';
16
- import { getSessionWorkingDir, buildNewTopicPrompt, getAvailableBots, persistStreamCardState } from '../../core/session-manager.js';
17
- import { sessionKey, frozenDisplayMode } from '../../core/types.js';
10
+ import { forkWorker, killWorker, scheduleCardPatch, parkStreamCard } from '../../core/worker-pool.js';
11
+ import { getSessionWorkingDir, buildNewTopicPrompt, getAvailableBots, persistStreamCardState, resumeSession } from '../../core/session-manager.js';
12
+ import { sessionKey, sessionAnchorId, frozenDisplayMode } from '../../core/types.js';
18
13
  // ─── Helpers ──────────────────────────────────────────────────────────────
19
14
  function tag(ds) {
20
15
  return ds.session.sessionId.substring(0, 8);
@@ -26,23 +21,35 @@ export async function handleCardAction(data, deps, larkAppId) {
26
21
  const action = data?.action;
27
22
  const value = action?.value;
28
23
  const cardMessageId = data?.context?.open_message_id ?? data?.open_message_id;
24
+ if (logger.isDebug()) {
25
+ logger.debug(`[card] app=${larkAppId ?? '?'} op=${data?.operator?.open_id ?? '?'} ` +
26
+ `action=${value?.action ?? action?.option ?? '?'} root=${value?.root_id ?? '?'}`);
27
+ }
29
28
  // Check ALLOWED_USERS for sensitive actions.
30
29
  // Use the receiving bot's allowedUsers — the operator open_id in card actions
31
30
  // is scoped to the app that received the callback.
32
31
  const operatorOpenId = data?.operator?.open_id;
33
- const isSensitive = value?.action && ['restart', 'close', 'skip_repo', 'get_write_link', 'toggle_stream', 'toggle_display', 'export_text', 'term_action', 'refresh_screenshot', 'takeover', 'disconnect', 'tui_keys', 'tui_text_input'].includes(value.action);
32
+ const isSensitive = value?.action && ['restart', 'close', 'resume', 'skip_repo', 'get_write_link', 'toggle_stream', 'toggle_display', 'export_text', 'term_action', 'refresh_screenshot', 'takeover', 'disconnect', 'tui_keys', 'tui_text_input'].includes(value.action);
34
33
  if (isSensitive) {
35
34
  const rootId = value?.root_id;
36
- // activeSessions here is keyed by sessionKey(rootId, larkAppId); try both
37
- // the per-bot key and the raw rootId (legacy single-bot shape) so ds
38
- // lookup works for both code paths.
35
+ // activeSessions is keyed by sessionKey(anchor, larkAppId) `${anchor}::${larkAppId}`
36
+ // (double colon). Earlier this was hand-spliced with a single colon and
37
+ // always missed, falling through to the bare-rootId legacy lookup; that
38
+ // worked for permission gating only because chatId came from elsewhere
39
+ // most of the time. Use sessionKey() so the bot-scoped lookup actually
40
+ // hits, and keep the bare-rootId fallback for legacy single-bot cards.
39
41
  const ds = rootId
40
42
  ? (larkAppId
41
- ? activeSessions.get(`${rootId}:${larkAppId}`) ?? activeSessions.get(rootId)
43
+ ? activeSessions.get(sessionKey(rootId, larkAppId)) ?? activeSessions.get(rootId)
42
44
  : activeSessions.get(rootId))
43
45
  : undefined;
44
- const effectiveAppId = larkAppId ?? ds?.larkAppId;
45
- const chatId = ds?.chatId;
46
+ // Resume targets a closed session — fall back to the persistent store so
47
+ // we can still pin chatId/larkAppId for the canOperate gate.
48
+ const closedForCtx = !ds && value?.action === 'resume' && value?.session_id
49
+ ? sessionStore.getSession(value.session_id)
50
+ : undefined;
51
+ const effectiveAppId = larkAppId ?? ds?.larkAppId ?? closedForCtx?.larkAppId;
52
+ const chatId = ds?.chatId ?? closedForCtx?.chatId;
46
53
  if (effectiveAppId) {
47
54
  if (!canOperate(effectiveAppId, chatId, operatorOpenId)) {
48
55
  logger.info(`Card action "${value.action}" blocked for non-operator user: ${operatorOpenId} (chat=${chatId})`);
@@ -66,6 +73,16 @@ export async function handleCardAction(data, deps, larkAppId) {
66
73
  const sKey = larkAppId ? sessionKey(rootId, larkAppId) : rootId;
67
74
  const ds = activeSessions.get(sKey);
68
75
  if (actionType === 'restart' && ds) {
76
+ // Adopt sessions: hard-reject. botmux never owned the user's CLI;
77
+ // restarting would mean killing their tmux pane / Claude process,
78
+ // which violates the bridge invariant. Defense in depth — buildSessionCard
79
+ // already omits the restart button when adoptMode=true, but a stale
80
+ // pre-fix card or a malformed action payload could still arrive.
81
+ if (ds.adoptedFrom) {
82
+ logger.warn(`[${tag(ds)}] Rejected restart on adopt session — would kill user's pane`);
83
+ await sessionReply(rootId, '⚠️ adopt 模式不支持重启(不会触动你自己的 tmux pane / CLI 进程)');
84
+ return;
85
+ }
69
86
  const botCfg = getBot(ds.larkAppId).config;
70
87
  if (ds.worker) {
71
88
  // Worker alive — tell it to restart CLI
@@ -84,12 +101,58 @@ export async function handleCardAction(data, deps, larkAppId) {
84
101
  }
85
102
  }
86
103
  if (actionType === 'close' && ds) {
104
+ const closedSessionId = ds.session.sessionId;
105
+ const closedTitle = ds.session.title;
106
+ const botCfg = getBot(ds.larkAppId).config;
107
+ const closedCliId = ds.session.cliId ?? botCfg.cliId;
108
+ const closedAnchor = sessionAnchorId(ds);
109
+ const closedWorkingDir = ds.session.workingDir;
110
+ const cliResumeCommand = (() => {
111
+ try {
112
+ const adapter = createCliAdapterSync(closedCliId, botCfg.cliPathOverride);
113
+ return adapter.buildResumeCommand?.({
114
+ sessionId: closedSessionId,
115
+ cliSessionId: ds.session.cliSessionId,
116
+ }) ?? null;
117
+ }
118
+ catch {
119
+ return null;
120
+ }
121
+ })();
87
122
  killWorker(ds);
88
- sessionStore.closeSession(ds.session.sessionId);
123
+ sessionStore.closeSession(closedSessionId);
89
124
  activeSessions.delete(sKey);
90
- await sessionReply(rootId, '✅ 会话已关闭');
125
+ const card = buildSessionClosedCard(closedSessionId, closedAnchor, closedTitle, closedCliId, closedWorkingDir, cliResumeCommand);
126
+ await sessionReply(rootId, card, 'interactive');
91
127
  logger.info(`[${tag(ds)}] Closed via card button`);
92
128
  }
129
+ if (actionType === 'resume') {
130
+ const targetSessionId = value?.session_id;
131
+ if (!targetSessionId) {
132
+ await sessionReply(rootId, '⚠️ 缺少 session_id,无法恢复。');
133
+ }
134
+ else {
135
+ const result = resumeSession(targetSessionId, activeSessions);
136
+ if (result.ok) {
137
+ const cliName = getCliDisplayName(result.ds.session.cliId ?? getBot(result.ds.larkAppId).config.cliId);
138
+ await sessionReply(rootId, `✅ 会话已恢复,发条消息继续与 ${cliName} 对话。`);
139
+ logger.info(`[${targetSessionId.substring(0, 8)}] Resumed via card button`);
140
+ }
141
+ else if (result.error === 'not_found') {
142
+ await sessionReply(rootId, `⚠️ 找不到会话 ${targetSessionId.substring(0, 8)},可能已被清理。`);
143
+ }
144
+ else if (result.error === 'not_closed') {
145
+ await sessionReply(rootId, '会话已是活跃状态,无需恢复。');
146
+ }
147
+ else if (result.error === 'anchor_occupied') {
148
+ const occ = result.activeSessionId ? `(占用者:${result.activeSessionId.substring(0, 8)})` : '';
149
+ await sessionReply(rootId, `⚠️ 当前话题已有新会话${occ},无法恢复旧会话。`);
150
+ }
151
+ else if (result.error === 'adopt_unsupported') {
152
+ await sessionReply(rootId, '⚠️ adopt 接管会话不支持 resume。');
153
+ }
154
+ }
155
+ }
93
156
  if (actionType === 'disconnect' && ds) {
94
157
  killWorker(ds);
95
158
  sessionStore.closeSession(ds.session.sessionId);
@@ -98,88 +161,16 @@ export async function handleCardAction(data, deps, larkAppId) {
98
161
  logger.info(`[${tag(ds)}] Disconnected (adopt) via card button`);
99
162
  }
100
163
  if (actionType === 'takeover' && ds && ds.adoptedFrom) {
101
- const adopted = ds.adoptedFrom;
102
- if (!adopted.sessionId) {
103
- await sessionReply(rootId, '⚠️ 无法接管:未找到 CLI session ID');
104
- return;
105
- }
106
- // Kill adopt worker (detaches from user's pane)
107
- killWorker(ds);
108
- // Capture adopt info before clearing state
109
- const origPid = adopted.originalCliPid;
110
- const paneTarget = adopted.tmuxTarget;
111
- const resumeSessionId = adopted.sessionId;
112
- const origCliId = adopted.cliId ?? 'claude-code';
113
- // Clear adopt state, set up for standard botmux session
114
- const originalSessionId = adopted.sessionId;
115
- const originalCwd = adopted.cwd;
116
- ds.adoptedFrom = undefined;
117
- ds.session.adoptedFrom = undefined;
118
- ds.workingDir = originalCwd;
119
- ds.session.workingDir = originalCwd;
120
- ds.hasHistory = true;
121
- // Replace session ID with original CLI session ID for --resume.
122
- // closeSession mutates the session object in-place (shared reference),
123
- // so we must re-activate afterwards to prevent the new session from
124
- // being saved as 'closed'.
125
- sessionStore.closeSession(ds.session.sessionId);
126
- ds.session.sessionId = originalSessionId;
127
- ds.session.status = 'active';
128
- ds.session.closedAt = undefined;
129
- // Clear old port so the new worker gets a fresh one (old worker may still hold it)
130
- ds.session.webPort = undefined;
131
- // Clear streaming card state so the new worker creates a fresh card
132
- ds.streamCardId = undefined;
133
- ds.streamCardNonce = undefined;
134
- ds.streamCardPending = undefined;
135
- ds.lastScreenContent = undefined;
136
- ds.lastScreenStatus = undefined;
137
- ds.session.streamCardId = undefined;
138
- ds.session.streamCardNonce = undefined;
139
- ds.session.displayMode = undefined;
140
- ds.session.currentImageKey = undefined;
141
- ds.session.streamExpanded = undefined;
142
- ds.session.currentTurnTitle = undefined;
143
- ds.displayMode = undefined;
144
- ds.currentImageKey = undefined;
145
- sessionStore.updateSession(ds.session);
146
- // Fork standard Botmux worker with resume — BEFORE killing original CLI,
147
- // so the new worker reads the session file while it's still intact.
148
- forkWorker(ds, '', true);
149
- // Kill original CLI and echo notice AFTER forkWorker, with a delay to let
150
- // the new worker read the session file first. Use SIGKILL to prevent the
151
- // original CLI's shutdown handler from modifying the session file.
152
- const resumeCmd = {
153
- 'claude-code': `claude --resume ${resumeSessionId}`,
154
- 'aiden': `aiden --resume ${resumeSessionId}`,
155
- 'coco': `coco --resume ${resumeSessionId}`,
156
- };
157
- const resumeHint = resumeCmd[origCliId] ?? `<cli> --resume ${resumeSessionId}`;
158
- setTimeout(() => {
159
- if (origPid) {
160
- try {
161
- process.kill(origPid, 'SIGKILL');
162
- }
163
- catch { /* already dead */ }
164
- }
165
- try {
166
- const esc = (s) => `'${s.replace(/'/g, "'\\''")}'`;
167
- execSync(`tmux send-keys -t ${esc(paneTarget)} C-c`, { stdio: 'ignore', timeout: 2000 });
168
- const notice = [
169
- `printf '\\n\\033[1;33m⚠️ 此会话已被 botmux 接管\\033[0m\\n`,
170
- `session: ${resumeSessionId}\\n`,
171
- `\\n`,
172
- `如需恢复本地操作:\\n`,
173
- ` 1. 在飞书中 /close 关闭当前接管会话\\n`,
174
- ` 2. ${resumeHint}\\n`,
175
- `\\n'`,
176
- ].join('');
177
- execSync(`tmux send-keys -t ${esc(paneTarget)} ${esc(notice)} Enter`, { stdio: 'ignore', timeout: 2000 });
178
- }
179
- catch { /* pane may be gone — benign */ }
180
- }, 1500);
181
- await sessionReply(rootId, '🔄 已接管会话,MCP 已启用');
182
- logger.info(`[${tag(ds)}] Takeover: resumed session ${originalSessionId} as standard botmux session`);
164
+ // The legacy takeover button was retired in the v3 adopt-bridge
165
+ // refactor: bridge mode forwards Claude's final answers from the
166
+ // transcript watcher without taking over the pane, so the old
167
+ // SIGKILL-original-PID path is incompatible. New cards no longer
168
+ // render this button (worker-pool.ts:setupWorkerHandlers sets
169
+ // showTakeover=false), but historical PATCH'd cards may still expose
170
+ // it — short-circuit here so a stray click can never kill the user's
171
+ // CLI again.
172
+ await sessionReply(rootId, '⚠️ 旧版"接管"按钮已停用。bridge 模式下原 CLI 由 botmux 桥接,无需接管即可在飞书中收到回答。如需 /resume 完整接管能力,请等待 /adopt --takeover 命令上线。');
173
+ logger.info(`[${tag(ds)}] Legacy takeover action ignored (bridge era; historical card)`);
183
174
  }
184
175
  if (actionType === 'tui_keys' && ds) {
185
176
  let keys = [];
@@ -204,7 +195,7 @@ export async function handleCardAction(data, deps, larkAppId) {
204
195
  logger.info(`[${tag(ds)}] TUI toggle (card only): option ${selectedIndex}, toggled: [${ds.tuiToggledIndices}]`);
205
196
  // PATCH card to update ☐/☑ state
206
197
  if (cardMessageId && ds.tuiPromptOptions) {
207
- const updatedCard = buildTuiPromptCard(ds.session.rootMessageId, ds.session.sessionId, ds.currentTurnTitle || 'Select options', ds.tuiPromptOptions, true, ds.tuiToggledIndices);
198
+ const updatedCard = buildTuiPromptCard(sessionAnchorId(ds), ds.session.sessionId, ds.currentTurnTitle || 'Select options', ds.tuiPromptOptions, true, ds.tuiToggledIndices);
208
199
  updateMessage(ds.larkAppId, cardMessageId, updatedCard).catch(err => logger.debug(`[${tag(ds)}] Failed to update TUI toggle card: ${err}`));
209
200
  try {
210
201
  return JSON.parse(updatedCard);
@@ -280,7 +271,8 @@ export async function handleCardAction(data, deps, larkAppId) {
280
271
  const botCfg = getBot(ds.larkAppId).config;
281
272
  if (ds.workerPort && ds.workerToken) {
282
273
  const writeUrl = `http://${config.web.externalHost}:${ds.workerPort}?token=${ds.workerToken}`;
283
- const dmCardJson = buildSessionCard(ds.session.sessionId, ds.session.rootMessageId, writeUrl, ds.session.title || getCliDisplayName(botCfg.cliId), botCfg.cliId, true);
274
+ const dmCardJson = buildSessionCard(ds.session.sessionId, sessionAnchorId(ds), writeUrl, ds.session.title || getCliDisplayName(botCfg.cliId), botCfg.cliId, true, // showManageButtons — DM card includes restart & close
275
+ !!ds.adoptedFrom);
284
276
  sendUserMessage(ds.larkAppId, operatorOpenId, dmCardJson, 'interactive').catch(err => logger.warn(`[${tag(ds)}] Failed to DM write link: ${err}`));
285
277
  logger.info(`[${tag(ds)}] Sent write link via DM to ${operatorOpenId}`);
286
278
  }
@@ -309,7 +301,7 @@ export async function handleCardAction(data, deps, larkAppId) {
309
301
  frozen.expanded = next !== 'hidden';
310
302
  const botCfg = getBot(ds.larkAppId).config;
311
303
  const readUrl = ds.workerPort ? `http://${config.web.externalHost}:${ds.workerPort}` : '';
312
- const cardJson = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, frozen.title, frozen.content, 'idle', botCfg.cliId, next, clickedNonce, frozen.imageKey);
304
+ const cardJson = buildStreamingCard(ds.session.sessionId, sessionAnchorId(ds), readUrl, frozen.title, frozen.content, 'idle', botCfg.cliId, next, clickedNonce, frozen.imageKey, !!ds.adoptedFrom, false);
313
305
  updateMessage(ds.larkAppId, frozen.messageId, cardJson).catch(err => logger.debug(`[${tag(ds)}] Failed to toggle frozen card: ${err}`));
314
306
  saveFrozenCards(ds.session.sessionId, ds.frozenCards);
315
307
  logger.info(`[${tag(ds)}] Frozen card toggled to ${next} (nonce=${clickedNonce})`);
@@ -331,7 +323,7 @@ export async function handleCardAction(data, deps, larkAppId) {
331
323
  if (ds.streamCardId && ds.workerPort) {
332
324
  const readUrl = `http://${config.web.externalHost}:${ds.workerPort}`;
333
325
  const turnTitle = ds.currentTurnTitle || ds.session.title || getCliDisplayName(botCfg.cliId);
334
- const cardJson = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, turnTitle, ds.lastScreenContent || '', ds.lastScreenStatus || 'working', botCfg.cliId, next, ds.streamCardNonce, ds.currentImageKey);
326
+ const cardJson = buildStreamingCard(ds.session.sessionId, sessionAnchorId(ds), readUrl, turnTitle, ds.lastScreenContent || '', ds.lastScreenStatus || 'working', botCfg.cliId, next, ds.streamCardNonce, ds.currentImageKey, !!ds.adoptedFrom, false);
335
327
  scheduleCardPatch(ds, cardJson);
336
328
  logger.info(`[${tag(ds)}] Display mode → ${next}`);
337
329
  try {
@@ -358,7 +350,7 @@ export async function handleCardAction(data, deps, larkAppId) {
358
350
  content = ds.lastScreenContent ?? '';
359
351
  }
360
352
  const body = content.trim() ? truncateContent(content) : '(当前无输出内容)';
361
- await sessionReply(ds.session.rootMessageId, body);
353
+ await sessionReply(sessionAnchorId(ds), body);
362
354
  logger.info(`[${tag(ds)}] Exported terminal text (${body.length} chars)`);
363
355
  return;
364
356
  }
@@ -375,7 +367,7 @@ export async function handleCardAction(data, deps, larkAppId) {
375
367
  const botCfg = getBot(ds.larkAppId).config;
376
368
  const readUrl = `http://${config.web.externalHost}:${ds.workerPort}`;
377
369
  const turnTitle = ds.currentTurnTitle || ds.session.title || getCliDisplayName(botCfg.cliId);
378
- const cardJson = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, turnTitle, ds.lastScreenContent || '', ds.lastScreenStatus || 'working', botCfg.cliId, ds.displayMode ?? 'screenshot', ds.streamCardNonce, ds.currentImageKey);
370
+ const cardJson = buildStreamingCard(ds.session.sessionId, sessionAnchorId(ds), readUrl, turnTitle, ds.lastScreenContent || '', ds.lastScreenStatus || 'working', botCfg.cliId, ds.displayMode ?? 'screenshot', ds.streamCardNonce, ds.currentImageKey, !!ds.adoptedFrom, false);
379
371
  try {
380
372
  return JSON.parse(cardJson);
381
373
  }
@@ -401,7 +393,7 @@ export async function handleCardAction(data, deps, larkAppId) {
401
393
  const botCfg = getBot(ds.larkAppId).config;
402
394
  const readUrl = `http://${config.web.externalHost}:${ds.workerPort}`;
403
395
  const turnTitle = ds.currentTurnTitle || ds.session.title || getCliDisplayName(botCfg.cliId);
404
- const cardJson = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, turnTitle, ds.lastScreenContent || '', ds.lastScreenStatus || 'working', botCfg.cliId, ds.displayMode ?? 'screenshot', ds.streamCardNonce, ds.currentImageKey);
396
+ const cardJson = buildStreamingCard(ds.session.sessionId, sessionAnchorId(ds), readUrl, turnTitle, ds.lastScreenContent || '', ds.lastScreenStatus || 'working', botCfg.cliId, ds.displayMode ?? 'screenshot', ds.streamCardNonce, ds.currentImageKey, !!ds.adoptedFrom, false);
405
397
  try {
406
398
  return JSON.parse(cardJson);
407
399
  }
@@ -510,12 +502,34 @@ export async function handleCardAction(data, deps, larkAppId) {
510
502
  logger.info(`[${tag(targetDs)}] Repo selected: ${selectedPath}, spawning CLI`);
511
503
  }
512
504
  else {
513
- // Mid-session repo switch — close old session, start fresh
505
+ // Mid-session repo switch — close old session, start fresh.
514
506
  killWorker(targetDs);
507
+ // Park the current card in `frozenCards` so the next POST under the new
508
+ // session sweeps it via recall. closeSession() wipes the on-disk
509
+ // frozen-cards file under the OLD sessionId, but the in-memory Map
510
+ // travels with `targetDs` into the new session and still carries the
511
+ // old messageId for deletion. If fork or POST fails, the parked card
512
+ // stays in the thread instead of vanishing prematurely.
513
+ parkStreamCard(targetDs);
515
514
  sessionStore.closeSession(targetDs.session.sessionId);
516
515
  const session = sessionStore.createSession(targetDs.chatId, rootId, displayName, targetDs.chatType);
517
516
  targetDs.session = session;
517
+ // Pin workingDir + larkAppId onto the new session before forkWorker.
518
+ // Without this, a daemon restart restores the session with an empty
519
+ // workingDir and the worker spawns in the bot's default cwd, so
520
+ // `claude --resume` looks in the wrong .claude/projects/<hash>/ dir and
521
+ // exits code 0 immediately, crash-looping until the rate-limiter trips.
522
+ targetDs.session.workingDir = selectedPath;
523
+ targetDs.session.larkAppId = targetDs.larkAppId;
524
+ sessionStore.updateSession(targetDs.session);
518
525
  targetDs.hasHistory = false;
526
+ // Re-persist the parked card under the NEW sessionId so a daemon crash
527
+ // before the next POST doesn't strand it. closeSession() above wiped
528
+ // the on-disk file under the OLD sessionId; without this re-save, the
529
+ // in-memory Map only survives in process memory.
530
+ if (targetDs.frozenCards && targetDs.frozenCards.size > 0) {
531
+ saveFrozenCards(targetDs.session.sessionId, targetDs.frozenCards);
532
+ }
519
533
  // Drop the old turn's streaming-card reference so worker_ready POSTs a
520
534
  // fresh card for the new session instead of PATCHing the previous one.
521
535
  targetDs.streamCardId = undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"card-handler.js","sourceRoot":"","sources":["../../../src/im/lark/card-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"card-handler.js","sourceRoot":"","sources":["../../../src/im/lark/card-handler.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,34 @@ export declare function getChatInfo(larkAppId: string, chatId: string): Promise<
11
11
  userCount: number;
12
12
  botCount: number;
13
13
  }>;
14
+ /** Lark chat-mode classification used by botmux to decide session scope:
15
+ * - 'topic' → 话题群: every top-level message becomes a new thread, so
16
+ * botmux always uses thread-scope sessions. Two underlying
17
+ * Lark shapes collapse into this:
18
+ * * chat_mode='topic' (rare; creation-time classification)
19
+ * * group_message_type='thread' (the toggle Lark clients
20
+ * expose as "话题/聊天" — flips on the fly, chat_mode stays
21
+ * 'group'). This is the common case for user-converted
22
+ * 话题群.
23
+ * - 'group' → 普通群: top-level messages stay top-level, so botmux uses
24
+ * chat-scope by default; user-initiated threads still get
25
+ * their own thread-scope sessions
26
+ * - 'p2p' → direct message: equivalent to 普通群 from a routing
27
+ * perspective (chat-scope by default) */
28
+ export type ChatMode = 'group' | 'topic' | 'p2p';
29
+ /** Resolve the conversational topology of a chat (话题群 vs 普通群 vs p2p).
30
+ *
31
+ * Cached per (appId, chatId) for 5 minutes. Errors fall back to 'group' so a
32
+ * flaky Lark API doesn't break message routing — chat-scope is the safer
33
+ * default than incorrectly forcing a thread, since users can always reply
34
+ * in-thread to escape it.
35
+ *
36
+ * Calling this with a chat that's already known to be p2p (from
37
+ * message.chat_type === 'p2p') is fine but wasteful — prefer skipping the
38
+ * call in that case. */
39
+ export declare function getChatMode(larkAppId: string, chatId: string, options?: {
40
+ forceRefresh?: boolean;
41
+ }): Promise<ChatMode>;
14
42
  export declare function deleteMessage(larkAppId: string, messageId: string): Promise<void>;
15
43
  export declare function updateMessage(larkAppId: string, messageId: string, cardJson: string): Promise<void>;
16
44
  export declare function getMessageDetail(larkAppId: string, messageId: string, options?: {
@@ -27,6 +55,13 @@ export declare function uploadFile(larkAppId: string, filePath: string): Promise
27
55
  */
28
56
  export declare function resolveAllowedUsers(larkAppId: string, raw: string[]): Promise<string[]>;
29
57
  export declare function listThreadMessages(larkAppId: string, chatId: string, rootMessageId: string, pageSize?: number): Promise<any[]>;
58
+ /** List chat-container messages, most-recent first but returned chronologically
59
+ * (oldest → newest, capped at `pageSize`). Used by `botmux history` for
60
+ * chat-scope sessions (普通群整群一会话): no thread to walk, so we walk the
61
+ * chat itself. We page in Desc order so a long-running chat returns its TAIL,
62
+ * not its head — that's the context the caller wants. The caller controls
63
+ * how much history they get via `pageSize`. */
64
+ export declare function listChatMessages(larkAppId: string, chatId: string, pageSize?: number): Promise<any[]>;
30
65
  /**
31
66
  * Check which bots are in a chat.
32
67
  * Uses isInChat API for ALL configured bots (from bots.json), not just
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/im/lark/client.ts"],"names":[],"mappings":"AAwBA,4EAA4E;AAC5E,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,SAAS,EAAE,MAAM;CAI9B;AASD,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB/H;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAe,EAAE,aAAa,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BnK;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY1G;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS5G;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBnI;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAarH;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvF;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzG;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,OAAO,CAAC,GAAG,CAAC,CAkBd;AAED,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC5J;AA4CD,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWvF;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcrF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmC7F;AAID,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAYxI;AAkFD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkDjJ"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/im/lark/client.ts"],"names":[],"mappings":"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"}