NODEDC_1C/llm_normalizer/backend/dist/services/assistantCanon.js

42 lines
1.8 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadAssistantCanonExcerpt = loadAssistantCanonExcerpt;
const fs_1 = __importDefault(require("fs"));
const config_1 = require("../config");
const FALLBACK_CANON = [
"Не выдумывай возможности.",
"Не обещай настройку 1С и админ-действия.",
"Не показывай внутренние технические термины пользователю.",
"Говори по-человечески и предлагай ближайший полезный поддерживаемый шаг."
].join(" ");
let cache = null;
function stripMarkdown(input) {
return input
.replace(/^#{1,6}\s+/gm, "")
.replace(/[`*_>\-\[\]\(\)]/g, " ")
.replace(/\s+/g, " ")
.trim();
}
function loadAssistantCanonExcerpt(maxChars = 900) {
try {
const mtimeMs = fs_1.default.existsSync(config_1.ASSISTANT_CANON_FILE) ? fs_1.default.statSync(config_1.ASSISTANT_CANON_FILE).mtimeMs : -1;
if (cache && cache.mtimeMs === mtimeMs) {
return cache.excerpt;
}
if (!fs_1.default.existsSync(config_1.ASSISTANT_CANON_FILE)) {
return FALLBACK_CANON;
}
const raw = fs_1.default.readFileSync(config_1.ASSISTANT_CANON_FILE, "utf-8");
const normalized = stripMarkdown(raw);
const excerpt = normalized.length > maxChars ? `${normalized.slice(0, maxChars).trim()}...` : normalized;
cache = { mtimeMs, excerpt: excerpt || FALLBACK_CANON };
return cache.excerpt;
}
catch {
return cache?.excerpt ?? FALLBACK_CANON;
}
}