@automagik/omni 2.260529.2 → 2.260529.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.
package/dist/index.js CHANGED
@@ -35857,6 +35857,82 @@ function buildProviderRequestContext(context) {
35857
35857
  }
35858
35858
  var OMNI_EXECUTION_CONTEXT_EXTENSION_URI = "https://omni.dev/extensions/execution-context/v1";
35859
35859
 
35860
+ // ../core/src/providers/trace-context.ts
35861
+ import { createHash as createHash3 } from "crypto";
35862
+ function isNonZeroHex(value) {
35863
+ return value.length > 0 && !/^0+$/.test(value);
35864
+ }
35865
+ function hashHex(value, length) {
35866
+ return createHash3("sha256").update(value).digest("hex").slice(0, length);
35867
+ }
35868
+ function normalizeTraceId(value) {
35869
+ const lower = value.toLowerCase();
35870
+ if (W3C_TRACE_ID.test(lower) && isNonZeroHex(lower)) {
35871
+ return lower;
35872
+ }
35873
+ return hashHex(lower, 32);
35874
+ }
35875
+ function normalizeSpanId(value) {
35876
+ const lower = value.toLowerCase();
35877
+ if (W3C_SPAN_ID.test(lower) && isNonZeroHex(lower)) {
35878
+ return lower;
35879
+ }
35880
+ return hashHex(lower, 16);
35881
+ }
35882
+ function createTraceContextFromTraceId(traceId, spanSeed = "provider") {
35883
+ if (!traceId)
35884
+ return;
35885
+ return {
35886
+ traceId: normalizeTraceId(traceId),
35887
+ spanId: normalizeSpanId(`${traceId}:${spanSeed}`),
35888
+ traceFlags: 1
35889
+ };
35890
+ }
35891
+ function formatTraceparent(ctx) {
35892
+ const traceFlags = (ctx.traceFlags ?? 1) & 255;
35893
+ const paddedFlagsHex = traceFlags.toString(16).padStart(2, "0");
35894
+ return `00-${normalizeTraceId(ctx.traceId)}-${normalizeSpanId(ctx.spanId)}-${paddedFlagsHex}`;
35895
+ }
35896
+ function buildTraceHeaders2(ctx, khal) {
35897
+ const traceHeaders = {};
35898
+ if (ctx) {
35899
+ traceHeaders.traceparent = formatTraceparent(ctx);
35900
+ traceHeaders["x-trace-id"] = normalizeTraceId(ctx.traceId);
35901
+ traceHeaders["x-span-id"] = normalizeSpanId(ctx.spanId);
35902
+ const tracestate = ctx.tracestate ?? ctx.traceState;
35903
+ if (tracestate) {
35904
+ traceHeaders.tracestate = tracestate;
35905
+ }
35906
+ if (ctx.parentSpanId) {
35907
+ traceHeaders["x-parent-span-id"] = normalizeSpanId(ctx.parentSpanId);
35908
+ }
35909
+ }
35910
+ if (khal?.khalSessionId) {
35911
+ traceHeaders["x-khal-session-id"] = khal.khalSessionId;
35912
+ }
35913
+ if (khal?.userId) {
35914
+ traceHeaders["x-khal-user-id"] = khal.userId;
35915
+ }
35916
+ if (khal?.messageId) {
35917
+ traceHeaders["x-khal-message-id"] = khal.messageId;
35918
+ }
35919
+ if (khal?.omni?.instanceId) {
35920
+ traceHeaders["x-omni-instance-id"] = khal.omni.instanceId;
35921
+ }
35922
+ if (khal?.omni?.chatId) {
35923
+ traceHeaders["x-omni-chat-id"] = khal.omni.chatId;
35924
+ }
35925
+ if (khal?.omni?.channel) {
35926
+ traceHeaders["x-omni-channel"] = khal.omni.channel;
35927
+ }
35928
+ return traceHeaders;
35929
+ }
35930
+ var W3C_TRACE_ID, W3C_SPAN_ID;
35931
+ var init_trace_context = __esm(() => {
35932
+ W3C_TRACE_ID = /^[0-9a-f]{32}$/i;
35933
+ W3C_SPAN_ID = /^[0-9a-f]{16}$/i;
35934
+ });
35935
+
35860
35936
  // ../core/src/providers/agno-client.ts
35861
35937
  class AgnoClient {
35862
35938
  baseUrl;
@@ -35985,12 +36061,14 @@ class AgnoClient {
35985
36061
  const formData = new FormData;
35986
36062
  formData.append("message", request.message);
35987
36063
  formData.append("stream", String(stream));
35988
- if (request.sessionId) {
35989
- formData.append("session_id", request.sessionId);
36064
+ const sessionId = request.khalSessionId ?? request.sessionId;
36065
+ if (sessionId) {
36066
+ formData.append("session_id", sessionId);
35990
36067
  }
35991
36068
  if (request.userId) {
35992
36069
  formData.append("user_id", request.userId);
35993
36070
  }
36071
+ this.appendStructuredMetadata(formData, request);
35994
36072
  if (request.files?.length) {
35995
36073
  for (const file of request.files) {
35996
36074
  try {
@@ -36008,6 +36086,28 @@ class AgnoClient {
36008
36086
  }
36009
36087
  return formData;
36010
36088
  }
36089
+ appendStructuredMetadata(formData, request) {
36090
+ const appendJson = (key, value) => {
36091
+ if (value !== undefined) {
36092
+ formData.append(key, JSON.stringify(value));
36093
+ }
36094
+ };
36095
+ if (request.khalSessionId) {
36096
+ formData.append("khal_session_id", request.khalSessionId);
36097
+ }
36098
+ if (request.messageId) {
36099
+ formData.append("message_id", request.messageId);
36100
+ }
36101
+ if (request.replyToMessageId) {
36102
+ formData.append("reply_to_message_id", request.replyToMessageId);
36103
+ }
36104
+ appendJson("platform", request.platform);
36105
+ appendJson("sender", request.sender);
36106
+ appendJson("chat", request.chat);
36107
+ appendJson("mcp_url_params", request.mcpUrlParams);
36108
+ appendJson("env", request.env);
36109
+ appendJson("omni", request.omni);
36110
+ }
36011
36111
  async runAgent(agentId, request) {
36012
36112
  return this.runEndpoint("agents", agentId, request);
36013
36113
  }
@@ -36023,7 +36123,15 @@ class AgnoClient {
36023
36123
  const timeoutMs = request.timeoutMs ?? this.defaultTimeoutMs;
36024
36124
  const response = await this.fetchWithTimeout(url, {
36025
36125
  method: "POST",
36026
- headers: this.getHeaders(),
36126
+ headers: {
36127
+ ...this.getHeaders(),
36128
+ ...buildTraceHeaders2(request.traceContext, {
36129
+ khalSessionId: request.khalSessionId ?? request.sessionId,
36130
+ userId: request.userId,
36131
+ messageId: request.omni?.messageId,
36132
+ omni: request.omni
36133
+ })
36134
+ },
36027
36135
  body: formData
36028
36136
  }, timeoutMs);
36029
36137
  if (!response.ok) {
@@ -36057,7 +36165,15 @@ class AgnoClient {
36057
36165
  const timeoutMs = request.timeoutMs ?? this.defaultTimeoutMs;
36058
36166
  const response = await this.fetchWithTimeout(url, {
36059
36167
  method: "POST",
36060
- headers: this.getHeaders(),
36168
+ headers: {
36169
+ ...this.getHeaders(),
36170
+ ...buildTraceHeaders2(request.traceContext, {
36171
+ khalSessionId: request.khalSessionId ?? request.sessionId,
36172
+ userId: request.userId,
36173
+ messageId: request.omni?.messageId,
36174
+ omni: request.omni
36175
+ })
36176
+ },
36061
36177
  body: formData
36062
36178
  }, timeoutMs);
36063
36179
  if (!response.ok) {
@@ -36197,6 +36313,7 @@ function createAgnoClient(config2) {
36197
36313
  }
36198
36314
  var DEFAULT_TIMEOUT_MS = 60000;
36199
36315
  var init_agno_client = __esm(() => {
36316
+ init_trace_context();
36200
36317
  init_types6();
36201
36318
  });
36202
36319
 
@@ -60251,12 +60368,7 @@ class AgnoAgentProvider {
60251
60368
  }
60252
60369
  async trigger(context) {
60253
60370
  const startTime = Date.now();
60254
- let message2 = "";
60255
- if (context.content.text) {
60256
- message2 = context.content.text;
60257
- } else if (context.content.emoji) {
60258
- message2 = `[Reaction: ${context.content.emoji} on message ${context.content.referencedMessageId ?? context.source.messageId}]`;
60259
- }
60371
+ const message2 = this.buildMessage(context);
60260
60372
  if (!message2) {
60261
60373
  log8.debug("No content to send to agent", { traceId: context.traceId });
60262
60374
  return {
@@ -60268,17 +60380,7 @@ class AgnoAgentProvider {
60268
60380
  }
60269
60381
  };
60270
60382
  }
60271
- if (this.config.prefixSenderName !== false && context.sender.displayName) {
60272
- message2 = `[${context.sender.displayName}]: ${message2}`;
60273
- }
60274
- const request = {
60275
- ...buildProviderRequestContext(context),
60276
- message: message2,
60277
- agentId: this.config.agentId,
60278
- agentType: this.config.agentType,
60279
- stream: false,
60280
- timeoutMs: this.config.timeoutMs ?? 60000
60281
- };
60383
+ const request = this.buildRequest(context, message2, false);
60282
60384
  log8.info("Triggering Agno agent", {
60283
60385
  agentId: this.config.agentId,
60284
60386
  agentType: this.config.agentType,
@@ -60310,13 +60412,79 @@ class AgnoAgentProvider {
60310
60412
  }
60311
60413
  };
60312
60414
  }
60415
+ async* triggerStream(context) {
60416
+ const message2 = this.buildMessage(context);
60417
+ if (!message2) {
60418
+ log8.debug("No content to send to Agno agent (stream)", { traceId: context.traceId });
60419
+ return;
60420
+ }
60421
+ const request = this.buildRequest(context, message2, true);
60422
+ log8.info("Streaming Agno agent", {
60423
+ agentId: this.config.agentId,
60424
+ agentType: this.config.agentType,
60425
+ triggerType: context.type,
60426
+ traceId: context.traceId
60427
+ });
60428
+ try {
60429
+ for await (const chunk of this.client.stream(request)) {
60430
+ if (chunk.content) {
60431
+ yield { phase: "content", content: chunk.content };
60432
+ }
60433
+ if (chunk.isComplete) {
60434
+ yield { phase: "final", content: chunk.fullContent ?? chunk.content ?? "" };
60435
+ }
60436
+ }
60437
+ } catch (error2) {
60438
+ const message3 = error2 instanceof Error ? error2.message : String(error2);
60439
+ log8.error("Error in Agno agent stream", {
60440
+ agentId: this.config.agentId,
60441
+ traceId: context.traceId,
60442
+ error: message3
60443
+ });
60444
+ yield { phase: "error", error: message3 };
60445
+ }
60446
+ }
60313
60447
  async checkHealth() {
60314
60448
  return this.client.checkHealth();
60315
60449
  }
60450
+ buildMessage(context) {
60451
+ let message2 = "";
60452
+ if (context.content.text) {
60453
+ message2 = context.content.text;
60454
+ } else if (context.content.emoji) {
60455
+ message2 = `[Reaction: ${context.content.emoji} on message ${context.content.referencedMessageId ?? context.source.messageId}]`;
60456
+ }
60457
+ if (message2 && this.config.prefixSenderName !== false && context.sender.displayName) {
60458
+ message2 = `[${context.sender.displayName}]: ${message2}`;
60459
+ }
60460
+ return message2;
60461
+ }
60462
+ buildRequest(context, message2, stream) {
60463
+ const traceContext = context.traceContext ?? createTraceContextFromTraceId(context.traceId, `${context.source.instanceId}:${context.source.chatId}:${context.source.messageId}:agno`);
60464
+ return {
60465
+ ...buildProviderRequestContext(context),
60466
+ message: message2,
60467
+ agentId: this.config.agentId,
60468
+ agentType: this.config.agentType,
60469
+ stream,
60470
+ timeoutMs: this.config.timeoutMs ?? 60000,
60471
+ files: context.content.files,
60472
+ traceContext,
60473
+ khalSessionId: context.sessionId,
60474
+ omni: {
60475
+ instanceId: context.source.instanceId,
60476
+ chatId: context.source.chatId,
60477
+ messageId: context.source.messageId,
60478
+ channel: context.source.channelType
60479
+ },
60480
+ ...context.source.chatId ? { mcpUrlParams: { chat_id: context.source.chatId } } : {}
60481
+ };
60482
+ }
60316
60483
  }
60317
60484
  var log8;
60318
60485
  var init_agno_provider = __esm(() => {
60319
60486
  init_logger();
60487
+ init_trace_context();
60320
60488
  log8 = createLogger("provider:agno");
60321
60489
  });
60322
60490
 
@@ -62523,6 +62691,7 @@ var init_a2a_provider = __esm(() => {
62523
62691
  });
62524
62692
 
62525
62693
  // ../core/src/providers/nats-genie-provider.ts
62694
+ import { createHash as createHash5 } from "crypto";
62526
62695
  import { mkdir, writeFile } from "fs/promises";
62527
62696
  import { homedir as homedir10 } from "os";
62528
62697
  import { join as join16 } from "path";
@@ -62556,6 +62725,8 @@ class NatsGenieProvider {
62556
62725
  };
62557
62726
  }
62558
62727
  const topic = `omni.message.${this.config.instanceId}.${context.source.chatId}`;
62728
+ const traceContext = this.resolveTraceContext(context);
62729
+ const propagationHeaders = this.buildPropagationHeaders(context, traceContext);
62559
62730
  const payload = {
62560
62731
  content: message2,
62561
62732
  sender: context.sender.displayName ?? context.sender.platformUserId,
@@ -62565,22 +62736,28 @@ class NatsGenieProvider {
62565
62736
  timestamp: new Date().toISOString(),
62566
62737
  traceId: context.traceId,
62567
62738
  messageId: context.source.messageId,
62739
+ contextMessages: context.contextMessages,
62568
62740
  files: context.content.files,
62741
+ traceContext,
62742
+ metadata: this.buildSafePayloadMetadata(propagationHeaders),
62569
62743
  env: buildOmniEnv(context),
62570
62744
  executionContext: buildOmniExecutionContext(context)
62571
62745
  };
62572
62746
  try {
62573
62747
  await this.ensureConnected();
62574
- this.nc?.publish(topic, this.sc.encode(JSON.stringify(payload)));
62748
+ this.nc?.publish(topic, this.sc.encode(JSON.stringify(payload)), this.buildPublishOptions(propagationHeaders));
62575
62749
  log17.info("Published to NATS", {
62576
- topic,
62750
+ subject: "omni.message.<instance>.<chat_hash>",
62577
62751
  agent: this.config.agentName,
62578
- chatId: context.source.chatId,
62752
+ instanceId: this.config.instanceId,
62753
+ chatHash: this.safeHash(context.source.chatId),
62579
62754
  traceId: context.traceId
62580
62755
  });
62581
62756
  } catch (error2) {
62582
62757
  log17.error("Failed to publish to NATS, writing to dead-letter queue", {
62583
- topic,
62758
+ subject: "omni.message.<instance>.<chat_hash>",
62759
+ instanceId: this.config.instanceId,
62760
+ chatHash: this.safeHash(context.source.chatId),
62584
62761
  error: error2 instanceof Error ? error2.message : String(error2),
62585
62762
  traceId: context.traceId
62586
62763
  });
@@ -62623,7 +62800,8 @@ class NatsGenieProvider {
62623
62800
  }
62624
62801
  } catch (error2) {
62625
62802
  log17.error("Error processing reply", {
62626
- subject: msg.subject,
62803
+ subject: "omni.reply.<instance>.<chat_hash>",
62804
+ subjectHash: this.safeHash(msg.subject),
62627
62805
  error: error2 instanceof Error ? error2.message : String(error2)
62628
62806
  });
62629
62807
  }
@@ -62648,7 +62826,7 @@ class NatsGenieProvider {
62648
62826
  if (!chatId) {
62649
62827
  log17.warn("NATS session reset skipped: missing chatId", {
62650
62828
  providerId: this.id,
62651
- sessionKey
62829
+ sessionKeyHash: this.safeHash(sessionKey)
62652
62830
  });
62653
62831
  throw new Error("chatId is required to reset NATS Genie session");
62654
62832
  }
@@ -62665,14 +62843,17 @@ class NatsGenieProvider {
62665
62843
  await this.ensureConnected();
62666
62844
  this.nc?.publish(topic, this.sc.encode(JSON.stringify(payload)));
62667
62845
  log17.info("Published session reset to NATS", {
62668
- topic,
62846
+ subject: "omni.session.reset.<instance>.<chat_hash>",
62669
62847
  providerId: this.id,
62670
- sessionKey,
62671
- chatId
62848
+ instanceId: resolvedInstanceId,
62849
+ sessionKeyHash: this.safeHash(sessionKey),
62850
+ chatHash: this.safeHash(chatId)
62672
62851
  });
62673
62852
  } catch (error2) {
62674
62853
  log17.error("Failed to publish NATS session reset", {
62675
- topic,
62854
+ subject: "omni.session.reset.<instance>.<chat_hash>",
62855
+ instanceId: resolvedInstanceId,
62856
+ chatHash: this.safeHash(chatId),
62676
62857
  error: error2 instanceof Error ? error2.message : String(error2)
62677
62858
  });
62678
62859
  throw error2;
@@ -62702,6 +62883,48 @@ class NatsGenieProvider {
62702
62883
  });
62703
62884
  log17.info("Connected to NATS", { url: this.config.natsUrl });
62704
62885
  }
62886
+ resolveTraceContext(context) {
62887
+ return context.traceContext ?? createTraceContextFromTraceId(context.traceId, `${context.source.instanceId}:${context.source.chatId}:${context.source.messageId}:nats-genie`);
62888
+ }
62889
+ buildPropagationHeaders(context, traceContext) {
62890
+ return buildTraceHeaders2(traceContext, {
62891
+ khalSessionId: context.sessionId,
62892
+ userId: context.sender.personId ?? context.sender.platformUserId,
62893
+ messageId: context.source.messageId,
62894
+ omni: {
62895
+ instanceId: context.source.instanceId,
62896
+ chatId: context.source.chatId,
62897
+ channel: context.source.channelType
62898
+ }
62899
+ });
62900
+ }
62901
+ buildPublishOptions(traceHeaders) {
62902
+ if (Object.keys(traceHeaders).length === 0)
62903
+ return;
62904
+ const natsHeaders2 = import_nats2.headers();
62905
+ for (const [key, value] of Object.entries(traceHeaders)) {
62906
+ natsHeaders2.set(key, value);
62907
+ }
62908
+ return { headers: natsHeaders2 };
62909
+ }
62910
+ buildSafePayloadMetadata(traceHeaders) {
62911
+ const metadata = {};
62912
+ for (const [key, value] of Object.entries(traceHeaders)) {
62913
+ if (key === "x-khal-user-id") {
62914
+ metadata["x-khal-user-hash"] = this.safeHash(value);
62915
+ continue;
62916
+ }
62917
+ if (key === "x-omni-chat-id") {
62918
+ metadata["x-omni-chat-hash"] = this.safeHash(value);
62919
+ continue;
62920
+ }
62921
+ metadata[key] = value;
62922
+ }
62923
+ return metadata;
62924
+ }
62925
+ safeHash(value) {
62926
+ return createHash5("sha256").update(value).digest("hex").slice(0, 12);
62927
+ }
62705
62928
  buildMessage(context) {
62706
62929
  let message2 = "";
62707
62930
  if (context.content.text) {
@@ -62735,6 +62958,7 @@ class NatsGenieProvider {
62735
62958
  var import_nats2, log17;
62736
62959
  var init_nats_genie_provider = __esm(() => {
62737
62960
  init_logger();
62961
+ init_trace_context();
62738
62962
  import_nats2 = __toESM(require_mod4(), 1);
62739
62963
  log17 = createLogger("provider:nats-genie");
62740
62964
  });
@@ -124723,7 +124947,7 @@ import { fileURLToPath } from "url";
124723
124947
  // package.json
124724
124948
  var package_default = {
124725
124949
  name: "@automagik/omni",
124726
- version: "2.260529.2",
124950
+ version: "2.260529.3",
124727
124951
  description: "LLM-optimized CLI for Omni",
124728
124952
  type: "module",
124729
124953
  bin: {
@@ -29535,6 +29535,82 @@ function buildProviderRequestContext(context2) {
29535
29535
  }
29536
29536
  var OMNI_EXECUTION_CONTEXT_EXTENSION_URI = "https://omni.dev/extensions/execution-context/v1";
29537
29537
 
29538
+ // ../core/src/providers/trace-context.ts
29539
+ import { createHash } from "crypto";
29540
+ function isNonZeroHex(value) {
29541
+ return value.length > 0 && !/^0+$/.test(value);
29542
+ }
29543
+ function hashHex(value, length) {
29544
+ return createHash("sha256").update(value).digest("hex").slice(0, length);
29545
+ }
29546
+ function normalizeTraceId(value) {
29547
+ const lower = value.toLowerCase();
29548
+ if (W3C_TRACE_ID.test(lower) && isNonZeroHex(lower)) {
29549
+ return lower;
29550
+ }
29551
+ return hashHex(lower, 32);
29552
+ }
29553
+ function normalizeSpanId(value) {
29554
+ const lower = value.toLowerCase();
29555
+ if (W3C_SPAN_ID.test(lower) && isNonZeroHex(lower)) {
29556
+ return lower;
29557
+ }
29558
+ return hashHex(lower, 16);
29559
+ }
29560
+ function createTraceContextFromTraceId(traceId, spanSeed = "provider") {
29561
+ if (!traceId)
29562
+ return;
29563
+ return {
29564
+ traceId: normalizeTraceId(traceId),
29565
+ spanId: normalizeSpanId(`${traceId}:${spanSeed}`),
29566
+ traceFlags: 1
29567
+ };
29568
+ }
29569
+ function formatTraceparent(ctx) {
29570
+ const traceFlags = (ctx.traceFlags ?? 1) & 255;
29571
+ const paddedFlagsHex = traceFlags.toString(16).padStart(2, "0");
29572
+ return `00-${normalizeTraceId(ctx.traceId)}-${normalizeSpanId(ctx.spanId)}-${paddedFlagsHex}`;
29573
+ }
29574
+ function buildTraceHeaders2(ctx, khal) {
29575
+ const traceHeaders = {};
29576
+ if (ctx) {
29577
+ traceHeaders.traceparent = formatTraceparent(ctx);
29578
+ traceHeaders["x-trace-id"] = normalizeTraceId(ctx.traceId);
29579
+ traceHeaders["x-span-id"] = normalizeSpanId(ctx.spanId);
29580
+ const tracestate = ctx.tracestate ?? ctx.traceState;
29581
+ if (tracestate) {
29582
+ traceHeaders.tracestate = tracestate;
29583
+ }
29584
+ if (ctx.parentSpanId) {
29585
+ traceHeaders["x-parent-span-id"] = normalizeSpanId(ctx.parentSpanId);
29586
+ }
29587
+ }
29588
+ if (khal?.khalSessionId) {
29589
+ traceHeaders["x-khal-session-id"] = khal.khalSessionId;
29590
+ }
29591
+ if (khal?.userId) {
29592
+ traceHeaders["x-khal-user-id"] = khal.userId;
29593
+ }
29594
+ if (khal?.messageId) {
29595
+ traceHeaders["x-khal-message-id"] = khal.messageId;
29596
+ }
29597
+ if (khal?.omni?.instanceId) {
29598
+ traceHeaders["x-omni-instance-id"] = khal.omni.instanceId;
29599
+ }
29600
+ if (khal?.omni?.chatId) {
29601
+ traceHeaders["x-omni-chat-id"] = khal.omni.chatId;
29602
+ }
29603
+ if (khal?.omni?.channel) {
29604
+ traceHeaders["x-omni-channel"] = khal.omni.channel;
29605
+ }
29606
+ return traceHeaders;
29607
+ }
29608
+ var W3C_TRACE_ID, W3C_SPAN_ID;
29609
+ var init_trace_context = __esm(() => {
29610
+ W3C_TRACE_ID = /^[0-9a-f]{32}$/i;
29611
+ W3C_SPAN_ID = /^[0-9a-f]{16}$/i;
29612
+ });
29613
+
29538
29614
  // ../core/src/providers/agno-client.ts
29539
29615
  class AgnoClient {
29540
29616
  baseUrl;
@@ -29663,12 +29739,14 @@ class AgnoClient {
29663
29739
  const formData = new FormData;
29664
29740
  formData.append("message", request.message);
29665
29741
  formData.append("stream", String(stream));
29666
- if (request.sessionId) {
29667
- formData.append("session_id", request.sessionId);
29742
+ const sessionId = request.khalSessionId ?? request.sessionId;
29743
+ if (sessionId) {
29744
+ formData.append("session_id", sessionId);
29668
29745
  }
29669
29746
  if (request.userId) {
29670
29747
  formData.append("user_id", request.userId);
29671
29748
  }
29749
+ this.appendStructuredMetadata(formData, request);
29672
29750
  if (request.files?.length) {
29673
29751
  for (const file of request.files) {
29674
29752
  try {
@@ -29686,6 +29764,28 @@ class AgnoClient {
29686
29764
  }
29687
29765
  return formData;
29688
29766
  }
29767
+ appendStructuredMetadata(formData, request) {
29768
+ const appendJson = (key, value) => {
29769
+ if (value !== undefined) {
29770
+ formData.append(key, JSON.stringify(value));
29771
+ }
29772
+ };
29773
+ if (request.khalSessionId) {
29774
+ formData.append("khal_session_id", request.khalSessionId);
29775
+ }
29776
+ if (request.messageId) {
29777
+ formData.append("message_id", request.messageId);
29778
+ }
29779
+ if (request.replyToMessageId) {
29780
+ formData.append("reply_to_message_id", request.replyToMessageId);
29781
+ }
29782
+ appendJson("platform", request.platform);
29783
+ appendJson("sender", request.sender);
29784
+ appendJson("chat", request.chat);
29785
+ appendJson("mcp_url_params", request.mcpUrlParams);
29786
+ appendJson("env", request.env);
29787
+ appendJson("omni", request.omni);
29788
+ }
29689
29789
  async runAgent(agentId, request) {
29690
29790
  return this.runEndpoint("agents", agentId, request);
29691
29791
  }
@@ -29701,7 +29801,15 @@ class AgnoClient {
29701
29801
  const timeoutMs = request.timeoutMs ?? this.defaultTimeoutMs;
29702
29802
  const response = await this.fetchWithTimeout(url, {
29703
29803
  method: "POST",
29704
- headers: this.getHeaders(),
29804
+ headers: {
29805
+ ...this.getHeaders(),
29806
+ ...buildTraceHeaders2(request.traceContext, {
29807
+ khalSessionId: request.khalSessionId ?? request.sessionId,
29808
+ userId: request.userId,
29809
+ messageId: request.omni?.messageId,
29810
+ omni: request.omni
29811
+ })
29812
+ },
29705
29813
  body: formData
29706
29814
  }, timeoutMs);
29707
29815
  if (!response.ok) {
@@ -29735,7 +29843,15 @@ class AgnoClient {
29735
29843
  const timeoutMs = request.timeoutMs ?? this.defaultTimeoutMs;
29736
29844
  const response = await this.fetchWithTimeout(url, {
29737
29845
  method: "POST",
29738
- headers: this.getHeaders(),
29846
+ headers: {
29847
+ ...this.getHeaders(),
29848
+ ...buildTraceHeaders2(request.traceContext, {
29849
+ khalSessionId: request.khalSessionId ?? request.sessionId,
29850
+ userId: request.userId,
29851
+ messageId: request.omni?.messageId,
29852
+ omni: request.omni
29853
+ })
29854
+ },
29739
29855
  body: formData
29740
29856
  }, timeoutMs);
29741
29857
  if (!response.ok) {
@@ -29875,6 +29991,7 @@ function createAgnoClient(config2) {
29875
29991
  }
29876
29992
  var DEFAULT_TIMEOUT_MS = 60000;
29877
29993
  var init_agno_client = __esm(() => {
29994
+ init_trace_context();
29878
29995
  init_types7();
29879
29996
  });
29880
29997
 
@@ -30559,12 +30676,7 @@ class AgnoAgentProvider {
30559
30676
  }
30560
30677
  async trigger(context2) {
30561
30678
  const startTime = Date.now();
30562
- let message2 = "";
30563
- if (context2.content.text) {
30564
- message2 = context2.content.text;
30565
- } else if (context2.content.emoji) {
30566
- message2 = `[Reaction: ${context2.content.emoji} on message ${context2.content.referencedMessageId ?? context2.source.messageId}]`;
30567
- }
30679
+ const message2 = this.buildMessage(context2);
30568
30680
  if (!message2) {
30569
30681
  log8.debug("No content to send to agent", { traceId: context2.traceId });
30570
30682
  return {
@@ -30576,17 +30688,7 @@ class AgnoAgentProvider {
30576
30688
  }
30577
30689
  };
30578
30690
  }
30579
- if (this.config.prefixSenderName !== false && context2.sender.displayName) {
30580
- message2 = `[${context2.sender.displayName}]: ${message2}`;
30581
- }
30582
- const request = {
30583
- ...buildProviderRequestContext(context2),
30584
- message: message2,
30585
- agentId: this.config.agentId,
30586
- agentType: this.config.agentType,
30587
- stream: false,
30588
- timeoutMs: this.config.timeoutMs ?? 60000
30589
- };
30691
+ const request = this.buildRequest(context2, message2, false);
30590
30692
  log8.info("Triggering Agno agent", {
30591
30693
  agentId: this.config.agentId,
30592
30694
  agentType: this.config.agentType,
@@ -30618,13 +30720,79 @@ class AgnoAgentProvider {
30618
30720
  }
30619
30721
  };
30620
30722
  }
30723
+ async* triggerStream(context2) {
30724
+ const message2 = this.buildMessage(context2);
30725
+ if (!message2) {
30726
+ log8.debug("No content to send to Agno agent (stream)", { traceId: context2.traceId });
30727
+ return;
30728
+ }
30729
+ const request = this.buildRequest(context2, message2, true);
30730
+ log8.info("Streaming Agno agent", {
30731
+ agentId: this.config.agentId,
30732
+ agentType: this.config.agentType,
30733
+ triggerType: context2.type,
30734
+ traceId: context2.traceId
30735
+ });
30736
+ try {
30737
+ for await (const chunk of this.client.stream(request)) {
30738
+ if (chunk.content) {
30739
+ yield { phase: "content", content: chunk.content };
30740
+ }
30741
+ if (chunk.isComplete) {
30742
+ yield { phase: "final", content: chunk.fullContent ?? chunk.content ?? "" };
30743
+ }
30744
+ }
30745
+ } catch (error) {
30746
+ const message3 = error instanceof Error ? error.message : String(error);
30747
+ log8.error("Error in Agno agent stream", {
30748
+ agentId: this.config.agentId,
30749
+ traceId: context2.traceId,
30750
+ error: message3
30751
+ });
30752
+ yield { phase: "error", error: message3 };
30753
+ }
30754
+ }
30621
30755
  async checkHealth() {
30622
30756
  return this.client.checkHealth();
30623
30757
  }
30758
+ buildMessage(context2) {
30759
+ let message2 = "";
30760
+ if (context2.content.text) {
30761
+ message2 = context2.content.text;
30762
+ } else if (context2.content.emoji) {
30763
+ message2 = `[Reaction: ${context2.content.emoji} on message ${context2.content.referencedMessageId ?? context2.source.messageId}]`;
30764
+ }
30765
+ if (message2 && this.config.prefixSenderName !== false && context2.sender.displayName) {
30766
+ message2 = `[${context2.sender.displayName}]: ${message2}`;
30767
+ }
30768
+ return message2;
30769
+ }
30770
+ buildRequest(context2, message2, stream) {
30771
+ const traceContext = context2.traceContext ?? createTraceContextFromTraceId(context2.traceId, `${context2.source.instanceId}:${context2.source.chatId}:${context2.source.messageId}:agno`);
30772
+ return {
30773
+ ...buildProviderRequestContext(context2),
30774
+ message: message2,
30775
+ agentId: this.config.agentId,
30776
+ agentType: this.config.agentType,
30777
+ stream,
30778
+ timeoutMs: this.config.timeoutMs ?? 60000,
30779
+ files: context2.content.files,
30780
+ traceContext,
30781
+ khalSessionId: context2.sessionId,
30782
+ omni: {
30783
+ instanceId: context2.source.instanceId,
30784
+ chatId: context2.source.chatId,
30785
+ messageId: context2.source.messageId,
30786
+ channel: context2.source.channelType
30787
+ },
30788
+ ...context2.source.chatId ? { mcpUrlParams: { chat_id: context2.source.chatId } } : {}
30789
+ };
30790
+ }
30624
30791
  }
30625
30792
  var log8;
30626
30793
  var init_agno_provider = __esm(() => {
30627
30794
  init_logger();
30795
+ init_trace_context();
30628
30796
  log8 = createLogger("provider:agno");
30629
30797
  });
30630
30798
 
@@ -32786,6 +32954,7 @@ var init_a2a_provider = __esm(() => {
32786
32954
  });
32787
32955
 
32788
32956
  // ../core/src/providers/nats-genie-provider.ts
32957
+ import { createHash as createHash2 } from "crypto";
32789
32958
  import { mkdir, writeFile } from "fs/promises";
32790
32959
  import { homedir } from "os";
32791
32960
  import { join } from "path";
@@ -32819,6 +32988,8 @@ class NatsGenieProvider {
32819
32988
  };
32820
32989
  }
32821
32990
  const topic = `omni.message.${this.config.instanceId}.${context2.source.chatId}`;
32991
+ const traceContext = this.resolveTraceContext(context2);
32992
+ const propagationHeaders = this.buildPropagationHeaders(context2, traceContext);
32822
32993
  const payload = {
32823
32994
  content: message2,
32824
32995
  sender: context2.sender.displayName ?? context2.sender.platformUserId,
@@ -32828,22 +32999,28 @@ class NatsGenieProvider {
32828
32999
  timestamp: new Date().toISOString(),
32829
33000
  traceId: context2.traceId,
32830
33001
  messageId: context2.source.messageId,
33002
+ contextMessages: context2.contextMessages,
32831
33003
  files: context2.content.files,
33004
+ traceContext,
33005
+ metadata: this.buildSafePayloadMetadata(propagationHeaders),
32832
33006
  env: buildOmniEnv(context2),
32833
33007
  executionContext: buildOmniExecutionContext(context2)
32834
33008
  };
32835
33009
  try {
32836
33010
  await this.ensureConnected();
32837
- this.nc?.publish(topic, this.sc.encode(JSON.stringify(payload)));
33011
+ this.nc?.publish(topic, this.sc.encode(JSON.stringify(payload)), this.buildPublishOptions(propagationHeaders));
32838
33012
  log17.info("Published to NATS", {
32839
- topic,
33013
+ subject: "omni.message.<instance>.<chat_hash>",
32840
33014
  agent: this.config.agentName,
32841
- chatId: context2.source.chatId,
33015
+ instanceId: this.config.instanceId,
33016
+ chatHash: this.safeHash(context2.source.chatId),
32842
33017
  traceId: context2.traceId
32843
33018
  });
32844
33019
  } catch (error) {
32845
33020
  log17.error("Failed to publish to NATS, writing to dead-letter queue", {
32846
- topic,
33021
+ subject: "omni.message.<instance>.<chat_hash>",
33022
+ instanceId: this.config.instanceId,
33023
+ chatHash: this.safeHash(context2.source.chatId),
32847
33024
  error: error instanceof Error ? error.message : String(error),
32848
33025
  traceId: context2.traceId
32849
33026
  });
@@ -32886,7 +33063,8 @@ class NatsGenieProvider {
32886
33063
  }
32887
33064
  } catch (error) {
32888
33065
  log17.error("Error processing reply", {
32889
- subject: msg.subject,
33066
+ subject: "omni.reply.<instance>.<chat_hash>",
33067
+ subjectHash: this.safeHash(msg.subject),
32890
33068
  error: error instanceof Error ? error.message : String(error)
32891
33069
  });
32892
33070
  }
@@ -32911,7 +33089,7 @@ class NatsGenieProvider {
32911
33089
  if (!chatId) {
32912
33090
  log17.warn("NATS session reset skipped: missing chatId", {
32913
33091
  providerId: this.id,
32914
- sessionKey
33092
+ sessionKeyHash: this.safeHash(sessionKey)
32915
33093
  });
32916
33094
  throw new Error("chatId is required to reset NATS Genie session");
32917
33095
  }
@@ -32928,14 +33106,17 @@ class NatsGenieProvider {
32928
33106
  await this.ensureConnected();
32929
33107
  this.nc?.publish(topic, this.sc.encode(JSON.stringify(payload)));
32930
33108
  log17.info("Published session reset to NATS", {
32931
- topic,
33109
+ subject: "omni.session.reset.<instance>.<chat_hash>",
32932
33110
  providerId: this.id,
32933
- sessionKey,
32934
- chatId
33111
+ instanceId: resolvedInstanceId,
33112
+ sessionKeyHash: this.safeHash(sessionKey),
33113
+ chatHash: this.safeHash(chatId)
32935
33114
  });
32936
33115
  } catch (error) {
32937
33116
  log17.error("Failed to publish NATS session reset", {
32938
- topic,
33117
+ subject: "omni.session.reset.<instance>.<chat_hash>",
33118
+ instanceId: resolvedInstanceId,
33119
+ chatHash: this.safeHash(chatId),
32939
33120
  error: error instanceof Error ? error.message : String(error)
32940
33121
  });
32941
33122
  throw error;
@@ -32965,6 +33146,48 @@ class NatsGenieProvider {
32965
33146
  });
32966
33147
  log17.info("Connected to NATS", { url: this.config.natsUrl });
32967
33148
  }
33149
+ resolveTraceContext(context2) {
33150
+ return context2.traceContext ?? createTraceContextFromTraceId(context2.traceId, `${context2.source.instanceId}:${context2.source.chatId}:${context2.source.messageId}:nats-genie`);
33151
+ }
33152
+ buildPropagationHeaders(context2, traceContext) {
33153
+ return buildTraceHeaders2(traceContext, {
33154
+ khalSessionId: context2.sessionId,
33155
+ userId: context2.sender.personId ?? context2.sender.platformUserId,
33156
+ messageId: context2.source.messageId,
33157
+ omni: {
33158
+ instanceId: context2.source.instanceId,
33159
+ chatId: context2.source.chatId,
33160
+ channel: context2.source.channelType
33161
+ }
33162
+ });
33163
+ }
33164
+ buildPublishOptions(traceHeaders) {
33165
+ if (Object.keys(traceHeaders).length === 0)
33166
+ return;
33167
+ const natsHeaders2 = import_nats2.headers();
33168
+ for (const [key, value] of Object.entries(traceHeaders)) {
33169
+ natsHeaders2.set(key, value);
33170
+ }
33171
+ return { headers: natsHeaders2 };
33172
+ }
33173
+ buildSafePayloadMetadata(traceHeaders) {
33174
+ const metadata = {};
33175
+ for (const [key, value] of Object.entries(traceHeaders)) {
33176
+ if (key === "x-khal-user-id") {
33177
+ metadata["x-khal-user-hash"] = this.safeHash(value);
33178
+ continue;
33179
+ }
33180
+ if (key === "x-omni-chat-id") {
33181
+ metadata["x-omni-chat-hash"] = this.safeHash(value);
33182
+ continue;
33183
+ }
33184
+ metadata[key] = value;
33185
+ }
33186
+ return metadata;
33187
+ }
33188
+ safeHash(value) {
33189
+ return createHash2("sha256").update(value).digest("hex").slice(0, 12);
33190
+ }
32968
33191
  buildMessage(context2) {
32969
33192
  let message2 = "";
32970
33193
  if (context2.content.text) {
@@ -32998,6 +33221,7 @@ class NatsGenieProvider {
32998
33221
  var import_nats2, log17;
32999
33222
  var init_nats_genie_provider = __esm(() => {
33000
33223
  init_logger();
33224
+ init_trace_context();
33001
33225
  import_nats2 = __toESM(require_mod4(), 1);
33002
33226
  log17 = createLogger("provider:nats-genie");
33003
33227
  });
@@ -136608,7 +136832,7 @@ var require_libvips = __commonJS((exports, module) => {
136608
136832
  SPDX-License-Identifier: Apache-2.0
136609
136833
  */
136610
136834
  var { spawnSync } = __require("child_process");
136611
- var { createHash: createHash4 } = __require("crypto");
136835
+ var { createHash: createHash6 } = __require("crypto");
136612
136836
  var semverCoerce = require_coerce();
136613
136837
  var semverGreaterThanOrEqualTo = require_gte();
136614
136838
  var semverSatisfies = require_satisfies();
@@ -136696,7 +136920,7 @@ var require_libvips = __commonJS((exports, module) => {
136696
136920
  }
136697
136921
  return false;
136698
136922
  };
136699
- var sha512 = (s) => createHash4("sha512").update(s).digest("hex");
136923
+ var sha512 = (s) => createHash6("sha512").update(s).digest("hex");
136700
136924
  var yarnLocator = () => {
136701
136925
  try {
136702
136926
  const identHash = sha512(`imgsharp-libvips-${buildPlatformArch()}`);
@@ -230292,7 +230516,7 @@ var init_sentry_scrub = __esm(() => {
230292
230516
  var require_package8 = __commonJS((exports, module) => {
230293
230517
  module.exports = {
230294
230518
  name: "@omni/api",
230295
- version: "2.260529.2",
230519
+ version: "2.260529.3",
230296
230520
  type: "module",
230297
230521
  exports: {
230298
230522
  ".": {
@@ -289287,9 +289511,9 @@ var init_body_limit2 = __esm(() => {
289287
289511
  });
289288
289512
 
289289
289513
  // ../api/src/middleware/genie-signature.ts
289290
- import { createHash as createHash7, createPublicKey, verify } from "crypto";
289514
+ import { createHash as createHash9, createPublicKey, verify } from "crypto";
289291
289515
  function canonicalSigningInput(timestamp3, method, path2, body) {
289292
- const bodyHash = createHash7("sha256").update(body, "utf-8").digest("hex");
289516
+ const bodyHash = createHash9("sha256").update(body, "utf-8").digest("hex");
289293
289517
  return `${timestamp3}
289294
289518
  ${method.toUpperCase()}
289295
289519
  ${path2}
@@ -357678,7 +357902,7 @@ async function sendMediaBuffer(client, channelId, buffer2, options) {
357678
357902
 
357679
357903
  // ../channel-discord/src/senders/media-dedup.ts
357680
357904
  init_src();
357681
- import { createHash } from "crypto";
357905
+ import { createHash as createHash3 } from "crypto";
357682
357906
  var log28 = createLogger("discord:media-dedup");
357683
357907
 
357684
357908
  class MediaDedup {
@@ -357691,7 +357915,7 @@ class MediaDedup {
357691
357915
  }
357692
357916
  computeHash(data, scope = "") {
357693
357917
  const prefix = data.subarray(0, 4096);
357694
- const hash = createHash("sha256");
357918
+ const hash = createHash3("sha256");
357695
357919
  hash.update(prefix);
357696
357920
  hash.update(Buffer.from(String(data.length)));
357697
357921
  if (scope)
@@ -452892,7 +453116,7 @@ var import_protobufs = __toESM(require_protobufs(), 1);
452892
453116
 
452893
453117
  // ../../node_modules/.bun/baileys@vendor+baileys-v7.0.0-rc10.tgz+89588f7e3fe8b2e6/node_modules/baileys/lib/Utils/generics.js
452894
453118
  var import_boom3 = __toESM(require_lib7(), 1);
452895
- import { createHash as createHash3, randomBytes as randomBytes3 } from "crypto";
453119
+ import { createHash as createHash5, randomBytes as randomBytes3 } from "crypto";
452896
453120
  // ../../node_modules/.bun/baileys@vendor+baileys-v7.0.0-rc10.tgz+89588f7e3fe8b2e6/node_modules/baileys/lib/Types/Chat.js
452897
453121
  var ALL_WA_PATCH_NAMES = [
452898
453122
  "critical_block",
@@ -454951,7 +455175,7 @@ ${tabs(i)}</${node.tag}>` : "/>";
454951
455175
  }
454952
455176
  // ../../node_modules/.bun/baileys@vendor+baileys-v7.0.0-rc10.tgz+89588f7e3fe8b2e6/node_modules/baileys/lib/Utils/crypto.js
454953
455177
  var curve = __toESM(require_curve2(), 1);
454954
- import { createCipheriv, createDecipheriv, createHash as createHash2, createHmac, randomBytes as randomBytes2 } from "crypto";
455178
+ import { createCipheriv, createDecipheriv, createHash as createHash4, createHmac, randomBytes as randomBytes2 } from "crypto";
454955
455179
 
454956
455180
  // ../../node_modules/.bun/whatsapp-rust-bridge@0.5.3/node_modules/whatsapp-rust-bridge/dist/index.js
454957
455181
  class ExpandedAppStateKeys {
@@ -456661,7 +456885,7 @@ function hmacSign(buffer2, key, variant = "sha256") {
456661
456885
  return createHmac(variant, key).update(buffer2).digest();
456662
456886
  }
456663
456887
  function sha256(buffer2) {
456664
- return createHash2("sha256").update(buffer2).digest();
456888
+ return createHash4("sha256").update(buffer2).digest();
456665
456889
  }
456666
456890
  async function derivePairingCodeKey(pairingCode, salt) {
456667
456891
  const encoder = new TextEncoder;
@@ -456791,7 +457015,7 @@ var generateMessageIDV2 = (userId) => {
456791
457015
  }
456792
457016
  const random = randomBytes3(16);
456793
457017
  random.copy(data, 28);
456794
- const hash = createHash3("sha256").update(data).digest();
457018
+ const hash = createHash5("sha256").update(data).digest();
456795
457019
  return "3EB0" + hash.toString("hex").toUpperCase().substring(0, 18);
456796
457020
  };
456797
457021
  var generateMessageID = () => "3EB0" + randomBytes3(18).toString("hex").toUpperCase();
@@ -458811,7 +459035,7 @@ var assertMediaContent = (content) => {
458811
459035
  };
458812
459036
  // ../../node_modules/.bun/baileys@vendor+baileys-v7.0.0-rc10.tgz+89588f7e3fe8b2e6/node_modules/baileys/lib/Utils/validate-connection.js
458813
459037
  var import_boom7 = __toESM(require_lib7(), 1);
458814
- import { createHash as createHash5 } from "crypto";
459038
+ import { createHash as createHash7 } from "crypto";
458815
459039
 
458816
459040
  // ../../node_modules/.bun/baileys@vendor+baileys-v7.0.0-rc10.tgz+89588f7e3fe8b2e6/node_modules/baileys/lib/Utils/signal.js
458817
459041
  function chunk(array, size) {
@@ -459056,7 +459280,7 @@ var getPlatformType = (platform) => {
459056
459280
  return proto.DeviceProps.PlatformType[platformType] || proto.DeviceProps.PlatformType.CHROME;
459057
459281
  };
459058
459282
  var generateRegistrationNode = ({ registrationId, signedPreKey, signedIdentityKey }, config2) => {
459059
- const appVersionBuf = createHash5("md5").update(config2.version.join(".")).digest();
459283
+ const appVersionBuf = createHash7("md5").update(config2.version.join(".")).digest();
459060
459284
  const companion = {
459061
459285
  os: config2.browser[0],
459062
459286
  platformType: getPlatformType(config2.browser[1]),
@@ -460800,8 +461024,8 @@ var CRC = class {
460800
461024
  }
460801
461025
  }
460802
461026
  crc = (crc ^ 4294967295) >>> 0;
460803
- const hashHex = crc.toString(16).padStart(8, "0");
460804
- return hashHex;
461027
+ const hashHex2 = crc.toString(16).padStart(8, "0");
461028
+ return hashHex2;
460805
461029
  }
460806
461030
  async toHash(data) {
460807
461031
  return this.toHashSync(data);
@@ -460820,8 +461044,8 @@ var WebCrypto = class {
460820
461044
  async toHash(data) {
460821
461045
  const hashBuffer = await crypto.subtle.digest(this._algorithm, data);
460822
461046
  const hashArray = Array.from(new Uint8Array(hashBuffer));
460823
- const hashHex = hashArray.map((byte) => byte.toString(16).padStart(2, "0")).join("");
460824
- return hashHex;
461047
+ const hashHex2 = hashArray.map((byte) => byte.toString(16).padStart(2, "0")).join("");
461048
+ return hashHex2;
460825
461049
  }
460826
461050
  };
460827
461051
  var DJB2 = class {
@@ -460845,8 +461069,8 @@ var DJB2 = class {
460845
461069
  hash = (hash << 5) + hash + bytes2[i];
460846
461070
  hash = hash >>> 0;
460847
461071
  }
460848
- const hashHex = hash.toString(16).padStart(8, "0");
460849
- return hashHex;
461072
+ const hashHex2 = hash.toString(16).padStart(8, "0");
461073
+ return hashHex2;
460850
461074
  }
460851
461075
  async toHash(data) {
460852
461076
  return this.toHashSync(data);
@@ -460876,8 +461100,8 @@ var FNV1 = class {
460876
461100
  hash = hash ^ bytes2[i];
460877
461101
  hash = hash >>> 0;
460878
461102
  }
460879
- const hashHex = hash.toString(16).padStart(8, "0");
460880
- return hashHex;
461103
+ const hashHex2 = hash.toString(16).padStart(8, "0");
461104
+ return hashHex2;
460881
461105
  }
460882
461106
  async toHash(data) {
460883
461107
  return this.toHashSync(data);
@@ -460942,8 +461166,8 @@ var Murmur = class {
460942
461166
  h1 = this._imul(h1, 3266489909);
460943
461167
  h1 ^= h1 >>> 16;
460944
461168
  h1 = h1 >>> 0;
460945
- const hashHex = h1.toString(16).padStart(8, "0");
460946
- return hashHex;
461169
+ const hashHex2 = h1.toString(16).padStart(8, "0");
461170
+ return hashHex2;
460947
461171
  }
460948
461172
  async toHash(data) {
460949
461173
  return this.toHashSync(data);
@@ -468812,7 +469036,7 @@ var TimeMs = {
468812
469036
 
468813
469037
  // ../../node_modules/.bun/baileys@vendor+baileys-v7.0.0-rc10.tgz+89588f7e3fe8b2e6/node_modules/baileys/lib/Utils/business.js
468814
469038
  var import_boom12 = __toESM(require_lib7(), 1);
468815
- import { createHash as createHash6 } from "crypto";
469039
+ import { createHash as createHash8 } from "crypto";
468816
469040
  import { createWriteStream as createWriteStream2, promises as fs4 } from "fs";
468817
469041
  import { tmpdir as tmpdir4 } from "os";
468818
469042
  import { join as join7 } from "path";
@@ -468997,7 +469221,7 @@ var uploadingNecessaryImages = async (images, waUploadToServer, timeoutMs = 3000
468997
469221
  }
468998
469222
  }
468999
469223
  const { stream } = await getStream(img);
469000
- const hasher = createHash6("sha256");
469224
+ const hasher = createHash8("sha256");
469001
469225
  const filePath = join7(tmpdir4(), "img" + generateMessageIDV2());
469002
469226
  const encFileWriteStream = createWriteStream2(filePath);
469003
469227
  for await (const block of stream) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automagik/omni",
3
- "version": "2.260529.2",
3
+ "version": "2.260529.3",
4
4
  "description": "LLM-optimized CLI for Omni",
5
5
  "type": "module",
6
6
  "bin": {