chatbot-js / adapters /adapter-registry.js
mr4's picture
Upload 26 files
91111e4 verified
Raw
History Blame Contribute Delete
3.38 kB
// ============================================================
// Adapter Registry — Metadata, display names, và đăng ký adapter
// Phụ thuộc: currentLang, ADAPTER_REGISTRY (từ data-loader.js / globalThis),
// bestMatchAdapter, logicAdapterDispatcher, mathematicalEvaluationAdapter,
// specificResponseAdapter, timeAdapter, unitConversionAdapter
// ============================================================
var ADAPTER_DISPLAY_NAMES = {
specific_response: { vi: 'Phản hồi cụ thể', en: 'Specific Response', ja: '特定応答' },
time_adapter: { vi: 'Thời gian', en: 'Time', ja: '時間' },
mathematical_evaluation: { vi: 'Tính toán', en: 'Math', ja: '数学計算' },
unit_conversion: { vi: 'Chuyển đổi đơn vị', en: 'Unit Conversion', ja: '単位変換' },
best_match: { vi: 'Best Match', en: 'Best Match', ja: 'ベストマッチ' },
logic_adapter: { vi: 'Logic Adapter', en: 'Logic Adapter', ja: 'ロジックアダプター' },
rivescript: { vi: 'RiveScript', en: 'RiveScript', ja: 'RiveScript' },
fallback_api: { vi: 'Fallback API', en: 'Fallback API', ja: 'Fallback API' },
web_search: { vi: 'Tìm kiếm Web', en: 'Web Search', ja: 'ウェブ検索' },
llm_adapter: { vi: 'LLM (WebGPU)', en: 'LLM (WebGPU)', ja: 'LLM(WebGPU)' }
};
function getAdapterDisplayName(adapterKey) {
var lang = currentLang || 'vi';
var names = ADAPTER_DISPLAY_NAMES[adapterKey];
if (!names) return adapterKey;
return names[lang] || names['vi'] || adapterKey;
}
function registerAdapters(bot, lang) {
var ADAPTER_FUNCTIONS = {
best_match: bestMatchAdapter,
logic_adapter: logicAdapterDispatcher,
mathematical_evaluation: mathematicalEvaluationAdapter,
specific_response: specificResponseAdapter,
time_adapter: timeAdapter,
unit_conversion: unitConversionAdapter,
web_search: webSearchAdapter,
llm_adapter: llmAdapter
};
var adapterNames = Object.keys(ADAPTER_REGISTRY);
for (var i = 0; i < adapterNames.length; i++) {
var name = adapterNames[i];
var entry = ADAPTER_REGISTRY[name];
var fn = ADAPTER_FUNCTIONS[name];
if (typeof fn === 'function') {
// Luôn đăng ký adapter, nhưng wrapper kiểm tra active flag
(function (adapterKey, adapterFn) {
bot.setSubroutine(adapterKey, function (rs, args) {
// Kiểm tra active flag trước khi gọi adapter
if (ADAPTER_REGISTRY[adapterKey] && ADAPTER_REGISTRY[adapterKey].active === false) {
// Adapter bị disabled, trả về thông báo
if (lang === 'en') return 'This adapter is currently disabled.';
if (lang === 'ja') return 'このアダプターは現在無効です。';
return 'Adapter này hiện đang bị vô hiệu hóa.';
}
return adapterFn(rs, args);
});
})(name, fn);
}
}
}
// Node/test: export to globalThis
if (typeof module !== 'undefined' && module.exports) {
globalThis.ADAPTER_DISPLAY_NAMES = ADAPTER_DISPLAY_NAMES;
globalThis.getAdapterDisplayName = getAdapterDisplayName;
globalThis.registerAdapters = registerAdapters;
}