diff --git a/packages/shared-adapter/src/client.ts b/packages/shared-adapter/src/client.ts index 1015a4350..867191cf2 100644 --- a/packages/shared-adapter/src/client.ts +++ b/packages/shared-adapter/src/client.ts @@ -153,7 +153,10 @@ function createGlobMatcher(pattern: string): (text: string) => boolean { return (text: string) => text.includes(pattern) } - const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$') + const source = pattern + .replace(/[.+?^${}()|[\]\\]/g, '\\$&') + .replace(/\*/g, '.*') + const regex = new RegExp(`(^|[:/_-])${source}($|[:/_-])`) return (text: string) => regex.test(text) } @@ -182,9 +185,10 @@ const imageModelMatchers: ((text: string) => boolean)[] = [ 'gpt-4.1', 'gpt-5', 'glm-*v', - 'kimi-k2.5', + 'kimi-k2.*', 'step3', - 'grok-4' + 'grok-4', + 'ocr' ].map(createGlobMatcher) // mimo-v2.5 supports image/audio; mimo-v2.5-pro does NOT (text only).