@automagik/omni 2.260530.5 → 2.260531.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/dist/index.js +6 -4
- package/dist/server/index.js +47 -13
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -60766,6 +60766,7 @@ class WebhookAgentProvider {
|
|
|
60766
60766
|
emoji: context.content.emoji
|
|
60767
60767
|
},
|
|
60768
60768
|
traceId: context.traceId,
|
|
60769
|
+
headers: context.headers,
|
|
60769
60770
|
executionContext: buildOmniExecutionContext(context),
|
|
60770
60771
|
replyEndpoint: "POST /api/v2/messages/send"
|
|
60771
60772
|
};
|
|
@@ -60827,10 +60828,11 @@ class WebhookAgentProvider {
|
|
|
60827
60828
|
};
|
|
60828
60829
|
}
|
|
60829
60830
|
}
|
|
60830
|
-
buildHeaders() {
|
|
60831
|
+
buildHeaders(extraHeaders) {
|
|
60831
60832
|
const headers = {
|
|
60832
60833
|
"Content-Type": "application/json",
|
|
60833
|
-
"X-Omni-Provider": "webhook"
|
|
60834
|
+
"X-Omni-Provider": "webhook",
|
|
60835
|
+
...extraHeaders
|
|
60834
60836
|
};
|
|
60835
60837
|
if (this.config.apiKey) {
|
|
60836
60838
|
headers.Authorization = `Bearer ${this.config.apiKey}`;
|
|
@@ -60841,7 +60843,7 @@ class WebhookAgentProvider {
|
|
|
60841
60843
|
const timeoutMs = this.config.timeoutMs ?? DEFAULT_TIMEOUT_MS2;
|
|
60842
60844
|
const response = await fetch(this.config.webhookUrl, {
|
|
60843
60845
|
method: "POST",
|
|
60844
|
-
headers: this.buildHeaders(),
|
|
60846
|
+
headers: this.buildHeaders(payload.headers),
|
|
60845
60847
|
body: JSON.stringify(payload),
|
|
60846
60848
|
signal: AbortSignal.timeout(timeoutMs)
|
|
60847
60849
|
});
|
|
@@ -124965,7 +124967,7 @@ import { fileURLToPath } from "url";
|
|
|
124965
124967
|
// package.json
|
|
124966
124968
|
var package_default = {
|
|
124967
124969
|
name: "@automagik/omni",
|
|
124968
|
-
version: "2.
|
|
124970
|
+
version: "2.260531.1",
|
|
124969
124971
|
description: "LLM-optimized CLI for Omni",
|
|
124970
124972
|
type: "module",
|
|
124971
124973
|
bin: {
|
package/dist/server/index.js
CHANGED
|
@@ -31074,6 +31074,7 @@ class WebhookAgentProvider {
|
|
|
31074
31074
|
emoji: context2.content.emoji
|
|
31075
31075
|
},
|
|
31076
31076
|
traceId: context2.traceId,
|
|
31077
|
+
headers: context2.headers,
|
|
31077
31078
|
executionContext: buildOmniExecutionContext(context2),
|
|
31078
31079
|
replyEndpoint: "POST /api/v2/messages/send"
|
|
31079
31080
|
};
|
|
@@ -31135,10 +31136,11 @@ class WebhookAgentProvider {
|
|
|
31135
31136
|
};
|
|
31136
31137
|
}
|
|
31137
31138
|
}
|
|
31138
|
-
buildHeaders() {
|
|
31139
|
+
buildHeaders(extraHeaders) {
|
|
31139
31140
|
const headers = {
|
|
31140
31141
|
"Content-Type": "application/json",
|
|
31141
|
-
"X-Omni-Provider": "webhook"
|
|
31142
|
+
"X-Omni-Provider": "webhook",
|
|
31143
|
+
...extraHeaders
|
|
31142
31144
|
};
|
|
31143
31145
|
if (this.config.apiKey) {
|
|
31144
31146
|
headers.Authorization = `Bearer ${this.config.apiKey}`;
|
|
@@ -31149,7 +31151,7 @@ class WebhookAgentProvider {
|
|
|
31149
31151
|
const timeoutMs = this.config.timeoutMs ?? DEFAULT_TIMEOUT_MS2;
|
|
31150
31152
|
const response = await fetch(this.config.webhookUrl, {
|
|
31151
31153
|
method: "POST",
|
|
31152
|
-
headers: this.buildHeaders(),
|
|
31154
|
+
headers: this.buildHeaders(payload.headers),
|
|
31153
31155
|
body: JSON.stringify(payload),
|
|
31154
31156
|
signal: AbortSignal.timeout(timeoutMs)
|
|
31155
31157
|
});
|
|
@@ -225239,7 +225241,7 @@ var init_sentry_scrub = __esm(() => {
|
|
|
225239
225241
|
var require_package7 = __commonJS((exports, module) => {
|
|
225240
225242
|
module.exports = {
|
|
225241
225243
|
name: "@omni/api",
|
|
225242
|
-
version: "2.
|
|
225244
|
+
version: "2.260531.1",
|
|
225243
225245
|
type: "module",
|
|
225244
225246
|
exports: {
|
|
225245
225247
|
".": {
|
|
@@ -338506,6 +338508,25 @@ async function consumeStream(generator, sender, instanceId, chatId, traceId) {
|
|
|
338506
338508
|
function extractThreadId(messages4) {
|
|
338507
338509
|
return (messages4[0]?.payload.rawPayload ?? {}).threadId;
|
|
338508
338510
|
}
|
|
338511
|
+
function extractKhalSessionId(messages4) {
|
|
338512
|
+
for (const message2 of messages4) {
|
|
338513
|
+
const rawPayload = message2.payload.rawPayload ?? {};
|
|
338514
|
+
const direct = rawPayload.khalSessionId;
|
|
338515
|
+
if (typeof direct === "string" && direct.trim())
|
|
338516
|
+
return direct.trim();
|
|
338517
|
+
const headers = rawPayload.headers;
|
|
338518
|
+
if (headers && typeof headers === "object") {
|
|
338519
|
+
const headerMap = headers;
|
|
338520
|
+
const value = headerMap["x-khal-session-id"] ?? headerMap["X-Khal-Session-Id"] ?? headerMap["X-KHAL-SESSION-ID"];
|
|
338521
|
+
if (typeof value === "string" && value.trim())
|
|
338522
|
+
return value.trim();
|
|
338523
|
+
}
|
|
338524
|
+
}
|
|
338525
|
+
return;
|
|
338526
|
+
}
|
|
338527
|
+
function buildTriggerHeaders(khalSessionId) {
|
|
338528
|
+
return khalSessionId ? { "x-khal-session-id": khalSessionId } : undefined;
|
|
338529
|
+
}
|
|
338509
338530
|
function mergeContextMessages(extra, db2) {
|
|
338510
338531
|
return extra?.length ? [...extra, ...db2] : db2;
|
|
338511
338532
|
}
|
|
@@ -338553,7 +338574,7 @@ async function executeBeforeMessageWriteHooks(instanceId, chatId, content) {
|
|
|
338553
338574
|
});
|
|
338554
338575
|
return result.context.content;
|
|
338555
338576
|
}
|
|
338556
|
-
function buildMessageTrigger(traceId, triggerType, rawEvent, channel5, instance4, chatId, senderId, personId, senderName, messages4, messageTexts, triggerFiles, sessionId, customerContext, allContextMessages) {
|
|
338577
|
+
function buildMessageTrigger(traceId, triggerType, rawEvent, channel5, instance4, chatId, senderId, personId, senderName, messages4, messageTexts, triggerFiles, sessionId, customerContext, allContextMessages, khalSessionId) {
|
|
338557
338578
|
const threadId2 = extractThreadId(messages4);
|
|
338558
338579
|
const env2 = {};
|
|
338559
338580
|
if (instance4.bridgeTmuxSession) {
|
|
@@ -338582,6 +338603,7 @@ function buildMessageTrigger(traceId, triggerType, rawEvent, channel5, instance4
|
|
|
338582
338603
|
referencedMessageId: messages4[0]?.payload.replyToId || undefined
|
|
338583
338604
|
},
|
|
338584
338605
|
sessionId,
|
|
338606
|
+
headers: buildTriggerHeaders(khalSessionId),
|
|
338585
338607
|
sessionStrategy: instance4.agentSessionStrategy ?? "per_chat",
|
|
338586
338608
|
customer: customerContext,
|
|
338587
338609
|
contextMessages: allContextMessages.length > 0 ? allContextMessages : undefined,
|
|
@@ -338598,7 +338620,8 @@ async function dispatchViaStreamingProvider(services, instance4, messages4, trig
|
|
|
338598
338620
|
if (!messageTexts.length && mediaFiles.length)
|
|
338599
338621
|
messageTexts.push("[Media message]");
|
|
338600
338622
|
const rawThreadId = extractThreadId(messages4);
|
|
338601
|
-
const
|
|
338623
|
+
const explicitKhalSessionId = extractKhalSessionId(messages4);
|
|
338624
|
+
const sessionId = explicitKhalSessionId ?? computeSessionId(instance4.agentSessionStrategy ?? "per_chat", senderId, chatId, rawThreadId);
|
|
338602
338625
|
const rawPl = messages4[0]?.payload.rawPayload ?? {};
|
|
338603
338626
|
const replyToId = messages4[0]?.payload.replyToId ?? messages4[0]?.payload.externalId;
|
|
338604
338627
|
const currentMessageIds = messages4.map((msg) => msg.payload.externalId).filter((id) => !!id);
|
|
@@ -338607,7 +338630,7 @@ async function dispatchViaStreamingProvider(services, instance4, messages4, trig
|
|
|
338607
338630
|
const triggerFiles = toTriggerFiles(mediaFiles);
|
|
338608
338631
|
await executeBeforeAgentStartHooks(instance4, chatId, senderId, senderName, triggerType, traceId, messages4[0]?.metadata.correlationId, triggerFiles);
|
|
338609
338632
|
const customerContext = await resolveCustomerContext(services, personId, extractA2ACustomerContext(messages4, channel5));
|
|
338610
|
-
const trigger = buildMessageTrigger(traceId, triggerType, rawEvent, channel5, instance4, chatId, senderId, personId, senderName, messages4, messageTexts, triggerFiles, sessionId, customerContext, allContextMessages);
|
|
338633
|
+
const trigger = buildMessageTrigger(traceId, triggerType, rawEvent, channel5, instance4, chatId, senderId, personId, senderName, messages4, messageTexts, triggerFiles, sessionId, customerContext, allContextMessages, explicitKhalSessionId);
|
|
338611
338634
|
const chatType = determineChatType(chatId, channel5, rawPl);
|
|
338612
338635
|
const formatMode = instance4.messageFormatMode ?? "convert";
|
|
338613
338636
|
const sender = resolved.createSender(instance4.id, chatId, replyToId, chatType, { formatMode });
|
|
@@ -338820,14 +338843,15 @@ async function dispatchViaProvider(services, instance4, messages4, triggerType,
|
|
|
338820
338843
|
messageTexts.push("[Media message]");
|
|
338821
338844
|
}
|
|
338822
338845
|
const rawThreadId = extractThreadId(messages4);
|
|
338823
|
-
const
|
|
338846
|
+
const explicitKhalSessionId = extractKhalSessionId(messages4);
|
|
338847
|
+
const sessionId = explicitKhalSessionId ?? computeSessionId(instance4.agentSessionStrategy ?? "per_chat", senderId, chatId, rawThreadId);
|
|
338824
338848
|
const currentMessageIds = messages4.map((msg) => msg.payload.externalId).filter((id) => !!id);
|
|
338825
338849
|
const dbContextMessages = await buildContextMessages(services, instance4, chatId, currentMessageIds);
|
|
338826
338850
|
const allContextMessages = mergeContextMessages(extraContextMessages, dbContextMessages);
|
|
338827
338851
|
const triggerFiles = toTriggerFiles(mediaFiles);
|
|
338828
338852
|
await executeBeforeAgentStartHooks(instance4, chatId, senderId, senderName, triggerType, traceId, messages4[0]?.metadata.correlationId, triggerFiles);
|
|
338829
338853
|
const customerContext = await resolveCustomerContext(services, personId, extractA2ACustomerContext(messages4, channel5));
|
|
338830
|
-
const trigger = buildMessageTrigger(traceId, triggerType, rawEvent, channel5, instance4, chatId, senderId, personId, senderName, messages4, messageTexts, triggerFiles, sessionId, customerContext, allContextMessages);
|
|
338854
|
+
const trigger = buildMessageTrigger(traceId, triggerType, rawEvent, channel5, instance4, chatId, senderId, personId, senderName, messages4, messageTexts, triggerFiles, sessionId, customerContext, allContextMessages, explicitKhalSessionId);
|
|
338831
338855
|
if (provider.mode === "turn-based") {
|
|
338832
338856
|
return dispatchViaTurnBasedProvider(services, instance4, provider, trigger, messages4, chatId, traceId, db2);
|
|
338833
338857
|
}
|
|
@@ -338958,7 +338982,7 @@ async function handleSessionReset(firstMessage, instance4, channel5, senderId, c
|
|
|
338958
338982
|
const hasThread = !!(firstMessage.payload.threadId || msgRawPayload.isThread || msgRawPayload.threadId);
|
|
338959
338983
|
const resetChatType = hasThread ? "thread" : resolvedChatType === "channel" ? "group" : resolvedChatType;
|
|
338960
338984
|
const rawThreadIdForReset = msgRawPayload.threadId;
|
|
338961
|
-
const sessionId = computeSessionId(instance4.agentSessionStrategy ?? "per_chat", senderId, chatId, rawThreadIdForReset);
|
|
338985
|
+
const sessionId = extractKhalSessionId([firstMessage]) ?? computeSessionId(instance4.agentSessionStrategy ?? "per_chat", senderId, chatId, rawThreadIdForReset);
|
|
338962
338986
|
const sessionResetConfig = inst.sessionReset;
|
|
338963
338987
|
const activity = sessionActivityStore.getActivity(instance4.id, sessionId);
|
|
338964
338988
|
const resetResult = checkSessionReset(sessionResetConfig, resetChatType, activity);
|
|
@@ -365775,7 +365799,9 @@ async function handleGupshupWebhook(request, plugin3, instanceId, webhookVerifyT
|
|
|
365775
365799
|
sender: webhook.sender
|
|
365776
365800
|
});
|
|
365777
365801
|
}
|
|
365778
|
-
const processed = await processInboundMessage(plugin3, instanceId, webhook, dedupeCache
|
|
365802
|
+
const processed = await processInboundMessage(plugin3, instanceId, webhook, dedupeCache, {
|
|
365803
|
+
khalSessionId: request.headers.get("x-khal-session-id")?.trim() || undefined
|
|
365804
|
+
});
|
|
365779
365805
|
let handled;
|
|
365780
365806
|
if (!knownMessageEvent) {
|
|
365781
365807
|
handled = "dropped_unknown_fail_open";
|
|
@@ -365791,7 +365817,7 @@ async function handleGupshupWebhook(request, plugin3, instanceId, webhookVerifyT
|
|
|
365791
365817
|
});
|
|
365792
365818
|
return new Response("OK", { status: 200 });
|
|
365793
365819
|
}
|
|
365794
|
-
async function processInboundMessage(plugin3, instanceId, webhook, dedupeCache) {
|
|
365820
|
+
async function processInboundMessage(plugin3, instanceId, webhook, dedupeCache, options = {}) {
|
|
365795
365821
|
const msg = webhook.messageobj;
|
|
365796
365822
|
const from = webhook.sender;
|
|
365797
365823
|
const dedupeKey = `${from.trim()}:${msg.id}`;
|
|
@@ -365813,13 +365839,21 @@ async function processInboundMessage(plugin3, instanceId, webhook, dedupeCache)
|
|
|
365813
365839
|
const platformTimestamp = msg.timestamp * 1000;
|
|
365814
365840
|
const replyTo = msg.replyContext?.id;
|
|
365815
365841
|
const senderName = webhook.senderobj?.display ?? webhook.contextobj?.senderName ?? webhook.messageobj?.raw?.sender?.name;
|
|
365842
|
+
const threadId = webhook.contextobj?.contextid;
|
|
365843
|
+
const khalSessionHeaders = options.khalSessionId ? { "x-khal-session-id": options.khalSessionId } : undefined;
|
|
365816
365844
|
await plugin3.handleMessageReceived({
|
|
365817
365845
|
instanceId,
|
|
365818
365846
|
externalId: msg.id,
|
|
365819
365847
|
chatId: from,
|
|
365820
365848
|
from,
|
|
365821
365849
|
content,
|
|
365822
|
-
rawPayload: {
|
|
365850
|
+
rawPayload: {
|
|
365851
|
+
...webhook,
|
|
365852
|
+
pushName: senderName,
|
|
365853
|
+
...threadId ? { threadId } : {},
|
|
365854
|
+
...options.khalSessionId ? { khalSessionId: options.khalSessionId } : {},
|
|
365855
|
+
...khalSessionHeaders ? { headers: khalSessionHeaders } : {}
|
|
365856
|
+
},
|
|
365823
365857
|
platformTimestamp,
|
|
365824
365858
|
replyTo
|
|
365825
365859
|
});
|