/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/llm/test/recorded-utils.ts
56 строк
2 KB
Kit Langton
Add native LLM core foundation (#24712)
08 май 2026, 23:56
Не верифицирован
08 май 2026, 23:56
5bb7b23
Код
Авторство
О чём код?
export const kebab = (value: string) => value .trim() .replace(/['"]/g, "") .replace(/[^a-zA-Z0-9]+/g, "-") .replace(/^-|-$/g, "") .toLowerCase() export const missingEnv = (names: ReadonlyArray<string>) => names.filter((name) => !process.env[name]) export const envList = (name: string) => (process.env[name] ?? "") .split(",") .map((item) => item.trim().toLowerCase()) .filter((item) => item !== "") export const unique = (items: ReadonlyArray<string>) => Array.from(new Set(items)) export const classifiedTags = (input: { readonly prefix?: string readonly provider?: string readonly protocol?: string readonly tags?: ReadonlyArray<string> }) => unique([ ...(input.prefix ? [`prefix:${input.prefix}`] : []), ...(input.provider ? [`provider:${input.provider}`] : []), ...(input.protocol ? [`protocol:${input.protocol}`] : []), ...(input.tags ?? []), ]) export const matchesSelected = (input: { readonly prefix: string readonly name: string readonly cassette: string readonly tags: ReadonlyArray<string> }) => { const prefixes = envList("RECORDED_PREFIX") const providers = envList("RECORDED_PROVIDER") const requiredTags = envList("RECORDED_TAGS") const tests = envList("RECORDED_TEST") const tags = input.tags.map((tag) => tag.toLowerCase()) const names = [input.name, kebab(input.name), input.cassette].map((item) => item.toLowerCase()) if (prefixes.length > 0 && !prefixes.includes(input.prefix.toLowerCase())) return false if (providers.length > 0 && !providers.some((provider) => tags.includes(`provider:${provider}`))) return false if (requiredTags.length > 0 && !requiredTags.every((tag) => tags.includes(tag))) return false if (tests.length > 0 && !tests.some((test) => names.some((name) => name.includes(test)))) return false return true } export const cassetteName = ( prefix: string, name: string, options: { readonly cassette?: string; readonly id?: string }, ) => options.cassette ?? `${prefix}/${options.id ?? kebab(name)}`