@llblab/pi-telegram 0.18.4 → 0.18.6
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 +8 -5
- package/BACKLOG.md +13 -34
- package/CHANGELOG.md +24 -1
- package/README.md +1 -1
- package/docs/multi-instance-bus.md +26 -5
- package/index.ts +56 -4
- package/lib/bindings.ts +3 -14
- package/lib/bus-follower.ts +66 -46
- package/lib/bus-leader.ts +171 -47
- package/lib/bus-transport.ts +227 -0
- package/lib/bus.ts +214 -46
- package/lib/polling.ts +58 -5
- package/lib/preview.ts +20 -39
- package/lib/routing.ts +5 -11
- package/lib/runtime-log.ts +19 -1
- package/lib/runtime.ts +23 -7
- package/lib/status.ts +52 -2
- package/lib/threads.ts +56 -2
- package/lib/updates.ts +43 -2
- package/package.json +1 -1
package/lib/updates.ts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
createTelegramThreadTarget,
|
|
10
10
|
type TelegramTarget,
|
|
11
11
|
} from "./target.ts";
|
|
12
|
+
import type { TelegramMessageOwnershipStore } from "./ownership.ts";
|
|
12
13
|
import {
|
|
13
14
|
createTelegramUserPairingRuntime,
|
|
14
15
|
getTelegramAuthorizationState,
|
|
@@ -538,6 +539,14 @@ export function buildTelegramUpdateExecutionPlanFromUpdate<
|
|
|
538
539
|
|
|
539
540
|
// --- Runtime ---
|
|
540
541
|
|
|
542
|
+
export type TelegramMessageOwnershipRecorderInput = Parameters<
|
|
543
|
+
TelegramMessageOwnershipStore["record"]
|
|
544
|
+
>[0];
|
|
545
|
+
|
|
546
|
+
export type TelegramMessageOwnershipRecorder = (
|
|
547
|
+
input: TelegramMessageOwnershipRecorderInput,
|
|
548
|
+
) => void;
|
|
549
|
+
|
|
541
550
|
export interface TelegramUpdateRuntimeDeps<
|
|
542
551
|
TContext = unknown,
|
|
543
552
|
TReactionUpdate extends TelegramMessageReactionUpdated =
|
|
@@ -549,6 +558,7 @@ export interface TelegramUpdateRuntimeDeps<
|
|
|
549
558
|
getCurrentInstanceId?: () => string | undefined;
|
|
550
559
|
getMessageOwnership?: TelegramMessageOwnershipLookup;
|
|
551
560
|
getTargetOwnership?: TelegramTargetOwnershipLookup;
|
|
561
|
+
recordMessageOwnership?: TelegramMessageOwnershipRecorder;
|
|
552
562
|
foreignOwnedUpdateForwarder?: TelegramForeignOwnedUpdateForwarder<
|
|
553
563
|
TContext,
|
|
554
564
|
TReactionUpdate,
|
|
@@ -612,6 +622,7 @@ export interface TelegramUpdateRuntimeControllerDeps<
|
|
|
612
622
|
getCurrentInstanceId?: () => string | undefined;
|
|
613
623
|
getMessageOwnership?: TelegramMessageOwnershipLookup;
|
|
614
624
|
getTargetOwnership?: TelegramTargetOwnershipLookup;
|
|
625
|
+
recordMessageOwnership?: TelegramMessageOwnershipRecorder;
|
|
615
626
|
foreignOwnedUpdateForwarder?: TelegramForeignOwnedUpdateForwarder<
|
|
616
627
|
TContext,
|
|
617
628
|
TelegramMessageReactionUpdated,
|
|
@@ -824,6 +835,7 @@ export function createTelegramPairedUpdateRuntime<
|
|
|
824
835
|
getCurrentInstanceId: deps.getCurrentInstanceId,
|
|
825
836
|
getMessageOwnership: deps.getMessageOwnership,
|
|
826
837
|
getTargetOwnership: deps.getTargetOwnership,
|
|
838
|
+
recordMessageOwnership: deps.recordMessageOwnership,
|
|
827
839
|
handleTelegramTopicLifecycleUpdate: deps.handleTelegramTopicLifecycleUpdate,
|
|
828
840
|
foreignOwnedUpdateForwarder: deps.foreignOwnedUpdateForwarder,
|
|
829
841
|
removePendingMediaGroupMessages: deps.removePendingMediaGroupMessages,
|
|
@@ -890,6 +902,7 @@ export function createTelegramUpdateRuntime<
|
|
|
890
902
|
getCurrentInstanceId: deps.getCurrentInstanceId,
|
|
891
903
|
getMessageOwnership: deps.getMessageOwnership,
|
|
892
904
|
getTargetOwnership: deps.getTargetOwnership,
|
|
905
|
+
recordMessageOwnership: deps.recordMessageOwnership,
|
|
893
906
|
foreignOwnedUpdateForwarder: deps.foreignOwnedUpdateForwarder,
|
|
894
907
|
removePendingMediaGroupMessages: deps.removePendingMediaGroupMessages,
|
|
895
908
|
removeQueuedTelegramTurnsByMessageIds:
|
|
@@ -1109,11 +1122,40 @@ export async function executeTelegramUpdatePlan<
|
|
|
1109
1122
|
}
|
|
1110
1123
|
return;
|
|
1111
1124
|
}
|
|
1125
|
+
const foreignMessageOwnership = getForeignTelegramMessageOwnership(
|
|
1126
|
+
getTelegramMessageReplyTarget(plan.message),
|
|
1127
|
+
deps,
|
|
1128
|
+
);
|
|
1129
|
+
if (foreignMessageOwnership) {
|
|
1130
|
+
if (plan.kind === "edited-message") {
|
|
1131
|
+
await deps.foreignOwnedUpdateForwarder?.forwardEditedMessage?.({
|
|
1132
|
+
message: plan.message,
|
|
1133
|
+
ownership: foreignMessageOwnership,
|
|
1134
|
+
ctx: deps.ctx,
|
|
1135
|
+
});
|
|
1136
|
+
} else {
|
|
1137
|
+
await deps.foreignOwnedUpdateForwarder?.forwardMessage?.({
|
|
1138
|
+
message: plan.message,
|
|
1139
|
+
ownership: foreignMessageOwnership,
|
|
1140
|
+
ctx: deps.ctx,
|
|
1141
|
+
});
|
|
1142
|
+
}
|
|
1143
|
+
return;
|
|
1144
|
+
}
|
|
1145
|
+
const messageTarget = getTelegramMessageTarget(plan.message);
|
|
1112
1146
|
const foreignTargetOwnership = getForeignTelegramTargetOwnership(
|
|
1113
|
-
|
|
1147
|
+
messageTarget,
|
|
1114
1148
|
deps,
|
|
1115
1149
|
);
|
|
1116
1150
|
if (foreignTargetOwnership) {
|
|
1151
|
+
if (typeof plan.message.message_id === "number") {
|
|
1152
|
+
deps.recordMessageOwnership?.({
|
|
1153
|
+
chatId: messageTarget!.chatId,
|
|
1154
|
+
messageId: plan.message.message_id,
|
|
1155
|
+
target: messageTarget,
|
|
1156
|
+
instanceId: foreignTargetOwnership.instanceId,
|
|
1157
|
+
});
|
|
1158
|
+
}
|
|
1117
1159
|
if (plan.kind === "edited-message") {
|
|
1118
1160
|
await deps.foreignOwnedUpdateForwarder?.forwardEditedMessage?.({
|
|
1119
1161
|
message: plan.message,
|
|
@@ -1129,7 +1171,6 @@ export async function executeTelegramUpdatePlan<
|
|
|
1129
1171
|
}
|
|
1130
1172
|
return;
|
|
1131
1173
|
}
|
|
1132
|
-
const messageTarget = getTelegramMessageTarget(plan.message);
|
|
1133
1174
|
if (
|
|
1134
1175
|
plan.kind === "message" &&
|
|
1135
1176
|
messageTarget?.threadId != null &&
|