From fa47c77eea71f67da4da790b21529c2881a50afb Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Sat, 8 Nov 2025 14:44:49 -0600 Subject: [PATCH 01/15] chore: upgrade to ai sdk 5 to resolve security vulns Signed-off-by: The-Best-Codes --- packages/cli/package.json | 14 +- packages/cli/src/cli/localizer/explicit.ts | 6 +- packages/cli/src/cli/processor/basic.ts | 4 +- packages/cli/src/cli/processor/index.ts | 2 +- packages/compiler/package.json | 18 +- packages/compiler/src/lib/lcp/api/index.ts | 2 +- pnpm-lock.yaml | 354 +++++++-------------- 7 files changed, 143 insertions(+), 257 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 5905124f2..f73a13d51 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -122,10 +122,10 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/anthropic": "^1.2.11", - "@ai-sdk/google": "^1.2.19", - "@ai-sdk/mistral": "^1.2.8", - "@ai-sdk/openai": "^1.3.22", + "@ai-sdk/anthropic": "^2.0.42", + "@ai-sdk/google": "^2.0.29", + "@ai-sdk/mistral": "^2.0.23", + "@ai-sdk/openai": "^2.0.64", "@babel/generator": "^7.27.1", "@babel/parser": "^7.27.1", "@babel/traverse": "^7.27.4", @@ -143,10 +143,10 @@ "@lingo.dev/_spec": "workspace:*", "@markdoc/markdoc": "^0.5.4", "@modelcontextprotocol/sdk": "^1.5.0", - "@openrouter/ai-sdk-provider": "^0.7.1", + "@openrouter/ai-sdk-provider": "^1.2.1", "@paralleldrive/cuid2": "^2.2.2", "@types/ejs": "^3.1.5", - "ai": "^4.3.15", + "ai": "^5.0.89", "bitbucket": "^2.12.0", "chalk": "^5.4.1", "chokidar": "^4.0.3", @@ -189,7 +189,7 @@ "node-webvtt": "^1.9.4", "object-hash": "^3.0.0", "octokit": "^4.0.2", - "ollama-ai-provider": "^1.2.0", + "ollama-ai-provider-v2": "^1.5.3", "open": "^10.2.0", "ora": "^8.1.1", "p-limit": "^6.2.0", diff --git a/packages/cli/src/cli/localizer/explicit.ts b/packages/cli/src/cli/localizer/explicit.ts index c055f56e3..6fa6a98b3 100644 --- a/packages/cli/src/cli/localizer/explicit.ts +++ b/packages/cli/src/cli/localizer/explicit.ts @@ -7,10 +7,10 @@ import { I18nConfig } from "@lingo.dev/_spec"; import chalk from "chalk"; import dedent from "dedent"; import { ILocalizer, LocalizerData } from "./_types"; -import { LanguageModel, Message, generateText } from "ai"; +import { LanguageModel, ModelMessage, generateText } from "ai"; import { colors } from "../constants"; import { jsonrepair } from "jsonrepair"; -import { createOllama } from "ollama-ai-provider"; +import { createOllama } from "ollama-ai-provider-v2"; export default function createExplicitLocalizer( provider: NonNullable, @@ -207,7 +207,7 @@ function createAiSdkLocalizer(params: { [ { role: "user", content: JSON.stringify(userShot) }, { role: "assistant", content: JSON.stringify(assistantShot) }, - ] as Message[], + ] as ModelMessage[], ), { role: "user", content: JSON.stringify(payload) }, ], diff --git a/packages/cli/src/cli/processor/basic.ts b/packages/cli/src/cli/processor/basic.ts index c51f5c003..ed962adf6 100644 --- a/packages/cli/src/cli/processor/basic.ts +++ b/packages/cli/src/cli/processor/basic.ts @@ -1,4 +1,4 @@ -import { generateText, LanguageModelV1 } from "ai"; +import { generateText, LanguageModel } from "ai"; import { LocalizerInput, LocalizerProgressFn } from "./_base"; import _ from "lodash"; @@ -7,7 +7,7 @@ type ModelSettings = { }; export function createBasicTranslator( - model: LanguageModelV1, + model: LanguageModel, systemPrompt: string, settings: ModelSettings = {}, ) { diff --git a/packages/cli/src/cli/processor/index.ts b/packages/cli/src/cli/processor/index.ts index 3f898d04a..1a92fe2f0 100644 --- a/packages/cli/src/cli/processor/index.ts +++ b/packages/cli/src/cli/processor/index.ts @@ -10,7 +10,7 @@ import { createAnthropic } from "@ai-sdk/anthropic"; import { createGoogleGenerativeAI } from "@ai-sdk/google"; import { createOpenRouter } from "@openrouter/ai-sdk-provider"; import { createMistral } from "@ai-sdk/mistral"; -import { createOllama } from "ollama-ai-provider"; +import { createOllama } from "ollama-ai-provider-v2"; export default function createProcessor( provider: I18nConfig["provider"], diff --git a/packages/compiler/package.json b/packages/compiler/package.json index 933b08a5b..8c45b1fd2 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -38,30 +38,30 @@ "vitest": "^2.1.4" }, "dependencies": { - "@ai-sdk/google": "^1.2.19", - "@ai-sdk/groq": "^1.2.3", - "@ai-sdk/mistral": "^1.2.8", + "@ai-sdk/google": "^2.0.29", + "@ai-sdk/groq": "^2.0.28", + "@ai-sdk/mistral": "^2.0.23", "@babel/generator": "^7.26.5", "@babel/parser": "^7.26.7", "@babel/traverse": "^7.27.4", "@babel/types": "^7.26.7", "@lingo.dev/_sdk": "workspace:*", "@lingo.dev/_spec": "workspace:*", - "@openrouter/ai-sdk-provider": "^0.7.1", + "@openrouter/ai-sdk-provider": "^1.2.1", "@prettier/sync": "^0.6.1", - "ai": "^4.2.10", + "ai": "^5.0.89", "dedent": "^1.6.0", "dotenv": "^16.4.5", "fast-xml-parser": "^5.0.8", "ini": "^5.0.0", "lodash": "^4.17.21", + "node-machine-id": "^1.1.12", "object-hash": "^3.0.0", - "ollama-ai-provider": "^1.2.0", + "ollama-ai-provider-v2": "^1.5.3", + "posthog-node": "^5.5.1", "prettier": "^3.4.2", "unplugin": "^2.1.2", - "zod": "^3.25.76", - "posthog-node": "^5.5.1", - "node-machine-id": "^1.1.12" + "zod": "^3.25.76" }, "packageManager": "pnpm@9.12.3" } diff --git a/packages/compiler/src/lib/lcp/api/index.ts b/packages/compiler/src/lib/lcp/api/index.ts index f59ee981a..b72841968 100644 --- a/packages/compiler/src/lib/lcp/api/index.ts +++ b/packages/compiler/src/lib/lcp/api/index.ts @@ -1,7 +1,7 @@ import { createGroq } from "@ai-sdk/groq"; import { createGoogleGenerativeAI } from "@ai-sdk/google"; import { createOpenRouter } from "@openrouter/ai-sdk-provider"; -import { createOllama } from "ollama-ai-provider"; +import { createOllama } from "ollama-ai-provider-v2"; import { createMistral } from "@ai-sdk/mistral"; import { generateText } from "ai"; import { LingoDotDevEngine } from "@lingo.dev/_sdk"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f8298f9e..f1791a756 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -342,17 +342,17 @@ importers: packages/cli: dependencies: '@ai-sdk/anthropic': - specifier: ^1.2.11 - version: 1.2.11(zod@3.25.76) + specifier: ^2.0.42 + version: 2.0.42(zod@3.25.76) '@ai-sdk/google': - specifier: ^1.2.19 - version: 1.2.19(zod@3.25.76) + specifier: ^2.0.29 + version: 2.0.29(zod@3.25.76) '@ai-sdk/mistral': - specifier: ^1.2.8 - version: 1.2.8(zod@3.25.76) + specifier: ^2.0.23 + version: 2.0.23(zod@3.25.76) '@ai-sdk/openai': - specifier: ^1.3.22 - version: 1.3.22(zod@3.25.76) + specifier: ^2.0.64 + version: 2.0.64(zod@3.25.76) '@babel/generator': specifier: ^7.27.1 version: 7.27.1 @@ -405,8 +405,8 @@ importers: specifier: ^1.5.0 version: 1.5.0 '@openrouter/ai-sdk-provider': - specifier: ^0.7.1 - version: 0.7.1(ai@4.3.15(react@18.3.1)(zod@3.25.76))(zod@3.25.76) + specifier: ^1.2.1 + version: 1.2.1(ai@5.0.89(zod@3.25.76))(zod@3.25.76) '@paralleldrive/cuid2': specifier: ^2.2.2 version: 2.2.2 @@ -414,8 +414,8 @@ importers: specifier: ^3.1.5 version: 3.1.5 ai: - specifier: ^4.3.15 - version: 4.3.15(react@18.3.1)(zod@3.25.76) + specifier: ^5.0.89 + version: 5.0.89(zod@3.25.76) bitbucket: specifier: ^2.12.0 version: 2.12.0(encoding@0.1.13) @@ -542,9 +542,9 @@ importers: octokit: specifier: ^4.0.2 version: 4.1.2 - ollama-ai-provider: - specifier: ^1.2.0 - version: 1.2.0(zod@3.25.76) + ollama-ai-provider-v2: + specifier: ^1.5.3 + version: 1.5.3(zod@3.25.76) open: specifier: ^10.2.0 version: 10.2.0 @@ -700,14 +700,14 @@ importers: packages/compiler: dependencies: '@ai-sdk/google': - specifier: ^1.2.19 - version: 1.2.19(zod@3.25.76) + specifier: ^2.0.29 + version: 2.0.29(zod@3.25.76) '@ai-sdk/groq': - specifier: ^1.2.3 - version: 1.2.9(zod@3.25.76) + specifier: ^2.0.28 + version: 2.0.28(zod@3.25.76) '@ai-sdk/mistral': - specifier: ^1.2.8 - version: 1.2.8(zod@3.25.76) + specifier: ^2.0.23 + version: 2.0.23(zod@3.25.76) '@babel/generator': specifier: ^7.26.5 version: 7.27.1 @@ -727,14 +727,14 @@ importers: specifier: workspace:* version: link:../spec '@openrouter/ai-sdk-provider': - specifier: ^0.7.1 - version: 0.7.1(ai@4.3.15(react@19.1.0)(zod@3.25.76))(zod@3.25.76) + specifier: ^1.2.1 + version: 1.2.1(ai@5.0.89(zod@3.25.76))(zod@3.25.76) '@prettier/sync': specifier: ^0.6.1 version: 0.6.1(prettier@3.4.2) ai: - specifier: ^4.2.10 - version: 4.3.15(react@19.1.0)(zod@3.25.76) + specifier: ^5.0.89 + version: 5.0.89(zod@3.25.76) dedent: specifier: ^1.6.0 version: 1.6.0 @@ -756,9 +756,9 @@ importers: object-hash: specifier: ^3.0.0 version: 3.0.0 - ollama-ai-provider: - specifier: ^1.2.0 - version: 1.2.0(zod@3.25.76) + ollama-ai-provider-v2: + specifier: ^1.5.3 + version: 1.5.3(zod@3.25.76) posthog-node: specifier: ^5.5.1 version: 5.5.1 @@ -1216,61 +1216,51 @@ packages: edge.js: optional: true - '@ai-sdk/anthropic@1.2.11': - resolution: {integrity: sha512-lZLcEMh8MXY4NVSrN/7DyI2rnid8k7cn/30nMmd3bwJrnIsOuIuuFvY8f0nj+pFcTi6AYK7ujLdqW5dQVz1YQw==} + '@ai-sdk/anthropic@2.0.42': + resolution: {integrity: sha512-5BcXMx6VTYPeA4csd1SvJgpCn5Nu9qHqsNqOr1e/R7UHq83Vv4j4OcgbFwdWgaW/wihNla5B+y4OGqTFIw216w==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/google@1.2.19': - resolution: {integrity: sha512-Xgl6eftIRQ4srUdCzxM112JuewVMij5q4JLcNmHcB68Bxn9dpr3MVUSPlJwmameuiQuISIA8lMB+iRiRbFsaqA==} + '@ai-sdk/gateway@2.0.7': + resolution: {integrity: sha512-/AI5AKi4vOK9SEb8Z1dfXkhsJ5NAfWsoJQc96B/mzn2KIrjw5occOjIwD06scuhV9xWlghCoXJT1sQD9QH/tyg==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/groq@1.2.9': - resolution: {integrity: sha512-7MoDaxm8yWtiRbD1LipYZG0kBl+Xe0sv/EeyxnHnGPZappXdlgtdOgTZVjjXkT3nWP30jjZi9A45zoVrBMb3Xg==} + '@ai-sdk/google@2.0.29': + resolution: {integrity: sha512-wH8eEN5mUPOpbENsCkO3dBumWZ2FUbkh3iWj1ypYIVQNuJFvNxqHuWTb5t8C/F+5FoPM14McmeI/ceQ9qZ4lyw==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/mistral@1.2.8': - resolution: {integrity: sha512-lv857D9UJqCVxiq2Fcu7mSPTypEHBUqLl1K+lCaP6X/7QAkcaxI36QDONG+tOhGHJOXTsS114u8lrUTaEiGXbg==} + '@ai-sdk/groq@2.0.28': + resolution: {integrity: sha512-910ACt1kUA6+en9hjfhQFo+/yaUDe3xaAf7+l2N6jrfUNNciHe5DoW0GAJwGMnYK2li9CVcWNNXsmQ6TCzPnDA==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai@1.3.22': - resolution: {integrity: sha512-QwA+2EkG0QyjVR+7h6FE7iOu2ivNqAVMm9UJZkVxxTk5OIq5fFJDTEI/zICEMuHImTTXR2JjsL6EirJ28Jc4cw==} + '@ai-sdk/mistral@2.0.23': + resolution: {integrity: sha512-np2bTlL5ZDi7iAOPCF5SZ5xKqls059iOvsigbgd9VNUCIrWSf6GYOaPvoWEgJ650TUOZitTfMo9MiEhLgutPfA==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@2.2.8': - resolution: {integrity: sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==} + '@ai-sdk/openai@2.0.64': + resolution: {integrity: sha512-+1mqxn42uB32DPZ6kurSyGAmL3MgCaDpkYU7zNDWI4NLy3Zg97RxTsI1jBCGIqkEVvRZKJlIMYtb89OvMnq3AQ==} engines: {node: '>=18'} peerDependencies: - zod: ^3.23.8 + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider@1.1.3': - resolution: {integrity: sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==} - engines: {node: '>=18'} - - '@ai-sdk/react@1.2.12': - resolution: {integrity: sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==} + '@ai-sdk/provider-utils@3.0.16': + resolution: {integrity: sha512-lsWQY9aDXHitw7C1QRYIbVGmgwyT98TF3MfM8alNIXKpdJdi+W782Rzd9f1RyOfgRmZ08gJ2EYNDhWNK7RqpEA==} engines: {node: '>=18'} peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc - zod: ^3.23.8 - peerDependenciesMeta: - zod: - optional: true + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/ui-utils@1.2.11': - resolution: {integrity: sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==} + '@ai-sdk/provider@2.0.0': + resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} engines: {node: '>=18'} - peerDependencies: - zod: ^3.23.8 '@alcalzone/ansi-tokenize@0.1.3': resolution: {integrity: sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==} @@ -3356,12 +3346,12 @@ packages: resolution: {integrity: sha512-f386XyLTieQbgKPKS6ZMlH4dq8eLsxNddwofiKRZCq0bZ2gikoFwMD99K6l1oAwqe/KZNzrEziGicRgnzplplQ==} engines: {node: '>= 18'} - '@openrouter/ai-sdk-provider@0.7.1': - resolution: {integrity: sha512-jppCJErJ13KKnr0rOJrElmrlGul+0G5OO45Tqn1II2uIVcJLjyuzyS1hkCWD3fmlKVAuwVbyumTh6JQsS4e+4g==} + '@openrouter/ai-sdk-provider@1.2.1': + resolution: {integrity: sha512-sDc+/tlEM9VTsYlZ3YMwD9AHinSNusdLFGQhtb50eo5r68U/yBixEHRsKEevqSspiX3V6J06hU7C25t4KE9iag==} engines: {node: '>=18'} peerDependencies: - ai: ^4.3.16 - zod: ^3.25.34 + ai: ^5.0.0 + zod: ^3.24.1 || ^v4 '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} @@ -3850,6 +3840,9 @@ packages: '@speed-highlight/core@1.2.7': resolution: {integrity: sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==} + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@stylistic/eslint-plugin@5.3.1': resolution: {integrity: sha512-Ykums1VYonM0TgkD0VteVq9mrlO2FhF48MDJnPyv3MktIB2ydtuhlO0AfWm7xnW1kyf5bjOqA6xc7JjviuVTxg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4210,9 +4203,6 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/diff-match-patch@1.0.36': - resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} - '@types/diff@7.0.0': resolution: {integrity: sha512-sVpkpbnTJL9CYoDf4U+tHaQLe5HiTaHWY7m9FuYA7oMCHwC9ie0Vh9eIGapyzYrU3+pILlSY2fAc4elfw5m4dg==} @@ -4586,6 +4576,10 @@ packages: peerDependencies: vite: ^2.8.1 || 3 || 4 || 5 || 6 + '@vercel/oidc@3.0.3': + resolution: {integrity: sha512-yNEQvPcVrK9sIe637+I0jD6leluPxzwJKx/Haw6F4H77CdDsszUn5V3o96LPziXkSNE2B83+Z3mjqGKBK/R6Gg==} + engines: {node: '>= 20'} + '@vinejs/compiler@3.0.0': resolution: {integrity: sha512-v9Lsv59nR56+bmy2p0+czjZxsLHwaibJ+SV5iK9JJfehlJMa501jUJQqqz4X/OqKXrxtE3uTQmSqjUqzF3B2mw==} engines: {node: '>=18.0.0'} @@ -4800,15 +4794,11 @@ packages: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} - ai@4.3.15: - resolution: {integrity: sha512-TYKRzbWg6mx/pmTadlAEIhuQtzfHUV0BbLY72+zkovXwq/9xhcH24IlQmkyBpElK6/4ArS0dHdOOtR1jOPVwtg==} + ai@5.0.89: + resolution: {integrity: sha512-8Nq+ZojGacQrupoJEQLrTDzT5VtR3gyp5AaqFSV3tzsAXlYQ9Igb7QE3yeoEdzOk5IRfDwWL7mDCUD+oBg1hDA==} engines: {node: '>=18'} peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc - zod: ^3.23.8 - peerDependenciesMeta: - react: - optional: true + zod: ^3.25.76 || ^4.1.8 ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -5803,9 +5793,6 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff-match-patch@1.0.5: - resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} - diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -6254,6 +6241,10 @@ packages: resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==} engines: {node: '>=18.0.0'} + eventsource-parser@3.0.6: + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} + engines: {node: '>=18.0.0'} + eventsource@3.0.5: resolution: {integrity: sha512-LT/5J605bx5SNyE+ITBDiM3FxffBiq9un7Vx0EwMDM3vg8sWKx/tO2zC+LMqZ+smAM0F2hblaDZUVZF0te2pSw==} engines: {node: '>=18.0.0'} @@ -7259,11 +7250,6 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - jsondiffpatch@0.6.0: - resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -8121,14 +8107,11 @@ packages: resolution: {integrity: sha512-0kcTxJOK3yQrJsRb8wKa28hlTze4QOz4sLuUnfXXnhboDhFKgv8LxS86tFwbsafDW9JZ08ByuVAE8kQbYJIZkA==} engines: {node: '>= 18'} - ollama-ai-provider@1.2.0: - resolution: {integrity: sha512-jTNFruwe3O/ruJeppI/quoOUxG7NA6blG3ZyQj3lei4+NnJo7bi3eIRWqlVpRlu/mbzbFXeJSBuYQWF6pzGKww==} + ollama-ai-provider-v2@1.5.3: + resolution: {integrity: sha512-LnpvKuxNJyE+cB03cfUjFJnaiBJoUqz3X97GFc71gz09gOdrxNh1AsVBxrpw3uX5aiMxRIWPOZ8god0dHSChsg==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true + zod: ^4.0.16 on-exit-leak-free@2.1.2: resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} @@ -8311,9 +8294,6 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} - partial-json@0.1.7: - resolution: {integrity: sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==} - patch-console@2.0.0: resolution: {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -9303,9 +9283,6 @@ packages: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} - secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - secure-json-parse@4.0.0: resolution: {integrity: sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==} @@ -9705,11 +9682,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - swr@2.3.3: - resolution: {integrity: sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==} - peerDependencies: - react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -9763,10 +9735,6 @@ packages: thread-stream@3.1.0: resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} - throttleit@2.1.0: - resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} - engines: {node: '>=18'} - through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -10202,11 +10170,6 @@ packages: url-template@2.0.8: resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} - use-sync-external-store@1.5.0: - resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -11064,73 +11027,53 @@ snapshots: '@adonisjs/shield': 8.2.0(@adonisjs/core@6.19.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@3.0.1)(edge.js@6.3.0))(@adonisjs/session@7.5.1(@adonisjs/core@6.19.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@3.0.1)(edge.js@6.3.0))(edge.js@6.3.0))(edge.js@6.3.0) edge.js: 6.3.0 - '@ai-sdk/anthropic@1.2.11(zod@3.25.76)': + '@ai-sdk/anthropic@2.0.42(zod@3.25.76)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) zod: 3.25.76 - '@ai-sdk/google@1.2.19(zod@3.25.76)': + '@ai-sdk/gateway@2.0.7(zod@3.25.76)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) + '@vercel/oidc': 3.0.3 zod: 3.25.76 - '@ai-sdk/groq@1.2.9(zod@3.25.76)': + '@ai-sdk/google@2.0.29(zod@3.25.76)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) zod: 3.25.76 - '@ai-sdk/mistral@1.2.8(zod@3.25.76)': + '@ai-sdk/groq@2.0.28(zod@3.25.76)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) zod: 3.25.76 - '@ai-sdk/openai@1.3.22(zod@3.25.76)': + '@ai-sdk/mistral@2.0.23(zod@3.25.76)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) - zod: 3.25.76 - - '@ai-sdk/provider-utils@2.2.8(zod@3.25.76)': - dependencies: - '@ai-sdk/provider': 1.1.3 - nanoid: 3.3.11 - secure-json-parse: 2.7.0 + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) zod: 3.25.76 - '@ai-sdk/provider@1.1.3': + '@ai-sdk/openai@2.0.64(zod@3.25.76)': dependencies: - json-schema: 0.4.0 - - '@ai-sdk/react@1.2.12(react@18.3.1)(zod@3.25.76)': - dependencies: - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) - '@ai-sdk/ui-utils': 1.2.11(zod@3.25.76) - react: 18.3.1 - swr: 2.3.3(react@18.3.1) - throttleit: 2.1.0 - optionalDependencies: + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) zod: 3.25.76 - '@ai-sdk/react@1.2.12(react@19.1.0)(zod@3.25.76)': + '@ai-sdk/provider-utils@3.0.16(zod@3.25.76)': dependencies: - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) - '@ai-sdk/ui-utils': 1.2.11(zod@3.25.76) - react: 19.1.0 - swr: 2.3.3(react@19.1.0) - throttleit: 2.1.0 - optionalDependencies: + '@ai-sdk/provider': 2.0.0 + '@standard-schema/spec': 1.0.0 + eventsource-parser: 3.0.6 zod: 3.25.76 - '@ai-sdk/ui-utils@1.2.11(zod@3.25.76)': + '@ai-sdk/provider@2.0.0': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) - zod: 3.25.76 - zod-to-json-schema: 3.24.5(zod@3.25.76) + json-schema: 0.4.0 '@alcalzone/ansi-tokenize@0.1.3': dependencies: @@ -13344,18 +13287,9 @@ snapshots: '@octokit/request-error': 6.1.7 '@octokit/webhooks-methods': 5.1.1 - '@openrouter/ai-sdk-provider@0.7.1(ai@4.3.15(react@18.3.1)(zod@3.25.76))(zod@3.25.76)': + '@openrouter/ai-sdk-provider@1.2.1(ai@5.0.89(zod@3.25.76))(zod@3.25.76)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) - ai: 4.3.15(react@18.3.1)(zod@3.25.76) - zod: 3.25.76 - - '@openrouter/ai-sdk-provider@0.7.1(ai@4.3.15(react@19.1.0)(zod@3.25.76))(zod@3.25.76)': - dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) - ai: 4.3.15(react@19.1.0)(zod@3.25.76) + ai: 5.0.89(zod@3.25.76) zod: 3.25.76 '@opentelemetry/api@1.9.0': {} @@ -13860,6 +13794,8 @@ snapshots: '@speed-highlight/core@1.2.7': {} + '@standard-schema/spec@1.0.0': {} + '@stylistic/eslint-plugin@5.3.1(eslint@9.35.0(jiti@2.5.1))': dependencies: '@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0(jiti@2.5.1)) @@ -14189,8 +14125,6 @@ snapshots: '@types/deep-eql@4.0.2': {} - '@types/diff-match-patch@1.0.36': {} - '@types/diff@7.0.0': {} '@types/ejs@3.1.5': {} @@ -14592,6 +14526,8 @@ snapshots: picocolors: 1.1.1 vite: 6.3.5(@types/node@22.17.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0) + '@vercel/oidc@3.0.3': {} + '@vinejs/compiler@3.0.0': {} '@vinejs/vine@3.0.1': @@ -14927,29 +14863,13 @@ snapshots: transitivePeerDependencies: - supports-color - ai@4.3.15(react@18.3.1)(zod@3.25.76): + ai@5.0.89(zod@3.25.76): dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) - '@ai-sdk/react': 1.2.12(react@18.3.1)(zod@3.25.76) - '@ai-sdk/ui-utils': 1.2.11(zod@3.25.76) + '@ai-sdk/gateway': 2.0.7(zod@3.25.76) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) '@opentelemetry/api': 1.9.0 - jsondiffpatch: 0.6.0 zod: 3.25.76 - optionalDependencies: - react: 18.3.1 - - ai@4.3.15(react@19.1.0)(zod@3.25.76): - dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) - '@ai-sdk/react': 1.2.12(react@19.1.0)(zod@3.25.76) - '@ai-sdk/ui-utils': 1.2.11(zod@3.25.76) - '@opentelemetry/api': 1.9.0 - jsondiffpatch: 0.6.0 - zod: 3.25.76 - optionalDependencies: - react: 19.1.0 ajv@6.12.6: dependencies: @@ -15982,8 +15902,6 @@ snapshots: dependencies: dequal: 2.0.3 - diff-match-patch@1.0.5: {} - diff@4.0.2: {} diff@7.0.0: {} @@ -16401,8 +16319,8 @@ snapshots: '@typescript-eslint/parser': 8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3) eslint: 9.35.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.35.0(jiti@2.5.1)) eslint-plugin-react: 7.37.5(eslint@9.35.0(jiti@2.5.1)) eslint-plugin-react-hooks: 5.2.0(eslint@9.35.0(jiti@2.5.1)) @@ -16425,7 +16343,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1 @@ -16436,22 +16354,22 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3) eslint: 9.35.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -16462,7 +16380,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.35.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -16667,6 +16585,8 @@ snapshots: eventsource-parser@3.0.0: {} + eventsource-parser@3.0.6: {} + eventsource@3.0.5: dependencies: eventsource-parser: 3.0.0 @@ -17791,12 +17711,6 @@ snapshots: jsonc-parser@3.3.1: {} - jsondiffpatch@0.6.0: - dependencies: - '@types/diff-match-patch': 1.0.36 - chalk: 5.4.1 - diff-match-patch: 1.0.5 - jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -18916,12 +18830,10 @@ snapshots: '@octokit/request-error': 6.1.7 '@octokit/types': 13.8.0 - ollama-ai-provider@1.2.0(zod@3.25.76): + ollama-ai-provider-v2@1.5.3(zod@3.25.76): dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) - partial-json: 0.1.7 - optionalDependencies: + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) zod: 3.25.76 on-exit-leak-free@2.1.2: {} @@ -19125,8 +19037,6 @@ snapshots: parseurl@1.3.3: {} - partial-json@0.1.7: {} - patch-console@2.0.0: {} path-browserify@1.0.1: {} @@ -20157,8 +20067,6 @@ snapshots: extend-shallow: 2.0.1 kind-of: 6.0.3 - secure-json-parse@2.7.0: {} - secure-json-parse@4.0.0: {} semver@6.3.1: {} @@ -20656,18 +20564,6 @@ snapshots: csso: 5.0.5 picocolors: 1.1.1 - swr@2.3.3(react@18.3.1): - dependencies: - dequal: 2.0.3 - react: 18.3.1 - use-sync-external-store: 1.5.0(react@18.3.1) - - swr@2.3.3(react@19.1.0): - dependencies: - dequal: 2.0.3 - react: 19.1.0 - use-sync-external-store: 1.5.0(react@19.1.0) - symbol-tree@3.2.4: {} synckit@0.11.11: @@ -20716,8 +20612,6 @@ snapshots: dependencies: real-require: 0.2.0 - throttleit@2.1.0: {} - through@2.3.8: {} tildify@2.0.0: {} @@ -21202,14 +21096,6 @@ snapshots: url-template@2.0.8: {} - use-sync-external-store@1.5.0(react@18.3.1): - dependencies: - react: 18.3.1 - - use-sync-external-store@1.5.0(react@19.1.0): - dependencies: - react: 19.1.0 - util-deprecate@1.0.2: {} utils-merge@1.0.1: {} From 9ed9658a24be8a12b003c24f7ce692d2a43730b5 Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Sat, 8 Nov 2025 15:50:05 -0600 Subject: [PATCH 02/15] chore: changeset Signed-off-by: The-Best-Codes --- .changeset/pink-lemons-buy.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/pink-lemons-buy.md diff --git a/.changeset/pink-lemons-buy.md b/.changeset/pink-lemons-buy.md new file mode 100644 index 000000000..d297779d7 --- /dev/null +++ b/.changeset/pink-lemons-buy.md @@ -0,0 +1,6 @@ +--- +"@lingo.dev/_compiler": minor +"lingo.dev": minor +--- + +Upgrade Compiler and CLI to AI SDK v5. From 69dd05d57392444d60c56985110e4324d38c9fa0 Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Sat, 15 Nov 2025 13:33:46 -0600 Subject: [PATCH 03/15] feat: upgrade to zod 4 Signed-off-by: The-Best-Codes --- packages/cli/package.json | 2 +- packages/cli/src/cli/cmd/i18n.ts | 4 +- packages/cli/src/cli/cmd/lockfile.ts | 2 +- packages/cli/src/cli/cmd/run/_types.ts | 10 +- packages/cli/src/cli/utils/delta.ts | 6 +- packages/cli/src/cli/utils/exec.ts | 8 +- packages/cli/src/cli/utils/lockfile.ts | 6 +- packages/cli/src/cli/utils/settings.ts | 54 +++++----- packages/compiler/package.json | 2 +- packages/compiler/src/lib/lcp/schema.ts | 6 +- packages/sdk/package.json | 2 +- packages/spec/package.json | 2 +- pnpm-lock.yaml | 132 ++++++++++++------------ scripts/docs/package.json | 2 +- 14 files changed, 118 insertions(+), 120 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 56041b3b5..4fac309ce 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -216,7 +216,7 @@ "xml2js": "^0.6.2", "xpath": "^0.0.34", "yaml": "^2.7.0", - "zod": "^3.25.76" + "zod": "^4.1.12" }, "devDependencies": { "@types/babel__generator": "^7.27.0", diff --git a/packages/cli/src/cli/cmd/i18n.ts b/packages/cli/src/cli/cmd/i18n.ts index 83924ac3d..219a223a6 100644 --- a/packages/cli/src/cli/cmd/i18n.ts +++ b/packages/cli/src/cli/cmd/i18n.ts @@ -645,8 +645,8 @@ function parseFlags(options: any) { strict: Z.boolean().optional(), key: Z.string().optional(), file: Z.array(Z.string()).optional(), - interactive: Z.boolean().default(false), - debug: Z.boolean().default(false), + interactive: Z.boolean().prefault(false), + debug: Z.boolean().prefault(false), }).parse(options); } diff --git a/packages/cli/src/cli/cmd/lockfile.ts b/packages/cli/src/cli/cmd/lockfile.ts index 75178b813..23fcf1bc5 100644 --- a/packages/cli/src/cli/cmd/lockfile.ts +++ b/packages/cli/src/cli/cmd/lockfile.ts @@ -61,5 +61,5 @@ export default new Command() }); const flagsSchema = Z.object({ - force: Z.boolean().default(false), + force: Z.boolean().prefault(false), }); diff --git a/packages/cli/src/cli/cmd/run/_types.ts b/packages/cli/src/cli/cmd/run/_types.ts index d5ea1316d..2bf8054c7 100644 --- a/packages/cli/src/cli/cmd/run/_types.ts +++ b/packages/cli/src/cli/cmd/run/_types.ts @@ -45,13 +45,13 @@ export const flagsSchema = z.object({ frozen: z.boolean().optional(), verbose: z.boolean().optional(), strict: z.boolean().optional(), - interactive: z.boolean().default(false), - concurrency: z.number().positive().default(10), - debug: z.boolean().default(false), + interactive: z.boolean().prefault(false), + concurrency: z.number().positive().prefault(10), + debug: z.boolean().prefault(false), sourceLocale: z.string().optional(), targetLocale: z.array(z.string()).optional(), - watch: z.boolean().default(false), - debounce: z.number().positive().default(5000), // 5 seconds default + watch: z.boolean().prefault(false), + debounce: z.number().positive().prefault(5000), // 5 seconds default sound: z.boolean().optional(), }); export type CmdRunFlags = z.infer; diff --git a/packages/cli/src/cli/utils/delta.ts b/packages/cli/src/cli/utils/delta.ts index 4950a70b6..7104d7748 100644 --- a/packages/cli/src/cli/utils/delta.ts +++ b/packages/cli/src/cli/utils/delta.ts @@ -6,7 +6,7 @@ import * as path from "path"; import YAML from "yaml"; const LockSchema = z.object({ - version: z.literal(1).default(1), + version: z.literal(1).prefault(1), checksums: z .record( z.string(), // localizable files' keys @@ -18,9 +18,9 @@ const LockSchema = z.object({ // checksum of the key's value in the source locale z.string(), ) - .default({}), + .prefault({}), ) - .default({}), + .prefault({}), }); export type LockData = z.infer; diff --git a/packages/cli/src/cli/utils/exec.ts b/packages/cli/src/cli/utils/exec.ts index 4f2d98eb0..b1488c6ce 100644 --- a/packages/cli/src/cli/utils/exec.ts +++ b/packages/cli/src/cli/utils/exec.ts @@ -65,8 +65,8 @@ export async function execWithRetry( // Helpers const ExecAsyncSchema = Z.object({ - delay: Z.number().nonnegative().default(1000), - concurrency: Z.number().positive().default(1), + delay: Z.number().nonnegative().prefault(1000), + concurrency: Z.number().positive().prefault(1), onProgress: Z.function( Z.tuple([ Z.number().positive(), // completed count @@ -77,8 +77,8 @@ const ExecAsyncSchema = Z.object({ }); const ExecWithRetrySchema = Z.object({ - delay: Z.number().nonnegative().default(0), - attempts: Z.number().positive().default(3), + delay: Z.number().nonnegative().prefault(0), + attempts: Z.number().positive().prefault(3), }); function delay(ms: number) { diff --git a/packages/cli/src/cli/utils/lockfile.ts b/packages/cli/src/cli/utils/lockfile.ts index f1e7dee6e..a78c5bc21 100644 --- a/packages/cli/src/cli/utils/lockfile.ts +++ b/packages/cli/src/cli/utils/lockfile.ts @@ -84,13 +84,13 @@ export function createLockfileHelper() { } const LockfileSchema = Z.object({ - version: Z.literal(1).default(1), + version: Z.literal(1).prefault(1), checksums: Z.record( Z.string(), // localizable files' keys Z.record( // checksums hashmap Z.string(), // key Z.string(), // checksum of the key's value in the source locale - ).default({}), - ).default({}), + ).prefault({}), + ).prefault({}), }); diff --git a/packages/cli/src/cli/utils/settings.ts b/packages/cli/src/cli/utils/settings.ts index 8d3db2928..ed2c59c0b 100644 --- a/packages/cli/src/cli/utils/settings.ts +++ b/packages/cli/src/cli/utils/settings.ts @@ -96,18 +96,17 @@ function _loadDefaults(): CliSettings { } function _loadEnv() { - return Z.object({ - LINGODOTDEV_API_KEY: Z.string().optional(), - LINGODOTDEV_API_URL: Z.string().optional(), - LINGODOTDEV_WEB_URL: Z.string().optional(), - OPENAI_API_KEY: Z.string().optional(), - ANTHROPIC_API_KEY: Z.string().optional(), - GROQ_API_KEY: Z.string().optional(), - GOOGLE_API_KEY: Z.string().optional(), - OPENROUTER_API_KEY: Z.string().optional(), - MISTRAL_API_KEY: Z.string().optional(), - }) - .passthrough() + return z.looseObject({ + LINGODOTDEV_API_KEY: Z.string().optional(), + LINGODOTDEV_API_URL: Z.string().optional(), + LINGODOTDEV_WEB_URL: Z.string().optional(), + OPENAI_API_KEY: Z.string().optional(), + ANTHROPIC_API_KEY: Z.string().optional(), + GROQ_API_KEY: Z.string().optional(), + GOOGLE_API_KEY: Z.string().optional(), + OPENROUTER_API_KEY: Z.string().optional(), + MISTRAL_API_KEY: Z.string().optional(), + }) .parse(process.env); } @@ -118,22 +117,21 @@ function _loadSystemFile() { : ""; const data = Ini.parse(content); - return Z.object({ - auth: Z.object({ - apiKey: Z.string().optional(), - apiUrl: Z.string().optional(), - webUrl: Z.string().optional(), - }).optional(), - llm: Z.object({ - openaiApiKey: Z.string().optional(), - anthropicApiKey: Z.string().optional(), - groqApiKey: Z.string().optional(), - googleApiKey: Z.string().optional(), - openrouterApiKey: Z.string().optional(), - mistralApiKey: Z.string().optional(), - }).optional(), - }) - .passthrough() + return z.looseObject({ + auth: z.looseObject({ + apiKey: Z.string().optional(), + apiUrl: Z.string().optional(), + webUrl: Z.string().optional(), + }).optional(), + llm: z.looseObject({ + openaiApiKey: Z.string().optional(), + anthropicApiKey: Z.string().optional(), + groqApiKey: Z.string().optional(), + googleApiKey: Z.string().optional(), + openrouterApiKey: Z.string().optional(), + mistralApiKey: Z.string().optional(), + }).optional(), + }) .parse(data); } diff --git a/packages/compiler/package.json b/packages/compiler/package.json index 312007428..aa3b19a89 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -61,7 +61,7 @@ "posthog-node": "^5.5.1", "prettier": "^3.4.2", "unplugin": "^2.1.2", - "zod": "^3.25.76" + "zod": "^4.1.12" }, "packageManager": "pnpm@9.12.3" } diff --git a/packages/compiler/src/lib/lcp/schema.ts b/packages/compiler/src/lib/lcp/schema.ts index 21a4fc1a4..874558a52 100644 --- a/packages/compiler/src/lib/lcp/schema.ts +++ b/packages/compiler/src/lib/lcp/schema.ts @@ -20,7 +20,7 @@ export const lcpFile = z.object({ export type LCPFile = z.infer; export const lcpSchema = z.object({ - version: z.number().default(0.1), + version: z.number().prefault(0.1), files: z.record(z.string(), lcpFile).optional(), }); @@ -35,7 +35,7 @@ export const dictionaryFile = z.object({ export type DictionaryFile = z.infer; export const dictionarySchema = z.object({ - version: z.number().default(0.1), + version: z.number().prefault(0.1), locale: z.string(), files: z.record(z.string(), dictionaryFile), }); @@ -55,7 +55,7 @@ export const dictionaryCacheFile = z.object({ }); export const dictionaryCacheSchema = z.object({ - version: z.number().default(0.1), + version: z.number().prefault(0.1), files: z.record(z.string(), dictionaryCacheFile), }); diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 8f70b9ed2..7ad8d1ddb 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -27,7 +27,7 @@ "@lingo.dev/_spec": "workspace:*", "@paralleldrive/cuid2": "^2.2.2", "jsdom": "^25.0.1", - "zod": "^3.25.76" + "zod": "^4.1.12" }, "devDependencies": { "@types/jsdom": "^21.1.7", diff --git a/packages/spec/package.json b/packages/spec/package.json index ecf9dbe3d..ceade42ae 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -26,7 +26,7 @@ "license": "Apache-2.0", "dependencies": { "@lingo.dev/_locales": "workspace:*", - "zod": "^3.25.76", + "zod": "^4.1.12", "zod-to-json-schema": "^3.24.5" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8440046de..70f64183b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -346,16 +346,16 @@ importers: dependencies: '@ai-sdk/anthropic': specifier: ^2.0.42 - version: 2.0.42(zod@3.25.76) + version: 2.0.42(zod@4.1.12) '@ai-sdk/google': specifier: ^2.0.29 - version: 2.0.29(zod@3.25.76) + version: 2.0.29(zod@4.1.12) '@ai-sdk/mistral': specifier: ^2.0.23 - version: 2.0.23(zod@3.25.76) + version: 2.0.23(zod@4.1.12) '@ai-sdk/openai': specifier: ^2.0.64 - version: 2.0.64(zod@3.25.76) + version: 2.0.64(zod@4.1.12) '@babel/generator': specifier: ^7.27.1 version: 7.27.1 @@ -409,7 +409,7 @@ importers: version: 1.5.0 '@openrouter/ai-sdk-provider': specifier: ^1.2.1 - version: 1.2.1(ai@5.0.89(zod@3.25.76))(zod@3.25.76) + version: 1.2.1(ai@5.0.89(zod@4.1.12))(zod@4.1.12) '@paralleldrive/cuid2': specifier: ^2.2.2 version: 2.2.2 @@ -418,7 +418,7 @@ importers: version: 3.1.5 ai: specifier: ^5.0.89 - version: 5.0.89(zod@3.25.76) + version: 5.0.89(zod@4.1.12) bitbucket: specifier: ^2.12.0 version: 2.12.0(encoding@0.1.13) @@ -547,7 +547,7 @@ importers: version: 4.1.2 ollama-ai-provider-v2: specifier: ^1.5.3 - version: 1.5.3(zod@3.25.76) + version: 1.5.3(zod@4.1.12) open: specifier: ^10.2.0 version: 10.2.0 @@ -627,8 +627,8 @@ importers: specifier: ^2.7.0 version: 2.7.0 zod: - specifier: ^3.25.76 - version: 3.25.76 + specifier: ^4.1.12 + version: 4.1.12 devDependencies: '@types/babel__generator': specifier: ^7.27.0 @@ -704,13 +704,13 @@ importers: dependencies: '@ai-sdk/google': specifier: ^2.0.29 - version: 2.0.29(zod@3.25.76) + version: 2.0.29(zod@4.1.12) '@ai-sdk/groq': specifier: ^2.0.28 - version: 2.0.28(zod@3.25.76) + version: 2.0.28(zod@4.1.12) '@ai-sdk/mistral': specifier: ^2.0.23 - version: 2.0.23(zod@3.25.76) + version: 2.0.23(zod@4.1.12) '@babel/generator': specifier: ^7.26.5 version: 7.27.1 @@ -731,13 +731,13 @@ importers: version: link:../spec '@openrouter/ai-sdk-provider': specifier: ^1.2.1 - version: 1.2.1(ai@5.0.89(zod@3.25.76))(zod@3.25.76) + version: 1.2.1(ai@5.0.89(zod@4.1.12))(zod@4.1.12) '@prettier/sync': specifier: ^0.6.1 version: 0.6.1(prettier@3.4.2) ai: specifier: ^5.0.89 - version: 5.0.89(zod@3.25.76) + version: 5.0.89(zod@4.1.12) dedent: specifier: ^1.6.0 version: 1.6.0 @@ -761,7 +761,7 @@ importers: version: 3.0.0 ollama-ai-provider-v2: specifier: ^1.5.3 - version: 1.5.3(zod@3.25.76) + version: 1.5.3(zod@4.1.12) posthog-node: specifier: ^5.5.1 version: 5.5.1 @@ -772,8 +772,8 @@ importers: specifier: ^2.1.2 version: 2.3.5 zod: - specifier: ^3.25.76 - version: 3.25.76 + specifier: ^4.1.12 + version: 4.1.12 devDependencies: '@types/babel__generator': specifier: ^7.6.8 @@ -910,8 +910,8 @@ importers: specifier: ^25.0.1 version: 25.0.1 zod: - specifier: ^3.25.76 - version: 3.25.76 + specifier: ^4.1.12 + version: 4.1.12 devDependencies: '@types/jsdom': specifier: ^21.1.7 @@ -932,11 +932,11 @@ importers: specifier: workspace:* version: link:../locales zod: - specifier: ^3.25.76 - version: 3.25.76 + specifier: ^4.1.12 + version: 4.1.12 zod-to-json-schema: specifier: ^3.24.5 - version: 3.24.5(zod@3.25.76) + version: 3.24.6(zod@4.1.12) devDependencies: '@types/node': specifier: ^22.13.5 @@ -954,11 +954,11 @@ importers: scripts/docs: dependencies: zod: - specifier: ^3.25.76 - version: 3.25.76 + specifier: ^4.1.12 + version: 4.1.12 zod-to-json-schema: specifier: ^3.24.5 - version: 3.24.5(zod@3.25.76) + version: 3.24.6(zod@4.1.12) devDependencies: '@lingo.dev/_spec': specifier: workspace:* @@ -10773,20 +10773,20 @@ packages: peerDependencies: zod: ^3.24.1 - zod-to-json-schema@3.24.5: - resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} + zod-to-json-schema@3.24.6: + resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} peerDependencies: zod: ^3.24.1 zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - zod@3.24.1: - resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} - zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.1.12: + resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -11105,49 +11105,49 @@ snapshots: '@adonisjs/shield': 8.2.0(@adonisjs/core@6.19.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@3.0.1)(edge.js@6.3.0))(@adonisjs/session@7.5.1(@adonisjs/core@6.19.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@3.0.1)(edge.js@6.3.0))(edge.js@6.3.0))(edge.js@6.3.0) edge.js: 6.3.0 - '@ai-sdk/anthropic@2.0.42(zod@3.25.76)': + '@ai-sdk/anthropic@2.0.42(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) - zod: 3.25.76 + '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) + zod: 4.1.12 - '@ai-sdk/gateway@2.0.7(zod@3.25.76)': + '@ai-sdk/gateway@2.0.7(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) + '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) '@vercel/oidc': 3.0.3 - zod: 3.25.76 + zod: 4.1.12 - '@ai-sdk/google@2.0.29(zod@3.25.76)': + '@ai-sdk/google@2.0.29(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) - zod: 3.25.76 + '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) + zod: 4.1.12 - '@ai-sdk/groq@2.0.28(zod@3.25.76)': + '@ai-sdk/groq@2.0.28(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) - zod: 3.25.76 + '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) + zod: 4.1.12 - '@ai-sdk/mistral@2.0.23(zod@3.25.76)': + '@ai-sdk/mistral@2.0.23(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) - zod: 3.25.76 + '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) + zod: 4.1.12 - '@ai-sdk/openai@2.0.64(zod@3.25.76)': + '@ai-sdk/openai@2.0.64(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) - zod: 3.25.76 + '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) + zod: 4.1.12 - '@ai-sdk/provider-utils@3.0.16(zod@3.25.76)': + '@ai-sdk/provider-utils@3.0.16(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 '@standard-schema/spec': 1.0.0 eventsource-parser: 3.0.6 - zod: 3.25.76 + zod: 4.1.12 '@ai-sdk/provider@2.0.0': dependencies: @@ -13365,10 +13365,10 @@ snapshots: '@octokit/request-error': 6.1.7 '@octokit/webhooks-methods': 5.1.1 - '@openrouter/ai-sdk-provider@1.2.1(ai@5.0.89(zod@3.25.76))(zod@3.25.76)': + '@openrouter/ai-sdk-provider@1.2.1(ai@5.0.89(zod@4.1.12))(zod@4.1.12)': dependencies: - ai: 5.0.89(zod@3.25.76) - zod: 3.25.76 + ai: 5.0.89(zod@4.1.12) + zod: 4.1.12 '@opentelemetry/api@1.9.0': {} @@ -13576,7 +13576,7 @@ snapshots: jsdom: 25.0.1 typescript: 5.8.3 vitest: 2.1.9(@types/node@24.2.0)(jsdom@25.0.1)(lightningcss@1.30.1)(terser@5.36.0) - zod: 3.24.1 + zod: 3.25.76 transitivePeerDependencies: - '@edge-runtime/vm' - '@types/node' @@ -14941,13 +14941,13 @@ snapshots: transitivePeerDependencies: - supports-color - ai@5.0.89(zod@3.25.76): + ai@5.0.89(zod@4.1.12): dependencies: - '@ai-sdk/gateway': 2.0.7(zod@3.25.76) + '@ai-sdk/gateway': 2.0.7(zod@4.1.12) '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) + '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) '@opentelemetry/api': 1.9.0 - zod: 3.25.76 + zod: 4.1.12 ajv@6.12.6: dependencies: @@ -17976,7 +17976,7 @@ snapshots: xmldom: 0.6.0 xpath: 0.0.34 yaml: 2.6.1 - zod: 3.24.1 + zod: 3.25.76 transitivePeerDependencies: - '@edge-runtime/vm' - '@types/node' @@ -18938,11 +18938,11 @@ snapshots: '@octokit/request-error': 6.1.7 '@octokit/types': 13.8.0 - ollama-ai-provider-v2@1.5.3(zod@3.25.76): + ollama-ai-provider-v2@1.5.3(zod@4.1.12): dependencies: '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.16(zod@3.25.76) - zod: 3.25.76 + '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) + zod: 4.1.12 on-exit-leak-free@2.1.2: {} @@ -22092,14 +22092,14 @@ snapshots: dependencies: zod: 3.25.76 - zod-to-json-schema@3.24.5(zod@3.25.76): + zod-to-json-schema@3.24.6(zod@4.1.12): dependencies: - zod: 3.25.76 + zod: 4.1.12 zod@3.23.8: {} - zod@3.24.1: {} - zod@3.25.76: {} + zod@4.1.12: {} + zwitch@2.0.4: {} diff --git a/scripts/docs/package.json b/scripts/docs/package.json index 78ad3bc51..856c9831c 100644 --- a/scripts/docs/package.json +++ b/scripts/docs/package.json @@ -24,7 +24,7 @@ "vitest": "^3.2.4" }, "dependencies": { - "zod": "^3.25.76", + "zod": "^4.1.12", "zod-to-json-schema": "^3.24.5" } } From 4bc1c3d78d30f7f867467c5d63fe2f5a0fc9514d Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Sat, 15 Nov 2025 13:54:58 -0600 Subject: [PATCH 04/15] chore: remove zod-to-json-schema from the codebase Signed-off-by: The-Best-Codes --- packages/cli/src/cli/utils/settings.ts | 36 ++++++++++++++---------- packages/spec/src/json-schema.ts | 4 +-- pnpm-lock.yaml | 13 ++++----- scripts/docs/package.json | 3 +- scripts/docs/src/generate-config-docs.ts | 7 ++--- 5 files changed, 32 insertions(+), 31 deletions(-) diff --git a/packages/cli/src/cli/utils/settings.ts b/packages/cli/src/cli/utils/settings.ts index ed2c59c0b..b95146c49 100644 --- a/packages/cli/src/cli/utils/settings.ts +++ b/packages/cli/src/cli/utils/settings.ts @@ -96,7 +96,8 @@ function _loadDefaults(): CliSettings { } function _loadEnv() { - return z.looseObject({ + return z + .looseObject({ LINGODOTDEV_API_KEY: Z.string().optional(), LINGODOTDEV_API_URL: Z.string().optional(), LINGODOTDEV_WEB_URL: Z.string().optional(), @@ -117,20 +118,25 @@ function _loadSystemFile() { : ""; const data = Ini.parse(content); - return z.looseObject({ - auth: z.looseObject({ - apiKey: Z.string().optional(), - apiUrl: Z.string().optional(), - webUrl: Z.string().optional(), - }).optional(), - llm: z.looseObject({ - openaiApiKey: Z.string().optional(), - anthropicApiKey: Z.string().optional(), - groqApiKey: Z.string().optional(), - googleApiKey: Z.string().optional(), - openrouterApiKey: Z.string().optional(), - mistralApiKey: Z.string().optional(), - }).optional(), + return z + .looseObject({ + auth: z + .looseObject({ + apiKey: Z.string().optional(), + apiUrl: Z.string().optional(), + webUrl: Z.string().optional(), + }) + .optional(), + llm: z + .looseObject({ + openaiApiKey: Z.string().optional(), + anthropicApiKey: Z.string().optional(), + groqApiKey: Z.string().optional(), + googleApiKey: Z.string().optional(), + openrouterApiKey: Z.string().optional(), + mistralApiKey: Z.string().optional(), + }) + .optional(), }) .parse(data); } diff --git a/packages/spec/src/json-schema.ts b/packages/spec/src/json-schema.ts index 805948f2b..f5c5e3923 100644 --- a/packages/spec/src/json-schema.ts +++ b/packages/spec/src/json-schema.ts @@ -1,11 +1,11 @@ import fs from "fs"; import path from "path"; import { fileURLToPath } from "url"; -import { zodToJsonSchema } from "zod-to-json-schema"; +import { toJSONSchema } from "zod"; import { LATEST_CONFIG_DEFINITION } from "./config"; export default function buildJsonSchema() { - const configSchema = zodToJsonSchema(LATEST_CONFIG_DEFINITION.schema); + const configSchema = toJSONSchema(LATEST_CONFIG_DEFINITION.schema); const currentDir = path.dirname(fileURLToPath(import.meta.url)); fs.writeFileSync( `${currentDir}/../build/i18n.schema.json`, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 70f64183b..47520581e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -956,9 +956,6 @@ importers: zod: specifier: ^4.1.12 version: 4.1.12 - zod-to-json-schema: - specifier: ^3.24.5 - version: 3.24.6(zod@4.1.12) devDependencies: '@lingo.dev/_spec': specifier: workspace:* @@ -16406,7 +16403,7 @@ snapshots: '@typescript-eslint/parser': 8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3) eslint: 9.35.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.35.0(jiti@2.5.1)) eslint-plugin-react: 7.37.5(eslint@9.35.0(jiti@2.5.1)) @@ -16430,7 +16427,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1 @@ -16445,14 +16442,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3) eslint: 9.35.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) transitivePeerDependencies: - supports-color @@ -16467,7 +16464,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.35.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 diff --git a/scripts/docs/package.json b/scripts/docs/package.json index 856c9831c..9be32aee8 100644 --- a/scripts/docs/package.json +++ b/scripts/docs/package.json @@ -24,7 +24,6 @@ "vitest": "^3.2.4" }, "dependencies": { - "zod": "^4.1.12", - "zod-to-json-schema": "^3.24.5" + "zod": "^4.1.12" } } diff --git a/scripts/docs/src/generate-config-docs.ts b/scripts/docs/src/generate-config-docs.ts index 463d9d8f4..862419afa 100644 --- a/scripts/docs/src/generate-config-docs.ts +++ b/scripts/docs/src/generate-config-docs.ts @@ -6,7 +6,7 @@ import { mkdirSync, writeFileSync } from "node:fs"; import { dirname, resolve } from "node:path"; import remarkStringify from "remark-stringify"; import { unified } from "unified"; -import { zodToJsonSchema } from "zod-to-json-schema"; +import { toJSONSchema } from "zod"; import { renderMarkdown } from "./json-schema/markdown-renderer"; import { parseSchema } from "./json-schema/parser"; import type { JSONSchemaObject } from "./json-schema/types"; @@ -62,9 +62,8 @@ async function main() { const outputArg = process.argv[2]; - const schema = zodToJsonSchema(LATEST_CONFIG_DEFINITION.schema, { - name: "I18nConfig", - markdownDescription: true, + const schema = toJSONSchema(LATEST_CONFIG_DEFINITION.schema, { + target: "openapi-3.0", }); console.log("🔄 Generating i18n.json reference docs..."); From 1a35674f3a1608c5b3bd29faad1920d75e1f031e Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Sat, 15 Nov 2025 14:30:30 -0600 Subject: [PATCH 05/15] fix: use "Z" not "z" Signed-off-by: The-Best-Codes --- packages/cli/src/cli/utils/settings.ts | 60 +++++++++++--------------- 1 file changed, 26 insertions(+), 34 deletions(-) diff --git a/packages/cli/src/cli/utils/settings.ts b/packages/cli/src/cli/utils/settings.ts index b95146c49..64257aa2e 100644 --- a/packages/cli/src/cli/utils/settings.ts +++ b/packages/cli/src/cli/utils/settings.ts @@ -96,19 +96,17 @@ function _loadDefaults(): CliSettings { } function _loadEnv() { - return z - .looseObject({ - LINGODOTDEV_API_KEY: Z.string().optional(), - LINGODOTDEV_API_URL: Z.string().optional(), - LINGODOTDEV_WEB_URL: Z.string().optional(), - OPENAI_API_KEY: Z.string().optional(), - ANTHROPIC_API_KEY: Z.string().optional(), - GROQ_API_KEY: Z.string().optional(), - GOOGLE_API_KEY: Z.string().optional(), - OPENROUTER_API_KEY: Z.string().optional(), - MISTRAL_API_KEY: Z.string().optional(), - }) - .parse(process.env); + return Z.looseObject({ + LINGODOTDEV_API_KEY: Z.string().optional(), + LINGODOTDEV_API_URL: Z.string().optional(), + LINGODOTDEV_WEB_URL: Z.string().optional(), + OPENAI_API_KEY: Z.string().optional(), + ANTHROPIC_API_KEY: Z.string().optional(), + GROQ_API_KEY: Z.string().optional(), + GOOGLE_API_KEY: Z.string().optional(), + OPENROUTER_API_KEY: Z.string().optional(), + MISTRAL_API_KEY: Z.string().optional(), + }).parse(process.env); } function _loadSystemFile() { @@ -118,27 +116,21 @@ function _loadSystemFile() { : ""; const data = Ini.parse(content); - return z - .looseObject({ - auth: z - .looseObject({ - apiKey: Z.string().optional(), - apiUrl: Z.string().optional(), - webUrl: Z.string().optional(), - }) - .optional(), - llm: z - .looseObject({ - openaiApiKey: Z.string().optional(), - anthropicApiKey: Z.string().optional(), - groqApiKey: Z.string().optional(), - googleApiKey: Z.string().optional(), - openrouterApiKey: Z.string().optional(), - mistralApiKey: Z.string().optional(), - }) - .optional(), - }) - .parse(data); + return Z.looseObject({ + auth: Z.looseObject({ + apiKey: Z.string().optional(), + apiUrl: Z.string().optional(), + webUrl: Z.string().optional(), + }).optional(), + llm: Z.looseObject({ + openaiApiKey: Z.string().optional(), + anthropicApiKey: Z.string().optional(), + groqApiKey: Z.string().optional(), + googleApiKey: Z.string().optional(), + openrouterApiKey: Z.string().optional(), + mistralApiKey: Z.string().optional(), + }).optional(), + }).parse(data); } function _saveSystemFile(settings: CliSettings) { From afb46d3d2c396c8972fc1397ef0a153e56d22c7b Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Sat, 15 Nov 2025 14:31:15 -0600 Subject: [PATCH 06/15] fix: use error.issues Signed-off-by: The-Best-Codes --- packages/spec/src/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/spec/src/config.ts b/packages/spec/src/config.ts index 34ab0aaa8..10f5de211 100644 --- a/packages/spec/src/config.ts +++ b/packages/spec/src/config.ts @@ -63,7 +63,7 @@ const extendConfigDefinition = < return safeResult.data; } - const localeErrors = safeResult.error.errors + const localeErrors = safeResult.error.issues .filter((issue) => issue.message.includes("Invalid locale code")) .map((issue) => { let unsupportedLocale = ""; From f30815a30891528103ec645e09e4feecb62ff9d0 Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Sat, 15 Nov 2025 14:46:13 -0600 Subject: [PATCH 07/15] fix: perform more zod 4 migrations Signed-off-by: The-Best-Codes --- packages/cli/src/cli/utils/exec.ts | 8 ++++---- packages/spec/src/config.ts | 22 +++++++++++++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/packages/cli/src/cli/utils/exec.ts b/packages/cli/src/cli/utils/exec.ts index b1488c6ce..6c9028e09 100644 --- a/packages/cli/src/cli/utils/exec.ts +++ b/packages/cli/src/cli/utils/exec.ts @@ -67,13 +67,13 @@ export async function execWithRetry( const ExecAsyncSchema = Z.object({ delay: Z.number().nonnegative().prefault(1000), concurrency: Z.number().positive().prefault(1), - onProgress: Z.function( - Z.tuple([ + onProgress: Z.function({ + input: Z.tuple([ Z.number().positive(), // completed count Z.number().positive(), // total count ]), - Z.void(), - ).optional(), + output: Z.void(), + }).optional(), }); const ExecWithRetrySchema = Z.object({ diff --git a/packages/spec/src/config.ts b/packages/spec/src/config.ts index 10f5de211..f7255425d 100644 --- a/packages/spec/src/config.ts +++ b/packages/spec/src/config.ts @@ -142,7 +142,7 @@ export const configV1Definition = extendConfigDefinition(configV0Definition, { export const configV1_1Definition = extendConfigDefinition(configV1Definition, { createSchema: (baseSchema) => baseSchema.extend({ - buckets: Z.record( + buckets: Z.partialRecord( bucketTypeSchema, Z.object({ include: Z.array(Z.string()) @@ -250,7 +250,10 @@ export const configV1_3Definition = extendConfigDefinition( { createSchema: (baseSchema) => baseSchema.extend({ - buckets: Z.record(bucketTypeSchema, bucketValueSchemaV1_3).default({}), + buckets: Z.partialRecord( + bucketTypeSchema, + bucketValueSchemaV1_3, + ).default({}), }), createDefaultValue: (baseDefaultValue) => ({ ...baseDefaultValue, @@ -340,7 +343,10 @@ export const configV1_6Definition = extendConfigDefinition( { createSchema: (baseSchema) => baseSchema.extend({ - buckets: Z.record(bucketTypeSchema, bucketValueSchemaV1_6).default({}), + buckets: Z.partialRecord( + bucketTypeSchema, + bucketValueSchemaV1_6, + ).default({}), }), createDefaultValue: (baseDefaultValue) => ({ ...baseDefaultValue, @@ -368,7 +374,10 @@ export const configV1_7Definition = extendConfigDefinition( { createSchema: (baseSchema) => baseSchema.extend({ - buckets: Z.record(bucketTypeSchema, bucketValueSchemaV1_7).default({}), + buckets: Z.partialRecord( + bucketTypeSchema, + bucketValueSchemaV1_7, + ).default({}), }), createDefaultValue: (baseDefaultValue) => ({ ...baseDefaultValue, @@ -397,7 +406,10 @@ export const configV1_8Definition = extendConfigDefinition( { createSchema: (baseSchema) => baseSchema.extend({ - buckets: Z.record(bucketTypeSchema, bucketValueSchemaV1_8).default({}), + buckets: Z.partialRecord( + bucketTypeSchema, + bucketValueSchemaV1_8, + ).default({}), }), createDefaultValue: (baseDefaultValue) => ({ ...baseDefaultValue, From 780ccc51b5f5f7630ba6323acb14d5bcfe4e8d4f Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Sat, 15 Nov 2025 15:11:42 -0600 Subject: [PATCH 08/15] fix: resolve type errors in mcp.ts (used any, might manually verify everything still works fine) Signed-off-by: The-Best-Codes --- packages/cli/src/cli/cmd/mcp.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/cli/cmd/mcp.ts b/packages/cli/src/cli/cmd/mcp.ts index 9ecf046e7..f7d216983 100644 --- a/packages/cli/src/cli/cmd/mcp.ts +++ b/packages/cli/src/cli/cmd/mcp.ts @@ -48,8 +48,8 @@ export default new Command() "translate", "Detect language and translate text with Lingo.dev.", { - text: Z.string(), - targetLocale: Z.string().regex(/^[a-z]{2}(-[A-Z]{2})?$/), + text: Z.string() as any, + targetLocale: Z.string().regex(/^[a-z]{2}(-[A-Z]{2})?$/) as any, }, async ({ text, targetLocale }) => { const sourceLocale = await replexicaEngine.recognizeLocale(text); From b63793015e23b0bf4719462829c18133081bed3f Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Sat, 15 Nov 2025 15:31:38 -0600 Subject: [PATCH 09/15] fix: remove defaults from optional fields in zod 4 (fixes failing tests) Signed-off-by: The-Best-Codes --- packages/spec/src/config.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/spec/src/config.ts b/packages/spec/src/config.ts index f7255425d..91a5542bd 100644 --- a/packages/spec/src/config.ts +++ b/packages/spec/src/config.ts @@ -151,7 +151,6 @@ export const configV1_1Definition = extendConfigDefinition(configV1Definition, { "File paths or glob patterns to include for this bucket.", ), exclude: Z.array(Z.string()) - .default([]) .optional() .describe( "File paths or glob patterns to exclude from this bucket.", @@ -235,7 +234,6 @@ export const bucketValueSchemaV1_3 = Z.object({ .default([]) .describe("Glob patterns or bucket items to include for this bucket."), exclude: Z.array(Z.union([Z.string(), bucketItemSchema])) - .default([]) .optional() .describe("Glob patterns or bucket items to exclude from this bucket."), injectLocale: Z.array(Z.string()) @@ -331,7 +329,6 @@ export const configV1_5Definition = extendConfigDefinition( // Changes: Add "lockedKeys" string array to bucket config export const bucketValueSchemaV1_6 = bucketValueSchemaV1_3.extend({ lockedKeys: Z.array(Z.string()) - .default([]) .optional() .describe( "Keys that must remain unchanged and should never be overwritten by translations.", @@ -362,7 +359,6 @@ export const configV1_6Definition = extendConfigDefinition( // Changes: Add "lockedPatterns" string array of regex patterns to bucket config export const bucketValueSchemaV1_7 = bucketValueSchemaV1_6.extend({ lockedPatterns: Z.array(Z.string()) - .default([]) .optional() .describe( "Regular expression patterns whose matched content should remain locked during translation.", @@ -394,7 +390,6 @@ export const configV1_7Definition = extendConfigDefinition( // Changes: Add "ignoredKeys" string array to bucket config export const bucketValueSchemaV1_8 = bucketValueSchemaV1_7.extend({ ignoredKeys: Z.array(Z.string()) - .default([]) .optional() .describe( "Keys that should be completely ignored by translation processes.", From 7e504b573761dde14ef25ddaadbae68c331a5dff Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Sat, 15 Nov 2025 15:35:11 -0600 Subject: [PATCH 10/15] chore: fmt Signed-off-by: The-Best-Codes --- docs/vue-integration-guide.md | 77 +++++++++++++++++------------------ 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/docs/vue-integration-guide.md b/docs/vue-integration-guide.md index 0d1c0599e..c74d09b4d 100644 --- a/docs/vue-integration-guide.md +++ b/docs/vue-integration-guide.md @@ -130,28 +130,28 @@ To learn more, see [i18n.json configuration](/cli/fundamentals/i18n-json-config) 1. Create an i18n configuration file (`src/i18n.js`): ```javascript - import { createI18n } from 'vue-i18n'; + import { createI18n } from "vue-i18n"; // It only imports 5 specific locales - import en from './locales/en.json'; - import es from './locales/es.json'; - import fr from './locales/fr.json'; - import de from './locales/de.json'; - import ja from './locales/ja.json'; + import en from "./locales/en.json"; + import es from "./locales/es.json"; + import fr from "./locales/fr.json"; + import de from "./locales/de.json"; + import ja from "./locales/ja.json"; const messages = { en, es, fr, de, - ja + ja, }; // Create i18n instance export default createI18n({ legacy: false, //you must set this to `false` to use Composition API - locale: 'en', // set locale - fallbackLocale: 'en', // set fallback locale + locale: "en", // set locale + fallbackLocale: "en", // set fallback locale messages, // set locale messages }); ``` @@ -159,15 +159,12 @@ To learn more, see [i18n.json configuration](/cli/fundamentals/i18n-json-config) 2. Update your main.js file to use i18n: ```javascript - import { createApp } from 'vue'; - import App from './App.vue'; - import router from './router'; - import i18n from './i18n'; - - createApp(App) - .use(router) - .use(i18n) - .mount('#app'); + import { createApp } from "vue"; + import App from "./App.vue"; + import router from "./router"; + import i18n from "./i18n"; + + createApp(App).use(router).use(i18n).mount("#app"); ``` ## Step 6. Implement language switching in your Vue components @@ -178,9 +175,9 @@ To learn more, see [i18n.json configuration](/cli/fundamentals/i18n-json-config) @@ -241,9 +238,9 @@ To learn more, see [i18n.json configuration](/cli/fundamentals/i18n-json-config) @@ -279,28 +276,28 @@ To learn more, see [i18n.json configuration](/cli/fundamentals/i18n-json-config) ```vue From d99721f87e615656ede67185f36fc8bfd88905cc Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Mon, 17 Nov 2025 09:11:52 -0600 Subject: [PATCH 11/15] chore: remove unused zod-to-json-schema dep Signed-off-by: The-Best-Codes --- packages/spec/package.json | 3 +-- pnpm-lock.yaml | 38 ++++++++++++++++++++++---------------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/packages/spec/package.json b/packages/spec/package.json index ceade42ae..b45b15302 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -26,8 +26,7 @@ "license": "Apache-2.0", "dependencies": { "@lingo.dev/_locales": "workspace:*", - "zod": "^4.1.12", - "zod-to-json-schema": "^3.24.5" + "zod": "^4.1.12" }, "devDependencies": { "@types/node": "^22.13.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 31bed7f1d..526ae2d9f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -725,7 +725,7 @@ importers: version: 1.2.1(ai@5.0.89(zod@4.1.12))(zod@4.1.12) '@prettier/sync': specifier: ^0.6.1 - version: 0.6.1(prettier@3.4.2) + version: 0.6.1(prettier@3.6.2) ai: specifier: ^5.0.89 version: 5.0.89(zod@4.1.12) @@ -756,6 +756,9 @@ importers: posthog-node: specifier: ^5.5.1 version: 5.5.1 + prettier: + specifier: ^3.4.2 + version: 3.6.2 unplugin: specifier: ^2.1.2 version: 2.3.5 @@ -922,9 +925,6 @@ importers: zod: specifier: ^4.1.12 version: 4.1.12 - zod-to-json-schema: - specifier: ^3.24.5 - version: 3.24.6(zod@4.1.12) devDependencies: '@types/node': specifier: ^22.13.5 @@ -3432,6 +3432,11 @@ packages: '@posthog/core@1.0.2': resolution: {integrity: sha512-hWk3rUtJl2crQK0WNmwg13n82hnTwB99BT99/XI5gZSvIlYZ1TPmMZE8H2dhJJ98J/rm9vYJ/UXNzw3RV5HTpQ==} + '@prettier/sync@0.6.1': + resolution: {integrity: sha512-yF9G8vK/LYUTF3Cijd7VC9La3b20F20/J/fgoR4H0B8JGOWnZVZX6+I6+vODPosjmMcpdlUV+gUqJQZp3kLOcw==} + peerDependencies: + prettier: '*' + '@react-router/dev@7.8.2': resolution: {integrity: sha512-9ilgQoNhvgvUyQKDapALt9qVO3GpSw9ng5X2BwIhLIwqh8CTyRM/jz5cK53p5yzGiVeyx9njXXfeuxUlvQgJuA==} engines: {node: '>=20.0.0'} @@ -7534,6 +7539,9 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + make-synchronized@0.8.0: + resolution: {integrity: sha512-DZu4lwc0ffoFz581BSQa/BJl+1ZqIkoRQ+VejMlH0VrP4E86StAODnZujZ4sepumQj8rcP7wUnUBGM8Gu+zKUA==} + markdown-it-front-matter@0.2.4: resolution: {integrity: sha512-25GUs0yjS2hLl8zAemVndeEzThB1p42yxuDEKbd4JlL3jiz+jsm6e56Ya8B0VREOkNxLYB4TTwaoPJ3ElMmW+w==} @@ -10676,11 +10684,6 @@ packages: peerDependencies: zod: ^3.24.1 - zod-to-json-schema@3.24.6: - resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} - peerDependencies: - zod: ^3.24.1 - zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} @@ -13362,6 +13365,11 @@ snapshots: '@posthog/core@1.0.2': {} + '@prettier/sync@0.6.1(prettier@3.6.2)': + dependencies: + make-synchronized: 0.8.0 + prettier: 3.6.2 + '@react-router/dev@7.8.2(@react-router/serve@7.8.2(react-router@7.8.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3))(@types/node@20.19.13)(jiti@2.5.1)(lightningcss@1.30.1)(react-dom@19.1.0(react@19.1.0))(react-router@7.8.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(terser@5.36.0)(tsx@4.20.3)(typescript@5.8.3)(vite@6.3.5(@types/node@20.19.13)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@babel/core': 7.28.4 @@ -16262,7 +16270,7 @@ snapshots: eslint: 9.35.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.35.0(jiti@2.5.1)) eslint-plugin-react: 7.37.5(eslint@9.35.0(jiti@2.5.1)) eslint-plugin-react-hooks: 5.2.0(eslint@9.35.0(jiti@2.5.1)) @@ -16296,7 +16304,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) transitivePeerDependencies: - supports-color @@ -16311,7 +16319,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -17969,6 +17977,8 @@ snapshots: make-error@1.3.6: {} + make-synchronized@0.8.0: {} + markdown-it-front-matter@0.2.4: {} markdown-it@14.1.0: @@ -21905,10 +21915,6 @@ snapshots: dependencies: zod: 3.25.76 - zod-to-json-schema@3.24.6(zod@4.1.12): - dependencies: - zod: 4.1.12 - zod@3.23.8: {} zod@3.25.76: {} From ddc7a8bd44dc22ca59af0b27f4a013b33d5e49b1 Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Mon, 17 Nov 2025 10:16:02 -0600 Subject: [PATCH 12/15] fix: use prefault Signed-off-by: The-Best-Codes --- packages/spec/src/config.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/spec/src/config.ts b/packages/spec/src/config.ts index 91a5542bd..ff8e1a164 100644 --- a/packages/spec/src/config.ts +++ b/packages/spec/src/config.ts @@ -151,6 +151,7 @@ export const configV1_1Definition = extendConfigDefinition(configV1Definition, { "File paths or glob patterns to include for this bucket.", ), exclude: Z.array(Z.string()) + .prefault([]) .optional() .describe( "File paths or glob patterns to exclude from this bucket.", @@ -234,6 +235,7 @@ export const bucketValueSchemaV1_3 = Z.object({ .default([]) .describe("Glob patterns or bucket items to include for this bucket."), exclude: Z.array(Z.union([Z.string(), bucketItemSchema])) + .prefault([]) .optional() .describe("Glob patterns or bucket items to exclude from this bucket."), injectLocale: Z.array(Z.string()) @@ -329,6 +331,7 @@ export const configV1_5Definition = extendConfigDefinition( // Changes: Add "lockedKeys" string array to bucket config export const bucketValueSchemaV1_6 = bucketValueSchemaV1_3.extend({ lockedKeys: Z.array(Z.string()) + .prefault([]) .optional() .describe( "Keys that must remain unchanged and should never be overwritten by translations.", @@ -359,6 +362,7 @@ export const configV1_6Definition = extendConfigDefinition( // Changes: Add "lockedPatterns" string array of regex patterns to bucket config export const bucketValueSchemaV1_7 = bucketValueSchemaV1_6.extend({ lockedPatterns: Z.array(Z.string()) + .prefault([]) .optional() .describe( "Regular expression patterns whose matched content should remain locked during translation.", @@ -390,6 +394,7 @@ export const configV1_7Definition = extendConfigDefinition( // Changes: Add "ignoredKeys" string array to bucket config export const bucketValueSchemaV1_8 = bucketValueSchemaV1_7.extend({ ignoredKeys: Z.array(Z.string()) + .prefault([]) .optional() .describe( "Keys that should be completely ignored by translation processes.", From 785b526a60c968663fbea45425bf2840680aa97d Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Mon, 17 Nov 2025 10:30:05 -0600 Subject: [PATCH 13/15] fix: revert Signed-off-by: The-Best-Codes --- packages/spec/src/config.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/spec/src/config.ts b/packages/spec/src/config.ts index ff8e1a164..91a5542bd 100644 --- a/packages/spec/src/config.ts +++ b/packages/spec/src/config.ts @@ -151,7 +151,6 @@ export const configV1_1Definition = extendConfigDefinition(configV1Definition, { "File paths or glob patterns to include for this bucket.", ), exclude: Z.array(Z.string()) - .prefault([]) .optional() .describe( "File paths or glob patterns to exclude from this bucket.", @@ -235,7 +234,6 @@ export const bucketValueSchemaV1_3 = Z.object({ .default([]) .describe("Glob patterns or bucket items to include for this bucket."), exclude: Z.array(Z.union([Z.string(), bucketItemSchema])) - .prefault([]) .optional() .describe("Glob patterns or bucket items to exclude from this bucket."), injectLocale: Z.array(Z.string()) @@ -331,7 +329,6 @@ export const configV1_5Definition = extendConfigDefinition( // Changes: Add "lockedKeys" string array to bucket config export const bucketValueSchemaV1_6 = bucketValueSchemaV1_3.extend({ lockedKeys: Z.array(Z.string()) - .prefault([]) .optional() .describe( "Keys that must remain unchanged and should never be overwritten by translations.", @@ -362,7 +359,6 @@ export const configV1_6Definition = extendConfigDefinition( // Changes: Add "lockedPatterns" string array of regex patterns to bucket config export const bucketValueSchemaV1_7 = bucketValueSchemaV1_6.extend({ lockedPatterns: Z.array(Z.string()) - .prefault([]) .optional() .describe( "Regular expression patterns whose matched content should remain locked during translation.", @@ -394,7 +390,6 @@ export const configV1_7Definition = extendConfigDefinition( // Changes: Add "ignoredKeys" string array to bucket config export const bucketValueSchemaV1_8 = bucketValueSchemaV1_7.extend({ ignoredKeys: Z.array(Z.string()) - .prefault([]) .optional() .describe( "Keys that should be completely ignored by translation processes.", From 4fde09ac25818ad3fd42adec1b9e9b170a27e63b Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Wed, 19 Nov 2025 11:00:30 -0600 Subject: [PATCH 14/15] fix: upgrade new deps Signed-off-by: The-Best-Codes --- packages/compiler/package.json | 4 +-- pnpm-lock.yaml | 61 +++++++++++++++++++++++++++------- 2 files changed, 51 insertions(+), 14 deletions(-) diff --git a/packages/compiler/package.json b/packages/compiler/package.json index ada6712c2..820bb9a0f 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -45,11 +45,11 @@ "vitest": "^2.1.4" }, "dependencies": { - "@ai-sdk/anthropic": "^1.0.11", + "@ai-sdk/anthropic": "^2.0.45", "@ai-sdk/google": "^2.0.29", "@ai-sdk/groq": "^2.0.28", "@ai-sdk/mistral": "^2.0.23", - "@ai-sdk/openai": "^1.3.22", + "@ai-sdk/openai": "^2.0.68", "@babel/generator": "^7.26.5", "@babel/parser": "^7.26.7", "@babel/traverse": "^7.27.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 678c24483..f60dd22ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -694,8 +694,8 @@ importers: packages/compiler: dependencies: '@ai-sdk/anthropic': - specifier: ^1.0.11 - version: 1.2.11(zod@3.25.76) + specifier: ^2.0.45 + version: 2.0.45(zod@4.1.12) '@ai-sdk/google': specifier: ^2.0.29 version: 2.0.29(zod@4.1.12) @@ -706,8 +706,8 @@ importers: specifier: ^2.0.23 version: 2.0.23(zod@4.1.12) '@ai-sdk/openai': - specifier: ^1.3.22 - version: 1.3.22(zod@3.25.76) + specifier: ^2.0.68 + version: 2.0.68(zod@4.1.12) '@babel/generator': specifier: ^7.26.5 version: 7.27.1 @@ -1242,6 +1242,12 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/anthropic@2.0.45': + resolution: {integrity: sha512-Ipv62vavDCmrV/oE/lXehL9FzwQuZOnnlhPEftWizx464Wb6lvnBTJx8uhmEYruFSzOWTI95Z33ncZ4tA8E6RQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/gateway@2.0.7': resolution: {integrity: sha512-/AI5AKi4vOK9SEb8Z1dfXkhsJ5NAfWsoJQc96B/mzn2KIrjw5occOjIwD06scuhV9xWlghCoXJT1sQD9QH/tyg==} engines: {node: '>=18'} @@ -1272,12 +1278,24 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/openai@2.0.68': + resolution: {integrity: sha512-qUSLFkqgUoFArzBwttu0KWVAZYjbsdZGOklSJXpfZ2nDC61yseHxtcnuG8u6tqKnGXDh4eakEgREDWU2sRht7A==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/provider-utils@3.0.16': resolution: {integrity: sha512-lsWQY9aDXHitw7C1QRYIbVGmgwyT98TF3MfM8alNIXKpdJdi+W782Rzd9f1RyOfgRmZ08gJ2EYNDhWNK7RqpEA==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/provider-utils@3.0.17': + resolution: {integrity: sha512-TR3Gs4I3Tym4Ll+EPdzRdvo/rc8Js6c4nVhFLuvGLX/Y4V9ZcQMa/HTiYsHEgmYrf1zVi6Q145UEZUfleOwOjw==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/provider@2.0.0': resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} engines: {node: '>=18'} @@ -11024,6 +11042,12 @@ snapshots: '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) zod: 4.1.12 + '@ai-sdk/anthropic@2.0.45(zod@4.1.12)': + dependencies: + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.17(zod@4.1.12) + zod: 4.1.12 + '@ai-sdk/gateway@2.0.7(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 @@ -11055,6 +11079,12 @@ snapshots: '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) zod: 4.1.12 + '@ai-sdk/openai@2.0.68(zod@4.1.12)': + dependencies: + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.17(zod@4.1.12) + zod: 4.1.12 + '@ai-sdk/provider-utils@3.0.16(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 @@ -11062,6 +11092,13 @@ snapshots: eventsource-parser: 3.0.6 zod: 4.1.12 + '@ai-sdk/provider-utils@3.0.17(zod@4.1.12)': + dependencies: + '@ai-sdk/provider': 2.0.0 + '@standard-schema/spec': 1.0.0 + eventsource-parser: 3.0.6 + zod: 4.1.12 + '@ai-sdk/provider@2.0.0': dependencies: json-schema: 0.4.0 @@ -16282,8 +16319,8 @@ snapshots: '@typescript-eslint/parser': 8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3) eslint: 9.35.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.35.0(jiti@2.5.1)) eslint-plugin-react: 7.37.5(eslint@9.35.0(jiti@2.5.1)) eslint-plugin-react-hooks: 5.2.0(eslint@9.35.0(jiti@2.5.1)) @@ -16306,7 +16343,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1 @@ -16317,22 +16354,22 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3) eslint: 9.35.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -16343,7 +16380,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.35.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0(jiti@2.5.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 From 8248590f0388f4eb9f5fec75878e173fed9a9609 Mon Sep 17 00:00:00 2001 From: The-Best-Codes Date: Wed, 3 Dec 2025 10:09:30 -0600 Subject: [PATCH 15/15] fix: sort deps Signed-off-by: The-Best-Codes --- packages/cli/package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index cb3eaa73f..12af46023 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -158,6 +158,9 @@ "date-fns": "4.1.0", "dedent": "1.7.0", "diff": "7.0.0", + "dom-serializer": "2.0.0", + "domhandler": "5.0.3", + "domutils": "3.2.2", "dotenv": "16.4.7", "ejs": "3.1.10", "express": "5.1.0", @@ -168,6 +171,7 @@ "glob": "11.1.0", "gradient-string": "3.0.0", "gray-matter": "4.0.3", + "htmlparser2": "10.0.0", "ini": "5.0.0", "ink": "4.2.0", "ink-progress-bar": "3.0.0", @@ -216,11 +220,7 @@ "xml2js": "0.6.2", "xpath": "0.0.34", "yaml": "2.8.1", - "zod": "4.1.12", - "dom-serializer": "2.0.0", - "domhandler": "5.0.3", - "domutils": "3.2.2", - "htmlparser2": "10.0.0" + "zod": "4.1.12" }, "devDependencies": { "@types/babel__generator": "7.27.0",