botmux 2.52.0 → 2.54.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 (150) hide show
  1. package/README.en.md +22 -269
  2. package/README.md +21 -300
  3. package/dist/adapters/backend/session-backend-selector.d.ts +5 -1
  4. package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -1
  5. package/dist/adapters/backend/session-backend-selector.js +15 -1
  6. package/dist/adapters/backend/session-backend-selector.js.map +1 -1
  7. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  8. package/dist/adapters/backend/tmux-backend.js +3 -0
  9. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  10. package/dist/adapters/backend/types.d.ts +22 -0
  11. package/dist/adapters/backend/types.d.ts.map +1 -1
  12. package/dist/adapters/backend/types.js +7 -1
  13. package/dist/adapters/backend/types.js.map +1 -1
  14. package/dist/adapters/backend/zellij-backend.d.ts +132 -0
  15. package/dist/adapters/backend/zellij-backend.d.ts.map +1 -0
  16. package/dist/adapters/backend/zellij-backend.js +375 -0
  17. package/dist/adapters/backend/zellij-backend.js.map +1 -0
  18. package/dist/adapters/backend/zellij-observe-backend.d.ts +62 -0
  19. package/dist/adapters/backend/zellij-observe-backend.d.ts.map +1 -0
  20. package/dist/adapters/backend/zellij-observe-backend.js +218 -0
  21. package/dist/adapters/backend/zellij-observe-backend.js.map +1 -0
  22. package/dist/adapters/cli/claude-code.d.ts +39 -5
  23. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  24. package/dist/adapters/cli/claude-code.js +53 -31
  25. package/dist/adapters/cli/claude-code.js.map +1 -1
  26. package/dist/adapters/cli/registry.d.ts +2 -1
  27. package/dist/adapters/cli/registry.d.ts.map +1 -1
  28. package/dist/adapters/cli/registry.js +3 -1
  29. package/dist/adapters/cli/registry.js.map +1 -1
  30. package/dist/adapters/cli/seed.d.ts +29 -0
  31. package/dist/adapters/cli/seed.d.ts.map +1 -0
  32. package/dist/adapters/cli/seed.js +63 -0
  33. package/dist/adapters/cli/seed.js.map +1 -0
  34. package/dist/adapters/cli/types.d.ts +17 -1
  35. package/dist/adapters/cli/types.d.ts.map +1 -1
  36. package/dist/bot-registry.d.ts +1 -1
  37. package/dist/bot-registry.d.ts.map +1 -1
  38. package/dist/cli.d.ts.map +1 -1
  39. package/dist/cli.js +79 -49
  40. package/dist/cli.js.map +1 -1
  41. package/dist/config.d.ts +7 -1
  42. package/dist/config.d.ts.map +1 -1
  43. package/dist/config.js +8 -0
  44. package/dist/config.js.map +1 -1
  45. package/dist/core/ask-hook/registry.d.ts.map +1 -1
  46. package/dist/core/ask-hook/registry.js +4 -0
  47. package/dist/core/ask-hook/registry.js.map +1 -1
  48. package/dist/core/command-handler.d.ts +4 -1
  49. package/dist/core/command-handler.d.ts.map +1 -1
  50. package/dist/core/command-handler.js +100 -8
  51. package/dist/core/command-handler.js.map +1 -1
  52. package/dist/core/dispatch.d.ts +33 -0
  53. package/dist/core/dispatch.d.ts.map +1 -1
  54. package/dist/core/dispatch.js +26 -0
  55. package/dist/core/dispatch.js.map +1 -1
  56. package/dist/core/pending-response.d.ts +31 -0
  57. package/dist/core/pending-response.d.ts.map +1 -0
  58. package/dist/core/pending-response.js +87 -0
  59. package/dist/core/pending-response.js.map +1 -0
  60. package/dist/core/session-discovery.d.ts +13 -4
  61. package/dist/core/session-discovery.d.ts.map +1 -1
  62. package/dist/core/session-discovery.js +5 -5
  63. package/dist/core/session-discovery.js.map +1 -1
  64. package/dist/core/session-manager.d.ts +10 -0
  65. package/dist/core/session-manager.d.ts.map +1 -1
  66. package/dist/core/session-manager.js +59 -19
  67. package/dist/core/session-manager.js.map +1 -1
  68. package/dist/core/types.d.ts +8 -2
  69. package/dist/core/types.d.ts.map +1 -1
  70. package/dist/core/types.js.map +1 -1
  71. package/dist/core/worker-pool.d.ts +2 -2
  72. package/dist/core/worker-pool.d.ts.map +1 -1
  73. package/dist/core/worker-pool.js +89 -15
  74. package/dist/core/worker-pool.js.map +1 -1
  75. package/dist/core/zellij-adopt-discovery.d.ts +28 -0
  76. package/dist/core/zellij-adopt-discovery.d.ts.map +1 -0
  77. package/dist/core/zellij-adopt-discovery.js +276 -0
  78. package/dist/core/zellij-adopt-discovery.js.map +1 -0
  79. package/dist/core/zellij-session-discovery.d.ts +73 -0
  80. package/dist/core/zellij-session-discovery.d.ts.map +1 -0
  81. package/dist/core/zellij-session-discovery.js +259 -0
  82. package/dist/core/zellij-session-discovery.js.map +1 -0
  83. package/dist/daemon.d.ts.map +1 -1
  84. package/dist/daemon.js +70 -4
  85. package/dist/daemon.js.map +1 -1
  86. package/dist/dashboard/web/i18n.js +1 -1
  87. package/dist/dashboard/web/i18n.js.map +1 -1
  88. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  89. package/dist/dashboard/web/sessions.js +1 -0
  90. package/dist/dashboard/web/sessions.js.map +1 -1
  91. package/dist/dashboard/web/workflows.js +1 -1
  92. package/dist/dashboard/web/workflows.js.map +1 -1
  93. package/dist/dashboard-web/app.js +3 -3
  94. package/dist/i18n/en.d.ts.map +1 -1
  95. package/dist/i18n/en.js +12 -0
  96. package/dist/i18n/en.js.map +1 -1
  97. package/dist/i18n/zh.d.ts.map +1 -1
  98. package/dist/i18n/zh.js +13 -1
  99. package/dist/i18n/zh.js.map +1 -1
  100. package/dist/im/lark/card-builder.d.ts +7 -1
  101. package/dist/im/lark/card-builder.d.ts.map +1 -1
  102. package/dist/im/lark/card-builder.js +92 -2
  103. package/dist/im/lark/card-builder.js.map +1 -1
  104. package/dist/im/lark/card-handler.d.ts.map +1 -1
  105. package/dist/im/lark/card-handler.js +78 -6
  106. package/dist/im/lark/card-handler.js.map +1 -1
  107. package/dist/im/lark/event-dispatcher.d.ts +8 -1
  108. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  109. package/dist/im/lark/event-dispatcher.js +28 -0
  110. package/dist/im/lark/event-dispatcher.js.map +1 -1
  111. package/dist/im/lark/grant-command.d.ts +13 -0
  112. package/dist/im/lark/grant-command.d.ts.map +1 -1
  113. package/dist/im/lark/grant-command.js +93 -0
  114. package/dist/im/lark/grant-command.js.map +1 -1
  115. package/dist/services/codex-app-threads.d.ts +20 -0
  116. package/dist/services/codex-app-threads.d.ts.map +1 -0
  117. package/dist/services/codex-app-threads.js +165 -0
  118. package/dist/services/codex-app-threads.js.map +1 -0
  119. package/dist/services/pending-response-transaction-store.d.ts +12 -0
  120. package/dist/services/pending-response-transaction-store.d.ts.map +1 -0
  121. package/dist/services/pending-response-transaction-store.js +52 -0
  122. package/dist/services/pending-response-transaction-store.js.map +1 -0
  123. package/dist/services/session-store.d.ts.map +1 -1
  124. package/dist/services/session-store.js +15 -1
  125. package/dist/services/session-store.js.map +1 -1
  126. package/dist/setup/bot-config-editor.d.ts +1 -1
  127. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  128. package/dist/setup/bot-config-editor.js +5 -4
  129. package/dist/setup/bot-config-editor.js.map +1 -1
  130. package/dist/setup/ensure-zellij.d.ts +48 -0
  131. package/dist/setup/ensure-zellij.d.ts.map +1 -0
  132. package/dist/setup/ensure-zellij.js +93 -0
  133. package/dist/setup/ensure-zellij.js.map +1 -0
  134. package/dist/types.d.ts +14 -3
  135. package/dist/types.d.ts.map +1 -1
  136. package/dist/utils/anchor-serializer.d.ts +3 -2
  137. package/dist/utils/anchor-serializer.d.ts.map +1 -1
  138. package/dist/utils/anchor-serializer.js +20 -5
  139. package/dist/utils/anchor-serializer.js.map +1 -1
  140. package/dist/utils/transient-snapshot.js +2 -2
  141. package/dist/utils/transient-snapshot.js.map +1 -1
  142. package/dist/worker.js +235 -32
  143. package/dist/worker.js.map +1 -1
  144. package/dist/workflows/attempt-resume.d.ts +1 -1
  145. package/dist/workflows/attempt-resume.d.ts.map +1 -1
  146. package/dist/workflows/attempt-resume.js +1 -1
  147. package/dist/workflows/attempt-resume.js.map +1 -1
  148. package/dist/workflows/events/payloads.d.ts +20 -20
  149. package/dist/workflows/events/schema.d.ts +48 -48
  150. package/package.json +1 -1
@@ -114,6 +114,39 @@ export declare function findSubBotTopic(input: {
114
114
  }>;
115
115
  activeSeeds: Set<string>;
116
116
  }): string | null;
117
+ /**
118
+ * Resolve where a `botmux report` should go + who to @, so report-back works
119
+ * even when the orchestrator is on a DIFFERENT machine.
120
+ *
121
+ * Same-machine: the dispatch registry (orchestrate-dispatch.json) is local, so
122
+ * `registryEntry` carries the orchestrator's exact coords (incl. orchRoot for a
123
+ * thread-scope orchestrator). Cross-machine: the foreign sub-bot's daemon never
124
+ * wrote that registry, so `registryEntry` is undefined — but everything needed
125
+ * for the common case is on the sub-bot's OWN session: the report goes top-level
126
+ * into the chat the sub-topic lives in (= the orchestrator's chat) and @-s the
127
+ * orchestrator (creatorOpenId, captured from the dispatch @). So we fall back to
128
+ * `{ orchChatId: sessionChatId, orchScope: 'chat', orchRoot: '' }`.
129
+ *
130
+ * orchOpenId prefers `creatorOpenId` (stable, set on every session-creation path
131
+ * incl. foreign-bot auto-create), then `ownerOpenId`, then the drifting
132
+ * `quoteTargetSenderOpenId` as a last resort.
133
+ */
134
+ export declare function resolveReportTarget(input: {
135
+ registryEntry?: {
136
+ orchChatId?: string;
137
+ orchScope?: string;
138
+ orchRoot?: string;
139
+ };
140
+ sessionChatId?: string;
141
+ creatorOpenId?: string;
142
+ ownerOpenId?: string;
143
+ quoteTargetSenderOpenId?: string;
144
+ }): {
145
+ orchChatId?: string;
146
+ orchScope: string;
147
+ orchRoot: string;
148
+ orchOpenId?: string;
149
+ };
117
150
  /**
118
151
  * The footgun check shared by `botmux send`'s explicit-mention guard AND its
119
152
  * prose `@Name` auto-injection: returns the sub-topic seed if `mentionOpenId` is
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/core/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,QAAQ,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AACtF,MAAM,MAAM,aAAa,GAAG,QAAQ,EAAE,CAAC;AAEvC,MAAM,WAAW,gBAAgB;IAC/B,8FAA8F;IAC9F,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,6EAA6E;IAC7E,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAY7D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB,GAAG,gBAAgB,CAwCnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAAE,CAO/C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,aAAa,EAAE,CAclB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACnE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B,GAAG,MAAM,GAAG,IAAI,CAShB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACnE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B,GAAG,MAAM,GAAG,IAAI,CAQhB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B,GAAG,MAAM,EAAE,CAaX"}
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/core/dispatch.ts"],"names":[],"mappings":"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"}
@@ -157,6 +157,32 @@ export function findSubBotTopic(input) {
157
157
  }
158
158
  return null;
159
159
  }
160
+ /**
161
+ * Resolve where a `botmux report` should go + who to @, so report-back works
162
+ * even when the orchestrator is on a DIFFERENT machine.
163
+ *
164
+ * Same-machine: the dispatch registry (orchestrate-dispatch.json) is local, so
165
+ * `registryEntry` carries the orchestrator's exact coords (incl. orchRoot for a
166
+ * thread-scope orchestrator). Cross-machine: the foreign sub-bot's daemon never
167
+ * wrote that registry, so `registryEntry` is undefined — but everything needed
168
+ * for the common case is on the sub-bot's OWN session: the report goes top-level
169
+ * into the chat the sub-topic lives in (= the orchestrator's chat) and @-s the
170
+ * orchestrator (creatorOpenId, captured from the dispatch @). So we fall back to
171
+ * `{ orchChatId: sessionChatId, orchScope: 'chat', orchRoot: '' }`.
172
+ *
173
+ * orchOpenId prefers `creatorOpenId` (stable, set on every session-creation path
174
+ * incl. foreign-bot auto-create), then `ownerOpenId`, then the drifting
175
+ * `quoteTargetSenderOpenId` as a last resort.
176
+ */
177
+ export function resolveReportTarget(input) {
178
+ const e = input.registryEntry;
179
+ return {
180
+ orchChatId: e?.orchChatId ?? input.sessionChatId,
181
+ orchScope: e?.orchScope ?? 'chat',
182
+ orchRoot: e?.orchRoot ?? '',
183
+ orchOpenId: input.creatorOpenId ?? input.ownerOpenId ?? input.quoteTargetSenderOpenId,
184
+ };
185
+ }
160
186
  /**
161
187
  * The footgun check shared by `botmux send`'s explicit-mention guard AND its
162
188
  * prose `@Name` auto-injection: returns the sub-topic seed if `mentionOpenId` is
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/core/dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/core/dispatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { Session } from '../types.js';
2
+ export declare const COMPLETED_REACTION_EMOJI_TYPE = "DONE";
3
+ type PendingResponseSession = Pick<Session, 'pendingResponseCardId' | 'pendingResponseCardState' | 'lastPatchedResponseCardId'>;
4
+ export declare function isPendingResponseCardOpen(session: Pick<Session, 'pendingResponseCardId' | 'pendingResponseCardState'>): boolean;
5
+ /** Sync only the cross-process pending-response fields from a fresher Session. */
6
+ export declare function syncPendingResponseState(target: PendingResponseSession, source: PendingResponseSession | undefined): void;
7
+ export declare function mergePendingResponseState<T extends PendingResponseSession>(incoming: T, existing: PendingResponseSession | undefined): T;
8
+ export declare function shouldUseCardForSend(opts: {
9
+ forceCard: boolean;
10
+ forceText: boolean;
11
+ hasMarkdown: boolean;
12
+ hasOpenPendingResponseCard: boolean;
13
+ }): boolean;
14
+ export declare function shouldWithdrawPreviousPendingOnNewTurn(_session: Pick<Session, 'pendingResponseCardId' | 'pendingResponseCardState'>): boolean;
15
+ /** A patched marker means the Feishu PATCH returned, but session save may not have. */
16
+ export declare function shouldTreatPendingCardAsPatchedByMarker(pendingCardId: string | undefined, marker: {
17
+ cardId?: string;
18
+ state?: string;
19
+ } | undefined): boolean;
20
+ export declare function createPendingResponseQueue(): {
21
+ run<T>(key: string, work: () => Promise<T>): Promise<T>;
22
+ size(): number;
23
+ };
24
+ export declare function startPendingResponseTurn(session: PendingResponseSession, messageId: string): void;
25
+ /** Mark the current open placeholder as patched; keep its id for diagnostics. */
26
+ export declare function markPendingResponseCardPatched(session: PendingResponseSession): void;
27
+ export declare function markPendingResponseCardPatchedIfCurrent(session: PendingResponseSession, cardId: string): boolean;
28
+ /** Read the open placeholder id without claiming it until PATCH succeeds. */
29
+ export declare function claimPendingResponseCard(session: PendingResponseSession): string | undefined;
30
+ export {};
31
+ //# sourceMappingURL=pending-response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending-response.d.ts","sourceRoot":"","sources":["../../src/core/pending-response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,6BAA6B,SAAS,CAAC;AAEpD,KAAK,sBAAsB,GAAG,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,0BAA0B,GAAG,2BAA2B,CAAC,CAAC;AAEhI,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,0BAA0B,CAAC,GAAG,OAAO,CAE/H;AAED,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,sBAAsB,GAAG,SAAS,GAAG,IAAI,CAKzH;AAED,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,sBAAsB,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,sBAAsB,GAAG,SAAS,GAAG,CAAC,CAyBxI;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,0BAA0B,EAAE,OAAO,CAAC;CACrC,GAAG,OAAO,CAGV;AAED,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,0BAA0B,CAAC,GAAG,OAAO,CAE7I;AAED,uFAAuF;AACvF,wBAAgB,uCAAuC,CACrD,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACtD,OAAO,CAET;AAED,wBAAgB,0BAA0B;QAGlC,CAAC,OAAO,MAAM,QAAQ,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAS/C,MAAM;EAEjB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAGjG;AAED,iFAAiF;AACjF,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAIpF;AAED,wBAAgB,uCAAuC,CAAC,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAIhH;AAED,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,GAAG,SAAS,CAE5F"}
@@ -0,0 +1,87 @@
1
+ export const COMPLETED_REACTION_EMOJI_TYPE = 'DONE';
2
+ export function isPendingResponseCardOpen(session) {
3
+ return !!session.pendingResponseCardId && session.pendingResponseCardState === 'open';
4
+ }
5
+ /** Sync only the cross-process pending-response fields from a fresher Session. */
6
+ export function syncPendingResponseState(target, source) {
7
+ if (!source)
8
+ return;
9
+ target.pendingResponseCardId = source.pendingResponseCardId;
10
+ target.pendingResponseCardState = source.pendingResponseCardState;
11
+ target.lastPatchedResponseCardId = source.lastPatchedResponseCardId;
12
+ }
13
+ export function mergePendingResponseState(incoming, existing) {
14
+ if (!existing)
15
+ return incoming;
16
+ const hasExistingPendingState = existing.pendingResponseCardId !== undefined
17
+ || existing.pendingResponseCardState !== undefined
18
+ || existing.lastPatchedResponseCardId !== undefined;
19
+ if (!hasExistingPendingState)
20
+ return incoming;
21
+ const incomingStartsNewOpenCard = incoming.pendingResponseCardState === 'open'
22
+ && !!incoming.pendingResponseCardId
23
+ && incoming.pendingResponseCardId !== existing.lastPatchedResponseCardId;
24
+ if (incomingStartsNewOpenCard)
25
+ return incoming;
26
+ const incomingMarksPatched = incoming.pendingResponseCardState === 'patched';
27
+ const existingHasNewerOpenCard = existing.pendingResponseCardState === 'open'
28
+ && !!existing.pendingResponseCardId
29
+ && incoming.lastPatchedResponseCardId !== existing.pendingResponseCardId;
30
+ if (incomingMarksPatched && !existingHasNewerOpenCard)
31
+ return incoming;
32
+ return {
33
+ ...incoming,
34
+ pendingResponseCardId: existing.pendingResponseCardId,
35
+ pendingResponseCardState: existing.pendingResponseCardState,
36
+ lastPatchedResponseCardId: existing.lastPatchedResponseCardId,
37
+ };
38
+ }
39
+ export function shouldUseCardForSend(opts) {
40
+ if (opts.hasOpenPendingResponseCard)
41
+ return true;
42
+ return opts.forceCard || (!opts.forceText && opts.hasMarkdown);
43
+ }
44
+ export function shouldWithdrawPreviousPendingOnNewTurn(_session) {
45
+ return false;
46
+ }
47
+ /** A patched marker means the Feishu PATCH returned, but session save may not have. */
48
+ export function shouldTreatPendingCardAsPatchedByMarker(pendingCardId, marker) {
49
+ return !!pendingCardId && marker?.state === 'patched' && marker.cardId === pendingCardId;
50
+ }
51
+ export function createPendingResponseQueue() {
52
+ const tails = new Map();
53
+ return {
54
+ run(key, work) {
55
+ const prev = tails.get(key);
56
+ const next = prev ? prev.catch(() => undefined).then(work) : work();
57
+ const stored = next.finally(() => {
58
+ if (tails.get(key) === stored)
59
+ tails.delete(key);
60
+ });
61
+ tails.set(key, stored);
62
+ return next;
63
+ },
64
+ size() { return tails.size; },
65
+ };
66
+ }
67
+ export function startPendingResponseTurn(session, messageId) {
68
+ session.pendingResponseCardId = messageId;
69
+ session.pendingResponseCardState = 'open';
70
+ }
71
+ /** Mark the current open placeholder as patched; keep its id for diagnostics. */
72
+ export function markPendingResponseCardPatched(session) {
73
+ session.lastPatchedResponseCardId = session.pendingResponseCardId;
74
+ session.pendingResponseCardId = undefined;
75
+ session.pendingResponseCardState = 'patched';
76
+ }
77
+ export function markPendingResponseCardPatchedIfCurrent(session, cardId) {
78
+ if (session.pendingResponseCardId !== cardId || session.pendingResponseCardState !== 'open')
79
+ return false;
80
+ markPendingResponseCardPatched(session);
81
+ return true;
82
+ }
83
+ /** Read the open placeholder id without claiming it until PATCH succeeds. */
84
+ export function claimPendingResponseCard(session) {
85
+ return isPendingResponseCardOpen(session) ? session.pendingResponseCardId : undefined;
86
+ }
87
+ //# sourceMappingURL=pending-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending-response.js","sourceRoot":"","sources":["../../src/core/pending-response.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAIpD,MAAM,UAAU,yBAAyB,CAAC,OAA4E;IACpH,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,IAAI,OAAO,CAAC,wBAAwB,KAAK,MAAM,CAAC;AACxF,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,wBAAwB,CAAC,MAA8B,EAAE,MAA0C;IACjH,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAC5D,MAAM,CAAC,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;IAClE,MAAM,CAAC,yBAAyB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAmC,QAAW,EAAE,QAA4C;IACnI,IAAI,CAAC,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE/B,MAAM,uBAAuB,GAAG,QAAQ,CAAC,qBAAqB,KAAK,SAAS;WACvE,QAAQ,CAAC,wBAAwB,KAAK,SAAS;WAC/C,QAAQ,CAAC,yBAAyB,KAAK,SAAS,CAAC;IACtD,IAAI,CAAC,uBAAuB;QAAE,OAAO,QAAQ,CAAC;IAE9C,MAAM,yBAAyB,GAAG,QAAQ,CAAC,wBAAwB,KAAK,MAAM;WACzE,CAAC,CAAC,QAAQ,CAAC,qBAAqB;WAChC,QAAQ,CAAC,qBAAqB,KAAK,QAAQ,CAAC,yBAAyB,CAAC;IAC3E,IAAI,yBAAyB;QAAE,OAAO,QAAQ,CAAC;IAE/C,MAAM,oBAAoB,GAAG,QAAQ,CAAC,wBAAwB,KAAK,SAAS,CAAC;IAC7E,MAAM,wBAAwB,GAAG,QAAQ,CAAC,wBAAwB,KAAK,MAAM;WACxE,CAAC,CAAC,QAAQ,CAAC,qBAAqB;WAChC,QAAQ,CAAC,yBAAyB,KAAK,QAAQ,CAAC,qBAAqB,CAAC;IAC3E,IAAI,oBAAoB,IAAI,CAAC,wBAAwB;QAAE,OAAO,QAAQ,CAAC;IAEvE,OAAO;QACL,GAAG,QAAQ;QACX,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;QACrD,wBAAwB,EAAE,QAAQ,CAAC,wBAAwB;QAC3D,yBAAyB,EAAE,QAAQ,CAAC,yBAAyB;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAKpC;IACC,IAAI,IAAI,CAAC,0BAA0B;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,QAA6E;IAClI,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,uCAAuC,CACrD,aAAiC,EACjC,MAAuD;IAEvD,OAAO,CAAC,CAAC,aAAa,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IAClD,OAAO;QACL,GAAG,CAAI,GAAW,EAAE,IAAsB;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACpE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC/B,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM;oBAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,KAAa,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAA+B,EAAE,SAAiB;IACzF,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAC1C,OAAO,CAAC,wBAAwB,GAAG,MAAM,CAAC;AAC5C,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,8BAA8B,CAAC,OAA+B;IAC5E,OAAO,CAAC,yBAAyB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAClE,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAC1C,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,uCAAuC,CAAC,OAA+B,EAAE,MAAc;IACrG,IAAI,OAAO,CAAC,qBAAqB,KAAK,MAAM,IAAI,OAAO,CAAC,wBAAwB,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1G,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,wBAAwB,CAAC,OAA+B;IACtE,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,CAAC"}
@@ -10,6 +10,7 @@ export interface AdoptableSession {
10
10
  paneCols: number;
11
11
  paneRows: number;
12
12
  }
13
+ export declare function cliIdForComm(comm: string, filterCliId?: CliId): CliId | undefined;
13
14
  /**
14
15
  * 读取进程的 comm 名(不含路径)。Linux 走 /proc/<pid>/comm 快路径;
15
16
  * macOS / 其它 Unix 走 `ps -o comm=` 兜底。
@@ -19,7 +20,7 @@ export interface AdoptableSession {
19
20
  *
20
21
  * 返回 undefined 表示进程不存在或读不到。
21
22
  */
22
- declare function readComm(pid: number): string | undefined;
23
+ export declare function readComm(pid: number): string | undefined;
23
24
  /**
24
25
  * 读取进程的工作目录。Linux 走 /proc/<pid>/cwd 软链;
25
26
  * macOS / 其它 Unix 走 `lsof -a -d cwd -p <pid> -Fn` 兜底。
@@ -32,7 +33,7 @@ declare function readComm(pid: number): string | undefined;
32
33
  *
33
34
  * 返回 undefined 表示读不到。
34
35
  */
35
- declare function readCwd(pid: number): string | undefined;
36
+ export declare function readCwd(pid: number): string | undefined;
36
37
  /**
37
38
  * 获取一个进程的直接子进程 PID。
38
39
  *
@@ -44,7 +45,16 @@ declare function readCwd(pid: number): string | undefined;
44
45
  * 的 ps 都接受这个写法。fork-exec 一次代价可接受,因为 discovery 本身是
45
46
  * 低频操作(只在用户 /adopt 时跑一遍)。
46
47
  */
47
- declare function getChildPids(pid: number): number[];
48
+ export declare function getChildPids(pid: number): number[];
49
+ /**
50
+ * Try to read Claude Code session metadata from ~/.claude/sessions/<PID>.json.
51
+ * Returns { sessionId, cwd, startedAt } or undefined.
52
+ */
53
+ export declare function readClaudeSessionMeta(pid: number): {
54
+ sessionId?: string;
55
+ cwd?: string;
56
+ startedAt?: number;
57
+ } | undefined;
48
58
  /**
49
59
  * Scan all tmux panes for running CLI processes that can be adopted by Botmux.
50
60
  *
@@ -63,5 +73,4 @@ export declare function validateAdoptTarget(tmuxTarget: string, expectedPid: num
63
73
  export declare const __testOnly_readComm: typeof readComm;
64
74
  export declare const __testOnly_readCwd: typeof readCwd;
65
75
  export declare const __testOnly_getChildPids: typeof getChildPids;
66
- export {};
67
76
  //# sourceMappingURL=session-discovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-discovery.d.ts","sourceRoot":"","sources":["../../src/core/session-discovery.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAUtD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgCD;;;;;;;;GAQG;AACH,iBAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAkBjD;AAED;;;;;;;;;;;GAWG;AACH,iBAAS,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoBhD;AAED;;;;;;;;;;GAUG;AACH,iBAAS,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAsB3C;AAyED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,CAAC,EAAE,KAAK,GAAG,gBAAgB,EAAE,CAoFjF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAiBpF;AAID,eAAO,MAAM,mBAAmB,iBAAW,CAAC;AAC5C,eAAO,MAAM,kBAAkB,gBAAU,CAAC;AAC1C,eAAO,MAAM,uBAAuB,qBAAe,CAAC"}
1
+ {"version":3,"file":"session-discovery.d.ts","sourceRoot":"","sources":["../../src/core/session-discovery.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAUtD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAeD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAQjF;AASD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAkBxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoBvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBlD;AAgCD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAavH;AAwBD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,CAAC,EAAE,KAAK,GAAG,gBAAgB,EAAE,CAoFjF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAiBpF;AAID,eAAO,MAAM,mBAAmB,iBAAW,CAAC;AAC5C,eAAO,MAAM,kBAAkB,gBAAU,CAAC;AAC1C,eAAO,MAAM,uBAAuB,qBAAe,CAAC"}
@@ -24,7 +24,7 @@ const CLI_COMM_MAP = {
24
24
  mtr: 'mtr',
25
25
  hermes: 'hermes',
26
26
  };
27
- function cliIdForComm(comm, filterCliId) {
27
+ export function cliIdForComm(comm, filterCliId) {
28
28
  const normalizedComm = comm.startsWith('.') ? comm.slice(1) : comm;
29
29
  const direct = CLI_COMM_MAP[comm] ?? CLI_COMM_MAP[normalizedComm];
30
30
  // MTR is an OpenCode fork and some installs still expose the underlying
@@ -48,7 +48,7 @@ function shellescape(s) {
48
48
  *
49
49
  * 返回 undefined 表示进程不存在或读不到。
50
50
  */
51
- function readComm(pid) {
51
+ export function readComm(pid) {
52
52
  if (IS_LINUX) {
53
53
  try {
54
54
  return readFileSync(`/proc/${pid}/comm`, 'utf-8').trim();
@@ -82,7 +82,7 @@ function readComm(pid) {
82
82
  *
83
83
  * 返回 undefined 表示读不到。
84
84
  */
85
- function readCwd(pid) {
85
+ export function readCwd(pid) {
86
86
  if (IS_LINUX) {
87
87
  try {
88
88
  return readlinkSync(`/proc/${pid}/cwd`);
@@ -117,7 +117,7 @@ function readCwd(pid) {
117
117
  * 的 ps 都接受这个写法。fork-exec 一次代价可接受,因为 discovery 本身是
118
118
  * 低频操作(只在用户 /adopt 时跑一遍)。
119
119
  */
120
- function getChildPids(pid) {
120
+ export function getChildPids(pid) {
121
121
  try {
122
122
  const out = execSync('ps -A -o pid= -o ppid=', {
123
123
  encoding: 'utf-8',
@@ -169,7 +169,7 @@ function findCliProcess(rootPid, maxDepth, filterCliId) {
169
169
  * Try to read Claude Code session metadata from ~/.claude/sessions/<PID>.json.
170
170
  * Returns { sessionId, cwd, startedAt } or undefined.
171
171
  */
172
- function readClaudeSessionMeta(pid) {
172
+ export function readClaudeSessionMeta(pid) {
173
173
  try {
174
174
  const metaPath = join(homedir(), '.claude', 'sessions', `${pid}.json`);
175
175
  const raw = readFileSync(metaPath, 'utf-8');
@@ -1 +1 @@
1
- {"version":3,"file":"session-discovery.js","sourceRoot":"","sources":["../../src/core/session-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-discovery.js","sourceRoot":"","sources":["../../src/core/session-discovery.ts"],"names":[],"mappings":"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"}
@@ -119,6 +119,16 @@ export declare function buildReforkPrompt(ds: DaemonSession, content: string, op
119
119
  */
120
120
  export declare function persistStreamCardState(ds: DaemonSession): void;
121
121
  export declare function rememberLastCliInput(ds: DaemonSession, userPrompt: string, cliInput: string): void;
122
+ /**
123
+ * Whether daemon restore should eagerly re-fork workers to re-attach surviving
124
+ * tmux panes (which re-renders — or re-posts — each session's streaming card in
125
+ * its Lark thread). True only on the tmux backend, and suppressed by
126
+ * quiet-restart (`BOTMUX_QUIET_RESTART=1`) so local-dev restarts don't re-push
127
+ * cards for unfinished sessions. When suppressed, sessions are still registered
128
+ * and resume lazily — re-attaching the surviving tmux on the next real message
129
+ * via `selectSessionBackend` — exactly like the pty backend already does.
130
+ */
131
+ export declare function shouldAutoForkOnRestore(backendType: 'pty' | 'tmux' | 'zellij', quietRestart: boolean): boolean;
122
132
  export declare function restoreActiveSessions(activeSessions: Map<string, DaemonSession>): Promise<void>;
123
133
  /**
124
134
  * Reactivate a single closed session — used by the "▶️ 恢复会话" card button
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,10 @@ import { forkWorker, forkAdoptWorker, killStalePids, getCurrentCliVersion, resto
9
9
  import { createCliAdapterSync } from '../adapters/cli/registry.js';
10
10
  import { buildBotmuxShellHints } from '../adapters/cli/shared-hints.js';
11
11
  import { TmuxBackend } from '../adapters/backend/tmux-backend.js';
12
+ import { ZellijBackend } from '../adapters/backend/zellij-backend.js';
12
13
  import { getBot, getAllBots } from '../bot-registry.js';
13
14
  import { validateAdoptTarget } from './session-discovery.js';
15
+ import { validateZellijAdoptTarget } from './zellij-adopt-discovery.js';
14
16
  import { sessionKey, sessionAnchorId } from './types.js';
15
17
  import { markSessionActivity } from './session-activity.js';
16
18
  import { usageLimitStateKey } from '../utils/cli-usage-limit.js';
@@ -424,7 +426,10 @@ export function persistStreamCardState(ds) {
424
426
  s.currentTurnTitle === ds.currentTurnTitle &&
425
427
  sameUsageLimit(s.usageLimit, ds.usageLimit) &&
426
428
  s.lastUserPrompt === ds.lastUserPrompt &&
427
- s.lastCliInput === ds.lastCliInput)
429
+ s.lastCliInput === ds.lastCliInput &&
430
+ s.pendingResponseCardId === ds.pendingResponseCardId &&
431
+ s.pendingResponseCardState === ds.pendingResponseCardState &&
432
+ s.lastPatchedResponseCardId === ds.lastPatchedResponseCardId)
428
433
  return;
429
434
  s.streamCardId = cardId;
430
435
  s.streamCardNonce = ds.streamCardNonce;
@@ -434,6 +439,9 @@ export function persistStreamCardState(ds) {
434
439
  s.usageLimit = ds.usageLimit;
435
440
  s.lastUserPrompt = ds.lastUserPrompt;
436
441
  s.lastCliInput = ds.lastCliInput;
442
+ s.pendingResponseCardId = ds.pendingResponseCardId;
443
+ s.pendingResponseCardState = ds.pendingResponseCardState;
444
+ s.lastPatchedResponseCardId = ds.lastPatchedResponseCardId;
437
445
  // Clear legacy field so it doesn't drift
438
446
  s.streamExpanded = undefined;
439
447
  sessionStore.updateSession(s);
@@ -446,6 +454,18 @@ export function rememberLastCliInput(ds, userPrompt, cliInput) {
446
454
  sessionStore.updateSession(ds.session);
447
455
  }
448
456
  // ─── Session restore ─────────────────────────────────────────────────────────
457
+ /**
458
+ * Whether daemon restore should eagerly re-fork workers to re-attach surviving
459
+ * tmux panes (which re-renders — or re-posts — each session's streaming card in
460
+ * its Lark thread). True only on the tmux backend, and suppressed by
461
+ * quiet-restart (`BOTMUX_QUIET_RESTART=1`) so local-dev restarts don't re-push
462
+ * cards for unfinished sessions. When suppressed, sessions are still registered
463
+ * and resume lazily — re-attaching the surviving tmux on the next real message
464
+ * via `selectSessionBackend` — exactly like the pty backend already does.
465
+ */
466
+ export function shouldAutoForkOnRestore(backendType, quietRestart) {
467
+ return (backendType === 'tmux' || backendType === 'zellij') && !quietRestart;
468
+ }
449
469
  export async function restoreActiveSessions(activeSessions) {
450
470
  const sessions = sessionStore.listSessions();
451
471
  const active = sessions.filter(s => s.status === 'active');
@@ -463,7 +483,10 @@ export async function restoreActiveSessions(activeSessions) {
463
483
  // Adopt sessions: restore if original CLI is still alive, otherwise close
464
484
  if (session.title?.startsWith('Adopt:') && session.adoptedFrom) {
465
485
  const adopted = session.adoptedFrom;
466
- if (!validateAdoptTarget(adopted.tmuxTarget, adopted.originalCliPid)) {
486
+ const stillAlive = adopted.zellijPaneId
487
+ ? validateZellijAdoptTarget(adopted.zellijSession ?? '', adopted.zellijPaneId, adopted.originalCliPid)
488
+ : validateAdoptTarget(adopted.tmuxTarget ?? '', adopted.originalCliPid);
489
+ if (!stillAlive) {
467
490
  logger.info(`Closing adopt session ${session.sessionId} (original CLI exited)`);
468
491
  sessionStore.closeSession(session.sessionId);
469
492
  continue;
@@ -495,6 +518,9 @@ export async function restoreActiveSessions(activeSessions) {
495
518
  usageLimit: session.usageLimit,
496
519
  lastUserPrompt: session.lastUserPrompt,
497
520
  lastCliInput: session.lastCliInput,
521
+ pendingResponseCardId: session.pendingResponseCardId,
522
+ pendingResponseCardState: session.pendingResponseCardState,
523
+ lastPatchedResponseCardId: session.lastPatchedResponseCardId,
498
524
  };
499
525
  const anchor = sessionAnchorId(ds);
500
526
  messageQueue.ensureQueue(anchor);
@@ -507,7 +533,7 @@ export async function restoreActiveSessions(activeSessions) {
507
533
  // rather than silently overwriting it.
508
534
  await setActiveSessionSafe(activeSessions, sessionKey(anchor, larkAppId), ds);
509
535
  forkAdoptWorker(ds, { restoredFromMetadata: true });
510
- logger.info(`[${session.sessionId.substring(0, 8)}] Restored adopt session (target: ${adopted.tmuxTarget}, scope: ${scope})`);
536
+ logger.info(`[${session.sessionId.substring(0, 8)}] Restored adopt session (target: ${adopted.tmuxTarget ?? `${adopted.zellijSession}/${adopted.zellijPaneId}`}, scope: ${scope})`);
511
537
  continue;
512
538
  }
513
539
  // Adopt sessions without persisted metadata — close (legacy)
@@ -544,6 +570,9 @@ export async function restoreActiveSessions(activeSessions) {
544
570
  usageLimit: session.usageLimit,
545
571
  lastUserPrompt: session.lastUserPrompt,
546
572
  lastCliInput: session.lastCliInput,
573
+ pendingResponseCardId: session.pendingResponseCardId,
574
+ pendingResponseCardState: session.pendingResponseCardState,
575
+ lastPatchedResponseCardId: session.lastPatchedResponseCardId,
547
576
  };
548
577
  const anchor = sessionAnchorId(ds);
549
578
  messageQueue.ensureQueue(anchor);
@@ -553,20 +582,28 @@ export async function restoreActiveSessions(activeSessions) {
553
582
  await setActiveSessionSafe(activeSessions, sessionKey(anchor, larkAppId), ds);
554
583
  logger.debug(`Registered session ${session.sessionId} (scope: ${scope}, anchor: ${anchor})`);
555
584
  }
556
- // Tmux mode: auto-fork workers for sessions with surviving tmux sessions
557
- if (config.daemon.backendType === 'tmux') {
585
+ // Tmux mode: auto-fork workers for sessions with surviving tmux sessions.
586
+ // Skipped under quiet-restart (dev) — sessions resume lazily on the next
587
+ // message instead of re-pushing their cards on every restart.
588
+ if (shouldAutoForkOnRestore(config.daemon.backendType, config.daemon.quietRestart)) {
589
+ // Both persistent backends expose the same static surface; pick by the
590
+ // daemon's backend so zellij sessions also eager-reattach on restart.
591
+ const isZellij = config.daemon.backendType === 'zellij';
592
+ const sessionNameFor = (sid) => isZellij ? ZellijBackend.sessionName(sid) : TmuxBackend.sessionName(sid);
593
+ const hasSession = (n) => isZellij ? ZellijBackend.hasSession(n) : TmuxBackend.hasSession(n);
594
+ const killSession = (n) => isZellij ? ZellijBackend.killSession(n) : TmuxBackend.killSession(n);
595
+ const kind = isZellij ? 'zellij' : 'tmux';
558
596
  for (const [, ds] of activeSessions) {
559
- const tmuxName = TmuxBackend.sessionName(ds.session.sessionId);
560
- if (!TmuxBackend.hasSession(tmuxName))
597
+ const sessName = sessionNameFor(ds.session.sessionId);
598
+ if (!hasSession(sessName))
561
599
  continue;
562
- // Guard against re-attaching to a tmux session that was started with a
563
- // different CLI than the bot is currently configured for. tmux's
564
- // attach-session ignores the bin/args we hand to backend.spawn(), so
565
- // without this check, changing a bot's cliId in bots.json would silently
566
- // resurrect the OLD CLI on restart. Compare persisted session.cliId
567
- // (stamped at fork time in worker-pool.forkWorker) against the bot's
568
- // current config; mismatch kill the stale tmux, let the next message
569
- // trigger a fresh spawn.
600
+ // Guard against re-attaching to a session started with a different CLI
601
+ // than the bot is currently configured for. attach ignores the bin/args
602
+ // we hand to backend.spawn(), so without this check, changing a bot's
603
+ // cliId in bots.json would silently resurrect the OLD CLI on restart.
604
+ // Compare persisted session.cliId (stamped at fork time) against the
605
+ // bot's current config; mismatch kill the stale session, let the next
606
+ // message trigger a fresh spawn.
570
607
  const tag = ds.session.sessionId.substring(0, 8);
571
608
  const sessionCliId = ds.session.cliId;
572
609
  let botCliId;
@@ -575,15 +612,15 @@ export async function restoreActiveSessions(activeSessions) {
575
612
  }
576
613
  catch { /* bot deregistered */ }
577
614
  if (sessionCliId && botCliId && sessionCliId !== botCliId) {
578
- logger.warn(`[${tag}] CLI mismatch (session=${sessionCliId}, bot=${botCliId}), killing stale tmux ${tmuxName}`);
579
- TmuxBackend.killSession(tmuxName);
615
+ logger.warn(`[${tag}] CLI mismatch (session=${sessionCliId}, bot=${botCliId}), killing stale ${kind} ${sessName}`);
616
+ killSession(sessName);
580
617
  continue;
581
618
  }
582
- logger.info(`[${tag}] Tmux session alive, auto-forking worker to re-attach`);
619
+ logger.info(`[${tag}] ${kind} session alive, auto-forking worker to re-attach`);
583
620
  forkWorker(ds, '', true);
584
621
  }
585
622
  }
586
- logger.info(`Restored ${active.length} session(s)${config.daemon.backendType === 'tmux' ? '' : ', waiting for messages to resume'}`);
623
+ logger.info(`Restored ${active.length} session(s)${shouldAutoForkOnRestore(config.daemon.backendType, config.daemon.quietRestart) ? '' : ', waiting for messages to resume'}`);
587
624
  }
588
625
  /**
589
626
  * Reactivate a single closed session — used by the "▶️ 恢复会话" card button
@@ -706,6 +743,9 @@ export async function resumeSession(sessionId, activeSessions) {
706
743
  usageLimit: session.usageLimit,
707
744
  lastUserPrompt: session.lastUserPrompt,
708
745
  lastCliInput: session.lastCliInput,
746
+ pendingResponseCardId: session.pendingResponseCardId,
747
+ pendingResponseCardState: session.pendingResponseCardState,
748
+ lastPatchedResponseCardId: session.lastPatchedResponseCardId,
709
749
  };
710
750
  messageQueue.ensureQueue(anchor);
711
751
  // setActiveSessionSafe over a bare Map.set: the scratch-eviction above