@llblab/pi-telegram 0.6.3 → 0.7.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.
package/lib/lifecycle.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Telegram lifecycle hook registration helpers
3
+ * Zones: pi agent lifecycle, telegram session
3
4
  * Owns binding prepared Telegram lifecycle runtimes to pi extension lifecycle events
4
5
  */
5
6
 
@@ -13,6 +14,21 @@ import type {
13
14
  SessionStartEvent,
14
15
  } from "./pi.ts";
15
16
 
17
+ let resetTransportReplyDedupFn: (() => void) | undefined;
18
+
19
+ export function setResetTransportReplyDedup(fn: () => void): void {
20
+ resetTransportReplyDedupFn = fn;
21
+ }
22
+
23
+ export function createAgentStartDedupHook(
24
+ inner: (event: AgentStartEvent, ctx: ExtensionContext) => Promise<void>,
25
+ ): (event: AgentStartEvent, ctx: ExtensionContext) => Promise<void> {
26
+ return async function onAgentStartDedup(event, ctx) {
27
+ if (resetTransportReplyDedupFn) resetTransportReplyDedupFn();
28
+ return inner(event, ctx);
29
+ };
30
+ }
31
+
16
32
  export interface TelegramBeforeAgentStartResult {
17
33
  systemPrompt?: string;
18
34
  }
@@ -76,6 +92,16 @@ export interface TelegramSessionLifecycleHooks {
76
92
  ) => Promise<void>;
77
93
  }
78
94
 
95
+ export function createDedupAgentStartHook(
96
+ dedup: { reset(): void },
97
+ inner: (event: AgentStartEvent, ctx: ExtensionContext) => Promise<void>,
98
+ ): (event: AgentStartEvent, ctx: ExtensionContext) => Promise<void> {
99
+ return async (event, ctx) => {
100
+ dedup.reset();
101
+ await inner(event, ctx);
102
+ };
103
+ }
104
+
79
105
  export interface TelegramExtraLifecycleHooks {
80
106
  onSessionStart?: (
81
107
  event: SessionStartEvent,
package/lib/locks.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Telegram singleton lock helpers
3
+ * Zones: shared singleton, filesystem, telegram runtime ownership
3
4
  * Owns shared locks.json access and Telegram bridge ownership semantics
4
5
  */
5
6
 
@@ -285,7 +286,7 @@ export function createTelegramLockedPollingRuntime<
285
286
  ok: false,
286
287
  canTakeover: true,
287
288
  owner: formatLock(acquired.lock),
288
- message: `Telegram bridge is active in another pi instance (${formatLock(acquired.lock)}).`,
289
+ message: `Telegram bridge is active in another π instance (${formatLock(acquired.lock)}).`,
289
290
  };
290
291
  }
291
292
  await deps.startPolling(ctx);
@@ -298,7 +299,7 @@ export function createTelegramLockedPollingRuntime<
298
299
  await suspendPolling();
299
300
  const state = deps.lock.release();
300
301
  if (state.kind === "active-elsewhere") {
301
- return `Telegram bridge is active in another pi instance (${formatLock(state.lock)}).`;
302
+ return `Telegram bridge is active in another π instance (${formatLock(state.lock)}).`;
302
303
  }
303
304
  if (state.kind === "stale")
304
305
  return `Removed stale Telegram bridge lock (${formatLock(state.lock)}).`;
package/lib/media.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Telegram media and text extraction helpers
3
+ * Zones: telegram inbound, media groups, filesystem paths
3
4
  * Normalizes inbound Telegram messages into reusable file, text, id, history, and media-group metadata
4
5
  */
5
6