@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.
- package/AGENTS.md +4 -2
- package/BACKLOG.md +0 -6
- package/CHANGELOG.md +14 -0
- package/README.md +5 -2
- package/dist/api/activity.d.ts +6 -0
- package/dist/api/activity.js +6 -0
- package/dist/api/commands.d.ts +6 -0
- package/dist/api/commands.js +6 -0
- package/dist/api/delivery.d.ts +6 -0
- package/dist/api/delivery.js +6 -0
- package/dist/api/inbound.d.ts +6 -0
- package/dist/api/inbound.js +6 -0
- package/dist/api/keyboard.d.ts +6 -0
- package/dist/api/keyboard.js +6 -0
- package/dist/api/outbound.d.ts +6 -0
- package/dist/api/outbound.js +6 -0
- package/dist/api/sections.d.ts +7 -0
- package/dist/api/sections.js +6 -0
- package/dist/api/status.d.ts +6 -0
- package/dist/api/status.js +6 -0
- package/dist/api/updates.d.ts +6 -0
- package/dist/api/updates.js +6 -0
- package/dist/api/voice.d.ts +6 -0
- package/dist/api/voice.js +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -0
- package/dist/lib/activity-verbosity.d.ts +52 -0
- package/dist/lib/activity-verbosity.js +596 -0
- package/dist/lib/activity.d.ts +220 -0
- package/dist/lib/activity.js +574 -0
- package/dist/lib/agent-messages.d.ts +28 -0
- package/dist/lib/agent-messages.js +86 -0
- package/dist/lib/bindings.d.ts +250 -0
- package/dist/lib/bindings.js +936 -0
- package/dist/lib/bus-api.d.ts +18 -0
- package/dist/lib/bus-api.js +254 -0
- package/dist/lib/bus-follower.d.ts +464 -0
- package/dist/lib/bus-follower.js +1686 -0
- package/dist/lib/bus-leader.d.ts +292 -0
- package/dist/lib/bus-leader.js +2242 -0
- package/dist/lib/bus-transport.d.ts +64 -0
- package/dist/lib/bus-transport.js +140 -0
- package/dist/lib/bus.d.ts +518 -0
- package/dist/lib/bus.js +2055 -0
- package/dist/lib/channel-posts.d.ts +170 -0
- package/dist/lib/channel-posts.js +611 -0
- package/dist/lib/command-templates.d.ts +70 -0
- package/dist/lib/command-templates.js +744 -0
- package/dist/lib/commands.d.ts +541 -0
- package/dist/lib/commands.js +1155 -0
- package/dist/lib/config.d.ts +252 -0
- package/dist/lib/config.js +889 -0
- package/dist/lib/delivery.d.ts +163 -0
- package/dist/lib/delivery.js +542 -0
- package/dist/lib/extension.d.ts +7 -0
- package/dist/lib/extension.js +1604 -0
- package/dist/lib/generative-app-worker.mjs +104 -0
- package/dist/lib/generative-apps.d.ts +212 -0
- package/dist/lib/generative-apps.js +1006 -0
- package/dist/lib/inbound.d.ts +91 -0
- package/dist/lib/inbound.js +502 -0
- package/dist/lib/journal.d.ts +665 -0
- package/dist/lib/journal.js +3701 -0
- package/dist/lib/keyboard.d.ts +23 -0
- package/dist/lib/keyboard.js +37 -0
- package/dist/lib/lifecycle.d.ts +157 -0
- package/dist/lib/lifecycle.js +395 -0
- package/dist/lib/locks.d.ts +164 -0
- package/dist/lib/locks.js +1208 -0
- package/dist/lib/logging.d.ts +50 -0
- package/dist/lib/logging.js +274 -0
- package/dist/lib/media.d.ts +181 -0
- package/dist/lib/media.js +602 -0
- package/dist/lib/menu-model.d.ts +217 -0
- package/dist/lib/menu-model.js +663 -0
- package/dist/lib/menu-queue.d.ts +37 -0
- package/dist/lib/menu-queue.js +408 -0
- package/dist/lib/menu-settings.d.ts +115 -0
- package/dist/lib/menu-settings.js +595 -0
- package/dist/lib/menu-status.d.ts +32 -0
- package/dist/lib/menu-status.js +112 -0
- package/dist/lib/menu-thinking.d.ts +29 -0
- package/dist/lib/menu-thinking.js +82 -0
- package/dist/lib/menu.d.ts +171 -0
- package/dist/lib/menu.js +323 -0
- package/dist/lib/model.d.ts +127 -0
- package/dist/lib/model.js +409 -0
- package/dist/lib/outbound-attachments.d.ts +241 -0
- package/dist/lib/outbound-attachments.js +639 -0
- package/dist/lib/outbound-buttons.d.ts +69 -0
- package/dist/lib/outbound-buttons.js +248 -0
- package/dist/lib/outbound-markup.d.ts +42 -0
- package/dist/lib/outbound-markup.js +678 -0
- package/dist/lib/outbound-voice.d.ts +55 -0
- package/dist/lib/outbound-voice.js +152 -0
- package/dist/lib/outbound.d.ts +185 -0
- package/dist/lib/outbound.js +516 -0
- package/dist/lib/ownership.d.ts +77 -0
- package/dist/lib/ownership.js +174 -0
- package/dist/lib/paths.d.ts +40 -0
- package/dist/lib/paths.js +94 -0
- package/dist/lib/pi.d.ts +72 -0
- package/dist/lib/pi.js +121 -0
- package/dist/lib/polling.d.ts +351 -0
- package/dist/lib/polling.js +1196 -0
- package/dist/lib/preview.d.ts +192 -0
- package/dist/lib/preview.js +614 -0
- package/dist/lib/prompt-templates.d.ts +24 -0
- package/dist/lib/prompt-templates.js +118 -0
- package/dist/lib/prompts.d.ts +57 -0
- package/dist/lib/prompts.js +167 -0
- package/dist/lib/queue.d.ts +766 -0
- package/dist/lib/queue.js +1965 -0
- package/dist/lib/recovery.d.ts +86 -0
- package/dist/lib/recovery.js +285 -0
- package/dist/lib/rendering.d.ts +20 -0
- package/dist/lib/rendering.js +983 -0
- package/dist/lib/replies.d.ts +214 -0
- package/dist/lib/replies.js +737 -0
- package/dist/lib/routing.d.ts +207 -0
- package/dist/lib/routing.js +2282 -0
- package/dist/lib/runtime.d.ts +172 -0
- package/dist/lib/runtime.js +402 -0
- package/dist/lib/sections.d.ts +165 -0
- package/dist/lib/sections.js +327 -0
- package/dist/lib/setup.d.ts +82 -0
- package/dist/lib/setup.js +150 -0
- package/dist/lib/skills.d.ts +8 -0
- package/dist/lib/skills.js +12 -0
- package/dist/lib/status.d.ts +442 -0
- package/dist/lib/status.js +1008 -0
- package/dist/lib/sync.d.ts +179 -0
- package/dist/lib/sync.js +782 -0
- package/dist/lib/target.d.ts +20 -0
- package/dist/lib/target.js +27 -0
- package/dist/lib/telegram-api.d.ts +541 -0
- package/dist/lib/telegram-api.js +1159 -0
- package/dist/lib/text-groups.d.ts +89 -0
- package/dist/lib/text-groups.js +317 -0
- package/dist/lib/thread-cleanup-manager.d.ts +288 -0
- package/dist/lib/thread-cleanup-manager.js +560 -0
- package/dist/lib/thread-display.d.ts +46 -0
- package/dist/lib/thread-display.js +257 -0
- package/dist/lib/thread-naming.d.ts +46 -0
- package/dist/lib/thread-naming.js +78 -0
- package/dist/lib/thread-reconciler.d.ts +239 -0
- package/dist/lib/thread-reconciler.js +644 -0
- package/dist/lib/threads.d.ts +621 -0
- package/dist/lib/threads.js +3679 -0
- package/dist/lib/time-injection.d.ts +15 -0
- package/dist/lib/time-injection.js +56 -0
- package/dist/lib/turns.d.ts +109 -0
- package/dist/lib/turns.js +500 -0
- package/dist/lib/updates.d.ts +1290 -0
- package/dist/lib/updates.js +3634 -0
- package/dist/lib/voice.d.ts +117 -0
- package/dist/lib/voice.js +174 -0
- package/dist/lib/workspace-admission.d.ts +264 -0
- package/dist/lib/workspace-admission.js +1136 -0
- package/dist/lib/workspace-retirement.d.ts +219 -0
- package/dist/lib/workspace-retirement.js +587 -0
- package/dist/lib/workspace-slots.d.ts +30 -0
- package/dist/lib/workspace-slots.js +54 -0
- package/dist/package.json +126 -0
- package/dist/pi-telegram/index.js +1 -0
- package/dist/skills/generated-control-surface/SKILL.md +107 -0
- package/dist/skills/generated-control-surface/references/capability-adapters.md +27 -0
- package/dist/skills/generated-control-surface/references/layout-and-state.md +37 -0
- package/dist/skills/generative-apps/SKILL.md +115 -0
- package/dist/skills/show-me/SKILL.md +166 -0
- package/dist/skills/show-me/references/telegram-surfaces.md +43 -0
- package/dist/skills/telegram-bridge/SKILL.md +129 -0
- package/dist/skills/telegram-bridge/references/configuration.md +15 -0
- package/dist/skills/telegram-bridge/references/delivery-and-threads.md +27 -0
- package/dist/skills/telegram-bridge/references/diagnosis.md +18 -0
- package/docs/README.md +2 -0
- package/docs/architecture.md +1 -1
- package/docs/compact-matrix-literal.md +10 -3
- package/docs/generative-apps.md +15 -13
- package/docs/multi-instance-bus.md +6 -4
- package/docs/outbound.md +1 -1
- package/docs/public-api.md +3 -3
- package/lib/bindings.ts +89 -6
- package/lib/bus-follower.ts +7 -3
- package/lib/bus-leader.ts +44 -19
- package/lib/bus.ts +4 -1
- package/lib/commands.ts +2 -2
- package/lib/config.ts +14 -7
- package/lib/delivery.ts +38 -6
- package/lib/extension.ts +7 -0
- package/lib/generative-apps.ts +379 -13
- package/lib/menu-settings.ts +20 -6
- package/lib/outbound-markup.ts +16 -7
- package/lib/status.ts +15 -12
- package/lib/telegram-api.ts +12 -1
- package/lib/thread-display.ts +96 -18
- package/package.json +56 -13
- package/scripts/build-dist.mjs +44 -0
- package/scripts/measure-bus.mjs +8 -1
- package/scripts/measure-workspace.mjs +8 -1
- package/skills/generative-apps/SKILL.md +1 -1
- package/skills/show-me/SKILL.md +1 -1
- package/skills/show-me/references/telegram-surfaces.md +1 -1
- package/skills/telegram-bridge/SKILL.md +1 -1
|
@@ -0,0 +1,541 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telegram command routing helpers
|
|
3
|
+
* Zones: telegram controls, pi agent commands, queue controls
|
|
4
|
+
* Owns Telegram slash-command normalization, bot command metadata, and pi-side command registration behind runtime ports
|
|
5
|
+
*/
|
|
6
|
+
import { type TelegramConfigStore } from "./config.ts";
|
|
7
|
+
import type { ExtensionAPI, ExtensionCommandContext } from "./pi.ts";
|
|
8
|
+
import type { TelegramBridgeStatusLineOptions } from "./status.ts";
|
|
9
|
+
import { type PendingTelegramControlItem, type TelegramQueueAdmissionReceipt } from "./queue.ts";
|
|
10
|
+
export interface ParsedTelegramCommand {
|
|
11
|
+
name: string;
|
|
12
|
+
args: string;
|
|
13
|
+
}
|
|
14
|
+
export interface TelegramBotCommandDefinition {
|
|
15
|
+
command: string;
|
|
16
|
+
description: string;
|
|
17
|
+
}
|
|
18
|
+
export interface TelegramPromptTemplateMenuCommand {
|
|
19
|
+
command: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface TelegramExtensionCommandContext {
|
|
23
|
+
name: string;
|
|
24
|
+
args: string;
|
|
25
|
+
reply: (text: string) => Promise<void>;
|
|
26
|
+
enqueuePrompt: (prompt: string) => Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
export interface TelegramExtensionCommandRegistration {
|
|
29
|
+
name: string;
|
|
30
|
+
description?: string;
|
|
31
|
+
order?: number;
|
|
32
|
+
showInMenu?: boolean;
|
|
33
|
+
emoji?: string;
|
|
34
|
+
handler: (ctx: TelegramExtensionCommandContext) => Promise<void> | void;
|
|
35
|
+
}
|
|
36
|
+
interface RegisteredTelegramExtensionCommand {
|
|
37
|
+
name: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
order: number;
|
|
40
|
+
showInMenu: boolean;
|
|
41
|
+
emoji?: string;
|
|
42
|
+
handler: TelegramExtensionCommandRegistration["handler"];
|
|
43
|
+
}
|
|
44
|
+
export declare function normalizeTelegramExtensionCommandName(name: string): string;
|
|
45
|
+
export declare function isTelegramExtensionCommandName(name: string): boolean;
|
|
46
|
+
export declare function registerTelegramCommand(registration: TelegramExtensionCommandRegistration): () => void;
|
|
47
|
+
export declare function getTelegramExtensionCommands(): RegisteredTelegramExtensionCommand[];
|
|
48
|
+
export declare function findTelegramExtensionCommand(name: string | undefined): RegisteredTelegramExtensionCommand | undefined;
|
|
49
|
+
export declare function clearTelegramExtensionCommands(): void;
|
|
50
|
+
export declare const TELEGRAM_COMMAND_EMOJI: {
|
|
51
|
+
readonly start: "🟢";
|
|
52
|
+
readonly status: "📊";
|
|
53
|
+
readonly model: "🤖";
|
|
54
|
+
readonly thinking: "🧠";
|
|
55
|
+
readonly compact: "🗜";
|
|
56
|
+
readonly queue: "🔢";
|
|
57
|
+
readonly thread: "🧵";
|
|
58
|
+
readonly next: "⏩";
|
|
59
|
+
readonly continue: "▶️";
|
|
60
|
+
readonly abort: "⏹️";
|
|
61
|
+
readonly stop: "🟥";
|
|
62
|
+
readonly name: "🏷️";
|
|
63
|
+
};
|
|
64
|
+
export type TelegramCommandEmojiName = keyof typeof TELEGRAM_COMMAND_EMOJI;
|
|
65
|
+
export declare function getTelegramCommandEmoji(command: TelegramCommandEmojiName): string;
|
|
66
|
+
export declare function formatTelegramCommandEmojiPrefix(command: TelegramCommandEmojiName): string;
|
|
67
|
+
export declare function formatTelegramPiCommandHtml(command: string): string;
|
|
68
|
+
export declare function formatTelegramInformationHeading(emoji: string, text: string): string;
|
|
69
|
+
export declare function formatTelegramInvalidInstanceName(validationError: string): string;
|
|
70
|
+
export declare function formatTelegramThreadDisplayNameSavedHeading(name: string): string;
|
|
71
|
+
export declare function formatTelegramAutomaticThreadDisplayNameRestoredHeading(name: string): string;
|
|
72
|
+
export declare const TELEGRAM_COMPACTION_STARTED_TEXT: string;
|
|
73
|
+
export declare const TELEGRAM_COMPACTION_COMPLETED_TEXT: string;
|
|
74
|
+
export declare const TELEGRAM_COMPACTION_STARTED_MARKDOWN: string;
|
|
75
|
+
export declare const TELEGRAM_COMPACTION_COMPLETED_MARKDOWN = "**\u2705 Compaction completed.**";
|
|
76
|
+
export declare const TELEGRAM_BUILTIN_BOT_COMMANDS: readonly TelegramBotCommandDefinition[];
|
|
77
|
+
export declare const TELEGRAM_BOT_COMMANDS: readonly TelegramBotCommandDefinition[];
|
|
78
|
+
export declare function getTelegramReservedCommandNames(): string[];
|
|
79
|
+
export interface TelegramBotCommandRegistrationDeps {
|
|
80
|
+
setMyCommands: (commands: readonly TelegramBotCommandDefinition[]) => Promise<unknown>;
|
|
81
|
+
}
|
|
82
|
+
export declare function registerTelegramBotCommands(deps: TelegramBotCommandRegistrationDeps): Promise<void>;
|
|
83
|
+
export declare function createTelegramBotCommandRegistrar(deps: TelegramBotCommandRegistrationDeps): () => Promise<void>;
|
|
84
|
+
export interface TelegramBridgeCommandStartPollingOptions {
|
|
85
|
+
force?: boolean;
|
|
86
|
+
forceFreshLeaderThread?: boolean;
|
|
87
|
+
requestedThreadName?: string;
|
|
88
|
+
}
|
|
89
|
+
export interface TelegramBridgeCommandStartPollingResult {
|
|
90
|
+
ok: boolean;
|
|
91
|
+
message?: string;
|
|
92
|
+
canTakeover?: boolean;
|
|
93
|
+
owner?: string;
|
|
94
|
+
}
|
|
95
|
+
export type TelegramPollingStartRecoveryResult = {
|
|
96
|
+
kind: "unhandled";
|
|
97
|
+
} | {
|
|
98
|
+
kind: "retry";
|
|
99
|
+
message: string;
|
|
100
|
+
} | {
|
|
101
|
+
kind: "blocked";
|
|
102
|
+
message: string;
|
|
103
|
+
};
|
|
104
|
+
export interface TelegramBridgeCommandRegistrationDeps {
|
|
105
|
+
promptForConfig: (ctx: ExtensionCommandContext, profileName?: string) => Promise<void>;
|
|
106
|
+
getStatusLines: (options?: TelegramBridgeStatusLineOptions) => string[];
|
|
107
|
+
reloadConfig: () => Promise<void>;
|
|
108
|
+
hasBotToken: () => boolean;
|
|
109
|
+
getBotTokenDiagnostic?: () => string | undefined;
|
|
110
|
+
startPolling: (ctx: ExtensionCommandContext, options?: TelegramBridgeCommandStartPollingOptions) => void | Promise<void | TelegramBridgeCommandStartPollingResult> | TelegramBridgeCommandStartPollingResult;
|
|
111
|
+
stopPolling: () => Promise<void | string>;
|
|
112
|
+
recoverPollingStart?: (error: unknown) => Promise<TelegramPollingStartRecoveryResult>;
|
|
113
|
+
getDisconnectThreadName?: () => string | undefined;
|
|
114
|
+
queueAgentConnectionContext?: (connected: boolean) => void;
|
|
115
|
+
updateStatus: (ctx: ExtensionCommandContext) => void;
|
|
116
|
+
getProfileNames?: () => string[];
|
|
117
|
+
activateDefaultProfileConfig?: (ctx: ExtensionCommandContext) => Promise<void>;
|
|
118
|
+
activateProfileConfig?: (ctx: ExtensionCommandContext, profileName: string) => Promise<boolean>;
|
|
119
|
+
validateThreadName?: (threadName: string) => string | undefined;
|
|
120
|
+
}
|
|
121
|
+
export type TelegramThreadDisplayNameRenamePort = (target: {
|
|
122
|
+
chatId: number;
|
|
123
|
+
threadId?: number;
|
|
124
|
+
}, threadName: string) => Promise<{
|
|
125
|
+
ok: boolean;
|
|
126
|
+
threadName?: string;
|
|
127
|
+
message?: string;
|
|
128
|
+
}>;
|
|
129
|
+
export type TelegramThreadDisplayNameResetPort = (target: {
|
|
130
|
+
chatId: number;
|
|
131
|
+
threadId?: number;
|
|
132
|
+
}) => Promise<{
|
|
133
|
+
ok: boolean;
|
|
134
|
+
threadName?: string;
|
|
135
|
+
message?: string;
|
|
136
|
+
}>;
|
|
137
|
+
export declare function createTelegramThreadDisplayNameResetBinding(): {
|
|
138
|
+
bind: (reset: TelegramThreadDisplayNameResetPort) => void;
|
|
139
|
+
reset: TelegramThreadDisplayNameResetPort;
|
|
140
|
+
};
|
|
141
|
+
export declare function createTelegramThreadDisplayNameRenameBinding(): {
|
|
142
|
+
bind: (rename: TelegramThreadDisplayNameRenamePort) => void;
|
|
143
|
+
rename: TelegramThreadDisplayNameRenamePort;
|
|
144
|
+
};
|
|
145
|
+
export declare function parseTelegramRequestedThreadName(args: string): string | undefined;
|
|
146
|
+
export declare function registerTelegramBridgeCommands(pi: ExtensionAPI, deps: TelegramBridgeCommandRegistrationDeps): void;
|
|
147
|
+
export declare const TELEGRAM_RESERVED_COMMAND_NAMES: readonly ["stop", "name", "abort", "next", "continue", "status", "queue", "compact", "model", "thinking", "settings", "help", "start"];
|
|
148
|
+
export type TelegramReservedCommandName = (typeof TELEGRAM_RESERVED_COMMAND_NAMES)[number];
|
|
149
|
+
export declare function isTelegramReservedCommandName(commandName: string | undefined): commandName is TelegramReservedCommandName;
|
|
150
|
+
export type TelegramCommandAction = {
|
|
151
|
+
kind: "ignore";
|
|
152
|
+
executionMode: "ignored";
|
|
153
|
+
} | {
|
|
154
|
+
kind: "stop";
|
|
155
|
+
executionMode: "immediate";
|
|
156
|
+
} | {
|
|
157
|
+
kind: "name";
|
|
158
|
+
executionMode: "immediate";
|
|
159
|
+
} | {
|
|
160
|
+
kind: "abort";
|
|
161
|
+
executionMode: "immediate";
|
|
162
|
+
} | {
|
|
163
|
+
kind: "next";
|
|
164
|
+
executionMode: "immediate";
|
|
165
|
+
} | {
|
|
166
|
+
kind: "continue";
|
|
167
|
+
executionMode: "immediate";
|
|
168
|
+
} | {
|
|
169
|
+
kind: "queue";
|
|
170
|
+
executionMode: "immediate";
|
|
171
|
+
} | {
|
|
172
|
+
kind: "compact";
|
|
173
|
+
executionMode: "immediate";
|
|
174
|
+
} | {
|
|
175
|
+
kind: "status";
|
|
176
|
+
executionMode: "immediate";
|
|
177
|
+
} | {
|
|
178
|
+
kind: "model";
|
|
179
|
+
executionMode: "immediate";
|
|
180
|
+
} | {
|
|
181
|
+
kind: "thinking";
|
|
182
|
+
executionMode: "immediate";
|
|
183
|
+
} | {
|
|
184
|
+
kind: "settings";
|
|
185
|
+
executionMode: "immediate";
|
|
186
|
+
} | {
|
|
187
|
+
kind: "help";
|
|
188
|
+
commandName: "help" | "start";
|
|
189
|
+
executionMode: "immediate";
|
|
190
|
+
};
|
|
191
|
+
export type TelegramCommandExecutionMode = "ignored" | "immediate";
|
|
192
|
+
export interface TelegramCommandActionDeps<TMessage, TContext> {
|
|
193
|
+
handleStop: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
194
|
+
handleName: (message: TMessage, ctx: TContext, name: string) => Promise<void>;
|
|
195
|
+
handleAbort: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
196
|
+
handleNext: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
197
|
+
handleContinue: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
198
|
+
handleQueue: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
199
|
+
handleCompact: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
200
|
+
handleStatus: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
201
|
+
handleModel: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
202
|
+
handleThinking: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
203
|
+
handleSettings?: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
204
|
+
handleHelp: (message: TMessage, commandName: "help" | "start", ctx: TContext) => Promise<void>;
|
|
205
|
+
}
|
|
206
|
+
export interface TelegramStopCommandDeps {
|
|
207
|
+
hasAbortHandler: () => boolean;
|
|
208
|
+
clearPendingModelSwitch: () => void;
|
|
209
|
+
clearQueuedTelegramItems: () => number;
|
|
210
|
+
setFoldQueuedPromptsIntoHistory: (fold: boolean) => void;
|
|
211
|
+
abortCurrentTurn: () => void;
|
|
212
|
+
updateStatus: () => void;
|
|
213
|
+
sendTextReply: (text: string, options?: {
|
|
214
|
+
parseMode?: "HTML";
|
|
215
|
+
}) => Promise<void>;
|
|
216
|
+
}
|
|
217
|
+
export interface TelegramRuntimeEventRecorderPort {
|
|
218
|
+
recordRuntimeEvent?: (category: string, error: unknown, details?: Record<string, unknown>) => void;
|
|
219
|
+
}
|
|
220
|
+
export interface TelegramCompactConfirmationReplyMarkup {
|
|
221
|
+
inline_keyboard: {
|
|
222
|
+
text: string;
|
|
223
|
+
callback_data: string;
|
|
224
|
+
}[][];
|
|
225
|
+
}
|
|
226
|
+
export interface TelegramCompactCommandDeps extends TelegramRuntimeEventRecorderPort {
|
|
227
|
+
isIdle: () => boolean;
|
|
228
|
+
hasPendingMessages: () => boolean;
|
|
229
|
+
hasActiveTelegramTurn: () => boolean;
|
|
230
|
+
hasDispatchPending: () => boolean;
|
|
231
|
+
hasQueuedTelegramItems: () => boolean;
|
|
232
|
+
isCompactionInProgress: () => boolean;
|
|
233
|
+
setCompactionInProgress: (inProgress: boolean) => void;
|
|
234
|
+
updateStatus: () => void;
|
|
235
|
+
dispatchNextQueuedTelegramTurn: () => void;
|
|
236
|
+
requestDeferredDispatchNextQueuedTelegramTurn?: (dispatch: () => void) => void;
|
|
237
|
+
startTypingLoop?: () => void;
|
|
238
|
+
stopTypingLoop?: () => void;
|
|
239
|
+
compact: (callbacks: {
|
|
240
|
+
onComplete: () => void;
|
|
241
|
+
onError: (error: unknown) => void;
|
|
242
|
+
}) => void;
|
|
243
|
+
sendTextReply: (text: string, options?: {
|
|
244
|
+
parseMode?: "HTML";
|
|
245
|
+
}) => Promise<void>;
|
|
246
|
+
suppressStartNotice?: boolean;
|
|
247
|
+
}
|
|
248
|
+
export interface TelegramCompactConfirmationDeps {
|
|
249
|
+
sendInteractiveMessage: (chatId: number, text: string, mode: "markdown" | "html" | "plain", replyMarkup: TelegramCompactConfirmationReplyMarkup, options?: {
|
|
250
|
+
target?: {
|
|
251
|
+
chatId: number;
|
|
252
|
+
threadId?: number;
|
|
253
|
+
};
|
|
254
|
+
}) => Promise<number | undefined>;
|
|
255
|
+
}
|
|
256
|
+
export interface TelegramCompactConfirmationCallbackQuery {
|
|
257
|
+
id: string;
|
|
258
|
+
data?: string;
|
|
259
|
+
message?: {
|
|
260
|
+
chat?: {
|
|
261
|
+
id?: number;
|
|
262
|
+
};
|
|
263
|
+
message_id?: number;
|
|
264
|
+
message_thread_id?: number;
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
export interface TelegramCompactConfirmationCallbackDeps<TContext> {
|
|
268
|
+
ctx: TContext;
|
|
269
|
+
answerCallbackQuery: (callbackQueryId: string, text?: string) => Promise<void>;
|
|
270
|
+
editInteractiveMessage: (chatId: number, messageId: number, text: string, mode: "markdown" | "html" | "plain", replyMarkup: TelegramCompactConfirmationReplyMarkup) => Promise<void>;
|
|
271
|
+
runCompact: (ctx: TContext, chatId: number, replyToMessageId: number, target?: {
|
|
272
|
+
chatId: number;
|
|
273
|
+
threadId?: number;
|
|
274
|
+
}) => Promise<void>;
|
|
275
|
+
}
|
|
276
|
+
export type TelegramControlCommandType = PendingTelegramControlItem<unknown>["controlType"];
|
|
277
|
+
export interface TelegramCommandRuntimeMessage {
|
|
278
|
+
chat: {
|
|
279
|
+
id: number;
|
|
280
|
+
type?: string;
|
|
281
|
+
title?: string;
|
|
282
|
+
};
|
|
283
|
+
message_id: number;
|
|
284
|
+
message_thread_id?: number;
|
|
285
|
+
from?: {
|
|
286
|
+
id?: number;
|
|
287
|
+
};
|
|
288
|
+
pi_telegram_source_update_id?: number;
|
|
289
|
+
}
|
|
290
|
+
export interface TelegramCommandMessageTarget {
|
|
291
|
+
chatId: number;
|
|
292
|
+
threadId?: number;
|
|
293
|
+
replyToMessageId: number;
|
|
294
|
+
}
|
|
295
|
+
export interface TelegramCommandTargetRuntimeDeps<TContext> {
|
|
296
|
+
enqueueControlItem: (target: TelegramCommandMessageTarget, ctx: TContext, controlType: TelegramControlCommandType, statusSummary: string, execute: (ctx: TContext) => Promise<void>, admissionReceipts?: TelegramQueueAdmissionReceipt[], onQueued?: (item: PendingTelegramControlItem<TContext>) => void) => void;
|
|
297
|
+
getAdmissionScope?: () => string | undefined;
|
|
298
|
+
getAdmissionJournalBinding?: () => string | undefined;
|
|
299
|
+
onControlQueued?: (message: TelegramCommandRuntimeMessage, receipt: TelegramQueueAdmissionReceipt) => void;
|
|
300
|
+
showStatus: (chatId: number, replyToMessageId: number, ctx: TContext, threadId?: number) => Promise<void>;
|
|
301
|
+
openModelMenu: (chatId: number, replyToMessageId: number, ctx: TContext, threadId?: number) => Promise<void>;
|
|
302
|
+
openSettingsMenu?: (chatId: number, replyToMessageId: number, ctx: TContext, threadId?: number) => Promise<void>;
|
|
303
|
+
sendTextReply: (chatId: number, replyToMessageId: number, text: string, options?: {
|
|
304
|
+
parseMode?: "HTML";
|
|
305
|
+
target?: {
|
|
306
|
+
chatId: number;
|
|
307
|
+
threadId?: number;
|
|
308
|
+
};
|
|
309
|
+
}) => Promise<unknown>;
|
|
310
|
+
}
|
|
311
|
+
export interface TelegramCommandTargetRuntime<TMessage extends TelegramCommandRuntimeMessage, TContext> {
|
|
312
|
+
enqueueControlItem: (message: TMessage, ctx: TContext, controlType: TelegramControlCommandType, statusSummary: string, execute: (ctx: TContext) => Promise<void>) => void;
|
|
313
|
+
showStatus: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
314
|
+
openModelMenu: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
315
|
+
openSettingsMenu: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
316
|
+
sendTextReply: (message: TMessage, text: string, options?: {
|
|
317
|
+
parseMode?: "HTML";
|
|
318
|
+
}) => Promise<void>;
|
|
319
|
+
}
|
|
320
|
+
export declare function getTelegramCommandMessageTarget(message: TelegramCommandRuntimeMessage): TelegramCommandMessageTarget;
|
|
321
|
+
export interface TelegramCommandControlQueueRuntimeDeps<TContext> {
|
|
322
|
+
createControlItem: (options: {
|
|
323
|
+
chatId: number;
|
|
324
|
+
target?: {
|
|
325
|
+
chatId: number;
|
|
326
|
+
threadId?: number;
|
|
327
|
+
};
|
|
328
|
+
replyToMessageId: number;
|
|
329
|
+
controlType: TelegramControlCommandType;
|
|
330
|
+
statusSummary: string;
|
|
331
|
+
admissionReceipts?: TelegramQueueAdmissionReceipt[];
|
|
332
|
+
execute: (ctx: TContext) => Promise<void>;
|
|
333
|
+
}) => PendingTelegramControlItem<TContext>;
|
|
334
|
+
appendControlItem: (item: PendingTelegramControlItem<TContext>, ctx: TContext) => void;
|
|
335
|
+
dispatchNextQueuedTelegramTurn: (ctx: TContext) => void;
|
|
336
|
+
}
|
|
337
|
+
export declare function createTelegramCommandControlQueueRuntime<TContext>(deps: TelegramCommandControlQueueRuntimeDeps<TContext>): TelegramCommandTargetRuntimeDeps<TContext>["enqueueControlItem"];
|
|
338
|
+
export declare function createTelegramCommandControlEnqueueAdapter<TContext>(deps: {
|
|
339
|
+
createControlItem: (options: {
|
|
340
|
+
chatId: number;
|
|
341
|
+
target?: {
|
|
342
|
+
chatId: number;
|
|
343
|
+
threadId?: number;
|
|
344
|
+
};
|
|
345
|
+
replyToMessageId: number;
|
|
346
|
+
controlType: TelegramControlCommandType;
|
|
347
|
+
statusSummary: string;
|
|
348
|
+
admissionReceipts?: TelegramQueueAdmissionReceipt[];
|
|
349
|
+
execute: (ctx: TContext) => Promise<void>;
|
|
350
|
+
}) => PendingTelegramControlItem<TContext>;
|
|
351
|
+
enqueueControlItem: (item: PendingTelegramControlItem<TContext>, ctx: TContext, onQueued?: (item: PendingTelegramControlItem<TContext>) => void) => void;
|
|
352
|
+
}): TelegramCommandTargetRuntimeDeps<TContext>["enqueueControlItem"];
|
|
353
|
+
export type TelegramCommandTargetQueueRuntimeDeps<TContext> = TelegramCommandControlQueueRuntimeDeps<TContext> & Omit<TelegramCommandTargetRuntimeDeps<TContext>, "enqueueControlItem">;
|
|
354
|
+
export declare function createTelegramCommandTargetQueueRuntime<TMessage extends TelegramCommandRuntimeMessage, TContext>(deps: TelegramCommandTargetQueueRuntimeDeps<TContext>): TelegramCommandTargetRuntime<TMessage, TContext>;
|
|
355
|
+
export declare function createTelegramCommandTargetRuntime<TMessage extends TelegramCommandRuntimeMessage, TContext>(deps: TelegramCommandTargetRuntimeDeps<TContext>): TelegramCommandTargetRuntime<TMessage, TContext>;
|
|
356
|
+
export interface TelegramCommandOrPromptRuntimeDeps<TMessage, TContext> {
|
|
357
|
+
extractRawText: (messages: TMessage[]) => string;
|
|
358
|
+
shouldIgnoreMessages?: (messages: TMessage[]) => boolean;
|
|
359
|
+
consumeThreadNameInput?: (messages: TMessage[], ctx: TContext) => Promise<boolean>;
|
|
360
|
+
handleCommand: (commandName: string | undefined, message: TMessage, ctx: TContext, commandArgs?: string) => Promise<boolean>;
|
|
361
|
+
executeExtensionCommand?: (command: ParsedTelegramCommand, message: TMessage, ctx: TContext) => Promise<boolean>;
|
|
362
|
+
expandPromptTemplateCommand?: (commandName: string, args: string) => string | undefined;
|
|
363
|
+
replaceMessageText: (message: TMessage, text: string) => TMessage;
|
|
364
|
+
enqueueTurn: (messages: TMessage[], ctx: TContext) => Promise<void>;
|
|
365
|
+
assertExecutionCurrent?: (message: TMessage) => void;
|
|
366
|
+
}
|
|
367
|
+
export interface TelegramCommandRuntimeDeps<TMessage extends TelegramCommandRuntimeMessage, TContext> extends TelegramRuntimeEventRecorderPort {
|
|
368
|
+
hasAbortHandler: () => boolean;
|
|
369
|
+
clearPendingModelSwitch: () => void;
|
|
370
|
+
hasQueuedTelegramItems: () => boolean;
|
|
371
|
+
clearQueuedTelegramItems: (ctx: TContext) => number;
|
|
372
|
+
setFoldQueuedPromptsIntoHistory: (fold: boolean) => void;
|
|
373
|
+
abortCurrentTurn: () => void;
|
|
374
|
+
isIdle: (ctx: TContext) => boolean;
|
|
375
|
+
hasPendingMessages: (ctx: TContext) => boolean;
|
|
376
|
+
hasActiveTelegramTurn: () => boolean;
|
|
377
|
+
hasDispatchPending: () => boolean;
|
|
378
|
+
isCompactionInProgress: () => boolean;
|
|
379
|
+
setCompactionInProgress: (inProgress: boolean) => void;
|
|
380
|
+
updateStatus: (ctx: TContext) => void;
|
|
381
|
+
isContextActive?: (ctx: TContext) => boolean;
|
|
382
|
+
dispatchNextQueuedTelegramTurn: (ctx: TContext) => void;
|
|
383
|
+
requestNextDispatchAnnouncement?: () => void;
|
|
384
|
+
requestDeferredDispatchNextQueuedTelegramTurn?: (dispatch: (ctx: TContext) => void) => void;
|
|
385
|
+
startTypingLoop?: (ctx: TContext, chatId?: number, options?: {
|
|
386
|
+
target?: {
|
|
387
|
+
chatId: number;
|
|
388
|
+
threadId?: number;
|
|
389
|
+
};
|
|
390
|
+
}) => void;
|
|
391
|
+
stopTypingLoop?: () => void;
|
|
392
|
+
enqueueContinueTurn: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
393
|
+
compact: (ctx: TContext, callbacks: {
|
|
394
|
+
onComplete: () => void;
|
|
395
|
+
onError: (error: unknown) => void;
|
|
396
|
+
}) => void;
|
|
397
|
+
enqueueControlItem: (message: TMessage, ctx: TContext, controlType: TelegramControlCommandType, statusSummary: string, execute: (ctx: TContext) => Promise<void>) => void;
|
|
398
|
+
showStatus: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
399
|
+
handleForumBootstrap?: (message: TMessage, ctx: TContext) => Promise<string | undefined>;
|
|
400
|
+
openModelMenu: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
401
|
+
openThinkingMenu: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
402
|
+
openQueueMenu: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
403
|
+
openSettingsMenu?: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
404
|
+
validateThreadName?: (threadName: string) => string | undefined;
|
|
405
|
+
renameCurrentThread?: TelegramThreadDisplayNameRenamePort;
|
|
406
|
+
resetCurrentThreadName?: TelegramThreadDisplayNameResetPort;
|
|
407
|
+
openThreadNameDialog?: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
408
|
+
getAllowedUserId: () => number | undefined;
|
|
409
|
+
persistAllowedUserId: TelegramConfigStore["persistAllowedUserId"];
|
|
410
|
+
registerBotCommands: () => Promise<void>;
|
|
411
|
+
getPromptTemplateCommands?: () => readonly TelegramPromptTemplateMenuCommand[];
|
|
412
|
+
sendTextReply: (message: TMessage, text: string, options?: {
|
|
413
|
+
parseMode?: "HTML";
|
|
414
|
+
}) => Promise<void>;
|
|
415
|
+
getActiveTurnReply?: () => ((text: string, options?: {
|
|
416
|
+
parseMode?: "HTML";
|
|
417
|
+
}) => Promise<void>) | undefined;
|
|
418
|
+
sendInteractiveMessage?: TelegramCompactConfirmationDeps["sendInteractiveMessage"];
|
|
419
|
+
assertExecutionCurrent?: (message: TMessage) => void;
|
|
420
|
+
}
|
|
421
|
+
export declare const TELEGRAM_APP_MENU_INTRO_HTML: string;
|
|
422
|
+
export declare function buildTelegramAppMenuHtml(statusHtml: string, promptTemplates?: readonly TelegramPromptTemplateMenuCommand[]): string;
|
|
423
|
+
export declare function createTelegramAppMenuHtmlBuilder<TContext>(deps: {
|
|
424
|
+
buildStatusHtml: (ctx: TContext) => string;
|
|
425
|
+
getPromptTemplateCommands?: () => readonly TelegramPromptTemplateMenuCommand[];
|
|
426
|
+
}): (ctx: TContext) => string;
|
|
427
|
+
export declare function parseTelegramCommand(text: string): ParsedTelegramCommand | undefined;
|
|
428
|
+
export declare const TELEGRAM_COMMAND_ACTIONS: {
|
|
429
|
+
readonly stop: {
|
|
430
|
+
readonly kind: "stop";
|
|
431
|
+
readonly executionMode: "immediate";
|
|
432
|
+
};
|
|
433
|
+
readonly name: {
|
|
434
|
+
readonly kind: "name";
|
|
435
|
+
readonly executionMode: "immediate";
|
|
436
|
+
};
|
|
437
|
+
readonly abort: {
|
|
438
|
+
readonly kind: "abort";
|
|
439
|
+
readonly executionMode: "immediate";
|
|
440
|
+
};
|
|
441
|
+
readonly next: {
|
|
442
|
+
readonly kind: "next";
|
|
443
|
+
readonly executionMode: "immediate";
|
|
444
|
+
};
|
|
445
|
+
readonly continue: {
|
|
446
|
+
readonly kind: "continue";
|
|
447
|
+
readonly executionMode: "immediate";
|
|
448
|
+
};
|
|
449
|
+
readonly status: {
|
|
450
|
+
readonly kind: "status";
|
|
451
|
+
readonly executionMode: "immediate";
|
|
452
|
+
};
|
|
453
|
+
readonly queue: {
|
|
454
|
+
readonly kind: "queue";
|
|
455
|
+
readonly executionMode: "immediate";
|
|
456
|
+
};
|
|
457
|
+
readonly compact: {
|
|
458
|
+
readonly kind: "compact";
|
|
459
|
+
readonly executionMode: "immediate";
|
|
460
|
+
};
|
|
461
|
+
readonly model: {
|
|
462
|
+
readonly kind: "model";
|
|
463
|
+
readonly executionMode: "immediate";
|
|
464
|
+
};
|
|
465
|
+
readonly thinking: {
|
|
466
|
+
readonly kind: "thinking";
|
|
467
|
+
readonly executionMode: "immediate";
|
|
468
|
+
};
|
|
469
|
+
readonly settings: {
|
|
470
|
+
readonly kind: "settings";
|
|
471
|
+
readonly executionMode: "immediate";
|
|
472
|
+
};
|
|
473
|
+
readonly help: {
|
|
474
|
+
readonly kind: "help";
|
|
475
|
+
readonly commandName: "help";
|
|
476
|
+
readonly executionMode: "immediate";
|
|
477
|
+
};
|
|
478
|
+
readonly start: {
|
|
479
|
+
readonly kind: "help";
|
|
480
|
+
readonly commandName: "start";
|
|
481
|
+
readonly executionMode: "immediate";
|
|
482
|
+
};
|
|
483
|
+
};
|
|
484
|
+
export declare function buildTelegramCommandAction(commandName: string | undefined): TelegramCommandAction;
|
|
485
|
+
export declare function getTelegramCommandExecutionMode(action: TelegramCommandAction): TelegramCommandExecutionMode;
|
|
486
|
+
export declare function handleTelegramStopCommand(deps: TelegramStopCommandDeps): Promise<void>;
|
|
487
|
+
export declare function handleTelegramAbortCommand(deps: {
|
|
488
|
+
hasAbortHandler: () => boolean;
|
|
489
|
+
hasActiveTelegramTurn: () => boolean;
|
|
490
|
+
clearPendingModelSwitch: () => void;
|
|
491
|
+
abortCurrentTurn: () => void;
|
|
492
|
+
setFoldQueuedPromptsIntoHistory: (fold: boolean) => void;
|
|
493
|
+
updateStatus: () => void;
|
|
494
|
+
sendTextReply: (text: string, options?: {
|
|
495
|
+
parseMode?: "HTML";
|
|
496
|
+
}) => Promise<void>;
|
|
497
|
+
}): Promise<void>;
|
|
498
|
+
export declare function handleTelegramNextCommand(deps: {
|
|
499
|
+
hasAbortHandler: () => boolean;
|
|
500
|
+
isIdle: () => boolean;
|
|
501
|
+
hasQueuedItems: () => boolean;
|
|
502
|
+
clearPendingModelSwitch: () => void;
|
|
503
|
+
abortCurrentTurn: () => void;
|
|
504
|
+
dispatchNextQueuedTurn: () => void;
|
|
505
|
+
requestNextDispatchAnnouncement?: () => void;
|
|
506
|
+
clearFoldForDispatch: () => void;
|
|
507
|
+
updateStatus: () => void;
|
|
508
|
+
sendTextReply: (text: string, options?: {
|
|
509
|
+
parseMode?: "HTML";
|
|
510
|
+
}) => Promise<void>;
|
|
511
|
+
getActiveTurnReply?: () => ((text: string, options?: {
|
|
512
|
+
parseMode?: "HTML";
|
|
513
|
+
}) => Promise<void>) | undefined;
|
|
514
|
+
}): Promise<void>;
|
|
515
|
+
export declare function handleTelegramContinueCommand<TMessage, TContext>(message: TMessage, ctx: TContext, deps: {
|
|
516
|
+
enqueueContinueTurn: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
517
|
+
}): Promise<void>;
|
|
518
|
+
export declare function buildTelegramCompactConfirmationReplyMarkup(): TelegramCompactConfirmationReplyMarkup;
|
|
519
|
+
export declare function getTelegramCompactConfirmationHtml(): string;
|
|
520
|
+
export declare function openTelegramCompactConfirmation(target: TelegramCommandMessageTarget, deps: TelegramCompactConfirmationDeps): Promise<void>;
|
|
521
|
+
export declare function handleTelegramCompactConfirmationCallback<TContext>(query: TelegramCompactConfirmationCallbackQuery, deps: TelegramCompactConfirmationCallbackDeps<TContext>): Promise<boolean>;
|
|
522
|
+
export declare function handleTelegramCompactCommand(deps: TelegramCompactCommandDeps): Promise<void>;
|
|
523
|
+
export declare function handleTelegramStatusCommand<TContext>(deps: {
|
|
524
|
+
ctx: TContext;
|
|
525
|
+
showStatus: (ctx: TContext) => Promise<void>;
|
|
526
|
+
}): Promise<void>;
|
|
527
|
+
export declare function handleTelegramModelCommand<TContext>(deps: {
|
|
528
|
+
ctx: TContext;
|
|
529
|
+
openModelMenu: (ctx: TContext) => Promise<void>;
|
|
530
|
+
}): Promise<void>;
|
|
531
|
+
export declare function executeTelegramCommandAction<TMessage, TContext>(action: TelegramCommandAction, message: TMessage, ctx: TContext, deps: TelegramCommandActionDeps<TMessage, TContext>, commandArgs?: string): Promise<boolean>;
|
|
532
|
+
export interface TelegramCommandHandlerTargetRuntimeDeps<TMessage extends TelegramCommandRuntimeMessage, TContext> extends Omit<TelegramCommandRuntimeDeps<TMessage, TContext>, "enqueueControlItem" | "showStatus" | "openModelMenu" | "openSettingsMenu" | "sendTextReply" | "registerBotCommands">, Omit<TelegramCommandTargetQueueRuntimeDeps<TContext>, "createControlItem">, TelegramBotCommandRegistrationDeps {
|
|
533
|
+
allocateItemOrder: () => number;
|
|
534
|
+
allocateControlOrder: () => number;
|
|
535
|
+
}
|
|
536
|
+
export declare function createTelegramCommandHandlerTargetRuntime<TMessage extends TelegramCommandRuntimeMessage, TContext>(deps: TelegramCommandHandlerTargetRuntimeDeps<TMessage, TContext>): (commandName: string | undefined, message: TMessage, ctx: TContext, commandArgs?: string) => Promise<boolean>;
|
|
537
|
+
export declare function createTelegramCommandHandler<TMessage extends TelegramCommandRuntimeMessage, TContext>(deps: TelegramCommandRuntimeDeps<TMessage, TContext>): (commandName: string | undefined, message: TMessage, ctx: TContext, commandArgs?: string) => Promise<boolean>;
|
|
538
|
+
export declare function createTelegramCommandOrPromptRuntime<TMessage, TContext>(deps: TelegramCommandOrPromptRuntimeDeps<TMessage, TContext>): {
|
|
539
|
+
dispatchMessages: (messages: TMessage[], ctx: TContext) => Promise<void>;
|
|
540
|
+
};
|
|
541
|
+
export {};
|