MCPcopy Create free account
hub / github.com/SillyTavern/Extension-WebSearch / extractSearchQuery

Function extractSearchQuery

index.js:359–434  ·  view source on GitHub ↗

* Extracts the search query from the message. * @param {string} message Message to extract the search query from * @returns {string} Search query

(message)

Source from the content-addressed store, hash-verified

357 * @returns {string} Search query
358 */
359function extractSearchQuery(message) {
360 if (message && message.trim().startsWith('.')) {
361 console.debug('WebSearch: message starts with a dot, ignoring');
362 return;
363 }
364
365 message = processInputText(message);
366
367 if (!message) {
368 console.debug('WebSearch: processed message is empty');
369 return;
370 }
371
372 console.log('WebSearch: processed message', message);
373
374 if (extension_settings.websearch.use_backticks) {
375 // Remove triple backtick blocks
376 message = message.replace(/```[^`]+```/gi, '');
377 // Find the first backtick-enclosed substring
378 const match = message.match(/`([^`]+)`/i);
379
380 if (match) {
381 const query = match[1].trim();
382 console.debug('WebSearch: backtick-enclosed substring found', query);
383 return query;
384 }
385 }
386
387 if (extension_settings.websearch.use_regex) {
388 for (const rule of extension_settings.websearch.regex) {
389 const regex = regexFromString(rule.pattern);
390
391 if (regex && regex.test(message)) {
392 const groups = message.match(regex);
393 const query = substituteParamsExtended(rule.query).replace(/\$(\d+)/g, (_, i) => groups[i] || '');
394 console.debug('WebSearch: regex rule matched', rule.pattern, query);
395 return query;
396 }
397 }
398 }
399
400 if (extension_settings.websearch.use_trigger_phrases) {
401 // Find the first index of the trigger phrase in the message
402 let triggerPhraseIndex = -1;
403 let triggerPhraseActual = '';
404 const triggerPhrases = extension_settings.websearch.triggerPhrases;
405
406 for (let i = 0; i < triggerPhrases.length; i++) {
407 const triggerPhrase = triggerPhrases[i].toLowerCase();
408 const indexOf = message.indexOf(triggerPhrase);
409
410 if (indexOf !== -1) {
411 console.debug(`WebSearch: trigger phrase found "${triggerPhrase}" at index ${indexOf}`);
412 triggerPhraseIndex = indexOf;
413 triggerPhraseActual = triggerPhrase;
414 break;
415 }
416 }

Callers 1

onWebSearchPromptFunction · 0.85

Calls 1

processInputTextFunction · 0.85

Tested by

no test coverage detected