@llblab/pi-kit 0.29.1 → 0.30.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/BACKLOG.md +3 -1
- package/CHANGELOG.md +10 -0
- package/README.md +4 -4
- package/node_modules/@llblab/pi-state-flow/CHANGELOG.md +12 -0
- package/node_modules/@llblab/pi-state-flow/README.md +2 -2
- package/node_modules/@llblab/pi-state-flow/dist/lib/context.d.ts +2 -2
- package/node_modules/@llblab/pi-state-flow/dist/lib/context.js +17 -8
- package/node_modules/@llblab/pi-state-flow/dist/lib/extension.js +7 -3
- package/node_modules/@llblab/pi-state-flow/dist/lib/protocol.d.ts +2 -1
- package/node_modules/@llblab/pi-state-flow/dist/lib/protocol.js +3 -2
- package/node_modules/@llblab/pi-state-flow/dist/package.json +1 -1
- package/node_modules/@llblab/pi-state-flow/docs/architecture.md +3 -3
- package/node_modules/@llblab/pi-state-flow/docs/usage.md +3 -2
- package/node_modules/@llblab/pi-state-flow/lib/context.ts +17 -8
- package/node_modules/@llblab/pi-state-flow/lib/extension.ts +6 -3
- package/node_modules/@llblab/pi-state-flow/lib/protocol.ts +4 -2
- package/node_modules/@llblab/pi-state-flow/package.json +1 -1
- package/node_modules/@llblab/pi-telegram/AGENTS.md +13 -10
- package/node_modules/@llblab/pi-telegram/BACKLOG.md +1 -1
- package/node_modules/@llblab/pi-telegram/CHANGELOG.md +23 -0
- package/node_modules/@llblab/pi-telegram/README.md +10 -11
- package/node_modules/@llblab/pi-telegram/api/commands.ts +3 -0
- package/node_modules/@llblab/pi-telegram/dist/api/commands.d.ts +1 -1
- package/node_modules/@llblab/pi-telegram/dist/lib/activity-verbosity.d.ts +1 -5
- package/node_modules/@llblab/pi-telegram/dist/lib/activity-verbosity.js +15 -42
- package/node_modules/@llblab/pi-telegram/dist/lib/activity.d.ts +9 -0
- package/node_modules/@llblab/pi-telegram/dist/lib/activity.js +39 -10
- package/node_modules/@llblab/pi-telegram/dist/lib/agent-messages.js +7 -3
- package/node_modules/@llblab/pi-telegram/dist/lib/bindings.d.ts +43 -5
- package/node_modules/@llblab/pi-telegram/dist/lib/bindings.js +164 -20
- package/node_modules/@llblab/pi-telegram/dist/lib/bus-api.d.ts +12 -0
- package/node_modules/@llblab/pi-telegram/dist/lib/bus-api.js +181 -77
- package/node_modules/@llblab/pi-telegram/dist/lib/bus-follower.d.ts +111 -31
- package/node_modules/@llblab/pi-telegram/dist/lib/bus-follower.js +1324 -359
- package/node_modules/@llblab/pi-telegram/dist/lib/bus-leader.d.ts +41 -91
- package/node_modules/@llblab/pi-telegram/dist/lib/bus-leader.js +969 -637
- package/node_modules/@llblab/pi-telegram/dist/lib/bus-transport.js +16 -9
- package/node_modules/@llblab/pi-telegram/dist/lib/bus.d.ts +215 -18
- package/node_modules/@llblab/pi-telegram/dist/lib/bus.js +1048 -327
- package/node_modules/@llblab/pi-telegram/dist/lib/channel-posts.d.ts +5 -0
- package/node_modules/@llblab/pi-telegram/dist/lib/channel-posts.js +434 -261
- package/node_modules/@llblab/pi-telegram/dist/lib/command-templates.d.ts +26 -5
- package/node_modules/@llblab/pi-telegram/dist/lib/command-templates.js +92 -176
- package/node_modules/@llblab/pi-telegram/dist/lib/commands.d.ts +168 -82
- package/node_modules/@llblab/pi-telegram/dist/lib/commands.js +1409 -291
- package/node_modules/@llblab/pi-telegram/dist/lib/config.d.ts +1 -8
- package/node_modules/@llblab/pi-telegram/dist/lib/config.js +34 -76
- package/node_modules/@llblab/pi-telegram/dist/lib/delivery.d.ts +2 -2
- package/node_modules/@llblab/pi-telegram/dist/lib/delivery.js +16 -16
- package/node_modules/@llblab/pi-telegram/dist/lib/extension.js +642 -170
- package/node_modules/@llblab/pi-telegram/dist/lib/generative-app-worker.mjs +19 -7
- package/node_modules/@llblab/pi-telegram/dist/lib/generative-apps.d.ts +0 -5
- package/node_modules/@llblab/pi-telegram/dist/lib/generative-apps.js +61 -49
- package/node_modules/@llblab/pi-telegram/dist/lib/inbound.d.ts +5 -0
- package/node_modules/@llblab/pi-telegram/dist/lib/inbound.js +35 -59
- package/node_modules/@llblab/pi-telegram/dist/lib/journal.d.ts +40 -4
- package/node_modules/@llblab/pi-telegram/dist/lib/journal.js +2102 -760
- package/node_modules/@llblab/pi-telegram/dist/lib/lifecycle.d.ts +2 -6
- package/node_modules/@llblab/pi-telegram/dist/lib/lifecycle.js +75 -58
- package/node_modules/@llblab/pi-telegram/dist/lib/locks.d.ts +34 -3
- package/node_modules/@llblab/pi-telegram/dist/lib/locks.js +318 -119
- package/node_modules/@llblab/pi-telegram/dist/lib/logging.js +50 -14
- package/node_modules/@llblab/pi-telegram/dist/lib/media.d.ts +22 -1
- package/node_modules/@llblab/pi-telegram/dist/lib/media.js +46 -28
- package/node_modules/@llblab/pi-telegram/dist/lib/menu-model.d.ts +19 -5
- package/node_modules/@llblab/pi-telegram/dist/lib/menu-model.js +53 -11
- package/node_modules/@llblab/pi-telegram/dist/lib/menu-queue.d.ts +5 -4
- package/node_modules/@llblab/pi-telegram/dist/lib/menu-queue.js +45 -63
- package/node_modules/@llblab/pi-telegram/dist/lib/menu-settings.d.ts +5 -4
- package/node_modules/@llblab/pi-telegram/dist/lib/menu-settings.js +114 -78
- package/node_modules/@llblab/pi-telegram/dist/lib/menu-status.d.ts +1 -1
- package/node_modules/@llblab/pi-telegram/dist/lib/menu-status.js +8 -25
- package/node_modules/@llblab/pi-telegram/dist/lib/menu-thinking.d.ts +6 -1
- package/node_modules/@llblab/pi-telegram/dist/lib/menu-thinking.js +14 -21
- package/node_modules/@llblab/pi-telegram/dist/lib/menu.d.ts +8 -61
- package/node_modules/@llblab/pi-telegram/dist/lib/menu.js +92 -164
- package/node_modules/@llblab/pi-telegram/dist/lib/model.d.ts +1 -1
- package/node_modules/@llblab/pi-telegram/dist/lib/model.js +2 -16
- package/node_modules/@llblab/pi-telegram/dist/lib/outbound-attachments.d.ts +6 -27
- package/node_modules/@llblab/pi-telegram/dist/lib/outbound-attachments.js +45 -38
- package/node_modules/@llblab/pi-telegram/dist/lib/outbound-buttons.js +22 -16
- package/node_modules/@llblab/pi-telegram/dist/lib/outbound-markup.d.ts +0 -2
- package/node_modules/@llblab/pi-telegram/dist/lib/outbound-markup.js +51 -64
- package/node_modules/@llblab/pi-telegram/dist/lib/outbound-voice.js +6 -3
- package/node_modules/@llblab/pi-telegram/dist/lib/outbound.d.ts +6 -6
- package/node_modules/@llblab/pi-telegram/dist/lib/outbound.js +61 -51
- package/node_modules/@llblab/pi-telegram/dist/lib/ownership.js +6 -2
- package/node_modules/@llblab/pi-telegram/dist/lib/paths.d.ts +5 -0
- package/node_modules/@llblab/pi-telegram/dist/lib/paths.js +37 -21
- package/node_modules/@llblab/pi-telegram/dist/lib/pi.d.ts +2 -0
- package/node_modules/@llblab/pi-telegram/dist/lib/pi.js +8 -1
- package/node_modules/@llblab/pi-telegram/dist/lib/polling.d.ts +23 -37
- package/node_modules/@llblab/pi-telegram/dist/lib/polling.js +71 -52
- package/node_modules/@llblab/pi-telegram/dist/lib/preview.js +39 -19
- package/node_modules/@llblab/pi-telegram/dist/lib/process-identity.d.ts +24 -0
- package/node_modules/@llblab/pi-telegram/dist/lib/process-identity.js +133 -0
- package/node_modules/@llblab/pi-telegram/dist/lib/prompts.js +2 -7
- package/node_modules/@llblab/pi-telegram/dist/lib/queue.d.ts +16 -16
- package/node_modules/@llblab/pi-telegram/dist/lib/queue.js +261 -116
- package/node_modules/@llblab/pi-telegram/dist/lib/recovery.d.ts +2 -83
- package/node_modules/@llblab/pi-telegram/dist/lib/recovery.js +20 -274
- package/node_modules/@llblab/pi-telegram/dist/lib/replies.d.ts +16 -24
- package/node_modules/@llblab/pi-telegram/dist/lib/replies.js +99 -116
- package/node_modules/@llblab/pi-telegram/dist/lib/routing.d.ts +121 -7
- package/node_modules/@llblab/pi-telegram/dist/lib/routing.js +4750 -1161
- package/node_modules/@llblab/pi-telegram/dist/lib/runtime.d.ts +1 -11
- package/node_modules/@llblab/pi-telegram/dist/lib/sections.d.ts +4 -29
- package/node_modules/@llblab/pi-telegram/dist/lib/sections.js +7 -20
- package/node_modules/@llblab/pi-telegram/dist/lib/skills.js +4 -3
- package/node_modules/@llblab/pi-telegram/dist/lib/status.js +86 -57
- package/node_modules/@llblab/pi-telegram/dist/lib/sync.d.ts +6 -3
- package/node_modules/@llblab/pi-telegram/dist/lib/sync.js +112 -45
- package/node_modules/@llblab/pi-telegram/dist/lib/target.d.ts +4 -0
- package/node_modules/@llblab/pi-telegram/dist/lib/target.js +18 -0
- package/node_modules/@llblab/pi-telegram/dist/lib/telegram-api.d.ts +18 -11
- package/node_modules/@llblab/pi-telegram/dist/lib/telegram-api.js +165 -49
- package/node_modules/@llblab/pi-telegram/dist/lib/text-groups.js +4 -39
- package/node_modules/@llblab/pi-telegram/dist/lib/thread-cleanup-manager.d.ts +6 -27
- package/node_modules/@llblab/pi-telegram/dist/lib/thread-cleanup-manager.js +369 -186
- package/node_modules/@llblab/pi-telegram/dist/lib/thread-display.d.ts +1 -2
- package/node_modules/@llblab/pi-telegram/dist/lib/thread-display.js +58 -38
- package/node_modules/@llblab/pi-telegram/dist/lib/thread-naming.d.ts +28 -8
- package/node_modules/@llblab/pi-telegram/dist/lib/thread-naming.js +175 -66
- package/node_modules/@llblab/pi-telegram/dist/lib/thread-reconciler.d.ts +42 -16
- package/node_modules/@llblab/pi-telegram/dist/lib/thread-reconciler.js +90 -50
- package/node_modules/@llblab/pi-telegram/dist/lib/threads.d.ts +88 -24
- package/node_modules/@llblab/pi-telegram/dist/lib/threads.js +2276 -842
- package/node_modules/@llblab/pi-telegram/dist/lib/time-injection.js +1 -2
- package/node_modules/@llblab/pi-telegram/dist/lib/turns.js +1 -19
- package/node_modules/@llblab/pi-telegram/dist/lib/updates.d.ts +178 -82
- package/node_modules/@llblab/pi-telegram/dist/lib/updates.js +2438 -645
- package/node_modules/@llblab/pi-telegram/dist/lib/voice.d.ts +7 -22
- package/node_modules/@llblab/pi-telegram/dist/lib/voice.js +7 -22
- package/node_modules/@llblab/pi-telegram/dist/lib/wire.js +1 -1
- package/node_modules/@llblab/pi-telegram/dist/lib/workspace-admission.d.ts +3 -1
- package/node_modules/@llblab/pi-telegram/dist/lib/workspace-admission.js +425 -211
- package/node_modules/@llblab/pi-telegram/dist/lib/workspace-identity.js +8 -13
- package/node_modules/@llblab/pi-telegram/dist/lib/workspace-retirement.d.ts +1 -1
- package/node_modules/@llblab/pi-telegram/dist/lib/workspace-retirement.js +328 -140
- package/node_modules/@llblab/pi-telegram/dist/lib/workspace-slots.js +8 -4
- package/node_modules/@llblab/pi-telegram/dist/package.json +1 -1
- package/node_modules/@llblab/pi-telegram/docs/architecture.md +43 -35
- package/node_modules/@llblab/pi-telegram/docs/inbound.md +1 -1
- package/node_modules/@llblab/pi-telegram/docs/multi-instance-bus.md +15 -3
- package/node_modules/@llblab/pi-telegram/docs/outbound.md +1 -1
- package/node_modules/@llblab/pi-telegram/docs/public-api.md +29 -1
- package/node_modules/@llblab/pi-telegram/docs/ui-style.md +25 -8
- package/node_modules/@llblab/pi-telegram/lib/activity-verbosity.ts +59 -82
- package/node_modules/@llblab/pi-telegram/lib/activity.ts +146 -102
- package/node_modules/@llblab/pi-telegram/lib/agent-messages.ts +12 -5
- package/node_modules/@llblab/pi-telegram/lib/bindings.ts +390 -82
- package/node_modules/@llblab/pi-telegram/lib/bus-api.ts +262 -99
- package/node_modules/@llblab/pi-telegram/lib/bus-follower.ts +2440 -601
- package/node_modules/@llblab/pi-telegram/lib/bus-leader.ts +2209 -1290
- package/node_modules/@llblab/pi-telegram/lib/bus-transport.ts +46 -12
- package/node_modules/@llblab/pi-telegram/lib/bus.ts +1673 -444
- package/node_modules/@llblab/pi-telegram/lib/channel-posts.ts +848 -327
- package/node_modules/@llblab/pi-telegram/lib/command-templates.ts +152 -265
- package/node_modules/@llblab/pi-telegram/lib/commands.ts +2398 -555
- package/node_modules/@llblab/pi-telegram/lib/config.ts +177 -170
- package/node_modules/@llblab/pi-telegram/lib/delivery.ts +41 -29
- package/node_modules/@llblab/pi-telegram/lib/extension.ts +1209 -431
- package/node_modules/@llblab/pi-telegram/lib/generative-app-worker.mjs +19 -7
- package/node_modules/@llblab/pi-telegram/lib/generative-apps.ts +324 -211
- package/node_modules/@llblab/pi-telegram/lib/inbound.ts +95 -97
- package/node_modules/@llblab/pi-telegram/lib/journal.ts +5329 -1712
- package/node_modules/@llblab/pi-telegram/lib/keyboard.ts +1 -3
- package/node_modules/@llblab/pi-telegram/lib/lifecycle.ts +128 -78
- package/node_modules/@llblab/pi-telegram/lib/locks.ts +703 -212
- package/node_modules/@llblab/pi-telegram/lib/logging.ts +147 -58
- package/node_modules/@llblab/pi-telegram/lib/media.ts +82 -43
- package/node_modules/@llblab/pi-telegram/lib/menu-model.ts +85 -18
- package/node_modules/@llblab/pi-telegram/lib/menu-queue.ts +88 -129
- package/node_modules/@llblab/pi-telegram/lib/menu-settings.ts +260 -155
- package/node_modules/@llblab/pi-telegram/lib/menu-status.ts +20 -60
- package/node_modules/@llblab/pi-telegram/lib/menu-thinking.ts +41 -56
- package/node_modules/@llblab/pi-telegram/lib/menu.ts +112 -285
- package/node_modules/@llblab/pi-telegram/lib/model.ts +8 -22
- package/node_modules/@llblab/pi-telegram/lib/outbound-attachments.ts +156 -125
- package/node_modules/@llblab/pi-telegram/lib/outbound-buttons.ts +76 -49
- package/node_modules/@llblab/pi-telegram/lib/outbound-markup.ts +96 -94
- package/node_modules/@llblab/pi-telegram/lib/outbound-voice.ts +33 -27
- package/node_modules/@llblab/pi-telegram/lib/outbound.ts +125 -125
- package/node_modules/@llblab/pi-telegram/lib/ownership.ts +19 -10
- package/node_modules/@llblab/pi-telegram/lib/paths.ts +148 -49
- package/node_modules/@llblab/pi-telegram/lib/pi.ts +35 -15
- package/node_modules/@llblab/pi-telegram/lib/polling.ts +165 -149
- package/node_modules/@llblab/pi-telegram/lib/preview.ts +93 -40
- package/node_modules/@llblab/pi-telegram/lib/process-identity.ts +164 -0
- package/node_modules/@llblab/pi-telegram/lib/prompts.ts +4 -11
- package/node_modules/@llblab/pi-telegram/lib/queue.ts +523 -289
- package/node_modules/@llblab/pi-telegram/lib/recovery.ts +50 -454
- package/node_modules/@llblab/pi-telegram/lib/rendering.ts +1 -3
- package/node_modules/@llblab/pi-telegram/lib/replies.ts +248 -209
- package/node_modules/@llblab/pi-telegram/lib/routing.ts +8527 -2149
- package/node_modules/@llblab/pi-telegram/lib/runtime.ts +1 -12
- package/node_modules/@llblab/pi-telegram/lib/sections.ts +24 -89
- package/node_modules/@llblab/pi-telegram/lib/setup.ts +1 -3
- package/node_modules/@llblab/pi-telegram/lib/skills.ts +9 -4
- package/node_modules/@llblab/pi-telegram/lib/status.ts +215 -110
- package/node_modules/@llblab/pi-telegram/lib/sync.ts +488 -359
- package/node_modules/@llblab/pi-telegram/lib/target.ts +22 -3
- package/node_modules/@llblab/pi-telegram/lib/telegram-api.ts +322 -122
- package/node_modules/@llblab/pi-telegram/lib/text-groups.ts +5 -39
- package/node_modules/@llblab/pi-telegram/lib/thread-cleanup-manager.ts +833 -331
- package/node_modules/@llblab/pi-telegram/lib/thread-display.ts +213 -97
- package/node_modules/@llblab/pi-telegram/lib/thread-naming.ts +232 -87
- package/node_modules/@llblab/pi-telegram/lib/thread-reconciler.ts +155 -72
- package/node_modules/@llblab/pi-telegram/lib/threads.ts +5329 -1817
- package/node_modules/@llblab/pi-telegram/lib/time-injection.ts +1 -4
- package/node_modules/@llblab/pi-telegram/lib/turns.ts +15 -28
- package/node_modules/@llblab/pi-telegram/lib/updates.ts +5194 -1600
- package/node_modules/@llblab/pi-telegram/lib/voice.ts +7 -35
- package/node_modules/@llblab/pi-telegram/lib/wire.ts +1 -1
- package/node_modules/@llblab/pi-telegram/lib/workspace-admission.ts +996 -416
- package/node_modules/@llblab/pi-telegram/lib/workspace-identity.ts +14 -17
- package/node_modules/@llblab/pi-telegram/lib/workspace-retirement.ts +878 -376
- package/node_modules/@llblab/pi-telegram/lib/workspace-slots.ts +22 -13
- package/node_modules/@llblab/pi-telegram/package.json +1 -1
- package/package.json +3 -3
- package/node_modules/@llblab/pi-telegram/scripts/check-downgrade.mjs +0 -472
- package/node_modules/@llblab/pi-telegram/scripts/measure-workspace.mjs +0 -108
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
type TelegramInlineKeyboardMarkup,
|
|
11
11
|
} from "./keyboard.ts";
|
|
12
12
|
import {
|
|
13
|
-
withTelegramReplyParameters,
|
|
14
13
|
renderTelegramMessage,
|
|
14
|
+
withTelegramReplyParameters,
|
|
15
15
|
} from "./replies.ts";
|
|
16
16
|
import {
|
|
17
17
|
areTelegramTargetsEqual as areDeliveryTargetsEqual,
|
|
@@ -92,6 +92,7 @@ export type TelegramDeliveryChatAction =
|
|
|
92
92
|
/** @internal */
|
|
93
93
|
export interface TelegramDeliveryRuntime {
|
|
94
94
|
readonly generation: string;
|
|
95
|
+
hasPendingTarget?: (target: TelegramDeliveryTarget) => boolean;
|
|
95
96
|
shutdown: () => void;
|
|
96
97
|
sendView: (
|
|
97
98
|
view: TelegramDeliveryView,
|
|
@@ -186,6 +187,7 @@ export function createTelegramDeliveryLifecycleHooks(
|
|
|
186
187
|
): {
|
|
187
188
|
onSessionStart: () => Promise<void>;
|
|
188
189
|
onSessionShutdown: () => Promise<void>;
|
|
190
|
+
hasPendingTarget: (target: TelegramDeliveryTarget) => boolean | undefined;
|
|
189
191
|
} {
|
|
190
192
|
let runtime: TelegramDeliveryRuntime | undefined;
|
|
191
193
|
let unbind: ReturnType<typeof bindTelegramDeliveryRuntime> | undefined;
|
|
@@ -196,6 +198,7 @@ export function createTelegramDeliveryLifecycleHooks(
|
|
|
196
198
|
runtime = undefined;
|
|
197
199
|
};
|
|
198
200
|
return {
|
|
201
|
+
hasPendingTarget: (target) => runtime?.hasPendingTarget?.(target),
|
|
199
202
|
onSessionStart: async () => {
|
|
200
203
|
stopCurrentRuntime();
|
|
201
204
|
runtime = createRuntime();
|
|
@@ -207,7 +210,9 @@ export function createTelegramDeliveryLifecycleHooks(
|
|
|
207
210
|
};
|
|
208
211
|
}
|
|
209
212
|
|
|
210
|
-
export function createTelegramDeliveryGenerationSeed(
|
|
213
|
+
export function createTelegramDeliveryGenerationSeed(
|
|
214
|
+
instanceId: string,
|
|
215
|
+
): string {
|
|
211
216
|
return `${instanceId}:${Date.now()}`;
|
|
212
217
|
}
|
|
213
218
|
|
|
@@ -264,16 +269,25 @@ function failure<T>(
|
|
|
264
269
|
}
|
|
265
270
|
|
|
266
271
|
function classifyTelegramDeliveryTransportError(error: unknown): {
|
|
267
|
-
reason: Extract<
|
|
268
|
-
|
|
269
|
-
|
|
272
|
+
reason: Extract<
|
|
273
|
+
TelegramDeliveryFailureReason,
|
|
274
|
+
| "commit-unknown"
|
|
275
|
+
| "message-unavailable"
|
|
276
|
+
| "rate-limited"
|
|
277
|
+
| "transport-retryable"
|
|
278
|
+
| "transport-failed"
|
|
279
|
+
>;
|
|
270
280
|
retryAfterMs?: number;
|
|
271
281
|
} {
|
|
272
|
-
if (isTelegramApiCommitUnknownError(error))
|
|
273
|
-
|
|
282
|
+
if (isTelegramApiCommitUnknownError(error))
|
|
283
|
+
return { reason: "commit-unknown" };
|
|
284
|
+
if (isTelegramMessageUnavailableError(error))
|
|
285
|
+
return { reason: "message-unavailable" };
|
|
274
286
|
const retryAfterMs = getTelegramApiRetryAfterMs(error);
|
|
275
|
-
if (retryAfterMs !== undefined)
|
|
276
|
-
|
|
287
|
+
if (retryAfterMs !== undefined)
|
|
288
|
+
return { reason: "rate-limited", retryAfterMs };
|
|
289
|
+
if (isRetryableTelegramApiError(error))
|
|
290
|
+
return { reason: "transport-retryable" };
|
|
277
291
|
return { reason: "transport-failed" };
|
|
278
292
|
}
|
|
279
293
|
|
|
@@ -415,7 +429,7 @@ function resolveTelegramDeliveryTarget(
|
|
|
415
429
|
|
|
416
430
|
function createTelegramDeliveryTargetQueue() {
|
|
417
431
|
const queues = new Map<string, Promise<void>>();
|
|
418
|
-
|
|
432
|
+
async function run<T>(
|
|
419
433
|
target: TelegramDeliveryTarget,
|
|
420
434
|
operation: () => Promise<T>,
|
|
421
435
|
): Promise<T> {
|
|
@@ -432,6 +446,11 @@ function createTelegramDeliveryTargetQueue() {
|
|
|
432
446
|
} finally {
|
|
433
447
|
if (queues.get(key) === settled) queues.delete(key);
|
|
434
448
|
}
|
|
449
|
+
}
|
|
450
|
+
return {
|
|
451
|
+
run,
|
|
452
|
+
hasPendingTarget: (target: TelegramDeliveryTarget) =>
|
|
453
|
+
queues.has(targetKey(target)),
|
|
435
454
|
};
|
|
436
455
|
}
|
|
437
456
|
|
|
@@ -463,7 +482,8 @@ export function createTelegramDeliveryRuntime(
|
|
|
463
482
|
TelegramDeliveryHandle,
|
|
464
483
|
{ target: TelegramDeliveryTarget; messageIds: readonly number[] }
|
|
465
484
|
>();
|
|
466
|
-
const
|
|
485
|
+
const targetQueue = createTelegramDeliveryTargetQueue();
|
|
486
|
+
const runForTarget = targetQueue.run;
|
|
467
487
|
const render = (
|
|
468
488
|
view: TelegramDeliveryView,
|
|
469
489
|
): TelegramDeliveryResult<readonly TelegramDeliveryRenderedChunk[]> => {
|
|
@@ -549,6 +569,7 @@ export function createTelegramDeliveryRuntime(
|
|
|
549
569
|
};
|
|
550
570
|
return {
|
|
551
571
|
generation: deps.generation,
|
|
572
|
+
hasPendingTarget: targetQueue.hasPendingTarget,
|
|
552
573
|
shutdown() {
|
|
553
574
|
active = false;
|
|
554
575
|
},
|
|
@@ -743,15 +764,21 @@ export function createTelegramBridgeDeliveryRuntime(
|
|
|
743
764
|
async sendChunk(target, chunk, options) {
|
|
744
765
|
assertTransportActive();
|
|
745
766
|
const sent = await withTelegramReplyParameters(
|
|
746
|
-
target.chatId,
|
|
767
|
+
target.chatId,
|
|
768
|
+
options.replyToMessageId,
|
|
769
|
+
target,
|
|
747
770
|
(replyParameters) => {
|
|
748
771
|
const body = {
|
|
749
772
|
chat_id: target.chatId,
|
|
750
773
|
text: chunk.text,
|
|
751
|
-
...(chunk.parseMode === "html"
|
|
774
|
+
...(chunk.parseMode === "html"
|
|
775
|
+
? { parse_mode: "HTML" as const }
|
|
776
|
+
: {}),
|
|
752
777
|
...getTelegramTargetThreadParams(target),
|
|
753
778
|
...(replyParameters ? { reply_parameters: replyParameters } : {}),
|
|
754
|
-
...(options.replyMarkup
|
|
779
|
+
...(options.replyMarkup
|
|
780
|
+
? { reply_markup: options.replyMarkup }
|
|
781
|
+
: {}),
|
|
755
782
|
};
|
|
756
783
|
return deps.api.sendMessage(
|
|
757
784
|
target.threadId === undefined
|
|
@@ -872,21 +899,6 @@ export async function sendTelegramView(
|
|
|
872
899
|
return runDeliveryOperation((runtime) => runtime.sendView(view, options));
|
|
873
900
|
}
|
|
874
901
|
|
|
875
|
-
/** @internal Edit an exact Telegram message through the currently bound runtime generation. */
|
|
876
|
-
export async function editTelegramTargetView(
|
|
877
|
-
target: TelegramDeliveryTarget,
|
|
878
|
-
messageId: number,
|
|
879
|
-
view: TelegramDeliveryView,
|
|
880
|
-
): Promise<TelegramDeliveryResult<TelegramDeliveryHandle>> {
|
|
881
|
-
const invalid = validateView<TelegramDeliveryHandle>(view);
|
|
882
|
-
if (invalid) return invalid;
|
|
883
|
-
return runDeliveryOperation((runtime) => runtime.editView({
|
|
884
|
-
target: { ...target },
|
|
885
|
-
messageIds: [messageId],
|
|
886
|
-
generation: runtime.generation,
|
|
887
|
-
}, view));
|
|
888
|
-
}
|
|
889
|
-
|
|
890
902
|
export async function editTelegramView(
|
|
891
903
|
handle: TelegramDeliveryHandle,
|
|
892
904
|
view: TelegramDeliveryView,
|