@automagik/omni 2.260910.2 → 2.260910.3

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.
@@ -197,6 +197,10 @@ export interface FollowParams {
197
197
  isStopped?: () => boolean;
198
198
  /** Line sink — defaults to output.raw (stdout). Injected by tests. */
199
199
  emit?: (line: string) => void;
200
+ /** Consecutive transport failures tolerated before giving up (default 5). */
201
+ maxRetries?: number;
202
+ /** First backoff delay; doubles per retry up to 30s (default 1000). */
203
+ retryBaseMs?: number;
200
204
  }
201
205
  /**
202
206
  * The `omni events follow` loop: pull a page from the stored cursor, print
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/commands/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/commands/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,KAAK,mBAAmB,EAAsB,MAAM,YAAY,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuMpC,2DAA2D;AAC3D,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AA+BD,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKzE;AAyCD,wDAAwD;AACxD,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,iBAAe,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAe1G;AAED,kFAAkF;AAClF,iBAAS,kBAAkB,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUhG;AAED,iBAAS,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzE;AAyED,eAAO,MAAM,WAAW;;;;CAA+D,CAAC;AAExF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAEA;AAoBD,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjF;AAED,iFAAiF;AACjF,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAQvF;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,GAAG,IAAI,CAAC;CACvE,CAAC;AAEF,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACtC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAClC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAQD,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAG9E;AAED,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAc9F;AA6KD;;;;;;GAMG;AACH,KAAK,YAAY,GAAG,KAAK,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAAE,CAAC;AAc5E;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAYzE;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,mBAAmB,EAC5B,UAAU,EAAE,mBAAmB,EAAE,GAChC,OAAO,CAGT;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA4BvG;AAMD,0EAA0E;AAC1E,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAWD;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAepH;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAW/E;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,GAAG,EAAE,OAAO,CAAC;IACb,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1B,sEAAsE;IACtE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8BD;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CxE;AAqFD,wBAAgB,mBAAmB,IAAI,OAAO,CA+W7C"}
package/dist/index.js CHANGED
@@ -137139,7 +137139,7 @@ import { fileURLToPath } from "url";
137139
137139
  // package.json
137140
137140
  var package_default = {
137141
137141
  name: "@automagik/omni",
137142
- version: "2.260910.2",
137142
+ version: "2.260910.3",
137143
137143
  repository: {
137144
137144
  type: "git",
137145
137145
  url: "git+https://github.com/automagik-dev/omni.git",
@@ -144289,13 +144289,32 @@ function summarizeConsumerRow(row) {
144289
144289
  updatedAt: row.updatedAt
144290
144290
  };
144291
144291
  }
144292
+ var sleep4 = (ms) => new Promise((resolve2) => setTimeout(resolve2, ms));
144293
+ var isTransportError = (err2) => !(err2 instanceof Error && err2.message.startsWith("API returned "));
144294
+ async function pullWithRetry(params) {
144295
+ const maxRetries = params.maxRetries ?? 5;
144296
+ const baseMs = params.retryBaseMs ?? 1000;
144297
+ const path = `/${encodeURIComponent(params.consumer)}/pull?limit=${params.limit}&waitMs=${params.waitMs}`;
144298
+ for (let attempt = 0;; attempt++) {
144299
+ try {
144300
+ return await consumersApiRequest(path, { method: "POST" });
144301
+ } catch (err2) {
144302
+ if (!isTransportError(err2) || attempt >= maxRetries || params.isStopped?.())
144303
+ throw err2;
144304
+ const delay = Math.min(baseMs * 2 ** attempt, 30000);
144305
+ process.stderr.write(`\u26A0 Pull failed (${errorMessage(err2)}); reconnecting in ${delay}ms (${attempt + 1}/${maxRetries})
144306
+ `);
144307
+ await sleep4(delay);
144308
+ }
144309
+ }
144310
+ }
144292
144311
  async function followConsumer(params) {
144293
144312
  const emit = params.emit ?? raw;
144294
144313
  let acked = -1;
144295
144314
  for (;; ) {
144296
144315
  if (params.isStopped?.())
144297
144316
  return;
144298
- const page = await consumersApiRequest(`/${encodeURIComponent(params.consumer)}/pull?limit=${params.limit}&waitMs=${params.waitMs}`, { method: "POST" });
144317
+ const page = await pullWithRetry(params);
144299
144318
  for (const item of page.items) {
144300
144319
  emit(JSON.stringify(item));
144301
144320
  }
@@ -144316,7 +144335,7 @@ async function followConsumer(params) {
144316
144335
  return;
144317
144336
  }
144318
144337
  if (!progressed && params.waitMs < 1000) {
144319
- await new Promise((resolve2) => setTimeout(resolve2, 1000));
144338
+ await sleep4(1000);
144320
144339
  }
144321
144340
  }
144322
144341
  }
@@ -144463,6 +144482,7 @@ function createEventsCommand() {
144463
144482
  });
144464
144483
  } catch (err2) {
144465
144484
  error(`Failed to follow consumer: ${errorMessage(err2)}`);
144485
+ process.exitCode = 1;
144466
144486
  } finally {
144467
144487
  processEvents.off("SIGINT", shutdown);
144468
144488
  processEvents.off("SIGTERM", shutdown);
@@ -251595,7 +251595,7 @@ var init_sentry_scrub = __esm(() => {
251595
251595
  var require_package7 = __commonJS((exports, module) => {
251596
251596
  module.exports = {
251597
251597
  name: "@omni/api",
251598
- version: "2.260910.2",
251598
+ version: "2.260910.3",
251599
251599
  private: true,
251600
251600
  type: "module",
251601
251601
  exports: {
@@ -363754,6 +363754,15 @@ function maybeUpdateRecency(services, instanceId, chatId, rawPayload, payload, p
363754
363754
  log90.debug("Failed to update instance lastMessageAt (non-critical)", { error: String(error3) });
363755
363755
  });
363756
363756
  }
363757
+ async function linkJournalRow(db2, eventId, link) {
363758
+ if (!isValidUuid(eventId))
363759
+ return;
363760
+ await scopedHandle(db2).update(omniEvents).set({
363761
+ chatUuid: link.chatUuid,
363762
+ canonicalChatId: link.canonicalChatId,
363763
+ personId: sql`coalesce(${omniEvents.personId}, ${link.personId})`
363764
+ }).where(eq(omniEvents.id, eventId));
363765
+ }
363757
363766
  async function resolveOrCreateChat(services, instanceId, chatExternalId, chatType, channel5, effectiveName, canonicalId, rawPayload, trustedTenantId) {
363758
363767
  const resolvedPhoneJid = rawPayload?.resolvedPhoneJid;
363759
363768
  if (chatExternalId.endsWith("@lid") && resolvedPhoneJid) {
@@ -363868,6 +363877,7 @@ async function handleMessageReceived(services, payload, metadata, eventTimestamp
363868
363877
  }
363869
363878
  await maybeRecordParticipantActivity(services, chat2.id, payload.from);
363870
363879
  maybeUpdateRecency(services, metadata.instanceId, chat2.id, rawPayload, payload, platformTimestamp ?? new Date(eventTimestamp), trustedTenantId);
363880
+ return { chatUuid: chat2.id, canonicalChatId: chat2.canonicalId ?? null, personId: personId ?? null };
363871
363881
  }
363872
363882
  function logMessageReceivedError(payload, error3) {
363873
363883
  const rawPayload = payload.rawPayload;
@@ -363963,7 +363973,12 @@ async function setupMessagePersistence(eventBus, services) {
363963
363973
  try {
363964
363974
  const workMetadata = { ...metadata, instanceId };
363965
363975
  const identity = await resolveSenderIdentityForWorkItem(services, payload, workMetadata, metadata.channelType ?? "whatsapp", trustedTenantId);
363966
- await runConsumerInTenantContext(services.db, event, () => handleMessageReceived(services, payload, workMetadata, event.timestamp, trustedTenantId, identity));
363976
+ const journalLink = await runConsumerInTenantContext(services.db, event, () => handleMessageReceived(services, payload, workMetadata, event.timestamp, trustedTenantId, identity));
363977
+ if (journalLink) {
363978
+ await runTenantWorkDb(services.db, trustedTenantId, () => linkJournalRow(services.db, event.id, journalLink)).catch((err2) => {
363979
+ log90.debug("Failed to link journal row (non-critical)", { eventId: event.id, error: String(err2) });
363980
+ });
363981
+ }
363967
363982
  if (sentryEnabled()) {
363968
363983
  exports_public_api2.count("messages.received", 1, {
363969
363984
  attributes: { channel_type: metadata.channelType ?? "whatsapp" }
@@ -364249,8 +364264,11 @@ async function detectStartupGaps(services) {
364249
364264
  var log90, CONTENT_TYPE_MAP, INTERNAL_JID_SUFFIXES, MEDIA_BADGES, OUTBOUND_MEDIA_TYPES;
364250
364265
  var init_message_persistence = __esm(() => {
364251
364266
  init_src();
364267
+ init_src5();
364252
364268
  init_esm6();
364269
+ init_drizzle_orm();
364253
364270
  init_sentry_scrub();
364271
+ init_tenant_scope();
364254
364272
  init_worker_tenant_context();
364255
364273
  init_canonical_handle();
364256
364274
  init_loader2();
@@ -397699,14 +397717,14 @@ function mapContentType2(contentType) {
397699
397717
  function eventIdInsert(eventId) {
397700
397718
  return eventId && isValidUuid(eventId) ? { id: eventId } : {};
397701
397719
  }
397702
- async function resolveChatUuid(db2, instanceId, chatId) {
397720
+ async function resolveChatLink(db2, instanceId, chatId) {
397703
397721
  if (!instanceId || !chatId)
397704
- return null;
397722
+ return NO_CHAT_LINK;
397705
397723
  try {
397706
- const [chat2] = await db2.select({ id: chats.id }).from(chats).where(and2(eq(chats.instanceId, instanceId), eq(chats.externalId, chatId))).limit(1);
397707
- return chat2?.id ?? null;
397724
+ const chat2 = await new ChatService(db2, null).findByExternalIdSmart(instanceId, chatId);
397725
+ return chat2 ? { chatUuid: chat2.id, canonicalChatId: chat2.canonicalId ?? null } : NO_CHAT_LINK;
397708
397726
  } catch {
397709
- return null;
397727
+ return NO_CHAT_LINK;
397710
397728
  }
397711
397729
  }
397712
397730
  async function resolvePersonId2(db2, candidate) {
@@ -397742,7 +397760,7 @@ async function setupEventPersistence(eventBus, db2) {
397742
397760
  try {
397743
397761
  await runConsumerInTenantContext(db2, event, async () => {
397744
397762
  const sdb = scopedHandle(db2);
397745
- const chatUuid = await resolveChatUuid(sdb, metadata.instanceId, payload.chatId);
397763
+ const chatLink = await resolveChatLink(sdb, metadata.instanceId, payload.chatId);
397746
397764
  const columns2 = {
397747
397765
  externalId: payload.externalId,
397748
397766
  channel: mapChannelType(metadata.channelType),
@@ -397767,7 +397785,7 @@ async function setupEventPersistence(eventBus, db2) {
397767
397785
  agentId: metadata.agentId ?? null,
397768
397786
  causationId: metadata.causationId ?? null,
397769
397787
  conversationId: null,
397770
- chatUuid
397788
+ ...chatLink
397771
397789
  };
397772
397790
  await sdb.insert(omniEvents).values({ ...eventIdInsert(event.id), ...columns2 }).onConflictDoUpdate({ target: omniEvents.id, set: columns2 });
397773
397791
  });
@@ -397792,7 +397810,7 @@ async function setupEventPersistence(eventBus, db2) {
397792
397810
  try {
397793
397811
  await runConsumerInTenantContext(db2, event, async () => {
397794
397812
  const sdb = scopedHandle(db2);
397795
- const chatUuid = await resolveChatUuid(sdb, metadata.instanceId, payload.chatId);
397813
+ const chatLink = await resolveChatLink(sdb, metadata.instanceId, payload.chatId);
397796
397814
  const newEvent = {
397797
397815
  ...eventIdInsert(event.id),
397798
397816
  externalId: payload.externalId,
@@ -397821,7 +397839,7 @@ async function setupEventPersistence(eventBus, db2) {
397821
397839
  agentId: metadata.agentId ?? null,
397822
397840
  causationId: metadata.causationId ?? null,
397823
397841
  conversationId: null,
397824
- chatUuid
397842
+ ...chatLink
397825
397843
  };
397826
397844
  await sdb.insert(omniEvents).values(newEvent).onConflictDoNothing({ target: omniEvents.id });
397827
397845
  });
@@ -397847,7 +397865,7 @@ async function setupEventPersistence(eventBus, db2) {
397847
397865
  status: "completed"
397848
397866
  }).where(eq(omniEvents.externalId, payload.externalId)).returning();
397849
397867
  if (updated.length === 0) {
397850
- const chatUuid = await resolveChatUuid(sdb, metadata.instanceId, payload.chatId);
397868
+ const chatLink = await resolveChatLink(sdb, metadata.instanceId, payload.chatId);
397851
397869
  const newEvent = {
397852
397870
  ...eventIdInsert(event.id),
397853
397871
  externalId: payload.externalId,
@@ -397862,7 +397880,7 @@ async function setupEventPersistence(eventBus, db2) {
397862
397880
  agentId: metadata.agentId ?? null,
397863
397881
  causationId: metadata.causationId ?? null,
397864
397882
  conversationId: null,
397865
- chatUuid
397883
+ ...chatLink
397866
397884
  };
397867
397885
  await sdb.insert(omniEvents).values(newEvent).onConflictDoNothing({ target: omniEvents.id });
397868
397886
  }
@@ -397887,7 +397905,7 @@ async function setupEventPersistence(eventBus, db2) {
397887
397905
  readAt: new Date(payload.readAt)
397888
397906
  }).where(eq(omniEvents.externalId, payload.externalId)).returning();
397889
397907
  if (updated.length === 0) {
397890
- const chatUuid = await resolveChatUuid(sdb, metadata.instanceId, payload.chatId);
397908
+ const chatLink = await resolveChatLink(sdb, metadata.instanceId, payload.chatId);
397891
397909
  const newEvent = {
397892
397910
  ...eventIdInsert(event.id),
397893
397911
  externalId: payload.externalId,
@@ -397902,7 +397920,7 @@ async function setupEventPersistence(eventBus, db2) {
397902
397920
  agentId: metadata.agentId ?? null,
397903
397921
  causationId: metadata.causationId ?? null,
397904
397922
  conversationId: null,
397905
- chatUuid
397923
+ ...chatLink
397906
397924
  };
397907
397925
  await sdb.insert(omniEvents).values(newEvent).onConflictDoNothing({ target: omniEvents.id });
397908
397926
  }
@@ -397936,7 +397954,7 @@ async function setupEventPersistence(eventBus, db2) {
397936
397954
  }).where(and2(eq(omniEvents.instanceId, metadata.instanceId), eq(omniEvents.externalId, payload.externalId))).returning({ id: omniEvents.id });
397937
397955
  }
397938
397956
  if (updated.length === 0) {
397939
- const chatUuid = await resolveChatUuid(sdb, metadata.instanceId, payload.chatId);
397957
+ const chatLink = await resolveChatLink(sdb, metadata.instanceId, payload.chatId);
397940
397958
  const newEvent = {
397941
397959
  ...eventIdInsert(event.id),
397942
397960
  externalId: payload.externalId,
@@ -397957,7 +397975,7 @@ async function setupEventPersistence(eventBus, db2) {
397957
397975
  agentId: metadata.agentId ?? null,
397958
397976
  causationId: metadata.causationId ?? null,
397959
397977
  conversationId: null,
397960
- chatUuid
397978
+ ...chatLink
397961
397979
  };
397962
397980
  await sdb.insert(omniEvents).values(newEvent).onConflictDoNothing({ target: omniEvents.id });
397963
397981
  }
@@ -397985,7 +398003,8 @@ async function setupEventPersistence(eventBus, db2) {
397985
398003
  const instanceId = metadata.instanceId && isValidUuid(metadata.instanceId) ? metadata.instanceId : null;
397986
398004
  const payloadChatId = typeof payload.chatId === "string" ? payload.chatId : undefined;
397987
398005
  const personId = await resolvePersonId2(sdb, metadata.personId) ?? await resolvePersonId2(sdb, payload.personId);
397988
- const chatUuid = await resolveChatUuidById(sdb, payload.chatUuid) ?? await resolveChatUuid(sdb, instanceId ?? undefined, payloadChatId);
398006
+ const chatUuid = await resolveChatUuidById(sdb, payload.chatUuid);
398007
+ const chatLink = chatUuid ? { chatUuid, canonicalChatId: null } : await resolveChatLink(sdb, instanceId ?? undefined, payloadChatId);
397989
398008
  const newEvent = {
397990
398009
  ...eventIdInsert(event.id),
397991
398010
  channel: "internal",
@@ -398004,7 +398023,7 @@ async function setupEventPersistence(eventBus, db2) {
398004
398023
  causationId: metadata.causationId ?? null,
398005
398024
  conversationId: null,
398006
398025
  chatId: payloadChatId,
398007
- chatUuid
398026
+ ...chatLink
398008
398027
  };
398009
398028
  await sdb.insert(omniEvents).values(newEvent).onConflictDoNothing({ target: omniEvents.id });
398010
398029
  });
@@ -398022,14 +398041,16 @@ async function setupEventPersistence(eventBus, db2) {
398022
398041
  throw error3;
398023
398042
  }
398024
398043
  }
398025
- var log125, CONSUMER_OPTIONS;
398044
+ var log125, NO_CHAT_LINK, CONSUMER_OPTIONS;
398026
398045
  var init_event_persistence = __esm(() => {
398027
398046
  init_src();
398028
398047
  init_src5();
398029
398048
  init_drizzle_orm();
398049
+ init_chats();
398030
398050
  init_tenant_scope();
398031
398051
  init_worker_tenant_context();
398032
398052
  log125 = createLogger("event-persistence");
398053
+ NO_CHAT_LINK = { chatUuid: null, canonicalChatId: null };
398033
398054
  CONSUMER_OPTIONS = {
398034
398055
  queue: "event-persistence",
398035
398056
  maxRetries: 3,
@@ -401290,6 +401311,7 @@ function startBunServer(app) {
401290
401311
  return Bun.serve({
401291
401312
  port: PORT,
401292
401313
  hostname: HOST,
401314
+ idleTimeout: 60,
401293
401315
  fetch(req, server) {
401294
401316
  const url = new URL(req.url);
401295
401317
  if (url.pathname.startsWith("/api/v2/voice/stream/")) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automagik/omni",
3
- "version": "2.260910.2",
3
+ "version": "2.260910.3",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/automagik-dev/omni.git",