@llblab/pi-telegram 0.52.2 → 0.53.1

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 (204) hide show
  1. package/AGENTS.md +9 -7
  2. package/BACKLOG.md +1 -18
  3. package/CHANGELOG.md +15 -0
  4. package/README.md +7 -11
  5. package/api/commands.ts +3 -0
  6. package/dist/api/commands.d.ts +1 -1
  7. package/dist/lib/activity-verbosity.d.ts +1 -5
  8. package/dist/lib/activity-verbosity.js +15 -42
  9. package/dist/lib/activity.d.ts +9 -0
  10. package/dist/lib/activity.js +39 -10
  11. package/dist/lib/agent-messages.js +7 -3
  12. package/dist/lib/bindings.d.ts +43 -5
  13. package/dist/lib/bindings.js +163 -20
  14. package/dist/lib/bus-api.d.ts +12 -0
  15. package/dist/lib/bus-api.js +182 -79
  16. package/dist/lib/bus-follower.d.ts +111 -31
  17. package/dist/lib/bus-follower.js +1324 -359
  18. package/dist/lib/bus-leader.d.ts +41 -91
  19. package/dist/lib/bus-leader.js +969 -637
  20. package/dist/lib/bus-transport.js +16 -9
  21. package/dist/lib/bus.d.ts +215 -18
  22. package/dist/lib/bus.js +1048 -327
  23. package/dist/lib/channel-posts.d.ts +5 -0
  24. package/dist/lib/channel-posts.js +434 -261
  25. package/dist/lib/command-templates.d.ts +26 -5
  26. package/dist/lib/command-templates.js +92 -176
  27. package/dist/lib/commands.d.ts +168 -82
  28. package/dist/lib/commands.js +1409 -291
  29. package/dist/lib/config.d.ts +1 -8
  30. package/dist/lib/config.js +34 -76
  31. package/dist/lib/delivery.d.ts +2 -2
  32. package/dist/lib/delivery.js +16 -16
  33. package/dist/lib/extension.js +639 -171
  34. package/dist/lib/generative-app-worker.mjs +19 -7
  35. package/dist/lib/generative-apps.d.ts +0 -5
  36. package/dist/lib/generative-apps.js +61 -49
  37. package/dist/lib/inbound.d.ts +5 -0
  38. package/dist/lib/inbound.js +35 -59
  39. package/dist/lib/journal.d.ts +33 -3
  40. package/dist/lib/journal.js +2063 -782
  41. package/dist/lib/lifecycle.d.ts +2 -6
  42. package/dist/lib/lifecycle.js +75 -58
  43. package/dist/lib/locks.d.ts +29 -3
  44. package/dist/lib/locks.js +289 -108
  45. package/dist/lib/logging.js +50 -14
  46. package/dist/lib/media.d.ts +22 -1
  47. package/dist/lib/media.js +46 -28
  48. package/dist/lib/menu-model.d.ts +19 -5
  49. package/dist/lib/menu-model.js +53 -11
  50. package/dist/lib/menu-queue.d.ts +5 -4
  51. package/dist/lib/menu-queue.js +45 -63
  52. package/dist/lib/menu-settings.d.ts +5 -4
  53. package/dist/lib/menu-settings.js +114 -78
  54. package/dist/lib/menu-status.d.ts +1 -1
  55. package/dist/lib/menu-status.js +8 -25
  56. package/dist/lib/menu-thinking.d.ts +6 -1
  57. package/dist/lib/menu-thinking.js +14 -21
  58. package/dist/lib/menu.d.ts +8 -61
  59. package/dist/lib/menu.js +92 -164
  60. package/dist/lib/model.d.ts +1 -1
  61. package/dist/lib/model.js +2 -16
  62. package/dist/lib/outbound-attachments.d.ts +6 -27
  63. package/dist/lib/outbound-attachments.js +45 -38
  64. package/dist/lib/outbound-buttons.js +22 -16
  65. package/dist/lib/outbound-markup.d.ts +0 -2
  66. package/dist/lib/outbound-markup.js +51 -64
  67. package/dist/lib/outbound-voice.js +6 -3
  68. package/dist/lib/outbound.d.ts +6 -6
  69. package/dist/lib/outbound.js +65 -51
  70. package/dist/lib/ownership.js +6 -2
  71. package/dist/lib/paths.d.ts +5 -0
  72. package/dist/lib/paths.js +37 -21
  73. package/dist/lib/pi.d.ts +2 -0
  74. package/dist/lib/pi.js +8 -1
  75. package/dist/lib/polling.d.ts +21 -37
  76. package/dist/lib/polling.js +59 -50
  77. package/dist/lib/preview.js +39 -19
  78. package/dist/lib/process-identity.d.ts +24 -0
  79. package/dist/lib/process-identity.js +133 -0
  80. package/dist/lib/prompts.js +2 -7
  81. package/dist/lib/queue.d.ts +14 -16
  82. package/dist/lib/queue.js +252 -127
  83. package/dist/lib/recovery.d.ts +2 -83
  84. package/dist/lib/recovery.js +20 -274
  85. package/dist/lib/replies.d.ts +16 -24
  86. package/dist/lib/replies.js +99 -116
  87. package/dist/lib/routing.d.ts +120 -7
  88. package/dist/lib/routing.js +4667 -1152
  89. package/dist/lib/runtime.d.ts +1 -11
  90. package/dist/lib/sections.d.ts +4 -29
  91. package/dist/lib/sections.js +7 -20
  92. package/dist/lib/skills.js +4 -3
  93. package/dist/lib/status.js +86 -57
  94. package/dist/lib/sync.d.ts +1 -3
  95. package/dist/lib/sync.js +67 -43
  96. package/dist/lib/target.d.ts +4 -0
  97. package/dist/lib/target.js +18 -0
  98. package/dist/lib/telegram-api.d.ts +18 -13
  99. package/dist/lib/telegram-api.js +148 -53
  100. package/dist/lib/text-groups.js +4 -39
  101. package/dist/lib/thread-cleanup-manager.d.ts +6 -27
  102. package/dist/lib/thread-cleanup-manager.js +369 -186
  103. package/dist/lib/thread-display.d.ts +1 -2
  104. package/dist/lib/thread-display.js +58 -38
  105. package/dist/lib/thread-naming.d.ts +28 -8
  106. package/dist/lib/thread-naming.js +175 -66
  107. package/dist/lib/thread-reconciler.d.ts +42 -16
  108. package/dist/lib/thread-reconciler.js +90 -50
  109. package/dist/lib/threads.d.ts +82 -20
  110. package/dist/lib/threads.js +2247 -855
  111. package/dist/lib/time-injection.js +1 -2
  112. package/dist/lib/turns.js +1 -19
  113. package/dist/lib/updates.d.ts +169 -80
  114. package/dist/lib/updates.js +2418 -641
  115. package/dist/lib/voice.d.ts +7 -22
  116. package/dist/lib/voice.js +7 -22
  117. package/dist/lib/wire.js +1 -1
  118. package/dist/lib/workspace-admission.d.ts +3 -1
  119. package/dist/lib/workspace-admission.js +425 -211
  120. package/dist/lib/workspace-identity.js +8 -13
  121. package/dist/lib/workspace-retirement.d.ts +1 -1
  122. package/dist/lib/workspace-retirement.js +328 -140
  123. package/dist/lib/workspace-slots.js +8 -4
  124. package/dist/package.json +1 -1
  125. package/docs/architecture.md +31 -29
  126. package/docs/inbound.md +1 -1
  127. package/docs/multi-instance-bus.md +15 -3
  128. package/docs/outbound.md +1 -1
  129. package/docs/public-api.md +29 -1
  130. package/docs/ui-style.md +25 -8
  131. package/lib/activity-verbosity.ts +59 -82
  132. package/lib/activity.ts +146 -102
  133. package/lib/agent-messages.ts +12 -5
  134. package/lib/bindings.ts +389 -82
  135. package/lib/bus-api.ts +263 -102
  136. package/lib/bus-follower.ts +2440 -601
  137. package/lib/bus-leader.ts +2209 -1290
  138. package/lib/bus-transport.ts +46 -12
  139. package/lib/bus.ts +1673 -444
  140. package/lib/channel-posts.ts +848 -327
  141. package/lib/command-templates.ts +152 -265
  142. package/lib/commands.ts +2398 -555
  143. package/lib/config.ts +177 -170
  144. package/lib/delivery.ts +41 -29
  145. package/lib/extension.ts +1206 -433
  146. package/lib/generative-app-worker.mjs +19 -7
  147. package/lib/generative-apps.ts +324 -211
  148. package/lib/inbound.ts +95 -97
  149. package/lib/journal.ts +5311 -1763
  150. package/lib/keyboard.ts +1 -3
  151. package/lib/lifecycle.ts +128 -78
  152. package/lib/locks.ts +677 -203
  153. package/lib/logging.ts +147 -58
  154. package/lib/media.ts +82 -43
  155. package/lib/menu-model.ts +85 -18
  156. package/lib/menu-queue.ts +88 -129
  157. package/lib/menu-settings.ts +260 -155
  158. package/lib/menu-status.ts +20 -60
  159. package/lib/menu-thinking.ts +41 -56
  160. package/lib/menu.ts +112 -285
  161. package/lib/model.ts +8 -22
  162. package/lib/outbound-attachments.ts +156 -125
  163. package/lib/outbound-buttons.ts +76 -49
  164. package/lib/outbound-markup.ts +96 -94
  165. package/lib/outbound-voice.ts +33 -27
  166. package/lib/outbound.ts +128 -125
  167. package/lib/ownership.ts +19 -10
  168. package/lib/paths.ts +148 -49
  169. package/lib/pi.ts +35 -15
  170. package/lib/polling.ts +144 -147
  171. package/lib/preview.ts +93 -40
  172. package/lib/process-identity.ts +164 -0
  173. package/lib/prompts.ts +4 -11
  174. package/lib/queue.ts +516 -301
  175. package/lib/recovery.ts +50 -454
  176. package/lib/rendering.ts +1 -3
  177. package/lib/replies.ts +248 -209
  178. package/lib/routing.ts +8509 -2186
  179. package/lib/runtime.ts +1 -12
  180. package/lib/sections.ts +24 -89
  181. package/lib/setup.ts +1 -3
  182. package/lib/skills.ts +9 -4
  183. package/lib/status.ts +215 -110
  184. package/lib/sync.ts +448 -361
  185. package/lib/target.ts +22 -3
  186. package/lib/telegram-api.ts +302 -127
  187. package/lib/text-groups.ts +5 -39
  188. package/lib/thread-cleanup-manager.ts +833 -331
  189. package/lib/thread-display.ts +213 -97
  190. package/lib/thread-naming.ts +232 -87
  191. package/lib/thread-reconciler.ts +155 -72
  192. package/lib/threads.ts +5318 -1845
  193. package/lib/time-injection.ts +1 -4
  194. package/lib/turns.ts +15 -28
  195. package/lib/updates.ts +5184 -1612
  196. package/lib/voice.ts +7 -35
  197. package/lib/wire.ts +1 -1
  198. package/lib/workspace-admission.ts +996 -416
  199. package/lib/workspace-identity.ts +14 -17
  200. package/lib/workspace-retirement.ts +878 -376
  201. package/lib/workspace-slots.ts +22 -13
  202. package/package.json +1 -1
  203. package/scripts/check-downgrade.mjs +0 -472
  204. package/scripts/measure-workspace.mjs +0 -108
@@ -4,17 +4,16 @@
4
4
  * Owns leader-only runtime orchestration: follower registration envelopes, follower API proxying,
5
5
  * leader activation hot-switching, local bus server startup, and stale follower pruning.
6
6
  */
7
- import * as Sync from "./sync.ts";
7
+ import { type TelegramBusEnvelope, type TelegramBusLeaderQueueHandoffOffer, type TelegramBusFollowerRegistry, type TelegramBusFollowerView, type TelegramBusInstanceRegistration, type TelegramBusProtocolIdentity, type TelegramBusSelectedMenuDelivery, type TelegramBusSocketPathSource } from "./bus.ts";
8
8
  import type { TelegramThreadDisplayMode } from "./config.ts";
9
- import * as ThreadReconciler from "./thread-reconciler.ts";
10
- import { type TelegramApiCallOptions } from "./telegram-api.ts";
11
- import type { TelegramTarget } from "./target.ts";
12
9
  import type { TelegramAttachmentSource } from "./media.ts";
10
+ import * as Sync from "./sync.ts";
11
+ import { type TelegramTarget } from "./target.ts";
12
+ import { type TelegramApiCallOptions, type TelegramBridgeApiRuntime } from "./telegram-api.ts";
13
+ import * as ThreadReconciler from "./thread-reconciler.ts";
13
14
  import * as Threads from "./threads.ts";
14
- import { type TelegramBusEnvelope, type TelegramBusFollowerRegistry, type TelegramBusFollowerView, type TelegramBusInstanceRegistration, type TelegramBusProtocolIdentity, type TelegramBusSocketPathSource } from "./bus.ts";
15
- import type { TelegramQueueHandoffPayload } from "./queue.ts";
16
- import { type TelegramWorkspaceCapacityRunner, type TelegramWorkspaceSlotRotationPorts, type TelegramWorkspaceOperationRunner } from "./workspace-retirement.ts";
17
15
  import { type TelegramWorkspaceAdmissionLedger } from "./workspace-admission.ts";
16
+ import { type TelegramWorkspaceCapacityRunner, type TelegramWorkspaceOperationRunner, type TelegramWorkspaceSlotRotationPorts } from "./workspace-retirement.ts";
18
17
  export declare const TELEGRAM_BUS_FOLLOWER_STALE_AFTER_MS = 15000;
19
18
  export type TelegramBusWorkspaceAdmissionRunner = TelegramWorkspaceOperationRunner;
20
19
  export interface TelegramBusLeaderRuntime<TContext> {
@@ -27,21 +26,7 @@ export interface TelegramBusLeaderRuntime<TContext> {
27
26
  renameLeaderThread?: (threadName: string) => Promise<Threads.TelegramTopicTargetRecord>;
28
27
  startPolling: (ctx: TContext) => Promise<void>;
29
28
  stopPolling: () => Promise<void>;
30
- routeQueueHandoff: (input: {
31
- requestId: string;
32
- auth?: string;
33
- recipientInstanceId: string;
34
- recipientRegistrationGeneration: string;
35
- donorInstanceId: string;
36
- donorProcessId: number;
37
- donorProcessBirthId: string;
38
- donorSessionGeneration: number;
39
- donorAcquisitionId: string;
40
- donorAcquiredAtMs: number;
41
- handoffToken: string;
42
- payload: TelegramQueueHandoffPayload;
43
- sentAtMs: number;
44
- }) => Promise<TelegramBusEnvelope>;
29
+ routeQueueHandoff: (input: TelegramBusLeaderQueueHandoffOffer) => Promise<TelegramBusEnvelope>;
45
30
  }
46
31
  export interface TelegramBusFollowerLifecycleAnnouncement {
47
32
  target: TelegramTarget & {
@@ -154,8 +139,8 @@ export declare function createTelegramBusFollowerSessionReplacementAuthority(dep
154
139
  settle: TelegramBusFollowerSessionReplacementOperation;
155
140
  };
156
141
  export declare function createTelegramBusLeaderRuntimeAssembly<TContext>(deps: TelegramBusLeaderRuntimeAssemblyDeps<TContext>): TelegramBusLeaderRuntime<TContext> & {
157
- renameLeaderThreadAdmitted: (threadName: string, expectedTarget?: Threads.TelegramTopicTargetRecord["target"]) => Promise<Threads.TelegramTopicTargetRecord>;
158
- resetLeaderThreadName: (expectedTarget: Threads.TelegramTopicTargetRecord["target"]) => Promise<{
142
+ renameLeaderThreadAdmitted: (threadName: string, expectedTarget?: Threads.TelegramTopicTargetRecord["target"], assertRecipientAuthority?: () => void) => Promise<Threads.TelegramTopicTargetRecord>;
143
+ resetLeaderThreadName: (expectedTarget: Threads.TelegramTopicTargetRecord["target"], assertRecipientAuthority?: () => void) => Promise<{
159
144
  threadName: string;
160
145
  }>;
161
146
  resetThreadNameAdmitted: (target: Threads.TelegramTopicTargetRecord["target"]) => Promise<{
@@ -174,72 +159,21 @@ export type TelegramBusFollowerRegistrationCommitter = (input: {
174
159
  target?: TelegramTarget;
175
160
  slot?: string;
176
161
  }, publish: () => void) => Promise<void> | void;
177
- export interface TelegramBusLeaderRuntimeDeps<TContext> {
162
+ export interface TelegramBusLeaderRuntimeDeps<TContext> extends Omit<TelegramBusLeaderEnvelopeHandlerDeps, "runFollowerMutation" | "getWorkspaceRestoreObservationGeneration"> {
178
163
  socketPath: TelegramBusSocketPathSource;
179
164
  commitEndpointPublication?: (commit: () => void) => boolean;
180
- followerRegistry: TelegramBusFollowerRegistry;
181
- authSecret?: string;
182
- protocolIdentity: TelegramBusProtocolIdentity;
183
165
  startPolling: (ctx: TContext) => void | Promise<void>;
184
166
  stopPolling: () => void | Promise<void>;
185
- callApi?: (method: string, args: unknown[]) => Promise<unknown> | unknown;
186
- authorizeFollowerApiCall?: (input: {
187
- follower: TelegramBusFollowerView;
188
- method: string;
189
- args: unknown[];
190
- }) => boolean;
191
- recordFollowerMessageOwnership?: TelegramBusFollowerMessageOwnershipRecorder;
192
- resolveAgentTarget?: (follower: TelegramBusFollowerView, selector: Extract<TelegramBusEnvelope, {
193
- kind: "follower.resolveAgentTarget";
194
- }>["selector"]) => Promise<TelegramTarget | undefined> | TelegramTarget | undefined;
195
- routeAgentMessage?: (follower: TelegramBusFollowerView, message: Extract<TelegramBusEnvelope, {
196
- kind: "follower.routeAgentMessage";
197
- }>["message"]) => Promise<void> | void;
198
- routeQueueHandoff?: (follower: TelegramBusFollowerView, envelope: Extract<TelegramBusEnvelope, {
199
- kind: "follower.offerQueueHandoff";
200
- }>) => Promise<unknown> | unknown;
201
- provisionFollowerTarget?: (registration: TelegramBusInstanceRegistration, options?: {
202
- existingWorkspaceBindingOnly?: boolean;
203
- }) => Promise<TelegramTarget | undefined> | TelegramTarget | undefined;
204
- commitFollowerRegistration?: TelegramBusFollowerRegistrationCommitter;
205
- renameFollowerThread?: (follower: TelegramBusFollowerView, threadName: string) => Promise<{
206
- threadName: string;
207
- }> | {
208
- threadName: string;
209
- };
210
- resetFollowerThreadName?: (follower: TelegramBusFollowerView) => Promise<{
211
- threadName: string;
212
- }> | {
213
- threadName: string;
214
- };
215
- publishFollowerSessionReplacement?: TelegramBusFollowerSessionReplacementOperation;
216
- settleFollowerSessionReplacement?: TelegramBusFollowerSessionReplacementOperation;
217
- getFollowerDisplayTitle?: (follower: TelegramBusFollowerView) => string | undefined;
218
- onFollowerRegistered?: () => void;
219
- /** Observation only: reacquire admission and inspect work, never infer completion.
220
- * Listener settlement ends its currentness fence; return asynchronous work to retain that fence. */
221
- onWorkspaceRestoreRecipientObserved?: (follower: TelegramBusFollowerView, isCurrent: () => boolean) => Promise<void> | void;
222
- applyThreadDisplayMode?: (mode: TelegramThreadDisplayMode, isCurrent: () => boolean) => Promise<void>;
223
- getThreadDisplayMode?: () => TelegramThreadDisplayMode;
224
- getCurrentLeaderEpoch?: () => number | string | undefined;
225
- getTelegramProfile?: () => string | undefined;
226
- getAllowedUserId?: () => number | undefined;
227
167
  provisionLeaderTarget?: (ctx: TContext) => Promise<void> | void;
228
- runWorkspaceAdmission?: TelegramBusWorkspaceAdmissionRunner;
229
- runWithWorkspaceCapacity?: TelegramWorkspaceCapacityRunner;
230
- getNowMs?: () => number;
231
- timeoutMs?: number;
232
168
  followerPruneIntervalMs?: number;
233
169
  /** Leader housekeeping after each current prune pass; throttling is the callee's concern. */
234
170
  afterFollowerPrune?: () => void;
235
171
  followerStaleAfterMs?: number;
236
172
  isFollowerProcessAlive?: (pid: number) => boolean;
237
173
  shouldCleanupConfirmedDeadFollower?: () => Promise<boolean> | boolean;
238
- onFollowerDisconnected?: (follower: TelegramBusFollowerView) => Promise<void> | void;
239
174
  onFollowerConfirmedDead?: (follower: TelegramBusFollowerView) => Promise<void> | void;
240
175
  /** True settles this observation; false needs fresh proof before another attempt. */
241
176
  onFollowerConfirmedDeadPreserved?: (follower: TelegramBusFollowerView, isDetached: () => boolean, operationId: string) => Promise<boolean> | boolean;
242
- recordRuntimeEvent?: (category: string, error: unknown, details?: Record<string, unknown>) => void;
243
177
  }
244
178
  export declare function createTelegramBusInstanceLifecycleAnnouncement(input: {
245
179
  target: TelegramTarget & {
@@ -263,12 +197,37 @@ type TelegramBusFollowerMutationRunner = <T>(follower: {
263
197
  instanceId: string;
264
198
  profileKey?: string;
265
199
  }, operation: () => Promise<T>) => Promise<T>;
266
- export declare function createTelegramBusLeaderEnvelopeHandler(deps: {
200
+ /** One delegated text effect through existing Workspace/API owners; no closure transport, ordinary proxy or replay loop. */
201
+ export declare function createTelegramBusSelectedMenuDeliveryHandler(deps: {
202
+ followerRegistry: TelegramBusFollowerRegistry;
203
+ protocolIdentity: TelegramBusProtocolIdentity;
204
+ workspace: {
205
+ /** Exact active bot/profile namespace, independently captured by the leader; never follower-supplied. */
206
+ getScopeKey(): string | undefined;
207
+ captureAuthority(): Threads.TelegramWorkspaceRestoreAuthority | undefined;
208
+ getStore(): Threads.TelegramWorkspaceRestore | undefined;
209
+ threadStore: Pick<Threads.TelegramTopicTargetStore, "withWorkspaceLiveRebindSnapshot">;
210
+ getJournalBindingKey(follower: TelegramBusFollowerView): string | undefined;
211
+ run: TelegramBusWorkspaceAdmissionRunner;
212
+ };
213
+ api: {
214
+ runtime: Pick<TelegramBridgeApiRuntime, "call">;
215
+ authorize(input: {
216
+ follower: TelegramBusFollowerView;
217
+ method: string;
218
+ args: unknown[];
219
+ }): boolean;
220
+ /** Synchronous publication acceptance through the existing ownership owner, never delivery/cleanup permission. */
221
+ record(record: TelegramBusFollowerMessageOwnershipRecord, assertCurrent: () => void): boolean;
222
+ };
223
+ }): (input: TelegramBusSelectedMenuDelivery, isCallerCurrent: () => boolean) => Promise<TelegramBusEnvelope>;
224
+ export interface TelegramBusLeaderEnvelopeHandlerDeps {
267
225
  followerRegistry: TelegramBusFollowerRegistry;
268
226
  authSecret?: string;
269
227
  protocolIdentity: TelegramBusProtocolIdentity;
270
228
  getNowMs?: () => number;
271
229
  timeoutMs?: number;
230
+ selectedMenuDelivery?: ReturnType<typeof createTelegramBusSelectedMenuDeliveryHandler>;
272
231
  callApi?: (method: string, args: unknown[]) => Promise<unknown> | unknown;
273
232
  authorizeFollowerApiCall?: (input: {
274
233
  follower: TelegramBusFollowerView;
@@ -310,9 +269,11 @@ export declare function createTelegramBusLeaderEnvelopeHandler(deps: {
310
269
  settleFollowerSessionReplacement?: TelegramBusFollowerSessionReplacementOperation;
311
270
  getFollowerDisplayTitle?: (follower: TelegramBusFollowerView) => string | undefined;
312
271
  onFollowerRegistered?: () => void;
313
- onWorkspaceRestoreRecipientObserved?: TelegramBusLeaderRuntimeDeps<unknown>["onWorkspaceRestoreRecipientObserved"];
272
+ /** Observation only: reacquire admission and inspect work, never infer completion.
273
+ * Listener settlement ends its currentness fence; return asynchronous work to retain that fence. */
274
+ onWorkspaceRestoreRecipientObserved?: (follower: TelegramBusFollowerView, isCurrent: () => boolean) => Promise<void> | void;
314
275
  getWorkspaceRestoreObservationGeneration?: () => number | undefined;
315
- recordRuntimeEvent?: TelegramBusLeaderRuntimeDeps<unknown>["recordRuntimeEvent"];
276
+ recordRuntimeEvent?: (category: string, error: unknown, details?: Record<string, unknown>) => void;
316
277
  applyThreadDisplayMode?: (mode: TelegramThreadDisplayMode, isCurrent: () => boolean) => Promise<void>;
317
278
  getThreadDisplayMode?: () => TelegramThreadDisplayMode;
318
279
  getCurrentLeaderEpoch?: () => number | string | undefined;
@@ -321,18 +282,7 @@ export declare function createTelegramBusLeaderEnvelopeHandler(deps: {
321
282
  runFollowerMutation?: TelegramBusFollowerMutationRunner;
322
283
  runWorkspaceAdmission?: TelegramBusWorkspaceAdmissionRunner;
323
284
  runWithWorkspaceCapacity?: TelegramWorkspaceCapacityRunner;
324
- }): (envelope: TelegramBusEnvelope) => Promise<TelegramBusEnvelope> | TelegramBusEnvelope;
325
- export interface TelegramBusLeaderActivationSchedulerDeps<TContext> {
326
- isBusEnabled: () => boolean;
327
- ownsPolling: (ctx: TContext) => boolean;
328
- isBusPollingStarted: () => boolean;
329
- setBusPollingStarted: (started: boolean) => void;
330
- stopClassicPolling: () => Promise<void>;
331
- startClassicPolling: (ctx: TContext) => void | Promise<void>;
332
- startBusLeaderPolling: (ctx: TContext) => Promise<void>;
333
- updateStatus: (ctx: TContext) => void;
334
- recordRuntimeEvent?: (category: string, error: unknown, details?: Record<string, unknown>) => void;
335
285
  }
336
- export declare function createTelegramBusLeaderActivationScheduler<TContext>(deps: TelegramBusLeaderActivationSchedulerDeps<TContext>): (ctx: TContext) => void;
286
+ export declare function createTelegramBusLeaderEnvelopeHandler(deps: TelegramBusLeaderEnvelopeHandlerDeps): (envelope: TelegramBusEnvelope) => Promise<TelegramBusEnvelope> | TelegramBusEnvelope;
337
287
  export declare function createTelegramBusLeaderRuntime<TContext>(deps: TelegramBusLeaderRuntimeDeps<TContext>): TelegramBusLeaderRuntime<TContext>;
338
288
  export {};