@llblab/pi-telegram 0.46.0 → 0.48.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 (204) hide show
  1. package/AGENTS.md +4 -2
  2. package/BACKLOG.md +0 -6
  3. package/CHANGELOG.md +14 -0
  4. package/README.md +5 -2
  5. package/dist/api/activity.d.ts +6 -0
  6. package/dist/api/activity.js +6 -0
  7. package/dist/api/commands.d.ts +6 -0
  8. package/dist/api/commands.js +6 -0
  9. package/dist/api/delivery.d.ts +6 -0
  10. package/dist/api/delivery.js +6 -0
  11. package/dist/api/inbound.d.ts +6 -0
  12. package/dist/api/inbound.js +6 -0
  13. package/dist/api/keyboard.d.ts +6 -0
  14. package/dist/api/keyboard.js +6 -0
  15. package/dist/api/outbound.d.ts +6 -0
  16. package/dist/api/outbound.js +6 -0
  17. package/dist/api/sections.d.ts +7 -0
  18. package/dist/api/sections.js +6 -0
  19. package/dist/api/status.d.ts +6 -0
  20. package/dist/api/status.js +6 -0
  21. package/dist/api/updates.d.ts +6 -0
  22. package/dist/api/updates.js +6 -0
  23. package/dist/api/voice.d.ts +6 -0
  24. package/dist/api/voice.js +6 -0
  25. package/dist/index.d.ts +6 -0
  26. package/dist/index.js +6 -0
  27. package/dist/lib/activity-verbosity.d.ts +52 -0
  28. package/dist/lib/activity-verbosity.js +596 -0
  29. package/dist/lib/activity.d.ts +220 -0
  30. package/dist/lib/activity.js +574 -0
  31. package/dist/lib/agent-messages.d.ts +28 -0
  32. package/dist/lib/agent-messages.js +86 -0
  33. package/dist/lib/bindings.d.ts +250 -0
  34. package/dist/lib/bindings.js +936 -0
  35. package/dist/lib/bus-api.d.ts +18 -0
  36. package/dist/lib/bus-api.js +254 -0
  37. package/dist/lib/bus-follower.d.ts +464 -0
  38. package/dist/lib/bus-follower.js +1686 -0
  39. package/dist/lib/bus-leader.d.ts +292 -0
  40. package/dist/lib/bus-leader.js +2242 -0
  41. package/dist/lib/bus-transport.d.ts +64 -0
  42. package/dist/lib/bus-transport.js +140 -0
  43. package/dist/lib/bus.d.ts +518 -0
  44. package/dist/lib/bus.js +2055 -0
  45. package/dist/lib/channel-posts.d.ts +170 -0
  46. package/dist/lib/channel-posts.js +611 -0
  47. package/dist/lib/command-templates.d.ts +70 -0
  48. package/dist/lib/command-templates.js +744 -0
  49. package/dist/lib/commands.d.ts +541 -0
  50. package/dist/lib/commands.js +1155 -0
  51. package/dist/lib/config.d.ts +252 -0
  52. package/dist/lib/config.js +889 -0
  53. package/dist/lib/delivery.d.ts +163 -0
  54. package/dist/lib/delivery.js +542 -0
  55. package/dist/lib/extension.d.ts +7 -0
  56. package/dist/lib/extension.js +1604 -0
  57. package/dist/lib/generative-app-worker.mjs +104 -0
  58. package/dist/lib/generative-apps.d.ts +212 -0
  59. package/dist/lib/generative-apps.js +1006 -0
  60. package/dist/lib/inbound.d.ts +91 -0
  61. package/dist/lib/inbound.js +502 -0
  62. package/dist/lib/journal.d.ts +665 -0
  63. package/dist/lib/journal.js +3701 -0
  64. package/dist/lib/keyboard.d.ts +23 -0
  65. package/dist/lib/keyboard.js +37 -0
  66. package/dist/lib/lifecycle.d.ts +157 -0
  67. package/dist/lib/lifecycle.js +395 -0
  68. package/dist/lib/locks.d.ts +164 -0
  69. package/dist/lib/locks.js +1208 -0
  70. package/dist/lib/logging.d.ts +50 -0
  71. package/dist/lib/logging.js +274 -0
  72. package/dist/lib/media.d.ts +181 -0
  73. package/dist/lib/media.js +602 -0
  74. package/dist/lib/menu-model.d.ts +217 -0
  75. package/dist/lib/menu-model.js +663 -0
  76. package/dist/lib/menu-queue.d.ts +37 -0
  77. package/dist/lib/menu-queue.js +408 -0
  78. package/dist/lib/menu-settings.d.ts +115 -0
  79. package/dist/lib/menu-settings.js +595 -0
  80. package/dist/lib/menu-status.d.ts +32 -0
  81. package/dist/lib/menu-status.js +112 -0
  82. package/dist/lib/menu-thinking.d.ts +29 -0
  83. package/dist/lib/menu-thinking.js +82 -0
  84. package/dist/lib/menu.d.ts +171 -0
  85. package/dist/lib/menu.js +323 -0
  86. package/dist/lib/model.d.ts +127 -0
  87. package/dist/lib/model.js +409 -0
  88. package/dist/lib/outbound-attachments.d.ts +241 -0
  89. package/dist/lib/outbound-attachments.js +639 -0
  90. package/dist/lib/outbound-buttons.d.ts +69 -0
  91. package/dist/lib/outbound-buttons.js +248 -0
  92. package/dist/lib/outbound-markup.d.ts +42 -0
  93. package/dist/lib/outbound-markup.js +678 -0
  94. package/dist/lib/outbound-voice.d.ts +55 -0
  95. package/dist/lib/outbound-voice.js +152 -0
  96. package/dist/lib/outbound.d.ts +185 -0
  97. package/dist/lib/outbound.js +516 -0
  98. package/dist/lib/ownership.d.ts +77 -0
  99. package/dist/lib/ownership.js +174 -0
  100. package/dist/lib/paths.d.ts +40 -0
  101. package/dist/lib/paths.js +94 -0
  102. package/dist/lib/pi.d.ts +72 -0
  103. package/dist/lib/pi.js +121 -0
  104. package/dist/lib/polling.d.ts +351 -0
  105. package/dist/lib/polling.js +1196 -0
  106. package/dist/lib/preview.d.ts +192 -0
  107. package/dist/lib/preview.js +614 -0
  108. package/dist/lib/prompt-templates.d.ts +24 -0
  109. package/dist/lib/prompt-templates.js +118 -0
  110. package/dist/lib/prompts.d.ts +57 -0
  111. package/dist/lib/prompts.js +167 -0
  112. package/dist/lib/queue.d.ts +766 -0
  113. package/dist/lib/queue.js +1965 -0
  114. package/dist/lib/recovery.d.ts +86 -0
  115. package/dist/lib/recovery.js +285 -0
  116. package/dist/lib/rendering.d.ts +20 -0
  117. package/dist/lib/rendering.js +983 -0
  118. package/dist/lib/replies.d.ts +214 -0
  119. package/dist/lib/replies.js +737 -0
  120. package/dist/lib/routing.d.ts +207 -0
  121. package/dist/lib/routing.js +2282 -0
  122. package/dist/lib/runtime.d.ts +172 -0
  123. package/dist/lib/runtime.js +402 -0
  124. package/dist/lib/sections.d.ts +165 -0
  125. package/dist/lib/sections.js +327 -0
  126. package/dist/lib/setup.d.ts +82 -0
  127. package/dist/lib/setup.js +150 -0
  128. package/dist/lib/skills.d.ts +8 -0
  129. package/dist/lib/skills.js +12 -0
  130. package/dist/lib/status.d.ts +442 -0
  131. package/dist/lib/status.js +1008 -0
  132. package/dist/lib/sync.d.ts +179 -0
  133. package/dist/lib/sync.js +782 -0
  134. package/dist/lib/target.d.ts +20 -0
  135. package/dist/lib/target.js +27 -0
  136. package/dist/lib/telegram-api.d.ts +541 -0
  137. package/dist/lib/telegram-api.js +1159 -0
  138. package/dist/lib/text-groups.d.ts +89 -0
  139. package/dist/lib/text-groups.js +317 -0
  140. package/dist/lib/thread-cleanup-manager.d.ts +288 -0
  141. package/dist/lib/thread-cleanup-manager.js +560 -0
  142. package/dist/lib/thread-display.d.ts +46 -0
  143. package/dist/lib/thread-display.js +257 -0
  144. package/dist/lib/thread-naming.d.ts +46 -0
  145. package/dist/lib/thread-naming.js +78 -0
  146. package/dist/lib/thread-reconciler.d.ts +239 -0
  147. package/dist/lib/thread-reconciler.js +644 -0
  148. package/dist/lib/threads.d.ts +621 -0
  149. package/dist/lib/threads.js +3679 -0
  150. package/dist/lib/time-injection.d.ts +15 -0
  151. package/dist/lib/time-injection.js +56 -0
  152. package/dist/lib/turns.d.ts +109 -0
  153. package/dist/lib/turns.js +500 -0
  154. package/dist/lib/updates.d.ts +1290 -0
  155. package/dist/lib/updates.js +3634 -0
  156. package/dist/lib/voice.d.ts +117 -0
  157. package/dist/lib/voice.js +174 -0
  158. package/dist/lib/workspace-admission.d.ts +264 -0
  159. package/dist/lib/workspace-admission.js +1136 -0
  160. package/dist/lib/workspace-retirement.d.ts +219 -0
  161. package/dist/lib/workspace-retirement.js +587 -0
  162. package/dist/lib/workspace-slots.d.ts +30 -0
  163. package/dist/lib/workspace-slots.js +54 -0
  164. package/dist/package.json +126 -0
  165. package/dist/pi-telegram/index.js +1 -0
  166. package/dist/skills/generated-control-surface/SKILL.md +107 -0
  167. package/dist/skills/generated-control-surface/references/capability-adapters.md +27 -0
  168. package/dist/skills/generated-control-surface/references/layout-and-state.md +37 -0
  169. package/dist/skills/generative-apps/SKILL.md +115 -0
  170. package/dist/skills/show-me/SKILL.md +166 -0
  171. package/dist/skills/show-me/references/telegram-surfaces.md +43 -0
  172. package/dist/skills/telegram-bridge/SKILL.md +129 -0
  173. package/dist/skills/telegram-bridge/references/configuration.md +15 -0
  174. package/dist/skills/telegram-bridge/references/delivery-and-threads.md +27 -0
  175. package/dist/skills/telegram-bridge/references/diagnosis.md +18 -0
  176. package/docs/README.md +2 -0
  177. package/docs/architecture.md +1 -1
  178. package/docs/compact-matrix-literal.md +10 -3
  179. package/docs/generative-apps.md +15 -13
  180. package/docs/multi-instance-bus.md +6 -4
  181. package/docs/outbound.md +1 -1
  182. package/docs/public-api.md +3 -3
  183. package/lib/bindings.ts +89 -6
  184. package/lib/bus-follower.ts +7 -3
  185. package/lib/bus-leader.ts +44 -19
  186. package/lib/bus.ts +4 -1
  187. package/lib/commands.ts +2 -2
  188. package/lib/config.ts +14 -7
  189. package/lib/delivery.ts +38 -6
  190. package/lib/extension.ts +7 -0
  191. package/lib/generative-apps.ts +379 -13
  192. package/lib/menu-settings.ts +20 -6
  193. package/lib/outbound-markup.ts +16 -7
  194. package/lib/status.ts +15 -12
  195. package/lib/telegram-api.ts +12 -1
  196. package/lib/thread-display.ts +96 -18
  197. package/package.json +56 -13
  198. package/scripts/build-dist.mjs +44 -0
  199. package/scripts/measure-bus.mjs +8 -1
  200. package/scripts/measure-workspace.mjs +8 -1
  201. package/skills/generative-apps/SKILL.md +1 -1
  202. package/skills/show-me/SKILL.md +1 -1
  203. package/skills/show-me/references/telegram-surfaces.md +1 -1
  204. package/skills/telegram-bridge/SKILL.md +1 -1
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Telegram inbound routing composition
3
+ * Zones: telegram inbound, orchestration, queue/menu/command composition
4
+ * Wires authorized updates into menus, commands, media grouping, and prompt queueing, and owns exact assistant-output target/route authority capture
5
+ */
6
+ import * as Bus from "./bus.ts";
7
+ import * as Commands from "./commands.ts";
8
+ import type { TelegramConfigStore } from "./config.ts";
9
+ import type { TelegramInboundHandlerRuntime } from "./inbound.ts";
10
+ import * as Media from "./media.ts";
11
+ import * as Menu from "./menu.ts";
12
+ import * as Model from "./model.ts";
13
+ import * as OutboundHandlers from "./outbound.ts";
14
+ import * as PromptTemplates from "./prompt-templates.ts";
15
+ import * as Queue from "./queue.ts";
16
+ import type { TelegramBridgeRuntime } from "./runtime.ts";
17
+ import type { TelegramSectionRegistry } from "./sections.ts";
18
+ import type { TelegramInputRichMessage } from "./telegram-api.ts";
19
+ import * as TextGroups from "./text-groups.ts";
20
+ import * as ThreadReconciler from "./thread-reconciler.ts";
21
+ import type { TelegramInstanceThreadIdentityCandidate, TelegramTopicTargetRecord } from "./threads.ts";
22
+ import * as Turns from "./turns.ts";
23
+ interface TelegramPromptPeerView {
24
+ id?: unknown;
25
+ is_bot?: unknown;
26
+ username?: unknown;
27
+ first_name?: unknown;
28
+ last_name?: unknown;
29
+ title?: unknown;
30
+ }
31
+ export declare function resolveTelegramGuestPromptPeer(input: {
32
+ chatType?: string;
33
+ chat?: TelegramPromptPeerView;
34
+ from?: TelegramPromptPeerView;
35
+ replyFrom?: TelegramPromptPeerView;
36
+ guestBotCallerUser?: TelegramPromptPeerView;
37
+ guestBotCallerChat?: TelegramPromptPeerView;
38
+ ownerUserId?: number;
39
+ }): string | undefined;
40
+ import * as Threads from "./threads.ts";
41
+ import * as Updates from "./updates.ts";
42
+ export declare const TELEGRAM_ALL_TAB_COMMAND_MAX_AGE_MS: number;
43
+ export declare function isTelegramAllTabCommandExpired(message: {
44
+ date?: number;
45
+ message_thread_id?: number;
46
+ }, nowMs?: number): boolean;
47
+ export type TelegramRoutedMessage = {
48
+ date?: number;
49
+ } & Updates.TelegramUpdateMessage & Media.TelegramMediaMessage & Media.TelegramMediaGroupMessage & Commands.TelegramCommandRuntimeMessage & Turns.TelegramTurnMessage;
50
+ export type TelegramRoutedCallbackQuery = Updates.TelegramCallbackQuery & Menu.MenuCallbackQuery;
51
+ export interface TelegramInboundBusProjectionRuntime {
52
+ getTargetOwnership: Updates.TelegramTargetOwnershipLookup;
53
+ getLiveThreadTargets(): Queue.TelegramQueueTarget[];
54
+ getLocalThreadLabelForTarget(target: Queue.TelegramQueueTarget): string | undefined;
55
+ }
56
+ export declare function createTelegramInboundBusProjectionRuntime(deps: {
57
+ instanceId: string;
58
+ listFollowers(): readonly Bus.TelegramBusFollowerView[];
59
+ listThreadRecords(): readonly TelegramTopicTargetRecord[];
60
+ getLeaderTarget(): Queue.TelegramQueueTarget | undefined;
61
+ isFollowerRegistered(): boolean;
62
+ getFollowerTarget(): Queue.TelegramQueueTarget | undefined;
63
+ getCurrentIdentity(target?: Queue.TelegramQueueTarget): TelegramInstanceThreadIdentityCandidate;
64
+ }): TelegramInboundBusProjectionRuntime;
65
+ export interface TelegramInboundRouteRuntimeDeps<TMessage extends TelegramRoutedMessage, TCallbackQuery extends TelegramRoutedCallbackQuery, TContext, TModel extends Model.MenuModel> {
66
+ configStore: Pick<TelegramConfigStore, "get" | "getAllowedUserId" | "persistAllowedUserId" | "persist"> & {
67
+ set?: TelegramConfigStore["set"];
68
+ };
69
+ callApi?: <TResponse>(method: string, body: Record<string, unknown>) => Promise<TResponse>;
70
+ getCurrentInstanceId?: () => string | undefined;
71
+ getAdmissionScope?: () => string | undefined;
72
+ getAdmissionJournalBinding?: () => string | undefined;
73
+ getMessageOwnership?: Updates.TelegramMessageOwnershipLookup;
74
+ getTargetOwnership?: Updates.TelegramTargetOwnershipLookup;
75
+ recordMessageOwnership?: Updates.TelegramMessageOwnershipRecorder;
76
+ getLiveThreadTargets?: () => Queue.TelegramQueueTarget[];
77
+ getDisplayTitle?: Threads.TelegramCurrentThreadAssembly["getDisplayTitle"];
78
+ getLocalThreadLabelForTarget?: (target: Queue.TelegramQueueTarget) => string | undefined;
79
+ getCurrentLeaderEpoch?: () => number | string | undefined;
80
+ setCurrentLeaderIdentity?: (identity: {
81
+ target: Queue.TelegramQueueTarget;
82
+ slot?: string;
83
+ threadName?: string;
84
+ }) => void;
85
+ getThreadReconciliationMachineState?: () => ThreadReconciler.ThreadReconciliationMachineState | undefined;
86
+ recordThreadReconciliationPlan?: (plan: ThreadReconciler.ThreadReconciliationPlan) => void;
87
+ handleTelegramTopicLifecycleUpdate?: (lifecycle: Updates.TelegramTopicLifecycleUpdate<TMessage>, ctx: TContext) => Promise<void> | void;
88
+ handleTelegramThreadTargetObserved?: (target: Threads.TelegramTopicTargetRecord["target"], ctx: TContext) => Promise<void> | void;
89
+ foreignOwnedUpdateForwarder?: Updates.TelegramForeignOwnedUpdateForwarder<TContext, Updates.TelegramMessageReactionUpdated, TCallbackQuery, TMessage>;
90
+ replaceFollowerThreadTarget?: (input: {
91
+ record: Threads.TelegramTopicTargetRecord;
92
+ target: Threads.TelegramTopicTargetRecord["target"];
93
+ oldTarget: Threads.TelegramTopicTargetRecord["target"];
94
+ }) => Promise<boolean>;
95
+ bridgeRuntime: TelegramBridgeRuntime;
96
+ activeTurnRuntime: Queue.TelegramActiveTurnStore;
97
+ mediaGroupRuntime: Media.TelegramMediaGroupController<TMessage, TContext>;
98
+ textGroupRuntime: TextGroups.TelegramTextGroupController<TMessage, TContext>;
99
+ telegramQueueStore: Queue.TelegramQueueStateStore<TContext>;
100
+ queueMutationRuntime: Queue.TelegramQueueMutationController<TContext>;
101
+ modelMenuRuntime: Menu.TelegramModelMenuRuntime<TModel>;
102
+ currentModelRuntime: Model.CurrentModelRuntime<TContext, TModel>;
103
+ modelSwitchController: Model.TelegramModelSwitchController<TContext, Model.ScopedTelegramModel<TModel>>;
104
+ menuActions: Menu.TelegramMenuActionRuntime<TContext, TModel>;
105
+ updateSettingsMenuMessage?: (state: Menu.TelegramModelMenuState<TModel>, ctx: TContext) => Promise<void>;
106
+ openQueueMenu: (chatId: number, replyToMessageId: number, ctx: TContext) => Promise<void>;
107
+ openSettingsMenu?: (chatId: number, replyToMessageId: number, ctx: TContext) => Promise<void>;
108
+ settingsMenuCallbackHandler?: (query: TCallbackQuery, ctx: TContext) => Promise<boolean>;
109
+ queueMenuCallbackHandler: (query: TCallbackQuery, ctx: TContext) => Promise<boolean>;
110
+ buttonActionStore?: OutboundHandlers.TelegramButtonActionStore;
111
+ invokeBoundButtonAction?: (action: OutboundHandlers.TelegramOutboundButtonAction, query: TCallbackQuery, ctx: TContext) => Promise<false | "new" | "edit">;
112
+ inboundHandlerRuntime: TelegramInboundHandlerRuntime<TContext>;
113
+ threadStore?: Threads.TelegramTopicTargetStore;
114
+ runWorkspaceOperation?: <T>(input: {
115
+ operationId: string;
116
+ operationKind: string;
117
+ scopes: readonly [{
118
+ kind: "profile";
119
+ }];
120
+ }, operation: () => Promise<T>) => Promise<T>;
121
+ updateStatus: (ctx: TContext, error?: string) => void;
122
+ isContextActive?: (ctx: TContext) => boolean;
123
+ dispatchNextQueuedTelegramTurn: (ctx: TContext) => void;
124
+ requestNextDispatchAnnouncement?: () => void;
125
+ requestDeferredDispatchNextQueuedTelegramTurn?: (dispatch: (ctx: TContext) => void) => void;
126
+ hasDeferredDispatchContext?: () => boolean;
127
+ startTypingLoop?: (ctx: TContext, chatId?: number, options?: {
128
+ target?: {
129
+ chatId: number;
130
+ threadId?: number;
131
+ };
132
+ }) => void;
133
+ stopTypingLoop?: () => void;
134
+ answerCallbackQuery: (callbackQueryId: string, text?: string) => Promise<void>;
135
+ editInteractiveMessage?: (chatId: number, messageId: number, text: string, mode: "markdown" | "html" | "plain", replyMarkup: Menu.TelegramReplyMarkup) => Promise<void>;
136
+ editMessageReplyMarkup?: (chatId: number, messageId: number, replyMarkup: OutboundHandlers.TelegramOutboundButtonMarkup) => Promise<void>;
137
+ sendInteractiveMessage?: (chatId: number, text: string, mode: "markdown" | "html" | "plain", replyMarkup: Menu.TelegramReplyMarkup, options?: {
138
+ target?: Queue.TelegramQueueTarget;
139
+ replyToMessageId?: number;
140
+ }) => Promise<number | undefined>;
141
+ deleteMessage?: (chatId: number, messageId: number) => Promise<void>;
142
+ answerGuestQuery: (guestQueryId: string, text?: string) => Promise<void>;
143
+ /** Answers the guest query immediately and returns its inline message id. */
144
+ answerGuestQueryForInlineMessage?: (guestQueryId: string, text: string, options?: {
145
+ parseMode?: "HTML";
146
+ }) => Promise<string | undefined>;
147
+ /** Starts the animated placeholder on an answered guest inline message. */
148
+ startGuestPlaceholder?: (inlineMessageId: string) => void;
149
+ sendTextReply: (chatId: number, replyToMessageId: number, text: string, options?: {
150
+ parseMode?: "HTML";
151
+ target?: Queue.TelegramQueueTarget;
152
+ }) => Promise<number | undefined>;
153
+ setMyCommands: Commands.TelegramBotCommandRegistrationDeps["setMyCommands"];
154
+ validateThreadName?: (threadName: string) => string | undefined;
155
+ renameCurrentThread?: Commands.TelegramThreadDisplayNameRenamePort;
156
+ resetCurrentThreadName?: Commands.TelegramThreadDisplayNameResetPort;
157
+ getCommands: () => Parameters<typeof PromptTemplates.getTelegramPromptTemplateCommands>[0];
158
+ downloadFile: Media.DownloadTelegramMessageFilesDeps["downloadFile"];
159
+ resolveTimeLine?: (chatId: number) => string | null;
160
+ getThinkingLevel: () => Model.ThinkingLevel;
161
+ setThinkingLevel: (level: Model.ThinkingLevel) => void;
162
+ persistScopedModelPatterns?: (patterns: string[], ctx: TContext) => Promise<void>;
163
+ setModel: (model: TModel) => Promise<boolean>;
164
+ sendUserMessage?: (message: string, options?: Queue.TelegramPromptDeliveryOptions) => void;
165
+ isIdle: (ctx: TContext) => boolean;
166
+ hasPendingMessages: (ctx: TContext) => boolean;
167
+ compact: (ctx: TContext, callbacks: {
168
+ onComplete: () => void;
169
+ onError: (error: unknown) => void;
170
+ }) => void;
171
+ recordRuntimeEvent?: (category: string, error: unknown, details?: Record<string, unknown>) => void;
172
+ sectionRegistry?: TelegramSectionRegistry;
173
+ sendSectionRichMessage?: (chatId: number, message: TelegramInputRichMessage, options?: {
174
+ target?: {
175
+ chatId: number;
176
+ threadId?: number;
177
+ };
178
+ }) => Promise<number | undefined>;
179
+ }
180
+ export declare function createTelegramInboundRouteRuntime<TUpdate extends Updates.TelegramUpdateFlow & {
181
+ message?: TMessage;
182
+ edited_message?: TMessage;
183
+ callback_query?: TCallbackQuery;
184
+ }, TMessage extends TelegramRoutedMessage, TCallbackQuery extends TelegramRoutedCallbackQuery, TContext, TModel extends Model.MenuModel>(deps: TelegramInboundRouteRuntimeDeps<TMessage, TCallbackQuery, TContext, TModel>): Updates.TelegramUpdateRuntimeController<TContext, TUpdate>;
185
+ export interface TelegramAssistantOutputAuthority<TTransportStamp> {
186
+ transportStamp: TTransportStamp;
187
+ route: "direct" | "follower" | "none";
188
+ directEpoch?: number | string;
189
+ followerGeneration?: string;
190
+ target?: Queue.TelegramQueueTarget;
191
+ }
192
+ export interface TelegramAssistantOutputAuthorityRuntime<TTransportStamp> {
193
+ captureAuthority: () => TelegramAssistantOutputAuthority<TTransportStamp>;
194
+ isAuthorityActive: (authority: TelegramAssistantOutputAuthority<TTransportStamp>) => boolean;
195
+ canDeliver: () => boolean;
196
+ }
197
+ export declare function createTelegramAssistantOutputAuthorityRuntime<TTransportStamp>(deps: {
198
+ getPreferredTarget: () => Queue.TelegramQueueTarget | undefined;
199
+ getFallbackChatId: () => number | undefined;
200
+ getTransportStamp: () => TTransportStamp;
201
+ isTransportStampActive: (stamp: TTransportStamp) => boolean;
202
+ ownsDirect: () => boolean;
203
+ getDirectEpoch: () => number | string | undefined;
204
+ isFollowerRegistered: () => boolean;
205
+ getFollowerGeneration: () => string | undefined;
206
+ }): TelegramAssistantOutputAuthorityRuntime<TTransportStamp>;
207
+ export {};