+
+
+
+
diff --git a/app/utils/model-mapping.ts b/app/utils/model-mapping.ts
index 436361f..c3c4de2 100644
--- a/app/utils/model-mapping.ts
+++ b/app/utils/model-mapping.ts
@@ -54,6 +54,9 @@ import {
LogoClosedRouter,
LogoPoolside,
LogoTencent,
+ LogoThinkingMachines,
+ LogoDotsStudio,
+ LogoNexAgi,
LogoHuggingFace,
} from '#components';
import { markRaw } from 'vue';
@@ -65,6 +68,18 @@ interface ModelConfig {
}
const MODEL_MAPPINGS: ModelConfig[] = [
+ {
+ Icon: markRaw(LogoNexAgi),
+ keywords: [/nex-agi\//, /\/nex-/],
+ },
+ {
+ Icon: markRaw(LogoDotsStudio),
+ keywords: [/dots-studio/, /^dots/, /\/dots/],
+ },
+ {
+ Icon: markRaw(LogoThinkingMachines),
+ keywords: [/^thinkingmachines\//, /\/linkling/],
+ },
{ Icon: markRaw(LogoOpenAI), keywords: [/gpt-3/], props: { type: 'gpt3' } },
{ Icon: markRaw(LogoOpenAI), keywords: [/gpt-4/], props: { type: 'gpt4' } },
{ Icon: markRaw(LogoOpenAI), keywords: [/gpt-5/], props: { type: 'gpt5' } },
@@ -99,7 +114,7 @@ const MODEL_MAPPINGS: ModelConfig[] = [
},
{
Icon: markRaw(LogoGrok),
- keywords: [/^grok-/, /^x-ai\//],
+ keywords: [/^grok-/, /^x-ai\//, /^~x-ai\/grok-latest$/],
},
{
Icon: markRaw(LogoGemini),
@@ -164,7 +179,7 @@ const MODEL_MAPPINGS: ModelConfig[] = [
},
{
Icon: markRaw(LogoZAI),
- keywords: [/zai-/, /(^|\/|-)?glm-?\d/]
+ keywords: [/zai-/, /(^|\/|-)?glm-?\d/, /^~z-ai\/glm-(flash-)?latest$/]
},
{
Icon: markRaw(LogoGLMV),
@@ -196,7 +211,7 @@ const MODEL_MAPPINGS: ModelConfig[] = [
},
{
Icon: markRaw(LogoMeta),
- keywords: [/llama/, /\/l3/, /meta-llama\//]
+ keywords: [/llama/, /\/l3/, /meta-llama\//, /(^|\/)muse-spark($|-)/, /^meta\//]
},
{
Icon: markRaw(LogoPerplexity),
diff --git a/server/api/topic/[topicId]/chat/index.post.ts b/server/api/topic/[topicId]/chat/index.post.ts
index 49dd853..60a88a7 100644
--- a/server/api/topic/[topicId]/chat/index.post.ts
+++ b/server/api/topic/[topicId]/chat/index.post.ts
@@ -431,13 +431,16 @@ type SearchTheWebConfig = SearchTheWebRerankedConfig | SearchTheWebUnrankedConfi
export const searchTheWeb = (config: SearchTheWebConfig) => {
return async (query: string) => {
+ const searchUrl = new URL(process.env.SEARCH_API_URL ?? process.env.SEARXNG_URL ?? "");
+ searchUrl.pathname = `${searchUrl.pathname.replace(/\/+$/, "")}/search`;
+
const results = await $fetch<{
results: Array<{
title: string;
url: string;
content: string;
}>;
- }>(`${process.env.SEARXNG_URL}/search`, {
+ }>(searchUrl.toString(), {
query: {
q: query,
format: 'json',