@x12i/ai-tools 2.0.4 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/catalog/index.cjs +6 -6
  2. package/dist/catalog/index.js +5 -5
  3. package/dist/{chunk-ZPUZ7DBO.js → chunk-25O27USJ.js} +2 -2
  4. package/dist/{chunk-DDRWORUU.cjs → chunk-2A6EUGR5.cjs} +19 -19
  5. package/dist/{chunk-DDRWORUU.cjs.map → chunk-2A6EUGR5.cjs.map} +1 -1
  6. package/dist/chunk-2KPWVOOT.cjs +32 -0
  7. package/dist/chunk-2KPWVOOT.cjs.map +1 -0
  8. package/dist/{chunk-PN4FF6YF.js → chunk-4AIEM4AE.js} +3 -3
  9. package/dist/{chunk-RSHI4OOY.cjs → chunk-5XBMNY7Q.cjs} +252 -64
  10. package/dist/chunk-5XBMNY7Q.cjs.map +1 -0
  11. package/dist/chunk-EBBJCLJQ.js +29 -0
  12. package/dist/chunk-EBBJCLJQ.js.map +1 -0
  13. package/dist/{chunk-D6OIUYNC.js → chunk-ET5LPVPT.js} +5 -5
  14. package/dist/chunk-FISSYP27.cjs +29 -0
  15. package/dist/chunk-FISSYP27.cjs.map +1 -0
  16. package/dist/{chunk-76FHWQH3.cjs → chunk-GVFL2LRG.cjs} +9 -3
  17. package/dist/chunk-GVFL2LRG.cjs.map +1 -0
  18. package/dist/{chunk-75ZVXZAV.cjs → chunk-I6CDT2NG.cjs} +7 -7
  19. package/dist/{chunk-75ZVXZAV.cjs.map → chunk-I6CDT2NG.cjs.map} +1 -1
  20. package/dist/{chunk-VBROBIVI.js → chunk-JCMLIXIX.js} +3 -3
  21. package/dist/{chunk-VBROBIVI.js.map → chunk-JCMLIXIX.js.map} +1 -1
  22. package/dist/chunk-LQLSD26Y.cjs +1 -0
  23. package/dist/chunk-LQLSD26Y.cjs.map +1 -0
  24. package/dist/{chunk-X42KFOUO.cjs → chunk-R6P4AWOM.cjs} +6 -6
  25. package/dist/{chunk-X42KFOUO.cjs.map → chunk-R6P4AWOM.cjs.map} +1 -1
  26. package/dist/{chunk-HBNYVRLZ.cjs → chunk-SIR4LDHD.cjs} +16 -16
  27. package/dist/{chunk-HBNYVRLZ.cjs.map → chunk-SIR4LDHD.cjs.map} +1 -1
  28. package/dist/chunk-SQ6NOF4Z.js +32 -0
  29. package/dist/chunk-SQ6NOF4Z.js.map +1 -0
  30. package/dist/{chunk-54GKLIDW.js → chunk-SYHLDADG.js} +233 -45
  31. package/dist/chunk-SYHLDADG.js.map +1 -0
  32. package/dist/{chunk-WSUFQR3D.cjs → chunk-TDO5SDQ3.cjs} +25 -25
  33. package/dist/{chunk-WSUFQR3D.cjs.map → chunk-TDO5SDQ3.cjs.map} +1 -1
  34. package/dist/chunk-TMDWPWKB.cjs +123 -0
  35. package/dist/chunk-TMDWPWKB.cjs.map +1 -0
  36. package/dist/{chunk-MOLWV5LV.js → chunk-VDNKQRDG.js} +2 -2
  37. package/dist/chunk-VYVX46VO.js +123 -0
  38. package/dist/chunk-VYVX46VO.js.map +1 -0
  39. package/dist/{chunk-KSJSLKYI.js → chunk-WFRS32EQ.js} +8 -2
  40. package/dist/chunk-WFRS32EQ.js.map +1 -0
  41. package/dist/{chunk-HEB73GKJ.js → chunk-XMOALOYU.js} +2 -2
  42. package/dist/chunk-XUUPJ7WO.js +1 -0
  43. package/dist/{chunk-TMA6QSNH.cjs → chunk-YO7AJ5Z3.cjs} +3 -3
  44. package/dist/{chunk-TMA6QSNH.cjs.map → chunk-YO7AJ5Z3.cjs.map} +1 -1
  45. package/dist/cli/index.cjs +36 -16
  46. package/dist/cli/index.cjs.map +1 -1
  47. package/dist/cli/index.js +27 -7
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/cost/index.cjs +15 -5
  50. package/dist/cost/index.cjs.map +1 -1
  51. package/dist/cost/index.d.cts +3 -2
  52. package/dist/cost/index.d.ts +3 -2
  53. package/dist/cost/index.js +14 -4
  54. package/dist/index.cjs +21 -11
  55. package/dist/index.cjs.map +1 -1
  56. package/dist/index.d.cts +2 -1
  57. package/dist/index.d.ts +2 -1
  58. package/dist/index.js +21 -11
  59. package/dist/models/index.cjs +9 -7
  60. package/dist/models/index.cjs.map +1 -1
  61. package/dist/models/index.d.cts +2 -0
  62. package/dist/models/index.d.ts +2 -0
  63. package/dist/models/index.js +8 -6
  64. package/dist/{resolveUsageModel-DrFuiuIW.d.ts → resolveModelVendor--2JdUZlR.d.ts} +5 -1
  65. package/dist/{resolveUsageModel-xKZ2QpHy.d.cts → resolveModelVendor-BPPvzxE8.d.cts} +5 -1
  66. package/dist/resolveModelVendor-Dd4N6Vds.d.cts +16 -0
  67. package/dist/resolveModelVendor-oKeiH9ig.d.ts +16 -0
  68. package/dist/sync/index.cjs +10 -5
  69. package/dist/sync/index.cjs.map +1 -1
  70. package/dist/sync/index.d.cts +1 -0
  71. package/dist/sync/index.d.ts +1 -0
  72. package/dist/sync/index.js +11 -6
  73. package/package.json +2 -2
  74. package/dist/chunk-54GKLIDW.js.map +0 -1
  75. package/dist/chunk-56R4XA2S.js +0 -1
  76. package/dist/chunk-5GUKLOEK.cjs +0 -1
  77. package/dist/chunk-5GUKLOEK.cjs.map +0 -1
  78. package/dist/chunk-76FHWQH3.cjs.map +0 -1
  79. package/dist/chunk-BCX5CLJJ.cjs +0 -238
  80. package/dist/chunk-BCX5CLJJ.cjs.map +0 -1
  81. package/dist/chunk-KSJSLKYI.js.map +0 -1
  82. package/dist/chunk-RSHI4OOY.cjs.map +0 -1
  83. package/dist/chunk-SLSKQRMI.js +0 -238
  84. package/dist/chunk-SLSKQRMI.js.map +0 -1
  85. /package/dist/{chunk-ZPUZ7DBO.js.map → chunk-25O27USJ.js.map} +0 -0
  86. /package/dist/{chunk-PN4FF6YF.js.map → chunk-4AIEM4AE.js.map} +0 -0
  87. /package/dist/{chunk-D6OIUYNC.js.map → chunk-ET5LPVPT.js.map} +0 -0
  88. /package/dist/{chunk-MOLWV5LV.js.map → chunk-VDNKQRDG.js.map} +0 -0
  89. /package/dist/{chunk-HEB73GKJ.js.map → chunk-XMOALOYU.js.map} +0 -0
  90. /package/dist/{chunk-56R4XA2S.js.map → chunk-XUUPJ7WO.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/sync/modelNameResolver/constants.ts","../src/sync/modelNameResolver/normalize.ts","../src/sync/openRouterRoutingEnv.ts","../src/sync/modelNameResolver/stripVersionSuffix.ts"],"sourcesContent":["export const DEFAULT_CONFIDENCE_THRESHOLD = 0.6;\n\nexport const PROVIDER_NORMALISATION_MAP: Record<string, string> = {\n \"open-router\": \"openrouter\",\n or: \"openrouter\",\n oai: \"openai\",\n \"open-ai\": \"openai\",\n claude: \"anthropic\",\n ant: \"anthropic\",\n gemini: \"google\",\n gcp: \"google\",\n \"google-ai\": \"google\",\n vertex: \"google\",\n meta: \"meta-llama\",\n llama: \"meta-llama\",\n \"mistral-ai\": \"mistral\",\n \"cohere-ai\": \"cohere\",\n};\n\nexport const LOCAL_PROVIDERS = new Set([\n \"ollama\",\n \"lmstudio\",\n \"lm-studio\",\n \"localai\",\n \"local-ai\",\n \"llamacpp\",\n \"llama.cpp\",\n \"llamafile\",\n \"jan\",\n \"koboldcpp\",\n]);\n\nexport const PROVIDER_INFERENCE_MAP: Array<{\n pattern: RegExp;\n provider: string;\n notes?: string;\n}> = [\n { pattern: /^gpt-/, provider: \"openai\" },\n { pattern: /^o1($|-)/, provider: \"openai\" },\n { pattern: /^o3($|-)/, provider: \"openai\" },\n { pattern: /^o4($|-)/, provider: \"openai\" },\n { pattern: /^chatgpt-/, provider: \"openai\" },\n { pattern: /^text-davinci/, provider: \"openai\" },\n { pattern: /^dall-e/, provider: \"openai\" },\n { pattern: /^whisper/, provider: \"openai\" },\n { pattern: /^tts-/, provider: \"openai\" },\n { pattern: /^claude-/, provider: \"anthropic\" },\n { pattern: /^gemini-/, provider: \"google\" },\n { pattern: /^palm-/, provider: \"google\" },\n { pattern: /^bison/, provider: \"google\" },\n { pattern: /^llama-?[23]/, provider: \"meta-llama\" },\n { pattern: /^llama/, provider: \"meta-llama\" },\n { pattern: /^codellama/, provider: \"meta-llama\" },\n { pattern: /^mistral-/, provider: \"mistral\" },\n { pattern: /^mixtral-/, provider: \"mistral\" },\n { pattern: /^codestral/, provider: \"mistral\" },\n { pattern: /^ministral/, provider: \"mistral\" },\n { pattern: /^command-/, provider: \"cohere\" },\n { pattern: /^c4ai-/, provider: \"cohere\" },\n { pattern: /^deepseek-/, provider: \"deepseek\" },\n { pattern: /^grok-/, provider: \"x-ai\" },\n { pattern: /^qwen/, provider: \"qwen\" },\n { pattern: /^yi-/, provider: \"01-ai\" },\n { pattern: /^sonar/, provider: \"perplexity\" },\n { pattern: /^pplx-/, provider: \"perplexity\" },\n { pattern: /^titan-/, provider: \"amazon\" },\n { pattern: /^nova-/, provider: \"amazon\" },\n];\n\nexport const SHORTHAND_MAP: Record<string, string> = {\n gpt4: \"openai/gpt-4\",\n gpt4o: \"openai/gpt-4o\",\n \"gpt-4-omni\": \"openai/gpt-4o\",\n gpt4omni: \"openai/gpt-4o\",\n \"gpt4-turbo\": \"openai/gpt-4-turbo\",\n gpt4turbo: \"openai/gpt-4-turbo\",\n \"gpt4-mini\": \"openai/gpt-4o-mini\",\n \"gpt-4o-mini\": \"openai/gpt-4o-mini\",\n o1: \"openai/o1\",\n \"o1-mini\": \"openai/o1-mini\",\n o3: \"openai/o3\",\n \"o3-mini\": \"openai/o3-mini\",\n \"o4-mini\": \"openai/o4-mini\",\n \"3.5-turbo\": \"openai/gpt-3.5-turbo\",\n gpt35: \"openai/gpt-3.5-turbo\",\n gpt3: \"openai/gpt-3.5-turbo\",\n claude3: \"anthropic/claude-3-5-sonnet-20241022\",\n \"claude-3\": \"anthropic/claude-3-5-sonnet-20241022\",\n \"claude3-sonnet\": \"anthropic/claude-3-5-sonnet-20241022\",\n \"claude-sonnet\": \"anthropic/claude-3-5-sonnet-20241022\",\n \"claude-haiku\": \"anthropic/claude-3-5-haiku-20241022\",\n \"claude3-haiku\": \"anthropic/claude-3-5-haiku-20241022\",\n \"claude-opus\": \"anthropic/claude-opus-4\",\n \"claude3-opus\": \"anthropic/claude-3-opus-20240229\",\n claude4: \"anthropic/claude-opus-4\",\n \"claude4-sonnet\": \"anthropic/claude-sonnet-4\",\n \"claude4-opus\": \"anthropic/claude-opus-4\",\n sonnet: \"anthropic/claude-3-5-sonnet-20241022\",\n haiku: \"anthropic/claude-3-5-haiku-20241022\",\n opus: \"anthropic/claude-opus-4\",\n gemini: \"google/gemini-pro\",\n \"gemini-pro\": \"google/gemini-pro\",\n \"gemini-flash\": \"google/gemini-flash-1.5\",\n gemini2: \"google/gemini-2.0-flash-001\",\n \"gemini-2\": \"google/gemini-2.0-flash-001\",\n llama3: \"meta-llama/llama-3.1-8b-instruct\",\n \"llama-3\": \"meta-llama/llama-3.1-8b-instruct\",\n llama2: \"meta-llama/llama-2-13b-chat\",\n \"llama-2\": \"meta-llama/llama-2-13b-chat\",\n mistral: \"mistral/mistral-7b-instruct\",\n \"mistral-large\": \"mistral/mistral-large-latest\",\n mixtral: \"mistral/mixtral-8x7b-instruct\",\n deepseek: \"deepseek/deepseek-chat\",\n \"deepseek-r1\": \"deepseek/deepseek-r1\",\n};\n","import { PROVIDER_NORMALISATION_MAP } from \"./constants.js\";\n\nexport function normalizeString(input: string): string {\n let s = input.trim();\n s = s.replace(/\\s+/g, \" \").replace(/ /g, \"-\");\n s = s.toLowerCase();\n s = s.replace(/^\\/+|\\/+$/g, \"\");\n s = s.replace(/\\/+/g, \"/\");\n if (\n (s.startsWith('\"') && s.endsWith('\"')) ||\n (s.startsWith(\"'\") && s.endsWith(\"'\"))\n ) {\n s = s.slice(1, -1);\n }\n return s;\n}\n\nexport function normalizeProvider(provider: string | undefined): string | undefined {\n if (provider === undefined || provider === \"\") return undefined;\n const n = normalizeString(provider);\n return PROVIDER_NORMALISATION_MAP[n] ?? n;\n}\n\nexport function tokenise(s: string): string[] {\n return s.split(/[-_./]+/).filter(Boolean);\n}\n\nexport function modelSlug(modelId: string): string {\n const slash = modelId.indexOf(\"/\");\n return slash >= 0 ? modelId.slice(slash + 1) : modelId;\n}\n","import { loadDotenv } from \"@x12i/env\";\n\n/**\n * Env naming for vendor direct API keys: `{VENDOR}_API_KEY`\n * where VENDOR is the provider id in UPPER_SNAKE (hyphens → underscores).\n *\n * Examples: `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `META_LLAMA_API_KEY`, `X_AI_API_KEY`\n */\nexport function providerIdToEnvKeyPrefix(providerId: string): string {\n return providerId\n .trim()\n .toLowerCase()\n .replace(/-/g, \"_\")\n .toUpperCase();\n}\n\nexport function vendorApiKeyEnvName(providerId: string): string {\n return `${providerIdToEnvKeyPrefix(providerId)}_API_KEY`;\n}\n\nexport type OpenRouterRoutingConfig = {\n /** OPENROUTER_API_KEY is set and non-empty */\n hasOpenRouterKey: boolean;\n /** USE_OPENROUTER=true or USE_OPENROUTER=1 */\n useOpenRouterExplicit: boolean;\n /** Read `{PROVIDER}_API_KEY` for a catalog provider id */\n getVendorApiKey(providerId: string): string | undefined;\n};\n\n/**\n * Load routing hints from process env and optional `.env` (via @x12/env).\n */\nexport function loadOpenRouterRoutingEnv(\n env: Record<string, string | undefined> = process.env,\n): OpenRouterRoutingConfig {\n const dotenv = loadDotenv();\n const merged: Record<string, string> = {};\n for (const [k, v] of Object.entries(dotenv)) {\n if (v !== undefined) merged[k] = v;\n }\n for (const [k, v] of Object.entries(env)) {\n if (v !== undefined) merged[k] = v;\n }\n\n const openRouterKey = merged.OPENROUTER_API_KEY?.trim();\n const useRaw = merged.USE_OPENROUTER?.trim().toLowerCase();\n const useOpenRouterExplicit = useRaw === \"true\" || useRaw === \"1\";\n\n return {\n hasOpenRouterKey: Boolean(openRouterKey),\n useOpenRouterExplicit,\n getVendorApiKey(providerId: string) {\n const name = vendorApiKeyEnvName(providerId);\n const val = merged[name]?.trim();\n return val || undefined;\n },\n };\n}\n\n/**\n * Default route via OpenRouter when:\n * 1. OPENROUTER_API_KEY is set AND USE_OPENROUTER=true|1, or\n * 2. OPENROUTER_API_KEY is set AND the vendor's `{VENDOR}_API_KEY` is missing.\n */\nexport function shouldDefaultRouteViaOpenRouter(\n providerId: string | undefined,\n config: OpenRouterRoutingConfig,\n): boolean {\n if (!config.hasOpenRouterKey) return false;\n if (config.useOpenRouterExplicit) return true;\n if (providerId && providerId !== \"openrouter\") {\n return !config.getVendorApiKey(providerId);\n }\n return false;\n}\n\nexport type EffectiveOpenRouterTransportInput = {\n provider?: string;\n modelId?: string;\n routeViaOpenRouter?: boolean;\n};\n\n/**\n * Whether the effective runtime transport is OpenRouter.\n * Honors explicit gateway override, then env defaults from {@link loadOpenRouterRoutingEnv}.\n */\nexport function isEffectiveOpenRouterTransport(\n config: OpenRouterRoutingConfig,\n input: EffectiveOpenRouterTransportInput = {},\n): boolean {\n if (input.routeViaOpenRouter === true) return true;\n if (input.routeViaOpenRouter === false) return false;\n\n const provider = input.provider?.trim().toLowerCase();\n if (provider === \"openrouter\") return true;\n\n const vendor =\n input.modelId?.includes(\"/\") === true\n ? input.modelId.split(\"/\")[0]!.trim().toLowerCase()\n : provider;\n\n if (vendor && vendor !== \"openrouter\") {\n return shouldDefaultRouteViaOpenRouter(vendor, config);\n }\n\n if (config.hasOpenRouterKey && config.useOpenRouterExplicit) return true;\n return false;\n}\n","import { normalizeString } from \"./normalize.js\";\n\n/** Patterns stripped when resolving versioned runtime model ids to catalog entries. */\nexport const VERSION_STRIP_PATTERNS: ReadonlyArray<{ re: RegExp; label: string }> = [\n { re: /-\\d{4}-\\d{2}-\\d{2}$/, label: \"date YYYY-MM-DD\" },\n { re: /-\\d{8}$/, label: \"date YYYYMMDD\" },\n { re: /-v\\d+$/, label: \"version -vN\" },\n { re: /-\\d+\\.\\d+\\.\\d+$/, label: \"semver\" },\n { re: /:\\d+[a-z]?$/i, label: \"colon version\" },\n { re: /-\\d{4,}$/, label: \"build number\" },\n { re: /@\\d+$/, label: \"epoch @NNNN\" },\n];\n\n/** Strip version/date suffix from a bare slug (no `provider/` prefix). */\nexport function stripModelSlugSuffix(slug: string): string | null {\n for (const { re } of VERSION_STRIP_PATTERNS) {\n if (re.test(slug)) {\n return slug.replace(re, \"\");\n }\n }\n return null;\n}\n\n/**\n * Strip a version/date suffix from a model id (`gpt-5.5-2026-04-23` → `gpt-5.5`,\n * `openai/gpt-4o-2024-08-06` → `openai/gpt-4o`). Returns null when nothing was stripped.\n */\nexport function stripModelVersionSuffix(model: string): string | null {\n const normalized = normalizeString(model);\n if (!normalized) return null;\n\n if (normalized.includes(\"/\")) {\n const slash = normalized.indexOf(\"/\");\n const prefix = normalized.slice(0, slash);\n const slug = normalized.slice(slash + 1);\n const stripped = stripModelSlugSuffix(slug);\n if (stripped && stripped !== slug) {\n return `${prefix}/${stripped}`;\n }\n return null;\n }\n\n const stripped = stripModelSlugSuffix(normalized);\n return stripped && stripped !== normalized ? stripped : null;\n}\n"],"mappings":"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","names":["stripped"]}