Merge branch 'main' into perm-x

This commit is contained in:
Philipinho
2026-01-18 16:51:12 +00:00
7 changed files with 88 additions and 81 deletions
+3 -2
View File
@@ -1,5 +1,6 @@
node_modules node_modules
.git .git
.gitignore
dist dist
data /data
.env*
.nx
+3 -3
View File
@@ -1,13 +1,14 @@
FROM node:22-slim AS base FROM node:22-slim AS base
LABEL org.opencontainers.image.source="https://github.com/docmost/docmost" LABEL org.opencontainers.image.source="https://github.com/docmost/docmost"
RUN npm install -g pnpm@10.4.0
FROM base AS builder FROM base AS builder
WORKDIR /app WORKDIR /app
COPY . . COPY . .
RUN npm install -g pnpm@10.4.0
RUN pnpm install --frozen-lockfile RUN pnpm install --frozen-lockfile
RUN pnpm build RUN pnpm build
@@ -31,12 +32,11 @@ COPY --from=builder /app/packages/editor-ext/package.json /app/packages/editor-e
# Copy root package files # Copy root package files
COPY --from=builder /app/package.json /app/package.json COPY --from=builder /app/package.json /app/package.json
COPY --from=builder /app/pnpm*.yaml /app/ COPY --from=builder /app/pnpm*.yaml /app/
COPY --from=builder /app/.npmrc /app/.npmrc
# Copy patches # Copy patches
COPY --from=builder /app/patches /app/patches COPY --from=builder /app/patches /app/patches
RUN npm install -g pnpm@10.4.0
RUN chown -R node:node /app RUN chown -R node:node /app
USER node USER node
+5 -5
View File
@@ -30,9 +30,9 @@
"test:e2e": "jest --config test/jest-e2e.json" "test:e2e": "jest --config test/jest-e2e.json"
}, },
"dependencies": { "dependencies": {
"@ai-sdk/azure": "^2.0.47", "@ai-sdk/google": "^3.0.9",
"@ai-sdk/google": "^2.0.18", "@ai-sdk/openai": "^3.0.11",
"@ai-sdk/openai": "^2.0.46", "@ai-sdk/openai-compatible": "^2.0.12",
"@aws-sdk/client-s3": "3.701.0", "@aws-sdk/client-s3": "3.701.0",
"@aws-sdk/lib-storage": "3.701.0", "@aws-sdk/lib-storage": "3.701.0",
"@aws-sdk/s3-request-presigner": "3.701.0", "@aws-sdk/s3-request-presigner": "3.701.0",
@@ -61,8 +61,8 @@
"@react-email/components": "0.0.28", "@react-email/components": "0.0.28",
"@react-email/render": "1.0.2", "@react-email/render": "1.0.2",
"@socket.io/redis-adapter": "^8.3.0", "@socket.io/redis-adapter": "^8.3.0",
"ai": "^5.0.65", "ai": "^6.0.37",
"ai-sdk-ollama": "^0.12.0", "ai-sdk-ollama": "^3.1.1",
"bcrypt": "^6.0.0", "bcrypt": "^6.0.0",
"bullmq": "^5.65.0", "bullmq": "^5.65.0",
"cache-manager": "^7.2.7", "cache-manager": "^7.2.7",
@@ -105,7 +105,7 @@ export class EnvironmentVariables {
@IsOptional() @IsOptional()
@ValidateIf((obj) => obj.AI_DRIVER) @ValidateIf((obj) => obj.AI_DRIVER)
@IsIn(['openai', 'gemini', 'ollama']) @IsIn(['openai', 'openai-compatible', 'gemini', 'ollama'])
@IsString() @IsString()
AI_DRIVER: string; AI_DRIVER: string;
@@ -117,11 +117,10 @@ export class EnvironmentVariables {
@IsOptional() @IsOptional()
@ValidateIf((obj) => obj.AI_EMBEDDING_DIMENSION) @ValidateIf((obj) => obj.AI_EMBEDDING_DIMENSION)
@IsIn(['768', '1024', '1536', '2000']) @IsIn(['768', '1024', '1536', '2000', '3072'])
@IsString() @IsString()
AI_EMBEDDING_DIMENSION: string; AI_EMBEDDING_DIMENSION: string;
@IsOptional() @IsOptional()
@ValidateIf((obj) => obj.AI_DRIVER) @ValidateIf((obj) => obj.AI_DRIVER)
@IsString() @IsString()
@@ -129,13 +128,20 @@ export class EnvironmentVariables {
AI_COMPLETION_MODEL: string; AI_COMPLETION_MODEL: string;
@IsOptional() @IsOptional()
@ValidateIf((obj) => obj.AI_DRIVER && obj.AI_DRIVER === 'openai') @ValidateIf(
(obj) =>
obj.AI_DRIVER && ['openai', 'openai-compatible'].includes(obj.AI_DRIVER),
)
@IsString() @IsString()
@IsNotEmpty() @IsNotEmpty()
OPENAI_API_KEY: string; OPENAI_API_KEY: string;
@IsOptional() @IsOptional()
@ValidateIf((obj) => obj.AI_DRIVER && obj.OPENAI_API_URL && obj.AI_DRIVER === 'openai') @ValidateIf(
(obj) =>
obj.AI_DRIVER === 'openai-compatible' ||
(obj.AI_DRIVER === 'openai' && obj.OPENAI_API_URL),
)
@IsUrl({ protocols: ['http', 'https'], require_tld: false }) @IsUrl({ protocols: ['http', 'https'], require_tld: false })
OPENAI_API_URL: string; OPENAI_API_URL: string;
+2 -1
View File
@@ -15,7 +15,8 @@
"server:dev": "nx run server:start:dev", "server:dev": "nx run server:start:dev",
"server:start": "nx run server:start:prod", "server:start": "nx run server:start:prod",
"email:dev": "nx run server:email:dev", "email:dev": "nx run server:email:dev",
"dev": "pnpm concurrently -n \"frontend,backend\" -c \"cyan,green\" \"pnpm run client:dev\" \"pnpm run server:dev\"" "dev": "pnpm concurrently -n \"frontend,backend\" -c \"cyan,green\" \"pnpm run client:dev\" \"pnpm run server:dev\"",
"clean": "rm -rf apps/*/dist packages/*/dist apps/*/node_modules/.vite"
}, },
"dependencies": { "dependencies": {
"@braintree/sanitize-url": "^7.1.0", "@braintree/sanitize-url": "^7.1.0",
+63 -64
View File
@@ -434,15 +434,15 @@ importers:
apps/server: apps/server:
dependencies: dependencies:
'@ai-sdk/azure':
specifier: ^2.0.47
version: 2.0.47(zod@4.3.5)
'@ai-sdk/google': '@ai-sdk/google':
specifier: ^2.0.18 specifier: ^3.0.9
version: 2.0.18(zod@4.3.5) version: 3.0.10(zod@4.3.5)
'@ai-sdk/openai': '@ai-sdk/openai':
specifier: ^2.0.46 specifier: ^3.0.11
version: 2.0.46(zod@4.3.5) version: 3.0.12(zod@4.3.5)
'@ai-sdk/openai-compatible':
specifier: ^2.0.12
version: 2.0.13(zod@4.3.5)
'@aws-sdk/client-s3': '@aws-sdk/client-s3':
specifier: 3.701.0 specifier: 3.701.0
version: 3.701.0 version: 3.701.0
@@ -528,11 +528,11 @@ importers:
specifier: ^8.3.0 specifier: ^8.3.0
version: 8.3.0(socket.io-adapter@2.5.4) version: 8.3.0(socket.io-adapter@2.5.4)
ai: ai:
specifier: ^5.0.65 specifier: ^6.0.37
version: 5.0.65(zod@4.3.5) version: 6.0.38(zod@4.3.5)
ai-sdk-ollama: ai-sdk-ollama:
specifier: ^0.12.0 specifier: ^3.1.1
version: 0.12.0(ai@5.0.65(zod@4.3.5))(zod@4.3.5) version: 3.1.1(ai@6.0.38(zod@4.3.5))(zod@4.3.5)
bcrypt: bcrypt:
specifier: ^6.0.0 specifier: ^6.0.0
version: 6.0.0 version: 6.0.0
@@ -762,38 +762,38 @@ packages:
'@adobe/css-tools@4.3.3': '@adobe/css-tools@4.3.3':
resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==}
'@ai-sdk/azure@2.0.47': '@ai-sdk/gateway@3.0.16':
resolution: {integrity: sha512-rPvjnBWVTVRCDs47qfBWxXxx4i4h7itemyKux21qibB7y24rubqmZGx9lYcI5pyBL057uROhBa9Y5VVHf/ESYw==} resolution: {integrity: sha512-OOY5CfRJiHvh/8np2vs1RQaCZ5hWv2qOeEmmeiABXK3gLQHUVnCO+1hhoLsZdHM5iElu6M407dAOfyvTsKJqcQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
'@ai-sdk/gateway@1.0.36': '@ai-sdk/google@3.0.10':
resolution: {integrity: sha512-G/CLHzyOy9mhbimSBmV+o59M7ao/NfRFrrhC+eHGp+0qT0diP3IDW5VdkPHKFmDp4Iq7wb4/yOCe7Yk2fQtSrg==} resolution: {integrity: sha512-qd2EM9SlD7wWFrq036hwKsuAgkCVxQbwJzctszdmzPs9yUZg795/gHtZRpKItZhbyHSNWhAHmJwEgKjD+HOzuQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
'@ai-sdk/google@2.0.18': '@ai-sdk/openai-compatible@2.0.13':
resolution: {integrity: sha512-ycGAqouueHjU0hB6JHYmUhXYCnN67PqI8+9jCv13MbuE0g+b9w78HiPuab5ResakY0cq3ynFDvbiu8jAGo1RZQ==} resolution: {integrity: sha512-DShpuHZ9wiy3QtxJ4/Uq5csLxgNgeA3w58isYhZ34pSod2cBlRmJl3EyQzxZ1HD8e6sQDa9fvc0cwF5/EugBMw==}
engines: {node: '>=18'} engines: {node: '>=18'}
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
'@ai-sdk/openai@2.0.46': '@ai-sdk/openai@3.0.12':
resolution: {integrity: sha512-3FHZdiTLbjnHw0rbu1yOPW8FruHrzN6SlJYsaLSQgbxYfE5y+60Nj4Xp8/k7rtD3FmrjkKcp/XTMSbAJWfoJig==} resolution: {integrity: sha512-zqLWEKuaKnjXhu7xCw1jgz/+yTbd3F7EtgU4T2Q8BAo8OJC5wZv14l+kwM7Jai7M1/2Y2T/zBkrfiIu+7NsvfQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
'@ai-sdk/provider-utils@3.0.11': '@ai-sdk/provider-utils@4.0.8':
resolution: {integrity: sha512-4hgHj89VqyOHzGaV85TkcgvO8WjecVF35TOUVg+C56vnzpWSgdIZu/ZWZNdZ6BTrv8y0N1toBWW7XcWiRRicLg==} resolution: {integrity: sha512-ns9gN7MmpI8vTRandzgz+KK/zNMLzhrriiKECMt4euLtQFSBgNfydtagPOX4j4pS1/3KvHF6RivhT3gNQgBZsg==}
engines: {node: '>=18'} engines: {node: '>=18'}
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
'@ai-sdk/provider@2.0.0': '@ai-sdk/provider@3.0.4':
resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} resolution: {integrity: sha512-5KXyBOSEX+l67elrEa+wqo/LSsSTtrPj9Uoh3zMbe/ceQX4ucHI3b9nUEfNkGF3Ry1svv90widAt+aiKdIJasQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
'@ampproject/remapping@2.3.0': '@ampproject/remapping@2.3.0':
@@ -4157,8 +4157,8 @@ packages:
peerDependencies: peerDependencies:
socket.io-adapter: ^2.5.4 socket.io-adapter: ^2.5.4
'@standard-schema/spec@1.0.0': '@standard-schema/spec@1.1.0':
resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
'@swc/core-darwin-arm64@1.5.25': '@swc/core-darwin-arm64@1.5.25':
resolution: {integrity: sha512-YbD0SBgVJS2DM0vwJTU5m7+wOyCjHPBDMf3nCBJQzFZzOLzK11eRW7SzU2jhJHr9HI9sKcNFfN4lIC2Sj+4inA==} resolution: {integrity: sha512-YbD0SBgVJS2DM0vwJTU5m7+wOyCjHPBDMf3nCBJQzFZzOLzK11eRW7SzU2jhJHr9HI9sKcNFfN4lIC2Sj+4inA==}
@@ -5022,8 +5022,8 @@ packages:
'@ucast/mongo@2.4.3': '@ucast/mongo@2.4.3':
resolution: {integrity: sha512-XcI8LclrHWP83H+7H2anGCEeDq0n+12FU2mXCTz6/Tva9/9ddK/iacvvhCyW6cijAAOILmt0tWplRyRhVyZLsA==} resolution: {integrity: sha512-XcI8LclrHWP83H+7H2anGCEeDq0n+12FU2mXCTz6/Tva9/9ddK/iacvvhCyW6cijAAOILmt0tWplRyRhVyZLsA==}
'@vercel/oidc@3.0.2': '@vercel/oidc@3.1.0':
resolution: {integrity: sha512-JekxQ0RApo4gS4un/iMGsIL1/k4KUBe3HmnGcDvzHuFBdQdudEJgTqcsJC7y6Ul4Yw5CeykgvQbX2XeEJd0+DA==} resolution: {integrity: sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w==}
engines: {node: '>= 20'} engines: {node: '>= 20'}
'@vitejs/plugin-react@5.1.1': '@vitejs/plugin-react@5.1.1':
@@ -5145,14 +5145,14 @@ packages:
resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
engines: {node: '>= 14'} engines: {node: '>= 14'}
ai-sdk-ollama@0.12.0: ai-sdk-ollama@3.1.1:
resolution: {integrity: sha512-EEKIfIpkyAavrlEKlZ7nZCxTUPq4yBThBLLU3kTD4l7htpdqMjhOEyqm5DlKdQvLEW0MgCMsptw7yXbevRSfIQ==} resolution: {integrity: sha512-1rTgOGUsE8pR2ccg0Uz9lNJYzNUJKjtHDfUB5itoc2UnWZnbzQyqyxTUloCIWjwDkEzaWBiEJRLNvwF7a6j4VQ==}
engines: {node: '>=22'} engines: {node: '>=22'}
peerDependencies: peerDependencies:
ai: ^5.0.60 ai: ^6.0.27
ai@5.0.65: ai@6.0.38:
resolution: {integrity: sha512-orwsNKAoAmTwHkoy7TG/7nc65SD3hy7k+x8xVHIzfw8CibZm/U2cdbR1ZUex6H2Rpf+uoZpvyQ05FWBJNw7V8A==} resolution: {integrity: sha512-X8AaZFrdsPO1RNCAQLsaWfmE/SL9zgsiIZN3XqEHs3jIZ7ycR5aQZRg5XpNtbLWJxKXzK2b1ZXLx13AFOjksSg==}
engines: {node: '>=18'} engines: {node: '>=18'}
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
@@ -8210,8 +8210,8 @@ packages:
resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==}
engines: {node: ^10.13.0 || >=12.0.0} engines: {node: ^10.13.0 || >=12.0.0}
ollama@0.6.0: ollama@0.6.3:
resolution: {integrity: sha512-FHjdU2Ok5x2HZsxPui/MBJZ5J+HzmxoWYa/p9wk736eT+uAhS8nvIICar5YgwlG5MFNjDR6UA5F3RSKq+JseOA==} resolution: {integrity: sha512-KEWEhIqE5wtfzEIZbDCLH51VFZ6Z3ZSa6sIOg/E/tBV8S51flyqBOXi+bRxlOYKDf8i327zG9eSTb8IJxvm3Zg==}
on-exit-leak-free@2.1.2: on-exit-leak-free@2.1.2:
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
@@ -10356,40 +10356,39 @@ snapshots:
'@adobe/css-tools@4.3.3': {} '@adobe/css-tools@4.3.3': {}
'@ai-sdk/azure@2.0.47(zod@4.3.5)': '@ai-sdk/gateway@3.0.16(zod@4.3.5)':
dependencies: dependencies:
'@ai-sdk/openai': 2.0.46(zod@4.3.5) '@ai-sdk/provider': 3.0.4
'@ai-sdk/provider': 2.0.0 '@ai-sdk/provider-utils': 4.0.8(zod@4.3.5)
'@ai-sdk/provider-utils': 3.0.11(zod@4.3.5) '@vercel/oidc': 3.1.0
zod: 4.3.5 zod: 4.3.5
'@ai-sdk/gateway@1.0.36(zod@4.3.5)': '@ai-sdk/google@3.0.10(zod@4.3.5)':
dependencies: dependencies:
'@ai-sdk/provider': 2.0.0 '@ai-sdk/provider': 3.0.4
'@ai-sdk/provider-utils': 3.0.11(zod@4.3.5) '@ai-sdk/provider-utils': 4.0.8(zod@4.3.5)
'@vercel/oidc': 3.0.2
zod: 4.3.5 zod: 4.3.5
'@ai-sdk/google@2.0.18(zod@4.3.5)': '@ai-sdk/openai-compatible@2.0.13(zod@4.3.5)':
dependencies: dependencies:
'@ai-sdk/provider': 2.0.0 '@ai-sdk/provider': 3.0.4
'@ai-sdk/provider-utils': 3.0.11(zod@4.3.5) '@ai-sdk/provider-utils': 4.0.8(zod@4.3.5)
zod: 4.3.5 zod: 4.3.5
'@ai-sdk/openai@2.0.46(zod@4.3.5)': '@ai-sdk/openai@3.0.12(zod@4.3.5)':
dependencies: dependencies:
'@ai-sdk/provider': 2.0.0 '@ai-sdk/provider': 3.0.4
'@ai-sdk/provider-utils': 3.0.11(zod@4.3.5) '@ai-sdk/provider-utils': 4.0.8(zod@4.3.5)
zod: 4.3.5 zod: 4.3.5
'@ai-sdk/provider-utils@3.0.11(zod@4.3.5)': '@ai-sdk/provider-utils@4.0.8(zod@4.3.5)':
dependencies: dependencies:
'@ai-sdk/provider': 2.0.0 '@ai-sdk/provider': 3.0.4
'@standard-schema/spec': 1.0.0 '@standard-schema/spec': 1.1.0
eventsource-parser: 3.0.6 eventsource-parser: 3.0.6
zod: 4.3.5 zod: 4.3.5
'@ai-sdk/provider@2.0.0': '@ai-sdk/provider@3.0.4':
dependencies: dependencies:
json-schema: 0.4.0 json-schema: 0.4.0
@@ -14593,7 +14592,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@standard-schema/spec@1.0.0': {} '@standard-schema/spec@1.1.0': {}
'@swc/core-darwin-arm64@1.5.25': '@swc/core-darwin-arm64@1.5.25':
optional: true optional: true
@@ -15569,7 +15568,7 @@ snapshots:
dependencies: dependencies:
'@ucast/core': 1.10.2 '@ucast/core': 1.10.2
'@vercel/oidc@3.0.2': {} '@vercel/oidc@3.1.0': {}
'@vitejs/plugin-react@5.1.1(vite@7.2.4(@types/node@22.19.1)(jiti@1.21.0)(less@4.2.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))': '@vitejs/plugin-react@5.1.1(vite@7.2.4(@types/node@22.19.1)(jiti@1.21.0)(less@4.2.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
dependencies: dependencies:
@@ -15707,20 +15706,20 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
ai-sdk-ollama@0.12.0(ai@5.0.65(zod@4.3.5))(zod@4.3.5): ai-sdk-ollama@3.1.1(ai@6.0.38(zod@4.3.5))(zod@4.3.5):
dependencies: dependencies:
'@ai-sdk/provider': 2.0.0 '@ai-sdk/provider': 3.0.4
'@ai-sdk/provider-utils': 3.0.11(zod@4.3.5) '@ai-sdk/provider-utils': 4.0.8(zod@4.3.5)
ai: 5.0.65(zod@4.3.5) ai: 6.0.38(zod@4.3.5)
ollama: 0.6.0 ollama: 0.6.3
transitivePeerDependencies: transitivePeerDependencies:
- zod - zod
ai@5.0.65(zod@4.3.5): ai@6.0.38(zod@4.3.5):
dependencies: dependencies:
'@ai-sdk/gateway': 1.0.36(zod@4.3.5) '@ai-sdk/gateway': 3.0.16(zod@4.3.5)
'@ai-sdk/provider': 2.0.0 '@ai-sdk/provider': 3.0.4
'@ai-sdk/provider-utils': 3.0.11(zod@4.3.5) '@ai-sdk/provider-utils': 4.0.8(zod@4.3.5)
'@opentelemetry/api': 1.9.0 '@opentelemetry/api': 1.9.0
zod: 4.3.5 zod: 4.3.5
@@ -19458,7 +19457,7 @@ snapshots:
oidc-token-hash@5.0.3: {} oidc-token-hash@5.0.3: {}
ollama@0.6.0: ollama@0.6.3:
dependencies: dependencies:
whatwg-fetch: 3.6.20 whatwg-fetch: 3.6.20