diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 21aec5f..c6293c1 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -27,12 +27,17 @@ jobs: packages: write environment: - name: ghcr - url: https://github.com/cssnr/chat-server/pkgs/container/chat-server + name: docker + url: https://hub.docker.com/r/cssnr/chat-server steps: + - name: "Checkout" + uses: actions/checkout@v6 + + - name: "Debug event.json" + continue-on-error: true + run: cat "${GITHUB_EVENT_PATH}" - name: "Debug CTX github" - if: ${{ !github.event.act }} continue-on-error: true env: GITHUB_CTX: ${{ toJSON(github) }} @@ -46,9 +51,6 @@ jobs: echo "inputs.dev: ${{ inputs.dev }}" echo "env.dev: ${{ env.dev }}" - - name: "Checkout" - uses: actions/checkout@v6 - - name: "Update Package Version" uses: cssnr/update-json-value-action@v2 with: @@ -65,11 +67,11 @@ jobs: username: ${{ vars.GHCR_USER }} password: ${{ secrets.GHCR_PASS }} - #- name: "Docker Login - Hub" - # uses: docker/login-action@v4 - # with: - # username: ${{ vars.DOCKER_HUB_USER }} - # password: ${{ secrets.DOCKER_HUB_PASS }} + - name: "Docker Login - Hub" + uses: docker/login-action@v4 + with: + username: ${{ vars.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_HUB_PASS }} - name: "Setup QEMU" uses: docker/setup-qemu-action@v4 @@ -100,10 +102,9 @@ jobs: id: tags uses: cssnr/docker-tags-action@v2 with: - images: "ghcr.io/${{ github.repository }}" - #images: | - # ${{ github.repository }} - # ghcr.io/${{ github.repository }} + images: | + ${{ github.repository }} + ghcr.io/${{ github.repository }} tags: | ${{ env.dev }} ${{ steps.version.outputs.tags }} diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 7a70bb7..c9c3c80 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -18,9 +18,9 @@ env: traefik-host: ${{ secrets.TRAEFIK_HOST }} stack-name: ${{ github.repository_owner }}-${{ github.event.repository.name }} version: ${{ inputs.version || github.event.workflow_run.head_branch || github.ref_name }} + tokens: "2048" origins: "*.cssnr.com,cssnr.github.io,smashedr.github.io,django-files.github.io" options: '{"openai":{"serviceTier":"flex","reasoningEffort":"low"}}' - tokens: "2048" jobs: deploy: @@ -77,9 +77,9 @@ jobs: GOOGLE_GENERATIVE_AI_API_KEY: "${{ secrets.GOOGLE_GENERATIVE_AI_API_KEY }}" OPENAI_API_KEY: "${{ secrets.OPENAI_API_KEY }}" MODEL: "${{ secrets.MODEL }}" + MAX_TOKENS: "${{ env.tokens }}" CORS_ORIGINS: "${{ env.origins }}" PROVIDER_OPTIONS: '${{ env.options }}' - MAX_TOKENS: "${{ env.tokens }}" ## https://render.com/docs/deploy-hooks#deploying-from-an-image-registry #- name: "Deploy Image" diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 4160d71..334bc85 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -21,13 +21,21 @@ jobs: - name: "Checkout" uses: actions/checkout@v6 + - name: "Debug event.json" + continue-on-error: true + run: cat "${GITHUB_EVENT_PATH}" + - name: "Debug CTX github" + continue-on-error: true + env: + GITHUB_CTX: ${{ toJSON(github) }} + run: echo "$GITHUB_CTX" + - name: "Setup Node" uses: actions/setup-node@v6 with: node-version: 24 - - name: "install" - id: install + - name: "Install" run: npm ci - name: "Debug" @@ -36,8 +44,7 @@ jobs: - name: "eslint" if: ${{ !cancelled() }} - run: | - npm run lint + run: npm run lint - name: "prettier" if: ${{ !cancelled() }} diff --git a/.github/workflows/render.yaml b/.github/workflows/render.yaml index a8a7409..a5f3216 100644 --- a/.github/workflows/render.yaml +++ b/.github/workflows/render.yaml @@ -35,19 +35,13 @@ jobs: steps: - name: "Debug event.json" - if: ${{ !github.event.act }} continue-on-error: true run: cat "${GITHUB_EVENT_PATH}" - name: "Debug CTX github" - if: ${{ !github.event.act }} continue-on-error: true env: GITHUB_CTX: ${{ toJSON(github) }} run: echo "$GITHUB_CTX" - - name: "Debug Environment" - if: ${{ !github.event.act }} - continue-on-error: true - run: env - name: "Debug ref" continue-on-error: true diff --git a/README.md b/README.md index e5c591a..e94d457 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![GitHub Release Version](https://img.shields.io/github/v/release/cssnr/chat-server?logo=github)](https://github.com/cssnr/chat-server/releases/latest) [![Image Latest](https://badges.cssnr.com/ghcr/tags/cssnr/chat-server/latest)](https://github.com/cssnr/chat-server/pkgs/container/chat-server) [![Image Size](https://badges.cssnr.com/ghcr/size/cssnr/chat-server)](https://github.com/cssnr/chat-server/pkgs/container/chat-server) -[![Deployment GHCR](https://img.shields.io/github/deployments/cssnr/chat-server/ghcr?logo=docker&logoColor=white&label=ghcr)](https://github.com/cssnr/chat-server/deployments/ghcr) +[![Deployment Docker](https://img.shields.io/github/deployments/cssnr/chat-server/docker?logo=docker&logoColor=white&label=docker)](https://github.com/cssnr/chat-server/deployments/docker) [![Workflow Release](https://img.shields.io/github/actions/workflow/status/cssnr/chat-server/release.yaml?logo=norton&logoColor=white&label=release)](https://github.com/cssnr/chat-server/actions/workflows/release.yaml) [![Workflow Lint](https://img.shields.io/github/actions/workflow/status/cssnr/chat-server/lint.yaml?logo=norton&logoColor=white&label=lint)](https://github.com/cssnr/chat-server/actions/workflows/lint.yaml) [![GitHub Last Commit](https://img.shields.io/github/last-commit/cssnr/chat-server?logo=listenhub&label=updated)](https://github.com/cssnr/chat-server/pulse) @@ -57,6 +57,8 @@ Built with the [AI SDK](https://ai-sdk.dev/). ## Setup +💡 The server works out-of-the box with NO environment variables. + [![Deploy to Render](https://img.shields.io/badge/Deploy_to_Render-4351E8?style=for-the-badge&logo=render)](https://render.com/deploy?repo=https://github.com/cssnr/chat-server) With Docker. @@ -93,19 +95,19 @@ For a Portainer Deploy workflow see the [.github/workflows/deploy.yaml](https:// ### Configure -💡 The default `big-pickle` model works out-of-the box with NO API Key. +💡 All variables are optional. The default `big-pickle` model works with NO API Key. Environment Variables. | Variable | Default | Description | | :------------------------------------ | :--------------------------- | :---------------------------------- | | `MODEL` | `big-pickle` | Model to Use | -| `MAX_TOKENS` | - | Max Output Tokens | +| `BASE_URL` | `https://opencode.ai/zen/v1` | OpenAI Compatible Provider Base URL | | [PROVIDER_OPTIONS](#PROVIDER_OPTIONS) | - | Provider Options JSON String | +| `MAX_TOKENS` | - | Max Output Tokens | | `INSTRUCTIONS` | - | Fallback System Instructions | | `AI_SDK_LOG_WARNINGS` | - | Disable SDK Warnings | | `CORS_ORIGINS` | - | Allowed CORS Origins (supports \*) | -| `BASE_URL` | `https://opencode.ai/zen/v1` | OpenAI Compatible Provider Base URL | | `PORT` | `3000` | Server Port | You must also set the API key for the `MODEL` you select. @@ -121,14 +123,23 @@ The `PROVIDER_API_KEY` is optional for free-tier models like `big-pickle`. #### PROVIDER_OPTIONS -Provider Specific Options: +Provider Options: + +For example, to disable "Reasoning" on `big-pickle` model. + +```json +{ "zen": { "thinking": { "type": "disabled" } } } +``` + +You may need to wrap the variable in single quotes. ```text -{"openai":{"serviceTier":"flex","reasoningEffort":"low"}} +PROVIDER_OPTIONS='{"openai":{"serviceTier":"flex","reasoningEffort":"low"}}' ``` You are responsible for providing valid options for the chosen model. -It is only checked to be valid JSON at startup and will fail at runtime if invalid. +The SDK supports providing provider options for multiple provider simultaneously. +The value is only checked for valid JSON at startup and will fail at runtime if it contains invalid options. ## Client @@ -156,6 +167,12 @@ The client is currently available as a VitePress Plugin. This works with no configuration using the `big-pickle` model. You can set your environment variables in the `settings.env` file. +If using `big-pickle` for testing it is much faster to disable reasoning. + +```text +PROVIDER_OPTIONS='{"zen":{"thinking":{"type":"disabled"}}}' +``` + In all cases you can set the `PORT` environment variable. With Node run. @@ -166,7 +183,7 @@ npm run dev Point your client to: http://localhost:3000/ -With Docker compose (you may need to `touch settings.env`). +With Docker compose _(you may need to `touch settings.env`)_. ```shell docker compose -f docker-compose-dev.yaml up --watch --build --remove-orphans diff --git a/docker-compose-swarm.yaml b/docker-compose-swarm.yaml index 76f5370..5c5b6ac 100644 --- a/docker-compose-swarm.yaml +++ b/docker-compose-swarm.yaml @@ -39,6 +39,8 @@ services: STACK_NAME: ${STACK_NAME} TRAEFIK_HOST: ${TRAEFIK_HOST} MODEL: ${MODEL} + BASE_URL: ${BASE_URL} + PROVIDER_OPTIONS: ${PROVIDER_OPTIONS} MAX_TOKENS: ${MAX_TOKENS} INSTRUCTIONS: ${INSTRUCTIONS} AI_SDK_LOG_WARNINGS: ${AI_SDK_LOG_WARNINGS} @@ -47,8 +49,6 @@ services: OPENAI_API_KEY: ${OPENAI_API_KEY} GOOGLE_GENERATIVE_AI_API_KEY: ${GOOGLE_GENERATIVE_AI_API_KEY} PROVIDER_API_KEY: ${PROVIDER_API_KEY} - BASE_URL: ${BASE_URL} - PROVIDER_OPTIONS: ${PROVIDER_OPTIONS} deploy: replicas: 1 resources: diff --git a/package-lock.json b/package-lock.json index 58ffd5b..eef1d2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "@ai-sdk/google": "^3.0.80", "@ai-sdk/openai": "^3.0.69", "@ai-sdk/openai-compatible": "^2.0.48", - "@ai-sdk/vue": "^3.0.199", "ai": "^6.0.199", "cors": "^2.8.6", "dotenv": "^17.4.2", @@ -143,73 +142,6 @@ "zod": "^3.25.76 || ^4.1.8" } }, - "node_modules/@ai-sdk/vue": { - "version": "3.0.199", - "resolved": "https://registry.npmjs.org/@ai-sdk/vue/-/vue-3.0.199.tgz", - "integrity": "sha512-BwFvbV5ORA04oYe0Zz0SrXUc/qUkBRvu8dyWTFk32yQ3ygiZcaRWCxOhHtg+LiCwegO10ybwCg2ezug1DVNS8A==", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider-utils": "4.0.27", - "ai": "6.0.199", - "swrv": "^1.0.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "vue": "^3.3.4" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", - "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", - "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.29.7" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-string-parser": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@esbuild/aix-ppc64": { "version": "0.28.0", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", @@ -846,13 +778,6 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT", - "peer": true - }, "node_modules/@opentelemetry/api": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", @@ -1243,115 +1168,6 @@ "node": ">= 20" } }, - "node_modules/@vue/compiler-core": { - "version": "3.5.35", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.35.tgz", - "integrity": "sha512-BUmHaR1J+O+CKZ9uJucdVTEr1LHsdyvv7vG3eNRhK3CczEHeMd/LtsHAuD7PbrxvI2envCY2v7HI1vC1aBRzKw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/parser": "^7.29.3", - "@vue/shared": "3.5.35", - "entities": "^7.0.1", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.5.35", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.35.tgz", - "integrity": "sha512-k+bprkXxuqhVajgTx5mUHuir7TwQzUKOWR40ng1ncAqQRPnrLngGGgqVEEhOnTMlc8btHYVKmrP8s5Qyg0hvYA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/compiler-core": "3.5.35", - "@vue/shared": "3.5.35" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.5.35", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.35.tgz", - "integrity": "sha512-G5VPMcXTSywXBgtFOZOnHKBxKSrwXUcvY1iaF5/hRcy7t0J6CH/d8ha9F4nzi00Fax1eLV0QHM7v4mQu68jydw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/parser": "^7.29.3", - "@vue/compiler-core": "3.5.35", - "@vue/compiler-dom": "3.5.35", - "@vue/compiler-ssr": "3.5.35", - "@vue/shared": "3.5.35", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.21", - "postcss": "^8.5.15", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.5.35", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.35.tgz", - "integrity": "sha512-rGhAeXgdM7/ffTJGXT69rCCdTmjDewnFuUZfBQQHTdcEBeWdT5HCGY60y2ytLJr9/Dsu7IntUi5z/w0h6Rjnzw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/compiler-dom": "3.5.35", - "@vue/shared": "3.5.35" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.5.35", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.35.tgz", - "integrity": "sha512-tVc+SsHConvh/Lz64qq1pP3rYArBmK42xonovEcxY74SQtvctZodG/zhq54P5dr38cVuw25d27cPNRdlMidpGQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/shared": "3.5.35" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.5.35", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.35.tgz", - "integrity": "sha512-A/xFNX9loIcWDygeQuNCfKuh0CoYBzxhqEMNah5TSFg9Z53DrFYEN2qi5CU9necjM1OWYegYREUTHmXTmhfXtg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/reactivity": "3.5.35", - "@vue/shared": "3.5.35" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.5.35", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.35.tgz", - "integrity": "sha512-odrJ1C391dbGnyDRh8U+rnP7J2amIEzfmRk5vXy7xi3aZhEXofTvpi0T4HJb6jlNqQZTNPR5MPHSB3RHNkIORA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/reactivity": "3.5.35", - "@vue/runtime-core": "3.5.35", - "@vue/shared": "3.5.35", - "csstype": "^3.2.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.5.35", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.35.tgz", - "integrity": "sha512-NkebSOYdB97wi8OQcO3HqzZSlymJi/aWsN/7h74OSVhRTm6qGs3Jp3e0rCXynmWwSlKeRrnlIug+ilYoHBmQDA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/compiler-ssr": "3.5.35", - "@vue/shared": "3.5.35" - }, - "peerDependencies": { - "vue": "3.5.35" - } - }, - "node_modules/@vue/shared": { - "version": "3.5.35", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.35.tgz", - "integrity": "sha512-zSbjL7gRXwks2ZQLRGCajBtBXEOXW9Ddhn/HvSdrGkE2dqGnumzW8XtusRrxrE9LvqtiqDXQ+A60Hp6mvdYxfA==", - "license": "MIT", - "peer": true - }, "node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", @@ -1671,13 +1487,6 @@ "node": ">= 8" } }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT", - "peer": true - }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -1752,19 +1561,6 @@ "node": ">= 0.8" } }, - "node_modules/entities": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", - "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -1998,13 +1794,6 @@ "node": ">=4.0" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT", - "peer": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -2542,16 +2331,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -2629,25 +2408,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, - "node_modules/nanoid": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", - "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -2834,13 +2594,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC", - "peer": true - }, "node_modules/picomatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", @@ -2853,35 +2606,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/postcss": { - "version": "8.5.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", - "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "nanoid": "^3.3.12", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3197,16 +2921,6 @@ "node": ">=10" } }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -3229,15 +2943,6 @@ "node": ">=4" } }, - "node_modules/swrv": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/swrv/-/swrv-1.2.0.tgz", - "integrity": "sha512-lH/g4UcNyj+7lzK4eRGT4C68Q4EhQ6JtM9otPRIASfhhzfLWtbZPHcMuhuba7S9YVYuxkMUGImwMyGpfbkH07A==", - "license": "Apache-2.0", - "peerDependencies": { - "vue": ">=3.2.26 < 4" - } - }, "node_modules/tinyglobby": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", @@ -3367,7 +3072,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -3443,28 +3148,6 @@ "node": ">= 0.8" } }, - "node_modules/vue": { - "version": "3.5.35", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.35.tgz", - "integrity": "sha512-cx89fnr+0kVGHiNFG6y6s0bdjypJRFNZn6x3WPstNdQR1bi1mbB7h4v5IBGTsPJU3nK1+0Iqj3Zf+hZWMieR4Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/compiler-dom": "3.5.35", - "@vue/compiler-sfc": "3.5.35", - "@vue/runtime-dom": "3.5.35", - "@vue/server-renderer": "3.5.35", - "@vue/shared": "3.5.35" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 45274eb..616c7bc 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,6 @@ "@ai-sdk/google": "^3.0.80", "@ai-sdk/openai": "^3.0.69", "@ai-sdk/openai-compatible": "^2.0.48", - "@ai-sdk/vue": "^3.0.199", "ai": "^6.0.199", "cors": "^2.8.6", "dotenv": "^17.4.2",