@chatman-media/conversation-engine 1.9.0 → 1.11.0
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/admin-informer.d.ts +6 -0
- package/dist/admin-informer.d.ts.map +1 -1
- package/dist/dal/conversations.integration.test.d.ts +2 -0
- package/dist/dal/conversations.integration.test.d.ts.map +1 -0
- package/dist/dal/kb-store.integration.test.d.ts +2 -0
- package/dist/dal/kb-store.integration.test.d.ts.map +1 -0
- package/dist/dal/notifications.d.ts +1 -1
- package/dist/dal/notifications.d.ts.map +1 -1
- package/dist/index.js +125 -6
- package/dist/lead-advance.integration.test.d.ts +2 -0
- package/dist/lead-advance.integration.test.d.ts.map +1 -0
- package/dist/reply-strategy/exchange-reply-guard.d.ts +13 -0
- package/dist/reply-strategy/exchange-reply-guard.d.ts.map +1 -0
- package/dist/reply-strategy/exchange-reply-guard.test.d.ts +2 -0
- package/dist/reply-strategy/exchange-reply-guard.test.d.ts.map +1 -0
- package/dist/reply-strategy/llm-reply.d.ts +1 -0
- package/dist/reply-strategy/llm-reply.d.ts.map +1 -1
- package/dist/reply-strategy/rag-reply.d.ts +1 -0
- package/dist/reply-strategy/rag-reply.d.ts.map +1 -1
- package/dist/reply-strategy/rag-reply.test.d.ts +2 -0
- package/dist/reply-strategy/rag-reply.test.d.ts.map +1 -0
- package/package.json +2 -2
package/dist/admin-informer.d.ts
CHANGED
|
@@ -47,6 +47,12 @@ export interface InformerEvent {
|
|
|
47
47
|
}
|
|
48
48
|
export declare function passesThreshold(severity: InformerSeverity, level: InformerLevel): boolean;
|
|
49
49
|
export declare function isMuted(settings: OperatorSettings | undefined, nowEpoch: number): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Тихие часы (DND): true, если текущий локальный час (в informerTz) попадает в
|
|
52
|
+
* окно [quietFrom, quietTo). Окно может переходить через полночь (22→8).
|
|
53
|
+
* Выключено, если границы NULL или равны.
|
|
54
|
+
*/
|
|
55
|
+
export declare function inQuietHours(settings: OperatorSettings | undefined, nowEpoch: number): boolean;
|
|
50
56
|
/** Тема включена, если карты нет (NULL = все включены) или ключ != false. */
|
|
51
57
|
export declare function topicEnabled(settings: OperatorSettings | undefined, topic: InformerTopic): boolean;
|
|
52
58
|
export declare function opsAlertToInformer(alert: OpsAlert): InformerEvent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-informer.d.ts","sourceRoot":"","sources":["../src/admin-informer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"admin-informer.d.ts","sourceRoot":"","sources":["../src/admin-informer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversations.integration.test.d.ts","sourceRoot":"","sources":["../../src/dal/conversations.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kb-store.integration.test.d.ts","sourceRoot":"","sources":["../../src/dal/kb-store.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -6,7 +6,7 @@ export type NotificationTemplate = typeof ntTable.$inferSelect;
|
|
|
6
6
|
export type AdminNotificationRow = typeof anTable.$inferSelect;
|
|
7
7
|
export type NewAdminNotification = typeof anTable.$inferInsert;
|
|
8
8
|
/** Частичный апдейт informer-настроек владельца (см. миграцию 0032). */
|
|
9
|
-
export type InformerPrefs = Partial<Pick<OperatorSettings, "informerLevel" | "informerTopics" | "informerDigest" | "informerDigestHour" | "informerTz" | "informerMutedUntil" | "informerLastDigestAt">>;
|
|
9
|
+
export type InformerPrefs = Partial<Pick<OperatorSettings, "informerLevel" | "informerTopics" | "informerDigest" | "informerDigestHour" | "informerTz" | "informerMutedUntil" | "informerLastDigestAt" | "informerQuietFrom" | "informerQuietTo">>;
|
|
10
10
|
/** Владелец тенанта (superadmin) + его operator_settings. */
|
|
11
11
|
export interface OwnerSettings {
|
|
12
12
|
adminId: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/dal/notifications.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAmH,KAAK,kBAAkB,IAAI,OAAO,EAAE,KAAK,iBAAiB,IAAI,OAAO,EAAE,KAAK,gBAAgB,IAAI,OAAO,EAAE,KAAK,qBAAqB,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEzS,MAAM,MAAM,gBAAgB,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC;AAC3D,MAAM,MAAM,gBAAgB,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC;AAC3D,MAAM,MAAM,oBAAoB,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC;AAC/D,MAAM,MAAM,oBAAoB,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC;AAC/D,MAAM,MAAM,oBAAoB,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC;AAE/D,wEAAwE;AACxE,MAAM,MAAM,aAAa,GAAG,OAAO,CACjC,IAAI,CACF,gBAAgB,EACd,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,oBAAoB,GACpB,YAAY,GACZ,oBAAoB,GACpB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/dal/notifications.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1216,6 +1216,25 @@ function isMuted(settings, nowEpoch) {
|
|
|
1216
1216
|
const until = settings?.informerMutedUntil;
|
|
1217
1217
|
return typeof until === "number" && until > nowEpoch;
|
|
1218
1218
|
}
|
|
1219
|
+
function inQuietHours(settings, nowEpoch) {
|
|
1220
|
+
const from = settings?.informerQuietFrom;
|
|
1221
|
+
const to = settings?.informerQuietTo;
|
|
1222
|
+
if (from == null || to == null || from === to)
|
|
1223
|
+
return false;
|
|
1224
|
+
let hour;
|
|
1225
|
+
try {
|
|
1226
|
+
const tz = settings?.informerTz || "UTC";
|
|
1227
|
+
const s = new Intl.DateTimeFormat("en-US", {
|
|
1228
|
+
timeZone: tz,
|
|
1229
|
+
hour: "2-digit",
|
|
1230
|
+
hour12: false
|
|
1231
|
+
}).format(new Date(nowEpoch * 1000));
|
|
1232
|
+
hour = Number.parseInt(s, 10) % 24;
|
|
1233
|
+
} catch {
|
|
1234
|
+
hour = new Date(nowEpoch * 1000).getUTCHours();
|
|
1235
|
+
}
|
|
1236
|
+
return from < to ? hour >= from && hour < to : hour >= from || hour < to;
|
|
1237
|
+
}
|
|
1219
1238
|
function topicEnabled(settings, topic) {
|
|
1220
1239
|
const raw = settings?.informerTopics;
|
|
1221
1240
|
if (!raw)
|
|
@@ -1354,7 +1373,7 @@ class AdminInformer {
|
|
|
1354
1373
|
if (recent)
|
|
1355
1374
|
return null;
|
|
1356
1375
|
const level = owner.settings?.informerLevel ?? "important";
|
|
1357
|
-
const realtime = !isMuted(owner.settings, now) && passesThreshold(event.severity, level);
|
|
1376
|
+
const realtime = !isMuted(owner.settings, now) && !inQuietHours(owner.settings, now) && passesThreshold(event.severity, level);
|
|
1358
1377
|
const rowId = await repo.insertAdminNotification({
|
|
1359
1378
|
tenantId: event.tenantId,
|
|
1360
1379
|
adminId: owner.adminId,
|
|
@@ -1951,6 +1970,87 @@ ${transcript}` }
|
|
|
1951
1970
|
return raw.trim() || null;
|
|
1952
1971
|
}
|
|
1953
1972
|
|
|
1973
|
+
// src/reply-strategy/exchange-reply-guard.ts
|
|
1974
|
+
var EXCHANGE_SAFE_FALLBACK = "Сейчас уточню у оператора и вернусь с точной суммой/реквизитами.";
|
|
1975
|
+
var QUOTE_TOOLS = new Set(["compute_exchange_quote", "create_exchange_order"]);
|
|
1976
|
+
var REQUISITES_TOOLS = new Set(["fetch_exchange_requisites"]);
|
|
1977
|
+
var PAYOUT_TOOLS = new Set(["issue_exchange_payout"]);
|
|
1978
|
+
var NUMBER_RE = /(?<![A-Za-zА-Яа-я0-9])(?:\d{1,3}(?:[ .,]\d{3})+|\d+)(?:[.,]\d+)?(?![A-Za-zА-Яа-я0-9])/u;
|
|
1979
|
+
var QUOTE_RE = /(?:курс|rate|отда[её]те|получа(?:ете|ешь)|итог(?:овая)?\s+сумм|thb|бат|bhat|rub|руб|usdt|btc|eth|usd|eur)/iu;
|
|
1980
|
+
var REQUISITES_RE = /(?:реквизит|кошел[её]к|wallet|адрес\s+(?:кошелька|для\s+оплаты)|оплат\w*|перев(?:од|ести)|sbp|сбп|qr|карта|card|binance\s*id|trc20|erc20|bep20)/iu;
|
|
1981
|
+
var PAYOUT_RE = /(?:код\s+(?:выдачи|снятия|получения)|payout\s*code|cardless|без\s+карты|банкомат|atm)/iu;
|
|
1982
|
+
var RATE_NEGOTIATION_RE = /(?:договор(?:имся|иться)|скидк|лучше\s+курс|курс\s+лучше|сдела(?:ю|ем)\s+курс|подвин(?:у|ем)\s+курс)/iu;
|
|
1983
|
+
var CRYPTO_ADDRESS_RE = /\b(?:T[A-Za-z0-9]{25,}|0x[a-fA-F0-9]{32,}|bc1[a-z0-9]{20,})\b/u;
|
|
1984
|
+
var CARDISH_RE = /\b(?:\d[ -]?){12,19}\b/u;
|
|
1985
|
+
var URL_PAYMENT_RE = /\bhttps?:\/\/\S+/iu;
|
|
1986
|
+
var CODE_RE = /\b\d{4,8}\b/u;
|
|
1987
|
+
function successfulToolNames(telemetry) {
|
|
1988
|
+
const names = new Set;
|
|
1989
|
+
const calls = telemetry?.toolCalls ?? (telemetry?.toolCall ? [{ ...telemetry.toolCall }] : []);
|
|
1990
|
+
for (const call of calls) {
|
|
1991
|
+
if (!call || "error" in call && call.error)
|
|
1992
|
+
continue;
|
|
1993
|
+
const result = call.result;
|
|
1994
|
+
if (isBlockingToolResult(result))
|
|
1995
|
+
continue;
|
|
1996
|
+
names.add(call.name);
|
|
1997
|
+
}
|
|
1998
|
+
return names;
|
|
1999
|
+
}
|
|
2000
|
+
function isBlockingToolResult(result) {
|
|
2001
|
+
if (typeof result !== "object" || result === null)
|
|
2002
|
+
return false;
|
|
2003
|
+
const obj = result;
|
|
2004
|
+
if (typeof obj.error === "string" && obj.error.trim())
|
|
2005
|
+
return true;
|
|
2006
|
+
if (obj.needsOperator === true)
|
|
2007
|
+
return true;
|
|
2008
|
+
if (obj.needsVerification === true)
|
|
2009
|
+
return true;
|
|
2010
|
+
if (obj.ok === false)
|
|
2011
|
+
return true;
|
|
2012
|
+
return false;
|
|
2013
|
+
}
|
|
2014
|
+
function hasAny(names, allowed) {
|
|
2015
|
+
for (const name of allowed) {
|
|
2016
|
+
if (names.has(name))
|
|
2017
|
+
return true;
|
|
2018
|
+
}
|
|
2019
|
+
return false;
|
|
2020
|
+
}
|
|
2021
|
+
function hasConcreteQuoteClaim(text) {
|
|
2022
|
+
return NUMBER_RE.test(text) && QUOTE_RE.test(text);
|
|
2023
|
+
}
|
|
2024
|
+
function hasConcreteRequisitesClaim(text) {
|
|
2025
|
+
if (CRYPTO_ADDRESS_RE.test(text) || CARDISH_RE.test(text))
|
|
2026
|
+
return true;
|
|
2027
|
+
if (!REQUISITES_RE.test(text))
|
|
2028
|
+
return false;
|
|
2029
|
+
return URL_PAYMENT_RE.test(text) || NUMBER_RE.test(text) || /(?:перев(?:едите|ести)|оплат(?:ите|ить)|адрес|ссылка)/iu.test(text);
|
|
2030
|
+
}
|
|
2031
|
+
function hasConcretePayoutClaim(text) {
|
|
2032
|
+
return PAYOUT_RE.test(text) && CODE_RE.test(text);
|
|
2033
|
+
}
|
|
2034
|
+
function guardExchangeReply(input) {
|
|
2035
|
+
const text = input.text.trim();
|
|
2036
|
+
if (!text)
|
|
2037
|
+
return { ok: true, text };
|
|
2038
|
+
if (RATE_NEGOTIATION_RE.test(text)) {
|
|
2039
|
+
return { ok: false, text: EXCHANGE_SAFE_FALLBACK, reason: "rate_negotiation" };
|
|
2040
|
+
}
|
|
2041
|
+
const tools = successfulToolNames(input.telemetry);
|
|
2042
|
+
if (hasConcreteQuoteClaim(text) && !hasAny(tools, QUOTE_TOOLS)) {
|
|
2043
|
+
return { ok: false, text: EXCHANGE_SAFE_FALLBACK, reason: "unbacked_quote" };
|
|
2044
|
+
}
|
|
2045
|
+
if (hasConcreteRequisitesClaim(text) && !hasAny(tools, REQUISITES_TOOLS)) {
|
|
2046
|
+
return { ok: false, text: EXCHANGE_SAFE_FALLBACK, reason: "unbacked_requisites" };
|
|
2047
|
+
}
|
|
2048
|
+
if (hasConcretePayoutClaim(text) && !hasAny(tools, PAYOUT_TOOLS)) {
|
|
2049
|
+
return { ok: false, text: EXCHANGE_SAFE_FALLBACK, reason: "unbacked_payout_code" };
|
|
2050
|
+
}
|
|
2051
|
+
return { ok: true, text };
|
|
2052
|
+
}
|
|
2053
|
+
|
|
1954
2054
|
// src/reply-strategy/rag-reply.ts
|
|
1955
2055
|
function messagesToChatHistory(history) {
|
|
1956
2056
|
const out = [];
|
|
@@ -2030,7 +2130,11 @@ class RagReplyStrategy {
|
|
|
2030
2130
|
const [skills, directorHooks, tools, reranker, stageGuidance, requestContext, awaitingOperator] = await Promise.all([
|
|
2031
2131
|
this.opts.resolveSkills ? this.opts.resolveSkills({ tenantId }) : Promise.resolve([]),
|
|
2032
2132
|
this.opts.resolveDirectorHooks ? this.opts.resolveDirectorHooks({ tenantId }) : Promise.resolve([]),
|
|
2033
|
-
this.opts.resolveTools ? this.opts.resolveTools({
|
|
2133
|
+
this.opts.resolveTools ? this.opts.resolveTools({
|
|
2134
|
+
tenantId,
|
|
2135
|
+
conversationId: input.conversationId,
|
|
2136
|
+
contactId: input.contactId
|
|
2137
|
+
}) : Promise.resolve([]),
|
|
2034
2138
|
this.opts.resolveReranker ? this.opts.resolveReranker({ tenantId }) : Promise.resolve(null),
|
|
2035
2139
|
this.opts.resolveStageGuidance ? this.opts.resolveStageGuidance({ tenantId, contactId: input.contactId }) : Promise.resolve(null),
|
|
2036
2140
|
this.opts.resolveRequestContext ? this.opts.resolveRequestContext({ tenantId, contactId: input.contactId }) : Promise.resolve(null),
|
|
@@ -2092,11 +2196,15 @@ class RagReplyStrategy {
|
|
|
2092
2196
|
}
|
|
2093
2197
|
];
|
|
2094
2198
|
}
|
|
2199
|
+
const guarded = this.opts.template?.slug === "exchange_v1" ? guardExchangeReply({ text: result.text, telemetry: result.telemetry }) : { ok: true, text: result.text };
|
|
2200
|
+
if (!guarded.ok) {
|
|
2201
|
+
console.warn(`[exchange-reply-guard] tenant=${tenantId} conversation=${input.conversationId} reason=${guarded.reason ?? "unknown"}`);
|
|
2202
|
+
}
|
|
2095
2203
|
return [
|
|
2096
2204
|
{
|
|
2097
2205
|
channelId: String(input.channel.channelId),
|
|
2098
2206
|
externalUserId: input.inbound.externalUserId,
|
|
2099
|
-
parts: [{ kind: "text", text:
|
|
2207
|
+
parts: [{ kind: "text", text: guarded.text }]
|
|
2100
2208
|
}
|
|
2101
2209
|
];
|
|
2102
2210
|
}
|
|
@@ -2702,7 +2810,11 @@ async function processInbound(inbound, deps) {
|
|
|
2702
2810
|
};
|
|
2703
2811
|
}
|
|
2704
2812
|
// src/reply-strategy/llm-reply.ts
|
|
2705
|
-
import {
|
|
2813
|
+
import {
|
|
2814
|
+
buildToolTelemetry,
|
|
2815
|
+
DEFAULT_MAX_TOOL_CYCLES,
|
|
2816
|
+
runToolLoop
|
|
2817
|
+
} from "@chatman-media/kb";
|
|
2706
2818
|
var BASE_SYSTEM_PROMPT = "Ты — операционный бот платформы lead-engine. Отвечай кратко, " + "уважительно, по делу. Никогда не выдумывай факты которых нет в " + "контексте — лучше скажи «уточню у партнёра» и поставь сообщение в очередь оператора.";
|
|
2707
2819
|
function messagesToChatHistory2(history) {
|
|
2708
2820
|
const out = [];
|
|
@@ -2746,7 +2858,8 @@ class LlmReplyStrategy {
|
|
|
2746
2858
|
try {
|
|
2747
2859
|
tools = await this.opts.resolveTools({
|
|
2748
2860
|
tenantId: input.tenant.tenantId,
|
|
2749
|
-
conversationId: input.conversationId
|
|
2861
|
+
conversationId: input.conversationId,
|
|
2862
|
+
contactId: input.contactId
|
|
2750
2863
|
});
|
|
2751
2864
|
} catch {
|
|
2752
2865
|
tools = [];
|
|
@@ -2765,6 +2878,7 @@ class LlmReplyStrategy {
|
|
|
2765
2878
|
...historyMessages
|
|
2766
2879
|
];
|
|
2767
2880
|
let reply;
|
|
2881
|
+
let toolCalls = [];
|
|
2768
2882
|
if (toolsActive) {
|
|
2769
2883
|
const loop = await runToolLoop({
|
|
2770
2884
|
chat,
|
|
@@ -2773,17 +2887,22 @@ class LlmReplyStrategy {
|
|
|
2773
2887
|
llmOpts,
|
|
2774
2888
|
maxCycles: DEFAULT_MAX_TOOL_CYCLES
|
|
2775
2889
|
});
|
|
2890
|
+
toolCalls = loop.toolCalls;
|
|
2776
2891
|
reply = loop.content ?? await chat.complete(msgs, llmOpts);
|
|
2777
2892
|
} else {
|
|
2778
2893
|
reply = await chat.complete(msgs, llmOpts);
|
|
2779
2894
|
}
|
|
2780
2895
|
if (reply.trim().length === 0)
|
|
2781
2896
|
return null;
|
|
2897
|
+
const guarded = this.opts.template.slug === "exchange_v1" ? guardExchangeReply({ text: reply, telemetry: buildToolTelemetry(toolCalls) }) : { ok: true, text: reply };
|
|
2898
|
+
if (!guarded.ok) {
|
|
2899
|
+
console.warn(`[exchange-reply-guard] tenant=${input.tenant.tenantId} conversation=${input.conversationId} reason=${guarded.reason ?? "unknown"}`);
|
|
2900
|
+
}
|
|
2782
2901
|
return [
|
|
2783
2902
|
{
|
|
2784
2903
|
channelId: String(input.channel.channelId),
|
|
2785
2904
|
externalUserId: input.inbound.externalUserId,
|
|
2786
|
-
parts: [{ kind: "text", text:
|
|
2905
|
+
parts: [{ kind: "text", text: guarded.text }]
|
|
2787
2906
|
}
|
|
2788
2907
|
];
|
|
2789
2908
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-advance.integration.test.d.ts","sourceRoot":"","sources":["../src/lead-advance.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AnswerTelemetry } from "@chatman-media/kb";
|
|
2
|
+
export declare const EXCHANGE_SAFE_FALLBACK = "\u0421\u0435\u0439\u0447\u0430\u0441 \u0443\u0442\u043E\u0447\u043D\u044E \u0443 \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u0430 \u0438 \u0432\u0435\u0440\u043D\u0443\u0441\u044C \u0441 \u0442\u043E\u0447\u043D\u043E\u0439 \u0441\u0443\u043C\u043C\u043E\u0439/\u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u0430\u043C\u0438.";
|
|
3
|
+
export interface ExchangeReplyGuardInput {
|
|
4
|
+
text: string;
|
|
5
|
+
telemetry?: Pick<AnswerTelemetry, "toolCall" | "toolCalls">;
|
|
6
|
+
}
|
|
7
|
+
export interface ExchangeReplyGuardResult {
|
|
8
|
+
ok: boolean;
|
|
9
|
+
text: string;
|
|
10
|
+
reason?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function guardExchangeReply(input: ExchangeReplyGuardInput): ExchangeReplyGuardResult;
|
|
13
|
+
//# sourceMappingURL=exchange-reply-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exchange-reply-guard.d.ts","sourceRoot":"","sources":["../../src/reply-strategy/exchange-reply-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,eAAO,MAAM,sBAAsB,mVACiC,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,WAAW,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CAuB3F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exchange-reply-guard.test.d.ts","sourceRoot":"","sources":["../../src/reply-strategy/exchange-reply-guard.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-reply.d.ts","sourceRoot":"","sources":["../../src/reply-strategy/llm-reply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"llm-reply.d.ts","sourceRoot":"","sources":["../../src/reply-strategy/llm-reply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EACL,KAAK,UAAU,EAKhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,UAAU,CAAC;IAC9C,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxF;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC;CAC5C;AAkBD,qBAAa,gBAAiB,YAAW,aAAa;IAElD,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBADf,IAAI,EAAE,oBAAoB,EAC1B,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,YAAY;IAGhE,QAAQ,CAAC,KAAK,EAAE;QACpB,MAAM,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7B,OAAO,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/B,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE;YAAE,cAAc,EAAE,MAAM,CAAA;SAAE,CAAC;QACpC,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC;CAyFvC"}
|
|
@@ -134,6 +134,7 @@ export interface RagReplyStrategyOpts {
|
|
|
134
134
|
resolveTools?: (input: {
|
|
135
135
|
tenantId: number;
|
|
136
136
|
conversationId: number;
|
|
137
|
+
contactId?: number;
|
|
137
138
|
}) => Promise<AnyRagTool[]> | AnyRagTool[];
|
|
138
139
|
/**
|
|
139
140
|
* Если true — когда RAG не находит контекста (NO_CONTEXT_MARKER) бот всё
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rag-reply.d.ts","sourceRoot":"","sources":["../../src/reply-strategy/rag-reply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EACV,UAAU,EAEV,eAAe,IAAI,kBAAkB,EACtC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,KAAK,UAAU,EAEf,KAAK,qBAAqB,EAE1B,KAAK,QAAQ,EAGb,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,KAAK,EAEX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"rag-reply.d.ts","sourceRoot":"","sources":["../../src/reply-strategy/rag-reply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rag-reply.test.d.ts","sourceRoot":"","sources":["../../src/reply-strategy/rag-reply.test.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chatman-media/conversation-engine",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"description": "Channel-agnostic pipeline обработки inbound сообщений: contact-resolve → conversation lookup → mode routing → AI-reply / queued / human → outbound. Сердце data plane.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@chatman-media/channel-telegram": "1.1.0",
|
|
39
39
|
"@chatman-media/llm-router": "1.1.1",
|
|
40
40
|
"@chatman-media/kb": "1.5.0",
|
|
41
|
-
"@chatman-media/storage": "1.
|
|
41
|
+
"@chatman-media/storage": "1.10.1",
|
|
42
42
|
"@chatman-media/verticals": "1.2.0"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|