refactor: knowledge base database engine
This commit is contained in:
parent
b85765915e
commit
34ebab0af8
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
@ -49,7 +49,7 @@ jobs:
|
|||||||
- name: Build Linux
|
- name: Build Linux
|
||||||
if: matrix.os == 'ubuntu-latest'
|
if: matrix.os == 'ubuntu-latest'
|
||||||
run: |
|
run: |
|
||||||
yarn download:npm linux
|
yarn build:npm linux
|
||||||
yarn build:linux
|
yarn build:linux
|
||||||
|
|
||||||
env:
|
env:
|
||||||
@ -58,7 +58,7 @@ jobs:
|
|||||||
- name: Build Mac
|
- name: Build Mac
|
||||||
if: matrix.os == 'macos-latest'
|
if: matrix.os == 'macos-latest'
|
||||||
run: |
|
run: |
|
||||||
yarn download:npm darwin
|
yarn build:npm mac
|
||||||
yarn build:mac
|
yarn build:mac
|
||||||
env:
|
env:
|
||||||
CSC_LINK: ${{ secrets.CSC_LINK }}
|
CSC_LINK: ${{ secrets.CSC_LINK }}
|
||||||
|
|||||||
@ -1,25 +0,0 @@
|
|||||||
diff --git a/src/libsql-db.js b/src/libsql-db.js
|
|
||||||
index 58c42e4910bd0e53bc497ff9b9702b1f7a961266..c02351dc95ba36fc4db97ddfb69206539fb4de1c 100644
|
|
||||||
--- a/src/libsql-db.js
|
|
||||||
+++ b/src/libsql-db.js
|
|
||||||
@@ -41,9 +41,9 @@ export class LibSqlDb {
|
|
||||||
}
|
|
||||||
async similaritySearch(query, k) {
|
|
||||||
const statement = `SELECT id, pageContent, uniqueLoaderId, source, metadata,
|
|
||||||
- vector_distance_cos(vector, vector32('[${query.join(',')}]'))
|
|
||||||
+ vector_distance_cos(vector, vector32('[${query.join(',')}]')) as distance
|
|
||||||
FROM ${this.tableName}
|
|
||||||
- ORDER BY vector_distance_cos(vector, vector32('[${query.join(',')}]')) ASC
|
|
||||||
+ ORDER BY distance DESC
|
|
||||||
LIMIT ${k};`;
|
|
||||||
this.debug(`Executing statement - ${truncateCenterString(statement, 700)}`);
|
|
||||||
const results = await this.client.execute(statement);
|
|
||||||
@@ -52,7 +52,7 @@ export class LibSqlDb {
|
|
||||||
return {
|
|
||||||
metadata,
|
|
||||||
pageContent: result.pageContent.toString(),
|
|
||||||
- score: 1,
|
|
||||||
+ score: 1 - result.distance,
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
17
.yarn/patches/@llm-tools-embedjs-npm-0.1.25-ec5645cf36.patch
Normal file
17
.yarn/patches/@llm-tools-embedjs-npm-0.1.25-ec5645cf36.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
diff --git a/src/core/rag-embedding.js b/src/core/rag-embedding.js
|
||||||
|
index 50c3c4064af17bc4c7c46554d8f2419b3afceb0e..632c9b2e04d2e0e3bb09ef1cd8f29d2560e6afc1 100644
|
||||||
|
--- a/src/core/rag-embedding.js
|
||||||
|
+++ b/src/core/rag-embedding.js
|
||||||
|
@@ -1,10 +1,8 @@
|
||||||
|
export class RAGEmbedding {
|
||||||
|
static singleton;
|
||||||
|
static async init(embeddingModel) {
|
||||||
|
- if (!this.singleton) {
|
||||||
|
- await embeddingModel.init();
|
||||||
|
- this.singleton = new RAGEmbedding(embeddingModel);
|
||||||
|
- }
|
||||||
|
+ await embeddingModel.init();
|
||||||
|
+ this.singleton = new RAGEmbedding(embeddingModel);
|
||||||
|
}
|
||||||
|
static getInstance() {
|
||||||
|
return RAGEmbedding.singleton;
|
||||||
@ -20,7 +20,7 @@ export default defineConfig({
|
|||||||
'@llm-tools/embedjs-loader-xml',
|
'@llm-tools/embedjs-loader-xml',
|
||||||
'@llm-tools/embedjs-loader-pdf',
|
'@llm-tools/embedjs-loader-pdf',
|
||||||
'@llm-tools/embedjs-loader-sitemap',
|
'@llm-tools/embedjs-loader-sitemap',
|
||||||
'@llm-tools/embedjs-libsql'
|
'@llm-tools/embedjs-lancedb'
|
||||||
]
|
]
|
||||||
}),
|
}),
|
||||||
...visualizerPlugin('main')
|
...visualizerPlugin('main')
|
||||||
@ -34,9 +34,8 @@ export default defineConfig({
|
|||||||
},
|
},
|
||||||
build: {
|
build: {
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: ['@libsql/client']
|
external: ['@lancedb/lancedb']
|
||||||
},
|
}
|
||||||
minify: true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
preload: {
|
preload: {
|
||||||
@ -51,10 +50,7 @@ export default defineConfig({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
optimizeDeps: {
|
optimizeDeps: {
|
||||||
exclude: ['chunk-7UIZINC5.js', 'chunk-7OJJKI46.js']
|
exclude: []
|
||||||
},
|
|
||||||
build: {
|
|
||||||
minify: true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -25,7 +25,6 @@
|
|||||||
"typecheck": "npm run typecheck:node && npm run typecheck:web",
|
"typecheck": "npm run typecheck:node && npm run typecheck:web",
|
||||||
"start": "electron-vite preview",
|
"start": "electron-vite preview",
|
||||||
"dev": "electron-vite dev",
|
"dev": "electron-vite dev",
|
||||||
"download:npm": "node scripts/download-npm.js",
|
|
||||||
"build": "npm run typecheck && electron-vite build",
|
"build": "npm run typecheck && electron-vite build",
|
||||||
"postinstall": "electron-builder install-app-deps",
|
"postinstall": "electron-builder install-app-deps",
|
||||||
"build:unpack": "dotenv npm run build && electron-builder --dir",
|
"build:unpack": "dotenv npm run build && electron-builder --dir",
|
||||||
@ -37,6 +36,7 @@
|
|||||||
"build:linux": "dotenv electron-vite build && electron-builder --linux",
|
"build:linux": "dotenv electron-vite build && electron-builder --linux",
|
||||||
"build:linux:arm64": "dotenv electron-vite build && electron-builder --linux --arm64",
|
"build:linux:arm64": "dotenv electron-vite build && electron-builder --linux --arm64",
|
||||||
"build:linux:x64": "dotenv electron-vite build && electron-builder --linux --x64",
|
"build:linux:x64": "dotenv electron-vite build && electron-builder --linux --x64",
|
||||||
|
"build:npm": "node scripts/build-npm.js",
|
||||||
"release": "node scripts/version.js",
|
"release": "node scripts/version.js",
|
||||||
"publish": "yarn release patch push",
|
"publish": "yarn release patch push",
|
||||||
"pulish:artifacts": "cd packages/artifacts && npm publish && cd -",
|
"pulish:artifacts": "cd packages/artifacts && npm publish && cd -",
|
||||||
@ -49,8 +49,8 @@
|
|||||||
"@electron-toolkit/preload": "^3.0.0",
|
"@electron-toolkit/preload": "^3.0.0",
|
||||||
"@electron-toolkit/utils": "^3.0.0",
|
"@electron-toolkit/utils": "^3.0.0",
|
||||||
"@electron/notarize": "^2.5.0",
|
"@electron/notarize": "^2.5.0",
|
||||||
"@llm-tools/embedjs": "^0.1.25",
|
"@llm-tools/embedjs": "patch:@llm-tools/embedjs@npm%3A0.1.25#~/.yarn/patches/@llm-tools-embedjs-npm-0.1.25-ec5645cf36.patch",
|
||||||
"@llm-tools/embedjs-libsql": "patch:@llm-tools/embedjs-libsql@npm%3A0.1.25#~/.yarn/patches/@llm-tools-embedjs-libsql-npm-0.1.25-fad000d74c.patch",
|
"@llm-tools/embedjs-lancedb": "^0.1.25",
|
||||||
"@llm-tools/embedjs-loader-csv": "^0.1.25",
|
"@llm-tools/embedjs-loader-csv": "^0.1.25",
|
||||||
"@llm-tools/embedjs-loader-markdown": "^0.1.25",
|
"@llm-tools/embedjs-loader-markdown": "^0.1.25",
|
||||||
"@llm-tools/embedjs-loader-msoffice": "^0.1.25",
|
"@llm-tools/embedjs-loader-msoffice": "^0.1.25",
|
||||||
@ -61,6 +61,7 @@
|
|||||||
"@llm-tools/embedjs-openai": "^0.1.25",
|
"@llm-tools/embedjs-openai": "^0.1.25",
|
||||||
"@types/react-infinite-scroll-component": "^5.0.0",
|
"@types/react-infinite-scroll-component": "^5.0.0",
|
||||||
"adm-zip": "^0.5.16",
|
"adm-zip": "^0.5.16",
|
||||||
|
"apache-arrow": "^18.1.0",
|
||||||
"docx": "^9.0.2",
|
"docx": "^9.0.2",
|
||||||
"electron-log": "^5.1.5",
|
"electron-log": "^5.1.5",
|
||||||
"electron-store": "^8.2.0",
|
"electron-store": "^8.2.0",
|
||||||
|
|||||||
@ -9,29 +9,34 @@ exports.default = async function (context) {
|
|||||||
const arch = context.arch
|
const arch = context.arch
|
||||||
|
|
||||||
if (platform === 'mac') {
|
if (platform === 'mac') {
|
||||||
const nodeModulesPath = path.join(
|
const node_modules_path = path.join(
|
||||||
context.appOutDir,
|
context.appOutDir,
|
||||||
'Cherry Studio.app',
|
'Cherry Studio.app',
|
||||||
'Contents',
|
'Contents',
|
||||||
'Resources',
|
'Resources',
|
||||||
'app.asar.unpacked',
|
'app.asar.unpacked',
|
||||||
'node_modules',
|
'node_modules'
|
||||||
'@libsql'
|
|
||||||
)
|
)
|
||||||
|
|
||||||
keepLibsqlNodeModules(nodeModulesPath, arch === Arch.arm64 ? ['darwin-arm64'] : ['darwin-x64'])
|
removeDifferentArchNodeFiles(
|
||||||
|
node_modules_path,
|
||||||
|
'@lancedb',
|
||||||
|
arch === Arch.arm64 ? ['lancedb-darwin-arm64'] : ['lancedb-darwin-x64']
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (platform === 'linux') {
|
if (platform === 'linux') {
|
||||||
const nodeModulesPath = path.join(context.appOutDir, 'resources', 'app.asar.unpacked', 'node_modules', '@libsql')
|
const node_modules_path = path.join(context.appOutDir, 'resources', 'app.asar.unpacked', 'node_modules')
|
||||||
keepLibsqlNodeModules(
|
const _arch =
|
||||||
nodeModulesPath,
|
arch === Arch.arm64
|
||||||
arch === Arch.arm64 ? ['linux-arm64-gnu', 'linux-arm64-musl'] : ['linux-x64-gnu', 'linux-x64-musl']
|
? ['lancedb-linux-arm64-gnu', 'lancedb-linux-arm64-musl']
|
||||||
)
|
: ['lancedb-linux-x64-gnu', 'lancedb-linux-x64-musl']
|
||||||
|
removeDifferentArchNodeFiles(node_modules_path, '@lancedb', _arch)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function keepLibsqlNodeModules(modulePath, arch) {
|
function removeDifferentArchNodeFiles(nodeModulesPath, packageName, arch) {
|
||||||
|
const modulePath = path.join(nodeModulesPath, packageName)
|
||||||
const dirs = fs.readdirSync(modulePath)
|
const dirs = fs.readdirSync(modulePath)
|
||||||
dirs
|
dirs
|
||||||
.filter((dir) => !arch.includes(dir))
|
.filter((dir) => !arch.includes(dir))
|
||||||
|
|||||||
28
scripts/build-npm.js
Normal file
28
scripts/build-npm.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
const { downloadNpmPackage } = require('./utils')
|
||||||
|
|
||||||
|
async function downloadNpm(platform) {
|
||||||
|
if (!platform || platform === 'mac') {
|
||||||
|
downloadNpmPackage(
|
||||||
|
'@lancedb/lancedb-darwin-arm64',
|
||||||
|
'https://registry.npmjs.org/@lancedb/lancedb-darwin-arm64/-/lancedb-darwin-arm64-0.14.0.tgz'
|
||||||
|
)
|
||||||
|
downloadNpmPackage(
|
||||||
|
'@lancedb/lancedb-darwin-x64',
|
||||||
|
'https://registry.npmjs.org/@lancedb/lancedb-darwin-x64/-/lancedb-darwin-x64-0.14.0.tgz'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!platform || platform === 'linux') {
|
||||||
|
downloadNpmPackage(
|
||||||
|
'@lancedb/lancedb-linux-arm64-gnu',
|
||||||
|
'https://registry.npmjs.org/@lancedb/lancedb-linux-arm64-gnu/-/lancedb-linux-arm64-gnu-0.14.0.tgz'
|
||||||
|
)
|
||||||
|
downloadNpmPackage(
|
||||||
|
'@lancedb/lancedb-linux-x64-gnu',
|
||||||
|
'https://registry.npmjs.org/@lancedb/lancedb-linux-x64-gnu/-/lancedb-linux-x64-gnu-0.14.0.tgz'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const platformArg = process.argv[2]
|
||||||
|
downloadNpm(platformArg)
|
||||||
@ -1,14 +0,0 @@
|
|||||||
const { downloadNpmPackage } = require('./utils')
|
|
||||||
|
|
||||||
async function downloadNpm(platform) {
|
|
||||||
if (!platform || platform === 'darwin') {
|
|
||||||
downloadNpmPackage('@libsql', '0.4.7', 'darwin', ['arm64', 'x64'])
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!platform || platform === 'linux') {
|
|
||||||
downloadNpmPackage('@libsql', '0.4.7', 'linux', ['arm64-gnu', 'x64-gnu'])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const platformArg = process.argv[2]
|
|
||||||
downloadNpm(platformArg)
|
|
||||||
@ -2,37 +2,33 @@ const fs = require('fs')
|
|||||||
const path = require('path')
|
const path = require('path')
|
||||||
const os = require('os')
|
const os = require('os')
|
||||||
|
|
||||||
function downloadNpmPackage(package, version, platform, architectures = ['x64', 'arm64']) {
|
function downloadNpmPackage(packageName, url) {
|
||||||
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'npm-download-'))
|
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'npm-download-'))
|
||||||
|
|
||||||
for (const arch of architectures) {
|
const targetDir = path.join('./node_modules/', packageName)
|
||||||
const targetDir = path.join('./node_modules/', package, `${platform}-${arch}`)
|
const filename = packageName.replace('/', '-') + '.tgz'
|
||||||
|
|
||||||
// Skip if directory already exists
|
// Skip if directory already exists
|
||||||
if (fs.existsSync(targetDir)) {
|
if (fs.existsSync(targetDir)) {
|
||||||
console.log(`${targetDir} already exists, skipping download...`)
|
console.log(`${targetDir} already exists, skipping download...`)
|
||||||
continue
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const filename = path.join(tempDir, `${platform}-${arch}-${version}.tgz`)
|
try {
|
||||||
const url = `https://registry.npmjs.org/${package}/${platform}-${arch}/-/${platform}-${arch}-${version}.tgz`
|
console.log(`Downloading ${packageName}...`, url)
|
||||||
|
const { execSync } = require('child_process')
|
||||||
try {
|
execSync(`curl --fail -o ${filename} ${url}`)
|
||||||
console.log(`Downloading ${filename}...`, url)
|
|
||||||
const { execSync } = require('child_process')
|
console.log(`Extracting ${filename}...`)
|
||||||
execSync(`curl --fail -o ${filename} ${url}`)
|
execSync(`tar -xvf ${filename}`)
|
||||||
|
execSync(`rm -rf ${filename}`)
|
||||||
console.log(`Extracting ${filename}...`)
|
execSync(`mv package ${targetDir}`)
|
||||||
execSync(`tar -xvf ${filename}`)
|
} catch (error) {
|
||||||
execSync(`rm -rf ${filename}`)
|
console.error(`Error processing ${packageName}: ${error.message}`)
|
||||||
execSync(`mv package ${targetDir}`)
|
if (fs.existsSync(filename)) {
|
||||||
} catch (error) {
|
fs.unlinkSync(filename)
|
||||||
console.error(`Error processing ${filename}: ${error.message}`)
|
|
||||||
if (fs.existsSync(filename)) {
|
|
||||||
fs.unlinkSync(filename)
|
|
||||||
}
|
|
||||||
throw error
|
|
||||||
}
|
}
|
||||||
|
throw error
|
||||||
}
|
}
|
||||||
|
|
||||||
fs.rmSync(tempDir, { recursive: true, force: true })
|
fs.rmSync(tempDir, { recursive: true, force: true })
|
||||||
|
|||||||
@ -56,8 +56,6 @@ class FileStorage {
|
|||||||
const storedFilePath = path.join(this.storageDir, file)
|
const storedFilePath = path.join(this.storageDir, file)
|
||||||
const storedStats = fs.statSync(storedFilePath)
|
const storedStats = fs.statSync(storedFilePath)
|
||||||
|
|
||||||
console.debug('storedFilePath', storedFilePath)
|
|
||||||
|
|
||||||
if (storedStats.size === fileSize) {
|
if (storedStats.size === fileSize) {
|
||||||
const [originalHash, storedHash] = await Promise.all([
|
const [originalHash, storedHash] = await Promise.all([
|
||||||
this.getFileHash(filePath),
|
this.getFileHash(filePath),
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import path from 'node:path'
|
|||||||
|
|
||||||
import { LocalPathLoader, RAGApplication, RAGApplicationBuilder, TextLoader } from '@llm-tools/embedjs'
|
import { LocalPathLoader, RAGApplication, RAGApplicationBuilder, TextLoader } from '@llm-tools/embedjs'
|
||||||
import { AddLoaderReturn, ExtractChunkData } from '@llm-tools/embedjs-interfaces'
|
import { AddLoaderReturn, ExtractChunkData } from '@llm-tools/embedjs-interfaces'
|
||||||
import { LibSqlDb } from '@llm-tools/embedjs-libsql'
|
import { LanceDb } from '@llm-tools/embedjs-lancedb'
|
||||||
import { MarkdownLoader } from '@llm-tools/embedjs-loader-markdown'
|
import { MarkdownLoader } from '@llm-tools/embedjs-loader-markdown'
|
||||||
import { DocxLoader, ExcelLoader, PptLoader } from '@llm-tools/embedjs-loader-msoffice'
|
import { DocxLoader, ExcelLoader, PptLoader } from '@llm-tools/embedjs-loader-msoffice'
|
||||||
import { PdfLoader } from '@llm-tools/embedjs-loader-pdf'
|
import { PdfLoader } from '@llm-tools/embedjs-loader-pdf'
|
||||||
@ -26,8 +26,13 @@ class KnowledgeService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private getRagApplication = async ({ id, model, apiKey, baseURL }: KnowledgeBaseParams): Promise<RAGApplication> => {
|
private getRagApplication = async ({
|
||||||
console.debug('getRagApplication', path.join(this.storageDir, id))
|
id,
|
||||||
|
model,
|
||||||
|
apiKey,
|
||||||
|
baseURL,
|
||||||
|
dimensions
|
||||||
|
}: KnowledgeBaseParams): Promise<RAGApplication> => {
|
||||||
return new RAGApplicationBuilder()
|
return new RAGApplicationBuilder()
|
||||||
.setModel('NO_MODEL')
|
.setModel('NO_MODEL')
|
||||||
.setEmbeddingModel(
|
.setEmbeddingModel(
|
||||||
@ -35,19 +40,16 @@ class KnowledgeService {
|
|||||||
model,
|
model,
|
||||||
apiKey,
|
apiKey,
|
||||||
configuration: { baseURL },
|
configuration: { baseURL },
|
||||||
dimensions: 1024,
|
dimensions,
|
||||||
batchSize: 10
|
batchSize: 20
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
.setVectorDatabase(new LibSqlDb({ path: path.join(this.storageDir, id) }))
|
.setVectorDatabase(new LanceDb({ path: path.join(this.storageDir, id) }))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
public create = async (
|
public create = async (_: Electron.IpcMainInvokeEvent, base: KnowledgeBaseParams): Promise<void> => {
|
||||||
_: Electron.IpcMainInvokeEvent,
|
this.getRagApplication(base)
|
||||||
{ id, model, apiKey, baseURL }: KnowledgeBaseParams
|
|
||||||
): Promise<void> => {
|
|
||||||
this.getRagApplication({ id, model, apiKey, baseURL })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public reset = async (_: Electron.IpcMainInvokeEvent, { base }: { base: KnowledgeBaseParams }): Promise<void> => {
|
public reset = async (_: Electron.IpcMainInvokeEvent, { base }: { base: KnowledgeBaseParams }): Promise<void> => {
|
||||||
|
|||||||
@ -5,15 +5,20 @@ interface ListItemProps {
|
|||||||
active?: boolean
|
active?: boolean
|
||||||
icon?: ReactNode
|
icon?: ReactNode
|
||||||
title: string
|
title: string
|
||||||
|
subtitle?: string
|
||||||
onClick?: () => void
|
onClick?: () => void
|
||||||
}
|
}
|
||||||
|
|
||||||
const ListItem = ({ active, icon, title, onClick }: ListItemProps) => {
|
const ListItem = ({ active, icon, title, subtitle, onClick }: ListItemProps) => {
|
||||||
|
const borderRadius = subtitle ? '10px' : '16px'
|
||||||
return (
|
return (
|
||||||
<ListItemContainer className={active ? 'active' : ''} onClick={onClick}>
|
<ListItemContainer className={active ? 'active' : ''} onClick={onClick} style={{ borderRadius }}>
|
||||||
<ListItemContent>
|
<ListItemContent>
|
||||||
{icon && <span style={{ marginRight: '8px' }}>{icon}</span>}
|
{icon && <IconWrapper>{icon}</IconWrapper>}
|
||||||
{title}
|
<TextContainer>
|
||||||
|
<TitleText>{title}</TitleText>
|
||||||
|
{subtitle && <SubtitleText>{subtitle}</SubtitleText>}
|
||||||
|
</TextContainer>
|
||||||
</ListItemContent>
|
</ListItemContent>
|
||||||
</ListItemContainer>
|
</ListItemContainer>
|
||||||
)
|
)
|
||||||
@ -42,11 +47,38 @@ const ListItemContainer = styled.div`
|
|||||||
`
|
`
|
||||||
|
|
||||||
const ListItemContent = styled.div`
|
const ListItemContent = styled.div`
|
||||||
display: -webkit-box;
|
display: flex;
|
||||||
-webkit-line-clamp: 1;
|
align-items: center;
|
||||||
-webkit-box-orient: vertical;
|
gap: 8px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const IconWrapper = styled.span`
|
||||||
|
margin-right: 8px;
|
||||||
|
`
|
||||||
|
|
||||||
|
const TextContainer = styled.div`
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
overflow: hidden;
|
||||||
|
`
|
||||||
|
|
||||||
|
const TitleText = styled.div`
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
`
|
||||||
|
|
||||||
|
const SubtitleText = styled.div`
|
||||||
|
font-size: 10px;
|
||||||
|
color: var(--color-text-soft);
|
||||||
|
margin-top: 2px;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 1;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
overflow: hidden;
|
||||||
|
color: var(--color-text-3);
|
||||||
|
`
|
||||||
|
|
||||||
export default ListItem
|
export default ListItem
|
||||||
|
|||||||
@ -14,7 +14,7 @@ interface PromptPopupShowParams {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends PromptPopupShowParams {
|
interface Props extends PromptPopupShowParams {
|
||||||
resolve: (value: string) => void
|
resolve: (value: any) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
const PromptPopupContainer: React.FC<Props> = ({
|
const PromptPopupContainer: React.FC<Props> = ({
|
||||||
@ -30,18 +30,21 @@ const PromptPopupContainer: React.FC<Props> = ({
|
|||||||
|
|
||||||
const onOk = () => {
|
const onOk = () => {
|
||||||
setOpen(false)
|
setOpen(false)
|
||||||
|
resolve(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleCancel = () => {
|
const onCancel = () => {
|
||||||
setOpen(false)
|
setOpen(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
const onClose = () => {
|
const onClose = () => {
|
||||||
resolve(value)
|
resolve(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PromptPopup.hide = onCancel
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal title={title} open={open} onOk={onOk} onCancel={handleCancel} afterClose={onClose} centered>
|
<Modal title={title} open={open} onOk={onOk} onCancel={onCancel} afterClose={onClose} centered>
|
||||||
<Box mb={8}>{message}</Box>
|
<Box mb={8}>{message}</Box>
|
||||||
<Input.TextArea
|
<Input.TextArea
|
||||||
placeholder={inputPlaceholder}
|
placeholder={inputPlaceholder}
|
||||||
@ -57,10 +60,12 @@ const PromptPopupContainer: React.FC<Props> = ({
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TopViewKey = 'PromptPopup'
|
||||||
|
|
||||||
export default class PromptPopup {
|
export default class PromptPopup {
|
||||||
static topviewId = 0
|
static topviewId = 0
|
||||||
static hide() {
|
static hide() {
|
||||||
TopView.hide('PromptPopup')
|
TopView.hide(TopViewKey)
|
||||||
}
|
}
|
||||||
static show(props: PromptPopupShowParams) {
|
static show(props: PromptPopupShowParams) {
|
||||||
return new Promise<string>((resolve) => {
|
return new Promise<string>((resolve) => {
|
||||||
@ -69,7 +74,7 @@ export default class PromptPopup {
|
|||||||
{...props}
|
{...props}
|
||||||
resolve={(v) => {
|
resolve={(v) => {
|
||||||
resolve(v)
|
resolve(v)
|
||||||
this.hide()
|
TopView.hide(TopViewKey)
|
||||||
}}
|
}}
|
||||||
/>,
|
/>,
|
||||||
'PromptPopup'
|
'PromptPopup'
|
||||||
|
|||||||
@ -50,23 +50,12 @@ export const SUMMARIZE_PROMPT =
|
|||||||
export const TRANSLATE_PROMPT =
|
export const TRANSLATE_PROMPT =
|
||||||
'You are a translation expert. Translate from input language to {{target_language}}, provide the translation result directly without any explanation and keep original format. Do not translate if the target language is the same as the source language.'
|
'You are a translation expert. Translate from input language to {{target_language}}, provide the translation result directly without any explanation and keep original format. Do not translate if the target language is the same as the source language.'
|
||||||
|
|
||||||
export const REFERENCE_PROMPT = `请根据参考资料回答问题,并使用脚注格式引用数据来源。参考资料可能和问题无关,请忽略无关的参考资料。
|
export const REFERENCE_PROMPT = `请根据参考资料回答问题,并使用脚注格式引用数据来源。请忽略无关的参考资料。
|
||||||
|
|
||||||
## 脚注格式:
|
## 脚注格式:
|
||||||
|
|
||||||
1. **脚注标记**:在正文中使用 [^数字] 的形式标记脚注,例如 [^1]。
|
1. **脚注标记**:在正文中使用 [^数字] 的形式标记脚注,例如 [^1]。
|
||||||
2. **脚注内容**:在文档末尾使用 [^数字]: 脚注内容 的形式定义脚注的具体内容。
|
2. **脚注内容**:在文档末尾使用 [^数字]: 脚注内容 的形式定义脚注的具体内容
|
||||||
|
|
||||||
## 脚注示例和要求:
|
|
||||||
|
|
||||||
1. type 为 file 时:[^1]: [__name__](http://file/__url__)
|
|
||||||
2. type 为 directory 时:[^1]: [__name__](http://file/__url__)
|
|
||||||
3. type 为 url,sitemap 时:[^1]: [__name__](__url__)
|
|
||||||
4. type 为 note 时:[^1]: __note__
|
|
||||||
|
|
||||||
__url__ 替换成参考资料的 url
|
|
||||||
__name__ 请根据参考资料的 url 进行解析和替换
|
|
||||||
__note__ 请根据参考资料的 content 进行总结和替换
|
|
||||||
|
|
||||||
## 我的问题是:
|
## 我的问题是:
|
||||||
|
|
||||||
|
|||||||
@ -248,7 +248,8 @@
|
|||||||
"upgrade.success.content": "Please restart the application to complete the upgrade",
|
"upgrade.success.content": "Please restart the application to complete the upgrade",
|
||||||
"upgrade.success.title": "Upgrade successfully",
|
"upgrade.success.title": "Upgrade successfully",
|
||||||
"regenerate.confirm": "Regenerating will replace current message",
|
"regenerate.confirm": "Regenerating will replace current message",
|
||||||
"copy.success": "Copied!"
|
"copy.success": "Copied!",
|
||||||
|
"get_embedding_dimensions": "Failed to get embedding dimensions"
|
||||||
},
|
},
|
||||||
"minapp": {
|
"minapp": {
|
||||||
"title": "MinApp"
|
"title": "MinApp"
|
||||||
@ -559,7 +560,9 @@
|
|||||||
"sitemap_placeholder": "Enter Website Map URL",
|
"sitemap_placeholder": "Enter Website Map URL",
|
||||||
"directories": "Directories",
|
"directories": "Directories",
|
||||||
"add_directory": "Add Directory",
|
"add_directory": "Add Directory",
|
||||||
"directory_placeholder": "Enter Directory Path"
|
"directory_placeholder": "Enter Directory Path",
|
||||||
|
"model_info": "Model Info",
|
||||||
|
"not_support": "Knowledge base database engine updated, the knowledge base will no longer be supported, please create a new knowledge base"
|
||||||
},
|
},
|
||||||
"models": {
|
"models": {
|
||||||
"pinned": "Pinned",
|
"pinned": "Pinned",
|
||||||
@ -577,7 +580,8 @@
|
|||||||
"free": "Free",
|
"free": "Free",
|
||||||
"embedding": "Embedding",
|
"embedding": "Embedding",
|
||||||
"embedding_model": "Embedding Model",
|
"embedding_model": "Embedding Model",
|
||||||
"embedding_model_tooltip": "Add in Settings->Model Provider->Manage"
|
"embedding_model_tooltip": "Add in Settings->Model Provider->Manage",
|
||||||
|
"dimensions": "Dimensions {{dimensions}}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -248,7 +248,8 @@
|
|||||||
"upgrade.success.content": "Пожалуйста, перезапустите приложение для завершения обновления",
|
"upgrade.success.content": "Пожалуйста, перезапустите приложение для завершения обновления",
|
||||||
"upgrade.success.title": "Обновление успешно",
|
"upgrade.success.title": "Обновление успешно",
|
||||||
"regenerate.confirm": "Перегенерация заменит текущее сообщение",
|
"regenerate.confirm": "Перегенерация заменит текущее сообщение",
|
||||||
"copy.success": "Скопировано!"
|
"copy.success": "Скопировано!",
|
||||||
|
"get_embedding_dimensions": "Не удалось получить размерность встраивания"
|
||||||
},
|
},
|
||||||
"minapp": {
|
"minapp": {
|
||||||
"title": "Встроенные приложения"
|
"title": "Встроенные приложения"
|
||||||
@ -559,7 +560,9 @@
|
|||||||
"sitemap_placeholder": "Введите URL карты сайта",
|
"sitemap_placeholder": "Введите URL карты сайта",
|
||||||
"directories": "Директории",
|
"directories": "Директории",
|
||||||
"add_directory": "Добавить директорию",
|
"add_directory": "Добавить директорию",
|
||||||
"directory_placeholder": "Введите путь к директории"
|
"directory_placeholder": "Введите путь к директории",
|
||||||
|
"model_info": "Модель информации",
|
||||||
|
"not_support": "База знаний базы данных движок обновлен, база знаний больше не поддерживается, пожалуйста, создайте новую базу знаний"
|
||||||
},
|
},
|
||||||
"models": {
|
"models": {
|
||||||
"pinned": "Закреплено",
|
"pinned": "Закреплено",
|
||||||
@ -577,7 +580,8 @@
|
|||||||
"free": "Бесплатные модели",
|
"free": "Бесплатные модели",
|
||||||
"embedding": "Встраиваемые модели",
|
"embedding": "Встраиваемые модели",
|
||||||
"embedding_model": "Встраиваемые модели",
|
"embedding_model": "Встраиваемые модели",
|
||||||
"embedding_model_tooltip": "Добавьте в настройки->модель сервиса->управление"
|
"embedding_model_tooltip": "Добавьте в настройки->модель сервиса->управление",
|
||||||
|
"dimensions": "{{dimensions}} мер"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -249,7 +249,8 @@
|
|||||||
"upgrade.success.content": "重启用以完成升级",
|
"upgrade.success.content": "重启用以完成升级",
|
||||||
"upgrade.success.title": "升级成功",
|
"upgrade.success.title": "升级成功",
|
||||||
"regenerate.confirm": "重新生成会覆盖当前消息",
|
"regenerate.confirm": "重新生成会覆盖当前消息",
|
||||||
"copy.success": "复制成功"
|
"copy.success": "复制成功",
|
||||||
|
"get_embedding_dimensions": "获取嵌入维度失败"
|
||||||
},
|
},
|
||||||
"minapp": {
|
"minapp": {
|
||||||
"title": "小程序"
|
"title": "小程序"
|
||||||
@ -548,7 +549,9 @@
|
|||||||
"sitemap_placeholder": "请输入站点地图 URL",
|
"sitemap_placeholder": "请输入站点地图 URL",
|
||||||
"directories": "目录",
|
"directories": "目录",
|
||||||
"add_directory": "添加目录",
|
"add_directory": "添加目录",
|
||||||
"directory_placeholder": "请输入目录路径"
|
"directory_placeholder": "请输入目录路径",
|
||||||
|
"model_info": "模型信息",
|
||||||
|
"not_support": "知识库数据库引擎已更新,该知识库将不再支持,请重新创建知识库"
|
||||||
},
|
},
|
||||||
"models": {
|
"models": {
|
||||||
"pinned": "已固定",
|
"pinned": "已固定",
|
||||||
@ -566,7 +569,8 @@
|
|||||||
"free": "免费模型",
|
"free": "免费模型",
|
||||||
"embedding": "嵌入模型",
|
"embedding": "嵌入模型",
|
||||||
"embedding_model": "嵌入模型",
|
"embedding_model": "嵌入模型",
|
||||||
"embedding_model_tooltip": "在设置->模型服务中点击管理按钮添加"
|
"embedding_model_tooltip": "在设置->模型服务中点击管理按钮添加",
|
||||||
|
"dimensions": "{{dimensions}} 维"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -248,7 +248,8 @@
|
|||||||
"upgrade.success.content": "請重新啟動應用以完成升級",
|
"upgrade.success.content": "請重新啟動應用以完成升級",
|
||||||
"upgrade.success.title": "升級成功",
|
"upgrade.success.title": "升級成功",
|
||||||
"regenerate.confirm": "重新生成會覆蓋當前訊息",
|
"regenerate.confirm": "重新生成會覆蓋當前訊息",
|
||||||
"copy.success": "複製成功"
|
"copy.success": "複製成功",
|
||||||
|
"get_embedding_dimensions": "獲取嵌入維度失敗"
|
||||||
},
|
},
|
||||||
"minapp": {
|
"minapp": {
|
||||||
"title": "小程序"
|
"title": "小程序"
|
||||||
@ -547,7 +548,9 @@
|
|||||||
"sitemap_placeholder": "請輸入網站地圖 URL",
|
"sitemap_placeholder": "請輸入網站地圖 URL",
|
||||||
"directories": "目錄",
|
"directories": "目錄",
|
||||||
"add_directory": "添加目錄",
|
"add_directory": "添加目錄",
|
||||||
"directory_placeholder": "請輸入目錄路徑"
|
"directory_placeholder": "請輸入目錄路徑",
|
||||||
|
"model_info": "模型信息",
|
||||||
|
"not_support": "知識庫數據庫引擎已更新,該知識庫將不再支持,請重新創建知識庫"
|
||||||
},
|
},
|
||||||
"models": {
|
"models": {
|
||||||
"pinned": "已固定",
|
"pinned": "已固定",
|
||||||
@ -565,7 +568,8 @@
|
|||||||
"free": "免費模型",
|
"free": "免費模型",
|
||||||
"embedding": "嵌入模型",
|
"embedding": "嵌入模型",
|
||||||
"embedding_model": "嵌入模型",
|
"embedding_model": "嵌入模型",
|
||||||
"embedding_model_tooltip": "在设置->模型服务中点击管理按钮添加"
|
"embedding_model_tooltip": "在设置->模型服务中点击管理按钮添加",
|
||||||
|
"dimensions": "{{dimensions}} 維"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import Scrollbar from '@renderer/components/Scrollbar'
|
|||||||
import { useKnowledge } from '@renderer/hooks/useKnowledge'
|
import { useKnowledge } from '@renderer/hooks/useKnowledge'
|
||||||
import FileManager from '@renderer/services/FileManager'
|
import FileManager from '@renderer/services/FileManager'
|
||||||
import { FileType, FileTypes, KnowledgeBase } from '@renderer/types'
|
import { FileType, FileTypes, KnowledgeBase } from '@renderer/types'
|
||||||
import { Button, Card, message, Typography, Upload } from 'antd'
|
import { Alert, Button, Card, Divider, message, Tag, Typography, Upload } from 'antd'
|
||||||
import { FC } from 'react'
|
import { FC } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
@ -177,6 +177,9 @@ const KnowledgeContent: FC<KnowledgeContentProps> = ({ selectedBase }) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<MainContent>
|
<MainContent>
|
||||||
|
{!base.dimensions && (
|
||||||
|
<Alert message={t('knowledge_base.not_support')} type="error" style={{ marginBottom: 20 }} showIcon />
|
||||||
|
)}
|
||||||
<FileSection>
|
<FileSection>
|
||||||
<TitleWrapper>
|
<TitleWrapper>
|
||||||
<Title level={5}>{t('files.title')}</Title>
|
<Title level={5}>{t('files.title')}</Title>
|
||||||
@ -323,6 +326,15 @@ const KnowledgeContent: FC<KnowledgeContentProps> = ({ selectedBase }) => {
|
|||||||
</FlexColumn>
|
</FlexColumn>
|
||||||
</ContentSection>
|
</ContentSection>
|
||||||
|
|
||||||
|
<Divider style={{ margin: '10px 0' }} />
|
||||||
|
|
||||||
|
<ModelInfo>
|
||||||
|
<label htmlFor="model-info">{t('knowledge_base.model_info')}</label>
|
||||||
|
<Tag color="blue">{base.model.name}</Tag>
|
||||||
|
<Tag color="cyan">{t('models.dimensions', { dimensions: base.dimensions || 0 })}</Tag>
|
||||||
|
<Tag color="purple">{base.model.provider}</Tag>
|
||||||
|
</ModelInfo>
|
||||||
|
|
||||||
<IndexSection>
|
<IndexSection>
|
||||||
<Button type="primary" onClick={() => KnowledgeSearchPopup.show({ base })} icon={<SearchOutlined />}>
|
<Button type="primary" onClick={() => KnowledgeSearchPopup.show({ base })} icon={<SearchOutlined />}>
|
||||||
{t('knowledge_base.search')}
|
{t('knowledge_base.search')}
|
||||||
@ -340,6 +352,7 @@ const MainContent = styled(Scrollbar)`
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
padding-bottom: 50px;
|
padding-bottom: 50px;
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
|
position: relative;
|
||||||
`
|
`
|
||||||
|
|
||||||
const FileSection = styled.div`
|
const FileSection = styled.div`
|
||||||
@ -416,4 +429,15 @@ const IndexSection = styled.div`
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const ModelInfo = styled.div`
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 5px;
|
||||||
|
color: var(--color-text-3);
|
||||||
|
label {
|
||||||
|
margin-right: 8px;
|
||||||
|
color: var(--color-text-2);
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
export default KnowledgeContent
|
export default KnowledgeContent
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import Scrollbar from '@renderer/components/Scrollbar'
|
|||||||
import { useKnowledgeBases } from '@renderer/hooks/useKnowledge'
|
import { useKnowledgeBases } from '@renderer/hooks/useKnowledge'
|
||||||
import { KnowledgeBase } from '@renderer/types'
|
import { KnowledgeBase } from '@renderer/types'
|
||||||
import { Dropdown, Empty, MenuProps } from 'antd'
|
import { Dropdown, Empty, MenuProps } from 'antd'
|
||||||
import { FC, useCallback, useEffect, useState } from 'react'
|
import { FC, useCallback, useEffect, useRef, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
|
|
||||||
@ -19,6 +19,7 @@ const KnowledgePage: FC = () => {
|
|||||||
const { bases, renameKnowledgeBase, deleteKnowledgeBase, updateKnowledgeBases } = useKnowledgeBases()
|
const { bases, renameKnowledgeBase, deleteKnowledgeBase, updateKnowledgeBases } = useKnowledgeBases()
|
||||||
const [selectedBase, setSelectedBase] = useState<KnowledgeBase>()
|
const [selectedBase, setSelectedBase] = useState<KnowledgeBase>()
|
||||||
const [isDragging, setIsDragging] = useState(false)
|
const [isDragging, setIsDragging] = useState(false)
|
||||||
|
const prevLength = useRef(0)
|
||||||
|
|
||||||
const handleAddKnowledge = async () => {
|
const handleAddKnowledge = async () => {
|
||||||
await AddKnowledgePopup.show({ title: t('knowledge_base.add.title') })
|
await AddKnowledgePopup.show({ title: t('knowledge_base.add.title') })
|
||||||
@ -35,6 +36,14 @@ const KnowledgePage: FC = () => {
|
|||||||
}
|
}
|
||||||
}, [bases, selectedBase])
|
}, [bases, selectedBase])
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const currentLength = bases.length
|
||||||
|
if (currentLength > 0 && currentLength > prevLength.current) {
|
||||||
|
setSelectedBase(bases[currentLength - 1])
|
||||||
|
}
|
||||||
|
prevLength.current = currentLength
|
||||||
|
}, [bases])
|
||||||
|
|
||||||
const getMenuItems = useCallback(
|
const getMenuItems = useCallback(
|
||||||
(base: KnowledgeBase) => {
|
(base: KnowledgeBase) => {
|
||||||
const menus: MenuProps['items'] = [
|
const menus: MenuProps['items'] = [
|
||||||
@ -90,7 +99,7 @@ const KnowledgePage: FC = () => {
|
|||||||
style={{ marginBottom: 0, paddingBottom: isDragging ? 50 : 0 }}
|
style={{ marginBottom: 0, paddingBottom: isDragging ? 50 : 0 }}
|
||||||
onDragStart={() => setIsDragging(true)}
|
onDragStart={() => setIsDragging(true)}
|
||||||
onDragEnd={() => setIsDragging(false)}>
|
onDragEnd={() => setIsDragging(false)}>
|
||||||
{(base) => (
|
{(base: KnowledgeBase) => (
|
||||||
<Dropdown menu={{ items: getMenuItems(base) }} trigger={['contextMenu']} key={base.id}>
|
<Dropdown menu={{ items: getMenuItems(base) }} trigger={['contextMenu']} key={base.id}>
|
||||||
<div>
|
<div>
|
||||||
<ListItem
|
<ListItem
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import { TopView } from '@renderer/components/TopView'
|
|||||||
import { isEmbeddingModel } from '@renderer/config/models'
|
import { isEmbeddingModel } from '@renderer/config/models'
|
||||||
import { useKnowledgeBases } from '@renderer/hooks/useKnowledge'
|
import { useKnowledgeBases } from '@renderer/hooks/useKnowledge'
|
||||||
import { useProviders } from '@renderer/hooks/useProvider'
|
import { useProviders } from '@renderer/hooks/useProvider'
|
||||||
|
import AiProvider from '@renderer/providers/AiProvider'
|
||||||
import { getKnowledgeBaseParams } from '@renderer/services/KnowledgeService'
|
import { getKnowledgeBaseParams } from '@renderer/services/KnowledgeService'
|
||||||
import { getModelUniqId } from '@renderer/services/ModelService'
|
import { getModelUniqId } from '@renderer/services/ModelService'
|
||||||
import { Model } from '@renderer/types'
|
import { Model } from '@renderer/types'
|
||||||
@ -30,6 +31,7 @@ const PopupContainer: React.FC<Props> = ({ title, resolve }) => {
|
|||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { providers } = useProviders()
|
const { providers } = useProviders()
|
||||||
const { addKnowledgeBase } = useKnowledgeBases()
|
const { addKnowledgeBase } = useKnowledgeBases()
|
||||||
|
const [loading, setLoading] = useState(false)
|
||||||
const allModels = providers
|
const allModels = providers
|
||||||
.map((p) => p.models)
|
.map((p) => p.models)
|
||||||
.flat()
|
.flat()
|
||||||
@ -55,10 +57,29 @@ const PopupContainer: React.FC<Props> = ({ title, resolve }) => {
|
|||||||
const selectedModel = find(allModels, JSON.parse(values.model)) as Model
|
const selectedModel = find(allModels, JSON.parse(values.model)) as Model
|
||||||
|
|
||||||
if (selectedModel) {
|
if (selectedModel) {
|
||||||
|
setLoading(true)
|
||||||
|
const provider = providers.find((p) => p.id === selectedModel.provider)
|
||||||
|
|
||||||
|
if (!provider) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const aiProvider = new AiProvider(provider)
|
||||||
|
let dimensions = 0
|
||||||
|
|
||||||
|
try {
|
||||||
|
dimensions = await aiProvider.getEmbeddingDimensions(selectedModel)
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting embedding dimensions:', error)
|
||||||
|
window.message.error(t('message.error.get_embedding_dimensions'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
const newBase = {
|
const newBase = {
|
||||||
id: nanoid(),
|
id: nanoid(),
|
||||||
name: values.name,
|
name: values.name,
|
||||||
model: selectedModel,
|
model: selectedModel,
|
||||||
|
dimensions,
|
||||||
items: [],
|
items: [],
|
||||||
created_at: Date.now(),
|
created_at: Date.now(),
|
||||||
updated_at: Date.now()
|
updated_at: Date.now()
|
||||||
@ -84,7 +105,15 @@ const PopupContainer: React.FC<Props> = ({ title, resolve }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal title={title} open={open} onOk={onOk} onCancel={onCancel} afterClose={onClose} destroyOnClose centered>
|
<Modal
|
||||||
|
title={title}
|
||||||
|
open={open}
|
||||||
|
onOk={onOk}
|
||||||
|
onCancel={onCancel}
|
||||||
|
afterClose={onClose}
|
||||||
|
destroyOnClose
|
||||||
|
centered
|
||||||
|
okButtonProps={{ loading }}>
|
||||||
<Form form={form} layout="vertical">
|
<Form form={form} layout="vertical">
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name="name"
|
name="name"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import BaseProvider from '@renderer/providers/BaseProvider'
|
import BaseProvider from '@renderer/providers/BaseProvider'
|
||||||
import ProviderFactory from '@renderer/providers/ProviderFactory'
|
import ProviderFactory from '@renderer/providers/ProviderFactory'
|
||||||
import { Assistant, Message, Provider, Suggestion } from '@renderer/types'
|
import { Assistant, Message, Model, Provider, Suggestion } from '@renderer/types'
|
||||||
import OpenAI from 'openai'
|
import OpenAI from 'openai'
|
||||||
|
|
||||||
import { CompletionsParams } from '.'
|
import { CompletionsParams } from '.'
|
||||||
@ -60,4 +60,12 @@ export default class AiProvider {
|
|||||||
}): Promise<string[]> {
|
}): Promise<string[]> {
|
||||||
return this.sdk.generateImage(params)
|
return this.sdk.generateImage(params)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async getEmbeddingDimensions(model: Model): Promise<number> {
|
||||||
|
return this.sdk.getEmbeddingDimensions(model)
|
||||||
|
}
|
||||||
|
|
||||||
|
public getBaseURL(): string {
|
||||||
|
return this.sdk.getBaseURL()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -265,4 +265,8 @@ export default class AnthropicProvider extends BaseProvider {
|
|||||||
public async models(): Promise<OpenAI.Models.Model[]> {
|
public async models(): Promise<OpenAI.Models.Model[]> {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async getEmbeddingDimensions(): Promise<number> {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { REFERENCE_PROMPT } from '@renderer/config/prompts'
|
|||||||
import { getOllamaKeepAliveTime } from '@renderer/hooks/useOllama'
|
import { getOllamaKeepAliveTime } from '@renderer/hooks/useOllama'
|
||||||
import { getKnowledgeBaseParams } from '@renderer/services/KnowledgeService'
|
import { getKnowledgeBaseParams } from '@renderer/services/KnowledgeService'
|
||||||
import store from '@renderer/store'
|
import store from '@renderer/store'
|
||||||
import { Assistant, Message, Provider, Suggestion } from '@renderer/types'
|
import { Assistant, Message, Model, Provider, Suggestion } from '@renderer/types'
|
||||||
import { delay } from '@renderer/utils'
|
import { delay } from '@renderer/utils'
|
||||||
import { take } from 'lodash'
|
import { take } from 'lodash'
|
||||||
import OpenAI from 'openai'
|
import OpenAI from 'openai'
|
||||||
@ -37,6 +37,7 @@ export default abstract class BaseProvider {
|
|||||||
guidanceScale: number
|
guidanceScale: number
|
||||||
signal?: AbortSignal
|
signal?: AbortSignal
|
||||||
}): Promise<string[]>
|
}): Promise<string[]>
|
||||||
|
abstract getEmbeddingDimensions(model: Model): Promise<number>
|
||||||
|
|
||||||
public getBaseURL(): string {
|
public getBaseURL(): string {
|
||||||
const host = this.provider.apiHost
|
const host = this.provider.apiHost
|
||||||
@ -106,12 +107,12 @@ export default abstract class BaseProvider {
|
|||||||
return {
|
return {
|
||||||
id: index,
|
id: index,
|
||||||
content: item.pageContent,
|
content: item.pageContent,
|
||||||
url: encodeURIComponent(sourceUrl),
|
sourceUrl: sourceUrl.startsWith('http') ? sourceUrl : encodeURIComponent(sourceUrl),
|
||||||
type: baseItem?.type
|
type: baseItem?.type
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const referencesContent = JSON.stringify(references, null, 2)
|
const referencesContent = `\`\`\`json\n${JSON.stringify(references, null, 2)}\n\`\`\``
|
||||||
|
|
||||||
return REFERENCE_PROMPT.replace('{question}', message.content).replace('{references}', referencesContent)
|
return REFERENCE_PROMPT.replace('{question}', message.content).replace('{references}', referencesContent)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import { SUMMARIZE_PROMPT } from '@renderer/config/prompts'
|
|||||||
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/AssistantService'
|
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/AssistantService'
|
||||||
import { EVENT_NAMES } from '@renderer/services/EventService'
|
import { EVENT_NAMES } from '@renderer/services/EventService'
|
||||||
import { filterContextMessages } from '@renderer/services/MessagesService'
|
import { filterContextMessages } from '@renderer/services/MessagesService'
|
||||||
import { Assistant, FileTypes, Message, Provider, Suggestion } from '@renderer/types'
|
import { Assistant, FileTypes, Message, Model, Provider, Suggestion } from '@renderer/types'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { first, isEmpty, last, takeRight } from 'lodash'
|
import { first, isEmpty, last, takeRight } from 'lodash'
|
||||||
import OpenAI from 'openai'
|
import OpenAI from 'openai'
|
||||||
@ -29,10 +29,14 @@ export default class GeminiProvider extends BaseProvider {
|
|||||||
super(provider)
|
super(provider)
|
||||||
this.sdk = new GoogleGenerativeAI(this.apiKey)
|
this.sdk = new GoogleGenerativeAI(this.apiKey)
|
||||||
this.requestOptions = {
|
this.requestOptions = {
|
||||||
baseUrl: this.provider.apiHost
|
baseUrl: this.getBaseURL()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getBaseURL(): string {
|
||||||
|
return this.provider.apiHost
|
||||||
|
}
|
||||||
|
|
||||||
private async getMessageContents(message: Message): Promise<Content> {
|
private async getMessageContents(message: Message): Promise<Content> {
|
||||||
const role = message.role === 'user' ? 'user' : 'model'
|
const role = message.role === 'user' ? 'user' : 'model'
|
||||||
|
|
||||||
@ -288,4 +292,9 @@ export default class GeminiProvider extends BaseProvider {
|
|||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async getEmbeddingDimensions(model: Model): Promise<number> {
|
||||||
|
const data = await this.sdk.getGenerativeModel({ model: model.id }, this.requestOptions).embedContent('hi')
|
||||||
|
return data.embedding.values.length
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -378,4 +378,12 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
|
|
||||||
return response.data.map((item) => item.url)
|
return response.data.map((item) => item.url)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async getEmbeddingDimensions(model: Model): Promise<number> {
|
||||||
|
const data = await this.sdk.embeddings.create({
|
||||||
|
model: model.id,
|
||||||
|
input: 'hi'
|
||||||
|
})
|
||||||
|
return data.data[0].embedding.length
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@ class KnowledgeQueue {
|
|||||||
private processing: Map<string, boolean> = new Map()
|
private processing: Map<string, boolean> = new Map()
|
||||||
private pollingInterval: NodeJS.Timeout | null = null
|
private pollingInterval: NodeJS.Timeout | null = null
|
||||||
// private readonly POLLING_INTERVAL = 5000
|
// private readonly POLLING_INTERVAL = 5000
|
||||||
private readonly MAX_RETRIES = 3
|
private readonly MAX_RETRIES = 2
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.checkAllBases().catch(console.error)
|
this.checkAllBases().catch(console.error)
|
||||||
|
|||||||
@ -67,7 +67,7 @@ export function getAssistantProvider(assistant: Assistant): Provider {
|
|||||||
return provider || getDefaultProvider()
|
return provider || getDefaultProvider()
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getProviderByModel(model?: Model) {
|
export function getProviderByModel(model?: Model): Provider {
|
||||||
const providers = store.getState().llm.providers
|
const providers = store.getState().llm.providers
|
||||||
const providerId = model ? model.provider : getDefaultProvider().id
|
const providerId = model ? model.provider : getDefaultProvider().id
|
||||||
return providers.find((p) => p.id === providerId) as Provider
|
return providers.find((p) => p.id === providerId) as Provider
|
||||||
|
|||||||
@ -12,10 +12,17 @@ export const getKnowledgeBaseParams = (base: KnowledgeBase): KnowledgeBaseParams
|
|||||||
provider.apiKey = 'empty'
|
provider.apiKey = 'empty'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let host = aiProvider.getBaseURL()
|
||||||
|
|
||||||
|
if (host.includes('generativelanguage.googleapis.com')) {
|
||||||
|
host = host + '/v1beta/openai/'
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: base.id,
|
id: base.id,
|
||||||
model: base.model.name,
|
model: base.model.id,
|
||||||
|
dimensions: base.dimensions,
|
||||||
apiKey: aiProvider.getApiKey(),
|
apiKey: aiProvider.getApiKey(),
|
||||||
baseURL: provider.apiHost + '/v1'
|
baseURL: host
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -203,6 +203,7 @@ export interface KnowledgeBase {
|
|||||||
id: string
|
id: string
|
||||||
name: string
|
name: string
|
||||||
model: Model
|
model: Model
|
||||||
|
dimensions: number
|
||||||
description?: string
|
description?: string
|
||||||
items: KnowledgeItem[]
|
items: KnowledgeItem[]
|
||||||
created_at: number
|
created_at: number
|
||||||
@ -212,6 +213,7 @@ export interface KnowledgeBase {
|
|||||||
export type KnowledgeBaseParams = {
|
export type KnowledgeBaseParams = {
|
||||||
id: string
|
id: string
|
||||||
model: string
|
model: string
|
||||||
|
dimensions: number
|
||||||
apiKey: string
|
apiKey: string
|
||||||
baseURL: string
|
baseURL: string
|
||||||
}
|
}
|
||||||
|
|||||||
542
yarn.lock
542
yarn.lock
@ -1342,6 +1342,98 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@lancedb/lancedb-darwin-arm64@npm:0.14.0":
|
||||||
|
version: 0.14.0
|
||||||
|
resolution: "@lancedb/lancedb-darwin-arm64@npm:0.14.0"
|
||||||
|
conditions: os=darwin & cpu=arm64
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@lancedb/lancedb-darwin-x64@npm:0.14.0":
|
||||||
|
version: 0.14.0
|
||||||
|
resolution: "@lancedb/lancedb-darwin-x64@npm:0.14.0"
|
||||||
|
conditions: os=darwin & cpu=x64
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@lancedb/lancedb-linux-arm64-gnu@npm:0.14.0":
|
||||||
|
version: 0.14.0
|
||||||
|
resolution: "@lancedb/lancedb-linux-arm64-gnu@npm:0.14.0"
|
||||||
|
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@lancedb/lancedb-linux-arm64-musl@npm:0.14.0":
|
||||||
|
version: 0.14.0
|
||||||
|
resolution: "@lancedb/lancedb-linux-arm64-musl@npm:0.14.0"
|
||||||
|
conditions: os=linux & cpu=arm64 & libc=musl
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@lancedb/lancedb-linux-x64-gnu@npm:0.14.0":
|
||||||
|
version: 0.14.0
|
||||||
|
resolution: "@lancedb/lancedb-linux-x64-gnu@npm:0.14.0"
|
||||||
|
conditions: os=linux & cpu=x64 & libc=glibc
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@lancedb/lancedb-linux-x64-musl@npm:0.14.0":
|
||||||
|
version: 0.14.0
|
||||||
|
resolution: "@lancedb/lancedb-linux-x64-musl@npm:0.14.0"
|
||||||
|
conditions: os=linux & cpu=x64 & libc=musl
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@lancedb/lancedb-win32-arm64-msvc@npm:0.14.0":
|
||||||
|
version: 0.14.0
|
||||||
|
resolution: "@lancedb/lancedb-win32-arm64-msvc@npm:0.14.0"
|
||||||
|
conditions: os=win32 & cpu=arm64
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@lancedb/lancedb-win32-x64-msvc@npm:0.14.0":
|
||||||
|
version: 0.14.0
|
||||||
|
resolution: "@lancedb/lancedb-win32-x64-msvc@npm:0.14.0"
|
||||||
|
conditions: os=win32 & cpu=x64
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@lancedb/lancedb@npm:^0.14.0":
|
||||||
|
version: 0.14.0
|
||||||
|
resolution: "@lancedb/lancedb@npm:0.14.0"
|
||||||
|
dependencies:
|
||||||
|
"@lancedb/lancedb-darwin-arm64": "npm:0.14.0"
|
||||||
|
"@lancedb/lancedb-darwin-x64": "npm:0.14.0"
|
||||||
|
"@lancedb/lancedb-linux-arm64-gnu": "npm:0.14.0"
|
||||||
|
"@lancedb/lancedb-linux-arm64-musl": "npm:0.14.0"
|
||||||
|
"@lancedb/lancedb-linux-x64-gnu": "npm:0.14.0"
|
||||||
|
"@lancedb/lancedb-linux-x64-musl": "npm:0.14.0"
|
||||||
|
"@lancedb/lancedb-win32-arm64-msvc": "npm:0.14.0"
|
||||||
|
"@lancedb/lancedb-win32-x64-msvc": "npm:0.14.0"
|
||||||
|
reflect-metadata: "npm:^0.2.2"
|
||||||
|
peerDependencies:
|
||||||
|
apache-arrow: ">=13.0.0 <=17.0.0"
|
||||||
|
dependenciesMeta:
|
||||||
|
"@lancedb/lancedb-darwin-arm64":
|
||||||
|
optional: true
|
||||||
|
"@lancedb/lancedb-darwin-x64":
|
||||||
|
optional: true
|
||||||
|
"@lancedb/lancedb-linux-arm64-gnu":
|
||||||
|
optional: true
|
||||||
|
"@lancedb/lancedb-linux-arm64-musl":
|
||||||
|
optional: true
|
||||||
|
"@lancedb/lancedb-linux-x64-gnu":
|
||||||
|
optional: true
|
||||||
|
"@lancedb/lancedb-linux-x64-musl":
|
||||||
|
optional: true
|
||||||
|
"@lancedb/lancedb-win32-arm64-msvc":
|
||||||
|
optional: true
|
||||||
|
"@lancedb/lancedb-win32-x64-msvc":
|
||||||
|
optional: true
|
||||||
|
conditions: (os=darwin | os=linux | os=win32) & (cpu=x64 | cpu=arm64)
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@langchain/core@npm:^0.3.25":
|
"@langchain/core@npm:^0.3.25":
|
||||||
version: 0.3.26
|
version: 0.3.26
|
||||||
resolution: "@langchain/core@npm:0.3.26"
|
resolution: "@langchain/core@npm:0.3.26"
|
||||||
@ -1401,106 +1493,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@libsql/client@npm:^0.14.0":
|
|
||||||
version: 0.14.0
|
|
||||||
resolution: "@libsql/client@npm:0.14.0"
|
|
||||||
dependencies:
|
|
||||||
"@libsql/core": "npm:^0.14.0"
|
|
||||||
"@libsql/hrana-client": "npm:^0.7.0"
|
|
||||||
js-base64: "npm:^3.7.5"
|
|
||||||
libsql: "npm:^0.4.4"
|
|
||||||
promise-limit: "npm:^2.7.0"
|
|
||||||
checksum: 10c0/9c6bab468453df765f647422c772af3578f1e108b663a80b99063f47ed3542db26ae0fcdba2e153d72e6d5089c5caeba947a167a6c065b0191a0832621539335
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@libsql/core@npm:^0.14.0":
|
|
||||||
version: 0.14.0
|
|
||||||
resolution: "@libsql/core@npm:0.14.0"
|
|
||||||
dependencies:
|
|
||||||
js-base64: "npm:^3.7.5"
|
|
||||||
checksum: 10c0/327bb991cf191d5a9a9fc0cc1a17123f7ca88f222187a3bde845fbad8ceaeaa1f139882080e4b2969da57b83e576c52702572e2838d1743c6bff75f95e6f774a
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@libsql/darwin-arm64@npm:0.4.7":
|
|
||||||
version: 0.4.7
|
|
||||||
resolution: "@libsql/darwin-arm64@npm:0.4.7"
|
|
||||||
conditions: os=darwin & cpu=arm64
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@libsql/darwin-x64@npm:0.4.7":
|
|
||||||
version: 0.4.7
|
|
||||||
resolution: "@libsql/darwin-x64@npm:0.4.7"
|
|
||||||
conditions: os=darwin & cpu=x64
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@libsql/hrana-client@npm:^0.7.0":
|
|
||||||
version: 0.7.0
|
|
||||||
resolution: "@libsql/hrana-client@npm:0.7.0"
|
|
||||||
dependencies:
|
|
||||||
"@libsql/isomorphic-fetch": "npm:^0.3.1"
|
|
||||||
"@libsql/isomorphic-ws": "npm:^0.1.5"
|
|
||||||
js-base64: "npm:^3.7.5"
|
|
||||||
node-fetch: "npm:^3.3.2"
|
|
||||||
checksum: 10c0/85bbe3074e3efcc56fbc33a741afd06c1211f5d7772ea46155ce6fe6578e31ed517c7017510c5bfea3dc28031e95c0e284096154f28cbbab06751fd7d9437e28
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@libsql/isomorphic-fetch@npm:^0.3.1":
|
|
||||||
version: 0.3.1
|
|
||||||
resolution: "@libsql/isomorphic-fetch@npm:0.3.1"
|
|
||||||
checksum: 10c0/f415f23f0c9921d6aae5133f91194d85a70e555b6c931fb4ff272af94335a46f5893433fbbb8fa24ee45bab8acce8ba5f060a22567ff3fb0577883bfcd1dec9e
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@libsql/isomorphic-ws@npm:^0.1.5":
|
|
||||||
version: 0.1.5
|
|
||||||
resolution: "@libsql/isomorphic-ws@npm:0.1.5"
|
|
||||||
dependencies:
|
|
||||||
"@types/ws": "npm:^8.5.4"
|
|
||||||
ws: "npm:^8.13.0"
|
|
||||||
checksum: 10c0/7028bbc50dd094cdcbe56714dbf52fb646812d1b042c1973e61293f4a1cb5b81d5af670530a2463a2ba485f84f7728daf3eb75d40a7f55316ee4f7015dcc99ae
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@libsql/linux-arm64-gnu@npm:0.4.7":
|
|
||||||
version: 0.4.7
|
|
||||||
resolution: "@libsql/linux-arm64-gnu@npm:0.4.7"
|
|
||||||
conditions: os=linux & cpu=arm64
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@libsql/linux-arm64-musl@npm:0.4.7":
|
|
||||||
version: 0.4.7
|
|
||||||
resolution: "@libsql/linux-arm64-musl@npm:0.4.7"
|
|
||||||
conditions: os=linux & cpu=arm64
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@libsql/linux-x64-gnu@npm:0.4.7":
|
|
||||||
version: 0.4.7
|
|
||||||
resolution: "@libsql/linux-x64-gnu@npm:0.4.7"
|
|
||||||
conditions: os=linux & cpu=x64
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@libsql/linux-x64-musl@npm:0.4.7":
|
|
||||||
version: 0.4.7
|
|
||||||
resolution: "@libsql/linux-x64-musl@npm:0.4.7"
|
|
||||||
conditions: os=linux & cpu=x64
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@libsql/win32-x64-msvc@npm:0.4.7":
|
|
||||||
version: 0.4.7
|
|
||||||
resolution: "@libsql/win32-x64-msvc@npm:0.4.7"
|
|
||||||
conditions: os=win32 & cpu=x64
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@llm-tools/embedjs-interfaces@npm:0.1.25":
|
"@llm-tools/embedjs-interfaces@npm:0.1.25":
|
||||||
version: 0.1.25
|
version: 0.1.25
|
||||||
resolution: "@llm-tools/embedjs-interfaces@npm:0.1.25"
|
resolution: "@llm-tools/embedjs-interfaces@npm:0.1.25"
|
||||||
@ -1513,27 +1505,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@llm-tools/embedjs-libsql@npm:0.1.25":
|
"@llm-tools/embedjs-lancedb@npm:^0.1.25":
|
||||||
version: 0.1.25
|
version: 0.1.25
|
||||||
resolution: "@llm-tools/embedjs-libsql@npm:0.1.25"
|
resolution: "@llm-tools/embedjs-lancedb@npm:0.1.25"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@libsql/client": "npm:^0.14.0"
|
"@lancedb/lancedb": "npm:^0.14.0"
|
||||||
"@llm-tools/embedjs-interfaces": "npm:0.1.25"
|
"@llm-tools/embedjs-interfaces": "npm:0.1.25"
|
||||||
"@llm-tools/embedjs-utils": "npm:0.1.25"
|
compute-cosine-similarity: "npm:^1.1.0"
|
||||||
debug: "npm:^4.4.0"
|
debug: "npm:^4.4.0"
|
||||||
checksum: 10c0/7a21019ed4d7cb1f8eb21ae9015c31b2e9d5ee517e741b88d5660fb322fc0d6bc163070034036c58e0fc67437dd39aeb3aa30b9874ef1dd553a3c5a2c5bbbe55
|
checksum: 10c0/9a05b8deda9b817ebf19d6da9e204424ff5c95b70a07d15f8d8832dd246afa9be571696cee643fb5af0fd26aa6bd0c939aa186f0634c9f442456adc1e02dd2bc
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@llm-tools/embedjs-libsql@patch:@llm-tools/embedjs-libsql@npm%3A0.1.25#~/.yarn/patches/@llm-tools-embedjs-libsql-npm-0.1.25-fad000d74c.patch":
|
|
||||||
version: 0.1.25
|
|
||||||
resolution: "@llm-tools/embedjs-libsql@patch:@llm-tools/embedjs-libsql@npm%3A0.1.25#~/.yarn/patches/@llm-tools-embedjs-libsql-npm-0.1.25-fad000d74c.patch::version=0.1.25&hash=7eafdc"
|
|
||||||
dependencies:
|
|
||||||
"@libsql/client": "npm:^0.14.0"
|
|
||||||
"@llm-tools/embedjs-interfaces": "npm:0.1.25"
|
|
||||||
"@llm-tools/embedjs-utils": "npm:0.1.25"
|
|
||||||
debug: "npm:^4.4.0"
|
|
||||||
checksum: 10c0/e7793caaf71fb977409d6ba97cb831d68fe5eff5c2ba8502d112fd0294ff004417c7685f86b1d45993f2722b6007976335413f9966b6b7e4676751ba41272041
|
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -1697,13 +1677,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@neon-rs/load@npm:^0.0.4":
|
|
||||||
version: 0.0.4
|
|
||||||
resolution: "@neon-rs/load@npm:0.0.4"
|
|
||||||
checksum: 10c0/546fa4e48aa9cdb402f0a3524b591b1cac863bcfdd0217432323dba42ad37ece24b736019e6196e34326201db6b6deb410d7a983ac3c54f322619c9b6bd568bb
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@nodelib/fs.scandir@npm:2.1.5":
|
"@nodelib/fs.scandir@npm:2.1.5":
|
||||||
version: 2.1.5
|
version: 2.1.5
|
||||||
resolution: "@nodelib/fs.scandir@npm:2.1.5"
|
resolution: "@nodelib/fs.scandir@npm:2.1.5"
|
||||||
@ -2123,6 +2096,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@swc/helpers@npm:^0.5.11":
|
||||||
|
version: 0.5.15
|
||||||
|
resolution: "@swc/helpers@npm:0.5.15"
|
||||||
|
dependencies:
|
||||||
|
tslib: "npm:^2.8.0"
|
||||||
|
checksum: 10c0/33002f74f6f885f04c132960835fdfc474186983ea567606db62e86acd0680ca82f34647e8e610f4e1e422d1c16fce729dde22cd3b797ab1fd9061a825dabca4
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@szmarczak/http-timer@npm:^4.0.5":
|
"@szmarczak/http-timer@npm:^4.0.5":
|
||||||
version: 4.0.6
|
version: 4.0.6
|
||||||
resolution: "@szmarczak/http-timer@npm:4.0.6"
|
resolution: "@szmarczak/http-timer@npm:4.0.6"
|
||||||
@ -2233,6 +2215,20 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@types/command-line-args@npm:^5.2.3":
|
||||||
|
version: 5.2.3
|
||||||
|
resolution: "@types/command-line-args@npm:5.2.3"
|
||||||
|
checksum: 10c0/3a9bc58fd26e546391f6369dd28c03d59349dc4ac39eada1a5c39cc3578e02e4aac222615170e0db79b198ffba2af84fdbdda46e08c6edc4da42bc17ea85200f
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@types/command-line-usage@npm:^5.0.4":
|
||||||
|
version: 5.0.4
|
||||||
|
resolution: "@types/command-line-usage@npm:5.0.4"
|
||||||
|
checksum: 10c0/67840ebf4bcfee200c07d978669ad596fe2adc350fd5c19d44ec2248623575d96ec917f513d1d59453f8f57e879133861a4cc41c20045c07f6c959f1fcaac7ad
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@types/debug@npm:^4.0.0, @types/debug@npm:^4.1.6":
|
"@types/debug@npm:^4.0.0, @types/debug@npm:^4.1.6":
|
||||||
version: 4.1.12
|
version: 4.1.12
|
||||||
resolution: "@types/debug@npm:4.1.12"
|
resolution: "@types/debug@npm:4.1.12"
|
||||||
@ -2441,7 +2437,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/node@npm:^20.9.0":
|
"@types/node@npm:^20.13.0, @types/node@npm:^20.9.0":
|
||||||
version: 20.17.10
|
version: 20.17.10
|
||||||
resolution: "@types/node@npm:20.17.10"
|
resolution: "@types/node@npm:20.17.10"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -2576,15 +2572,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/ws@npm:^8.5.4":
|
|
||||||
version: 8.5.13
|
|
||||||
resolution: "@types/ws@npm:8.5.13"
|
|
||||||
dependencies:
|
|
||||||
"@types/node": "npm:*"
|
|
||||||
checksum: 10c0/a5430aa479bde588e69cb9175518d72f9338b6999e3b2ae16fc03d3bdcff8347e486dc031e4ed14601260463c07e1f9a0d7511dfc653712b047c439c680b0b34
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@types/yauzl@npm:^2.9.1":
|
"@types/yauzl@npm:^2.9.1":
|
||||||
version: 2.10.3
|
version: 2.10.3
|
||||||
resolution: "@types/yauzl@npm:2.10.3"
|
resolution: "@types/yauzl@npm:2.10.3"
|
||||||
@ -2761,7 +2748,7 @@ __metadata:
|
|||||||
"@hello-pangea/dnd": "npm:^16.6.0"
|
"@hello-pangea/dnd": "npm:^16.6.0"
|
||||||
"@kangfenmao/keyv-storage": "npm:^0.1.0"
|
"@kangfenmao/keyv-storage": "npm:^0.1.0"
|
||||||
"@llm-tools/embedjs": "npm:^0.1.25"
|
"@llm-tools/embedjs": "npm:^0.1.25"
|
||||||
"@llm-tools/embedjs-libsql": "patch:@llm-tools/embedjs-libsql@npm%3A0.1.25#~/.yarn/patches/@llm-tools-embedjs-libsql-npm-0.1.25-fad000d74c.patch"
|
"@llm-tools/embedjs-lancedb": "npm:^0.1.25"
|
||||||
"@llm-tools/embedjs-loader-csv": "npm:^0.1.25"
|
"@llm-tools/embedjs-loader-csv": "npm:^0.1.25"
|
||||||
"@llm-tools/embedjs-loader-markdown": "npm:^0.1.25"
|
"@llm-tools/embedjs-loader-markdown": "npm:^0.1.25"
|
||||||
"@llm-tools/embedjs-loader-msoffice": "npm:^0.1.25"
|
"@llm-tools/embedjs-loader-msoffice": "npm:^0.1.25"
|
||||||
@ -2783,6 +2770,7 @@ __metadata:
|
|||||||
"@vitejs/plugin-react": "npm:^4.2.1"
|
"@vitejs/plugin-react": "npm:^4.2.1"
|
||||||
adm-zip: "npm:^0.5.16"
|
adm-zip: "npm:^0.5.16"
|
||||||
antd: "npm:^5.18.3"
|
antd: "npm:^5.18.3"
|
||||||
|
apache-arrow: "npm:^18.1.0"
|
||||||
axios: "npm:^1.7.3"
|
axios: "npm:^1.7.3"
|
||||||
browser-image-compression: "npm:^2.0.2"
|
browser-image-compression: "npm:^2.0.2"
|
||||||
dayjs: "npm:^1.11.11"
|
dayjs: "npm:^1.11.11"
|
||||||
@ -3110,6 +3098,25 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"apache-arrow@npm:^18.1.0":
|
||||||
|
version: 18.1.0
|
||||||
|
resolution: "apache-arrow@npm:18.1.0"
|
||||||
|
dependencies:
|
||||||
|
"@swc/helpers": "npm:^0.5.11"
|
||||||
|
"@types/command-line-args": "npm:^5.2.3"
|
||||||
|
"@types/command-line-usage": "npm:^5.0.4"
|
||||||
|
"@types/node": "npm:^20.13.0"
|
||||||
|
command-line-args: "npm:^5.2.1"
|
||||||
|
command-line-usage: "npm:^7.0.1"
|
||||||
|
flatbuffers: "npm:^24.3.25"
|
||||||
|
json-bignum: "npm:^0.0.3"
|
||||||
|
tslib: "npm:^2.6.2"
|
||||||
|
bin:
|
||||||
|
arrow2csv: bin/arrow2csv.js
|
||||||
|
checksum: 10c0/2bb43c19e8e29b5cba8eb5a3a76f7e4e93ecb25658e49de2c3997be12a461a72e2a4ddd2f90e6806e9725bb28e391ffedc9e6e0ab1f613eb70cfb5438d2c4d21
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"app-builder-bin@npm:4.0.0":
|
"app-builder-bin@npm:4.0.0":
|
||||||
version: 4.0.0
|
version: 4.0.0
|
||||||
resolution: "app-builder-bin@npm:4.0.0"
|
resolution: "app-builder-bin@npm:4.0.0"
|
||||||
@ -3200,6 +3207,20 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"array-back@npm:^3.0.1, array-back@npm:^3.1.0":
|
||||||
|
version: 3.1.0
|
||||||
|
resolution: "array-back@npm:3.1.0"
|
||||||
|
checksum: 10c0/bb1fe86aa8b39c21e73c68c7abf8b05ed939b8951a3b17527217f6a2a84e00e4cfa4fdec823081689c5e216709bf1f214a4f5feeee6726eaff83897fa1a7b8ee
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"array-back@npm:^6.2.2":
|
||||||
|
version: 6.2.2
|
||||||
|
resolution: "array-back@npm:6.2.2"
|
||||||
|
checksum: 10c0/c98a6e43b669400f58e2fba478336d5d02aac970566ffae3af0cb9b5585ec3811a1e010c76e34fb809a9762e6822a43a9c9a1b99f2a35f43b11a9e198e782818
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"array-buffer-byte-length@npm:^1.0.1":
|
"array-buffer-byte-length@npm:^1.0.1":
|
||||||
version: 1.0.1
|
version: 1.0.1
|
||||||
resolution: "array-buffer-byte-length@npm:1.0.1"
|
resolution: "array-buffer-byte-length@npm:1.0.1"
|
||||||
@ -3873,6 +3894,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"chalk-template@npm:^0.4.0":
|
||||||
|
version: 0.4.0
|
||||||
|
resolution: "chalk-template@npm:0.4.0"
|
||||||
|
dependencies:
|
||||||
|
chalk: "npm:^4.1.2"
|
||||||
|
checksum: 10c0/6a4cb4252966475f0bd3ee1cd8780146e1ba69f445e59c565cab891ac18708c8143515d23e2b0fb7e192574fb7608d429ea5b28f3b7b9507770ad6fccd3467e3
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"chalk@npm:2.4.2, chalk@npm:^2.4.2":
|
"chalk@npm:2.4.2, chalk@npm:^2.4.2":
|
||||||
version: 2.4.2
|
version: 2.4.2
|
||||||
resolution: "chalk@npm:2.4.2"
|
resolution: "chalk@npm:2.4.2"
|
||||||
@ -4095,6 +4125,30 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"command-line-args@npm:^5.2.1":
|
||||||
|
version: 5.2.1
|
||||||
|
resolution: "command-line-args@npm:5.2.1"
|
||||||
|
dependencies:
|
||||||
|
array-back: "npm:^3.1.0"
|
||||||
|
find-replace: "npm:^3.0.0"
|
||||||
|
lodash.camelcase: "npm:^4.3.0"
|
||||||
|
typical: "npm:^4.0.0"
|
||||||
|
checksum: 10c0/a4f6a23a1e420441bd1e44dee24efd12d2e49af7efe6e21eb32fca4e843ca3d5501ddebad86a4e9d99aa626dd6dcb64c04a43695388be54e3a803dbc326cc89f
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"command-line-usage@npm:^7.0.1":
|
||||||
|
version: 7.0.3
|
||||||
|
resolution: "command-line-usage@npm:7.0.3"
|
||||||
|
dependencies:
|
||||||
|
array-back: "npm:^6.2.2"
|
||||||
|
chalk-template: "npm:^0.4.0"
|
||||||
|
table-layout: "npm:^4.1.0"
|
||||||
|
typical: "npm:^7.1.1"
|
||||||
|
checksum: 10c0/444a3e3c6fcbdcb5802de0fd2864ea5aef83eeeb3a825fd24846b996503d4b4140e75aeb2939b3430a06407f3acc02b76b3e08dafb3a3092d22fdcced0ecb0b0
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"commander@npm:9.2.0":
|
"commander@npm:9.2.0":
|
||||||
version: 9.2.0
|
version: 9.2.0
|
||||||
resolution: "commander@npm:9.2.0"
|
resolution: "commander@npm:9.2.0"
|
||||||
@ -4144,6 +4198,38 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"compute-cosine-similarity@npm:^1.1.0":
|
||||||
|
version: 1.1.0
|
||||||
|
resolution: "compute-cosine-similarity@npm:1.1.0"
|
||||||
|
dependencies:
|
||||||
|
compute-dot: "npm:^1.1.0"
|
||||||
|
compute-l2norm: "npm:^1.1.0"
|
||||||
|
validate.io-array: "npm:^1.0.5"
|
||||||
|
validate.io-function: "npm:^1.0.2"
|
||||||
|
checksum: 10c0/82c5df828f0c3af2cf74e400916e904560fdbe61d740cb91f03b191f372408c439ab0afce8c053f6ca3fcf74d2f04bf0083e5b8b07fafceaaf50a6e35d191cb3
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"compute-dot@npm:^1.1.0":
|
||||||
|
version: 1.1.0
|
||||||
|
resolution: "compute-dot@npm:1.1.0"
|
||||||
|
dependencies:
|
||||||
|
validate.io-array: "npm:^1.0.3"
|
||||||
|
validate.io-function: "npm:^1.0.2"
|
||||||
|
checksum: 10c0/1e81ab6a18d9fd0fae9265e501d00fe303d1305c7370db531d38ca35e09f9ceba66bec27c42992abd2f271f104f084db93a56e7f49424f4a4aea5c8265881d93
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"compute-l2norm@npm:^1.1.0":
|
||||||
|
version: 1.1.0
|
||||||
|
resolution: "compute-l2norm@npm:1.1.0"
|
||||||
|
dependencies:
|
||||||
|
validate.io-array: "npm:^1.0.3"
|
||||||
|
validate.io-function: "npm:^1.0.2"
|
||||||
|
checksum: 10c0/af37fca05e662f221d73f41004972d95998c6927c666b95b9279466f34a06e374ae817194cbadd5c28d0e99a84526022b66f7d16e6e8e5cf9f909629ae381a93
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"compute-scroll-into-view@npm:^3.0.2":
|
"compute-scroll-into-view@npm:^3.0.2":
|
||||||
version: 3.1.0
|
version: 3.1.0
|
||||||
resolution: "compute-scroll-into-view@npm:3.1.0"
|
resolution: "compute-scroll-into-view@npm:3.1.0"
|
||||||
@ -4351,13 +4437,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"data-uri-to-buffer@npm:^4.0.0":
|
|
||||||
version: 4.0.1
|
|
||||||
resolution: "data-uri-to-buffer@npm:4.0.1"
|
|
||||||
checksum: 10c0/20a6b93107597530d71d4cb285acee17f66bcdfc03fd81040921a81252f19db27588d87fc8fc69e1950c55cfb0bf8ae40d0e5e21d907230813eb5d5a7f9eb45b
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"data-urls@npm:^5.0.0":
|
"data-urls@npm:^5.0.0":
|
||||||
version: 5.0.0
|
version: 5.0.0
|
||||||
resolution: "data-urls@npm:5.0.0"
|
resolution: "data-urls@npm:5.0.0"
|
||||||
@ -4648,13 +4727,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"detect-libc@npm:2.0.2":
|
|
||||||
version: 2.0.2
|
|
||||||
resolution: "detect-libc@npm:2.0.2"
|
|
||||||
checksum: 10c0/a9f4ffcd2701525c589617d98afe5a5d0676c8ea82bcc4ed6f3747241b79f781d36437c59a5e855254c864d36a3e9f8276568b6b531c28d6e53b093a15703f11
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"detect-libc@npm:^2.0.0":
|
"detect-libc@npm:^2.0.0":
|
||||||
version: 2.0.3
|
version: 2.0.3
|
||||||
resolution: "detect-libc@npm:2.0.3"
|
resolution: "detect-libc@npm:2.0.3"
|
||||||
@ -5797,16 +5869,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4":
|
|
||||||
version: 3.2.0
|
|
||||||
resolution: "fetch-blob@npm:3.2.0"
|
|
||||||
dependencies:
|
|
||||||
node-domexception: "npm:^1.0.0"
|
|
||||||
web-streams-polyfill: "npm:^3.0.3"
|
|
||||||
checksum: 10c0/60054bf47bfa10fb0ba6cb7742acec2f37c1f56344f79a70bb8b1c48d77675927c720ff3191fa546410a0442c998d27ab05e9144c32d530d8a52fbe68f843b69
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"fflate@npm:0.8.1":
|
"fflate@npm:0.8.1":
|
||||||
version: 0.8.1
|
version: 0.8.1
|
||||||
resolution: "fflate@npm:0.8.1"
|
resolution: "fflate@npm:0.8.1"
|
||||||
@ -5909,6 +5971,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"find-replace@npm:^3.0.0":
|
||||||
|
version: 3.0.0
|
||||||
|
resolution: "find-replace@npm:3.0.0"
|
||||||
|
dependencies:
|
||||||
|
array-back: "npm:^3.0.1"
|
||||||
|
checksum: 10c0/fcd1bf7960388c8193c2861bcdc760c18ac14edb4bde062a961915d9a25727b2e8aabf0229e90cc09c753fd557e5a3e5ae61e49cadbe727be89a9e8e49ce7668
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"find-up@npm:^1.0.0":
|
"find-up@npm:^1.0.0":
|
||||||
version: 1.1.2
|
version: 1.1.2
|
||||||
resolution: "find-up@npm:1.1.2"
|
resolution: "find-up@npm:1.1.2"
|
||||||
@ -5949,6 +6020,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"flatbuffers@npm:^24.3.25":
|
||||||
|
version: 24.12.23
|
||||||
|
resolution: "flatbuffers@npm:24.12.23"
|
||||||
|
checksum: 10c0/f6c7e4440c724ee337dac54db1d6ae428e84b2bf6618c542d095956e77b521bdd8a0e4d87dc93b15ae6ed4d07a8b269b5c99fd766e5acbe67546ef81034b1e05
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"flatted@npm:^3.2.9":
|
"flatted@npm:^3.2.9":
|
||||||
version: 3.3.1
|
version: 3.3.1
|
||||||
resolution: "flatted@npm:3.3.1"
|
resolution: "flatted@npm:3.3.1"
|
||||||
@ -6038,15 +6116,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"formdata-polyfill@npm:^4.0.10":
|
|
||||||
version: 4.0.10
|
|
||||||
resolution: "formdata-polyfill@npm:4.0.10"
|
|
||||||
dependencies:
|
|
||||||
fetch-blob: "npm:^3.1.2"
|
|
||||||
checksum: 10c0/5392ec484f9ce0d5e0d52fb5a78e7486637d516179b0eb84d81389d7eccf9ca2f663079da56f761355c0a65792810e3b345dc24db9a8bbbcf24ef3c8c88570c6
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"fs-constants@npm:^1.0.0":
|
"fs-constants@npm:^1.0.0":
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
resolution: "fs-constants@npm:1.0.0"
|
resolution: "fs-constants@npm:1.0.0"
|
||||||
@ -7647,13 +7716,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"js-base64@npm:^3.7.5":
|
|
||||||
version: 3.7.7
|
|
||||||
resolution: "js-base64@npm:3.7.7"
|
|
||||||
checksum: 10c0/3c905a7e78b601e4751b5e710edd0d6d045ce2d23eb84c9df03515371e1b291edc72808dc91e081cb9855aef6758292a2407006f4608ec3705373dd8baf2f80f
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"js-tiktoken@npm:^1.0.12":
|
"js-tiktoken@npm:^1.0.12":
|
||||||
version: 1.0.15
|
version: 1.0.15
|
||||||
resolution: "js-tiktoken@npm:1.0.15"
|
resolution: "js-tiktoken@npm:1.0.15"
|
||||||
@ -7738,6 +7800,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"json-bignum@npm:^0.0.3":
|
||||||
|
version: 0.0.3
|
||||||
|
resolution: "json-bignum@npm:0.0.3"
|
||||||
|
checksum: 10c0/f9f9312d57a68f72676802fa087da4ed60241d73b6cc0e3fb9f587ca0de7364efb62612a14414ccfbedc0b77ce3c320adca21834a5673c99eb3375aef9f561db
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"json-buffer@npm:3.0.1":
|
"json-buffer@npm:3.0.1":
|
||||||
version: 3.0.1
|
version: 3.0.1
|
||||||
resolution: "json-buffer@npm:3.0.1"
|
resolution: "json-buffer@npm:3.0.1"
|
||||||
@ -8052,39 +8121,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"libsql@npm:^0.4.4":
|
|
||||||
version: 0.4.7
|
|
||||||
resolution: "libsql@npm:0.4.7"
|
|
||||||
dependencies:
|
|
||||||
"@libsql/darwin-arm64": "npm:0.4.7"
|
|
||||||
"@libsql/darwin-x64": "npm:0.4.7"
|
|
||||||
"@libsql/linux-arm64-gnu": "npm:0.4.7"
|
|
||||||
"@libsql/linux-arm64-musl": "npm:0.4.7"
|
|
||||||
"@libsql/linux-x64-gnu": "npm:0.4.7"
|
|
||||||
"@libsql/linux-x64-musl": "npm:0.4.7"
|
|
||||||
"@libsql/win32-x64-msvc": "npm:0.4.7"
|
|
||||||
"@neon-rs/load": "npm:^0.0.4"
|
|
||||||
detect-libc: "npm:2.0.2"
|
|
||||||
dependenciesMeta:
|
|
||||||
"@libsql/darwin-arm64":
|
|
||||||
optional: true
|
|
||||||
"@libsql/darwin-x64":
|
|
||||||
optional: true
|
|
||||||
"@libsql/linux-arm64-gnu":
|
|
||||||
optional: true
|
|
||||||
"@libsql/linux-arm64-musl":
|
|
||||||
optional: true
|
|
||||||
"@libsql/linux-x64-gnu":
|
|
||||||
optional: true
|
|
||||||
"@libsql/linux-x64-musl":
|
|
||||||
optional: true
|
|
||||||
"@libsql/win32-x64-msvc":
|
|
||||||
optional: true
|
|
||||||
checksum: 10c0/351952440e6bad3477e5f1bb1b9d6570d16e403b894f4a13c5c7e183a1307b2fb04a2fa902728cb8594a259e1726c51c61b822d545bbc88319b126ad15468a87
|
|
||||||
conditions: (os=darwin | os=linux | os=win32) & (cpu=x64 | cpu=arm64 | cpu=wasm32)
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"lie@npm:~3.3.0":
|
"lie@npm:~3.3.0":
|
||||||
version: 3.3.0
|
version: 3.3.0
|
||||||
resolution: "lie@npm:3.3.0"
|
resolution: "lie@npm:3.3.0"
|
||||||
@ -8151,6 +8187,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"lodash.camelcase@npm:^4.3.0":
|
||||||
|
version: 4.3.0
|
||||||
|
resolution: "lodash.camelcase@npm:4.3.0"
|
||||||
|
checksum: 10c0/fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"lodash.escaperegexp@npm:^4.1.2":
|
"lodash.escaperegexp@npm:^4.1.2":
|
||||||
version: 4.1.2
|
version: 4.1.2
|
||||||
resolution: "lodash.escaperegexp@npm:4.1.2"
|
resolution: "lodash.escaperegexp@npm:4.1.2"
|
||||||
@ -9472,7 +9515,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"node-domexception@npm:1.0.0, node-domexception@npm:^1.0.0":
|
"node-domexception@npm:1.0.0":
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
resolution: "node-domexception@npm:1.0.0"
|
resolution: "node-domexception@npm:1.0.0"
|
||||||
checksum: 10c0/5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b
|
checksum: 10c0/5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b
|
||||||
@ -9500,17 +9543,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"node-fetch@npm:^3.3.2":
|
|
||||||
version: 3.3.2
|
|
||||||
resolution: "node-fetch@npm:3.3.2"
|
|
||||||
dependencies:
|
|
||||||
data-uri-to-buffer: "npm:^4.0.0"
|
|
||||||
fetch-blob: "npm:^3.1.4"
|
|
||||||
formdata-polyfill: "npm:^4.0.10"
|
|
||||||
checksum: 10c0/f3d5e56190562221398c9f5750198b34cf6113aa304e34ee97c94fd300ec578b25b2c2906edba922050fce983338fde0d5d34fcb0fc3336ade5bd0e429ad7538
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"node-gyp@npm:8.x":
|
"node-gyp@npm:8.x":
|
||||||
version: 8.4.1
|
version: 8.4.1
|
||||||
resolution: "node-gyp@npm:8.4.1"
|
resolution: "node-gyp@npm:8.4.1"
|
||||||
@ -10498,13 +10530,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"promise-limit@npm:^2.7.0":
|
|
||||||
version: 2.7.0
|
|
||||||
resolution: "promise-limit@npm:2.7.0"
|
|
||||||
checksum: 10c0/ce220a7e11c8d0541940a3d99cc424bd16a18451b295a263f6dbaa998585d2d1afa71fcb7bb29078a61e214d2f13d96e9b082e96e8e357fbe5c5936ef2459cba
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"promise-retry@npm:^2.0.1":
|
"promise-retry@npm:^2.0.1":
|
||||||
version: 2.0.1
|
version: 2.0.1
|
||||||
resolution: "promise-retry@npm:2.0.1"
|
resolution: "promise-retry@npm:2.0.1"
|
||||||
@ -11454,6 +11479,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"reflect-metadata@npm:^0.2.2":
|
||||||
|
version: 0.2.2
|
||||||
|
resolution: "reflect-metadata@npm:0.2.2"
|
||||||
|
checksum: 10c0/1cd93a15ea291e420204955544637c264c216e7aac527470e393d54b4bb075f10a17e60d8168ec96600c7e0b9fcc0cb0bb6e91c3fbf5b0d8c9056f04e6ac1ec2
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"reflect.getprototypeof@npm:^1.0.4":
|
"reflect.getprototypeof@npm:^1.0.4":
|
||||||
version: 1.0.6
|
version: 1.0.6
|
||||||
resolution: "reflect.getprototypeof@npm:1.0.6"
|
resolution: "reflect.getprototypeof@npm:1.0.6"
|
||||||
@ -12806,6 +12838,16 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"table-layout@npm:^4.1.0":
|
||||||
|
version: 4.1.1
|
||||||
|
resolution: "table-layout@npm:4.1.1"
|
||||||
|
dependencies:
|
||||||
|
array-back: "npm:^6.2.2"
|
||||||
|
wordwrapjs: "npm:^5.1.0"
|
||||||
|
checksum: 10c0/26d8e54a55ddb4de447c8f02a8d7fcbb66a9580375e406a3bc7717ab223a413f6dfbded6710f288b3dfd277991813a0bd5a17419a0dc6db54d9a36d883d868dc
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"tar-fs@npm:^2.0.0":
|
"tar-fs@npm:^2.0.0":
|
||||||
version: 2.1.1
|
version: 2.1.1
|
||||||
resolution: "tar-fs@npm:2.1.1"
|
resolution: "tar-fs@npm:2.1.1"
|
||||||
@ -13115,6 +13157,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"tslib@npm:^2.8.0":
|
||||||
|
version: 2.8.1
|
||||||
|
resolution: "tslib@npm:2.8.1"
|
||||||
|
checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"tunnel-agent@npm:^0.6.0":
|
"tunnel-agent@npm:^0.6.0":
|
||||||
version: 0.6.0
|
version: 0.6.0
|
||||||
resolution: "tunnel-agent@npm:0.6.0"
|
resolution: "tunnel-agent@npm:0.6.0"
|
||||||
@ -13240,6 +13289,20 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"typical@npm:^4.0.0":
|
||||||
|
version: 4.0.0
|
||||||
|
resolution: "typical@npm:4.0.0"
|
||||||
|
checksum: 10c0/f300b198fb9fe743859b75ec761d53c382723dc178bbce4957d9cb754f2878a44ce17dc0b6a5156c52be1065449271f63754ba594dac225b80ce3aa39f9241ed
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"typical@npm:^7.1.1":
|
||||||
|
version: 7.3.0
|
||||||
|
resolution: "typical@npm:7.3.0"
|
||||||
|
checksum: 10c0/bee697a88e1dd0447bc1cf7f6e875eaa2b0fb2cccb338b7b261e315f7df84a66402864bfc326d6b3117c50475afd1d49eda03d846a6299ad25f211035bfab3b1
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0":
|
"uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0":
|
||||||
version: 2.1.0
|
version: 2.1.0
|
||||||
resolution: "uc.micro@npm:2.1.0"
|
resolution: "uc.micro@npm:2.1.0"
|
||||||
@ -13593,6 +13656,20 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"validate.io-array@npm:^1.0.3, validate.io-array@npm:^1.0.5":
|
||||||
|
version: 1.0.6
|
||||||
|
resolution: "validate.io-array@npm:1.0.6"
|
||||||
|
checksum: 10c0/ece1e93d24fe1c92f5ec5983e186f7890021c9144c2ad0e45d76695267861e9ad0362474a038a240caf3ab30f7b7595738c7f6efe9f6f0f9ae94290d23c39ef6
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"validate.io-function@npm:^1.0.2":
|
||||||
|
version: 1.0.2
|
||||||
|
resolution: "validate.io-function@npm:1.0.2"
|
||||||
|
checksum: 10c0/210b4bbf8c71c7863df122beae76387406eb960a6540b003568dcde2bbb4baac17a2c8f0eda014f0c5d2440396e87141e62028cc8758ddc61589e3425bd26c27
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"verror@npm:1.10.0":
|
"verror@npm:1.10.0":
|
||||||
version: 1.10.0
|
version: 1.10.0
|
||||||
resolution: "verror@npm:1.10.0"
|
resolution: "verror@npm:1.10.0"
|
||||||
@ -13718,7 +13795,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"web-streams-polyfill@npm:^3.0.3, web-streams-polyfill@npm:^3.2.1":
|
"web-streams-polyfill@npm:^3.2.1":
|
||||||
version: 3.3.3
|
version: 3.3.3
|
||||||
resolution: "web-streams-polyfill@npm:3.3.3"
|
resolution: "web-streams-polyfill@npm:3.3.3"
|
||||||
checksum: 10c0/64e855c47f6c8330b5436147db1c75cb7e7474d924166800e8e2aab5eb6c76aac4981a84261dd2982b3e754490900b99791c80ae1407a9fa0dcff74f82ea3a7f
|
checksum: 10c0/64e855c47f6c8330b5436147db1c75cb7e7474d924166800e8e2aab5eb6c76aac4981a84261dd2982b3e754490900b99791c80ae1407a9fa0dcff74f82ea3a7f
|
||||||
@ -13917,6 +13994,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"wordwrapjs@npm:^5.1.0":
|
||||||
|
version: 5.1.0
|
||||||
|
resolution: "wordwrapjs@npm:5.1.0"
|
||||||
|
checksum: 10c0/e147162f139eb8c05257729fde586f5422a2d242aa8f027b5fa5adead1b571b455d0690a15c73aeaa31c93ba96864caa06d84ebdb2c32a0890602ab86a7568d1
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0":
|
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0":
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
resolution: "wrap-ansi@npm:7.0.0"
|
resolution: "wrap-ansi@npm:7.0.0"
|
||||||
@ -13956,7 +14040,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"ws@npm:^8.13.0, ws@npm:^8.16.0":
|
"ws@npm:^8.16.0":
|
||||||
version: 8.18.0
|
version: 8.18.0
|
||||||
resolution: "ws@npm:8.18.0"
|
resolution: "ws@npm:8.18.0"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user