mirror of
https://github.com/docmost/docmost.git
synced 2025-11-18 20:21:11 +10:00
refine
This commit is contained in:
@ -30,7 +30,6 @@
|
|||||||
"test:e2e": "jest --config test/jest-e2e.json"
|
"test:e2e": "jest --config test/jest-e2e.json"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ai-sdk/amazon-bedrock": "^3.0.35",
|
|
||||||
"@ai-sdk/azure": "^2.0.47",
|
"@ai-sdk/azure": "^2.0.47",
|
||||||
"@ai-sdk/google": "^2.0.18",
|
"@ai-sdk/google": "^2.0.18",
|
||||||
"@ai-sdk/openai": "^2.0.46",
|
"@ai-sdk/openai": "^2.0.46",
|
||||||
|
|||||||
@ -22,4 +22,12 @@ export class UpdateWorkspaceDto extends PartialType(CreateWorkspaceDto) {
|
|||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsBoolean()
|
@IsBoolean()
|
||||||
restrictApiToAdmins: boolean;
|
restrictApiToAdmins: boolean;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@IsBoolean()
|
||||||
|
aiSearch: boolean;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@IsBoolean()
|
||||||
|
generativeAi: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -312,6 +312,30 @@ export class WorkspaceService {
|
|||||||
delete updateWorkspaceDto.restrictApiToAdmins;
|
delete updateWorkspaceDto.restrictApiToAdmins;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof updateWorkspaceDto.aiSearch !== 'undefined') {
|
||||||
|
await this.workspaceRepo.updateAiSettings(
|
||||||
|
workspaceId,
|
||||||
|
'aiSearch',
|
||||||
|
updateWorkspaceDto.aiSearch,
|
||||||
|
);
|
||||||
|
|
||||||
|
// to enable this
|
||||||
|
// we need to check if pgvector and embeddings table exists
|
||||||
|
|
||||||
|
delete updateWorkspaceDto.aiSearch;
|
||||||
|
// if true, send to ai queue
|
||||||
|
// if false, send to delete embeddings
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof updateWorkspaceDto.generativeAi !== 'undefined') {
|
||||||
|
await this.workspaceRepo.updateAiSettings(
|
||||||
|
workspaceId,
|
||||||
|
'generativeAi',
|
||||||
|
updateWorkspaceDto.generativeAi,
|
||||||
|
);
|
||||||
|
delete updateWorkspaceDto.generativeAi;
|
||||||
|
}
|
||||||
|
|
||||||
await this.workspaceRepo.updateWorkspace(updateWorkspaceDto, workspaceId);
|
await this.workspaceRepo.updateWorkspace(updateWorkspaceDto, workspaceId);
|
||||||
|
|
||||||
const workspace = await this.workspaceRepo.findById(workspaceId, {
|
const workspace = await this.workspaceRepo.findById(workspaceId, {
|
||||||
|
|||||||
@ -26,19 +26,16 @@ export class PageListener {
|
|||||||
if (this.isTypesense()) {
|
if (this.isTypesense()) {
|
||||||
await this.searchQueue.add(QueueJob.PAGE_CREATED, { pageIds });
|
await this.searchQueue.add(QueueJob.PAGE_CREATED, { pageIds });
|
||||||
}
|
}
|
||||||
if (this.environmentService.isAISearchEnabled()) {
|
|
||||||
await this.aiQueue.add(QueueJob.PAGE_CREATED, { pageIds });
|
await this.aiQueue.add(QueueJob.PAGE_CREATED, { pageIds });
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@OnEvent(EventName.PAGE_UPDATED)
|
@OnEvent(EventName.PAGE_UPDATED)
|
||||||
async handlePageUpdated(event: PageEvent) {
|
async handlePageUpdated(event: PageEvent) {
|
||||||
const { pageIds } = event;
|
const { pageIds } = event;
|
||||||
|
|
||||||
if (this.isTypesense()) {
|
|
||||||
await this.searchQueue.add(QueueJob.PAGE_UPDATED, { pageIds });
|
await this.searchQueue.add(QueueJob.PAGE_UPDATED, { pageIds });
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@OnEvent(EventName.PAGE_DELETED)
|
@OnEvent(EventName.PAGE_DELETED)
|
||||||
async handlePageDeleted(event: PageEvent) {
|
async handlePageDeleted(event: PageEvent) {
|
||||||
@ -68,10 +65,8 @@ export class PageListener {
|
|||||||
await this.searchQueue.add(QueueJob.PAGE_RESTORED, { pageIds });
|
await this.searchQueue.add(QueueJob.PAGE_RESTORED, { pageIds });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.environmentService.isAISearchEnabled()) {
|
|
||||||
await this.aiQueue.add(QueueJob.PAGE_RESTORED, { pageIds });
|
await this.aiQueue.add(QueueJob.PAGE_RESTORED, { pageIds });
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
isTypesense(): boolean {
|
isTypesense(): boolean {
|
||||||
return this.environmentService.getSearchDriver() === 'typesense';
|
return this.environmentService.getSearchDriver() === 'typesense';
|
||||||
|
|||||||
@ -27,10 +27,8 @@ export class SpaceListener {
|
|||||||
await this.searchQueue.add(QueueJob.SPACE_DELETED, { spaceId });
|
await this.searchQueue.add(QueueJob.SPACE_DELETED, { spaceId });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.environmentService.isAISearchEnabled()) {
|
|
||||||
await this.aiQueue.add(QueueJob.SPACE_DELETED, { spaceId });
|
await this.aiQueue.add(QueueJob.SPACE_DELETED, { spaceId });
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
isTypesense(): boolean {
|
isTypesense(): boolean {
|
||||||
return this.environmentService.getSearchDriver() === 'typesense';
|
return this.environmentService.getSearchDriver() === 'typesense';
|
||||||
|
|||||||
@ -1,14 +0,0 @@
|
|||||||
import { type Kysely } from 'kysely';
|
|
||||||
|
|
||||||
export async function up(db: Kysely<any>): Promise<void> {
|
|
||||||
await db.schema
|
|
||||||
.alterTable('workspaces')
|
|
||||||
.addColumn('enable_ai', 'boolean', (col) => col.defaultTo(false))
|
|
||||||
.addColumn('enable_ai_search', 'boolean', (col) => col.defaultTo(false))
|
|
||||||
.execute();
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function down(db: Kysely<any>): Promise<void> {
|
|
||||||
await db.schema.alterTable('workspaces').dropColumn('enable_ai').execute();
|
|
||||||
await db.schema.alterTable('workspaces').dropColumn('enable_ai_search').execute();
|
|
||||||
}
|
|
||||||
@ -175,4 +175,22 @@ export class WorkspaceRepo {
|
|||||||
.returning(this.baseFields)
|
.returning(this.baseFields)
|
||||||
.executeTakeFirst();
|
.executeTakeFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async updateAiSettings(
|
||||||
|
workspaceId: string,
|
||||||
|
prefKey: string,
|
||||||
|
prefValue: string | boolean,
|
||||||
|
) {
|
||||||
|
return this.db
|
||||||
|
.updateTable('workspaces')
|
||||||
|
.set({
|
||||||
|
settings: sql`COALESCE(settings, '{}'::jsonb)
|
||||||
|
|| jsonb_build_object('ai', COALESCE(settings->'ai', '{}'::jsonb)
|
||||||
|
|| jsonb_build_object('${sql.raw(prefKey)}', ${sql.lit(prefValue)}))`,
|
||||||
|
updatedAt: new Date(),
|
||||||
|
})
|
||||||
|
.where('id', '=', workspaceId)
|
||||||
|
.returning(this.baseFields)
|
||||||
|
.executeTakeFirst();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Submodule apps/server/src/ee updated: 05b042cbb0...f7ff3ff80d
@ -10,6 +10,10 @@ export class EnvironmentService {
|
|||||||
return this.configService.get<string>('NODE_ENV', 'development');
|
return this.configService.get<string>('NODE_ENV', 'development');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isDevelopment(): boolean {
|
||||||
|
return this.getNodeEnv() === 'development';
|
||||||
|
}
|
||||||
|
|
||||||
getAppUrl(): string {
|
getAppUrl(): string {
|
||||||
const rawUrl =
|
const rawUrl =
|
||||||
this.configService.get<string>('APP_URL') ||
|
this.configService.get<string>('APP_URL') ||
|
||||||
@ -237,23 +241,20 @@ export class EnvironmentService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getAiDriver(): string {
|
getAiDriver(): string {
|
||||||
return this.configService.get<string>('AI_DRIVER', 'openai');
|
return this.configService.get<string>('AI_DRIVER');
|
||||||
}
|
}
|
||||||
|
|
||||||
getAiEmbeddingModel(): string {
|
getAiEmbeddingModel(): string {
|
||||||
return this.configService.get<string>(
|
return this.configService.get<string>('AI_EMBEDDING_MODEL');
|
||||||
'AI_EMBEDDING_MODEL',
|
|
||||||
'text-embedding-3-small',
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getAiCompletionModel(): string {
|
getAiCompletionModel(): string {
|
||||||
return this.configService.get<string>('AI_COMPLETION_MODEL', 'gpt-4o-mini');
|
return this.configService.get<string>('AI_COMPLETION_MODEL');
|
||||||
}
|
}
|
||||||
|
|
||||||
getAiEmbeddingDimension(): number {
|
getAiEmbeddingDimension(): number {
|
||||||
return parseInt(
|
return parseInt(
|
||||||
this.configService.get<string>('AI_EMBEDDING_DIMENSION', '1536'),
|
this.configService.get<string>('AI_EMBEDDING_DIMENSION'),
|
||||||
10,
|
10,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -266,8 +267,8 @@ export class EnvironmentService {
|
|||||||
return this.configService.get<string>('OPENAI_API_URL');
|
return this.configService.get<string>('OPENAI_API_URL');
|
||||||
}
|
}
|
||||||
|
|
||||||
getGoogleAiApiKey(): string {
|
getGeminiApiKey(): string {
|
||||||
return this.configService.get<string>('GOOGLE_AI_API_KEY');
|
return this.configService.get<string>('GEMINI_API_KEY');
|
||||||
}
|
}
|
||||||
|
|
||||||
getOllamaApiUrl(): string {
|
getOllamaApiUrl(): string {
|
||||||
@ -276,27 +277,4 @@ export class EnvironmentService {
|
|||||||
'http://localhost:11434',
|
'http://localhost:11434',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
getAwsAccessKeyId(): string {
|
|
||||||
return this.configService.get<string>('AWS_ACCESS_KEY_ID');
|
|
||||||
}
|
|
||||||
|
|
||||||
getAwsSecretAccessKey(): string {
|
|
||||||
return this.configService.get<string>('AWS_SECRET_ACCESS_KEY');
|
|
||||||
}
|
|
||||||
|
|
||||||
getAwsBedrockRegion(): string {
|
|
||||||
return this.configService.get<string>('AWS_BEDROCK_REGION');
|
|
||||||
}
|
|
||||||
|
|
||||||
isAIEnabled(): string {
|
|
||||||
return this.configService.get<string>('ENABLE_AI');
|
|
||||||
}
|
|
||||||
|
|
||||||
isAISearchEnabled(): boolean {
|
|
||||||
const config = this.configService
|
|
||||||
.get<string>('AI_SEARCH', 'false')
|
|
||||||
.toLowerCase();
|
|
||||||
return config === 'true';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -93,6 +93,7 @@ export class EnvironmentVariables {
|
|||||||
|
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@ValidateIf((obj) => obj.SEARCH_DRIVER === 'typesense')
|
@ValidateIf((obj) => obj.SEARCH_DRIVER === 'typesense')
|
||||||
|
@IsNotEmpty()
|
||||||
@IsString()
|
@IsString()
|
||||||
TYPESENSE_API_KEY: string;
|
TYPESENSE_API_KEY: string;
|
||||||
|
|
||||||
@ -101,6 +102,53 @@ export class EnvironmentVariables {
|
|||||||
@IsISO6391()
|
@IsISO6391()
|
||||||
@IsString()
|
@IsString()
|
||||||
TYPESENSE_LOCALE: string;
|
TYPESENSE_LOCALE: string;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@ValidateIf((obj) => obj.AI_DRIVER)
|
||||||
|
@IsIn(['openai', 'gemini', 'ollama'])
|
||||||
|
@IsString()
|
||||||
|
AI_DRIVER: string;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@ValidateIf((obj) => obj.AI_DRIVER)
|
||||||
|
@IsString()
|
||||||
|
@IsNotEmpty()
|
||||||
|
AI_EMBEDDING_MODEL: string;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@ValidateIf((obj) => obj.AI_EMBEDDING_DIMENSION)
|
||||||
|
@IsIn(['768', '1024', '1536'])
|
||||||
|
@IsString()
|
||||||
|
AI_EMBEDDING_DIMENSION: string;
|
||||||
|
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@ValidateIf((obj) => obj.AI_DRIVER)
|
||||||
|
@IsString()
|
||||||
|
@IsNotEmpty()
|
||||||
|
AI_COMPLETION_MODEL: string;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@ValidateIf((obj) => obj.AI_DRIVER && obj.AI_DRIVER === 'openai')
|
||||||
|
@IsString()
|
||||||
|
@IsNotEmpty()
|
||||||
|
OPENAI_API_KEY: string;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@ValidateIf((obj) => obj.AI_DRIVER && obj.OPENAI_API_URL && obj.AI_DRIVER === 'openai')
|
||||||
|
@IsUrl({ protocols: ['http', 'https'], require_tld: false })
|
||||||
|
OPENAI_API_URL: string;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@ValidateIf((obj) => obj.AI_DRIVER && obj.AI_DRIVER === 'gemini')
|
||||||
|
@IsString()
|
||||||
|
@IsNotEmpty()
|
||||||
|
GEMINI_API_KEY: string;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@ValidateIf((obj) => obj.AI_DRIVER && obj.AI_DRIVER === 'ollama')
|
||||||
|
@IsUrl({ protocols: ['http', 'https'], require_tld: false })
|
||||||
|
OLLAMA_API_URL: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function validate(config: Record<string, any>) {
|
export function validate(config: Record<string, any>) {
|
||||||
|
|||||||
@ -53,6 +53,7 @@ export enum QueueJob {
|
|||||||
WORKSPACE_CREATED = 'workspace-created',
|
WORKSPACE_CREATED = 'workspace-created',
|
||||||
WORKSPACE_SPACE_UPDATED = 'workspace-updated',
|
WORKSPACE_SPACE_UPDATED = 'workspace-updated',
|
||||||
WORKSPACE_DELETED = 'workspace-deleted',
|
WORKSPACE_DELETED = 'workspace-deleted',
|
||||||
|
WORKSPACE_DELETE_EMBEDDINGS = 'workspace-delete-embeddings',
|
||||||
|
|
||||||
GENERATE_PAGE_EMBEDDINGS = 'generate-page-embeddings',
|
GENERATE_PAGE_EMBEDDINGS = 'generate-page-embeddings',
|
||||||
DELETE_PAGE_EMBEDDINGS = 'delete-page-embeddings',
|
DELETE_PAGE_EMBEDDINGS = 'delete-page-embeddings',
|
||||||
|
|||||||
102
pnpm-lock.yaml
generated
102
pnpm-lock.yaml
generated
@ -429,9 +429,6 @@ importers:
|
|||||||
|
|
||||||
apps/server:
|
apps/server:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@ai-sdk/amazon-bedrock':
|
|
||||||
specifier: ^3.0.35
|
|
||||||
version: 3.0.35(zod@3.25.56)
|
|
||||||
'@ai-sdk/azure':
|
'@ai-sdk/azure':
|
||||||
specifier: ^2.0.47
|
specifier: ^2.0.47
|
||||||
version: 2.0.47(zod@3.25.56)
|
version: 2.0.47(zod@3.25.56)
|
||||||
@ -754,18 +751,6 @@ packages:
|
|||||||
'@adobe/css-tools@4.3.3':
|
'@adobe/css-tools@4.3.3':
|
||||||
resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==}
|
resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==}
|
||||||
|
|
||||||
'@ai-sdk/amazon-bedrock@3.0.35':
|
|
||||||
resolution: {integrity: sha512-p3MjsZ+CvFgdzV2gf5J1pn5EzC/GVI8sHgL26f9RwAbUSyytPVnGevqcqmFXkWXZ7BtNgkB8M+Gd+1hH2hg5IA==}
|
|
||||||
engines: {node: '>=18'}
|
|
||||||
peerDependencies:
|
|
||||||
zod: ^3.25.76 || ^4.1.8
|
|
||||||
|
|
||||||
'@ai-sdk/anthropic@2.0.27':
|
|
||||||
resolution: {integrity: sha512-tGXdWNs+dMZLsn6yVroz9PqPZbCY6kqwGl/xxFVxJWDrTPGj3+1t1vE7pzTZ3vDOiG05iVC7wzlXwV2Or650YA==}
|
|
||||||
engines: {node: '>=18'}
|
|
||||||
peerDependencies:
|
|
||||||
zod: ^3.25.76 || ^4.1.8
|
|
||||||
|
|
||||||
'@ai-sdk/azure@2.0.47':
|
'@ai-sdk/azure@2.0.47':
|
||||||
resolution: {integrity: sha512-rPvjnBWVTVRCDs47qfBWxXxx4i4h7itemyKux21qibB7y24rubqmZGx9lYcI5pyBL057uROhBa9Y5VVHf/ESYw==}
|
resolution: {integrity: sha512-rPvjnBWVTVRCDs47qfBWxXxx4i4h7itemyKux21qibB7y24rubqmZGx9lYcI5pyBL057uROhBa9Y5VVHf/ESYw==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
@ -796,12 +781,6 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
zod: ^3.25.76 || ^4.1.8
|
zod: ^3.25.76 || ^4.1.8
|
||||||
|
|
||||||
'@ai-sdk/provider-utils@3.0.12':
|
|
||||||
resolution: {integrity: sha512-ZtbdvYxdMoria+2SlNarEk6Hlgyf+zzcznlD55EAl+7VZvJaSg2sqPvwArY7L6TfDEDJsnCq0fdhBSkYo0Xqdg==}
|
|
||||||
engines: {node: '>=18'}
|
|
||||||
peerDependencies:
|
|
||||||
zod: ^3.25.76 || ^4.1.8
|
|
||||||
|
|
||||||
'@ai-sdk/provider@2.0.0':
|
'@ai-sdk/provider@2.0.0':
|
||||||
resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==}
|
resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
@ -3850,10 +3829,6 @@ packages:
|
|||||||
'@smithy/eventstream-codec@3.1.10':
|
'@smithy/eventstream-codec@3.1.10':
|
||||||
resolution: {integrity: sha512-323B8YckSbUH0nMIpXn7HZsAVKHYHFUODa8gG9cHo0ySvA1fr5iWaNT+iIL0UCqUzG6QPHA3BSsBtRQou4mMqQ==}
|
resolution: {integrity: sha512-323B8YckSbUH0nMIpXn7HZsAVKHYHFUODa8gG9cHo0ySvA1fr5iWaNT+iIL0UCqUzG6QPHA3BSsBtRQou4mMqQ==}
|
||||||
|
|
||||||
'@smithy/eventstream-codec@4.2.0':
|
|
||||||
resolution: {integrity: sha512-XE7CtKfyxYiNZ5vz7OvyTf1osrdbJfmUy+rbh+NLQmZumMGvY0mT0Cq1qKSfhrvLtRYzMsOBuRpi10dyI0EBPg==}
|
|
||||||
engines: {node: '>=18.0.0'}
|
|
||||||
|
|
||||||
'@smithy/eventstream-serde-browser@3.0.14':
|
'@smithy/eventstream-serde-browser@3.0.14':
|
||||||
resolution: {integrity: sha512-kbrt0vjOIihW3V7Cqj1SXQvAI5BR8SnyQYsandva0AOR307cXAc+IhPngxIPslxTLfxwDpNu0HzCAq6g42kCPg==}
|
resolution: {integrity: sha512-kbrt0vjOIihW3V7Cqj1SXQvAI5BR8SnyQYsandva0AOR307cXAc+IhPngxIPslxTLfxwDpNu0HzCAq6g42kCPg==}
|
||||||
engines: {node: '>=16.0.0'}
|
engines: {node: '>=16.0.0'}
|
||||||
@ -3895,10 +3870,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==}
|
resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==}
|
||||||
engines: {node: '>=16.0.0'}
|
engines: {node: '>=16.0.0'}
|
||||||
|
|
||||||
'@smithy/is-array-buffer@4.2.0':
|
|
||||||
resolution: {integrity: sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==}
|
|
||||||
engines: {node: '>=18.0.0'}
|
|
||||||
|
|
||||||
'@smithy/md5-js@3.0.11':
|
'@smithy/md5-js@3.0.11':
|
||||||
resolution: {integrity: sha512-3NM0L3i2Zm4bbgG6Ymi9NBcxXhryi3uE8fIfHJZIOfZVxOkGdjdgjR9A06SFIZCfnEIWKXZdm6Yq5/aPXFFhsQ==}
|
resolution: {integrity: sha512-3NM0L3i2Zm4bbgG6Ymi9NBcxXhryi3uE8fIfHJZIOfZVxOkGdjdgjR9A06SFIZCfnEIWKXZdm6Yq5/aPXFFhsQ==}
|
||||||
|
|
||||||
@ -3970,10 +3941,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-+1iaIQHthDh9yaLhRzaoQxRk+l9xlk+JjMFxGRhNLz+m9vKOkjNeU8QuB4w3xvzHyVR/BVlp/4AXDHjoRIkfgQ==}
|
resolution: {integrity: sha512-+1iaIQHthDh9yaLhRzaoQxRk+l9xlk+JjMFxGRhNLz+m9vKOkjNeU8QuB4w3xvzHyVR/BVlp/4AXDHjoRIkfgQ==}
|
||||||
engines: {node: '>=18.0.0'}
|
engines: {node: '>=18.0.0'}
|
||||||
|
|
||||||
'@smithy/types@4.6.0':
|
|
||||||
resolution: {integrity: sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==}
|
|
||||||
engines: {node: '>=18.0.0'}
|
|
||||||
|
|
||||||
'@smithy/url-parser@3.0.11':
|
'@smithy/url-parser@3.0.11':
|
||||||
resolution: {integrity: sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw==}
|
resolution: {integrity: sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw==}
|
||||||
|
|
||||||
@ -3996,10 +3963,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==}
|
resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==}
|
||||||
engines: {node: '>=16.0.0'}
|
engines: {node: '>=16.0.0'}
|
||||||
|
|
||||||
'@smithy/util-buffer-from@4.2.0':
|
|
||||||
resolution: {integrity: sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==}
|
|
||||||
engines: {node: '>=18.0.0'}
|
|
||||||
|
|
||||||
'@smithy/util-config-provider@3.0.0':
|
'@smithy/util-config-provider@3.0.0':
|
||||||
resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==}
|
resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==}
|
||||||
engines: {node: '>=16.0.0'}
|
engines: {node: '>=16.0.0'}
|
||||||
@ -4020,10 +3983,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==}
|
resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==}
|
||||||
engines: {node: '>=16.0.0'}
|
engines: {node: '>=16.0.0'}
|
||||||
|
|
||||||
'@smithy/util-hex-encoding@4.2.0':
|
|
||||||
resolution: {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==}
|
|
||||||
engines: {node: '>=18.0.0'}
|
|
||||||
|
|
||||||
'@smithy/util-middleware@3.0.11':
|
'@smithy/util-middleware@3.0.11':
|
||||||
resolution: {integrity: sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==}
|
resolution: {integrity: sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==}
|
||||||
engines: {node: '>=16.0.0'}
|
engines: {node: '>=16.0.0'}
|
||||||
@ -4048,10 +4007,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==}
|
resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==}
|
||||||
engines: {node: '>=16.0.0'}
|
engines: {node: '>=16.0.0'}
|
||||||
|
|
||||||
'@smithy/util-utf8@4.2.0':
|
|
||||||
resolution: {integrity: sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==}
|
|
||||||
engines: {node: '>=18.0.0'}
|
|
||||||
|
|
||||||
'@smithy/util-waiter@3.2.0':
|
'@smithy/util-waiter@3.2.0':
|
||||||
resolution: {integrity: sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==}
|
resolution: {integrity: sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==}
|
||||||
engines: {node: '>=16.0.0'}
|
engines: {node: '>=16.0.0'}
|
||||||
@ -5235,9 +5190,6 @@ packages:
|
|||||||
avvio@9.1.0:
|
avvio@9.1.0:
|
||||||
resolution: {integrity: sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==}
|
resolution: {integrity: sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==}
|
||||||
|
|
||||||
aws4fetch@1.0.20:
|
|
||||||
resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==}
|
|
||||||
|
|
||||||
axios@1.9.0:
|
axios@1.9.0:
|
||||||
resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==}
|
resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==}
|
||||||
|
|
||||||
@ -10268,22 +10220,6 @@ snapshots:
|
|||||||
|
|
||||||
'@adobe/css-tools@4.3.3': {}
|
'@adobe/css-tools@4.3.3': {}
|
||||||
|
|
||||||
'@ai-sdk/amazon-bedrock@3.0.35(zod@3.25.56)':
|
|
||||||
dependencies:
|
|
||||||
'@ai-sdk/anthropic': 2.0.27(zod@3.25.56)
|
|
||||||
'@ai-sdk/provider': 2.0.0
|
|
||||||
'@ai-sdk/provider-utils': 3.0.12(zod@3.25.56)
|
|
||||||
'@smithy/eventstream-codec': 4.2.0
|
|
||||||
'@smithy/util-utf8': 4.2.0
|
|
||||||
aws4fetch: 1.0.20
|
|
||||||
zod: 3.25.56
|
|
||||||
|
|
||||||
'@ai-sdk/anthropic@2.0.27(zod@3.25.56)':
|
|
||||||
dependencies:
|
|
||||||
'@ai-sdk/provider': 2.0.0
|
|
||||||
'@ai-sdk/provider-utils': 3.0.12(zod@3.25.56)
|
|
||||||
zod: 3.25.56
|
|
||||||
|
|
||||||
'@ai-sdk/azure@2.0.47(zod@3.25.56)':
|
'@ai-sdk/azure@2.0.47(zod@3.25.56)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@ai-sdk/openai': 2.0.46(zod@3.25.56)
|
'@ai-sdk/openai': 2.0.46(zod@3.25.56)
|
||||||
@ -10317,13 +10253,6 @@ snapshots:
|
|||||||
eventsource-parser: 3.0.6
|
eventsource-parser: 3.0.6
|
||||||
zod: 3.25.56
|
zod: 3.25.56
|
||||||
|
|
||||||
'@ai-sdk/provider-utils@3.0.12(zod@3.25.56)':
|
|
||||||
dependencies:
|
|
||||||
'@ai-sdk/provider': 2.0.0
|
|
||||||
'@standard-schema/spec': 1.0.0
|
|
||||||
eventsource-parser: 3.0.6
|
|
||||||
zod: 3.25.56
|
|
||||||
|
|
||||||
'@ai-sdk/provider@2.0.0':
|
'@ai-sdk/provider@2.0.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
json-schema: 0.4.0
|
json-schema: 0.4.0
|
||||||
@ -14083,13 +14012,6 @@ snapshots:
|
|||||||
'@smithy/util-hex-encoding': 3.0.0
|
'@smithy/util-hex-encoding': 3.0.0
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
'@smithy/eventstream-codec@4.2.0':
|
|
||||||
dependencies:
|
|
||||||
'@aws-crypto/crc32': 5.2.0
|
|
||||||
'@smithy/types': 4.6.0
|
|
||||||
'@smithy/util-hex-encoding': 4.2.0
|
|
||||||
tslib: 2.8.1
|
|
||||||
|
|
||||||
'@smithy/eventstream-serde-browser@3.0.14':
|
'@smithy/eventstream-serde-browser@3.0.14':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@smithy/eventstream-serde-universal': 3.0.13
|
'@smithy/eventstream-serde-universal': 3.0.13
|
||||||
@ -14154,10 +14076,6 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
'@smithy/is-array-buffer@4.2.0':
|
|
||||||
dependencies:
|
|
||||||
tslib: 2.8.1
|
|
||||||
|
|
||||||
'@smithy/md5-js@3.0.11':
|
'@smithy/md5-js@3.0.11':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@smithy/types': 3.7.2
|
'@smithy/types': 3.7.2
|
||||||
@ -14277,10 +14195,6 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
'@smithy/types@4.6.0':
|
|
||||||
dependencies:
|
|
||||||
tslib: 2.8.1
|
|
||||||
|
|
||||||
'@smithy/url-parser@3.0.11':
|
'@smithy/url-parser@3.0.11':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@smithy/querystring-parser': 3.0.11
|
'@smithy/querystring-parser': 3.0.11
|
||||||
@ -14311,11 +14225,6 @@ snapshots:
|
|||||||
'@smithy/is-array-buffer': 3.0.0
|
'@smithy/is-array-buffer': 3.0.0
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
'@smithy/util-buffer-from@4.2.0':
|
|
||||||
dependencies:
|
|
||||||
'@smithy/is-array-buffer': 4.2.0
|
|
||||||
tslib: 2.8.1
|
|
||||||
|
|
||||||
'@smithy/util-config-provider@3.0.0':
|
'@smithy/util-config-provider@3.0.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
@ -14348,10 +14257,6 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
'@smithy/util-hex-encoding@4.2.0':
|
|
||||||
dependencies:
|
|
||||||
tslib: 2.8.1
|
|
||||||
|
|
||||||
'@smithy/util-middleware@3.0.11':
|
'@smithy/util-middleware@3.0.11':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@smithy/types': 3.7.2
|
'@smithy/types': 3.7.2
|
||||||
@ -14388,11 +14293,6 @@ snapshots:
|
|||||||
'@smithy/util-buffer-from': 3.0.0
|
'@smithy/util-buffer-from': 3.0.0
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
'@smithy/util-utf8@4.2.0':
|
|
||||||
dependencies:
|
|
||||||
'@smithy/util-buffer-from': 4.2.0
|
|
||||||
tslib: 2.8.1
|
|
||||||
|
|
||||||
'@smithy/util-waiter@3.2.0':
|
'@smithy/util-waiter@3.2.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@smithy/abort-controller': 3.1.9
|
'@smithy/abort-controller': 3.1.9
|
||||||
@ -15724,8 +15624,6 @@ snapshots:
|
|||||||
'@fastify/error': 4.0.0
|
'@fastify/error': 4.0.0
|
||||||
fastq: 1.17.1
|
fastq: 1.17.1
|
||||||
|
|
||||||
aws4fetch@1.0.20: {}
|
|
||||||
|
|
||||||
axios@1.9.0:
|
axios@1.9.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: 1.15.6
|
follow-redirects: 1.15.6
|
||||||
|
|||||||
Reference in New Issue
Block a user