openAgent
gitlabThe open source UNIVERSAL agent.
clone
https://gitlab.com/bitzzdev/openAgent.gitAIagentautomationopen-sourceuniversal-agent
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?: stringreadonly provider?: stringreadonly protocol?: stringreadonly 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: stringreadonly name: stringreadonly cassette: stringreadonly 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 falseif (providers.length > 0 && !providers.some((provider) => tags.includes(`provider:${provider}`))) return falseif (requiredTags.length > 0 && !requiredTags.every((tag) => tags.includes(tag))) return falseif (tests.length > 0 && !tests.some((test) => names.some((name) => name.includes(test)))) return falsereturn true}export const cassetteName = (prefix: string,name: string,options: { readonly cassette?: string; readonly id?: string },) => options.cassette ?? `${prefix}/${options.id ?? kebab(name)}`