From 3d66eee6668b726557ec0f3f856f70da95ac6721 Mon Sep 17 00:00:00 2001 From: abearxiong Date: Mon, 16 Feb 2026 00:46:07 +0800 Subject: [PATCH] feat: integrate knowledge base creation in RepoCard and update app context key - Updated the context key for the QueryRouterServer from 'router' to 'app'. - Added functionality to create a knowledge base in RepoCard component. - Introduced a new BookOpen icon and tooltip for knowledge base indication. - Implemented a toast notification for successful knowledge base creation. - Cleaned up imports in main.tsx by commenting out unused app import. --- package.json | 35 +-- pnpm-lock.yaml | 366 +++++++++++++++------------ src/agents/app.ts | 15 +- src/app/repo/components/RepoCard.tsx | 36 ++- src/main.tsx | 2 +- 5 files changed, 271 insertions(+), 183 deletions(-) diff --git a/package.json b/package.json index 4eae16f..973d5fa 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@kevisual/cnb-center", "private": true, - "version": "0.0.1", + "version": "0.0.2", "type": "module", "basename": "/root/cnb-center", "scripts": { @@ -9,7 +9,7 @@ "build": "vite build", "preview": "vite preview", "ui": "pnpm dlx shadcn@latest add ", - "pub": "envision deploy ./dist -k cnb-center -v 0.0.1 -y y -u" + "pub": "envision deploy ./dist -k cnb-center -v 0.0.2 -y y -u" }, "files": [ "dist" @@ -17,22 +17,23 @@ "author": "abearxiong ", "license": "MIT", "dependencies": { - "@ai-sdk/anthropic": "^3.0.38", - "@ai-sdk/openai": "^3.0.26", - "@ai-sdk/openai-compatible": "^2.0.28", - "@base-ui/react": "^1.1.0", - "@kevisual/cnb": "^0.0.22", + "@ai-sdk/anthropic": "^3.0.44", + "@ai-sdk/openai": "^3.0.29", + "@ai-sdk/openai-compatible": "^2.0.30", + "@base-ui/react": "^1.2.0", + "@kevisual/cnb": "^0.0.25", + "@kevisual/cnb-ai": "^0.0.2", "@kevisual/context": "^0.0.4", "@kevisual/router": "0.0.70", - "@tanstack/react-router": "^1.158.4", - "ai": "^6.0.77", + "@tanstack/react-router": "^1.159.10", + "ai": "^6.0.86", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "dayjs": "^1.11.19", "es-toolkit": "^1.44.0", "fuse.js": "^7.1.0", "idb-keyval": "^6.2.2", - "lucide-react": "^0.563.0", + "lucide-react": "^0.564.0", "nanoid": "^5.1.6", "next-themes": "^0.4.6", "react": "^19.2.4", @@ -49,18 +50,18 @@ "@kevisual/query": "0.0.40", "@kevisual/types": "^0.0.12", "@tailwindcss/vite": "^4.1.18", - "@tanstack/react-router-devtools": "^1.158.4", - "@tanstack/router-plugin": "^1.158.4", - "@types/node": "^25.2.2", - "@types/react": "^19.2.13", + "@tanstack/react-router-devtools": "^1.159.10", + "@tanstack/router-plugin": "^1.159.11", + "@types/node": "^25.2.3", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^5.1.3", - "dotenv": "^17.2.4", + "@vitejs/plugin-react": "^5.1.4", + "dotenv": "^17.3.1", "tailwind-merge": "^3.4.0", "tailwindcss": "^4.1.18", "tw-animate-css": "^1.4.0", "typescript": "^5.9.3", "vite": "^8.0.0-beta.13" }, - "packageManager": "pnpm@10.29.1" + "packageManager": "pnpm@10.29.3" } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0212dca..0cf6e3d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,20 +9,23 @@ importers: .: dependencies: '@ai-sdk/anthropic': - specifier: ^3.0.38 - version: 3.0.38(zod@4.3.6) + specifier: ^3.0.44 + version: 3.0.44(zod@4.3.6) '@ai-sdk/openai': - specifier: ^3.0.26 - version: 3.0.26(zod@4.3.6) + specifier: ^3.0.29 + version: 3.0.29(zod@4.3.6) '@ai-sdk/openai-compatible': - specifier: ^2.0.28 - version: 2.0.28(zod@4.3.6) + specifier: ^2.0.30 + version: 2.0.30(zod@4.3.6) '@base-ui/react': - specifier: ^1.1.0 - version: 1.1.0(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: ^1.2.0 + version: 1.2.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@kevisual/cnb': - specifier: ^0.0.22 - version: 0.0.22(dotenv@17.2.4)(idb-keyval@6.2.2) + specifier: ^0.0.25 + version: 0.0.25(dotenv@17.3.1)(idb-keyval@6.2.2) + '@kevisual/cnb-ai': + specifier: ^0.0.2 + version: 0.0.2(dotenv@17.3.1)(idb-keyval@6.2.2) '@kevisual/context': specifier: ^0.0.4 version: 0.0.4 @@ -30,11 +33,11 @@ importers: specifier: 0.0.70 version: 0.0.70 '@tanstack/react-router': - specifier: ^1.158.4 - version: 1.158.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: ^1.159.10 + version: 1.159.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) ai: - specifier: ^6.0.77 - version: 6.0.77(zod@4.3.6) + specifier: ^6.0.86 + version: 6.0.86(zod@4.3.6) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -54,8 +57,8 @@ importers: specifier: ^6.2.2 version: 6.2.2 lucide-react: - specifier: ^0.563.0 - version: 0.563.0(react@19.2.4) + specifier: ^0.564.0 + version: 0.564.0(react@19.2.4) nanoid: specifier: ^5.1.6 version: 5.1.6 @@ -79,7 +82,7 @@ importers: version: 4.3.6 zustand: specifier: ^5.0.11 - version: 5.0.11(@types/react@19.2.13)(immer@10.1.1)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)) + version: 5.0.11(@types/react@19.2.14)(immer@10.1.1)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)) devDependencies: '@kevisual/query': specifier: 0.0.40 @@ -89,28 +92,28 @@ importers: version: 0.0.12 '@tailwindcss/vite': specifier: ^4.1.18 - version: 4.1.18(vite@8.0.0-beta.13(@types/node@25.2.2)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1)) + version: 4.1.18(vite@8.0.0-beta.13(@types/node@25.2.3)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1)) '@tanstack/react-router-devtools': - specifier: ^1.158.4 - version: 1.158.4(@tanstack/react-router@1.158.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.158.4)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: ^1.159.10 + version: 1.159.10(@tanstack/react-router@1.159.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.159.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/router-plugin': - specifier: ^1.158.4 - version: 1.158.4(@tanstack/react-router@1.158.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.0-beta.13(@types/node@25.2.2)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1)) + specifier: ^1.159.11 + version: 1.159.11(@tanstack/react-router@1.159.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.0-beta.13(@types/node@25.2.3)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1)) '@types/node': - specifier: ^25.2.2 - version: 25.2.2 + specifier: ^25.2.3 + version: 25.2.3 '@types/react': - specifier: ^19.2.13 - version: 19.2.13 + specifier: ^19.2.14 + version: 19.2.14 '@types/react-dom': specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.13) + version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^5.1.3 - version: 5.1.3(vite@8.0.0-beta.13(@types/node@25.2.2)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1)) + specifier: ^5.1.4 + version: 5.1.4(vite@8.0.0-beta.13(@types/node@25.2.3)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1)) dotenv: - specifier: ^17.2.4 - version: 17.2.4 + specifier: ^17.3.1 + version: 17.3.1 tailwind-merge: specifier: ^3.4.0 version: 3.4.0 @@ -125,7 +128,7 @@ importers: version: 5.9.3 vite: specifier: ^8.0.0-beta.13 - version: 8.0.0-beta.13(@types/node@25.2.2)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1) + version: 8.0.0-beta.13(@types/node@25.2.3)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1) packages/components: dependencies: @@ -169,32 +172,32 @@ importers: packages: - '@ai-sdk/anthropic@3.0.38': - resolution: {integrity: sha512-9MchyPRPni0WzrFeIGNevZpQVfWxaS+MQFupIXYQo9VgHnuO1Vyrp9SBmjkkuoAdBs7GomsWqLZCcNMJAVbdFA==} + '@ai-sdk/anthropic@3.0.44': + resolution: {integrity: sha512-ke1NldgohWJ7sWLqm9Um9TVIOrtg8Y8AecWeB6PgaLt+paTPisAsyNfe8FNOVusuv58ugLBqY/78AkhUmbjXHA==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/gateway@3.0.39': - resolution: {integrity: sha512-SeCZBAdDNbWpVUXiYgOAqis22p5MEYfrjRw0hiBa5hM+7sDGYQpMinUjkM8kbPXMkY+AhKLrHleBl+SuqpzlgA==} + '@ai-sdk/gateway@3.0.46': + resolution: {integrity: sha512-zH1UbNRjG5woOXXFOrVCZraqZuFTtmPvLardMGcgLkzpxKV0U3tAGoyWKSZ862H+eBJfI/Hf2yj/zzGJcCkycg==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai-compatible@2.0.28': - resolution: {integrity: sha512-WzDnU0B13FMSSupDtm2lksFZvWGXnOfhG5S0HoPI0pkX5uVkr6N1UTATMyVaxLCG0MRkMhXCjkg4NXgEbb330Q==} + '@ai-sdk/openai-compatible@2.0.30': + resolution: {integrity: sha512-iTjumHf1/u4NhjXYFn/aONM2GId3/o7J1Lp5ql8FCbgIMyRwrmanR5xy1S3aaVkfTscuDvLTzWiy1mAbGzK3nQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai@3.0.26': - resolution: {integrity: sha512-W/hiwxIfG29IO0Fob1HwWpFssMsNrxWoX8A7DwNGOtKArDBmJNuGzQeU/k0Fnh8WyvZEnfxkjO4oXkSXfVBayg==} + '@ai-sdk/openai@3.0.29': + resolution: {integrity: sha512-ugVTIVpuSLKTjzSPe1F1DWiblJT/lwrrHx0OZEKjpMk/EYP6j6VD/F7SJqM1dsqOJryeBCJWFbUzLNqc99PrMA==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@4.0.14': - resolution: {integrity: sha512-7bzKd9lgiDeXM7O4U4nQ8iTxguAOkg8LZGD9AfDVZYjO5cKYRwBPwVjboFcVrxncRHu0tYxZtXZtiLKpG4pEng==} + '@ai-sdk/provider-utils@4.0.15': + resolution: {integrity: sha512-8XiKWbemmCbvNN0CLR9u3PQiet4gtEVIrX4zzLxnCj06AwsEDJwJVBbKrEI4t6qE8XRSIvU2irka0dcpziKW6w==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -282,11 +285,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.27.0': - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.29.0': resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} @@ -348,16 +346,12 @@ packages: resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.0': - resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} - engines: {node: '>=6.9.0'} - '@babel/types@7.29.0': resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@base-ui/react@1.1.0': - resolution: {integrity: sha512-ikcJRNj1mOiF2HZ5jQHrXoVoHcNHdBU5ejJljcBl+VTLoYXR6FidjTN86GjO6hyshi6TZFuNvv0dEOgaOFv6Lw==} + '@base-ui/react@1.2.0': + resolution: {integrity: sha512-O6aEQHcm+QyGTFY28xuwRD3SEJGZOBDpyjN2WvpfWYFVhg+3zfXPysAILqtM0C1kWC82MccOE/v1j+GHXE4qIw==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17 || ^18 || ^19 @@ -367,8 +361,8 @@ packages: '@types/react': optional: true - '@base-ui/utils@0.2.4': - resolution: {integrity: sha512-smZwpMhjO29v+jrZusBSc5T+IJ3vBb9cjIiBjtKcvWmRj9Z4DWGVR3efr1eHR56/bqY5a4qyY9ElkOY5ljo3ng==} + '@base-ui/utils@0.2.5': + resolution: {integrity: sha512-oYC7w0gp76RI5MxprlGLV0wze0SErZaRl3AAkeP3OnNB/UBMb6RqNf6ZSIlxOc9Qp68Ab3C2VOcJQyRs7Xc7Vw==} peerDependencies: '@types/react': ^17 || ^18 || ^19 react: ^17 || ^18 || ^19 @@ -644,8 +638,14 @@ packages: '@kevisual/cache@0.0.2': resolution: {integrity: sha512-2Cl5KF2Gi27uLfhO6CdTMFnRzx9vYnqevAo7d9ab3rOaqTgF8tLeAXglXyRbaWW3WUbHU2XaOb4r98uUsqIQQw==} - '@kevisual/cnb@0.0.22': - resolution: {integrity: sha512-KX8oSmmaHnT4qqCfAoQoHZbkcohUVSK7LfdsEKTlItrE77rPyZcvD+APByroxH4FMQ80ItRW9tQlxBO8iRlrIw==} + '@kevisual/cnb-ai@0.0.2': + resolution: {integrity: sha512-GlyiYapf/3x4mPglhddJgZsS/LGY6/MOtYdmsPjKZVOdEEiRUrO0HRhIm1Xg0xuUGerj5B+orjIud8SvKbciQg==} + + '@kevisual/cnb@0.0.24': + resolution: {integrity: sha512-LxFhnf7hAyXlLn+CJihKeNud9wwo2QBj5QQY1eQCeDFlujnSGyc9WkqKG4dHTe9wdTDLbxanlb5/BXzFHudTbw==} + + '@kevisual/cnb@0.0.25': + resolution: {integrity: sha512-H9KTDaTDKQaWYriys2yzAz58g6V7ZFPuRQSKXdSHAEQTNwOI/Yh0HRu4W+1W2O2tWBOZ63wFj43gA2zTCjI9zg==} '@kevisual/context@0.0.4': resolution: {integrity: sha512-HJeLeZQLU+7tCluSfOyvkgKLs0HjCZrdJlZgEgKRSa8XTwZfMAUt6J7qZTbrZAHBlPtX68EPu/PI8JMCeu3WAQ==} @@ -857,9 +857,6 @@ packages: cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-rc.2': - resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} - '@rolldown/pluginutils@1.0.0-rc.3': resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} @@ -1104,20 +1101,20 @@ packages: resolution: {integrity: sha512-xyIfof8eHBuub1CkBnbKNKQXeRZC4dClhmzePHVOEel4G7lk/dW+TQ16da7CFdeNLv6u6Owf5VoBQxoo6DFTSA==} engines: {node: '>=12'} - '@tanstack/react-router-devtools@1.158.4': - resolution: {integrity: sha512-/EkrrJGTPC7MwLfcYYmZM71ANDMLbwcYvBtDA+48LqHUKal8mpWlaodiWdFFnVQ7ny/unbUxljgdrNV9YZiyFQ==} + '@tanstack/react-router-devtools@1.159.10': + resolution: {integrity: sha512-dfaXh7WBz1HJ639oMix5hJUJWCxrpcINPVXiN/3CBPYuGB2wYsBG2Iw61yufp+KkuFatAy95VTTnyeqGOq8ysw==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.158.4 - '@tanstack/router-core': ^1.158.4 + '@tanstack/react-router': ^1.159.10 + '@tanstack/router-core': ^1.159.9 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' peerDependenciesMeta: '@tanstack/router-core': optional: true - '@tanstack/react-router@1.158.4': - resolution: {integrity: sha512-i15xXumgvpuM+4NSuIwgouGezuj9eHjZsgpTZSQ7E9pa8rYmhZbWnf8xU68qaLmaKIol/e75o/YzVH2QWHs3iQ==} + '@tanstack/react-router@1.159.10': + resolution: {integrity: sha512-PQO6hpnqNALmotXasfCafVBWWKpxChmYbXRjwPZQQq8au7m71z4WtAHsmUA2v/uqqhsvE9ySyWVx/Ece/Uq2ZQ==} engines: {node: '>=12'} peerDependencies: react: '>=18.0.0 || >=19.0.0' @@ -1129,30 +1126,30 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-core@1.158.4': - resolution: {integrity: sha512-KikgYdyrEFqsjjgv9pMhDTMmASMAyFRvUiKFdQPQtXq3aD1qv/zck4CbA4bfzp9N9nYu/qvWwU1mlYU4u5JeXg==} + '@tanstack/router-core@1.159.9': + resolution: {integrity: sha512-A9B8gvklvMCjSAFG8nDAhfmROI8kjcij8wzznQaw4RfGIOrYXyNe5fCAcbHXGpgNeTE2JnK75b6AjidDPQfrmw==} engines: {node: '>=12'} - '@tanstack/router-devtools-core@1.158.4': - resolution: {integrity: sha512-9MKzstYp/6sNRSwJY2b9ipVW8b8/x1iSFNfLhOJur2tnjB3RhwCDfy0u+to70BrRpBEWeq7jvJoVdP029gzUUg==} + '@tanstack/router-devtools-core@1.159.9': + resolution: {integrity: sha512-2b1zmN12qOhuxAYq5EEtecDmj1ekA8i7yKKDXc2WYCwc6W2sqz+JMoKDwGzAIrC8rHpe4n0+eU3r1re5VnIPcg==} engines: {node: '>=12'} peerDependencies: - '@tanstack/router-core': ^1.158.4 + '@tanstack/router-core': ^1.159.9 csstype: ^3.0.10 peerDependenciesMeta: csstype: optional: true - '@tanstack/router-generator@1.158.4': - resolution: {integrity: sha512-RQmqMTT0oV8dS/3Glcq9SPzDZqOPyKb/LVFUkNoTfMwW88WyGnQcYqZAkmVk/CGBWWDfwObOUZoGq5jTF7bG8w==} + '@tanstack/router-generator@1.159.9': + resolution: {integrity: sha512-WDn17uYP/Mk//7OP5ZnlYK228ezQ/N+pVA8BrwoF69g3Scq5CkfZUD633UI1+oXIl8Fb1pCt4CU0LkN7niMTmQ==} engines: {node: '>=12'} - '@tanstack/router-plugin@1.158.4': - resolution: {integrity: sha512-g2sytAhljw6Jd6Klu37OZ75+o+vhiGdbWtnBy/4rYLC4NN6hSnjgJQRI3+h1CI1KQ4EUgsZYZr/hgE1KHoiWYQ==} + '@tanstack/router-plugin@1.159.11': + resolution: {integrity: sha512-QrnwUX9XtfOqiNsD/AYmqTvvezuUwv4W7ewWwUgSTe0CEkuyjEa8aiZMLrofB613lRmoHSmjT6ciaV3z2vHdWw==} engines: {node: '>=12'} peerDependencies: '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.158.4 + '@tanstack/react-router': ^1.159.10 vite: '>=5.0.0 || >=6.0.0 || >=7.0.0' vite-plugin-solid: ^2.11.10 webpack: '>=5.92.0' @@ -1200,8 +1197,8 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/node@25.2.2': - resolution: {integrity: sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ==} + '@types/node@25.2.3': + resolution: {integrity: sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1222,8 +1219,8 @@ packages: '@types/react@19.1.6': resolution: {integrity: sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==} - '@types/react@19.2.13': - resolution: {integrity: sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==} + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -1232,8 +1229,8 @@ packages: resolution: {integrity: sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w==} engines: {node: '>= 20'} - '@vitejs/plugin-react@5.1.3': - resolution: {integrity: sha512-NVUnA6gQCl8jfoYqKqQU5Clv0aPw14KkZYCsX6T9Lfu9slI0LOU10OTwFHS/WmptsMMpshNd/1tuWsHQ2Uk+cg==} + '@vitejs/plugin-react@5.1.4': + resolution: {integrity: sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 @@ -1243,8 +1240,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - ai@6.0.77: - resolution: {integrity: sha512-tyyhrRpCRFVlivdNIFLK8cexSBB2jwTqO0z1qJQagk+UxZ+MW8h5V8xsvvb+xdKDY482Y8KAm0mr7TDnPKvvlw==} + ai@6.0.86: + resolution: {integrity: sha512-U2W2LBCHA/pr0Ui7vmmsjBiLEzBbZF3yVHNy7Rbzn7IX+SvoQPFM5rN74hhfVzZoE8zBuGD4nLLk+j0elGacvQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -1372,8 +1369,8 @@ packages: resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} engines: {node: '>=12'} - dotenv@17.2.4: - resolution: {integrity: sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==} + dotenv@17.3.1: + resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} engines: {node: '>=12'} electron-to-chromium@1.5.65: @@ -1731,8 +1728,8 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lucide-react@0.563.0: - resolution: {integrity: sha512-8dXPB2GI4dI8jV4MgUDGBeLdGk8ekfqVZ0BdLcrRzocGgG75ltNEmWS+gE7uokKF/0oSUuczNDT+g9hFJ23FkA==} + lucide-react@0.564.0: + resolution: {integrity: sha512-JJ8GVTQqFwuliifD48U6+h7DXEHdkhJ/E87kksGByII3qHxtPciVb8T8woQONHBQgHVOl7rSMrrip3SeVNy7Fg==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -2251,32 +2248,32 @@ packages: snapshots: - '@ai-sdk/anthropic@3.0.38(zod@4.3.6)': + '@ai-sdk/anthropic@3.0.44(zod@4.3.6)': dependencies: '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.14(zod@4.3.6) + '@ai-sdk/provider-utils': 4.0.15(zod@4.3.6) zod: 4.3.6 - '@ai-sdk/gateway@3.0.39(zod@4.3.6)': + '@ai-sdk/gateway@3.0.46(zod@4.3.6)': dependencies: '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.14(zod@4.3.6) + '@ai-sdk/provider-utils': 4.0.15(zod@4.3.6) '@vercel/oidc': 3.1.0 zod: 4.3.6 - '@ai-sdk/openai-compatible@2.0.28(zod@4.3.6)': + '@ai-sdk/openai-compatible@2.0.30(zod@4.3.6)': dependencies: '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.14(zod@4.3.6) + '@ai-sdk/provider-utils': 4.0.15(zod@4.3.6) zod: 4.3.6 - '@ai-sdk/openai@3.0.26(zod@4.3.6)': + '@ai-sdk/openai@3.0.29(zod@4.3.6)': dependencies: '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.14(zod@4.3.6) + '@ai-sdk/provider-utils': 4.0.15(zod@4.3.6) zod: 4.3.6 - '@ai-sdk/provider-utils@4.0.14(zod@4.3.6)': + '@ai-sdk/provider-utils@4.0.15(zod@4.3.6)': dependencies: '@ai-sdk/provider': 3.0.8 '@standard-schema/spec': 1.1.0 @@ -2391,10 +2388,6 @@ snapshots: dependencies: '@babel/types': 7.26.0 - '@babel/parser@7.27.0': - dependencies: - '@babel/types': 7.27.0 - '@babel/parser@7.29.0': dependencies: '@babel/types': 7.29.0 @@ -2468,31 +2461,25 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.27.0': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@base-ui/react@1.1.0(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@base-ui/react@1.2.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 - '@base-ui/utils': 0.2.4(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@base-ui/utils': 0.2.5(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@floating-ui/react-dom': 2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@floating-ui/utils': 0.2.10 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - reselect: 5.1.1 tabbable: 6.4.0 use-sync-external-store: 1.6.0(react@19.2.4) optionalDependencies: - '@types/react': 19.2.13 + '@types/react': 19.2.14 - '@base-ui/utils@0.2.4(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@base-ui/utils@0.2.5(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@floating-ui/utils': 0.2.10 @@ -2501,7 +2488,7 @@ snapshots: reselect: 5.1.1 use-sync-external-store: 1.6.0(react@19.2.4) optionalDependencies: - '@types/react': 19.2.13 + '@types/react': 19.2.14 '@emnapi/core@1.8.1': dependencies: @@ -2699,7 +2686,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/gen-mapping@0.3.5': @@ -2729,7 +2716,7 @@ snapshots: '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@kevisual/cache@0.0.2(rollup@4.40.1)(typescript@5.8.3)': dependencies: @@ -2743,11 +2730,72 @@ snapshots: - tslib - typescript - '@kevisual/cnb@0.0.22(dotenv@17.2.4)(idb-keyval@6.2.2)': + '@kevisual/cnb-ai@0.0.2(dotenv@17.3.1)(idb-keyval@6.2.2)': + dependencies: + '@kevisual/cnb': 0.0.24(dotenv@17.3.1)(idb-keyval@6.2.2) + '@kevisual/context': 0.0.4 + '@kevisual/query': 0.0.40 + '@kevisual/router': 0.0.70 + ws: '@kevisual/ws@8.19.0' + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - dotenv + - idb-keyval + - ioredis + - uploadthing + + '@kevisual/cnb@0.0.24(dotenv@17.3.1)(idb-keyval@6.2.2)': dependencies: '@kevisual/query': 0.0.40 '@kevisual/router': 0.0.70 - '@kevisual/use-config': 1.0.30(dotenv@17.2.4) + '@kevisual/use-config': 1.0.30(dotenv@17.3.1) + es-toolkit: 1.44.0 + nanoid: 5.1.6 + unstorage: 1.17.4(idb-keyval@6.2.2) + ws: '@kevisual/ws@8.19.0' + zod: 4.3.6 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - dotenv + - idb-keyval + - ioredis + - uploadthing + + '@kevisual/cnb@0.0.25(dotenv@17.3.1)(idb-keyval@6.2.2)': + dependencies: + '@kevisual/query': 0.0.40 + '@kevisual/router': 0.0.70 + '@kevisual/use-config': 1.0.30(dotenv@17.3.1) es-toolkit: 1.44.0 nanoid: 5.1.6 unstorage: 1.17.4(idb-keyval@6.2.2) @@ -2808,10 +2856,10 @@ snapshots: '@kevisual/types@0.0.12': {} - '@kevisual/use-config@1.0.30(dotenv@17.2.4)': + '@kevisual/use-config@1.0.30(dotenv@17.3.1)': dependencies: '@kevisual/load': 0.0.6 - dotenv: 17.2.4 + dotenv: 17.3.1 '@kevisual/ws@8.19.0': {} @@ -2950,8 +2998,6 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.0.0-rc.3': optional: true - '@rolldown/pluginutils@1.0.0-rc.2': {} - '@rolldown/pluginutils@1.0.0-rc.3': {} '@rollup/plugin-commonjs@28.0.3(rollup@4.40.1)': @@ -3115,31 +3161,31 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 - '@tailwindcss/vite@4.1.18(vite@8.0.0-beta.13(@types/node@25.2.2)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1))': + '@tailwindcss/vite@4.1.18(vite@8.0.0-beta.13(@types/node@25.2.3)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1))': dependencies: '@tailwindcss/node': 4.1.18 '@tailwindcss/oxide': 4.1.18 tailwindcss: 4.1.18 - vite: 8.0.0-beta.13(@types/node@25.2.2)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1) + vite: 8.0.0-beta.13(@types/node@25.2.3)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1) '@tanstack/history@1.154.14': {} - '@tanstack/react-router-devtools@1.158.4(@tanstack/react-router@1.158.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.158.4)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tanstack/react-router-devtools@1.159.10(@tanstack/react-router@1.159.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.159.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@tanstack/react-router': 1.158.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/router-devtools-core': 1.158.4(@tanstack/router-core@1.158.4)(csstype@3.2.3) + '@tanstack/react-router': 1.159.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tanstack/router-devtools-core': 1.159.9(@tanstack/router-core@1.159.9)(csstype@3.2.3) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) optionalDependencies: - '@tanstack/router-core': 1.158.4 + '@tanstack/router-core': 1.159.9 transitivePeerDependencies: - csstype - '@tanstack/react-router@1.158.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tanstack/react-router@1.159.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@tanstack/history': 1.154.14 '@tanstack/react-store': 0.8.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/router-core': 1.158.4 + '@tanstack/router-core': 1.159.9 isbot: 5.1.34 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -3153,7 +3199,7 @@ snapshots: react-dom: 19.2.4(react@19.2.4) use-sync-external-store: 1.6.0(react@19.2.4) - '@tanstack/router-core@1.158.4': + '@tanstack/router-core@1.159.9': dependencies: '@tanstack/history': 1.154.14 '@tanstack/store': 0.8.0 @@ -3163,18 +3209,18 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/router-devtools-core@1.158.4(@tanstack/router-core@1.158.4)(csstype@3.2.3)': + '@tanstack/router-devtools-core@1.159.9(@tanstack/router-core@1.159.9)(csstype@3.2.3)': dependencies: - '@tanstack/router-core': 1.158.4 + '@tanstack/router-core': 1.159.9 clsx: 2.1.1 goober: 2.1.18(csstype@3.2.3) tiny-invariant: 1.3.3 optionalDependencies: csstype: 3.2.3 - '@tanstack/router-generator@1.158.4': + '@tanstack/router-generator@1.159.9': dependencies: - '@tanstack/router-core': 1.158.4 + '@tanstack/router-core': 1.159.9 '@tanstack/router-utils': 1.158.0 '@tanstack/virtual-file-routes': 1.154.7 prettier: 3.8.1 @@ -3185,7 +3231,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.158.4(@tanstack/react-router@1.158.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.0-beta.13(@types/node@25.2.2)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1))': + '@tanstack/router-plugin@1.159.11(@tanstack/react-router@1.159.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.0-beta.13(@types/node@25.2.3)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) @@ -3193,16 +3239,16 @@ snapshots: '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 - '@tanstack/router-core': 1.158.4 - '@tanstack/router-generator': 1.158.4 + '@tanstack/router-core': 1.159.9 + '@tanstack/router-generator': 1.159.9 '@tanstack/router-utils': 1.158.0 '@tanstack/virtual-file-routes': 1.154.7 chokidar: 3.6.0 unplugin: 2.3.11 zod: 3.25.76 optionalDependencies: - '@tanstack/react-router': 1.158.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - vite: 8.0.0-beta.13(@types/node@25.2.2)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1) + '@tanstack/react-router': 1.159.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + vite: 8.0.0-beta.13(@types/node@25.2.3)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1) transitivePeerDependencies: - supports-color @@ -3231,30 +3277,30 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.29.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.29.0 '@types/estree@1.0.7': {} '@types/estree@1.0.8': {} - '@types/node@25.2.2': + '@types/node@25.2.3': dependencies: undici-types: 7.16.0 @@ -3262,9 +3308,9 @@ snapshots: '@types/prop-types@15.7.14': {} - '@types/react-dom@19.2.3(@types/react@19.2.13)': + '@types/react-dom@19.2.3(@types/react@19.2.14)': dependencies: - '@types/react': 19.2.13 + '@types/react': 19.2.14 '@types/react-transition-group@4.4.12(@types/react@19.1.6)': dependencies: @@ -3274,7 +3320,7 @@ snapshots: dependencies: csstype: 3.1.3 - '@types/react@19.2.13': + '@types/react@19.2.14': dependencies: csstype: 3.2.3 @@ -3282,25 +3328,25 @@ snapshots: '@vercel/oidc@3.1.0': {} - '@vitejs/plugin-react@5.1.3(vite@8.0.0-beta.13(@types/node@25.2.2)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1))': + '@vitejs/plugin-react@5.1.4(vite@8.0.0-beta.13(@types/node@25.2.3)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) - '@rolldown/pluginutils': 1.0.0-rc.2 + '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 8.0.0-beta.13(@types/node@25.2.2)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1) + vite: 8.0.0-beta.13(@types/node@25.2.3)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1) transitivePeerDependencies: - supports-color acorn@8.15.0: {} - ai@6.0.77(zod@4.3.6): + ai@6.0.86(zod@4.3.6): dependencies: - '@ai-sdk/gateway': 3.0.39(zod@4.3.6) + '@ai-sdk/gateway': 3.0.46(zod@4.3.6) '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.14(zod@4.3.6) + '@ai-sdk/provider-utils': 4.0.15(zod@4.3.6) '@opentelemetry/api': 1.9.0 zod: 4.3.6 @@ -3420,7 +3466,7 @@ snapshots: dotenv@16.5.0: {} - dotenv@17.2.4: {} + dotenv@17.3.1: {} electron-to-chromium@1.5.65: {} @@ -3707,7 +3753,7 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react@0.563.0(react@19.2.4): + lucide-react@0.564.0(react@19.2.4): dependencies: react: 19.2.4 @@ -4036,7 +4082,7 @@ snapshots: dependencies: react: 19.2.4 - vite@8.0.0-beta.13(@types/node@25.2.2)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1): + vite@8.0.0-beta.13(@types/node@25.2.3)(esbuild@0.27.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.5.1): dependencies: '@oxc-project/runtime': 0.112.0 fdir: 6.5.0(picomatch@4.0.3) @@ -4046,7 +4092,7 @@ snapshots: rolldown: 1.0.0-rc.3 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.2.2 + '@types/node': 25.2.3 esbuild: 0.27.2 fsevents: 2.3.3 jiti: 2.6.1 @@ -4071,9 +4117,9 @@ snapshots: zod@4.3.6: {} - zustand@5.0.11(@types/react@19.2.13)(immer@10.1.1)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)): + zustand@5.0.11(@types/react@19.2.14)(immer@10.1.1)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)): optionalDependencies: - '@types/react': 19.2.13 + '@types/react': 19.2.14 immer: 10.1.1 react: 19.2.4 use-sync-external-store: 1.6.0(react@19.2.4) diff --git a/src/agents/app.ts b/src/agents/app.ts index 1a678ea..280d851 100644 --- a/src/agents/app.ts +++ b/src/agents/app.ts @@ -3,8 +3,7 @@ import { QueryRouterServer } from '@kevisual/router/browser' import { useContextKey } from '@kevisual/context' import { useConfigStore } from '@/app/config/store' import { CNB } from '@kevisual/cnb' - -export const app = useContextKey('router', new QueryRouterServer()) +export const app = useContextKey('app', new QueryRouterServer()) export const cnb: CNB = useContextKey('cnb', () => { const state = useConfigStore.getState() @@ -13,9 +12,19 @@ export const cnb: CNB = useContextKey('cnb', () => { if (config.ENABLE_CORS) { cors.baseUrl = config.CNB_CORS_URL || 'https://cors.kevisual.cn' } + console.log('state', state) + // if(state.config.) return new CNB({ token: config.CNB_API_KEY, cookie: config.CNB_COOKIE, cors }) -}) \ No newline at end of file +}) +// + +// import '@kevisual/cnb-ai' + +const url = 'https://kevisual.cn/root/cnb-ai/dist/app.js' +setTimeout(() => { + import(/* @vite-ignore */url) +}, 2000) \ No newline at end of file diff --git a/src/app/repo/components/RepoCard.tsx b/src/app/repo/components/RepoCard.tsx index 7706679..4f91b6a 100644 --- a/src/app/repo/components/RepoCard.tsx +++ b/src/app/repo/components/RepoCard.tsx @@ -13,10 +13,12 @@ import { PopoverContent, PopoverTrigger, } from '@/components/ui/popover' -import { Star, GitFork, FileText, Edit, FolderGit2, MoreVertical, FileText as IssueIcon, Settings, Play, Trash2, RefreshCw } from 'lucide-react' +import { Star, GitFork, FileText, Edit, FolderGit2, MoreVertical, FileText as IssueIcon, Settings, Play, Trash2, RefreshCw, BookOpen } from 'lucide-react' import { useRepoStore } from '../store' import { useMemo, useState } from 'react' import { myOrgs } from '../store/build' +import { app, cnb } from '@/agents/app' +import { toast } from 'sonner' interface RepoCardProps { repo: any @@ -37,12 +39,36 @@ export function RepoCard({ repo, onStartWorkspace, onEdit, onIssue, onSettings, const isWorkspaceActive = !!workspace const owner = repo.path.split('/')[0] const isMine = myOrgs.includes(owner) + + const isKnowledge = repo?.flags === "KnowledgeBase" + const createKnow = async () => { + const res = await app.run({ path: 'cnb', key: 'build-knowledge-base', payload: { repo: repo.path } }) + if (res.code === 200) { + toast.success("知识库创建中") + } + } return ( <>
+ {isKnowledge && ( + + + + +
+ } + /> + +

知识库

+
+ + + )} 设置 + { + createKnow() + }} className="cursor-pointer"> + + 知识库创建 + { e.preventDefault() @@ -201,7 +233,7 @@ export function RepoCard({ repo, onStartWorkspace, onEdit, onIssue, onSettings, 运行中 } {isMine && ( - onSync?.(repo)} > diff --git a/src/main.tsx b/src/main.tsx index d8e0544..1f87f75 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -3,7 +3,7 @@ import { RouterProvider, createRouter } from '@tanstack/react-router' import { routeTree } from './routeTree.gen' import './index.css' import { basename } from './modules/basename' - +// import './agents/app' // Set up a Router instance const router = createRouter({ routeTree,