botmux 2.112.0 → 2.114.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 (122) hide show
  1. package/dist/bot-registry.d.ts +31 -0
  2. package/dist/bot-registry.d.ts.map +1 -1
  3. package/dist/bot-registry.js +8 -0
  4. package/dist/bot-registry.js.map +1 -1
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +12 -6
  7. package/dist/cli.js.map +1 -1
  8. package/dist/core/ask-broker.d.ts +1 -1
  9. package/dist/core/ask-broker.d.ts.map +1 -1
  10. package/dist/core/ask-broker.js +2 -1
  11. package/dist/core/ask-broker.js.map +1 -1
  12. package/dist/core/ask-types.d.ts +5 -0
  13. package/dist/core/ask-types.d.ts.map +1 -1
  14. package/dist/core/ask-types.js.map +1 -1
  15. package/dist/core/dashboard-ipc-server.d.ts +10 -0
  16. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  17. package/dist/core/dashboard-ipc-server.js +73 -2
  18. package/dist/core/dashboard-ipc-server.js.map +1 -1
  19. package/dist/core/reply-target.d.ts +30 -1
  20. package/dist/core/reply-target.d.ts.map +1 -1
  21. package/dist/core/reply-target.js +70 -7
  22. package/dist/core/reply-target.js.map +1 -1
  23. package/dist/core/types.d.ts +8 -0
  24. package/dist/core/types.d.ts.map +1 -1
  25. package/dist/core/types.js.map +1 -1
  26. package/dist/core/worker-pool.d.ts +18 -1
  27. package/dist/core/worker-pool.d.ts.map +1 -1
  28. package/dist/core/worker-pool.js +67 -11
  29. package/dist/core/worker-pool.js.map +1 -1
  30. package/dist/daemon.d.ts +1 -1
  31. package/dist/daemon.d.ts.map +1 -1
  32. package/dist/daemon.js +85 -16
  33. package/dist/daemon.js.map +1 -1
  34. package/dist/dashboard/web/bot-defaults-page.d.ts +8 -1
  35. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  36. package/dist/dashboard/web/bot-defaults-page.js +238 -21
  37. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  38. package/dist/dashboard/web/bot-defaults.d.ts +23 -0
  39. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  40. package/dist/dashboard/web/bot-defaults.js +17 -0
  41. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  42. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  43. package/dist/dashboard/web/i18n.js +54 -2
  44. package/dist/dashboard/web/i18n.js.map +1 -1
  45. package/dist/dashboard/web/ui.d.ts +4 -0
  46. package/dist/dashboard/web/ui.d.ts.map +1 -1
  47. package/dist/dashboard/web/ui.js +11 -0
  48. package/dist/dashboard/web/ui.js.map +1 -1
  49. package/dist/dashboard-web/app.js +1 -1
  50. package/dist/dashboard-web/chunks/bot-defaults-page-SRCBF7Z3.js +5 -0
  51. package/dist/dashboard-web/chunks/{chunk-NYZHARIU.js → chunk-3H6MVXXU.js} +8 -6
  52. package/dist/dashboard-web/chunks/{chunk-YBOHL7T7.js → chunk-77KD4TK2.js} +1 -1
  53. package/dist/dashboard-web/chunks/{chunk-CMDPZOPK.js → chunk-D2I5F4MY.js} +1 -1
  54. package/dist/dashboard-web/chunks/{chunk-YWCPDL4S.js → chunk-NGRUZCXP.js} +1 -1
  55. package/dist/dashboard-web/chunks/{connectors-page-DAMP7TTV.js → connectors-page-RM3BJVMV.js} +1 -1
  56. package/dist/dashboard-web/chunks/{groups-page-BPFA356N.js → groups-page-3D4YSYLA.js} +1 -1
  57. package/dist/dashboard-web/chunks/{insights-page-SHOPHTWY.js → insights-page-CRFJKA54.js} +1 -1
  58. package/dist/dashboard-web/chunks/{monitor-room-PXPJGZCN.js → monitor-room-HLK3XDT2.js} +1 -1
  59. package/dist/dashboard-web/chunks/{monitoring-page-4DF54M5Y.js → monitoring-page-E3SNZFFN.js} +1 -1
  60. package/dist/dashboard-web/chunks/{office-page-6OHU6KMZ.js → office-page-MKQ2TENK.js} +1 -1
  61. package/dist/dashboard-web/chunks/overview-page-ICFKKRLV.js +1 -0
  62. package/dist/dashboard-web/chunks/{roles-page-JYTBYKEF.js → roles-page-2DFJ7YRU.js} +1 -1
  63. package/dist/dashboard-web/chunks/{schedules-page-WJ72T7KV.js → schedules-page-S4WDIXH5.js} +1 -1
  64. package/dist/dashboard-web/chunks/{sessions-page-QC56OIAI.js → sessions-page-4XWGUGB5.js} +1 -1
  65. package/dist/dashboard-web/chunks/{settings-page-TCKWEXTN.js → settings-page-OBTE4LYP.js} +1 -1
  66. package/dist/dashboard-web/chunks/{skills-page-RJJNIECW.js → skills-page-CTRQJR47.js} +1 -1
  67. package/dist/dashboard-web/chunks/{team-federation-page-ZMDX3E7K.js → team-federation-page-GICLDKJP.js} +1 -1
  68. package/dist/dashboard-web/chunks/{v3-page-VLLAUQ33.js → v3-page-DI55IRL5.js} +1 -1
  69. package/dist/dashboard-web/chunks/{whiteboards-page-NAO53CKM.js → whiteboards-page-7KFWMILV.js} +1 -1
  70. package/dist/dashboard-web/style.css +113 -1
  71. package/dist/dashboard.js +48 -0
  72. package/dist/dashboard.js.map +1 -1
  73. package/dist/i18n/en.d.ts.map +1 -1
  74. package/dist/i18n/en.js +3 -2
  75. package/dist/i18n/en.js.map +1 -1
  76. package/dist/i18n/zh.d.ts.map +1 -1
  77. package/dist/i18n/zh.js +3 -2
  78. package/dist/i18n/zh.js.map +1 -1
  79. package/dist/im/lark/card-handler.d.ts.map +1 -1
  80. package/dist/im/lark/card-handler.js +9 -2
  81. package/dist/im/lark/card-handler.js.map +1 -1
  82. package/dist/im/lark/client.d.ts +30 -0
  83. package/dist/im/lark/client.d.ts.map +1 -1
  84. package/dist/im/lark/client.js +63 -13
  85. package/dist/im/lark/client.js.map +1 -1
  86. package/dist/im/lark/event-dispatcher.d.ts +7 -3
  87. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  88. package/dist/im/lark/event-dispatcher.js +66 -15
  89. package/dist/im/lark/event-dispatcher.js.map +1 -1
  90. package/dist/im/lark/substitute-command.d.ts.map +1 -1
  91. package/dist/im/lark/substitute-command.js +10 -1
  92. package/dist/im/lark/substitute-command.js.map +1 -1
  93. package/dist/services/oncall-store.d.ts +8 -0
  94. package/dist/services/oncall-store.d.ts.map +1 -1
  95. package/dist/services/oncall-store.js +48 -2
  96. package/dist/services/oncall-store.js.map +1 -1
  97. package/dist/services/open-platform-rename.d.ts +31 -3
  98. package/dist/services/open-platform-rename.d.ts.map +1 -1
  99. package/dist/services/open-platform-rename.js +262 -48
  100. package/dist/services/open-platform-rename.js.map +1 -1
  101. package/dist/services/substitute-mode-normalize.d.ts.map +1 -1
  102. package/dist/services/substitute-mode-normalize.js +17 -1
  103. package/dist/services/substitute-mode-normalize.js.map +1 -1
  104. package/dist/services/substitute-mode-store.d.ts +24 -5
  105. package/dist/services/substitute-mode-store.d.ts.map +1 -1
  106. package/dist/services/substitute-mode-store.js +36 -16
  107. package/dist/services/substitute-mode-store.js.map +1 -1
  108. package/dist/skills/definitions.d.ts +1 -1
  109. package/dist/skills/definitions.d.ts.map +1 -1
  110. package/dist/skills/definitions.js +15 -3
  111. package/dist/skills/definitions.js.map +1 -1
  112. package/dist/types.d.ts +22 -0
  113. package/dist/types.d.ts.map +1 -1
  114. package/dist/utils/bot-routing.d.ts +1 -0
  115. package/dist/utils/bot-routing.d.ts.map +1 -1
  116. package/dist/utils/bot-routing.js +1 -1
  117. package/dist/utils/bot-routing.js.map +1 -1
  118. package/dist/workflows/migration/v2-run-archive-schema.d.ts +2 -2
  119. package/dist/workflows/v3/run-envelope.d.ts +16 -16
  120. package/package.json +1 -1
  121. package/dist/dashboard-web/chunks/bot-defaults-page-RYBL4ZYE.js +0 -4
  122. package/dist/dashboard-web/chunks/overview-page-IHIZ6F5M.js +0 -1
@@ -6,7 +6,32 @@ export type SessionReplyTarget = {
6
6
  } | {
7
7
  mode: 'thread';
8
8
  rootMessageId: string;
9
+ } | {
10
+ mode: 'quote';
11
+ rootMessageId: string;
9
12
  };
13
+ /** Per-turn reply-target entry persisted in `Session.replyTargets` (keyed by
14
+ * turnId, so the key is not repeated inside the value). */
15
+ export interface ReplyTargetEntry {
16
+ rootMessageId: string;
17
+ updatedAt: string;
18
+ quoteOnly?: boolean;
19
+ substitute?: boolean;
20
+ }
21
+ /** The reply target for a SPECIFIC turn: exact per-turn entry first, then the
22
+ * single-slot currentReplyTarget (which only remembers the latest turn — with
23
+ * queued/concurrent turns an earlier turn would otherwise lose its anchor). */
24
+ export declare function pickTurnReplyTarget(s: Pick<Session, 'replyTargets' | 'currentReplyTarget'>, currentTurnId: string | undefined): {
25
+ rootMessageId: string;
26
+ turnId: string;
27
+ quoteOnly?: boolean;
28
+ substitute?: boolean;
29
+ } | undefined;
30
+ /** Whether `turnId` is a substitute (avatar-style) turn. With no turn context,
31
+ * falls back to the latest-accepted turn's flag — callers that have a turnId
32
+ * (screen updates, turn reactions) get an exact per-turn answer so a queued
33
+ * normal turn doesn't inherit a substitute turn's card-off (or vice versa). */
34
+ export declare function isSubstituteTurn(ds: Pick<DaemonSession, 'session' | 'currentReplyTarget'>, turnId?: string): boolean;
10
35
  export declare function resolveSessionReplyTarget(ds: Pick<DaemonSession, 'scope' | 'chatId' | 'session' | 'currentReplyTarget'>, turnId?: string): SessionReplyTarget;
11
36
  export declare function resolveSendTarget(opts: {
12
37
  into?: string;
@@ -16,9 +41,13 @@ export declare function resolveSendTarget(opts: {
16
41
  rootMessageId: string;
17
42
  replyTargetRootId?: string;
18
43
  replyTargetTurnId?: string;
44
+ replyTargetQuoteOnly?: boolean;
19
45
  currentTurnId?: string;
20
46
  }): SessionReplyTarget;
21
- export declare function beginReplyTargetTurn(ds: DaemonSession, replyRootId: string | undefined, turnId: string, nowIso?: string): void;
47
+ export declare function beginReplyTargetTurn(ds: DaemonSession, replyRootId: string | undefined, turnId: string, nowIso?: string, opts?: {
48
+ quoteOnly?: boolean;
49
+ substitute?: boolean;
50
+ }): void;
22
51
  /**
23
52
  * Effective turnId for a daemon-side message. Callers that know their turn
24
53
  * (worker final_output, placeholder cards) pass it explicitly and the
@@ -1 +1 @@
1
- {"version":3,"file":"reply-target.d.ts","sourceRoot":"","sources":["../../src/core/reply-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,oBAAoB,CAAC,EAC9E,MAAM,CAAC,EAAE,MAAM,GACd,kBAAkB,CASpB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,kBAAkB,CASrB;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,aAAa,EACjB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,SAA2B,GAChC,IAAI,CAiBN;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,oBAAoB,CAAC,EACzD,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAIzE"}
1
+ {"version":3,"file":"reply-target.d.ts","sourceRoot":"","sources":["../../src/core/reply-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C;4DAC4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AASD;;gFAEgF;AAChF,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,oBAAoB,CAAC,EACvD,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAQlG;AAED;;;gFAGgF;AAChF,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,oBAAoB,CAAC,EACzD,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAYT;AAED,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,oBAAoB,CAAC,EAC9E,MAAM,CAAC,EAAE,MAAM,GACd,kBAAkB,CAmBpB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,kBAAkB,CAYrB;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,aAAa,EACjB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,SAA2B,EACjC,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACnD,IAAI,CA+BN;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,oBAAoB,CAAC,EACzD,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAIzE"}
@@ -1,8 +1,54 @@
1
+ /** Bound on `Session.replyTargets`: chat-scope sessions are long-lived and a
2
+ * busy substitute group could otherwise grow the map without limit. 32 keeps
3
+ * every plausibly-still-in-flight turn (queue depth is far smaller) while the
4
+ * oldest entries fall off. Evicted turns degrade to the single-slot
5
+ * currentReplyTarget path — same behavior as before the map existed. */
6
+ const REPLY_TARGETS_MAX = 32;
7
+ /** The reply target for a SPECIFIC turn: exact per-turn entry first, then the
8
+ * single-slot currentReplyTarget (which only remembers the latest turn — with
9
+ * queued/concurrent turns an earlier turn would otherwise lose its anchor). */
10
+ export function pickTurnReplyTarget(s, currentTurnId) {
11
+ if (currentTurnId) {
12
+ const entry = s.replyTargets?.[currentTurnId];
13
+ if (entry?.rootMessageId) {
14
+ return { rootMessageId: entry.rootMessageId, turnId: currentTurnId, quoteOnly: entry.quoteOnly, substitute: entry.substitute };
15
+ }
16
+ }
17
+ return s.currentReplyTarget;
18
+ }
19
+ /** Whether `turnId` is a substitute (avatar-style) turn. With no turn context,
20
+ * falls back to the latest-accepted turn's flag — callers that have a turnId
21
+ * (screen updates, turn reactions) get an exact per-turn answer so a queued
22
+ * normal turn doesn't inherit a substitute turn's card-off (or vice versa). */
23
+ export function isSubstituteTurn(ds, turnId) {
24
+ const slot = ds.currentReplyTarget ?? ds.session.currentReplyTarget;
25
+ if (turnId) {
26
+ const entry = ds.session.replyTargets?.[turnId];
27
+ if (entry)
28
+ return entry.substitute === true;
29
+ // With explicit turn context, the single slot only speaks for ITS OWN
30
+ // turn. A rootless normal turn leaves no map entry (begin cleared the
31
+ // slot) — it must not inherit a later substitute turn's flag after that
32
+ // turn overwrote the slot (and vice versa).
33
+ return !!slot && slot.turnId === turnId && slot.substitute === true;
34
+ }
35
+ return slot?.substitute === true;
36
+ }
1
37
  export function resolveSessionReplyTarget(ds, turnId) {
2
- const target = ds.currentReplyTarget ?? ds.session.currentReplyTarget;
3
38
  if (ds.scope === 'chat') {
39
+ // Exact per-turn anchor first: survives a later turn overwriting the
40
+ // single slot while this turn is still executing/queued.
41
+ const turnEntry = turnId ? ds.session.replyTargets?.[turnId] : undefined;
42
+ if (turnEntry?.rootMessageId) {
43
+ return turnEntry.quoteOnly
44
+ ? { mode: 'quote', rootMessageId: turnEntry.rootMessageId }
45
+ : { mode: 'thread', rootMessageId: turnEntry.rootMessageId };
46
+ }
47
+ const target = ds.currentReplyTarget ?? ds.session.currentReplyTarget;
4
48
  if (target?.rootMessageId && !!turnId && target.turnId === turnId) {
5
- return { mode: 'thread', rootMessageId: target.rootMessageId };
49
+ return target.quoteOnly
50
+ ? { mode: 'quote', rootMessageId: target.rootMessageId }
51
+ : { mode: 'thread', rootMessageId: target.rootMessageId };
6
52
  }
7
53
  return { mode: 'plain', chatId: ds.chatId };
8
54
  }
@@ -14,13 +60,16 @@ export function resolveSendTarget(opts) {
14
60
  if (opts.topLevel)
15
61
  return { mode: 'plain', chatId: opts.chatId };
16
62
  if (opts.chatScope) {
17
- return opts.replyTargetRootId && opts.replyTargetTurnId && opts.replyTargetTurnId === opts.currentTurnId
18
- ? { mode: 'thread', rootMessageId: opts.replyTargetRootId }
19
- : { mode: 'plain', chatId: opts.chatId };
63
+ if (opts.replyTargetRootId && opts.replyTargetTurnId && opts.replyTargetTurnId === opts.currentTurnId) {
64
+ return opts.replyTargetQuoteOnly
65
+ ? { mode: 'quote', rootMessageId: opts.replyTargetRootId }
66
+ : { mode: 'thread', rootMessageId: opts.replyTargetRootId };
67
+ }
68
+ return { mode: 'plain', chatId: opts.chatId };
20
69
  }
21
70
  return { mode: 'thread', rootMessageId: opts.rootMessageId };
22
71
  }
23
- export function beginReplyTargetTurn(ds, replyRootId, turnId, nowIso = new Date().toISOString()) {
72
+ export function beginReplyTargetTurn(ds, replyRootId, turnId, nowIso = new Date().toISOString(), opts) {
24
73
  if (ds.scope !== 'chat')
25
74
  return;
26
75
  if (replyRootId) {
@@ -29,11 +78,25 @@ export function beginReplyTargetTurn(ds, replyRootId, turnId, nowIso = new Date(
29
78
  createdAt: aliases[replyRootId]?.createdAt ?? nowIso,
30
79
  lastUsedAt: nowIso,
31
80
  };
32
- const target = { rootMessageId: replyRootId, turnId, updatedAt: nowIso };
81
+ const target = { rootMessageId: replyRootId, turnId, updatedAt: nowIso, quoteOnly: opts?.quoteOnly, substitute: opts?.substitute };
33
82
  ds.replyThreadAliases = aliases;
34
83
  ds.currentReplyTarget = target;
35
84
  ds.session.replyThreadAliases = aliases;
36
85
  ds.session.currentReplyTarget = target;
86
+ // Per-turn map alongside the single slot: a later turn's begin no longer
87
+ // strands this turn's anchor (session-only field — persisted by the
88
+ // sessionStore.updateSession the daemon calls right after every begin,
89
+ // same lifecycle as docCommentTargets).
90
+ const targets = { ...(ds.session.replyTargets ?? {}) };
91
+ targets[turnId] = { rootMessageId: replyRootId, updatedAt: nowIso, quoteOnly: opts?.quoteOnly, substitute: opts?.substitute };
92
+ const keys = Object.keys(targets);
93
+ if (keys.length > REPLY_TARGETS_MAX) {
94
+ keys
95
+ .sort((a, b) => (targets[a].updatedAt < targets[b].updatedAt ? -1 : 1))
96
+ .slice(0, keys.length - REPLY_TARGETS_MAX)
97
+ .forEach(k => { delete targets[k]; });
98
+ }
99
+ ds.session.replyTargets = targets;
37
100
  return;
38
101
  }
39
102
  ds.currentReplyTarget = undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"reply-target.js","sourceRoot":"","sources":["../../src/core/reply-target.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reply-target.js","sourceRoot":"","sources":["../../src/core/reply-target.ts"],"names":[],"mappings":"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"}
@@ -145,7 +145,15 @@ export interface DaemonSession {
145
145
  rootMessageId: string;
146
146
  turnId: string;
147
147
  updatedAt: string;
148
+ quoteOnly?: boolean;
149
+ substitute?: boolean;
148
150
  };
151
+ /** One-shot runtime flag set by the daemon when creating a substitute
152
+ * (分身) session. The worker-pool consumes and clears it once the worker
153
+ * reports ready, triggering a one-time substitute control card post so the
154
+ * new session is immediately controllable. In-memory only (resets on daemon
155
+ * restart). See core/worker-pool.ts and the substitute session creation path. */
156
+ pendingSubstituteControlCard?: boolean;
149
157
  currentTurnTitle?: string;
150
158
  cardPatchInFlight?: boolean;
151
159
  pendingCardJson?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AA0BA;;6DAE6D;AAC7D,MAAM,UAAU,iBAAiB,CAAC,EAAc;IAC9C,IAAI,EAAE,CAAC,WAAW,KAAK,YAAY,IAAI,EAAE,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,WAAW,CAAC;IAC1F,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/C,CAAC;AA8MD;;;;;uDAKuD;AACvD,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,SAAiB;IAC5D,OAAO,GAAG,QAAQ,KAAK,SAAS,EAAE,CAAC;AACrC,CAAC;AAED;;+BAE+B;AAC/B,MAAM,UAAU,eAAe,CAAC,EAAiB;IAC/C,OAAO,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;AACpE,CAAC;AAED;;;wCAGwC;AACxC,MAAM,UAAU,gBAAgB,CAAC,EAAiB;IAChD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB;QACzC,CAAC,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE;QACvC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACxB,OAAO,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED;;0DAE0D;AAC1D,MAAM,UAAU,kBAAkB,CAAC,EAA2C;IAC5E,OAAO,EAAE,CAAC,KAAK,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AA0BA;;6DAE6D;AAC7D,MAAM,UAAU,iBAAiB,CAAC,EAAc;IAC9C,IAAI,EAAE,CAAC,WAAW,KAAK,YAAY,IAAI,EAAE,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,WAAW,CAAC;IAC1F,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/C,CAAC;AAoND;;;;;uDAKuD;AACvD,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,SAAiB;IAC5D,OAAO,GAAG,QAAQ,KAAK,SAAS,EAAE,CAAC;AACrC,CAAC;AAED;;+BAE+B;AAC/B,MAAM,UAAU,eAAe,CAAC,EAAiB;IAC/C,OAAO,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;AACpE,CAAC;AAED;;;wCAGwC;AACxC,MAAM,UAAU,gBAAgB,CAAC,EAAiB;IAChD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB;QACzC,CAAC,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE;QACvC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACxB,OAAO,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED;;0DAE0D;AAC1D,MAAM,UAAU,kBAAkB,CAAC,EAA2C;IAC5E,OAAO,EAAE,CAAC,KAAK,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC"}
@@ -232,6 +232,14 @@ export interface WriteLinkOwnerDelivery {
232
232
  total: number;
233
233
  channels: Array<'ephemeral' | 'dm' | 'failed'>;
234
234
  }
235
+ /**
236
+ * Build the write-enabled session card (writable terminal URL + manage buttons)
237
+ * for `ds`, or null when the terminal isn't up yet (no worker port/token).
238
+ * Shared by the owner-fanout ({@link deliverWriteLinkCardToOwners}, behind
239
+ * `botmux term-link`) and the single-operator delivery
240
+ * ({@link deliverWritableTerminalCardTo}, behind the `/term` slash command).
241
+ */
242
+ export declare function buildWritableTerminalCard(ds: DaemonSession): string | null;
235
243
  /**
236
244
  * Build the write-enabled session card for `ds` and deliver it privately to the
237
245
  * bot's owner(s) — the payload behind the `botmux term-link` CLI command.
@@ -252,6 +260,15 @@ export declare function deliverWriteLinkCardToOwners(ds: DaemonSession): Promise
252
260
  * 'not_ready' when the terminal isn't up yet, else the channel actually used.
253
261
  */
254
262
  export declare function deliverWritableTerminalCardTo(ds: DaemonSession, operatorOpenId: string): Promise<'ephemeral' | 'dm' | 'failed' | 'not_ready'>;
263
+ export interface SubstituteControlCardDelivery {
264
+ sent: number;
265
+ total: number;
266
+ }
267
+ /**
268
+ * DM a writable-terminal control card to the bot's owner(s) for a substitute-mode session.
269
+ * Guards against duplicate sends via `session.substituteControlCardSent`.
270
+ */
271
+ export declare function deliverSubstituteControlCard(ds: DaemonSession): Promise<SubstituteControlCardDelivery>;
255
272
  /**
256
273
  * Deliver a status confirmation (restart / session-closed / resume) as a
257
274
  * "visible-to-the-operator-only" ephemeral message in a plain group; on failure
@@ -274,7 +291,7 @@ export declare function deliverEphemeralOrReply(ds: DaemonSession, operatorOpenI
274
291
  * Otherwise stores the card JSON on `ds.pendingCardJson` (overwriting
275
292
  * any previously queued value — only the latest state matters).
276
293
  */
277
- export declare function scheduleCardPatch(ds: DaemonSession, cardJson: string): void;
294
+ export declare function scheduleCardPatch(ds: DaemonSession, cardJson: string, turnId?: string): void;
278
295
  export declare const restartCounts: Map<string, {
279
296
  count: number;
280
297
  lastAt: number;
@@ -1 +1 @@
1
- {"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../../src/core/worker-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../../src/core/worker-pool.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ import { randomBytes, randomUUID } from 'node:crypto';
17
17
  import { config } from '../config.js';
18
18
  import * as sessionStore from '../services/session-store.js';
19
19
  import { persistStreamCardState, rememberLastCliInput } from './session-manager.js';
20
- import { fallbackTurnId } from './reply-target.js';
20
+ import { fallbackTurnId, isSubstituteTurn } from './reply-target.js';
21
21
  import { updateMessage, deleteMessage, sendEphemeralCard, sendUserMessage, addReaction, removeReaction, MessageWithdrawnError } from '../im/lark/client.js';
22
22
  import { buildStreamingCard, buildPrivateSnapshotCard, buildSessionCard, buildTuiPromptCard, buildTuiPromptResolvedCard, buildRelayedFrozenCard, getCliDisplayName } from '../im/lark/card-builder.js';
23
23
  import { loadFrozenCards, saveFrozenCards } from '../services/frozen-card-store.js';
@@ -163,7 +163,7 @@ export function isRelayableRealSession(ds) {
163
163
  // session card. Read fresh from the in-memory registry so a dashboard toggle
164
164
  // takes effect without a daemon restart. The `/card` command can override it
165
165
  // per-session via `ds.streamingCardForced` (manually summon a live card).
166
- function streamingCardDisabled(ds) {
166
+ function streamingCardDisabled(ds, turnId) {
167
167
  if (isDocNativeSession(ds))
168
168
  return true;
169
169
  if (ds.streamingCardForced)
@@ -171,7 +171,10 @@ function streamingCardDisabled(ds) {
171
171
  try {
172
172
  const cfg = getBot(ds.larkAppId).config;
173
173
  return cfg.disableStreamingCard === true
174
- || (!!ds.chatId && !!cfg.noCardChats?.includes(ds.chatId));
174
+ || (!!ds.chatId && !!cfg.noCardChats?.includes(ds.chatId))
175
+ // Per-turn substitute gate — see streamingCardDisabledFor in daemon.ts.
176
+ // Callers with a turnId (screen updates) get an exact per-turn answer.
177
+ || isSubstituteTurn(ds, turnId);
175
178
  }
176
179
  catch {
177
180
  return false;
@@ -682,7 +685,7 @@ export async function deliverWriteLinkCard(ds, operatorOpenId, cardJson) {
682
685
  * `botmux term-link`) and the single-operator delivery
683
686
  * ({@link deliverWritableTerminalCardTo}, behind the `/term` slash command).
684
687
  */
685
- function buildWritableTerminalCard(ds) {
688
+ export function buildWritableTerminalCard(ds) {
686
689
  // Riff backend: the sandbox URL is the writable link — no local worker/token needed.
687
690
  if (ds.riffAccessUrl) {
688
691
  const botCfg = getBot(ds.larkAppId).config;
@@ -745,6 +748,44 @@ export async function deliverWritableTerminalCardTo(ds, operatorOpenId) {
745
748
  return 'not_ready';
746
749
  return deliverWriteLinkCard(ds, operatorOpenId, cardJson);
747
750
  }
751
+ /**
752
+ * DM a writable-terminal control card to the bot's owner(s) for a substitute-mode session.
753
+ * Guards against duplicate sends via `session.substituteControlCardSent`.
754
+ */
755
+ export async function deliverSubstituteControlCard(ds) {
756
+ if (ds.session.substituteControlCardSent)
757
+ return { sent: 0, total: 0 };
758
+ const cardJson = buildWritableTerminalCard(ds);
759
+ if (!cardJson) {
760
+ logger.warn(`[${tag(ds)}] substitute control card skipped: terminal not ready`);
761
+ return { sent: 0, total: 0 };
762
+ }
763
+ const audience = resolvePrivateCardAudience(ds);
764
+ if (audience.length === 0) {
765
+ logger.debug(`[${tag(ds)}] substitute control card skipped: no owner audience`);
766
+ return { sent: 0, total: 0 };
767
+ }
768
+ let sent = 0;
769
+ const CONCURRENCY = 5;
770
+ for (let i = 0; i < audience.length; i += CONCURRENCY) {
771
+ const batch = audience.slice(i, i + CONCURRENCY);
772
+ await Promise.all(batch.map(async (openId) => {
773
+ try {
774
+ await sendUserMessage(ds.larkAppId, openId, cardJson, 'interactive');
775
+ sent++;
776
+ }
777
+ catch (err) {
778
+ logger.warn(`[${tag(ds)}] substitute control card DM to ${openId.substring(0, 8)}… failed: ${err instanceof Error ? err.message : err}`);
779
+ }
780
+ }));
781
+ }
782
+ if (sent > 0) {
783
+ ds.session.substituteControlCardSent = true;
784
+ sessionStore.updateSession(ds.session);
785
+ logger.info(`[${tag(ds)}] substitute control card DM'd to ${sent}/${audience.length} owner(s)`);
786
+ }
787
+ return { sent, total: audience.length };
788
+ }
748
789
  /**
749
790
  * Deliver a status confirmation (restart / session-closed / resume) as a
750
791
  * "visible-to-the-operator-only" ephemeral message in a plain group; on failure
@@ -791,9 +832,12 @@ export async function deliverEphemeralOrReply(ds, operatorOpenId, content, msgTy
791
832
  * Otherwise stores the card JSON on `ds.pendingCardJson` (overwriting
792
833
  * any previously queued value — only the latest state matters).
793
834
  */
794
- export function scheduleCardPatch(ds, cardJson) {
835
+ export function scheduleCardPatch(ds, cardJson, turnId) {
795
836
  // Bot opted out of the streaming card — never patch one into existence.
796
- if (streamingCardDisabled(ds))
837
+ // Turn-exact when the caller has turn context (screen updates): a substitute
838
+ // turn arriving mid-PATCH must not suppress a normal turn's card (or vice
839
+ // versa) just because it overwrote the latest-turn slot.
840
+ if (streamingCardDisabled(ds, turnId))
797
841
  return;
798
842
  ds.pendingCardJson = cardJson;
799
843
  // Capture the card ID now — by the time flushCardPatch runs, ds.streamCardId
@@ -2008,6 +2052,13 @@ function setupWorkerHandlers(ds, worker, startupState = { ready: false, failureN
2008
2052
  patch: { webPort: msg.port },
2009
2053
  },
2010
2054
  });
2055
+ // Substitute-mode control card: DM owner(s) a writable terminal + manage buttons.
2056
+ // Consumed before any early break below so avatar-style (card-off) sessions
2057
+ // still deliver the owner control card.
2058
+ if (ds.pendingSubstituteControlCard) {
2059
+ ds.pendingSubstituteControlCard = false;
2060
+ void deliverSubstituteControlCard(ds);
2061
+ }
2011
2062
  if (managedAuxUiSuppressed(msg.turnId, msg.dispatchAttempt)) {
2012
2063
  logger.info(`[${t}] Managed VC receiver — suppressing ready/streaming card output`);
2013
2064
  break;
@@ -2015,8 +2066,11 @@ function setupWorkerHandlers(ds, worker, startupState = { ready: false, failureN
2015
2066
  // Bot opted out of the streaming card: the terminal is up and the
2016
2067
  // final answer will still arrive via `botmux send`; just don't post the
2017
2068
  // live status card. (workerPort/token above are still set so the web
2018
- // terminal + dashboard keep working.)
2019
- if (streamingCardDisabled(ds)) {
2069
+ // terminal + dashboard keep working.) Ready carries the spawning
2070
+ // turn's id — gate on THAT turn, not on whichever turn was accepted
2071
+ // last (a queued normal turn must not resurrect a substitute turn's
2072
+ // initial card, nor the reverse).
2073
+ if (streamingCardDisabled(ds, msg.turnId)) {
2020
2074
  logger.info(`[${t}] Streaming card disabled for this bot — skipping card post`);
2021
2075
  break;
2022
2076
  }
@@ -2275,8 +2329,10 @@ function setupWorkerHandlers(ds, worker, startupState = { ready: false, failureN
2275
2329
  if (managedAuxUiSuppressed(msg.turnId, msg.dispatchAttempt))
2276
2330
  break;
2277
2331
  // Bot opted out of the streaming card — dashboard SSE above already got
2278
- // the status patch; just don't touch any Lark card.
2279
- if (streamingCardDisabled(ds))
2332
+ // the status patch; just don't touch any Lark card. Turn-exact: a
2333
+ // substitute turn's screen updates stay card-less even after a queued
2334
+ // normal turn overwrote currentReplyTarget (and vice versa).
2335
+ if (streamingCardDisabled(ds, msg.turnId))
2280
2336
  break;
2281
2337
  // Restart recovery: a restored worker may emit screen updates as the CLI
2282
2338
  // redraws on resume. Stay silent (no post/patch) until the first real
@@ -2336,7 +2392,7 @@ function setupWorkerHandlers(ds, worker, startupState = { ready: false, failureN
2336
2392
  if (!statusChanged)
2337
2393
  break;
2338
2394
  const cardJson = buildStreamingCard(ds.session.sessionId, sessionAnchorId(ds), readUrl, turnTitle, msg.content, ds.lastScreenStatus, effectiveCliId, mode, ds.streamCardNonce, ds.currentImageKey, isAdopt, showTakeover, loc, cardUsageLimit(ds), writableTerminalLinkFor(ds), isLocalCliOpenReady(ds, { cliId: effectiveCliId }));
2339
- scheduleCardPatch(ds, cardJson);
2395
+ scheduleCardPatch(ds, cardJson, msg.turnId);
2340
2396
  }
2341
2397
  break;
2342
2398
  }