@yoda.digital/iris-gateway 1.13.18 → 1.14.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/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [1.14.1](https://github.com/yoda-digital/iris-gateway/compare/v1.14.0...v1.14.1) (2026-03-27)
2
+
3
+ ### Bug Fixes
4
+
5
+ * [#234](https://github.com/yoda-digital/iris-gateway/issues/234) — split message-router.ts (380→268 lines) into TurnGrouper + router-metrics ([#237](https://github.com/yoda-digital/iris-gateway/issues/237)) ([37316b0](https://github.com/yoda-digital/iris-gateway/commit/37316b003881eadaf16dc567435666b01ebc8c38))
6
+
7
+ ## [1.14.0](https://github.com/yoda-digital/iris-gateway/compare/v1.13.18...v1.14.0) (2026-03-26)
8
+
9
+ ### Features
10
+
11
+ * **telegram:** detect concurrent instances and fail fast on 409 conflict ([#231](https://github.com/yoda-digital/iris-gateway/issues/231)) ([#232](https://github.com/yoda-digital/iris-gateway/issues/232)) ([bc9f318](https://github.com/yoda-digital/iris-gateway/commit/bc9f318eca72e806f906564e1f26a5cb940e1982))
12
+
1
13
  ## [1.13.18](https://github.com/yoda-digital/iris-gateway/compare/v1.13.17...v1.13.18) (2026-03-25)
2
14
 
3
15
  ### Bug Fixes
@@ -18,10 +18,9 @@ export declare class MessageRouter {
18
18
  private readonly profileEnricher?;
19
19
  private readonly vaultStoreRef?;
20
20
  private readonly eventHandler;
21
- private readonly pendingResponses;
21
+ private readonly turnGrouper;
22
22
  private readonly activeCoalescers;
23
23
  private readonly outboundQueue;
24
- private cleanupTimer;
25
24
  constructor(bridge: OpenCodeBridge, sessionMap: SessionMap, securityGate: SecurityGate, registry: ChannelRegistry, logger: Logger, channelConfigs?: Record<string, ChannelAccountConfig>, templateEngine?: (TemplateEngine | null) | undefined, profileEnricher?: {
26
25
  isFirstContact(profile: any): boolean;
27
26
  } | null | undefined, vaultStoreRef?: {
@@ -32,6 +31,5 @@ export declare class MessageRouter {
32
31
  handleInbound(msg: InboundMessage): Promise<void>;
33
32
  sendResponse(channelId: string, chatId: string, text: string, replyToId?: string): Promise<void>;
34
33
  private handleResponse;
35
- private pruneStale;
36
34
  }
37
35
  //# sourceMappingURL=message-router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-router.d.ts","sourceRoot":"","sources":["../../src/bridge/message-router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,0BAA0B,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAY9D,qBAAa,aAAa;IAQtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAfjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsC;IACvE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsC;IACvE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,YAAY,CAA+C;gBAGhD,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAM,EACzD,cAAc,CAAC,GAAE,cAAc,GAAG,IAAI,aAAA,EACtC,eAAe,CAAC,EAAE;QAAE,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI,YAAA,EAClE,aAAa,CAAC,EAAE;QAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,IAAI,YAAA;IA4ClG,OAAO,IAAI,IAAI;IAQf,eAAe,IAAI,YAAY;IAIzB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmOjD,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAuBhB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,UAAU;CASnB"}
1
+ {"version":3,"file":"message-router.d.ts","sourceRoot":"","sources":["../../src/bridge/message-router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,0BAA0B,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,aAAa;IAOtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAdjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsC;IACvE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;gBAG1B,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAM,EACzD,cAAc,CAAC,GAAE,cAAc,GAAG,IAAI,aAAA,EACtC,eAAe,CAAC,EAAE;QAAE,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI,YAAA,EAClE,aAAa,CAAC,EAAE;QAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,IAAI,YAAA;IAuClG,OAAO,IAAI,IAAI;IAKf,eAAe,IAAI,YAAY;IAIzB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkKjD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAetG,OAAO,CAAC,cAAc;CAWvB"}
@@ -1,11 +1,10 @@
1
- import { metrics } from "../gateway/metrics.js";
2
1
  import { chunkText, PLATFORM_LIMITS } from "../utils/text-chunker.js";
3
2
  import { shouldProcessGroupMessage, stripBotMention } from "../channels/mention-gating.js";
4
3
  import { EventHandler } from "./event-handler.js";
5
4
  import { MessageQueue } from "./message-queue.js";
6
5
  import { StreamCoalescer } from "./stream-coalescer.js";
7
- const PENDING_TTL_MS = 5 * 60_000; // 5 minutes
8
- const CLEANUP_INTERVAL_MS = 60_000; // 1 minute
6
+ import { TurnGrouper } from "./turn-grouper.js";
7
+ import { recordReceived, recordSent, recordError, recordLatency } from "./router-metrics.js";
9
8
  export class MessageRouter {
10
9
  bridge;
11
10
  sessionMap;
@@ -17,10 +16,9 @@ export class MessageRouter {
17
16
  profileEnricher;
18
17
  vaultStoreRef;
19
18
  eventHandler;
20
- pendingResponses = new Map();
19
+ turnGrouper;
21
20
  activeCoalescers = new Map();
22
21
  outboundQueue;
23
- cleanupTimer = null;
24
22
  constructor(bridge, sessionMap, securityGate, registry, logger, channelConfigs = {}, templateEngine, profileEnricher, vaultStoreRef) {
25
23
  this.bridge = bridge;
26
24
  this.sessionMap = sessionMap;
@@ -31,11 +29,12 @@ export class MessageRouter {
31
29
  this.templateEngine = templateEngine;
32
30
  this.profileEnricher = profileEnricher;
33
31
  this.vaultStoreRef = vaultStoreRef;
32
+ this.turnGrouper = new TurnGrouper((sessionId) => {
33
+ this.logger.warn({ sessionId }, "Pruning stale pending response");
34
+ });
34
35
  this.eventHandler = new EventHandler();
35
36
  this.eventHandler.events.on("partial", (sessionId, delta) => {
36
- const coalescer = this.activeCoalescers.get(sessionId);
37
- if (coalescer)
38
- coalescer.append(delta);
37
+ this.activeCoalescers.get(sessionId)?.append(delta);
39
38
  });
40
39
  this.eventHandler.events.on("response", (sessionId, text) => {
41
40
  const coalescer = this.activeCoalescers.get(sessionId);
@@ -43,7 +42,7 @@ export class MessageRouter {
43
42
  coalescer.end();
44
43
  coalescer.dispose();
45
44
  this.activeCoalescers.delete(sessionId);
46
- this.pendingResponses.delete(sessionId);
45
+ this.turnGrouper.delete(sessionId);
47
46
  }
48
47
  else {
49
48
  this.handleResponse(sessionId, text);
@@ -56,28 +55,18 @@ export class MessageRouter {
56
55
  coalescer.dispose();
57
56
  this.activeCoalescers.delete(sessionId);
58
57
  }
59
- this.pendingResponses.delete(sessionId);
58
+ this.turnGrouper.delete(sessionId);
60
59
  });
61
60
  this.outboundQueue = new MessageQueue(logger);
62
61
  this.outboundQueue.setDeliveryFn(async (msg) => {
63
62
  const adapter = this.registry.get(msg.channelId);
64
63
  if (!adapter)
65
64
  throw new Error(`No adapter for ${msg.channelId}`);
66
- return adapter.sendText({
67
- to: msg.chatId,
68
- text: msg.text,
69
- replyToId: msg.replyToId,
70
- });
65
+ return adapter.sendText({ to: msg.chatId, text: msg.text, replyToId: msg.replyToId });
71
66
  });
72
- this.cleanupTimer = setInterval(() => this.pruneStale(), CLEANUP_INTERVAL_MS);
73
- // Don't keep the process alive just for cleanup
74
- this.cleanupTimer.unref();
75
67
  }
76
68
  dispose() {
77
- if (this.cleanupTimer) {
78
- clearInterval(this.cleanupTimer);
79
- this.cleanupTimer = null;
80
- }
69
+ this.turnGrouper.dispose();
81
70
  this.eventHandler.dispose();
82
71
  }
83
72
  getEventHandler() {
@@ -85,41 +74,29 @@ export class MessageRouter {
85
74
  }
86
75
  async handleInbound(msg) {
87
76
  const startTime = Date.now();
88
- const log = this.logger.child({
89
- channel: msg.channelId,
90
- sender: msg.senderId,
91
- chat: msg.chatId,
92
- });
93
- const textPreview = msg.text ? `"${msg.text.substring(0, 60)}${msg.text.length > 60 ? "…" : ""}"` : "(no text)";
77
+ const log = this.logger.child({ channel: msg.channelId, sender: msg.senderId, chat: msg.chatId });
78
+ const textPreview = msg.text
79
+ ? `"${msg.text.substring(0, 60)}${msg.text.length > 60 ? "…" : ""}"`
80
+ : "(no text)";
94
81
  log.info(`──── INBOUND ─── ${msg.channelId}/${msg.chatType} ─── ${textPreview}`);
95
- metrics.messagesReceived.inc({ channel: msg.channelId });
96
- // ── Step 1: Adapter ──
82
+ recordReceived(msg.channelId);
97
83
  const adapter = this.registry.get(msg.channelId);
98
84
  log.info(` 1 ▸ Adapter ${adapter ? "✓ " + msg.channelId : "✗ no adapter"}`);
99
- // ── Step 2: Security gate ──
100
85
  const checkResult = await this.securityGate.check({
101
- channelId: msg.channelId,
102
- senderId: msg.senderId,
103
- senderName: msg.senderName,
104
- chatType: msg.chatType,
86
+ channelId: msg.channelId, senderId: msg.senderId,
87
+ senderName: msg.senderName, chatType: msg.chatType,
105
88
  });
106
89
  log.info(` 2 ▸ SecurityGate ${checkResult.allowed ? "✓ allowed" : "✗ " + checkResult.reason}`);
107
90
  if (!checkResult.allowed) {
108
91
  if (checkResult.message && adapter) {
109
- await adapter.sendText({
110
- to: msg.chatId,
111
- text: checkResult.message,
112
- replyToId: msg.id,
113
- });
92
+ await adapter.sendText({ to: msg.chatId, text: checkResult.message, replyToId: msg.id });
114
93
  }
115
94
  return;
116
95
  }
117
- // ── Step 3: Mention gating ──
118
96
  const channelConfig = this.channelConfigs[msg.channelId];
119
97
  if (channelConfig?.groupPolicy?.enabled && channelConfig.groupPolicy.requireMention) {
120
- const mentionPattern = channelConfig.mentionPattern;
121
98
  const botId = adapter?.id ?? msg.channelId;
122
- if (!shouldProcessGroupMessage(msg, botId, mentionPattern)) {
99
+ if (!shouldProcessGroupMessage(msg, botId, channelConfig.mentionPattern)) {
123
100
  log.info(" 3 ▸ MentionGate ✗ filtered (no bot mention)");
124
101
  return;
125
102
  }
@@ -128,33 +105,22 @@ export class MessageRouter {
128
105
  else {
129
106
  log.info(` 3 ▸ MentionGate ○ skipped (${msg.chatType})`);
130
107
  }
131
- // ── Step 4: Commands ──
132
108
  if (msg.text?.trim().toLowerCase() === "/new" || msg.text?.trim().toLowerCase() === "/start") {
133
109
  const key = this.sessionMap.buildKey(msg.channelId, msg.chatId, msg.chatType);
134
110
  await this.sessionMap.reset(key);
135
111
  log.info(" 4 ▸ Command /new → session reset");
136
112
  if (adapter) {
137
- await adapter.sendText({
138
- to: msg.chatId,
139
- text: "Session reset. Send a message to start fresh.",
140
- replyToId: msg.id,
141
- });
113
+ await adapter.sendText({ to: msg.chatId, text: "Session reset. Send a message to start fresh.", replyToId: msg.id });
142
114
  }
143
115
  return;
144
116
  }
145
117
  log.info(" 4 ▸ Commands ○ not a command");
146
- // ── Step 5: Auto-reply ──
147
118
  if (this.templateEngine) {
148
119
  const match = this.templateEngine.match(msg);
149
120
  if (match) {
150
121
  log.info(` 5 ▸ AutoReply ✓ matched "${match.template.id}"${match.template.forwardToAi ? " (+ forward)" : ""}`);
151
- if (adapter) {
152
- await adapter.sendText({
153
- to: msg.chatId,
154
- text: match.response,
155
- replyToId: msg.id,
156
- });
157
- }
122
+ if (adapter)
123
+ await adapter.sendText({ to: msg.chatId, text: match.response, replyToId: msg.id });
158
124
  if (!match.template.forwardToAi)
159
125
  return;
160
126
  }
@@ -165,7 +131,6 @@ export class MessageRouter {
165
131
  else {
166
132
  log.info(" 5 ▸ AutoReply ○ disabled");
167
133
  }
168
- // ── Step 6: First contact detection ──
169
134
  let firstContactPrefix = "";
170
135
  if (this.profileEnricher && this.vaultStoreRef) {
171
136
  const profile = this.vaultStoreRef.getProfile(msg.senderId, msg.channelId);
@@ -180,31 +145,20 @@ export class MessageRouter {
180
145
  else {
181
146
  log.info(" 6 ▸ FirstContact ○ enricher disabled");
182
147
  }
183
- // ── Step 7: Session resolution ──
184
148
  const entry = await this.sessionMap.resolve(msg.channelId, msg.senderId, msg.chatId, msg.chatType, this.bridge);
185
149
  log.info(` 7 ▸ Session ✓ ${entry.openCodeSessionId}`);
186
- // Store pending response context
187
- this.pendingResponses.set(entry.openCodeSessionId, {
188
- channelId: msg.channelId,
189
- chatId: msg.chatId,
190
- replyToId: msg.id,
191
- createdAt: Date.now(),
150
+ this.turnGrouper.set(entry.openCodeSessionId, {
151
+ channelId: msg.channelId, chatId: msg.chatId, replyToId: msg.id,
192
152
  });
193
- // ── Step 8: Typing indicator ──
194
153
  await adapter?.sendTyping?.({ to: msg.chatId });
195
154
  log.info(" 8 ▸ Typing ✓ sent");
196
- // Strip bot mention from text before forwarding to OpenCode
197
155
  let messageText = msg.text ?? "";
198
156
  if (channelConfig?.groupPolicy?.enabled && channelConfig.groupPolicy.requireMention) {
199
- const mentionPattern = channelConfig.mentionPattern;
200
157
  const botId = adapter?.id ?? msg.channelId;
201
- messageText = stripBotMention(messageText, botId, mentionPattern);
158
+ messageText = stripBotMention(messageText, botId, channelConfig.mentionPattern);
202
159
  }
203
- // Prepend first-contact meta-prompt if applicable
204
- if (firstContactPrefix) {
160
+ if (firstContactPrefix)
205
161
  messageText = firstContactPrefix + messageText;
206
- }
207
- // Set up streaming coalescer if enabled for this channel
208
162
  const streamConfig = channelConfig?.streaming;
209
163
  if (streamConfig?.enabled && adapter) {
210
164
  const maxLen = PLATFORM_LIMITS[msg.channelId] ?? adapter.capabilities.maxTextLength ?? 4096;
@@ -220,35 +174,21 @@ export class MessageRouter {
220
174
  adapter.editMessage({ messageId: "", text, chatId: msg.chatId }).catch(() => { });
221
175
  }
222
176
  else {
223
- this.outboundQueue.enqueue({
224
- channelId: msg.channelId,
225
- chatId: msg.chatId,
226
- text,
227
- replyToId: msg.id,
228
- });
177
+ this.outboundQueue.enqueue({ channelId: msg.channelId, chatId: msg.chatId, text, replyToId: msg.id });
229
178
  }
230
179
  });
231
180
  this.activeCoalescers.set(entry.openCodeSessionId, coalescer);
232
181
  }
233
- // ── Step 9: OpenCode bridge ──
234
182
  const cb = this.bridge.getCircuitBreaker();
235
183
  if (!cb.allowRequest()) {
236
- // Fix #1: circuit OPEN → reject immediately, do NOT fall through to sendAndWait
237
184
  log.warn(" 9 ▸ Bridge ✗ circuit OPEN — rejecting, notifying user");
238
185
  if (adapter) {
239
- await adapter.sendText({
240
- to: msg.chatId,
241
- text: cb.unavailableMessage,
242
- replyToId: msg.id,
243
- }).catch(() => { });
186
+ await adapter.sendText({ to: msg.chatId, text: cb.unavailableMessage, replyToId: msg.id }).catch(() => { });
244
187
  }
245
- this.pendingResponses.delete(entry.openCodeSessionId);
188
+ this.turnGrouper.delete(entry.openCodeSessionId);
246
189
  return;
247
190
  }
248
191
  log.info(" 9 ▸ Bridge → prompt_async to OpenCode");
249
- log.info(" ── HOOKS ── system.transform → vault context + profile learning + proactive awareness");
250
- log.info(" ── MODEL ── thinking + tool calls (see ⚡ below) + response generation");
251
- // Fix #2: wrap in try/catch and call onSuccess()/onFailure() for feedback loop
252
192
  let response = null;
253
193
  try {
254
194
  const sendTimeoutMs = this.channelConfigs[msg.channelId]?.sendAndWaitTimeoutMs;
@@ -256,32 +196,30 @@ export class MessageRouter {
256
196
  }
257
197
  catch (err) {
258
198
  cb.onFailure();
259
- metrics.messagesErrors.inc({ channel: msg.channelId, error_type: 'bridge_error' });
199
+ recordError(msg.channelId, "bridge_error");
260
200
  log.error({ err }, " 9 ▸ Bridge ✗ sendAndWait threw");
261
201
  throw err;
262
202
  }
263
- // Clean up streaming coalescer (not used in polling path)
264
203
  const coalescer = this.activeCoalescers.get(entry.openCodeSessionId);
265
204
  if (coalescer) {
266
205
  coalescer.dispose();
267
206
  this.activeCoalescers.delete(entry.openCodeSessionId);
268
207
  }
269
- this.pendingResponses.delete(entry.openCodeSessionId);
270
- // ── Step 10: Response delivery ──
208
+ this.turnGrouper.delete(entry.openCodeSessionId);
271
209
  const elapsed = Date.now() - startTime;
272
210
  if (response) {
273
- cb.onSuccess(); // Fix #2: feedback loop — close circuit on success
211
+ cb.onSuccess();
274
212
  const responsePreview = `"${response.substring(0, 80)}${response.length > 80 ? "…" : ""}"`;
275
213
  log.info(` 10 ▸ Response ✓ ${response.length}ch in ${elapsed}ms`);
276
214
  log.info(` 11 ▸ Deliver → ${msg.channelId} ${responsePreview}`);
277
215
  await this.sendResponse(msg.channelId, msg.chatId, response, msg.id);
278
- metrics.messageProcessingLatency.observe({ channel: msg.channelId, stage: 'full' }, elapsed / 1000);
279
- metrics.messagesSent.inc({ channel: msg.channelId });
216
+ recordLatency(msg.channelId, elapsed);
217
+ recordSent(msg.channelId);
280
218
  log.info(`──── DONE ──── ${elapsed}ms total ────`);
281
219
  }
282
220
  else {
283
- cb.onFailure(); // Fix #2: null response = bridge failure
284
- metrics.messagesErrors.inc({ channel: msg.channelId, error_type: 'empty_response' });
221
+ cb.onFailure();
222
+ recordError(msg.channelId, "empty_response");
285
223
  log.warn(` 10 ▸ Response ✗ empty (${elapsed}ms) — model may be unavailable`);
286
224
  log.info(`──── DONE ──── ${elapsed}ms total (no response) ────`);
287
225
  }
@@ -296,34 +234,20 @@ export class MessageRouter {
296
234
  const chunks = chunkText(text, maxLen);
297
235
  let currentReplyToId = replyToId;
298
236
  for (const chunk of chunks) {
299
- this.outboundQueue.enqueue({
300
- channelId,
301
- chatId,
302
- text: chunk,
303
- replyToId: currentReplyToId,
304
- });
305
- currentReplyToId = undefined; // Only reply to first chunk
237
+ this.outboundQueue.enqueue({ channelId, chatId, text: chunk, replyToId: currentReplyToId });
238
+ currentReplyToId = undefined;
306
239
  }
307
240
  }
308
241
  handleResponse(sessionId, text) {
309
- const pending = this.pendingResponses.get(sessionId);
242
+ const pending = this.turnGrouper.get(sessionId);
310
243
  if (!pending) {
311
244
  this.logger.warn({ sessionId }, "No pending response context");
312
245
  return;
313
246
  }
314
- this.pendingResponses.delete(sessionId);
247
+ this.turnGrouper.delete(sessionId);
315
248
  this.sendResponse(pending.channelId, pending.chatId, text, pending.replyToId).catch((err) => {
316
249
  this.logger.error({ err, sessionId }, "Failed to send response");
317
250
  });
318
251
  }
319
- pruneStale() {
320
- const now = Date.now();
321
- for (const [sessionId, pending] of this.pendingResponses) {
322
- if (now - pending.createdAt > PENDING_TTL_MS) {
323
- this.logger.warn({ sessionId }, "Pruning stale pending response");
324
- this.pendingResponses.delete(sessionId);
325
- }
326
- }
327
- }
328
252
  }
329
253
  //# sourceMappingURL=message-router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-router.js","sourceRoot":"","sources":["../../src/bridge/message-router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-router.js","sourceRoot":"","sources":["../../src/bridge/message-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Centralises metric emissions for MessageRouter.
3
+ * Extracted from message-router.ts to keep that file under 250 lines.
4
+ */
5
+ export declare function recordReceived(channel: string): void;
6
+ export declare function recordSent(channel: string): void;
7
+ export declare function recordError(channel: string, errorType: string): void;
8
+ export declare function recordLatency(channel: string, elapsedMs: number): void;
9
+ //# sourceMappingURL=router-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-metrics.d.ts","sourceRoot":"","sources":["../../src/bridge/router-metrics.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAKtE"}
@@ -0,0 +1,18 @@
1
+ import { metrics } from "../gateway/metrics.js";
2
+ /**
3
+ * Centralises metric emissions for MessageRouter.
4
+ * Extracted from message-router.ts to keep that file under 250 lines.
5
+ */
6
+ export function recordReceived(channel) {
7
+ metrics.messagesReceived.inc({ channel });
8
+ }
9
+ export function recordSent(channel) {
10
+ metrics.messagesSent.inc({ channel });
11
+ }
12
+ export function recordError(channel, errorType) {
13
+ metrics.messagesErrors.inc({ channel, error_type: errorType });
14
+ }
15
+ export function recordLatency(channel, elapsedMs) {
16
+ metrics.messageProcessingLatency.observe({ channel, stage: "full" }, elapsedMs / 1000);
17
+ }
18
+ //# sourceMappingURL=router-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-metrics.js","sourceRoot":"","sources":["../../src/bridge/router-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,SAAiB;IAC5D,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,SAAiB;IAC9D,OAAO,CAAC,wBAAwB,CAAC,OAAO,CACtC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAC1B,SAAS,GAAG,IAAI,CACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Manages pending-response tracking and stale-entry pruning.
3
+ * Extracted from message-router.ts to keep that file under 250 lines.
4
+ */
5
+ export interface PendingResponse {
6
+ channelId: string;
7
+ chatId: string;
8
+ replyToId?: string;
9
+ createdAt: number;
10
+ }
11
+ export declare class TurnGrouper {
12
+ private readonly onPrune?;
13
+ private readonly pendingResponses;
14
+ private cleanupTimer;
15
+ constructor(onPrune?: ((sessionId: string) => void) | undefined);
16
+ set(sessionId: string, ctx: Omit<PendingResponse, "createdAt">): void;
17
+ get(sessionId: string): PendingResponse | undefined;
18
+ delete(sessionId: string): void;
19
+ dispose(): void;
20
+ private pruneStale;
21
+ }
22
+ //# sourceMappingURL=turn-grouper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-grouper.d.ts","sourceRoot":"","sources":["../../src/bridge/turn-grouper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,WAAW;IAIV,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAHrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsC;IACvE,OAAO,CAAC,YAAY,CAA+C;gBAEtC,OAAO,CAAC,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,aAAA;IAQlE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,IAAI;IAIrE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAInD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI/B,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,UAAU;CASnB"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Manages pending-response tracking and stale-entry pruning.
3
+ * Extracted from message-router.ts to keep that file under 250 lines.
4
+ */
5
+ const PENDING_TTL_MS = 5 * 60_000; // 5 minutes
6
+ const CLEANUP_INTERVAL_MS = 60_000; // 1 minute
7
+ export class TurnGrouper {
8
+ onPrune;
9
+ pendingResponses = new Map();
10
+ cleanupTimer = null;
11
+ constructor(onPrune) {
12
+ this.onPrune = onPrune;
13
+ this.cleanupTimer = setInterval(() => this.pruneStale(), CLEANUP_INTERVAL_MS);
14
+ this.cleanupTimer.unref();
15
+ }
16
+ set(sessionId, ctx) {
17
+ this.pendingResponses.set(sessionId, { ...ctx, createdAt: Date.now() });
18
+ }
19
+ get(sessionId) {
20
+ return this.pendingResponses.get(sessionId);
21
+ }
22
+ delete(sessionId) {
23
+ this.pendingResponses.delete(sessionId);
24
+ }
25
+ dispose() {
26
+ if (this.cleanupTimer) {
27
+ clearInterval(this.cleanupTimer);
28
+ this.cleanupTimer = null;
29
+ }
30
+ }
31
+ pruneStale() {
32
+ const now = Date.now();
33
+ for (const [sessionId, pending] of this.pendingResponses) {
34
+ if (now - pending.createdAt > PENDING_TTL_MS) {
35
+ this.pendingResponses.delete(sessionId);
36
+ this.onPrune?.(sessionId);
37
+ }
38
+ }
39
+ }
40
+ }
41
+ //# sourceMappingURL=turn-grouper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-grouper.js","sourceRoot":"","sources":["../../src/bridge/turn-grouper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,YAAY;AAC/C,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,WAAW;AAS/C,MAAM,OAAO,WAAW;IAIO;IAHZ,gBAAgB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC/D,YAAY,GAA0C,IAAI,CAAC;IAEnE,YAA6B,OAAqC;QAArC,YAAO,GAAP,OAAO,CAA8B;QAChE,IAAI,CAAC,YAAY,GAAG,WAAW,CAC7B,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EACvB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,SAAiB,EAAE,GAAuC;QAC5D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzD,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,cAAc,EAAE,CAAC;gBAC7C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACxC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -41,7 +41,7 @@ export interface ChannelAdapter {
41
41
  readonly capabilities: ChannelCapabilities;
42
42
  readonly events: TypedEventEmitter<ChannelEvents>;
43
43
  readonly isConnected: boolean;
44
- start(config: ChannelAccountConfig, signal: AbortSignal): Promise<void>;
44
+ start(config: ChannelAccountConfig, signal: AbortSignal, opts?: Record<string, unknown>): Promise<void>;
45
45
  stop(): Promise<void>;
46
46
  sendText(params: SendTextParams): Promise<{
47
47
  messageId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/channels/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/channels/adapter.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,9 @@ export declare class TelegramAdapter implements ChannelAdapter {
13
13
  private botUserId;
14
14
  private messageCache;
15
15
  setMessageCache(cache: MessageCache): void;
16
- start(config: ChannelAccountConfig, signal: AbortSignal): Promise<void>;
16
+ start(config: ChannelAccountConfig, signal: AbortSignal, opts?: {
17
+ skipConflictCheck?: boolean;
18
+ }): Promise<void>;
17
19
  stop(): Promise<void>;
18
20
  sendText(params: SendTextParams): Promise<{
19
21
  messageId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/telegram/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,eAAe,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAmBlE,qBAAa,eAAgB,YAAW,cAAc;IACpD,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,KAAK,cAAc;IAC5B,QAAQ,CAAC,YAAY,sBAAgB;IACrC,QAAQ,CAAC,MAAM,mCAA0C;IAEzD,OAAO,CAAC,YAAY,CAAS;IAC7B,IAAI,WAAW,IAAI,OAAO,CAA8B;IAExD,OAAO,CAAC,GAAG,CAAoB;IAC/B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAA6B;IAEjD,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAIpC,KAAK,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCvE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAWhE,UAAU,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjD,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAWlE,WAAW,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxF,aAAa,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5E,YAAY,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAOjG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/telegram/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,eAAe,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAyDlE,qBAAa,eAAgB,YAAW,cAAc;IACpD,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,KAAK,cAAc;IAC5B,QAAQ,CAAC,YAAY,sBAAgB;IACrC,QAAQ,CAAC,MAAM,mCAA0C;IAEzD,OAAO,CAAC,YAAY,CAAS;IAC7B,IAAI,WAAW,IAAI,OAAO,CAA8B;IAExD,OAAO,CAAC,GAAG,CAAoB;IAC/B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAA6B;IAEjD,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAIpC,KAAK,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C/G,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAWhE,UAAU,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjD,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAWlE,WAAW,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxF,aAAa,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5E,YAAY,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAOjG"}
@@ -1,4 +1,4 @@
1
- import { Bot } from "grammy";
1
+ import { Bot, GrammyError } from "grammy";
2
2
  import { TypedEventEmitter } from "../../utils/typed-emitter.js";
3
3
  import { normalizeTelegramMessage } from "./normalize.js";
4
4
  import * as send from "./send.js";
@@ -16,6 +16,40 @@ const CAPABILITIES = {
16
16
  thread: false,
17
17
  maxTextLength: 4096,
18
18
  };
19
+ /**
20
+ * Performs a preflight check to detect concurrent iris-gateway instances.
21
+ *
22
+ * Calls getUpdates with timeout=0 (non-blocking) before starting the polling
23
+ * loop. If another instance is already polling, Telegram returns a 409 Conflict.
24
+ * We catch this and throw a structured error so the process can exit early with
25
+ * a clear message, instead of logging GrammyErrors indefinitely.
26
+ *
27
+ * Timeout=0 means: return immediately with any pending updates (or empty array).
28
+ * It does NOT block for 30 seconds like the normal polling loop.
29
+ */
30
+ async function assertNoConcurrentPoller(bot) {
31
+ try {
32
+ await bot.api.getUpdates({ limit: 1, timeout: 0 });
33
+ }
34
+ catch (err) {
35
+ if (err instanceof GrammyError && err.error_code === 409) {
36
+ // Distinguish between two 409 scenarios:
37
+ // 1. Another getUpdates poller is running → description contains "terminated by other"
38
+ // 2. A webhook is set → description contains "Webhook is active"
39
+ const description = err.description ?? "";
40
+ if (description.toLowerCase().includes("webhook")) {
41
+ throw new Error("Telegram conflict (409): a webhook is currently active for this bot. " +
42
+ "Remove the webhook before using long-polling mode. " +
43
+ "Run: curl 'https://api.telegram.org/bot<TOKEN>/deleteWebhook'");
44
+ }
45
+ throw new Error("Telegram conflict detected (409): another iris-gateway instance is already polling this bot. " +
46
+ "Stop the other instance before starting a new one. " +
47
+ "Run: pkill -f 'iris-gateway' or 'node.*dist/index.js'");
48
+ }
49
+ // Any other error (network, auth): re-throw as-is
50
+ throw err;
51
+ }
52
+ }
19
53
  export class TelegramAdapter {
20
54
  id = "telegram";
21
55
  label = "Telegram";
@@ -29,7 +63,7 @@ export class TelegramAdapter {
29
63
  setMessageCache(cache) {
30
64
  this.messageCache = cache;
31
65
  }
32
- async start(config, signal) {
66
+ async start(config, signal, opts) {
33
67
  if (!config.token)
34
68
  throw new Error("Telegram bot token is required");
35
69
  this.bot = new Bot(config.token);
@@ -50,6 +84,12 @@ export class TelegramAdapter {
50
84
  // Get bot info before starting to know our own ID
51
85
  const botInfo = await this.bot.api.getMe();
52
86
  this.botUserId = String(botInfo.id);
87
+ // Preflight: detect concurrent instances before entering the polling loop.
88
+ // Throws with a human-readable message if another poller is active (409 conflict).
89
+ // Skip for outbound-only callers (e.g. `iris send telegram`) that don't enter the polling loop.
90
+ if (!opts?.skipConflictCheck) {
91
+ await assertNoConcurrentPoller(this.bot);
92
+ }
53
93
  // bot.start() never resolves (runs polling loop forever), so fire-and-forget
54
94
  this.bot.start({ drop_pending_updates: true }).catch((err) => {
55
95
  this.events.emit("error", err instanceof Error ? err : new Error(String(err)));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/channels/telegram/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/channels/telegram/index.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@ export class SendCommand extends Command {
44
44
  const abortController = new AbortController();
45
45
  const adapter = factory();
46
46
  try {
47
- await adapter.start(channelConfig, abortController.signal);
47
+ await adapter.start(channelConfig, abortController.signal, { skipConflictCheck: true });
48
48
  const result = await adapter.sendText({
49
49
  to: this.target,
50
50
  text: this.message,
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yoda.digital/iris-gateway",
3
- "version": "1.13.18",
3
+ "version": "1.14.1",
4
4
  "description": "Multi-channel AI messaging gateway powered by OpenCode CLI",
5
5
  "homepage": "https://github.com/yoda-digital/iris-gateway",
6
6
  "repository": {