From 6fbbecbeaacc41036dd5c11d7be2caaa25daec53 Mon Sep 17 00:00:00 2001 From: Socrates Ponce Date: Thu, 4 Sep 2025 16:08:27 +0200 Subject: [PATCH 001/110] feat: WIP update package-lock.json --- backend/package-lock.json | 117 -------------------------------------- 1 file changed, 117 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index d79d2d79d..d29e31efa 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -227,45 +227,11 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@angular-devkit/schematics-cli/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@angular-devkit/schematics-cli/node_modules/json-schema-traverse": { "version": "1.0.0", "dev": true, "license": "MIT" }, - "node_modules/@angular-devkit/schematics-cli/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@angular-devkit/schematics-cli/node_modules/rxjs": { "version": "7.8.1", "dev": true, @@ -315,45 +281,11 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@angular-devkit/schematics/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@angular-devkit/schematics/node_modules/json-schema-traverse": { "version": "1.0.0", "dev": true, "license": "MIT" }, - "node_modules/@angular-devkit/schematics/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@angular-devkit/schematics/node_modules/rxjs": { "version": "7.8.1", "dev": true, @@ -4570,24 +4502,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@nestjs/schematics/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@nestjs/schematics/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -4595,22 +4509,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@nestjs/schematics/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@nestjs/schematics/node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -14449,21 +14347,6 @@ "node": ">=18" } }, - "node_modules/playwright/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/pluralize": { "version": "8.0.0", "dev": true, From 4a131c7e72308bf45d3245ab77ce7d9c213aa7ed Mon Sep 17 00:00:00 2001 From: Socrates Ponce Date: Thu, 4 Sep 2025 18:09:31 +0200 Subject: [PATCH 002/110] feat: WIP define Prompt and PromptCategory Entities, as well as PromptController --- backend/src/controllers/prompts/dtos/index.ts | 100 ++++++++++++++++++ .../controllers/prompts/prompts.controller.ts | 34 ++++++ .../database/entities/prompt-category.ts | 21 ++++ .../src/domain/database/entities/prompt.ts | 28 +++++ backend/src/domain/prompt/interfaces.ts | 4 + 5 files changed, 187 insertions(+) create mode 100644 backend/src/controllers/prompts/dtos/index.ts create mode 100644 backend/src/controllers/prompts/prompts.controller.ts create mode 100644 backend/src/domain/database/entities/prompt-category.ts create mode 100644 backend/src/domain/database/entities/prompt.ts create mode 100644 backend/src/domain/prompt/interfaces.ts diff --git a/backend/src/controllers/prompts/dtos/index.ts b/backend/src/controllers/prompts/dtos/index.ts new file mode 100644 index 000000000..2e1f94cb7 --- /dev/null +++ b/backend/src/controllers/prompts/dtos/index.ts @@ -0,0 +1,100 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsArray, IsDefined, IsEnum, IsOptional, IsString } from 'class-validator'; +import { VisibilityType } from 'src/domain/prompt/interfaces'; + +export class CreatePromptCategoryDto { + @ApiProperty({ + description: 'The label or display name of the prompt category.', + required: true, + }) + @IsDefined() + @IsString() + label!: string; + + @ApiProperty({ + description: 'The description of the prompt category.', + required: false, + }) + @IsOptional() + @IsString() + description?: string; + + @ApiProperty({ + description: 'The date of creation for a prompt category.', + required: true, + }) + creationDate!: Date; + + @ApiProperty({ + description: 'The visibility of the prompt category.', + required: true, + enum: VisibilityType, + }) + @IsDefined() + @IsEnum(VisibilityType) + visibility!: VisibilityType; +} + +export class PromptCategoryDto extends CreatePromptCategoryDto { + @ApiProperty({ + description: 'The identifier of the prompt category.', + required: true, + }) + id!: string; +} + +export class CreatePromptDto { + @ApiProperty({ + description: 'The title of the prompt.', + required: true, + }) + @IsDefined() + @IsString() + title!: string; + + @ApiProperty({ + description: 'The description of the prompt.', + required: false, + }) + @IsOptional() + description?: string; + + @ApiProperty({ + description: 'The content or body of the prompt.', + required: true, + }) + @IsDefined() + @IsString() + content!: string; + + @ApiProperty({ + description: 'The ID of the categories this prompt belongs to.', + required: false, + }) + @IsOptional() + @IsArray() + categories?: [number]; + + @ApiProperty({ + description: 'The visibility of the prompt (e.g., public, private).', + required: true, + enum: VisibilityType, + }) + @IsDefined() + @IsEnum(VisibilityType) + visibility!: VisibilityType; +} + +export class PromptDto extends CreatePromptDto { + @ApiProperty({ + description: 'The identifier of the prompt.', + required: true, + }) + id!: string; + + @ApiProperty({ + description: 'The average rating of the prompt.', + required: true, + }) + rating!: number; +} diff --git a/backend/src/controllers/prompts/prompts.controller.ts b/backend/src/controllers/prompts/prompts.controller.ts new file mode 100644 index 000000000..76aa6ca9a --- /dev/null +++ b/backend/src/controllers/prompts/prompts.controller.ts @@ -0,0 +1,34 @@ +import { Body, Controller, Get, Param, Post } from '@nestjs/common'; +import { ApiOperation, ApiResponse } from '@nestjs/swagger'; +import { CreatePromptCategoryDto, CreatePromptDto, PromptCategoryDto, PromptDto } from './dtos/index'; + +@Controller('prompt') +export class PromptController { + @Post('categories') + @ApiOperation({ operationId: 'postPromptCategory', summary: 'Create a new prompt category' }) + @ApiResponse({ status: 201, description: 'Category created successfully' }) + async createPromptCategory(@Body() createPromptCategoryDto: CreatePromptCategoryDto): Promise { + return Promise.resolve(undefined as unknown as PromptCategoryDto); + } + + @Get('categories') + @ApiOperation({ operationId: 'getPromptCategory', summary: 'Get a prompt category' }) + @ApiResponse({ status: 200, type: PromptCategoryDto }) + async getPromptCategory(@Param('id') id: number): Promise { + return Promise.resolve(id as unknown as PromptCategoryDto); + } + + @Post() + @ApiOperation({ operationId: 'postPrompt', summary: 'Create a new prompt' }) + @ApiResponse({ status: 201, description: 'Prompt created successfully' }) + async createPrompt(@Body() createPromptDto: CreatePromptDto): Promise { + return Promise.resolve(undefined as unknown as PromptDto); + } + + @Get() + @ApiOperation({ operationId: 'getPrompt', summary: 'Get a prompt' }) + @ApiResponse({ status: 200, type: PromptDto }) + async getPrompt(@Param('id') id: number): Promise { + return Promise.resolve(id as unknown as PromptDto); + } +} diff --git a/backend/src/domain/database/entities/prompt-category.ts b/backend/src/domain/database/entities/prompt-category.ts new file mode 100644 index 000000000..80f9fac66 --- /dev/null +++ b/backend/src/domain/database/entities/prompt-category.ts @@ -0,0 +1,21 @@ +import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; +import { schema } from '../typeorm.helper'; +import { VisibilityType } from 'src/domain/prompt/interfaces'; + +@Entity({ name: 'prompt-categories', schema }) +export class PromptCategoryEntity { + @PrimaryGeneratedColumn() + id!: string; + + @Column({ nullable: true }) + label!: string; + + @Column() + description?: string; + + @Column() + creationDate!: Date; + + @Column() + visibility!: VisibilityType; +} diff --git a/backend/src/domain/database/entities/prompt.ts b/backend/src/domain/database/entities/prompt.ts new file mode 100644 index 000000000..7646dd7fb --- /dev/null +++ b/backend/src/domain/database/entities/prompt.ts @@ -0,0 +1,28 @@ +import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm'; +import { schema } from '../typeorm.helper'; +import { VisibilityType } from 'src/domain/prompt/interfaces'; +import { PromptCategoryEntity } from './prompt-category'; + +@Entity({ name: 'prompts', schema }) +export class PromptEntity { + @PrimaryGeneratedColumn() + id!: string; + + @Column({ nullable: true }) + title!: string; + + @Column({ nullable: true }) + description?: string; + + @Column({ nullable: false }) + content!: string; + + @OneToMany(() => PromptEntity, (prompt) => prompt.categories) + categories?: [string]; + + @Column() + visibility!: VisibilityType; + + @Column({ nullable: true }) + raiting!: number; +} diff --git a/backend/src/domain/prompt/interfaces.ts b/backend/src/domain/prompt/interfaces.ts new file mode 100644 index 000000000..c269ce810 --- /dev/null +++ b/backend/src/domain/prompt/interfaces.ts @@ -0,0 +1,4 @@ +export enum VisibilityType { + PRIVATE = 'private', + PUBLIC = 'public', +} From 10abed8a7afbdaf53814f4444fe6539e29b6b50d Mon Sep 17 00:00:00 2001 From: Benny Burkert Date: Fri, 5 Sep 2025 16:07:27 +0200 Subject: [PATCH 003/110] feat: WIP prepare db migration --- backend/package-lock.json | 117 ++++++++++++++++++ backend/src/controllers/prompts/dtos/index.ts | 2 +- backend/src/domain/database/entities/index.ts | 2 + .../database/entities/prompt-category.ts | 9 +- .../src/domain/database/entities/prompt.ts | 9 +- backend/src/domain/prompt/index.ts | 1 + .../migrations/1757081968480-add-prompts.ts | 43 +++++++ 7 files changed, 172 insertions(+), 11 deletions(-) create mode 100644 backend/src/domain/prompt/index.ts create mode 100644 backend/src/migrations/1757081968480-add-prompts.ts diff --git a/backend/package-lock.json b/backend/package-lock.json index d29e31efa..d79d2d79d 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -227,11 +227,45 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@angular-devkit/schematics-cli/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@angular-devkit/schematics-cli/node_modules/json-schema-traverse": { "version": "1.0.0", "dev": true, "license": "MIT" }, + "node_modules/@angular-devkit/schematics-cli/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@angular-devkit/schematics-cli/node_modules/rxjs": { "version": "7.8.1", "dev": true, @@ -281,11 +315,45 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@angular-devkit/schematics/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@angular-devkit/schematics/node_modules/json-schema-traverse": { "version": "1.0.0", "dev": true, "license": "MIT" }, + "node_modules/@angular-devkit/schematics/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@angular-devkit/schematics/node_modules/rxjs": { "version": "7.8.1", "dev": true, @@ -4502,6 +4570,24 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@nestjs/schematics/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nestjs/schematics/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -4509,6 +4595,22 @@ "dev": true, "license": "MIT" }, + "node_modules/@nestjs/schematics/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nestjs/schematics/node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -14347,6 +14449,21 @@ "node": ">=18" } }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/pluralize": { "version": "8.0.0", "dev": true, diff --git a/backend/src/controllers/prompts/dtos/index.ts b/backend/src/controllers/prompts/dtos/index.ts index 2e1f94cb7..116cd55e7 100644 --- a/backend/src/controllers/prompts/dtos/index.ts +++ b/backend/src/controllers/prompts/dtos/index.ts @@ -1,6 +1,6 @@ import { ApiProperty } from '@nestjs/swagger'; import { IsArray, IsDefined, IsEnum, IsOptional, IsString } from 'class-validator'; -import { VisibilityType } from 'src/domain/prompt/interfaces'; +import { VisibilityType } from 'src/domain/prompt'; export class CreatePromptCategoryDto { @ApiProperty({ diff --git a/backend/src/domain/database/entities/index.ts b/backend/src/domain/database/entities/index.ts index 3630068f2..6aa681491 100644 --- a/backend/src/domain/database/entities/index.ts +++ b/backend/src/domain/database/entities/index.ts @@ -11,3 +11,5 @@ export * from './setting'; export * from './usage'; export * from './user'; export * from './user-group'; +export * from './prompt'; +export * from './prompt-category'; diff --git a/backend/src/domain/database/entities/prompt-category.ts b/backend/src/domain/database/entities/prompt-category.ts index 80f9fac66..55384dbdc 100644 --- a/backend/src/domain/database/entities/prompt-category.ts +++ b/backend/src/domain/database/entities/prompt-category.ts @@ -1,13 +1,10 @@ -import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; +import { Column, Entity, PrimaryColumn } from 'typeorm'; +import { VisibilityType } from '../../prompt'; import { schema } from '../typeorm.helper'; -import { VisibilityType } from 'src/domain/prompt/interfaces'; @Entity({ name: 'prompt-categories', schema }) export class PromptCategoryEntity { - @PrimaryGeneratedColumn() - id!: string; - - @Column({ nullable: true }) + @PrimaryColumn() label!: string; @Column() diff --git a/backend/src/domain/database/entities/prompt.ts b/backend/src/domain/database/entities/prompt.ts index 7646dd7fb..3a46fffe8 100644 --- a/backend/src/domain/database/entities/prompt.ts +++ b/backend/src/domain/database/entities/prompt.ts @@ -1,6 +1,6 @@ -import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm'; +import { Column, Entity, JoinTable, ManyToMany, PrimaryGeneratedColumn } from 'typeorm'; +import { VisibilityType } from '../../prompt'; import { schema } from '../typeorm.helper'; -import { VisibilityType } from 'src/domain/prompt/interfaces'; import { PromptCategoryEntity } from './prompt-category'; @Entity({ name: 'prompts', schema }) @@ -17,8 +17,9 @@ export class PromptEntity { @Column({ nullable: false }) content!: string; - @OneToMany(() => PromptEntity, (prompt) => prompt.categories) - categories?: [string]; + @ManyToMany(() => PromptCategoryEntity) + @JoinTable() + categories?: PromptCategoryEntity[]; @Column() visibility!: VisibilityType; diff --git a/backend/src/domain/prompt/index.ts b/backend/src/domain/prompt/index.ts new file mode 100644 index 000000000..957860982 --- /dev/null +++ b/backend/src/domain/prompt/index.ts @@ -0,0 +1 @@ +export * from './interfaces'; diff --git a/backend/src/migrations/1757081968480-add-prompts.ts b/backend/src/migrations/1757081968480-add-prompts.ts new file mode 100644 index 000000000..1343d46f0 --- /dev/null +++ b/backend/src/migrations/1757081968480-add-prompts.ts @@ -0,0 +1,43 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddPrompts1757081968480 implements MigrationInterface { + name = 'AddPrompts1757081968480'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "company_chat"."prompt-categories" ("label" character varying NOT NULL, "description" character varying NOT NULL, "creationDate" TIMESTAMP NOT NULL, "visibility" character varying NOT NULL, CONSTRAINT "PK_fcceccb98fc892cc5b3e40c1097" PRIMARY KEY ("label"))`, + ); + await queryRunner.query( + `CREATE TABLE "company_chat"."prompts" ("id" SERIAL NOT NULL, "title" character varying, "description" character varying, "content" character varying NOT NULL, "visibility" character varying NOT NULL, "raiting" integer, CONSTRAINT "PK_21f33798862975179e40b216a1d" PRIMARY KEY ("id"))`, + ); + await queryRunner.query( + `CREATE TABLE "company_chat"."prompts_categories_prompt-categories" ("promptsId" integer NOT NULL, "promptCategoriesLabel" character varying NOT NULL, CONSTRAINT "PK_645256b9fc1fe950d6f6e7c3003" PRIMARY KEY ("promptsId", "promptCategoriesLabel"))`, + ); + await queryRunner.query( + `CREATE INDEX "IDX_b38fb3b439a6eea0016e1d5906" ON "company_chat"."prompts_categories_prompt-categories" ("promptsId") `, + ); + await queryRunner.query( + `CREATE INDEX "IDX_6515aea8d350337de0804256c9" ON "company_chat"."prompts_categories_prompt-categories" ("promptCategoriesLabel") `, + ); + await queryRunner.query( + `ALTER TABLE "company_chat"."prompts_categories_prompt-categories" ADD CONSTRAINT "FK_b38fb3b439a6eea0016e1d5906a" FOREIGN KEY ("promptsId") REFERENCES "company_chat"."prompts"("id") ON DELETE CASCADE ON UPDATE CASCADE`, + ); + await queryRunner.query( + `ALTER TABLE "company_chat"."prompts_categories_prompt-categories" ADD CONSTRAINT "FK_6515aea8d350337de0804256c98" FOREIGN KEY ("promptCategoriesLabel") REFERENCES "company_chat"."prompt-categories"("label") ON DELETE CASCADE ON UPDATE CASCADE`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "company_chat"."prompts_categories_prompt-categories" DROP CONSTRAINT "FK_6515aea8d350337de0804256c98"`, + ); + await queryRunner.query( + `ALTER TABLE "company_chat"."prompts_categories_prompt-categories" DROP CONSTRAINT "FK_b38fb3b439a6eea0016e1d5906a"`, + ); + await queryRunner.query(`DROP INDEX "company_chat"."IDX_6515aea8d350337de0804256c9"`); + await queryRunner.query(`DROP INDEX "company_chat"."IDX_b38fb3b439a6eea0016e1d5906"`); + await queryRunner.query(`DROP TABLE "company_chat"."prompts_categories_prompt-categories"`); + await queryRunner.query(`DROP TABLE "company_chat"."prompts"`); + await queryRunner.query(`DROP TABLE "company_chat"."prompt-categories"`); + } +} From b3f515fd10eab4e9d4d6feb39a30800247ad61fd Mon Sep 17 00:00:00 2001 From: Benny Burkert Date: Tue, 9 Sep 2025 16:23:31 +0200 Subject: [PATCH 004/110] feat: Create prompt breakthrough (Circular dependency) --- backend/src/app.module.ts | 4 + backend/src/controllers/prompts/dtos/index.ts | 2 +- .../controllers/prompts/prompts.controller.ts | 27 +++- .../controllers/prompts/prompts.e2e.spec.ts | 146 ++++++++++++++++++ .../database/entities/prompt-category.ts | 10 +- .../src/domain/database/entities/prompt.ts | 16 +- backend/src/domain/prompt/index.ts | 1 + backend/src/domain/prompt/interfaces.ts | 49 ++++++ backend/src/domain/prompt/module.ts | 13 ++ .../prompt/use-cases/create-prompt.spec.ts | 136 ++++++++++++++++ .../domain/prompt/use-cases/create-prompt.ts | 58 +++++++ ...prompts.ts => 1757424637497-addPrompts.ts} | 8 +- 12 files changed, 457 insertions(+), 13 deletions(-) create mode 100644 backend/src/controllers/prompts/prompts.e2e.spec.ts create mode 100644 backend/src/domain/prompt/module.ts create mode 100644 backend/src/domain/prompt/use-cases/create-prompt.spec.ts create mode 100644 backend/src/domain/prompt/use-cases/create-prompt.ts rename backend/src/migrations/{1757081968480-add-prompts.ts => 1757424637497-addPrompts.ts} (78%) diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index 61b8379da..ada8abe19 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -14,6 +14,7 @@ import { ExtensionsController } from './controllers/extensions/extensions.contro import { FilesController } from './controllers/files/files.controller'; import { UserFilesController } from './controllers/files/user-files.controller'; import { HealthController } from './controllers/health/health.controller'; +import { PromptController } from './controllers/prompts/prompts.controller'; import { SettingsController } from './controllers/settings/settings.controller'; import { UsagesController } from './controllers/usages/usages.controller'; import { UserGroupsController } from './controllers/users/user-groups.controller'; @@ -24,6 +25,7 @@ import { UserEntity } from './domain/database'; import { initSchemaIfNotExistsAndMoveMigrations, schema } from './domain/database/typeorm.helper'; import { ExtensionModule } from './domain/extensions'; import { FilesModule } from './domain/files'; +import { PromptModule } from './domain/prompt/module'; import { SettingsModule } from './domain/settings'; import { UsersModule } from './domain/users/module'; import { ExtensionLibraryModule } from './extensions'; @@ -47,6 +49,7 @@ import { PrometheusModule } from './metrics/prometheus.module'; }, }), PrometheusModule.forRoot(), + PromptModule, SettingsModule, UsersModule, TerminusModule, @@ -82,6 +85,7 @@ import { PrometheusModule } from './metrics/prometheus.module'; ConfigurationsController, ExtensionsController, FilesController, + PromptController, SettingsController, UsagesController, UserFilesController, diff --git a/backend/src/controllers/prompts/dtos/index.ts b/backend/src/controllers/prompts/dtos/index.ts index 116cd55e7..62d656a1f 100644 --- a/backend/src/controllers/prompts/dtos/index.ts +++ b/backend/src/controllers/prompts/dtos/index.ts @@ -73,7 +73,7 @@ export class CreatePromptDto { }) @IsOptional() @IsArray() - categories?: [number]; + categories?: string[]; @ApiProperty({ description: 'The visibility of the prompt (e.g., public, private).', diff --git a/backend/src/controllers/prompts/prompts.controller.ts b/backend/src/controllers/prompts/prompts.controller.ts index 76aa6ca9a..60472aa20 100644 --- a/backend/src/controllers/prompts/prompts.controller.ts +++ b/backend/src/controllers/prompts/prompts.controller.ts @@ -1,9 +1,13 @@ import { Body, Controller, Get, Param, Post } from '@nestjs/common'; +import { CommandBus } from '@nestjs/cqrs'; import { ApiOperation, ApiResponse } from '@nestjs/swagger'; +import { CreatePrompt, CreatePromptResponse } from 'src/domain/prompt/use-cases/create-prompt'; import { CreatePromptCategoryDto, CreatePromptDto, PromptCategoryDto, PromptDto } from './dtos/index'; @Controller('prompt') export class PromptController { + constructor(private readonly commandBus: CommandBus) {} + @Post('categories') @ApiOperation({ operationId: 'postPromptCategory', summary: 'Create a new prompt category' }) @ApiResponse({ status: 201, description: 'Category created successfully' }) @@ -22,7 +26,28 @@ export class PromptController { @ApiOperation({ operationId: 'postPrompt', summary: 'Create a new prompt' }) @ApiResponse({ status: 201, description: 'Prompt created successfully' }) async createPrompt(@Body() createPromptDto: CreatePromptDto): Promise { - return Promise.resolve(undefined as unknown as PromptDto); + const response: CreatePromptResponse = await this.commandBus.execute( + new CreatePrompt({ + title: createPromptDto.title, + description: createPromptDto.description, + content: createPromptDto.content, + visibility: createPromptDto.visibility, + categoryLabels: createPromptDto.categories, + }), + ); + + // Map entity to DTO + const promptDto: PromptDto = { + id: response.prompt.id.toString(), + title: response.prompt.title, + description: response.prompt.description, + content: response.prompt.content, + visibility: response.prompt.visibility, + categories: response.prompt.categories?.map(cat => cat.label) || [], + rating: response.prompt.rating, + }; + + return promptDto; } @Get() diff --git a/backend/src/controllers/prompts/prompts.e2e.spec.ts b/backend/src/controllers/prompts/prompts.e2e.spec.ts new file mode 100644 index 000000000..e864ed1ba --- /dev/null +++ b/backend/src/controllers/prompts/prompts.e2e.spec.ts @@ -0,0 +1,146 @@ +import { Server } from 'net'; +import { HttpStatus, INestApplication } from '@nestjs/common'; +import { Test, TestingModule } from '@nestjs/testing'; +import * as request from 'supertest'; +import { DataSource, Repository } from 'typeorm'; +import { AppModule } from '../../app.module'; +import { PromptCategoryEntity } from '../../domain/database'; +import { VisibilityType } from '../../domain/prompt'; +import { initAppWithDataBaseAndValidUser } from '../../utils/testUtils'; +import { CreatePromptDto, PromptDto } from './dtos'; + +describe('Prompts', () => { + let app: INestApplication; + let dataSource: DataSource; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [AppModule], + }).compile(); + + const initialized = await initAppWithDataBaseAndValidUser(dataSource, module, app); + dataSource = initialized.dataSource; + app = initialized.app; + await seedTestData(dataSource); + }); + + afterAll(async () => { + await dataSource.destroy(); + await app.close(); + }); + + it('should create a prompt without categories', async () => { + const newPrompt: CreatePromptDto = { + title: 'Test Prompt', + description: 'A test prompt for e2e testing', + content: 'This is the prompt content for testing purposes.', + visibility: VisibilityType.PUBLIC, + }; + + const response = await request(app.getHttpServer()).post('/prompt').send(newPrompt).expect(HttpStatus.CREATED); + + const typedBody = response.body as PromptDto; + expect(typedBody.id).toBeDefined(); + expect(typedBody.title).toBe(newPrompt.title); + expect(typedBody.description).toBe(newPrompt.description); + expect(typedBody.content).toBe(newPrompt.content); + expect(typedBody.visibility).toBe(newPrompt.visibility); + expect(typedBody.categories).toEqual([]); + }); + + it('should create a prompt with categories', async () => { + const newPrompt: CreatePromptDto = { + title: 'Categorized Prompt', + content: 'This prompt has categories.', + visibility: VisibilityType.PRIVATE, + categories: ['technical', 'creative'], + }; + + const response = await request(app.getHttpServer()).post('/prompt').send(newPrompt).expect(HttpStatus.CREATED); + + const typedBody = response.body as PromptDto; + expect(typedBody.id).toBeDefined(); + expect(typedBody.title).toBe(newPrompt.title); + expect(typedBody.content).toBe(newPrompt.content); + expect(typedBody.visibility).toBe(newPrompt.visibility); + expect(typedBody.categories).toHaveLength(2); + expect(typedBody.categories).toEqual( + expect.arrayContaining([expect.objectContaining({ label: 'technical' }), expect.objectContaining({ label: 'creative' })]), + ); + }); + + it('should create a prompt with only required fields', async () => { + const newPrompt: CreatePromptDto = { + title: 'Minimal Prompt', + content: 'This is a minimal prompt with only required fields.', + visibility: VisibilityType.PRIVATE, + }; + + const response = await request(app.getHttpServer()).post('/prompt').send(newPrompt).expect(HttpStatus.CREATED); + + const typedBody = response.body as PromptDto; + expect(typedBody.id).toBeDefined(); + expect(typedBody.title).toBe(newPrompt.title); + expect(typedBody.content).toBe(newPrompt.content); + expect(typedBody.visibility).toBe(newPrompt.visibility); + expect(typedBody.description).toBeUndefined(); + expect(typedBody.rating).toBeUndefined(); + expect(typedBody.categories).toEqual([]); + }); + + it('should create a prompt with non-existent categories', async () => { + const newPrompt: CreatePromptDto = { + title: 'Prompt with Non-existent Categories', + content: 'This prompt references categories that do not exist.', + visibility: VisibilityType.PUBLIC, + categories: ['nonexistent1', 'technical', 'nonexistent2'], + }; + + const response = await request(app.getHttpServer()).post('/prompt').send(newPrompt).expect(HttpStatus.CREATED); + + const typedBody = response.body as PromptDto; + expect(typedBody.categories).toHaveLength(1); // Only 'technical' exists + expect(typedBody.categories).toEqual([expect.objectContaining({ label: 'technical' })]); + }); + + it('should fail to create a prompt without required fields', async () => { + const invalidPrompt = { + description: 'Missing title and content', + visibility: VisibilityType.PUBLIC, + }; + + await request(app.getHttpServer()).post('/prompt').send(invalidPrompt).expect(HttpStatus.BAD_REQUEST); + }); + + it('should fail to create a prompt with invalid visibility', async () => { + const invalidPrompt = { + title: 'Invalid Prompt', + content: 'This prompt has invalid visibility.', + visibility: 'invalid_visibility', + }; + + await request(app.getHttpServer()).post('/prompt').send(invalidPrompt).expect(HttpStatus.BAD_REQUEST); + }); +}); + +async function seedTestData(dataSource: DataSource) { + const promptCategoryRepository = dataSource.getRepository(PromptCategoryEntity); + + // Create test categories + await createPromptCategory('technical', 'Technical prompts', promptCategoryRepository); + await createPromptCategory('creative', 'Creative writing prompts', promptCategoryRepository); + await createPromptCategory('business', 'Business and professional prompts', promptCategoryRepository); +} + +async function createPromptCategory( + label: string, + description: string, + promptCategoryRepository: Repository, +): Promise { + const categoryEntity = new PromptCategoryEntity(); + categoryEntity.label = label; + categoryEntity.description = description; + categoryEntity.creationDate = new Date(); + categoryEntity.visibility = VisibilityType.PUBLIC; + return promptCategoryRepository.save(categoryEntity); +} diff --git a/backend/src/domain/database/entities/prompt-category.ts b/backend/src/domain/database/entities/prompt-category.ts index 55384dbdc..267364263 100644 --- a/backend/src/domain/database/entities/prompt-category.ts +++ b/backend/src/domain/database/entities/prompt-category.ts @@ -1,5 +1,5 @@ -import { Column, Entity, PrimaryColumn } from 'typeorm'; -import { VisibilityType } from '../../prompt'; +import { Column, CreateDateColumn, Entity, PrimaryColumn, UpdateDateColumn } from 'typeorm'; +import { VisibilityType } from '../../prompt/interfaces'; import { schema } from '../typeorm.helper'; @Entity({ name: 'prompt-categories', schema }) @@ -15,4 +15,10 @@ export class PromptCategoryEntity { @Column() visibility!: VisibilityType; + + @CreateDateColumn({ type: 'timestamptz' }) + createdAt!: Date; + + @UpdateDateColumn({ type: 'timestamptz' }) + updatedAt!: Date; } diff --git a/backend/src/domain/database/entities/prompt.ts b/backend/src/domain/database/entities/prompt.ts index 3a46fffe8..a68cb0eb1 100644 --- a/backend/src/domain/database/entities/prompt.ts +++ b/backend/src/domain/database/entities/prompt.ts @@ -1,14 +1,14 @@ -import { Column, Entity, JoinTable, ManyToMany, PrimaryGeneratedColumn } from 'typeorm'; -import { VisibilityType } from '../../prompt'; +import { Column, CreateDateColumn, Entity, JoinTable, ManyToMany, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; +import { VisibilityType } from '../../prompt/interfaces'; import { schema } from '../typeorm.helper'; import { PromptCategoryEntity } from './prompt-category'; @Entity({ name: 'prompts', schema }) export class PromptEntity { @PrimaryGeneratedColumn() - id!: string; + id!: number; - @Column({ nullable: true }) + @Column({ nullable: false }) title!: string; @Column({ nullable: true }) @@ -25,5 +25,11 @@ export class PromptEntity { visibility!: VisibilityType; @Column({ nullable: true }) - raiting!: number; + rating!: number; + + @CreateDateColumn({ type: 'timestamptz' }) + createdAt!: Date; + + @UpdateDateColumn({ type: 'timestamptz' }) + updatedAt!: Date; } diff --git a/backend/src/domain/prompt/index.ts b/backend/src/domain/prompt/index.ts index 957860982..b75e910c7 100644 --- a/backend/src/domain/prompt/index.ts +++ b/backend/src/domain/prompt/index.ts @@ -1 +1,2 @@ export * from './interfaces'; +export * from './module'; diff --git a/backend/src/domain/prompt/interfaces.ts b/backend/src/domain/prompt/interfaces.ts index c269ce810..1823a56c8 100644 --- a/backend/src/domain/prompt/interfaces.ts +++ b/backend/src/domain/prompt/interfaces.ts @@ -2,3 +2,52 @@ export enum VisibilityType { PRIVATE = 'private', PUBLIC = 'public', } + +export interface Prompt { + // The prompt ID. + id: number; + + // The prompt title. + title: string; + + // Optional description of the prompt. + description?: string; + + // The actual prompt content. + content: string; + + // Visibility setting for the prompt. + visibility: VisibilityType; + + // Optional rating for the prompt. + rating?: number; + + // Associated categories. + categories?: PromptCategory[]; + + // Creation timestamp. + createdAt: Date; + + // Last update timestamp. + updatedAt: Date; +} + +export interface PromptCategory { + // The category label (primary key). + label: string; + + // Optional description of the category. + description?: string; + + // Manual creation date field. + creationDate: Date; + + // Visibility setting for the category. + visibility: VisibilityType; + + // Creation timestamp. + createdAt: Date; + + // Last update timestamp. + updatedAt: Date; +} diff --git a/backend/src/domain/prompt/module.ts b/backend/src/domain/prompt/module.ts new file mode 100644 index 000000000..0b4f04852 --- /dev/null +++ b/backend/src/domain/prompt/module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { CqrsModule } from '@nestjs/cqrs'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { PromptCategoryEntity } from '../database/entities/prompt-category'; +import { PromptEntity } from '../database/entities/prompt'; +import { CreatePromptHandler } from './use-cases/create-prompt'; + +@Module({ + imports: [CqrsModule, TypeOrmModule.forFeature([PromptEntity, PromptCategoryEntity])], + providers: [CreatePromptHandler], + exports: [CreatePromptHandler], +}) +export class PromptModule {} diff --git a/backend/src/domain/prompt/use-cases/create-prompt.spec.ts b/backend/src/domain/prompt/use-cases/create-prompt.spec.ts new file mode 100644 index 000000000..f52f3904f --- /dev/null +++ b/backend/src/domain/prompt/use-cases/create-prompt.spec.ts @@ -0,0 +1,136 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { getRepositoryToken } from '@nestjs/typeorm'; +import { In, Repository } from 'typeorm'; +import { PromptCategoryEntity } from '../../database/entities/prompt-category'; +import { PromptEntity } from '../../database/entities/prompt'; +import { VisibilityType } from '../interfaces'; +import { CreatePrompt, CreatePromptHandler } from './create-prompt'; + +describe('Create Prompt', () => { + let handler: CreatePromptHandler; + let promptRepository: Repository; + let categoryRepository: Repository; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + CreatePromptHandler, + { + provide: getRepositoryToken(PromptEntity), + useValue: { + create: jest.fn(), + save: jest.fn(), + }, + }, + { + provide: getRepositoryToken(PromptCategoryEntity), + useValue: { + findBy: jest.fn(), + }, + }, + ], + }).compile(); + + handler = module.get(CreatePromptHandler); + promptRepository = module.get>(getRepositoryToken(PromptEntity)); + categoryRepository = module.get>(getRepositoryToken(PromptCategoryEntity)); + }); + + it('should create a prompt without categories', async () => { + const mockPromptEntity = { + id: 1, + title: 'Test Prompt', + content: 'Test content', + visibility: VisibilityType.PRIVATE, + } as PromptEntity; + + const createSpy = jest.spyOn(promptRepository, 'create').mockReturnValue(mockPromptEntity); + const saveSpy = jest.spyOn(promptRepository, 'save').mockResolvedValue(mockPromptEntity); + + const result = await handler.execute( + new CreatePrompt({ + title: 'Test Prompt', + content: 'Test content', + visibility: VisibilityType.PRIVATE, + }), + ); + + expect(createSpy).toHaveBeenCalledWith({ + title: 'Test Prompt', + content: 'Test content', + visibility: VisibilityType.PRIVATE, + categories: [], + }); + expect(saveSpy).toHaveBeenCalledWith(mockPromptEntity); + expect(result.prompt).toEqual(mockPromptEntity); + }); + + it('should create a prompt with categories', async () => { + const mockCategories = [ + { label: 'category1', description: 'Category 1' }, + { label: 'category2', description: 'Category 2' }, + ] as PromptCategoryEntity[]; + + const mockPromptEntity = { + id: 1, + title: 'Test Prompt', + content: 'Test content', + visibility: VisibilityType.PUBLIC, + categories: mockCategories, + } as PromptEntity; + + const findBySpy = jest.spyOn(categoryRepository, 'findBy').mockResolvedValue(mockCategories); + const createSpy = jest.spyOn(promptRepository, 'create').mockReturnValue(mockPromptEntity); + const saveSpy = jest.spyOn(promptRepository, 'save').mockResolvedValue(mockPromptEntity); + + const result = await handler.execute( + new CreatePrompt({ + title: 'Test Prompt', + content: 'Test content', + visibility: VisibilityType.PUBLIC, + categoryLabels: ['category1', 'category2'], + }), + ); + + expect(findBySpy).toHaveBeenCalledWith({ + label: In(['category1', 'category2']), + }); + expect(createSpy).toHaveBeenCalledWith({ + title: 'Test Prompt', + content: 'Test content', + visibility: VisibilityType.PUBLIC, + categories: mockCategories, + }); + expect(saveSpy).toHaveBeenCalledWith(mockPromptEntity); + expect(result.prompt).toEqual(mockPromptEntity); + }); + + it('should create prompt with only required fields', async () => { + const mockPromptEntity = { + id: 1, + title: 'Required Title', + content: 'Test content', + visibility: VisibilityType.PRIVATE, + } as PromptEntity; + + const createSpy = jest.spyOn(promptRepository, 'create').mockReturnValue(mockPromptEntity); + const saveSpy = jest.spyOn(promptRepository, 'save').mockResolvedValue(mockPromptEntity); + + const result = await handler.execute( + new CreatePrompt({ + title: 'Required Title', + content: 'Test content', + visibility: VisibilityType.PRIVATE, + }), + ); + + expect(createSpy).toHaveBeenCalledWith({ + title: 'Required Title', + content: 'Test content', + visibility: VisibilityType.PRIVATE, + categories: [], + }); + expect(saveSpy).toHaveBeenCalledWith(mockPromptEntity); + expect(result.prompt).toEqual(mockPromptEntity); + }); +}); diff --git a/backend/src/domain/prompt/use-cases/create-prompt.ts b/backend/src/domain/prompt/use-cases/create-prompt.ts new file mode 100644 index 000000000..69da2411d --- /dev/null +++ b/backend/src/domain/prompt/use-cases/create-prompt.ts @@ -0,0 +1,58 @@ +import { CommandHandler, ICommandHandler } from '@nestjs/cqrs'; +import { InjectRepository } from '@nestjs/typeorm'; +import { In, Repository } from 'typeorm'; +import { PromptCategoryEntity } from '../../database/entities/prompt-category'; +import { PromptEntity } from '../../database/entities/prompt'; +import { assignDefined } from 'src/lib'; +import { Prompt } from '../interfaces'; + +type Values = Pick & { + categoryLabels?: string[]; +}; + +export class CreatePrompt { + constructor(public readonly values: Values) {} +} + +export class CreatePromptResponse { + constructor(public readonly prompt: PromptEntity) {} +} + +@CommandHandler(CreatePrompt) +export class CreatePromptHandler implements ICommandHandler { + constructor( + @InjectRepository(PromptEntity) + private readonly promptRepository: Repository, + @InjectRepository(PromptCategoryEntity) + private readonly categoryRepository: Repository, + ) {} + + async execute(request: CreatePrompt): Promise { + const { values } = request; + const { title, description, content, visibility, categoryLabels } = values; + + // Find existing categories if categoryLabels provided + let categories: PromptCategoryEntity[] = []; + if (categoryLabels && categoryLabels.length > 0) { + categories = await this.categoryRepository.findBy({ + label: In(categoryLabels), + }); + } + + // Create the prompt entity + const promptData: Partial = { + title, + content, + visibility, + categories, + }; + + // Assign optional fields manually to avoid updating unexpected values + assignDefined(promptData, { description }); + + const entity = this.promptRepository.create(promptData); + const created = await this.promptRepository.save(entity); + + return new CreatePromptResponse(created); + } +} diff --git a/backend/src/migrations/1757081968480-add-prompts.ts b/backend/src/migrations/1757424637497-addPrompts.ts similarity index 78% rename from backend/src/migrations/1757081968480-add-prompts.ts rename to backend/src/migrations/1757424637497-addPrompts.ts index 1343d46f0..96f33c85d 100644 --- a/backend/src/migrations/1757081968480-add-prompts.ts +++ b/backend/src/migrations/1757424637497-addPrompts.ts @@ -1,14 +1,14 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -export class AddPrompts1757081968480 implements MigrationInterface { - name = 'AddPrompts1757081968480'; +export class AddPrompts1757424637497 implements MigrationInterface { + name = 'AddPrompts1757424637497'; public async up(queryRunner: QueryRunner): Promise { await queryRunner.query( - `CREATE TABLE "company_chat"."prompt-categories" ("label" character varying NOT NULL, "description" character varying NOT NULL, "creationDate" TIMESTAMP NOT NULL, "visibility" character varying NOT NULL, CONSTRAINT "PK_fcceccb98fc892cc5b3e40c1097" PRIMARY KEY ("label"))`, + `CREATE TABLE "company_chat"."prompt-categories" ("label" character varying NOT NULL, "description" character varying NOT NULL, "creationDate" TIMESTAMP NOT NULL, "visibility" character varying NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), CONSTRAINT "PK_fcceccb98fc892cc5b3e40c1097" PRIMARY KEY ("label"))`, ); await queryRunner.query( - `CREATE TABLE "company_chat"."prompts" ("id" SERIAL NOT NULL, "title" character varying, "description" character varying, "content" character varying NOT NULL, "visibility" character varying NOT NULL, "raiting" integer, CONSTRAINT "PK_21f33798862975179e40b216a1d" PRIMARY KEY ("id"))`, + `CREATE TABLE "company_chat"."prompts" ("id" SERIAL NOT NULL, "title" character varying NOT NULL, "description" character varying, "content" character varying NOT NULL, "visibility" character varying NOT NULL, "rating" integer, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), CONSTRAINT "PK_21f33798862975179e40b216a1d" PRIMARY KEY ("id"))`, ); await queryRunner.query( `CREATE TABLE "company_chat"."prompts_categories_prompt-categories" ("promptsId" integer NOT NULL, "promptCategoriesLabel" character varying NOT NULL, CONSTRAINT "PK_645256b9fc1fe950d6f6e7c3003" PRIMARY KEY ("promptsId", "promptCategoriesLabel"))`, From 5b23cab4c02721876df7328586f213f1143be2d1 Mon Sep 17 00:00:00 2001 From: Benny Burkert Date: Tue, 9 Sep 2025 17:01:35 +0200 Subject: [PATCH 005/110] feat: Create prompt breakthrough Circular dependency is still an issue, when shortening the interface imports to use the barrel file. Validation does not have to be tested due to not being active in the test setup and its library testing either way. --- backend/src/controllers/prompts/dtos/index.ts | 15 ++++++++++++ .../controllers/prompts/prompts.controller.ts | 23 +++++++------------ .../controllers/prompts/prompts.e2e.spec.ts | 19 ++++----------- backend/src/domain/prompt/module.ts | 2 +- .../prompt/use-cases/create-prompt.spec.ts | 2 +- .../domain/prompt/use-cases/create-prompt.ts | 4 ++-- 6 files changed, 31 insertions(+), 34 deletions(-) diff --git a/backend/src/controllers/prompts/dtos/index.ts b/backend/src/controllers/prompts/dtos/index.ts index 62d656a1f..6bcb493f0 100644 --- a/backend/src/controllers/prompts/dtos/index.ts +++ b/backend/src/controllers/prompts/dtos/index.ts @@ -1,5 +1,6 @@ import { ApiProperty } from '@nestjs/swagger'; import { IsArray, IsDefined, IsEnum, IsOptional, IsString } from 'class-validator'; +import { PromptEntity } from 'src/domain/database/entities/prompt'; import { VisibilityType } from 'src/domain/prompt'; export class CreatePromptCategoryDto { @@ -57,6 +58,7 @@ export class CreatePromptDto { required: false, }) @IsOptional() + @IsString() description?: string; @ApiProperty({ @@ -97,4 +99,17 @@ export class PromptDto extends CreatePromptDto { required: true, }) rating!: number; + + static fromDomain(this: void, source: PromptEntity) { + const result = new PromptDto(); + result.id = source.id.toString(); + result.title = source.title; + result.description = source.description; + result.content = source.content; + result.visibility = source.visibility; + result.categories = source.categories?.map((cat) => cat.label) || []; + result.rating = source.rating; + + return result; + } } diff --git a/backend/src/controllers/prompts/prompts.controller.ts b/backend/src/controllers/prompts/prompts.controller.ts index 60472aa20..56bd8b429 100644 --- a/backend/src/controllers/prompts/prompts.controller.ts +++ b/backend/src/controllers/prompts/prompts.controller.ts @@ -1,10 +1,13 @@ -import { Body, Controller, Get, Param, Post } from '@nestjs/common'; +import { Body, Controller, Get, Param, Post, UseGuards } from '@nestjs/common'; import { CommandBus } from '@nestjs/cqrs'; -import { ApiOperation, ApiResponse } from '@nestjs/swagger'; +import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; import { CreatePrompt, CreatePromptResponse } from 'src/domain/prompt/use-cases/create-prompt'; -import { CreatePromptCategoryDto, CreatePromptDto, PromptCategoryDto, PromptDto } from './dtos/index'; +import { LocalAuthGuard } from '../../domain/auth'; +import { CreatePromptCategoryDto, CreatePromptDto, PromptCategoryDto, PromptDto } from './dtos'; @Controller('prompt') +@ApiTags('prompts') +@UseGuards(LocalAuthGuard) export class PromptController { constructor(private readonly commandBus: CommandBus) {} @@ -36,18 +39,8 @@ export class PromptController { }), ); - // Map entity to DTO - const promptDto: PromptDto = { - id: response.prompt.id.toString(), - title: response.prompt.title, - description: response.prompt.description, - content: response.prompt.content, - visibility: response.prompt.visibility, - categories: response.prompt.categories?.map(cat => cat.label) || [], - rating: response.prompt.rating, - }; - - return promptDto; + // Map entity to DTO using fromDomain method + return PromptDto.fromDomain(response.prompt); } @Get() diff --git a/backend/src/controllers/prompts/prompts.e2e.spec.ts b/backend/src/controllers/prompts/prompts.e2e.spec.ts index e864ed1ba..dbc3c3390 100644 --- a/backend/src/controllers/prompts/prompts.e2e.spec.ts +++ b/backend/src/controllers/prompts/prompts.e2e.spec.ts @@ -64,9 +64,7 @@ describe('Prompts', () => { expect(typedBody.content).toBe(newPrompt.content); expect(typedBody.visibility).toBe(newPrompt.visibility); expect(typedBody.categories).toHaveLength(2); - expect(typedBody.categories).toEqual( - expect.arrayContaining([expect.objectContaining({ label: 'technical' }), expect.objectContaining({ label: 'creative' })]), - ); + expect(typedBody.categories).toEqual(expect.arrayContaining(['technical', 'creative'])); }); it('should create a prompt with only required fields', async () => { @@ -83,8 +81,8 @@ describe('Prompts', () => { expect(typedBody.title).toBe(newPrompt.title); expect(typedBody.content).toBe(newPrompt.content); expect(typedBody.visibility).toBe(newPrompt.visibility); - expect(typedBody.description).toBeUndefined(); - expect(typedBody.rating).toBeUndefined(); + expect(typedBody.description).toBeNull(); + expect(typedBody.rating).toBeNull(); expect(typedBody.categories).toEqual([]); }); @@ -100,16 +98,7 @@ describe('Prompts', () => { const typedBody = response.body as PromptDto; expect(typedBody.categories).toHaveLength(1); // Only 'technical' exists - expect(typedBody.categories).toEqual([expect.objectContaining({ label: 'technical' })]); - }); - - it('should fail to create a prompt without required fields', async () => { - const invalidPrompt = { - description: 'Missing title and content', - visibility: VisibilityType.PUBLIC, - }; - - await request(app.getHttpServer()).post('/prompt').send(invalidPrompt).expect(HttpStatus.BAD_REQUEST); + expect(typedBody.categories).toEqual(['technical']); }); it('should fail to create a prompt with invalid visibility', async () => { diff --git a/backend/src/domain/prompt/module.ts b/backend/src/domain/prompt/module.ts index 0b4f04852..1b8a2f00a 100644 --- a/backend/src/domain/prompt/module.ts +++ b/backend/src/domain/prompt/module.ts @@ -1,8 +1,8 @@ import { Module } from '@nestjs/common'; import { CqrsModule } from '@nestjs/cqrs'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { PromptCategoryEntity } from '../database/entities/prompt-category'; import { PromptEntity } from '../database/entities/prompt'; +import { PromptCategoryEntity } from '../database/entities/prompt-category'; import { CreatePromptHandler } from './use-cases/create-prompt'; @Module({ diff --git a/backend/src/domain/prompt/use-cases/create-prompt.spec.ts b/backend/src/domain/prompt/use-cases/create-prompt.spec.ts index f52f3904f..69fc71074 100644 --- a/backend/src/domain/prompt/use-cases/create-prompt.spec.ts +++ b/backend/src/domain/prompt/use-cases/create-prompt.spec.ts @@ -1,8 +1,8 @@ import { Test, TestingModule } from '@nestjs/testing'; import { getRepositoryToken } from '@nestjs/typeorm'; import { In, Repository } from 'typeorm'; -import { PromptCategoryEntity } from '../../database/entities/prompt-category'; import { PromptEntity } from '../../database/entities/prompt'; +import { PromptCategoryEntity } from '../../database/entities/prompt-category'; import { VisibilityType } from '../interfaces'; import { CreatePrompt, CreatePromptHandler } from './create-prompt'; diff --git a/backend/src/domain/prompt/use-cases/create-prompt.ts b/backend/src/domain/prompt/use-cases/create-prompt.ts index 69da2411d..5869431ff 100644 --- a/backend/src/domain/prompt/use-cases/create-prompt.ts +++ b/backend/src/domain/prompt/use-cases/create-prompt.ts @@ -1,9 +1,9 @@ import { CommandHandler, ICommandHandler } from '@nestjs/cqrs'; import { InjectRepository } from '@nestjs/typeorm'; import { In, Repository } from 'typeorm'; -import { PromptCategoryEntity } from '../../database/entities/prompt-category'; -import { PromptEntity } from '../../database/entities/prompt'; import { assignDefined } from 'src/lib'; +import { PromptEntity } from '../../database/entities/prompt'; +import { PromptCategoryEntity } from '../../database/entities/prompt-category'; import { Prompt } from '../interfaces'; type Values = Pick & { From 206ec066f1accdb70fec17a3318831492edbc2e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 03:18:34 +0000 Subject: [PATCH 006/110] chore(deps-dev): bump vite from 6.3.5 to 6.3.6 in /frontend Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.3.5 to 6.3.6. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v6.3.6/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v6.3.6/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 6.3.6 dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- frontend/package-lock.json | 6 ++++-- frontend/package.json | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6d38b3301..e0680faa5 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -96,7 +96,7 @@ "rimraf": "6.0.1", "tailwindcss": "4.1.8", "typescript": "5.8.3", - "vite": "6.3.5", + "vite": "6.3.6", "vitest": "3.2.1" } }, @@ -12995,7 +12995,9 @@ } }, "node_modules/vite": { - "version": "6.3.5", + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", + "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", "license": "MIT", "dependencies": { "esbuild": "^0.25.0", diff --git a/frontend/package.json b/frontend/package.json index aab2deede..c7731a52a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -105,7 +105,7 @@ "rimraf": "6.0.1", "tailwindcss": "4.1.8", "typescript": "5.8.3", - "vite": "6.3.5", + "vite": "6.3.6", "vitest": "3.2.1" } } From 0de68b40bef25624be06faacef40e2a9c14cfd09 Mon Sep 17 00:00:00 2001 From: Hendrik Schawe Date: Wed, 10 Sep 2025 10:04:47 +0200 Subject: [PATCH 007/110] chore: fix REIS pipeline (#449) apparently specifying a fixed ffmpeg version will let the pipeline fail --- .github/workflows/reis.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/reis.yaml b/.github/workflows/reis.yaml index d7f6781a1..9fb457b91 100644 --- a/.github/workflows/reis.yaml +++ b/.github/workflows/reis.yaml @@ -70,8 +70,6 @@ jobs: with: lfs: true - uses: AnimMouse/setup-ffmpeg@v1 - with: - version: 6.1 - run: pipx install poetry - uses: actions/setup-python@v5 with: From b458725ff12cdda3189f6cc07d26dcd07fe0144a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 08:08:33 +0000 Subject: [PATCH 008/110] chore(deps): bump fastmcp from 2.11.3 to 2.12.2 in /services/reis Bumps [fastmcp](https://github.com/jlowin/fastmcp) from 2.11.3 to 2.12.2. - [Release notes](https://github.com/jlowin/fastmcp/releases) - [Changelog](https://github.com/jlowin/fastmcp/blob/main/docs/changelog.mdx) - [Commits](https://github.com/jlowin/fastmcp/compare/v2.11.3...v2.12.2) --- updated-dependencies: - dependency-name: fastmcp dependency-version: 2.12.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 14 +++++++++----- services/reis/pyproject.toml | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index bd185a798..f72bca239 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. [[package]] name = "aiofiles" @@ -1092,14 +1092,14 @@ standard = ["uvicorn[standard] (>=0.15.0)"] [[package]] name = "fastmcp" -version = "2.11.3" +version = "2.12.2" description = "The fast, Pythonic way to build MCP servers and clients." optional = false python-versions = ">=3.10" groups = ["main"] files = [ - {file = "fastmcp-2.11.3-py3-none-any.whl", hash = "sha256:28f22126c90fd36e5de9cc68b9c271b6d832dcf322256f23d220b68afb3352cc"}, - {file = "fastmcp-2.11.3.tar.gz", hash = "sha256:e8e3834a3e0b513712b8e63a6f0d4cbe19093459a1da3f7fbf8ef2810cfd34e3"}, + {file = "fastmcp-2.12.2-py3-none-any.whl", hash = "sha256:0b58d68e819c82078d1fd51989d3d81f2be7382d527308b06df55f4d0a4ec94f"}, + {file = "fastmcp-2.12.2.tar.gz", hash = "sha256:6d13e2f9be57b99763fc22485f9f603daa23bfbca35a8172baa43b283d6fc1ff"}, ] [package.dependencies] @@ -1116,6 +1116,7 @@ python-dotenv = ">=1.1.0" rich = ">=13.9.4" [package.extras] +openai = ["openai (>=1.102.0)"] websockets = ["websockets (>=15.0.1)"] [[package]] @@ -2128,8 +2129,11 @@ files = [ {file = "lxml-5.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:7ce1a171ec325192c6a636b64c94418e71a1964f56d002cc28122fceff0b6121"}, {file = "lxml-5.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:795f61bcaf8770e1b37eec24edf9771b307df3af74d1d6f27d812e15a9ff3872"}, {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29f451a4b614a7b5b6c2e043d7b64a15bd8304d7e767055e8ab68387a8cacf4e"}, + {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:891f7f991a68d20c75cb13c5c9142b2a3f9eb161f1f12a9489c82172d1f133c0"}, {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4aa412a82e460571fad592d0f93ce9935a20090029ba08eca05c614f99b0cc92"}, + {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:ac7ba71f9561cd7d7b55e1ea5511543c0282e2b6450f122672a2694621d63b7e"}, {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:c5d32f5284012deaccd37da1e2cd42f081feaa76981f0eaa474351b68df813c5"}, + {file = "lxml-5.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:ce31158630a6ac85bddd6b830cffd46085ff90498b397bd0a259f59d27a12188"}, {file = "lxml-5.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:31e63621e073e04697c1b2d23fcb89991790eef370ec37ce4d5d469f40924ed6"}, {file = "lxml-5.4.0-cp37-cp37m-win32.whl", hash = "sha256:be2ba4c3c5b7900246a8f866580700ef0d538f2ca32535e991027bdaba944063"}, {file = "lxml-5.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:09846782b1ef650b321484ad429217f5154da4d6e786636c38e434fa32e94e49"}, @@ -6198,4 +6202,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "f1e34eb12c08ceb09f6756ad3f42e31efd07851c045647be4ad0c880c1c24717" +content-hash = "e0a533cdf260df070622d183dbc20f2e7dd445c55e843f92621231bc414a7596" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index baf617f9b..2c70c6e38 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -24,7 +24,7 @@ pypdf = "^6.0.0" ffmpeg-python = "^0.2.0" aiofiles = "^24.1.0" prometheus-fastapi-instrumentator = "^7.0.0" -fastmcp = "^2.11.3" +fastmcp = "^2.12.2" langchain-ollama = "^0.3.7" langchain-aws = "^0.2.31" langchain-nvidia-ai-endpoints = "^0.3.17" From 4b43764b77995b837510aa4ff146d7923f4b0a9a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 10:26:51 +0200 Subject: [PATCH 009/110] chore(deps): bump actions/setup-python from 5 to 6 (#440) Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/confluence-importer.yaml | 6 +++--- .github/workflows/reis-stresstest.yaml | 2 +- .github/workflows/reis.yaml | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/confluence-importer.yaml b/.github/workflows/confluence-importer.yaml index e9c2d493a..e311a3c72 100644 --- a/.github/workflows/confluence-importer.yaml +++ b/.github/workflows/confluence-importer.yaml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: '3.13' - name: Install uv @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: '3.13' - name: Install uv @@ -48,7 +48,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: '3.13' - name: Install uv diff --git a/.github/workflows/reis-stresstest.yaml b/.github/workflows/reis-stresstest.yaml index 7bac15709..c62c056cb 100644 --- a/.github/workflows/reis-stresstest.yaml +++ b/.github/workflows/reis-stresstest.yaml @@ -50,7 +50,7 @@ jobs: -e EMBEDDINGS_TYPE="random-test-embeddings" \ reis:commit-${{ github.sha }} - run: pipx install poetry - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: '3.13' cache: 'poetry' diff --git a/.github/workflows/reis.yaml b/.github/workflows/reis.yaml index 9fb457b91..f0c0f47bf 100644 --- a/.github/workflows/reis.yaml +++ b/.github/workflows/reis.yaml @@ -19,7 +19,7 @@ jobs: steps: - uses: actions/checkout@v5 - run: pipx install poetry - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: '3.13' cache: 'poetry' @@ -38,7 +38,7 @@ jobs: steps: - uses: actions/checkout@v5 - run: pipx install poetry - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: '3.13' cache: 'poetry' @@ -71,7 +71,7 @@ jobs: lfs: true - uses: AnimMouse/setup-ffmpeg@v1 - run: pipx install poetry - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: '3.13' cache: 'poetry' From abb4035fa5c389c26ce44ac241f703ec729e0b37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 08:23:36 +0000 Subject: [PATCH 010/110] chore(deps-dev): bump pytest from 8.4.1 to 8.4.2 in /services/reis Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.4.1 to 8.4.2. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/8.4.1...8.4.2) --- updated-dependencies: - dependency-name: pytest dependency-version: 8.4.2 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 8 ++++---- services/reis/pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index f72bca239..cffcc4a23 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -3939,14 +3939,14 @@ yaml = ["PyYAML (>=3.11,<7)"] [[package]] name = "pytest" -version = "8.4.1" +version = "8.4.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7"}, - {file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"}, + {file = "pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79"}, + {file = "pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01"}, ] [package.dependencies] @@ -6202,4 +6202,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "e0a533cdf260df070622d183dbc20f2e7dd445c55e843f92621231bc414a7596" +content-hash = "e59b0612f3337cbeff476363869403e62a80aae825c65a0e7610102fd0b1568c" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index 2c70c6e38..59c98ce06 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -33,7 +33,7 @@ langchain-nvidia-ai-endpoints = "^0.3.17" ruff = "0.12.11" mypy = "1.17.1" pre-commit = "4.3.0" -pytest = "8.4.1" +pytest = "8.4.2" pytest-cov = "6.2.1" pytest-mock = "3.14.1" pytest-responses = "0.5.1" From 664d5e87b0ab5df3b1e4ca4d38311b86dfda93d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 08:42:00 +0000 Subject: [PATCH 011/110] chore(deps-dev): bump pytest-cov from 6.2.1 to 7.0.0 in /services/reis Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 6.2.1 to 7.0.0. - [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-cov/compare/v6.2.1...v7.0.0) --- updated-dependencies: - dependency-name: pytest-cov dependency-version: 7.0.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 171 ++++++++++++++++++++--------------- services/reis/pyproject.toml | 2 +- 2 files changed, 97 insertions(+), 76 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index cffcc4a23..9e33fdbf4 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -674,79 +674,100 @@ markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\"", [[package]] name = "coverage" -version = "7.8.2" +version = "7.10.6" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "coverage-7.8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd8ec21e1443fd7a447881332f7ce9d35b8fbd2849e761bb290b584535636b0a"}, - {file = "coverage-7.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4c26c2396674816deaeae7ded0e2b42c26537280f8fe313335858ffff35019be"}, - {file = "coverage-7.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1aec326ed237e5880bfe69ad41616d333712c7937bcefc1343145e972938f9b3"}, - {file = "coverage-7.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e818796f71702d7a13e50c70de2a1924f729228580bcba1607cccf32eea46e6"}, - {file = "coverage-7.8.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:546e537d9e24efc765c9c891328f30f826e3e4808e31f5d0f87c4ba12bbd1622"}, - {file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ab9b09a2349f58e73f8ebc06fac546dd623e23b063e5398343c5270072e3201c"}, - {file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fd51355ab8a372d89fb0e6a31719e825cf8df8b6724bee942fb5b92c3f016ba3"}, - {file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0774df1e093acb6c9e4d58bce7f86656aeed6c132a16e2337692c12786b32404"}, - {file = "coverage-7.8.2-cp310-cp310-win32.whl", hash = "sha256:00f2e2f2e37f47e5f54423aeefd6c32a7dbcedc033fcd3928a4f4948e8b96af7"}, - {file = "coverage-7.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:145b07bea229821d51811bf15eeab346c236d523838eda395ea969d120d13347"}, - {file = "coverage-7.8.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b99058eef42e6a8dcd135afb068b3d53aff3921ce699e127602efff9956457a9"}, - {file = "coverage-7.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5feb7f2c3e6ea94d3b877def0270dff0947b8d8c04cfa34a17be0a4dc1836879"}, - {file = "coverage-7.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:670a13249b957bb9050fab12d86acef7bf8f6a879b9d1a883799276e0d4c674a"}, - {file = "coverage-7.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bdc8bf760459a4a4187b452213e04d039990211f98644c7292adf1e471162b5"}, - {file = "coverage-7.8.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07a989c867986c2a75f158f03fdb413128aad29aca9d4dbce5fc755672d96f11"}, - {file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2db10dedeb619a771ef0e2949ccba7b75e33905de959c2643a4607bef2f3fb3a"}, - {file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e6ea7dba4e92926b7b5f0990634b78ea02f208d04af520c73a7c876d5a8d36cb"}, - {file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ef2f22795a7aca99fc3c84393a55a53dd18ab8c93fb431004e4d8f0774150f54"}, - {file = "coverage-7.8.2-cp311-cp311-win32.whl", hash = "sha256:641988828bc18a6368fe72355df5f1703e44411adbe49bba5644b941ce6f2e3a"}, - {file = "coverage-7.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:8ab4a51cb39dc1933ba627e0875046d150e88478dbe22ce145a68393e9652975"}, - {file = "coverage-7.8.2-cp311-cp311-win_arm64.whl", hash = "sha256:8966a821e2083c74d88cca5b7dcccc0a3a888a596a04c0b9668a891de3a0cc53"}, - {file = "coverage-7.8.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e2f6fe3654468d061942591aef56686131335b7a8325684eda85dacdf311356c"}, - {file = "coverage-7.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76090fab50610798cc05241bf83b603477c40ee87acd358b66196ab0ca44ffa1"}, - {file = "coverage-7.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bd0a0a5054be160777a7920b731a0570284db5142abaaf81bcbb282b8d99279"}, - {file = "coverage-7.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da23ce9a3d356d0affe9c7036030b5c8f14556bd970c9b224f9c8205505e3b99"}, - {file = "coverage-7.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9392773cffeb8d7e042a7b15b82a414011e9d2b5fdbbd3f7e6a6b17d5e21b20"}, - {file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:876cbfd0b09ce09d81585d266c07a32657beb3eaec896f39484b631555be0fe2"}, - {file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3da9b771c98977a13fbc3830f6caa85cae6c9c83911d24cb2d218e9394259c57"}, - {file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a990f6510b3292686713bfef26d0049cd63b9c7bb17e0864f133cbfd2e6167f"}, - {file = "coverage-7.8.2-cp312-cp312-win32.whl", hash = "sha256:bf8111cddd0f2b54d34e96613e7fbdd59a673f0cf5574b61134ae75b6f5a33b8"}, - {file = "coverage-7.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:86a323a275e9e44cdf228af9b71c5030861d4d2610886ab920d9945672a81223"}, - {file = "coverage-7.8.2-cp312-cp312-win_arm64.whl", hash = "sha256:820157de3a589e992689ffcda8639fbabb313b323d26388d02e154164c57b07f"}, - {file = "coverage-7.8.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ea561010914ec1c26ab4188aef8b1567272ef6de096312716f90e5baa79ef8ca"}, - {file = "coverage-7.8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cb86337a4fcdd0e598ff2caeb513ac604d2f3da6d53df2c8e368e07ee38e277d"}, - {file = "coverage-7.8.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26a4636ddb666971345541b59899e969f3b301143dd86b0ddbb570bd591f1e85"}, - {file = "coverage-7.8.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5040536cf9b13fb033f76bcb5e1e5cb3b57c4807fef37db9e0ed129c6a094257"}, - {file = "coverage-7.8.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc67994df9bcd7e0150a47ef41278b9e0a0ea187caba72414b71dc590b99a108"}, - {file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e6c86888fd076d9e0fe848af0a2142bf606044dc5ceee0aa9eddb56e26895a0"}, - {file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:684ca9f58119b8e26bef860db33524ae0365601492e86ba0b71d513f525e7050"}, - {file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8165584ddedb49204c4e18da083913bdf6a982bfb558632a79bdaadcdafd0d48"}, - {file = "coverage-7.8.2-cp313-cp313-win32.whl", hash = "sha256:34759ee2c65362163699cc917bdb2a54114dd06d19bab860725f94ef45a3d9b7"}, - {file = "coverage-7.8.2-cp313-cp313-win_amd64.whl", hash = "sha256:2f9bc608fbafaee40eb60a9a53dbfb90f53cc66d3d32c2849dc27cf5638a21e3"}, - {file = "coverage-7.8.2-cp313-cp313-win_arm64.whl", hash = "sha256:9fe449ee461a3b0c7105690419d0b0aba1232f4ff6d120a9e241e58a556733f7"}, - {file = "coverage-7.8.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8369a7c8ef66bded2b6484053749ff220dbf83cba84f3398c84c51a6f748a008"}, - {file = "coverage-7.8.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:159b81df53a5fcbc7d45dae3adad554fdbde9829a994e15227b3f9d816d00b36"}, - {file = "coverage-7.8.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6fcbbd35a96192d042c691c9e0c49ef54bd7ed865846a3c9d624c30bb67ce46"}, - {file = "coverage-7.8.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05364b9cc82f138cc86128dc4e2e1251c2981a2218bfcd556fe6b0fbaa3501be"}, - {file = "coverage-7.8.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46d532db4e5ff3979ce47d18e2fe8ecad283eeb7367726da0e5ef88e4fe64740"}, - {file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4000a31c34932e7e4fa0381a3d6deb43dc0c8f458e3e7ea6502e6238e10be625"}, - {file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:43ff5033d657cd51f83015c3b7a443287250dc14e69910577c3e03bd2e06f27b"}, - {file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:94316e13f0981cbbba132c1f9f365cac1d26716aaac130866ca812006f662199"}, - {file = "coverage-7.8.2-cp313-cp313t-win32.whl", hash = "sha256:3f5673888d3676d0a745c3d0e16da338c5eea300cb1f4ada9c872981265e76d8"}, - {file = "coverage-7.8.2-cp313-cp313t-win_amd64.whl", hash = "sha256:2c08b05ee8d7861e45dc5a2cc4195c8c66dca5ac613144eb6ebeaff2d502e73d"}, - {file = "coverage-7.8.2-cp313-cp313t-win_arm64.whl", hash = "sha256:1e1448bb72b387755e1ff3ef1268a06617afd94188164960dba8d0245a46004b"}, - {file = "coverage-7.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:496948261eaac5ac9cf43f5d0a9f6eb7a6d4cb3bedb2c5d294138142f5c18f2a"}, - {file = "coverage-7.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eacd2de0d30871eff893bab0b67840a96445edcb3c8fd915e6b11ac4b2f3fa6d"}, - {file = "coverage-7.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b039ffddc99ad65d5078ef300e0c7eed08c270dc26570440e3ef18beb816c1ca"}, - {file = "coverage-7.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e49824808d4375ede9dd84e9961a59c47f9113039f1a525e6be170aa4f5c34d"}, - {file = "coverage-7.8.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b069938961dfad881dc2f8d02b47645cd2f455d3809ba92a8a687bf513839787"}, - {file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:de77c3ba8bb686d1c411e78ee1b97e6e0b963fb98b1637658dd9ad2c875cf9d7"}, - {file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1676628065a498943bd3f64f099bb573e08cf1bc6088bbe33cf4424e0876f4b3"}, - {file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8e1a26e7e50076e35f7afafde570ca2b4d7900a491174ca357d29dece5aacee7"}, - {file = "coverage-7.8.2-cp39-cp39-win32.whl", hash = "sha256:6782a12bf76fa61ad9350d5a6ef5f3f020b57f5e6305cbc663803f2ebd0f270a"}, - {file = "coverage-7.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:1efa4166ba75ccefd647f2d78b64f53f14fb82622bc94c5a5cb0a622f50f1c9e"}, - {file = "coverage-7.8.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:ec455eedf3ba0bbdf8f5a570012617eb305c63cb9f03428d39bf544cb2b94837"}, - {file = "coverage-7.8.2-py3-none-any.whl", hash = "sha256:726f32ee3713f7359696331a18daf0c3b3a70bb0ae71141b9d3c52be7c595e32"}, - {file = "coverage-7.8.2.tar.gz", hash = "sha256:a886d531373a1f6ff9fad2a2ba4a045b68467b779ae729ee0b3b10ac20033b27"}, + {file = "coverage-7.10.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:70e7bfbd57126b5554aa482691145f798d7df77489a177a6bef80de78860a356"}, + {file = "coverage-7.10.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e41be6f0f19da64af13403e52f2dec38bbc2937af54df8ecef10850ff8d35301"}, + {file = "coverage-7.10.6-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c61fc91ab80b23f5fddbee342d19662f3d3328173229caded831aa0bd7595460"}, + {file = "coverage-7.10.6-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10356fdd33a7cc06e8051413140bbdc6f972137508a3572e3f59f805cd2832fd"}, + {file = "coverage-7.10.6-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:80b1695cf7c5ebe7b44bf2521221b9bb8cdf69b1f24231149a7e3eb1ae5fa2fb"}, + {file = "coverage-7.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2e4c33e6378b9d52d3454bd08847a8651f4ed23ddbb4a0520227bd346382bbc6"}, + {file = "coverage-7.10.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c8a3ec16e34ef980a46f60dc6ad86ec60f763c3f2fa0db6d261e6e754f72e945"}, + {file = "coverage-7.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7d79dabc0a56f5af990cc6da9ad1e40766e82773c075f09cc571e2076fef882e"}, + {file = "coverage-7.10.6-cp310-cp310-win32.whl", hash = "sha256:86b9b59f2b16e981906e9d6383eb6446d5b46c278460ae2c36487667717eccf1"}, + {file = "coverage-7.10.6-cp310-cp310-win_amd64.whl", hash = "sha256:e132b9152749bd33534e5bd8565c7576f135f157b4029b975e15ee184325f528"}, + {file = "coverage-7.10.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c706db3cabb7ceef779de68270150665e710b46d56372455cd741184f3868d8f"}, + {file = "coverage-7.10.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e0c38dc289e0508ef68ec95834cb5d2e96fdbe792eaccaa1bccac3966bbadcc"}, + {file = "coverage-7.10.6-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:752a3005a1ded28f2f3a6e8787e24f28d6abe176ca64677bcd8d53d6fe2ec08a"}, + {file = "coverage-7.10.6-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:689920ecfd60f992cafca4f5477d55720466ad2c7fa29bb56ac8d44a1ac2b47a"}, + {file = "coverage-7.10.6-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec98435796d2624d6905820a42f82149ee9fc4f2d45c2c5bc5a44481cc50db62"}, + {file = "coverage-7.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b37201ce4a458c7a758ecc4efa92fa8ed783c66e0fa3c42ae19fc454a0792153"}, + {file = "coverage-7.10.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2904271c80898663c810a6b067920a61dd8d38341244a3605bd31ab55250dad5"}, + {file = "coverage-7.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5aea98383463d6e1fa4e95416d8de66f2d0cb588774ee20ae1b28df826bcb619"}, + {file = "coverage-7.10.6-cp311-cp311-win32.whl", hash = "sha256:e3fb1fa01d3598002777dd259c0c2e6d9d5e10e7222976fc8e03992f972a2cba"}, + {file = "coverage-7.10.6-cp311-cp311-win_amd64.whl", hash = "sha256:f35ed9d945bece26553d5b4c8630453169672bea0050a564456eb88bdffd927e"}, + {file = "coverage-7.10.6-cp311-cp311-win_arm64.whl", hash = "sha256:99e1a305c7765631d74b98bf7dbf54eeea931f975e80f115437d23848ee8c27c"}, + {file = "coverage-7.10.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5b2dd6059938063a2c9fee1af729d4f2af28fd1a545e9b7652861f0d752ebcea"}, + {file = "coverage-7.10.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:388d80e56191bf846c485c14ae2bc8898aa3124d9d35903fef7d907780477634"}, + {file = "coverage-7.10.6-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:90cb5b1a4670662719591aa92d0095bb41714970c0b065b02a2610172dbf0af6"}, + {file = "coverage-7.10.6-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:961834e2f2b863a0e14260a9a273aff07ff7818ab6e66d2addf5628590c628f9"}, + {file = "coverage-7.10.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf9a19f5012dab774628491659646335b1928cfc931bf8d97b0d5918dd58033c"}, + {file = "coverage-7.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99c4283e2a0e147b9c9cc6bc9c96124de9419d6044837e9799763a0e29a7321a"}, + {file = "coverage-7.10.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:282b1b20f45df57cc508c1e033403f02283adfb67d4c9c35a90281d81e5c52c5"}, + {file = "coverage-7.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cdbe264f11afd69841bd8c0d83ca10b5b32853263ee62e6ac6a0ab63895f972"}, + {file = "coverage-7.10.6-cp312-cp312-win32.whl", hash = "sha256:a517feaf3a0a3eca1ee985d8373135cfdedfbba3882a5eab4362bda7c7cf518d"}, + {file = "coverage-7.10.6-cp312-cp312-win_amd64.whl", hash = "sha256:856986eadf41f52b214176d894a7de05331117f6035a28ac0016c0f63d887629"}, + {file = "coverage-7.10.6-cp312-cp312-win_arm64.whl", hash = "sha256:acf36b8268785aad739443fa2780c16260ee3fa09d12b3a70f772ef100939d80"}, + {file = "coverage-7.10.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ffea0575345e9ee0144dfe5701aa17f3ba546f8c3bb48db62ae101afb740e7d6"}, + {file = "coverage-7.10.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:95d91d7317cde40a1c249d6b7382750b7e6d86fad9d8eaf4fa3f8f44cf171e80"}, + {file = "coverage-7.10.6-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3e23dd5408fe71a356b41baa82892772a4cefcf758f2ca3383d2aa39e1b7a003"}, + {file = "coverage-7.10.6-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0f3f56e4cb573755e96a16501a98bf211f100463d70275759e73f3cbc00d4f27"}, + {file = "coverage-7.10.6-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:db4a1d897bbbe7339946ffa2fe60c10cc81c43fab8b062d3fcb84188688174a4"}, + {file = "coverage-7.10.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d8fd7879082953c156d5b13c74aa6cca37f6a6f4747b39538504c3f9c63d043d"}, + {file = "coverage-7.10.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:28395ca3f71cd103b8c116333fa9db867f3a3e1ad6a084aa3725ae002b6583bc"}, + {file = "coverage-7.10.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:61c950fc33d29c91b9e18540e1aed7d9f6787cc870a3e4032493bbbe641d12fc"}, + {file = "coverage-7.10.6-cp313-cp313-win32.whl", hash = "sha256:160c00a5e6b6bdf4e5984b0ef21fc860bc94416c41b7df4d63f536d17c38902e"}, + {file = "coverage-7.10.6-cp313-cp313-win_amd64.whl", hash = "sha256:628055297f3e2aa181464c3808402887643405573eb3d9de060d81531fa79d32"}, + {file = "coverage-7.10.6-cp313-cp313-win_arm64.whl", hash = "sha256:df4ec1f8540b0bcbe26ca7dd0f541847cc8a108b35596f9f91f59f0c060bfdd2"}, + {file = "coverage-7.10.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c9a8b7a34a4de3ed987f636f71881cd3b8339f61118b1aa311fbda12741bff0b"}, + {file = "coverage-7.10.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8dd5af36092430c2b075cee966719898f2ae87b636cefb85a653f1d0ba5d5393"}, + {file = "coverage-7.10.6-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b0353b0f0850d49ada66fdd7d0c7cdb0f86b900bb9e367024fd14a60cecc1e27"}, + {file = "coverage-7.10.6-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d6b9ae13d5d3e8aeca9ca94198aa7b3ebbc5acfada557d724f2a1f03d2c0b0df"}, + {file = "coverage-7.10.6-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:675824a363cc05781b1527b39dc2587b8984965834a748177ee3c37b64ffeafb"}, + {file = "coverage-7.10.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:692d70ea725f471a547c305f0d0fc6a73480c62fb0da726370c088ab21aed282"}, + {file = "coverage-7.10.6-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:851430a9a361c7a8484a36126d1d0ff8d529d97385eacc8dfdc9bfc8c2d2cbe4"}, + {file = "coverage-7.10.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d9369a23186d189b2fc95cc08b8160ba242057e887d766864f7adf3c46b2df21"}, + {file = "coverage-7.10.6-cp313-cp313t-win32.whl", hash = "sha256:92be86fcb125e9bda0da7806afd29a3fd33fdf58fba5d60318399adf40bf37d0"}, + {file = "coverage-7.10.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6b3039e2ca459a70c79523d39347d83b73f2f06af5624905eba7ec34d64d80b5"}, + {file = "coverage-7.10.6-cp313-cp313t-win_arm64.whl", hash = "sha256:3fb99d0786fe17b228eab663d16bee2288e8724d26a199c29325aac4b0319b9b"}, + {file = "coverage-7.10.6-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6008a021907be8c4c02f37cdc3ffb258493bdebfeaf9a839f9e71dfdc47b018e"}, + {file = "coverage-7.10.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:5e75e37f23eb144e78940b40395b42f2321951206a4f50e23cfd6e8a198d3ceb"}, + {file = "coverage-7.10.6-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0f7cb359a448e043c576f0da00aa8bfd796a01b06aa610ca453d4dde09cc1034"}, + {file = "coverage-7.10.6-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c68018e4fc4e14b5668f1353b41ccf4bc83ba355f0e1b3836861c6f042d89ac1"}, + {file = "coverage-7.10.6-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cd4b2b0707fc55afa160cd5fc33b27ccbf75ca11d81f4ec9863d5793fc6df56a"}, + {file = "coverage-7.10.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4cec13817a651f8804a86e4f79d815b3b28472c910e099e4d5a0e8a3b6a1d4cb"}, + {file = "coverage-7.10.6-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:f2a6a8e06bbda06f78739f40bfb56c45d14eb8249d0f0ea6d4b3d48e1f7c695d"}, + {file = "coverage-7.10.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:081b98395ced0d9bcf60ada7661a0b75f36b78b9d7e39ea0790bb4ed8da14747"}, + {file = "coverage-7.10.6-cp314-cp314-win32.whl", hash = "sha256:6937347c5d7d069ee776b2bf4e1212f912a9f1f141a429c475e6089462fcecc5"}, + {file = "coverage-7.10.6-cp314-cp314-win_amd64.whl", hash = "sha256:adec1d980fa07e60b6ef865f9e5410ba760e4e1d26f60f7e5772c73b9a5b0713"}, + {file = "coverage-7.10.6-cp314-cp314-win_arm64.whl", hash = "sha256:a80f7aef9535442bdcf562e5a0d5a5538ce8abe6bb209cfbf170c462ac2c2a32"}, + {file = "coverage-7.10.6-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:0de434f4fbbe5af4fa7989521c655c8c779afb61c53ab561b64dcee6149e4c65"}, + {file = "coverage-7.10.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6e31b8155150c57e5ac43ccd289d079eb3f825187d7c66e755a055d2c85794c6"}, + {file = "coverage-7.10.6-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:98cede73eb83c31e2118ae8d379c12e3e42736903a8afcca92a7218e1f2903b0"}, + {file = "coverage-7.10.6-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f863c08f4ff6b64fa8045b1e3da480f5374779ef187f07b82e0538c68cb4ff8e"}, + {file = "coverage-7.10.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2b38261034fda87be356f2c3f42221fdb4171c3ce7658066ae449241485390d5"}, + {file = "coverage-7.10.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0e93b1476b79eae849dc3872faeb0bf7948fd9ea34869590bc16a2a00b9c82a7"}, + {file = "coverage-7.10.6-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:ff8a991f70f4c0cf53088abf1e3886edcc87d53004c7bb94e78650b4d3dac3b5"}, + {file = "coverage-7.10.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ac765b026c9f33044419cbba1da913cfb82cca1b60598ac1c7a5ed6aac4621a0"}, + {file = "coverage-7.10.6-cp314-cp314t-win32.whl", hash = "sha256:441c357d55f4936875636ef2cfb3bee36e466dcf50df9afbd398ce79dba1ebb7"}, + {file = "coverage-7.10.6-cp314-cp314t-win_amd64.whl", hash = "sha256:073711de3181b2e204e4870ac83a7c4853115b42e9cd4d145f2231e12d670930"}, + {file = "coverage-7.10.6-cp314-cp314t-win_arm64.whl", hash = "sha256:137921f2bac5559334ba66122b753db6dc5d1cf01eb7b64eb412bb0d064ef35b"}, + {file = "coverage-7.10.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90558c35af64971d65fbd935c32010f9a2f52776103a259f1dee865fe8259352"}, + {file = "coverage-7.10.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8953746d371e5695405806c46d705a3cd170b9cc2b9f93953ad838f6c1e58612"}, + {file = "coverage-7.10.6-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c83f6afb480eae0313114297d29d7c295670a41c11b274e6bca0c64540c1ce7b"}, + {file = "coverage-7.10.6-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7eb68d356ba0cc158ca535ce1381dbf2037fa8cb5b1ae5ddfc302e7317d04144"}, + {file = "coverage-7.10.6-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5b15a87265e96307482746d86995f4bff282f14b027db75469c446da6127433b"}, + {file = "coverage-7.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fc53ba868875bfbb66ee447d64d6413c2db91fddcfca57025a0e7ab5b07d5862"}, + {file = "coverage-7.10.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efeda443000aa23f276f4df973cb82beca682fd800bb119d19e80504ffe53ec2"}, + {file = "coverage-7.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9702b59d582ff1e184945d8b501ffdd08d2cee38d93a2206aa5f1365ce0b8d78"}, + {file = "coverage-7.10.6-cp39-cp39-win32.whl", hash = "sha256:2195f8e16ba1a44651ca684db2ea2b2d4b5345da12f07d9c22a395202a05b23c"}, + {file = "coverage-7.10.6-cp39-cp39-win_amd64.whl", hash = "sha256:f32ff80e7ef6a5b5b606ea69a36e97b219cd9dc799bcf2963018a4d8f788cfbf"}, + {file = "coverage-7.10.6-py3-none-any.whl", hash = "sha256:92c4ecf6bf11b2e85fd4d8204814dc26e6a19f0c9d938c207c5cb0eadfcabbe3"}, + {file = "coverage-7.10.6.tar.gz", hash = "sha256:f644a3ae5933a552a29dbb9aa2f90c677a875f80ebea028e5a52a4f429044b90"}, ] [package.extras] @@ -3961,23 +3982,23 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests [[package]] name = "pytest-cov" -version = "6.2.1" +version = "7.0.0" description = "Pytest plugin for measuring coverage." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5"}, - {file = "pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2"}, + {file = "pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861"}, + {file = "pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1"}, ] [package.dependencies] -coverage = {version = ">=7.5", extras = ["toml"]} +coverage = {version = ">=7.10.6", extras = ["toml"]} pluggy = ">=1.2" -pytest = ">=6.2.5" +pytest = ">=7" [package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] +testing = ["process-tests", "pytest-xdist", "virtualenv"] [[package]] name = "pytest-error-for-skips" @@ -6202,4 +6223,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "e59b0612f3337cbeff476363869403e62a80aae825c65a0e7610102fd0b1568c" +content-hash = "29bf475fd918af8ca2c6143756f89f62046485f3abed16292ff78260d60a5132" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index 59c98ce06..a703fca8a 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -34,7 +34,7 @@ ruff = "0.12.11" mypy = "1.17.1" pre-commit = "4.3.0" pytest = "8.4.2" -pytest-cov = "6.2.1" +pytest-cov = "7.0.0" pytest-mock = "3.14.1" pytest-responses = "0.5.1" pytest-github-report = "0.0.1" From 015674bbfdd518bedd4745ad0d355e4e8687ef91 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 08:54:35 +0000 Subject: [PATCH 012/110] chore(deps-dev): bump pytest-mock in /services/reis Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.14.1 to 3.15.0. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.14.1...v3.15.0) --- updated-dependencies: - dependency-name: pytest-mock dependency-version: 3.15.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 10 +++++----- services/reis/pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 9e33fdbf4..63fbe8ab3 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -4035,14 +4035,14 @@ all = ["pytablewriter", "pytest"] [[package]] name = "pytest-mock" -version = "3.14.1" +version = "3.15.0" description = "Thin-wrapper around the mock package for easier use with pytest" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest_mock-3.14.1-py3-none-any.whl", hash = "sha256:178aefcd11307d874b4cd3100344e7e2d888d9791a6a1d9bfe90fbc1b74fd1d0"}, - {file = "pytest_mock-3.14.1.tar.gz", hash = "sha256:159e9edac4c451ce77a5cdb9fc5d1100708d2dd4ba3c3df572f14097351af80e"}, + {file = "pytest_mock-3.15.0-py3-none-any.whl", hash = "sha256:ef2219485fb1bd256b00e7ad7466ce26729b30eadfc7cbcdb4fa9a92ca68db6f"}, + {file = "pytest_mock-3.15.0.tar.gz", hash = "sha256:ab896bd190316b9d5d87b277569dfcdf718b2d049a2ccff5f7aca279c002a1cf"}, ] [package.dependencies] @@ -6223,4 +6223,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "29bf475fd918af8ca2c6143756f89f62046485f3abed16292ff78260d60a5132" +content-hash = "af1e5d6d6325c9f3722f4f60fe75fa90ed327b38ae89861738a49d63378b2414" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index a703fca8a..a9472e18f 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -35,7 +35,7 @@ mypy = "1.17.1" pre-commit = "4.3.0" pytest = "8.4.2" pytest-cov = "7.0.0" -pytest-mock = "3.14.1" +pytest-mock = "3.15.0" pytest-responses = "0.5.1" pytest-github-report = "0.0.1" pytest-error-for-skips = "2.0.2" From 21931078dd07ed14c0df17b186855a9afff988cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 09:09:15 +0000 Subject: [PATCH 013/110] chore(deps-dev): bump ruff from 0.12.11 to 0.12.12 in /services/reis Bumps [ruff](https://github.com/astral-sh/ruff) from 0.12.11 to 0.12.12. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.12.11...0.12.12) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.12.12 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 42 ++++++++++++++++++------------------ services/reis/pyproject.toml | 2 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 63fbe8ab3..08a7bc31c 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -4952,31 +4952,31 @@ files = [ [[package]] name = "ruff" -version = "0.12.11" +version = "0.12.12" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.12.11-py3-none-linux_armv6l.whl", hash = "sha256:93fce71e1cac3a8bf9200e63a38ac5c078f3b6baebffb74ba5274fb2ab276065"}, - {file = "ruff-0.12.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b8e33ac7b28c772440afa80cebb972ffd823621ded90404f29e5ab6d1e2d4b93"}, - {file = "ruff-0.12.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d69fb9d4937aa19adb2e9f058bc4fbfe986c2040acb1a4a9747734834eaa0bfd"}, - {file = "ruff-0.12.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:411954eca8464595077a93e580e2918d0a01a19317af0a72132283e28ae21bee"}, - {file = "ruff-0.12.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a2c0a2e1a450f387bf2c6237c727dd22191ae8c00e448e0672d624b2bbd7fb0"}, - {file = "ruff-0.12.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ca4c3a7f937725fd2413c0e884b5248a19369ab9bdd850b5781348ba283f644"}, - {file = "ruff-0.12.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:4d1df0098124006f6a66ecf3581a7f7e754c4df7644b2e6704cd7ca80ff95211"}, - {file = "ruff-0.12.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a8dd5f230efc99a24ace3b77e3555d3fbc0343aeed3fc84c8d89e75ab2ff793"}, - {file = "ruff-0.12.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4dc75533039d0ed04cd33fb8ca9ac9620b99672fe7ff1533b6402206901c34ee"}, - {file = "ruff-0.12.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fc58f9266d62c6eccc75261a665f26b4ef64840887fc6cbc552ce5b29f96cc8"}, - {file = "ruff-0.12.11-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:5a0113bd6eafd545146440225fe60b4e9489f59eb5f5f107acd715ba5f0b3d2f"}, - {file = "ruff-0.12.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0d737b4059d66295c3ea5720e6efc152623bb83fde5444209b69cd33a53e2000"}, - {file = "ruff-0.12.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:916fc5defee32dbc1fc1650b576a8fed68f5e8256e2180d4d9855aea43d6aab2"}, - {file = "ruff-0.12.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c984f07d7adb42d3ded5be894fb4007f30f82c87559438b4879fe7aa08c62b39"}, - {file = "ruff-0.12.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e07fbb89f2e9249f219d88331c833860489b49cdf4b032b8e4432e9b13e8a4b9"}, - {file = "ruff-0.12.11-py3-none-win32.whl", hash = "sha256:c792e8f597c9c756e9bcd4d87cf407a00b60af77078c96f7b6366ea2ce9ba9d3"}, - {file = "ruff-0.12.11-py3-none-win_amd64.whl", hash = "sha256:a3283325960307915b6deb3576b96919ee89432ebd9c48771ca12ee8afe4a0fd"}, - {file = "ruff-0.12.11-py3-none-win_arm64.whl", hash = "sha256:bae4d6e6a2676f8fb0f98b74594a048bae1b944aab17e9f5d504062303c6dbea"}, - {file = "ruff-0.12.11.tar.gz", hash = "sha256:c6b09ae8426a65bbee5425b9d0b82796dbb07cb1af045743c79bfb163001165d"}, + {file = "ruff-0.12.12-py3-none-linux_armv6l.whl", hash = "sha256:de1c4b916d98ab289818e55ce481e2cacfaad7710b01d1f990c497edf217dafc"}, + {file = "ruff-0.12.12-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7acd6045e87fac75a0b0cdedacf9ab3e1ad9d929d149785903cff9bb69ad9727"}, + {file = "ruff-0.12.12-py3-none-macosx_11_0_arm64.whl", hash = "sha256:abf4073688d7d6da16611f2f126be86523a8ec4343d15d276c614bda8ec44edb"}, + {file = "ruff-0.12.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:968e77094b1d7a576992ac078557d1439df678a34c6fe02fd979f973af167577"}, + {file = "ruff-0.12.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42a67d16e5b1ffc6d21c5f67851e0e769517fb57a8ebad1d0781b30888aa704e"}, + {file = "ruff-0.12.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b216ec0a0674e4b1214dcc998a5088e54eaf39417327b19ffefba1c4a1e4971e"}, + {file = "ruff-0.12.12-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:59f909c0fdd8f1dcdbfed0b9569b8bf428cf144bec87d9de298dcd4723f5bee8"}, + {file = "ruff-0.12.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ac93d87047e765336f0c18eacad51dad0c1c33c9df7484c40f98e1d773876f5"}, + {file = "ruff-0.12.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:01543c137fd3650d322922e8b14cc133b8ea734617c4891c5a9fccf4bfc9aa92"}, + {file = "ruff-0.12.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afc2fa864197634e549d87fb1e7b6feb01df0a80fd510d6489e1ce8c0b1cc45"}, + {file = "ruff-0.12.12-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:0c0945246f5ad776cb8925e36af2438e66188d2b57d9cf2eed2c382c58b371e5"}, + {file = "ruff-0.12.12-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a0fbafe8c58e37aae28b84a80ba1817f2ea552e9450156018a478bf1fa80f4e4"}, + {file = "ruff-0.12.12-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b9c456fb2fc8e1282affa932c9e40f5ec31ec9cbb66751a316bd131273b57c23"}, + {file = "ruff-0.12.12-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5f12856123b0ad0147d90b3961f5c90e7427f9acd4b40050705499c98983f489"}, + {file = "ruff-0.12.12-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:26a1b5a2bf7dd2c47e3b46d077cd9c0fc3b93e6c6cc9ed750bd312ae9dc302ee"}, + {file = "ruff-0.12.12-py3-none-win32.whl", hash = "sha256:173be2bfc142af07a01e3a759aba6f7791aa47acf3604f610b1c36db888df7b1"}, + {file = "ruff-0.12.12-py3-none-win_amd64.whl", hash = "sha256:e99620bf01884e5f38611934c09dd194eb665b0109104acae3ba6102b600fd0d"}, + {file = "ruff-0.12.12-py3-none-win_arm64.whl", hash = "sha256:2a8199cab4ce4d72d158319b63370abf60991495fb733db96cd923a34c52d093"}, + {file = "ruff-0.12.12.tar.gz", hash = "sha256:b86cd3415dbe31b3b46a71c598f4c4b2f550346d1ccf6326b347cc0c8fd063d6"}, ] [[package]] @@ -6223,4 +6223,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "af1e5d6d6325c9f3722f4f60fe75fa90ed327b38ae89861738a49d63378b2414" +content-hash = "645b3490ef6d4c6ebeeb80ea3e7716de3f8ba3a511aad0e8ad6dc0c7dd36fa6c" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index a9472e18f..a0f1415a6 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -30,7 +30,7 @@ langchain-aws = "^0.2.31" langchain-nvidia-ai-endpoints = "^0.3.17" [tool.poetry.group.dev.dependencies] -ruff = "0.12.11" +ruff = "0.12.12" mypy = "1.17.1" pre-commit = "4.3.0" pytest = "8.4.2" From 532e75004984fb1d9671d3b48178b824f80c77bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 14:26:13 +0200 Subject: [PATCH 014/110] chore(deps): bump actions/setup-node from 4 to 5 (#441) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/backend.yaml | 14 +++++++------- .github/workflows/e2e-template.yaml | 2 +- .github/workflows/e2e.yaml | 2 +- .github/workflows/frontend.yaml | 8 ++++---- .github/workflows/helm-chart.yaml | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/backend.yaml b/.github/workflows/backend.yaml index 85d174880..ad1761bc2 100644 --- a/.github/workflows/backend.yaml +++ b/.github/workflows/backend.yaml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' @@ -33,7 +33,7 @@ jobs: service: [reis, tools, executor] steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' @@ -46,7 +46,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' @@ -61,7 +61,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' @@ -90,7 +90,7 @@ jobs: DB_URL: postgres://admin:secret@localhost:5432/cccc steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' @@ -127,7 +127,7 @@ jobs: DB_URL: postgres://admin:secret@localhost:5432/cccc steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' @@ -158,7 +158,7 @@ jobs: DB_URL: postgres://admin:secret@localhost:5432/cccc steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' diff --git a/.github/workflows/e2e-template.yaml b/.github/workflows/e2e-template.yaml index 79a165744..b2873fdec 100644 --- a/.github/workflows/e2e-template.yaml +++ b/.github/workflows/e2e-template.yaml @@ -120,7 +120,7 @@ jobs: -e FRONTEND_PORT=3080 -e PORT=3080 -e BACKEND_PORT=3000 \ --network test-network \ ghcr.io/codecentric/c4-genai-suite/dev-helper/caddy-gateway-proxy:latest - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index d0aee3fb9..4ffb102d8 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -47,7 +47,7 @@ jobs: contents: read steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' diff --git a/.github/workflows/frontend.yaml b/.github/workflows/frontend.yaml index 813d90f48..8aff06a7c 100644 --- a/.github/workflows/frontend.yaml +++ b/.github/workflows/frontend.yaml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' @@ -46,7 +46,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' @@ -61,7 +61,7 @@ jobs: VITE_SERVER_URL: http://localhost:5173/api-proxy steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x cache: 'npm' diff --git a/.github/workflows/helm-chart.yaml b/.github/workflows/helm-chart.yaml index b4decdc2e..a10eba534 100644 --- a/.github/workflows/helm-chart.yaml +++ b/.github/workflows/helm-chart.yaml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 24.x - run: | From c3a251f64ef08a8ae5deee2145efe31c8c990da7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 14:26:50 +0200 Subject: [PATCH 015/110] chore(deps): bump brace-expansion in /backend (#398) Bumps and [brace-expansion](https://github.com/juliangruber/brace-expansion). These dependencies needed to be updated together. Updates `brace-expansion` from 2.0.1 to 2.0.2 - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/v2.0.1...v2.0.2) Updates `brace-expansion` from 1.1.11 to 1.1.12 - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/v2.0.1...v2.0.2) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 2.0.2 dependency-type: indirect - dependency-name: brace-expansion dependency-version: 1.1.12 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- backend/package-lock.json | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index d79d2d79d..1743ed8f9 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -6570,9 +6570,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7078,7 +7078,9 @@ } }, "node_modules/archiver-utils/node_modules/brace-expansion": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7795,7 +7797,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -10250,7 +10254,9 @@ } }, "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10820,7 +10826,9 @@ "license": "BSD-2-Clause" }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14888,7 +14896,9 @@ } }, "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16787,7 +16797,9 @@ } }, "node_modules/typeorm/node_modules/brace-expansion": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" From 9db942ec39f44bad4e023d75eccb35f7ba412d17 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 19:25:32 +0000 Subject: [PATCH 016/110] chore(deps-dev): bump ruff from 0.12.12 to 0.13.0 in /services/reis Bumps [ruff](https://github.com/astral-sh/ruff) from 0.12.12 to 0.13.0. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.12.12...0.13.0) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.13.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 42 ++++++++++++++++++------------------ services/reis/pyproject.toml | 2 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 08a7bc31c..664428cee 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -4952,31 +4952,31 @@ files = [ [[package]] name = "ruff" -version = "0.12.12" +version = "0.13.0" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.12.12-py3-none-linux_armv6l.whl", hash = "sha256:de1c4b916d98ab289818e55ce481e2cacfaad7710b01d1f990c497edf217dafc"}, - {file = "ruff-0.12.12-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7acd6045e87fac75a0b0cdedacf9ab3e1ad9d929d149785903cff9bb69ad9727"}, - {file = "ruff-0.12.12-py3-none-macosx_11_0_arm64.whl", hash = "sha256:abf4073688d7d6da16611f2f126be86523a8ec4343d15d276c614bda8ec44edb"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:968e77094b1d7a576992ac078557d1439df678a34c6fe02fd979f973af167577"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42a67d16e5b1ffc6d21c5f67851e0e769517fb57a8ebad1d0781b30888aa704e"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b216ec0a0674e4b1214dcc998a5088e54eaf39417327b19ffefba1c4a1e4971e"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:59f909c0fdd8f1dcdbfed0b9569b8bf428cf144bec87d9de298dcd4723f5bee8"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ac93d87047e765336f0c18eacad51dad0c1c33c9df7484c40f98e1d773876f5"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:01543c137fd3650d322922e8b14cc133b8ea734617c4891c5a9fccf4bfc9aa92"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afc2fa864197634e549d87fb1e7b6feb01df0a80fd510d6489e1ce8c0b1cc45"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:0c0945246f5ad776cb8925e36af2438e66188d2b57d9cf2eed2c382c58b371e5"}, - {file = "ruff-0.12.12-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a0fbafe8c58e37aae28b84a80ba1817f2ea552e9450156018a478bf1fa80f4e4"}, - {file = "ruff-0.12.12-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b9c456fb2fc8e1282affa932c9e40f5ec31ec9cbb66751a316bd131273b57c23"}, - {file = "ruff-0.12.12-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5f12856123b0ad0147d90b3961f5c90e7427f9acd4b40050705499c98983f489"}, - {file = "ruff-0.12.12-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:26a1b5a2bf7dd2c47e3b46d077cd9c0fc3b93e6c6cc9ed750bd312ae9dc302ee"}, - {file = "ruff-0.12.12-py3-none-win32.whl", hash = "sha256:173be2bfc142af07a01e3a759aba6f7791aa47acf3604f610b1c36db888df7b1"}, - {file = "ruff-0.12.12-py3-none-win_amd64.whl", hash = "sha256:e99620bf01884e5f38611934c09dd194eb665b0109104acae3ba6102b600fd0d"}, - {file = "ruff-0.12.12-py3-none-win_arm64.whl", hash = "sha256:2a8199cab4ce4d72d158319b63370abf60991495fb733db96cd923a34c52d093"}, - {file = "ruff-0.12.12.tar.gz", hash = "sha256:b86cd3415dbe31b3b46a71c598f4c4b2f550346d1ccf6326b347cc0c8fd063d6"}, + {file = "ruff-0.13.0-py3-none-linux_armv6l.whl", hash = "sha256:137f3d65d58ee828ae136a12d1dc33d992773d8f7644bc6b82714570f31b2004"}, + {file = "ruff-0.13.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:21ae48151b66e71fd111b7d79f9ad358814ed58c339631450c66a4be33cc28b9"}, + {file = "ruff-0.13.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:64de45f4ca5441209e41742d527944635a05a6e7c05798904f39c85bafa819e3"}, + {file = "ruff-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b2c653ae9b9d46e0ef62fc6fbf5b979bda20a0b1d2b22f8f7eb0cde9f4963b8"}, + {file = "ruff-0.13.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cec632534332062bc9eb5884a267b689085a1afea9801bf94e3ba7498a2d207"}, + {file = "ruff-0.13.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd628101d9f7d122e120ac7c17e0a0f468b19bc925501dbe03c1cb7f5415b24"}, + {file = "ruff-0.13.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afe37db8e1466acb173bb2a39ca92df00570e0fd7c94c72d87b51b21bb63efea"}, + {file = "ruff-0.13.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f96a8d90bb258d7d3358b372905fe7333aaacf6c39e2408b9f8ba181f4b6ef2"}, + {file = "ruff-0.13.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b5e3d883e4f924c5298e3f2ee0f3085819c14f68d1e5b6715597681433f153"}, + {file = "ruff-0.13.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03447f3d18479df3d24917a92d768a89f873a7181a064858ea90a804a7538991"}, + {file = "ruff-0.13.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:fbc6b1934eb1c0033da427c805e27d164bb713f8e273a024a7e86176d7f462cf"}, + {file = "ruff-0.13.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a8ab6a3e03665d39d4a25ee199d207a488724f022db0e1fe4002968abdb8001b"}, + {file = "ruff-0.13.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d2a5c62f8ccc6dd2fe259917482de7275cecc86141ee10432727c4816235bc41"}, + {file = "ruff-0.13.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b7b85ca27aeeb1ab421bc787009831cffe6048faae08ad80867edab9f2760945"}, + {file = "ruff-0.13.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:79ea0c44a3032af768cabfd9616e44c24303af49d633b43e3a5096e009ebe823"}, + {file = "ruff-0.13.0-py3-none-win32.whl", hash = "sha256:4e473e8f0e6a04e4113f2e1de12a5039579892329ecc49958424e5568ef4f768"}, + {file = "ruff-0.13.0-py3-none-win_amd64.whl", hash = "sha256:48e5c25c7a3713eea9ce755995767f4dcd1b0b9599b638b12946e892123d1efb"}, + {file = "ruff-0.13.0-py3-none-win_arm64.whl", hash = "sha256:ab80525317b1e1d38614addec8ac954f1b3e662de9d59114ecbf771d00cf613e"}, + {file = "ruff-0.13.0.tar.gz", hash = "sha256:5b4b1ee7eb35afae128ab94459b13b2baaed282b1fb0f472a73c82c996c8ae60"}, ] [[package]] @@ -6223,4 +6223,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "645b3490ef6d4c6ebeeb80ea3e7716de3f8ba3a511aad0e8ad6dc0c7dd36fa6c" +content-hash = "d6ba53ce787f6f467a1de5e8df532462b1ec3a4a92c429758f6a0cb3de9fee9d" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index a0f1415a6..e5d56a629 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -30,7 +30,7 @@ langchain-aws = "^0.2.31" langchain-nvidia-ai-endpoints = "^0.3.17" [tool.poetry.group.dev.dependencies] -ruff = "0.12.12" +ruff = "0.13.0" mypy = "1.17.1" pre-commit = "4.3.0" pytest = "8.4.2" From e2f1615811c10e8fb37e5f606900f1f74ce76981 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 19:39:25 +0000 Subject: [PATCH 017/110] chore(deps): bump langchain-core from 0.3.75 to 0.3.76 in /services/reis Bumps [langchain-core](https://github.com/langchain-ai/langchain) from 0.3.75 to 0.3.76. - [Release notes](https://github.com/langchain-ai/langchain/releases) - [Commits](https://github.com/langchain-ai/langchain/compare/langchain-core==0.3.75...langchain-core==0.3.76) --- updated-dependencies: - dependency-name: langchain-core dependency-version: 0.3.76 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 8 ++++---- services/reis/pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 664428cee..96486bb83 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -1889,14 +1889,14 @@ tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10" [[package]] name = "langchain-core" -version = "0.3.75" +version = "0.3.76" description = "Building applications with LLMs through composability" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "langchain_core-0.3.75-py3-none-any.whl", hash = "sha256:03ca1fadf955ee3c7d5806a841f4b3a37b816acea5e61a7e6ba1298c05eea7f5"}, - {file = "langchain_core-0.3.75.tar.gz", hash = "sha256:ab0eb95a06ed6043f76162e6086b45037690cb70b7f090bd83b5ebb8a05b70ed"}, + {file = "langchain_core-0.3.76-py3-none-any.whl", hash = "sha256:46e0eb48c7ac532432d51f8ca1ece1804c82afe9ae3dcf027b867edadf82b3ec"}, + {file = "langchain_core-0.3.76.tar.gz", hash = "sha256:71136a122dd1abae2c289c5809d035cf12b5f2bb682d8a4c1078cd94feae7419"}, ] [package.dependencies] @@ -6223,4 +6223,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "d6ba53ce787f6f467a1de5e8df532462b1ec3a4a92c429758f6a0cb3de9fee9d" +content-hash = "f1fe1da29cf6418113ad50f9d97408a1bf4c73d6755d92f549ed7b5fe768f813" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index e5d56a629..14158e389 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -10,7 +10,7 @@ license = "Apache-2.0" python = "<4.0,>=3.12.0" pydantic = "2.11.7" pydantic-settings = "^2.10.1" -langchain-core = "0.3.75" +langchain-core = "0.3.76" langchain-community = "0.3.29" langchain-openai = "0.3.32" langchain-postgres = "0.0.15" From 7aa0cbb73b8bc83bd3f854b9ea29db1443e5804b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 19:50:19 +0000 Subject: [PATCH 018/110] chore(deps): bump langchain-nvidia-ai-endpoints in /services/reis Bumps [langchain-nvidia-ai-endpoints](https://github.com/langchain-ai/langchain-nvidia) from 0.3.17 to 0.3.18. - [Release notes](https://github.com/langchain-ai/langchain-nvidia/releases) - [Commits](https://github.com/langchain-ai/langchain-nvidia/compare/libs/ai-endpoints/v0.3.17...libs/ai-endpoints/v0.3.18) --- updated-dependencies: - dependency-name: langchain-nvidia-ai-endpoints dependency-version: 0.3.18 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 8 ++++---- services/reis/pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 96486bb83..553f644f3 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -1910,14 +1910,14 @@ typing-extensions = ">=4.7" [[package]] name = "langchain-nvidia-ai-endpoints" -version = "0.3.17" +version = "0.3.18" description = "An integration package connecting NVIDIA AI Endpoints and LangChain" optional = false python-versions = "<4.0,>=3.9" groups = ["main"] files = [ - {file = "langchain_nvidia_ai_endpoints-0.3.17-py3-none-any.whl", hash = "sha256:90ad6e12e3ab96eb3b7074f61b7a69e43691d1d55833b1af063e1129abc25eea"}, - {file = "langchain_nvidia_ai_endpoints-0.3.17.tar.gz", hash = "sha256:fafb56cc71401256a803a1a59a5c436c880532219eecaa2e63d716cf0af51801"}, + {file = "langchain_nvidia_ai_endpoints-0.3.18-py3-none-any.whl", hash = "sha256:899b5f32d880543bd20e8d011cadcb98c804d9480938c4a8e3397c3215304c76"}, + {file = "langchain_nvidia_ai_endpoints-0.3.18.tar.gz", hash = "sha256:798d219a3d5a9cffb87a1907d9d0fb707ec93da8f44adb74198dd4af445a532f"}, ] [package.dependencies] @@ -6223,4 +6223,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "f1fe1da29cf6418113ad50f9d97408a1bf4c73d6755d92f549ed7b5fe768f813" +content-hash = "887f1d8bd8dfb584d5ac013eae6533681e48fcc330cce4c09dfcb2d886618be2" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index 14158e389..b71fdbad1 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -27,7 +27,7 @@ prometheus-fastapi-instrumentator = "^7.0.0" fastmcp = "^2.12.2" langchain-ollama = "^0.3.7" langchain-aws = "^0.2.31" -langchain-nvidia-ai-endpoints = "^0.3.17" +langchain-nvidia-ai-endpoints = "^0.3.18" [tool.poetry.group.dev.dependencies] ruff = "0.13.0" From afa4fa61176b982c375456b1eb62cbfb7ddf219f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 20:04:31 +0000 Subject: [PATCH 019/110] chore(deps): bump psycopg from 3.2.9 to 3.2.10 in /services/reis Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.2.9 to 3.2.10. - [Changelog](https://github.com/psycopg/psycopg/blob/master/docs/news.rst) - [Commits](https://github.com/psycopg/psycopg/compare/3.2.9...3.2.10) --- updated-dependencies: - dependency-name: psycopg dependency-version: 3.2.10 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 143 +++++++++++++++++------------------ services/reis/pyproject.toml | 2 +- 2 files changed, 71 insertions(+), 74 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 553f644f3..b178f12bc 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -3569,24 +3569,24 @@ test = ["pytest", "pytest-xdist", "setuptools"] [[package]] name = "psycopg" -version = "3.2.9" +version = "3.2.10" description = "PostgreSQL database adapter for Python" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "psycopg-3.2.9-py3-none-any.whl", hash = "sha256:01a8dadccdaac2123c916208c96e06631641c0566b22005493f09663c7a8d3b6"}, - {file = "psycopg-3.2.9.tar.gz", hash = "sha256:2fbb46fcd17bc81f993f28c47f1ebea38d66ae97cc2dbc3cad73b37cefbff700"}, + {file = "psycopg-3.2.10-py3-none-any.whl", hash = "sha256:ab5caf09a9ec42e314a21f5216dbcceac528e0e05142e42eea83a3b28b320ac3"}, + {file = "psycopg-3.2.10.tar.gz", hash = "sha256:0bce99269d16ed18401683a8569b2c5abd94f72f8364856d56c0389bcd50972a"}, ] [package.dependencies] -psycopg-binary = {version = "3.2.9", optional = true, markers = "implementation_name != \"pypy\" and extra == \"binary\""} +psycopg-binary = {version = "3.2.10", optional = true, markers = "implementation_name != \"pypy\" and extra == \"binary\""} typing-extensions = {version = ">=4.6", markers = "python_version < \"3.13\""} tzdata = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] -binary = ["psycopg-binary (==3.2.9) ; implementation_name != \"pypy\""] -c = ["psycopg-c (==3.2.9) ; implementation_name != \"pypy\""] +binary = ["psycopg-binary (==3.2.10) ; implementation_name != \"pypy\""] +c = ["psycopg-c (==3.2.10) ; implementation_name != \"pypy\""] dev = ["ast-comments (>=1.1.2)", "black (>=24.1.0)", "codespell (>=2.2)", "dnspython (>=2.1)", "flake8 (>=4.0)", "isort-psycopg", "isort[colors] (>=6.0)", "mypy (>=1.14)", "pre-commit (>=4.0.1)", "types-setuptools (>=57.4)", "types-shapely (>=2.0)", "wheel (>=0.37)"] docs = ["Sphinx (>=5.0)", "furo (==2022.6.21)", "sphinx-autobuild (>=2021.3.14)", "sphinx-autodoc-typehints (>=1.12)"] pool = ["psycopg-pool"] @@ -3594,78 +3594,75 @@ test = ["anyio (>=4.0)", "mypy (>=1.14)", "pproxy (>=2.7)", "pytest (>=6.2.5)", [[package]] name = "psycopg-binary" -version = "3.2.9" +version = "3.2.10" description = "PostgreSQL database adapter for Python -- C optimisation distribution" optional = false python-versions = ">=3.8" groups = ["main"] markers = "implementation_name != \"pypy\"" files = [ - {file = "psycopg_binary-3.2.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:528239bbf55728ba0eacbd20632342867590273a9bacedac7538ebff890f1093"}, - {file = "psycopg_binary-3.2.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4978c01ca4c208c9d6376bd585e2c0771986b76ff7ea518f6d2b51faece75e8"}, - {file = "psycopg_binary-3.2.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ed2bab85b505d13e66a914d0f8cdfa9475c16d3491cf81394e0748b77729af2"}, - {file = "psycopg_binary-3.2.9-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:799fa1179ab8a58d1557a95df28b492874c8f4135101b55133ec9c55fc9ae9d7"}, - {file = "psycopg_binary-3.2.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb37ac3955d19e4996c3534abfa4f23181333974963826db9e0f00731274b695"}, - {file = "psycopg_binary-3.2.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:001e986656f7e06c273dd4104e27f4b4e0614092e544d950c7c938d822b1a894"}, - {file = "psycopg_binary-3.2.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fa5c80d8b4cbf23f338db88a7251cef8bb4b68e0f91cf8b6ddfa93884fdbb0c1"}, - {file = "psycopg_binary-3.2.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:39a127e0cf9b55bd4734a8008adf3e01d1fd1cb36339c6a9e2b2cbb6007c50ee"}, - {file = "psycopg_binary-3.2.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fb7599e436b586e265bea956751453ad32eb98be6a6e694252f4691c31b16edb"}, - {file = "psycopg_binary-3.2.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5d2c9fe14fe42b3575a0b4e09b081713e83b762c8dc38a3771dd3265f8f110e7"}, - {file = "psycopg_binary-3.2.9-cp310-cp310-win_amd64.whl", hash = "sha256:7e4660fad2807612bb200de7262c88773c3483e85d981324b3c647176e41fdc8"}, - {file = "psycopg_binary-3.2.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2504e9fd94eabe545d20cddcc2ff0da86ee55d76329e1ab92ecfcc6c0a8156c4"}, - {file = "psycopg_binary-3.2.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:093a0c079dd6228a7f3c3d82b906b41964eaa062a9a8c19f45ab4984bf4e872b"}, - {file = "psycopg_binary-3.2.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:387c87b51d72442708e7a853e7e7642717e704d59571da2f3b29e748be58c78a"}, - {file = "psycopg_binary-3.2.9-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9ac10a2ebe93a102a326415b330fff7512f01a9401406896e78a81d75d6eddc"}, - {file = "psycopg_binary-3.2.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72fdbda5b4c2a6a72320857ef503a6589f56d46821592d4377c8c8604810342b"}, - {file = "psycopg_binary-3.2.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f34e88940833d46108f949fdc1fcfb74d6b5ae076550cd67ab59ef47555dba95"}, - {file = "psycopg_binary-3.2.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a3e0f89fe35cb03ff1646ab663dabf496477bab2a072315192dbaa6928862891"}, - {file = "psycopg_binary-3.2.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6afb3e62f2a3456f2180a4eef6b03177788df7ce938036ff7f09b696d418d186"}, - {file = "psycopg_binary-3.2.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:cc19ed5c7afca3f6b298bfc35a6baa27adb2019670d15c32d0bb8f780f7d560d"}, - {file = "psycopg_binary-3.2.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bc75f63653ce4ec764c8f8c8b0ad9423e23021e1c34a84eb5f4ecac8538a4a4a"}, - {file = "psycopg_binary-3.2.9-cp311-cp311-win_amd64.whl", hash = "sha256:3db3ba3c470801e94836ad78bf11fd5fab22e71b0c77343a1ee95d693879937a"}, - {file = "psycopg_binary-3.2.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:be7d650a434921a6b1ebe3fff324dbc2364393eb29d7672e638ce3e21076974e"}, - {file = "psycopg_binary-3.2.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6a76b4722a529390683c0304501f238b365a46b1e5fb6b7249dbc0ad6fea51a0"}, - {file = "psycopg_binary-3.2.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96a551e4683f1c307cfc3d9a05fec62c00a7264f320c9962a67a543e3ce0d8ff"}, - {file = "psycopg_binary-3.2.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61d0a6ceed8f08c75a395bc28cb648a81cf8dee75ba4650093ad1a24a51c8724"}, - {file = "psycopg_binary-3.2.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad280bbd409bf598683dda82232f5215cfc5f2b1bf0854e409b4d0c44a113b1d"}, - {file = "psycopg_binary-3.2.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76eddaf7fef1d0994e3d536ad48aa75034663d3a07f6f7e3e601105ae73aeff6"}, - {file = "psycopg_binary-3.2.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:52e239cd66c4158e412318fbe028cd94b0ef21b0707f56dcb4bdc250ee58fd40"}, - {file = "psycopg_binary-3.2.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:08bf9d5eabba160dd4f6ad247cf12f229cc19d2458511cab2eb9647f42fa6795"}, - {file = "psycopg_binary-3.2.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1b2cf018168cad87580e67bdde38ff5e51511112f1ce6ce9a8336871f465c19a"}, - {file = "psycopg_binary-3.2.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:14f64d1ac6942ff089fc7e926440f7a5ced062e2ed0949d7d2d680dc5c00e2d4"}, - {file = "psycopg_binary-3.2.9-cp312-cp312-win_amd64.whl", hash = "sha256:7a838852e5afb6b4126f93eb409516a8c02a49b788f4df8b6469a40c2157fa21"}, - {file = "psycopg_binary-3.2.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:98bbe35b5ad24a782c7bf267596638d78aa0e87abc7837bdac5b2a2ab954179e"}, - {file = "psycopg_binary-3.2.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:72691a1615ebb42da8b636c5ca9f2b71f266be9e172f66209a361c175b7842c5"}, - {file = "psycopg_binary-3.2.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25ab464bfba8c401f5536d5aa95f0ca1dd8257b5202eede04019b4415f491351"}, - {file = "psycopg_binary-3.2.9-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e8aeefebe752f46e3c4b769e53f1d4ad71208fe1150975ef7662c22cca80fab"}, - {file = "psycopg_binary-3.2.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7e4e4dd177a8665c9ce86bc9caae2ab3aa9360b7ce7ec01827ea1baea9ff748"}, - {file = "psycopg_binary-3.2.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fc2915949e5c1ea27a851f7a472a7da7d0a40d679f0a31e42f1022f3c562e87"}, - {file = "psycopg_binary-3.2.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a1fa38a4687b14f517f049477178093c39c2a10fdcced21116f47c017516498f"}, - {file = "psycopg_binary-3.2.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5be8292d07a3ab828dc95b5ee6b69ca0a5b2e579a577b39671f4f5b47116dfd2"}, - {file = "psycopg_binary-3.2.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:778588ca9897b6c6bab39b0d3034efff4c5438f5e3bd52fda3914175498202f9"}, - {file = "psycopg_binary-3.2.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f0d5b3af045a187aedbd7ed5fc513bd933a97aaff78e61c3745b330792c4345b"}, - {file = "psycopg_binary-3.2.9-cp313-cp313-win_amd64.whl", hash = "sha256:2290bc146a1b6a9730350f695e8b670e1d1feb8446597bed0bbe7c3c30e0abcb"}, - {file = "psycopg_binary-3.2.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df22ec17390ec5ccb38d211fb251d138d37a43344492858cea24de8efa15003"}, - {file = "psycopg_binary-3.2.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eac3a6e926421e976c1c2653624e1294f162dc67ac55f9addbe8f7b8d08ce603"}, - {file = "psycopg_binary-3.2.9-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf789be42aea5752ee396d58de0538d5fcb76795c85fb03ab23620293fb81b6f"}, - {file = "psycopg_binary-3.2.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0f05b9dafa5670a7503abc715af081dbbb176a8e6770de77bccaeb9024206c5"}, - {file = "psycopg_binary-3.2.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2d7a6646d41228e9049978be1f3f838b557a1bde500b919906d54c4390f5086"}, - {file = "psycopg_binary-3.2.9-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a4d76e28df27ce25dc19583407f5c6c6c2ba33b443329331ab29b6ef94c8736d"}, - {file = "psycopg_binary-3.2.9-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:418f52b77b715b42e8ec43ee61ca74abc6765a20db11e8576e7f6586488a266f"}, - {file = "psycopg_binary-3.2.9-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:1f1736d5b21f69feefeef8a75e8d3bf1f0a1e17c165a7488c3111af9d6936e91"}, - {file = "psycopg_binary-3.2.9-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5918c0fab50df764812f3ca287f0d716c5c10bedde93d4da2cefc9d40d03f3aa"}, - {file = "psycopg_binary-3.2.9-cp38-cp38-win_amd64.whl", hash = "sha256:7b617b81f08ad8def5edd110de44fd6d326f969240cc940c6f6b3ef21fe9c59f"}, - {file = "psycopg_binary-3.2.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587a3f19954d687a14e0c8202628844db692dbf00bba0e6d006659bf1ca91cbe"}, - {file = "psycopg_binary-3.2.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:791759138380df21d356ff991265fde7fe5997b0c924a502847a9f9141e68786"}, - {file = "psycopg_binary-3.2.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95315b8c8ddfa2fdcb7fe3ddea8a595c1364524f512160c604e3be368be9dd07"}, - {file = "psycopg_binary-3.2.9-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18ac08475c9b971237fcc395b0a6ee4e8580bb5cf6247bc9b8461644bef5d9f4"}, - {file = "psycopg_binary-3.2.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac2c04b6345e215e65ca6aef5c05cc689a960b16674eaa1f90a8f86dfaee8c04"}, - {file = "psycopg_binary-3.2.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1ab25e3134774f1e476d4bb9050cdec25f10802e63e92153906ae934578734"}, - {file = "psycopg_binary-3.2.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4bfec4a73e8447d8fe8854886ffa78df2b1c279a7592241c2eb393d4499a17e2"}, - {file = "psycopg_binary-3.2.9-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:166acc57af5d2ff0c0c342aed02e69a0cd5ff216cae8820c1059a6f3b7cf5f78"}, - {file = "psycopg_binary-3.2.9-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:413f9e46259fe26d99461af8e1a2b4795a4e27cc8ac6f7919ec19bcee8945074"}, - {file = "psycopg_binary-3.2.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:354dea21137a316b6868ee41c2ae7cce001e104760cf4eab3ec85627aed9b6cd"}, - {file = "psycopg_binary-3.2.9-cp39-cp39-win_amd64.whl", hash = "sha256:24ddb03c1ccfe12d000d950c9aba93a7297993c4e3905d9f2c9795bb0764d523"}, + {file = "psycopg_binary-3.2.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:037dc92fc7d3f2adae7680e17216934c15b919d6528b908ac2eb52aecc0addcf"}, + {file = "psycopg_binary-3.2.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84f7e8c5e5031db342ae697c2e8fb48cd708ba56990573b33e53ce626445371d"}, + {file = "psycopg_binary-3.2.10-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a5a81104d88780018005fe17c37fa55b4afbb6dd3c205963cc56c025d5f1cc32"}, + {file = "psycopg_binary-3.2.10-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:0c23e88e048bbc33f32f5a35981707c9418723d469552dd5ac4e956366e58492"}, + {file = "psycopg_binary-3.2.10-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9c9f2728488ac5848acdbf14bb4fde50f8ba783cbf3c19e9abd506741389fa7f"}, + {file = "psycopg_binary-3.2.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ab1c6d761c4ee581016823dcc02f29b16ad69177fcbba88a9074c924fc31813e"}, + {file = "psycopg_binary-3.2.10-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a024b3ee539a475cbc59df877c8ecdd6f8552a1b522b69196935bc26dc6152fb"}, + {file = "psycopg_binary-3.2.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:50130c0d1a2a01ec3d41631df86b6c1646c76718be000600a399dc1aad80b813"}, + {file = "psycopg_binary-3.2.10-cp310-cp310-win_amd64.whl", hash = "sha256:7fa1626225a162924d2da0ff4ef77869f7a8501d320355d2732be5bf2dda6138"}, + {file = "psycopg_binary-3.2.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db0eb06a19e4c64a08db0db80875ede44939af6a2afc281762c338fad5d6e547"}, + {file = "psycopg_binary-3.2.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d922fdd49ed17c558b6b2f9ae2054c3d0cced2a34e079ce5a41c86904d0203f7"}, + {file = "psycopg_binary-3.2.10-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d557a94cd6d2e775b3af6cc0bd0ff0d9d641820b5cc3060ccf1f5ca2bf971217"}, + {file = "psycopg_binary-3.2.10-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:29b6bb87959515bc8b6abef10d8d23a9a681f03e48e9f0c8adb4b9fb7fa73f11"}, + {file = "psycopg_binary-3.2.10-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1b29285474e3339d0840e1b5079fdb0481914108f92ec62de0c87ae333c60b24"}, + {file = "psycopg_binary-3.2.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:62590dd113d10cd9c08251cb80b32e2e8aaf01ece04a700322e776b1d216959f"}, + {file = "psycopg_binary-3.2.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:764a5b9b40ad371c55dfdf95374d89e44a82fd62272d4fceebea0adb8930e2fb"}, + {file = "psycopg_binary-3.2.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bd3676a04970cf825d2c771b0c147f91182c5a3653e0dbe958e12383668d0f79"}, + {file = "psycopg_binary-3.2.10-cp311-cp311-win_amd64.whl", hash = "sha256:646048f46192c8d23786cc6ef19f35b7488d4110396391e407eca695fdfe9dcd"}, + {file = "psycopg_binary-3.2.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1dee2f4d2adc9adacbfecf8254bd82f6ac95cff707e1b9b99aa721cd1ef16b47"}, + {file = "psycopg_binary-3.2.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8b45e65383da9c4a42a56f817973e521e893f4faae897fe9f1a971f9fe799742"}, + {file = "psycopg_binary-3.2.10-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:484d2b1659afe0f8f1cef5ea960bb640e96fa864faf917086f9f833f5c7a8034"}, + {file = "psycopg_binary-3.2.10-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:3bb4046973264ebc8cb7e20a83882d68577c1f26a6f8ad4fe52e4468cd9a8eee"}, + {file = "psycopg_binary-3.2.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:14bcbcac0cab465d88b2581e43ec01af4b01c9833e663f1352e05cb41be19e44"}, + {file = "psycopg_binary-3.2.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:70bb7f665587dfd79e69f48b34efe226149454d7aab138ed22d5431d703de2f6"}, + {file = "psycopg_binary-3.2.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d2fe9eaa367f6171ab1a21a7dcb335eb2398be7f8bb7e04a20e2260aedc6f782"}, + {file = "psycopg_binary-3.2.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:299834cce3eec0c48aae5a5207fc8f0c558fd65f2ceab1a36693329847da956b"}, + {file = "psycopg_binary-3.2.10-cp312-cp312-win_amd64.whl", hash = "sha256:e037aac8dc894d147ef33056fc826ee5072977107a3fdf06122224353a057598"}, + {file = "psycopg_binary-3.2.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:55b14f2402be027fe1568bc6c4d75ac34628ff5442a70f74137dadf99f738e3b"}, + {file = "psycopg_binary-3.2.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:43d803fb4e108a67c78ba58f3e6855437ca25d56504cae7ebbfbd8fce9b59247"}, + {file = "psycopg_binary-3.2.10-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:470594d303928ab72a1ffd179c9c7bde9d00f76711d6b0c28f8a46ddf56d9807"}, + {file = "psycopg_binary-3.2.10-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:a1d4e4d309049e3cb61269652a3ca56cb598da30ecd7eb8cea561e0d18bc1a43"}, + {file = "psycopg_binary-3.2.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a92ff1c2cd79b3966d6a87e26ceb222ecd5581b5ae4b58961f126af806a861ed"}, + {file = "psycopg_binary-3.2.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac0365398947879c9827b319217096be727da16c94422e0eb3cf98c930643162"}, + {file = "psycopg_binary-3.2.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:42ee399c2613b470a87084ed79b06d9d277f19b0457c10e03a4aef7059097abc"}, + {file = "psycopg_binary-3.2.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2028073fc12cd70ba003309d1439c0c4afab4a7eee7653b8c91213064fffe12b"}, + {file = "psycopg_binary-3.2.10-cp313-cp313-win_amd64.whl", hash = "sha256:8390db6d2010ffcaf7f2b42339a2da620a7125d37029c1f9b72dfb04a8e7be6f"}, + {file = "psycopg_binary-3.2.10-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b34c278a58aa79562afe7f45e0455b1f4cad5974fc3d5674cc5f1f9f57e97fc5"}, + {file = "psycopg_binary-3.2.10-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:810f65b9ef1fe9dddb5c05937884ea9563aaf4e1a2c3d138205231ed5f439511"}, + {file = "psycopg_binary-3.2.10-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8923487c3898c65e1450847e15d734bb2e6adbd2e79d2d1dd5ad829a1306bdc0"}, + {file = "psycopg_binary-3.2.10-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:7950ff79df7a453ac8a7d7a74694055b6c15905b0a2b6e3c99eb59c51a3f9bf7"}, + {file = "psycopg_binary-3.2.10-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0c2b95e83fda70ed2b0b4fadd8538572e4a4d987b721823981862d1ab56cc760"}, + {file = "psycopg_binary-3.2.10-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20384985fbc650c09a547a13c6d7f91bb42020d38ceafd2b68b7fc4a48a1f160"}, + {file = "psycopg_binary-3.2.10-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:1f6982609b8ff8fcd67299b67cd5787da1876f3bb28fedd547262cfa8ddedf94"}, + {file = "psycopg_binary-3.2.10-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bf30dcf6aaaa8d4779a20d2158bdf81cc8e84ce8eee595d748a7671c70c7b890"}, + {file = "psycopg_binary-3.2.10-cp314-cp314-win_amd64.whl", hash = "sha256:d5c6a66a76022af41970bf19f51bc6bf87bd10165783dd1d40484bfd87d6b382"}, + {file = "psycopg_binary-3.2.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:901729188b3fd5625970650ca1167786847dee0b92930c2858724d1a5e25dee1"}, + {file = "psycopg_binary-3.2.10-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7d05174276bb403b8a57e01b857d96b0ac2a6879c5ce06a5cac2d1115763081"}, + {file = "psycopg_binary-3.2.10-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:37b42b2f5f58df1f07a5df1b0c2bcc9bd3b9c105e2e988923bfa47aa4ae967da"}, + {file = "psycopg_binary-3.2.10-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6fe450a98a0788b721b1b8302f0ba9be6eca82faf74bf7a86d794cd6484c7e27"}, + {file = "psycopg_binary-3.2.10-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a28f24a7b68456bd31209b027a5b04304d37eb1d622ef847bf8c47933218a738"}, + {file = "psycopg_binary-3.2.10-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5369202e0e764193eac311b5a337d8cd58b1e23b822ddb7a559ed9f683d97623"}, + {file = "psycopg_binary-3.2.10-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:8f4ae059c6c9e491cdc3f39f9fc4f09373ef281c6cc381499269dcff21abafc9"}, + {file = "psycopg_binary-3.2.10-cp38-cp38-win_amd64.whl", hash = "sha256:3e115930af2f38f4bbb5f1b61b598ceb802f091c1592c0fe0571c796b714b89a"}, + {file = "psycopg_binary-3.2.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0738320a8d405f98743227ff70ed8fac9670870289435f4861dc640cef4a61d3"}, + {file = "psycopg_binary-3.2.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:89440355d1b163b11dc661ae64a5667578aab1b80bbf71ced90693d88e9863e1"}, + {file = "psycopg_binary-3.2.10-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3234605839e7d7584bd0a20716395eba34d368a5099dafe7896c943facac98fc"}, + {file = "psycopg_binary-3.2.10-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:725843fd444075cc6c9989f5b25ca83ac68d8d70b58e1f476fbb4096975e43cc"}, + {file = "psycopg_binary-3.2.10-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:447afc326cbc95ed67c0cd27606c0f81fa933b830061e096dbd37e08501cb3de"}, + {file = "psycopg_binary-3.2.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5334a61a00ccb722f0b28789e265c7a273cfd10d5a1ed6bf062686fbb71e7032"}, + {file = "psycopg_binary-3.2.10-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:183a59cbdcd7e156669577fd73a9e917b1ee664e620f1e31ae138d24c7714693"}, + {file = "psycopg_binary-3.2.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8fa2efaf5e2f8c289a185c91c80a624a8f97aa17fbedcbc68f373d089b332afd"}, + {file = "psycopg_binary-3.2.10-cp39-cp39-win_amd64.whl", hash = "sha256:6220d6efd6e2df7b67d70ed60d653106cd3b70c5cb8cbe4e9f0a142a5db14015"}, ] [[package]] @@ -6223,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "887f1d8bd8dfb584d5ac013eae6533681e48fcc330cce4c09dfcb2d886618be2" +content-hash = "5f063d4674f17e9fe26e1ae702071c9592a25bfdfd05459d68f871678d986e52" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index b71fdbad1..c161286d6 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -14,7 +14,7 @@ langchain-core = "0.3.76" langchain-community = "0.3.29" langchain-openai = "0.3.32" langchain-postgres = "0.0.15" -psycopg = {extras = ["binary"], version = "^3.2.9"} +psycopg = {extras = ["binary"], version = "^3.2.10"} fastapi = {extras = ["standard"], version = "0.116.1"} azure-search-documents = "11.5.3" azure-identity = "1.24.0" From 4f262faaf6fffd8e20d2267c40491beffdd53d3f Mon Sep 17 00:00:00 2001 From: Joel Eckhardt <93585271+Johardt@users.noreply.github.com> Date: Thu, 11 Sep 2025 20:38:10 +0200 Subject: [PATCH 020/110] Fix: create user button too small (#459) * refactor: fix typo * fix: too small add user button --- frontend/src/components/Pagination.tsx | 2 +- frontend/src/pages/admin/users/UsersPage.tsx | 8 ++++---- frontend/src/pages/chat/files/Files.tsx | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/Pagination.tsx b/frontend/src/components/Pagination.tsx index 936adb584..24450c700 100644 --- a/frontend/src/components/Pagination.tsx +++ b/frontend/src/components/Pagination.tsx @@ -14,7 +14,7 @@ interface PaginationProps { onPage: (page: number) => void; } -export function Pagingation(props: PaginationProps) { +export function Pagination(props: PaginationProps) { const { onPage, page, pageSize, total } = props; const numberOfPages = Math.ceil(total / pageSize); diff --git a/frontend/src/pages/admin/users/UsersPage.tsx b/frontend/src/pages/admin/users/UsersPage.tsx index 7a59156c9..a81e8a917 100644 --- a/frontend/src/pages/admin/users/UsersPage.tsx +++ b/frontend/src/pages/admin/users/UsersPage.tsx @@ -3,7 +3,7 @@ import { IconPlus } from '@tabler/icons-react'; import { useQuery } from '@tanstack/react-query'; import { useEffect, useState } from 'react'; import { useApi, UserDto, UserGroupDto } from 'src/api'; -import { Page, Pagingation, Search } from 'src/components'; +import { Page, Pagination, Search } from 'src/components'; import { useEventCallback } from 'src/hooks'; import { formatBoolean } from 'src/lib'; import { texts } from 'src/texts'; @@ -62,8 +62,8 @@ export function UsersPage() {
-
@@ -99,7 +99,7 @@ export function UsersPage() { - + diff --git a/frontend/src/pages/chat/files/Files.tsx b/frontend/src/pages/chat/files/Files.tsx index 07d5b5f11..475c02264 100644 --- a/frontend/src/pages/chat/files/Files.tsx +++ b/frontend/src/pages/chat/files/Files.tsx @@ -4,7 +4,7 @@ import { useState } from 'react'; import { useDropzone } from 'react-dropzone'; import { toast } from 'react-toastify'; import { type ExtensionBucketSettingsDto, FileDto, useApi } from 'src/api'; -import { Pagingation } from 'src/components'; +import { Pagination } from 'src/components'; import { useTypedMutationStates } from 'src/hooks'; import { useConversationBucketAvailabilities } from 'src/hooks/api/extensions'; import { buildError } from 'src/lib'; @@ -123,7 +123,7 @@ export function Files({ conversationId, userBucket, configurationId }: FileProps {isDragActive ?

{texts.common.dropZoneDrop}

:

{texts.common.dropZone}

} - + {loadedFiles && loadedFiles.items?.length > 0 ? (
From 4fe16aab70b7bb5c66fd5c6601d40f38a0258d7c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 20:55:11 +0200 Subject: [PATCH 021/110] chore(deps-dev): bump vite from 6.3.5 to 7.1.5 (#448) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.3.5 to 7.1.5. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v7.1.5/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 7.1.5 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 269 +++++++++++++++++++++++++--------------------- 1 file changed, 145 insertions(+), 124 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0d11f36d2..e6d403354 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.0.tgz", - "integrity": "sha512-KxN+zCjOYHGwCl4UCtSfZ6jrq/qi88JDUtiEFk8LELEHq2Egfc/FgW+jItZiOLRuQfb/3xJSgFuNPC9jzggX+A==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", + "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", "cpu": [ "arm" ], @@ -482,9 +482,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.0.tgz", - "integrity": "sha512-yDvqx3lWlcugozax3DItKJI5j05B0d4Kvnjx+5mwiUpWramVvmAByYigMplaoAQ3pvdprGCTCE03eduqE/8mPQ==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", + "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", "cpu": [ "arm64" ], @@ -496,9 +496,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.0.tgz", - "integrity": "sha512-2KOU574vD3gzcPSjxO0eyR5iWlnxxtmW1F5CkNOHmMlueKNCQkxR6+ekgWyVnz6zaZihpUNkGxjsYrkTJKhkaw==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", + "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", "cpu": [ "arm64" ], @@ -510,9 +510,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.0.tgz", - "integrity": "sha512-gE5ACNSxHcEZyP2BA9TuTakfZvULEW4YAOtxl/A/YDbIir/wPKukde0BNPlnBiP88ecaN4BJI2TtAd+HKuZPQQ==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", + "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", "cpu": [ "x64" ], @@ -524,9 +524,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.0.tgz", - "integrity": "sha512-GSxU6r5HnWij7FoSo7cZg3l5GPg4HFLkzsFFh0N/b16q5buW1NAWuCJ+HMtIdUEi6XF0qH+hN0TEd78laRp7Dg==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", + "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", "cpu": [ "arm64" ], @@ -538,9 +538,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.0.tgz", - "integrity": "sha512-KGiGKGDg8qLRyOWmk6IeiHJzsN/OYxO6nSbT0Vj4MwjS2XQy/5emsmtoqLAabqrohbgLWJ5GV3s/ljdrIr8Qjg==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", + "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", "cpu": [ "x64" ], @@ -552,9 +552,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.0.tgz", - "integrity": "sha512-46OzWeqEVQyX3N2/QdiU/CMXYDH/lSHpgfBkuhl3igpZiaB3ZIfSjKuOnybFVBQzjsLwkus2mjaESy8H41SzvA==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", + "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", "cpu": [ "arm" ], @@ -566,9 +566,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.0.tgz", - "integrity": "sha512-lfgW3KtQP4YauqdPpcUZHPcqQXmTmH4nYU0cplNeW583CMkAGjtImw4PKli09NFi2iQgChk4e9erkwlfYem6Lg==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", + "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", "cpu": [ "arm" ], @@ -580,9 +580,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.0.tgz", - "integrity": "sha512-nn8mEyzMbdEJzT7cwxgObuwviMx6kPRxzYiOl6o/o+ChQq23gfdlZcUNnt89lPhhz3BYsZ72rp0rxNqBSfqlqw==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", + "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", "cpu": [ "arm64" ], @@ -594,9 +594,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.0.tgz", - "integrity": "sha512-l+QK99je2zUKGd31Gh+45c4pGDAqZSuWQiuRFCdHYC2CSiO47qUWsCcenrI6p22hvHZrDje9QjwSMAFL3iwXwQ==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", + "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", "cpu": [ "arm64" ], @@ -608,9 +608,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.0.tgz", - "integrity": "sha512-WbnJaxPv1gPIm6S8O/Wg+wfE/OzGSXlBMbOe4ie+zMyykMOeqmgD1BhPxZQuDqwUN+0T/xOFtL2RUWBspnZj3w==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", + "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", "cpu": [ "loong64" ], @@ -621,10 +621,10 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.0.tgz", - "integrity": "sha512-eRDWR5t67/b2g8Q/S8XPi0YdbKcCs4WQ8vklNnUYLaSWF+Cbv2axZsp4jni6/j7eKvMLYCYdcsv8dcU+a6QNFg==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", + "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", "cpu": [ "ppc64" ], @@ -636,9 +636,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.0.tgz", - "integrity": "sha512-TWrZb6GF5jsEKG7T1IHwlLMDRy2f3DPqYldmIhnA2DVqvvhY2Ai184vZGgahRrg8k9UBWoSlHv+suRfTN7Ua4A==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", + "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", "cpu": [ "riscv64" ], @@ -650,9 +650,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.0.tgz", - "integrity": "sha512-ieQljaZKuJpmWvd8gW87ZmSFwid6AxMDk5bhONJ57U8zT77zpZ/TPKkU9HpnnFrM4zsgr4kiGuzbIbZTGi7u9A==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", + "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", "cpu": [ "riscv64" ], @@ -664,9 +664,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.0.tgz", - "integrity": "sha512-/L3pW48SxrWAlVsKCN0dGLB2bi8Nv8pr5S5ocSM+S0XCn5RCVCXqi8GVtHFsOBBCSeR+u9brV2zno5+mg3S4Aw==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", + "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", "cpu": [ "s390x" ], @@ -678,9 +678,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.0.tgz", - "integrity": "sha512-XMLeKjyH8NsEDCRptf6LO8lJk23o9wvB+dJwcXMaH6ZQbbkHu2dbGIUindbMtRN6ux1xKi16iXWu6q9mu7gDhQ==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", + "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", "cpu": [ "x64" ], @@ -692,9 +692,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.0.tgz", - "integrity": "sha512-m/P7LycHZTvSQeXhFmgmdqEiTqSV80zn6xHaQ1JSqwCtD1YGtwEK515Qmy9DcB2HK4dOUVypQxvhVSy06cJPEg==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", + "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", "cpu": [ "x64" ], @@ -705,10 +705,24 @@ "linux" ] }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", + "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.0.tgz", - "integrity": "sha512-4yodtcOrFHpbomJGVEqZ8fzD4kfBeCbpsUy5Pqk4RluXOdsWdjLnjhiKy2w3qzcASWd04fp52Xz7JKarVJ5BTg==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", + "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", "cpu": [ "arm64" ], @@ -720,9 +734,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.0.tgz", - "integrity": "sha512-tmazCrAsKzdkXssEc65zIE1oC6xPHwfy9d5Ta25SRCDOZS+I6RypVVShWALNuU9bxIfGA0aqrmzlzoM5wO5SPQ==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", + "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", "cpu": [ "ia32" ], @@ -734,9 +748,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.0.tgz", - "integrity": "sha512-h1J+Yzjo/X+0EAvR2kIXJDuTuyT7drc+t2ALY0nIcGPbTatNOf0VWdhEA2Z4AAjv6X1NJV7SYo5oCTYRJhSlVA==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", + "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", "cpu": [ "x64" ], @@ -789,9 +803,9 @@ "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, @@ -2117,9 +2131,9 @@ } }, "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -2137,7 +2151,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -2207,13 +2221,13 @@ "license": "MIT" }, "node_modules/rollup": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.0.tgz", - "integrity": "sha512-HqMFpUbWlf/tvcxBFNKnJyzc7Lk+XO3FGc3pbNBLqEbOz0gPLRgcrlS3UF4MfUrVlstOaP/q0kM6GVvi+LrLRg==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", + "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.7" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -2223,26 +2237,27 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.41.0", - "@rollup/rollup-android-arm64": "4.41.0", - "@rollup/rollup-darwin-arm64": "4.41.0", - "@rollup/rollup-darwin-x64": "4.41.0", - "@rollup/rollup-freebsd-arm64": "4.41.0", - "@rollup/rollup-freebsd-x64": "4.41.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.41.0", - "@rollup/rollup-linux-arm-musleabihf": "4.41.0", - "@rollup/rollup-linux-arm64-gnu": "4.41.0", - "@rollup/rollup-linux-arm64-musl": "4.41.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.41.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.41.0", - "@rollup/rollup-linux-riscv64-gnu": "4.41.0", - "@rollup/rollup-linux-riscv64-musl": "4.41.0", - "@rollup/rollup-linux-s390x-gnu": "4.41.0", - "@rollup/rollup-linux-x64-gnu": "4.41.0", - "@rollup/rollup-linux-x64-musl": "4.41.0", - "@rollup/rollup-win32-arm64-msvc": "4.41.0", - "@rollup/rollup-win32-ia32-msvc": "4.41.0", - "@rollup/rollup-win32-x64-msvc": "4.41.0", + "@rollup/rollup-android-arm-eabi": "4.50.1", + "@rollup/rollup-android-arm64": "4.50.1", + "@rollup/rollup-darwin-arm64": "4.50.1", + "@rollup/rollup-darwin-x64": "4.50.1", + "@rollup/rollup-freebsd-arm64": "4.50.1", + "@rollup/rollup-freebsd-x64": "4.50.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", + "@rollup/rollup-linux-arm-musleabihf": "4.50.1", + "@rollup/rollup-linux-arm64-gnu": "4.50.1", + "@rollup/rollup-linux-arm64-musl": "4.50.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", + "@rollup/rollup-linux-ppc64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-musl": "4.50.1", + "@rollup/rollup-linux-s390x-gnu": "4.50.1", + "@rollup/rollup-linux-x64-gnu": "4.50.1", + "@rollup/rollup-linux-x64-musl": "4.50.1", + "@rollup/rollup-openharmony-arm64": "4.50.1", + "@rollup/rollup-win32-arm64-msvc": "4.50.1", + "@rollup/rollup-win32-ia32-msvc": "4.50.1", + "@rollup/rollup-win32-x64-msvc": "4.50.1", "fsevents": "~2.3.2" } }, @@ -2419,14 +2434,14 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -2436,11 +2451,14 @@ } }, "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", - "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -2451,9 +2469,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { @@ -2534,24 +2552,24 @@ } }, "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz", + "integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -2560,14 +2578,14 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", - "less": "*", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" @@ -2632,11 +2650,14 @@ } }, "node_modules/vite/node_modules/fdir": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", - "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -2647,9 +2668,9 @@ } }, "node_modules/vite/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { From 403b27d1c1efc851e0c427f3ace99e373d4680ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 18:56:19 +0000 Subject: [PATCH 022/110] chore(deps): bump tmp and @openapitools/openapi-generator-cli Removes [tmp](https://github.com/raszi/node-tmp). It's no longer used after updating ancestor dependency [@openapitools/openapi-generator-cli](https://github.com/OpenAPITools/openapi-generator-cli). These dependencies need to be updated together. Removes `tmp` Updates `@openapitools/openapi-generator-cli` from 2.21.0 to 2.23.1 - [Release notes](https://github.com/OpenAPITools/openapi-generator-cli/releases) - [Changelog](https://github.com/OpenAPITools/openapi-generator-cli/blob/master/.releaserc) - [Commits](https://github.com/OpenAPITools/openapi-generator-cli/compare/v2.21.0...v2.23.1) --- updated-dependencies: - dependency-name: tmp dependency-version: dependency-type: indirect - dependency-name: "@openapitools/openapi-generator-cli" dependency-version: 2.23.1 dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- frontend/package-lock.json | 543 +++++++++++++++---------------------- frontend/package.json | 2 +- 2 files changed, 221 insertions(+), 324 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index e0680faa5..d8617d07a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -58,7 +58,7 @@ "@eslint/eslintrc": "3.3.1", "@eslint/js": "9.30.1", "@faker-js/faker": "9.8.0", - "@openapitools/openapi-generator-cli": "2.21.0", + "@openapitools/openapi-generator-cli": "2.23.1", "@tailwindcss/typography": "0.5.16", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.6.3", @@ -642,6 +642,17 @@ "node": ">=18" } }, + "node_modules/@borewit/text-codec": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz", + "integrity": "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/@bundled-es-modules/cookie": { "version": "2.0.1", "dev": true, @@ -1180,6 +1191,28 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.1.tgz", + "integrity": "sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.0", + "iconv-lite": "^0.6.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/@inquirer/figures": { "version": "1.0.11", "dev": true, @@ -1380,6 +1413,8 @@ }, "node_modules/@lukeed/csprng": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", "dev": true, "license": "MIT", "engines": { @@ -1672,7 +1707,9 @@ } }, "node_modules/@nestjs/axios": { - "version": "4.0.0", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-4.0.1.tgz", + "integrity": "sha512-68pFJgu+/AZbWkGu65Z3r55bTsCPlgyKaV4BSG8yUAD72q1PPuyVRgUwFv6BxdnibTUHlyxm06FmYWNC+bjN7A==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1682,9 +1719,9 @@ } }, "node_modules/@nestjs/common": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.3.tgz", - "integrity": "sha512-ogEK+GriWodIwCw6buQ1rpcH4Kx+G7YQ9EwuPySI3rS05pSdtQ++UhucjusSI9apNidv+QURBztJkRecwwJQXg==", + "version": "11.1.6", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.6.tgz", + "integrity": "sha512-krKwLLcFmeuKDqngG2N/RuZHCs2ycsKcxWIDgcm7i1lf3sQ0iG03ci+DsP/r3FcT/eJDFsIHnKtNta2LIi7PzQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1714,9 +1751,9 @@ } }, "node_modules/@nestjs/core": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.3.tgz", - "integrity": "sha512-5lTni0TCh8x7bXETRD57pQFnKnEg1T6M+VLE7wAmyQRIecKQU+2inRGZD+A4v2DC1I04eA0WffP0GKLxjOKlzw==", + "version": "11.1.6", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.6.tgz", + "integrity": "sha512-siWX7UDgErisW18VTeJA+x+/tpNZrJewjTBsRPF3JVxuWRuAB1kRoiJcxHgln8Lb5UY9NdvklITR84DUEXD0Cg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1846,27 +1883,26 @@ "license": "MIT" }, "node_modules/@openapitools/openapi-generator-cli": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.21.0.tgz", - "integrity": "sha512-NdDvCd7hya+UucxH7G94Jf6tmA6641I4CF/T3xtFhM+NQQNWAP5tpiOBN4Ub9ocU6cCgQgXdWl4EpwlEwW7JDQ==", + "version": "2.23.1", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.23.1.tgz", + "integrity": "sha512-Kd5EZqzbcIXf6KRlpUrheHMzQNRHsJWzAGrm4ncWCNhnQl+Mh6TsFcqq+hIetgiFCknWBH6cZ2f37SxPxaon4w==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@nestjs/axios": "4.0.0", - "@nestjs/common": "11.1.3", - "@nestjs/core": "11.1.3", + "@nestjs/axios": "4.0.1", + "@nestjs/common": "11.1.6", + "@nestjs/core": "11.1.6", "@nuxtjs/opencollective": "0.3.2", - "axios": "1.10.0", + "axios": "1.11.0", "chalk": "4.1.2", "commander": "8.3.0", "compare-versions": "4.1.4", - "concurrently": "6.5.1", + "concurrently": "9.2.1", "console.table": "0.10.0", - "fs-extra": "11.3.0", + "fs-extra": "11.3.1", "glob": "11.0.3", - "inquirer": "8.2.6", - "lodash": "4.17.21", + "inquirer": "8.2.7", "proxy-agent": "6.5.0", "reflect-metadata": "0.2.2", "rxjs": "7.8.2", @@ -4125,6 +4161,8 @@ }, "node_modules/asynckit": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, "license": "MIT" }, @@ -4150,14 +4188,14 @@ } }, "node_modules/axios": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", - "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", "dev": true, "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, @@ -4176,6 +4214,8 @@ }, "node_modules/base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true, "funding": [ { @@ -4203,6 +4243,8 @@ }, "node_modules/bl": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "license": "MIT", "dependencies": { @@ -4264,6 +4306,8 @@ }, "node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -4448,7 +4492,9 @@ } }, "node_modules/chardet": { - "version": "0.7.0", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz", + "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==", "dev": true, "license": "MIT" }, @@ -4479,6 +4525,8 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "license": "MIT", "dependencies": { @@ -4490,6 +4538,8 @@ }, "node_modules/cli-spinners": { "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "license": "MIT", "engines": { @@ -4501,6 +4551,8 @@ }, "node_modules/cli-width": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, "license": "ISC", "engines": { @@ -4508,17 +4560,24 @@ } }, "node_modules/cliui": { - "version": "7.0.4", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -4566,6 +4625,8 @@ }, "node_modules/combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "license": "MIT", "dependencies": { @@ -4601,54 +4662,34 @@ "license": "MIT" }, "node_modules/concurrently": { - "version": "6.5.1", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", + "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "date-fns": "^2.16.1", - "lodash": "^4.17.21", - "rxjs": "^6.6.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^16.2.0" + "chalk": "4.1.2", + "rxjs": "7.8.2", + "shell-quote": "1.8.3", + "supports-color": "8.1.1", + "tree-kill": "1.2.2", + "yargs": "17.7.2" }, "bin": { - "concurrently": "bin/concurrently.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/concurrently/node_modules/date-fns": { - "version": "2.30.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.21.0" + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" }, "engines": { - "node": ">=0.11" + "node": ">=18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/concurrently/node_modules/rxjs": { - "version": "6.6.7", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" } }, "node_modules/concurrently/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -4661,11 +4702,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/concurrently/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, "node_modules/consola": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", @@ -5070,6 +5106,8 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", "engines": { @@ -5919,30 +5957,6 @@ "version": "3.0.2", "license": "MIT" }, - "node_modules/external-editor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "license": "MIT" @@ -6053,6 +6067,8 @@ }, "node_modules/figures": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "license": "MIT", "dependencies": { @@ -6067,6 +6083,8 @@ }, "node_modules/figures/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", "engines": { @@ -6167,7 +6185,9 @@ "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.9", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "dev": true, "funding": [ { @@ -6231,25 +6251,6 @@ "node": ">= 6" } }, - "node_modules/form-data/node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/form-data/node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/format": { "version": "0.2.2", "engines": { @@ -6273,7 +6274,9 @@ } }, "node_modules/fs-extra": { - "version": "11.3.0", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz", + "integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==", "dev": true, "license": "MIT", "dependencies": { @@ -6986,6 +6989,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, "funding": [ { @@ -7044,6 +7049,8 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, "license": "ISC" }, @@ -7052,15 +7059,17 @@ "license": "MIT" }, "node_modules/inquirer": { - "version": "8.2.6", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.7.tgz", + "integrity": "sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==", "dev": true, "license": "MIT", "dependencies": { + "@inquirer/external-editor": "^1.0.0", "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", "cli-cursor": "^3.1.0", "cli-width": "^3.0.0", - "external-editor": "^3.0.3", "figures": "^3.0.0", "lodash": "^4.17.21", "mute-stream": "0.0.8", @@ -7328,6 +7337,8 @@ }, "node_modules/is-interactive": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "license": "MIT", "engines": { @@ -7489,6 +7500,8 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", "engines": { @@ -7596,6 +7609,8 @@ }, "node_modules/iterare": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", "dev": true, "license": "ISC", "engines": { @@ -7775,7 +7790,9 @@ } }, "node_modules/jsonfile": { - "version": "6.1.0", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { @@ -8209,6 +8226,8 @@ }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", "dependencies": { @@ -9170,8 +9189,33 @@ "node": ">=8.6" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", "engines": { @@ -9325,21 +9369,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/msw/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/msw/node_modules/path-to-regexp": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", @@ -9347,55 +9376,10 @@ "dev": true, "license": "MIT" }, - "node_modules/msw/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/msw/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/msw/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/mute-stream": { "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true, "license": "ISC" }, @@ -9542,35 +9526,6 @@ "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, - "node_modules/oas-resolver/node_modules/cliui": { - "version": "8.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/oas-resolver/node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/oas-resolver/node_modules/yaml": { "version": "1.10.2", "dev": true, @@ -9579,31 +9534,6 @@ "node": ">= 6" } }, - "node_modules/oas-resolver/node_modules/yargs": { - "version": "17.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/oas-resolver/node_modules/yargs-parser": { - "version": "21.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/oas-schema-walker": { "version": "1.1.5", "dev": true, @@ -9746,6 +9676,8 @@ }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { @@ -9782,6 +9714,8 @@ }, "node_modules/ora": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9802,14 +9736,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/outvariant": { "version": "1.4.3", "dev": true, @@ -10858,6 +10784,8 @@ }, "node_modules/readable-stream": { "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "license": "MIT", "dependencies": { @@ -10915,6 +10843,8 @@ }, "node_modules/reflect-metadata": { "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", "dev": true, "license": "Apache-2.0" }, @@ -11205,6 +11135,8 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "license": "MIT", "dependencies": { @@ -11217,6 +11149,8 @@ }, "node_modules/restore-cursor/node_modules/signal-exit": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, @@ -11293,6 +11227,8 @@ }, "node_modules/run-async": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, "license": "MIT", "engines": { @@ -11348,6 +11284,8 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -11501,6 +11439,19 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/should": { "version": "13.2.3", "dev": true, @@ -11705,10 +11656,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/spawn-command": { - "version": "0.0.2", - "dev": true - }, "node_modules/split-on-first": { "version": "3.0.0", "license": "MIT", @@ -11762,6 +11709,8 @@ }, "node_modules/string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "license": "MIT", "dependencies": { @@ -11949,9 +11898,9 @@ } }, "node_modules/strtok3": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.1.tgz", - "integrity": "sha512-3JWEZM6mfix/GCJBBUrkA8p2Id2pBkyTkVCJKto55w080QBKZ+8R171fGrbiSp+yMO/u6F8/yUh7K4V9K+YCnw==", + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", + "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", "dev": true, "license": "MIT", "dependencies": { @@ -12042,35 +11991,6 @@ "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, - "node_modules/swagger2openapi/node_modules/cliui": { - "version": "8.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/swagger2openapi/node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/swagger2openapi/node_modules/yaml": { "version": "1.10.2", "dev": true, @@ -12079,31 +11999,6 @@ "node": ">= 6" } }, - "node_modules/swagger2openapi/node_modules/yargs": { - "version": "17.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/swagger2openapi/node_modules/yargs-parser": { - "version": "21.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/swr": { "version": "2.3.3", "dev": true, @@ -12288,6 +12183,8 @@ }, "node_modules/through": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true, "license": "MIT" }, @@ -12391,17 +12288,6 @@ "dev": true, "license": "MIT" }, - "node_modules/tmp": { - "version": "0.0.33", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "dev": true, @@ -12414,12 +12300,13 @@ } }, "node_modules/token-types": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.0.0.tgz", - "integrity": "sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz", + "integrity": "sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ==", "dev": true, "license": "MIT", "dependencies": { + "@borewit/text-codec": "^0.1.0", "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" }, @@ -12459,6 +12346,8 @@ }, "node_modules/tree-kill": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", "bin": { @@ -12628,6 +12517,8 @@ }, "node_modules/uid": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", "dev": true, "license": "MIT", "dependencies": { @@ -12638,9 +12529,9 @@ } }, "node_modules/uint8array-extras": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz", - "integrity": "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", "dev": true, "license": "MIT", "engines": { @@ -12793,6 +12684,8 @@ }, "node_modules/universalify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -13495,28 +13388,32 @@ "license": "ISC" }, "node_modules/yargs": { - "version": "16.2.0", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.9", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yocto-queue": { diff --git a/frontend/package.json b/frontend/package.json index c7731a52a..19da86ec0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -67,7 +67,7 @@ "@eslint/eslintrc": "3.3.1", "@eslint/js": "9.30.1", "@faker-js/faker": "9.8.0", - "@openapitools/openapi-generator-cli": "2.21.0", + "@openapitools/openapi-generator-cli": "2.23.1", "@tailwindcss/typography": "0.5.16", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.6.3", From dd5777cf89261419dc92a240eef91ab42c8d3f32 Mon Sep 17 00:00:00 2001 From: christopherschaedlich Date: Thu, 11 Sep 2025 21:29:12 +0200 Subject: [PATCH 023/110] fix: temperature display (#458) --- backend/src/extensions/models/azure-open-ai.ts | 1 + backend/src/extensions/models/bedrock-ai.ts | 1 + backend/src/extensions/models/google-genai.ts | 1 + backend/src/extensions/models/open-ai-compatible.ts | 1 + backend/src/extensions/models/open-ai.ts | 1 + 5 files changed, 5 insertions(+) diff --git a/backend/src/extensions/models/azure-open-ai.ts b/backend/src/extensions/models/azure-open-ai.ts index fb7f4cb64..f7d442257 100644 --- a/backend/src/extensions/models/azure-open-ai.ts +++ b/backend/src/extensions/models/azure-open-ai.ts @@ -47,6 +47,7 @@ export class AzureOpenAIModelExtension implements Extension Date: Thu, 11 Sep 2025 19:22:22 +0000 Subject: [PATCH 024/110] chore(deps): bump langchain-aws from 0.2.31 to 0.2.32 in /services/reis Bumps [langchain-aws](https://github.com/langchain-ai/langchain-aws) from 0.2.31 to 0.2.32. - [Release notes](https://github.com/langchain-ai/langchain-aws/releases) - [Commits](https://github.com/langchain-ai/langchain-aws/compare/langchain-aws==0.2.31...langchain-aws==0.2.32) --- updated-dependencies: - dependency-name: langchain-aws dependency-version: 0.2.32 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 10 +++++----- services/reis/pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index b178f12bc..a1a938379 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -1839,19 +1839,19 @@ xai = ["langchain-xai"] [[package]] name = "langchain-aws" -version = "0.2.31" +version = "0.2.32" description = "An integration package connecting AWS and LangChain" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "langchain_aws-0.2.31-py3-none-any.whl", hash = "sha256:dc46bd7e198f0a3c119bb26a9329a572e7898108aa00057198be3916f477e988"}, - {file = "langchain_aws-0.2.31.tar.gz", hash = "sha256:7e0257d50b05d0fc2f2763c50f93151fd06326e2f55286673289b0ddfc83e52b"}, + {file = "langchain_aws-0.2.32-py3-none-any.whl", hash = "sha256:dbdfa3d9352d0fa60db650fea0b49f79d154754462c222039582dadf2e75c690"}, + {file = "langchain_aws-0.2.32.tar.gz", hash = "sha256:9364d18cb68dc111b965f630ea024cd3352132fe0e008eeb3bef5a364d98592e"}, ] [package.dependencies] boto3 = ">=1.39.7" -langchain-core = ">=0.3.74,<0.4.0" +langchain-core = ">=0.3.75,<0.4.0" numpy = {version = ">=1.26.0,<3", markers = "python_version >= \"3.12\""} pydantic = ">=2.10.0,<3" @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "5f063d4674f17e9fe26e1ae702071c9592a25bfdfd05459d68f871678d986e52" +content-hash = "10a21ad34bb8ec1af6c5a7b9c3626f92b0942b49c536785b95d3532d2f2911d0" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index c161286d6..7664f22f7 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -26,7 +26,7 @@ aiofiles = "^24.1.0" prometheus-fastapi-instrumentator = "^7.0.0" fastmcp = "^2.12.2" langchain-ollama = "^0.3.7" -langchain-aws = "^0.2.31" +langchain-aws = "^0.2.32" langchain-nvidia-ai-endpoints = "^0.3.18" [tool.poetry.group.dev.dependencies] From 1321e036d5b946e1c6cba0d289feaf8247d67c47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 19:34:11 +0000 Subject: [PATCH 025/110] chore(deps): bump langchain-openai in /services/reis Bumps [langchain-openai](https://github.com/langchain-ai/langchain) from 0.3.32 to 0.3.33. - [Release notes](https://github.com/langchain-ai/langchain/releases) - [Commits](https://github.com/langchain-ai/langchain/compare/langchain-openai==0.3.32...langchain-openai==0.3.33) --- updated-dependencies: - dependency-name: langchain-openai dependency-version: 0.3.33 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 18 +++++++++--------- services/reis/pyproject.toml | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index a1a938379..e8d8e7723 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -1943,19 +1943,19 @@ ollama = ">=0.5.3,<1.0.0" [[package]] name = "langchain-openai" -version = "0.3.32" +version = "0.3.33" description = "An integration package connecting OpenAI and LangChain" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "langchain_openai-0.3.32-py3-none-any.whl", hash = "sha256:3354f76822f7cc76d8069831fe2a77f9bc7ff3b4f13af788bd94e4c6e853b400"}, - {file = "langchain_openai-0.3.32.tar.gz", hash = "sha256:782ad669bd1bdb964456d8882c5178717adcfceecb482cc20005f770e43d346d"}, + {file = "langchain_openai-0.3.33-py3-none-any.whl", hash = "sha256:2d52aab6d2af61da9bb9470616ce782128f4be59df965caee3dece30ae6b2bc4"}, + {file = "langchain_openai-0.3.33.tar.gz", hash = "sha256:2dec058332ea9e8977cd91df6515b95952e187ac7484f349c3fe91d936a92375"}, ] [package.dependencies] -langchain-core = ">=0.3.74,<1.0.0" -openai = ">=1.99.9,<2.0.0" +langchain-core = ">=0.3.76,<1.0.0" +openai = ">=1.104.2,<2.0.0" tiktoken = ">=0.7,<1" [[package]] @@ -2825,14 +2825,14 @@ pydantic = ">=2.9" [[package]] name = "openai" -version = "1.101.0" +version = "1.107.1" description = "The official Python library for the openai API" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "openai-1.101.0-py3-none-any.whl", hash = "sha256:6539a446cce154f8d9fb42757acdfd3ed9357ab0d34fcac11096c461da87133b"}, - {file = "openai-1.101.0.tar.gz", hash = "sha256:29f56df2236069686e64aca0e13c24a4ec310545afb25ef7da2ab1a18523f22d"}, + {file = "openai-1.107.1-py3-none-any.whl", hash = "sha256:168f9885b1b70d13ada0868a0d0adfd538c16a02f7fd9fe063851a2c9a025e72"}, + {file = "openai-1.107.1.tar.gz", hash = "sha256:7c51b6b8adadfcf5cada08a613423575258b180af5ad4bc2954b36ebc0d3ad48"}, ] [package.dependencies] @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "10a21ad34bb8ec1af6c5a7b9c3626f92b0942b49c536785b95d3532d2f2911d0" +content-hash = "0afe645e9026c0729379ab1d2d108aed0df826e4682b06d490f6f8e92d80235e" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index 7664f22f7..9bbefc21b 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -12,7 +12,7 @@ pydantic = "2.11.7" pydantic-settings = "^2.10.1" langchain-core = "0.3.76" langchain-community = "0.3.29" -langchain-openai = "0.3.32" +langchain-openai = "0.3.33" langchain-postgres = "0.0.15" psycopg = {extras = ["binary"], version = "^3.2.10"} fastapi = {extras = ["standard"], version = "0.116.1"} From 555e9bebd6e0f9691cd58acf7491507db8776ccc Mon Sep 17 00:00:00 2001 From: Hendrik Schawe Date: Fri, 12 Sep 2025 08:30:56 +0200 Subject: [PATCH 026/110] fix: move example extensions code and remove unnecessary dev prefixes (#461) Extensions which are only useful as examples, will not be shown in the frontend. Some extensions are useful for development, they will still appear with a dev prefix. --- .../{tools => examples}/always-42.ts | 0 .../extensions/{tools => examples}/confirm.ts | 0 .../{tools => examples}/show-context.ts | 0 .../{tools => examples}/simple-input.ts | 3 ++ .../{tools => examples}/user-args.ts | 0 backend/src/extensions/module.ts | 10 +--- backend/src/localization/i18n/de/texts.json | 46 +++++++++---------- backend/src/localization/i18n/en/texts.json | 46 +++++++++---------- 8 files changed, 51 insertions(+), 54 deletions(-) rename backend/src/extensions/{tools => examples}/always-42.ts (100%) rename backend/src/extensions/{tools => examples}/confirm.ts (100%) rename backend/src/extensions/{tools => examples}/show-context.ts (100%) rename backend/src/extensions/{tools => examples}/simple-input.ts (99%) rename backend/src/extensions/{tools => examples}/user-args.ts (100%) diff --git a/backend/src/extensions/tools/always-42.ts b/backend/src/extensions/examples/always-42.ts similarity index 100% rename from backend/src/extensions/tools/always-42.ts rename to backend/src/extensions/examples/always-42.ts diff --git a/backend/src/extensions/tools/confirm.ts b/backend/src/extensions/examples/confirm.ts similarity index 100% rename from backend/src/extensions/tools/confirm.ts rename to backend/src/extensions/examples/confirm.ts diff --git a/backend/src/extensions/tools/show-context.ts b/backend/src/extensions/examples/show-context.ts similarity index 100% rename from backend/src/extensions/tools/show-context.ts rename to backend/src/extensions/examples/show-context.ts diff --git a/backend/src/extensions/tools/simple-input.ts b/backend/src/extensions/examples/simple-input.ts similarity index 99% rename from backend/src/extensions/tools/simple-input.ts rename to backend/src/extensions/examples/simple-input.ts index 5bd9de6b4..077311c6e 100644 --- a/backend/src/extensions/tools/simple-input.ts +++ b/backend/src/extensions/examples/simple-input.ts @@ -5,6 +5,9 @@ import { Extension, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; +/** + * This + */ @Extension() export class SimpleInputExtension implements Extension { constructor(private readonly i18n: I18nService) {} diff --git a/backend/src/extensions/tools/user-args.ts b/backend/src/extensions/examples/user-args.ts similarity index 100% rename from backend/src/extensions/tools/user-args.ts rename to backend/src/extensions/examples/user-args.ts diff --git a/backend/src/extensions/module.ts b/backend/src/extensions/module.ts index 661f5e75e..6dbf41d34 100644 --- a/backend/src/extensions/module.ts +++ b/backend/src/extensions/module.ts @@ -8,6 +8,8 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { AuthModule } from 'src/domain/auth/module'; import { BucketEntity, CacheEntity, FileEntity } from 'src/domain/database'; import { Extension } from 'src/domain/extensions'; +import { ContextExtension } from './examples/show-context'; +import { UserArgsExtension } from './examples/user-args'; import { AzureOpenAIModelExtension } from './models/azure-open-ai'; import { AzureOpenAIReasoningModelExtension } from './models/azure-open-ai-reasoning'; import { BedrockModelExtension } from './models/bedrock-ai'; @@ -22,13 +24,11 @@ import { HubPromptExtension } from './other/hub'; import { LangfuseExtension } from './other/langfuse'; import { SpeechToTextExtension } from './other/speech-to-text'; import { SummaryPromptExtension } from './other/summary'; -import { Always42Extension } from './tools/always-42'; import { AzureAISearchExtension } from './tools/azure-ai-search'; import { AzureDallEExtension } from './tools/azure-dall-e'; import { BingWebSearchExtension } from './tools/bing-web-search'; import { BraveWebSearchExtension } from './tools/brave-web-search'; import { CalculatorExtension } from './tools/calculator'; -import { ConfirmExtension } from './tools/confirm'; import { DallEExtension } from './tools/dall-e'; import { DuckduckgoWebSearchExtension } from './tools/duckduckgo-web-search'; import { FilesExtension } from './tools/files'; @@ -37,9 +37,6 @@ import { FilesVisionExtension } from './tools/files-vision'; import { GroundingWithBingSearchExtension } from './tools/grounding-with-bing'; import { MCPToolsExtension } from './tools/mcp-tools'; import { OpenApiExtension } from './tools/open-api'; -import { ContextExtension } from './tools/show-context'; -import { SimpleInputExtension } from './tools/simple-input'; -import { UserArgsExtension } from './tools/user-args'; import { WholeFilesExtension } from './tools/whole-files-conversation'; const extensionClassSuffix = 'Extension'; @@ -106,7 +103,6 @@ export class ExtensionLibraryModule { imports: [ConfigModule, AuthModule, CqrsModule, TypeOrmModule.forFeature([CacheEntity, BucketEntity, FileEntity])], providers: [ ...dynamicProviders, - Always42Extension, AzureAISearchExtension, AzureDallEExtension, AzureOpenAIModelExtension, @@ -115,7 +111,6 @@ export class ExtensionLibraryModule { BingWebSearchExtension, BraveWebSearchExtension, CalculatorExtension, - ConfirmExtension, ContextExtension, CustomPromptExtension, DallEExtension, @@ -133,7 +128,6 @@ export class ExtensionLibraryModule { OpenAICompatibleModelExtension, OpenAIModelExtension, OpenApiExtension, - SimpleInputExtension, SpeechToTextExtension, SummaryPromptExtension, UserArgsExtension, diff --git a/backend/src/localization/i18n/de/texts.json b/backend/src/localization/i18n/de/texts.json index 8ca7b93e9..1dee5dedc 100644 --- a/backend/src/localization/i18n/de/texts.json +++ b/backend/src/localization/i18n/de/texts.json @@ -53,7 +53,7 @@ "description": "OpenAI LLM-Integration für Reasoning-Modelle" }, "langfuse": { - "title": "DEV: Langfuse", + "title": "Langfuse", "description": "Langfuse-Integration", "baseUrl": "Base url", "baseUrlHint": "Basis-URL von Langfuse (wenn self-hosted)", @@ -65,7 +65,7 @@ "description": "Mistral LLM-Integration" }, "ollama": { - "title": "DEV: Ollama", + "title": "Ollama", "description": "Ollama LLM-Integration" }, "openai": { @@ -74,7 +74,7 @@ "endpointHint": "Basis-URL des OpenAI-Endpunkts" }, "openaiCompatible": { - "title": "DEV: OpenAI kompatibel", + "title": "OpenAI kompatibel", "description": "OpenAI-kompatible LLM-Integration" }, "vertexai": { @@ -94,10 +94,6 @@ "description": "Definiert den Zusammenfassungs-Prompt, der für die Gesprächsbeschriftung verwendet wird.", "promptHint": "Verwende den {content}-Platzhalter für den tatsächlichen Verlauf." }, - "always42": { - "title": "DEV: Add 42", - "description": "Addiert immer 42 zur Summe von zwei Zahlen" - }, "azureSearch": { "title": "Azure AI Search", "description": "Führt eine Suche mit Azure AI Search durch", @@ -124,10 +120,6 @@ "description": "Führt eine Websuche mit Duckduckgo durch", "maxResults": "Anzahl der Suchergebnisse" }, - "confirm": { - "title": "DEV: Confirm", - "description": "Fragt nach Bestätigung" - }, "azureDalle": { "title": "Azure Dall-E", "description": "Generiert Bilder mit dem Azure DALL-E-Bildgenerator." @@ -193,22 +185,10 @@ "endpointHint": "Endpunkt als URL.", "headersHint": "Ein Header pro Zeile als Schlüssel=Wert" }, - "context": { - "title": "DEV: Contexts", - "description": "Zeigt den aktuellen Kontext" - }, - "simpleInput": { - "title": "DEV: Simple Input", - "description": "Fragt nach einer Eingabe vom Benutzer" - }, "speechToText": { "title": "Spracheingabe", "description": "Erlaubt Spracheingaben über ein Mikrofon-Icon" }, - "userArgs": { - "title": "DEV: User Args", - "description": "Zeigt die aktuellen Benutzerargumente" - }, "filesInConversation": { "title": "Suche in Dateien im Chat", "description": "Ermöglicht dem LLM, Dateien zu durchsuchen, die in einem Chat über die Büroklammer hochgeladen wurden.", @@ -262,6 +242,26 @@ "value": "Wert (Template)", "valueHint": "Wert, der beim Toolaufruf verwendet wird.", "errorToolCall": "Es ist ein Fehler aufgetreten beim Aufruf des Tools '{tool}'" + }, + "always42": { + "title": "DEV: Add 42", + "description": "Addiert immer 42 zur Summe von zwei Zahlen" + }, + "confirm": { + "title": "DEV: Confirm", + "description": "Fragt nach Bestätigung" + }, + "context": { + "title": "DEV: Contexts", + "description": "Zeigt den aktuellen Kontext" + }, + "userArgs": { + "title": "DEV: User Args", + "description": "Zeigt die aktuellen Benutzerargumente" + }, + "simpleInput": { + "title": "DEV: Simple Input", + "description": "Fragt nach einer Eingabe vom Benutzer" } }, "chat": { diff --git a/backend/src/localization/i18n/en/texts.json b/backend/src/localization/i18n/en/texts.json index 91946323c..c0e14abe8 100644 --- a/backend/src/localization/i18n/en/texts.json +++ b/backend/src/localization/i18n/en/texts.json @@ -53,7 +53,7 @@ "description": "Open AI LLM integration for reasoning Models" }, "langfuse": { - "title": "DEV: Langfuse", + "title": "Langfuse", "description": "Langfuse integration", "baseUrl": "Base url", "baseUrlHint": "Base url of langfuse (if self-hosted)", @@ -65,7 +65,7 @@ "description": "Mistral LLM integration" }, "ollama": { - "title": "DEV: Ollama", + "title": "Ollama", "description": "Ollama LLM integration" }, "openai": { @@ -74,7 +74,7 @@ "endpointHint": "Base url of open ai endpoint" }, "openaiCompatible": { - "title": "DEV: OpenAI compatible", + "title": "OpenAI compatible", "description": "Open AI compatible LLM integration" }, "vertexai": { @@ -94,10 +94,6 @@ "description": "Defines the summary prompt that is used for conversation label.", "promptHint": "Use the {content} placeholder for the actual history." }, - "always42": { - "title": "DEV: Add 42", - "description": "Always adds 42 to the sum of two numbers" - }, "azureSearch": { "title": "Azure AI Search", "description": "Performs a search using Azure AI Search", @@ -124,10 +120,6 @@ "description": "Performs a web search using Duckduckgo", "maxResults": "Number of search results" }, - "confirm": { - "title": "DEV: Confirm", - "description": "Asks for confirmation" - }, "azureDalle": { "title": "Azure Dall-E", "description": "Generates images with the Azure DALL-E image generator." @@ -193,22 +185,10 @@ "endpointHint": "Endpoint as URL.", "headersHint": "One header per line as Key=Value" }, - "context": { - "title": "DEV: Contexts", - "description": "Shows the current context" - }, - "simpleInput": { - "title": "DEV: Simple Input", - "description": "Asks for input from the user" - }, "speechToText": { "title": "Speech To Text", "description": "Allows speech input via microphone icon" }, - "userArgs": { - "title": "DEV: User Args", - "description": "Shows the current user args" - }, "filesInConversation": { "title": "Search Files in Chat", "description": "Enables the LLM to search files uploaded via the paperclip to a conversation.", @@ -262,6 +242,26 @@ "value": "Value (Template)", "valueHint": "Value that is used during tool call", "errorToolCall": "An error occurred during the tool call '{tool}'" + }, + "always42": { + "title": "DEV: Add 42", + "description": "Always adds 42 to the sum of two numbers" + }, + "confirm": { + "title": "DEV: Confirm", + "description": "Asks for confirmation" + }, + "context": { + "title": "DEV: Contexts", + "description": "Shows the current context" + }, + "userArgs": { + "title": "DEV: User Args", + "description": "Shows the current user args" + }, + "simpleInput": { + "title": "DEV: Simple Input", + "description": "Asks for input from the user" } }, "chat": { From 73519cfd4ca012f891e60c224d64171924a08ee1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Sep 2025 19:24:29 +0000 Subject: [PATCH 027/110] chore(deps): bump fastmcp from 2.12.2 to 2.12.3 in /services/reis Bumps [fastmcp](https://github.com/jlowin/fastmcp) from 2.12.2 to 2.12.3. - [Release notes](https://github.com/jlowin/fastmcp/releases) - [Changelog](https://github.com/jlowin/fastmcp/blob/main/docs/changelog.mdx) - [Commits](https://github.com/jlowin/fastmcp/compare/v2.12.2...v2.12.3) --- updated-dependencies: - dependency-name: fastmcp dependency-version: 2.12.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 8 ++++---- services/reis/pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index e8d8e7723..87be997aa 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -1113,14 +1113,14 @@ standard = ["uvicorn[standard] (>=0.15.0)"] [[package]] name = "fastmcp" -version = "2.12.2" +version = "2.12.3" description = "The fast, Pythonic way to build MCP servers and clients." optional = false python-versions = ">=3.10" groups = ["main"] files = [ - {file = "fastmcp-2.12.2-py3-none-any.whl", hash = "sha256:0b58d68e819c82078d1fd51989d3d81f2be7382d527308b06df55f4d0a4ec94f"}, - {file = "fastmcp-2.12.2.tar.gz", hash = "sha256:6d13e2f9be57b99763fc22485f9f603daa23bfbca35a8172baa43b283d6fc1ff"}, + {file = "fastmcp-2.12.3-py3-none-any.whl", hash = "sha256:aee50872923a9cba731861fc0120e7dbe4642a2685ba251b2b202b82fb6c25a9"}, + {file = "fastmcp-2.12.3.tar.gz", hash = "sha256:541dd569d5b6c083140b04d997ba3dc47f7c10695cee700d0a733ce63b20bb65"}, ] [package.dependencies] @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "0afe645e9026c0729379ab1d2d108aed0df826e4682b06d490f6f8e92d80235e" +content-hash = "107af8487ce0b54e520a2178893eb3d2d27581cd384b37ccf305ead7b761ee0a" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index 9bbefc21b..cc9a96e63 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -24,7 +24,7 @@ pypdf = "^6.0.0" ffmpeg-python = "^0.2.0" aiofiles = "^24.1.0" prometheus-fastapi-instrumentator = "^7.0.0" -fastmcp = "^2.12.2" +fastmcp = "^2.12.3" langchain-ollama = "^0.3.7" langchain-aws = "^0.2.32" langchain-nvidia-ai-endpoints = "^0.3.18" From 5289171e09177c16cb83ee4459684a7c31a4cbf4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Sep 2025 19:38:06 +0000 Subject: [PATCH 028/110] chore(deps): bump langchain-ollama from 0.3.7 to 0.3.8 in /services/reis Bumps [langchain-ollama](https://github.com/langchain-ai/langchain) from 0.3.7 to 0.3.8. - [Release notes](https://github.com/langchain-ai/langchain/releases) - [Commits](https://github.com/langchain-ai/langchain/compare/langchain-ollama==0.3.7...langchain-ollama==0.3.8) --- updated-dependencies: - dependency-name: langchain-ollama dependency-version: 0.3.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 10 +++++----- services/reis/pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 87be997aa..95c7c8a78 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -1927,18 +1927,18 @@ langchain-core = ">=0.3.51,<0.4" [[package]] name = "langchain-ollama" -version = "0.3.7" +version = "0.3.8" description = "An integration package connecting Ollama and LangChain" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "langchain_ollama-0.3.7-py3-none-any.whl", hash = "sha256:845192a75a1671bd36bc8c54baae2e929c3b1b0e3c8c618438df20354b0231de"}, - {file = "langchain_ollama-0.3.7.tar.gz", hash = "sha256:9deeca09a44fb8c5a46b1e43d670a7301f1d1e73196fa9191a89f9883217903b"}, + {file = "langchain_ollama-0.3.8-py3-none-any.whl", hash = "sha256:79898316d5663c6b08bc758c82b4e136f826cad2be84b4a26be11f1b0ebf686a"}, + {file = "langchain_ollama-0.3.8.tar.gz", hash = "sha256:ba22537bd4dac4424cb8063bb2930fc31c6704db94728b30b75b4db71ccb214e"}, ] [package.dependencies] -langchain-core = ">=0.3.74,<1.0.0" +langchain-core = ">=0.3.76,<1.0.0" ollama = ">=0.5.3,<1.0.0" [[package]] @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "107af8487ce0b54e520a2178893eb3d2d27581cd384b37ccf305ead7b761ee0a" +content-hash = "e4a7bef315e4ffc624eb6920a388733df8223a64f027eacf86ae1201805cfe41" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index cc9a96e63..85a2ad472 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -25,7 +25,7 @@ ffmpeg-python = "^0.2.0" aiofiles = "^24.1.0" prometheus-fastapi-instrumentator = "^7.0.0" fastmcp = "^2.12.3" -langchain-ollama = "^0.3.7" +langchain-ollama = "^0.3.8" langchain-aws = "^0.2.32" langchain-nvidia-ai-endpoints = "^0.3.18" From e2c66902e19c2f67404e537b261fb15041014603 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Sep 2025 19:50:39 +0000 Subject: [PATCH 029/110] chore(deps-dev): bump mypy from 1.17.1 to 1.18.1 in /services/reis Bumps [mypy](https://github.com/python/mypy) from 1.17.1 to 1.18.1. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.17.1...v1.18.1) --- updated-dependencies: - dependency-name: mypy dependency-version: 1.18.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 80 ++++++++++++++++++------------------ services/reis/pyproject.toml | 2 +- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 95c7c8a78..c299409e3 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -2587,50 +2587,50 @@ files = [ [[package]] name = "mypy" -version = "1.17.1" +version = "1.18.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "mypy-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3fbe6d5555bf608c47203baa3e72dbc6ec9965b3d7c318aa9a4ca76f465bd972"}, - {file = "mypy-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80ef5c058b7bce08c83cac668158cb7edea692e458d21098c7d3bce35a5d43e7"}, - {file = "mypy-1.17.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a580f8a70c69e4a75587bd925d298434057fe2a428faaf927ffe6e4b9a98df"}, - {file = "mypy-1.17.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd86bb649299f09d987a2eebb4d52d10603224500792e1bee18303bbcc1ce390"}, - {file = "mypy-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a76906f26bd8d51ea9504966a9c25419f2e668f012e0bdf3da4ea1526c534d94"}, - {file = "mypy-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:e79311f2d904ccb59787477b7bd5d26f3347789c06fcd7656fa500875290264b"}, - {file = "mypy-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad37544be07c5d7fba814eb370e006df58fed8ad1ef33ed1649cb1889ba6ff58"}, - {file = "mypy-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:064e2ff508e5464b4bd807a7c1625bc5047c5022b85c70f030680e18f37273a5"}, - {file = "mypy-1.17.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70401bbabd2fa1aa7c43bb358f54037baf0586f41e83b0ae67dd0534fc64edfd"}, - {file = "mypy-1.17.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e92bdc656b7757c438660f775f872a669b8ff374edc4d18277d86b63edba6b8b"}, - {file = "mypy-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c1fdf4abb29ed1cb091cf432979e162c208a5ac676ce35010373ff29247bcad5"}, - {file = "mypy-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:ff2933428516ab63f961644bc49bc4cbe42bbffb2cd3b71cc7277c07d16b1a8b"}, - {file = "mypy-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:69e83ea6553a3ba79c08c6e15dbd9bfa912ec1e493bf75489ef93beb65209aeb"}, - {file = "mypy-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b16708a66d38abb1e6b5702f5c2c87e133289da36f6a1d15f6a5221085c6403"}, - {file = "mypy-1.17.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:89e972c0035e9e05823907ad5398c5a73b9f47a002b22359b177d40bdaee7056"}, - {file = "mypy-1.17.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03b6d0ed2b188e35ee6d5c36b5580cffd6da23319991c49ab5556c023ccf1341"}, - {file = "mypy-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c837b896b37cd103570d776bda106eabb8737aa6dd4f248451aecf53030cdbeb"}, - {file = "mypy-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:665afab0963a4b39dff7c1fa563cc8b11ecff7910206db4b2e64dd1ba25aed19"}, - {file = "mypy-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93378d3203a5c0800c6b6d850ad2f19f7a3cdf1a3701d3416dbf128805c6a6a7"}, - {file = "mypy-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:15d54056f7fe7a826d897789f53dd6377ec2ea8ba6f776dc83c2902b899fee81"}, - {file = "mypy-1.17.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:209a58fed9987eccc20f2ca94afe7257a8f46eb5df1fb69958650973230f91e6"}, - {file = "mypy-1.17.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:099b9a5da47de9e2cb5165e581f158e854d9e19d2e96b6698c0d64de911dd849"}, - {file = "mypy-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ffadfbe6994d724c5a1bb6123a7d27dd68fc9c059561cd33b664a79578e14"}, - {file = "mypy-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:9a2b7d9180aed171f033c9f2fc6c204c1245cf60b0cb61cf2e7acc24eea78e0a"}, - {file = "mypy-1.17.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:15a83369400454c41ed3a118e0cc58bd8123921a602f385cb6d6ea5df050c733"}, - {file = "mypy-1.17.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:55b918670f692fc9fba55c3298d8a3beae295c5cded0a55dccdc5bbead814acd"}, - {file = "mypy-1.17.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:62761474061feef6f720149d7ba876122007ddc64adff5ba6f374fda35a018a0"}, - {file = "mypy-1.17.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c49562d3d908fd49ed0938e5423daed8d407774a479b595b143a3d7f87cdae6a"}, - {file = "mypy-1.17.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:397fba5d7616a5bc60b45c7ed204717eaddc38f826e3645402c426057ead9a91"}, - {file = "mypy-1.17.1-cp314-cp314-win_amd64.whl", hash = "sha256:9d6b20b97d373f41617bd0708fd46aa656059af57f2ef72aa8c7d6a2b73b74ed"}, - {file = "mypy-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5d1092694f166a7e56c805caaf794e0585cabdbf1df36911c414e4e9abb62ae9"}, - {file = "mypy-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79d44f9bfb004941ebb0abe8eff6504223a9c1ac51ef967d1263c6572bbebc99"}, - {file = "mypy-1.17.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b01586eed696ec905e61bd2568f48740f7ac4a45b3a468e6423a03d3788a51a8"}, - {file = "mypy-1.17.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43808d9476c36b927fbcd0b0255ce75efe1b68a080154a38ae68a7e62de8f0f8"}, - {file = "mypy-1.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:feb8cc32d319edd5859da2cc084493b3e2ce5e49a946377663cc90f6c15fb259"}, - {file = "mypy-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d7598cf74c3e16539d4e2f0b8d8c318e00041553d83d4861f87c7a72e95ac24d"}, - {file = "mypy-1.17.1-py3-none-any.whl", hash = "sha256:a9f52c0351c21fe24c21d8c0eb1f62967b262d6729393397b6f443c3b773c3b9"}, - {file = "mypy-1.17.1.tar.gz", hash = "sha256:25e01ec741ab5bb3eec8ba9cdb0f769230368a22c959c4937360efb89b7e9f01"}, + {file = "mypy-1.18.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2761b6ae22a2b7d8e8607fb9b81ae90bc2e95ec033fd18fa35e807af6c657763"}, + {file = "mypy-1.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5b10e3ea7f2eec23b4929a3fabf84505da21034a4f4b9613cda81217e92b74f3"}, + {file = "mypy-1.18.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:261fbfced030228bc0f724d5d92f9ae69f46373bdfd0e04a533852677a11dbea"}, + {file = "mypy-1.18.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4dc6b34a1c6875e6286e27d836a35c0d04e8316beac4482d42cfea7ed2527df8"}, + {file = "mypy-1.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1cabb353194d2942522546501c0ff75c4043bf3b63069cb43274491b44b773c9"}, + {file = "mypy-1.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:738b171690c8e47c93569635ee8ec633d2cdb06062f510b853b5f233020569a9"}, + {file = "mypy-1.18.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c903857b3e28fc5489e54042684a9509039ea0aedb2a619469438b544ae1961"}, + {file = "mypy-1.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a0c8392c19934c2b6c65566d3a6abdc6b51d5da7f5d04e43f0eb627d6eeee65"}, + {file = "mypy-1.18.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f85eb7efa2ec73ef63fc23b8af89c2fe5bf2a4ad985ed2d3ff28c1bb3c317c92"}, + {file = "mypy-1.18.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:82ace21edf7ba8af31c3308a61dc72df30500f4dbb26f99ac36b4b80809d7e94"}, + {file = "mypy-1.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a2dfd53dfe632f1ef5d161150a4b1f2d0786746ae02950eb3ac108964ee2975a"}, + {file = "mypy-1.18.1-cp311-cp311-win_amd64.whl", hash = "sha256:320f0ad4205eefcb0e1a72428dde0ad10be73da9f92e793c36228e8ebf7298c0"}, + {file = "mypy-1.18.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:502cde8896be8e638588b90fdcb4c5d5b8c1b004dfc63fd5604a973547367bb9"}, + {file = "mypy-1.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7509549b5e41be279afc1228242d0e397f1af2919a8f2877ad542b199dc4083e"}, + {file = "mypy-1.18.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5956ecaabb3a245e3f34100172abca1507be687377fe20e24d6a7557e07080e2"}, + {file = "mypy-1.18.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8750ceb014a96c9890421c83f0db53b0f3b8633e2864c6f9bc0a8e93951ed18d"}, + {file = "mypy-1.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fb89ea08ff41adf59476b235293679a6eb53a7b9400f6256272fb6029bec3ce5"}, + {file = "mypy-1.18.1-cp312-cp312-win_amd64.whl", hash = "sha256:2657654d82fcd2a87e02a33e0d23001789a554059bbf34702d623dafe353eabf"}, + {file = "mypy-1.18.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d70d2b5baf9b9a20bc9c730015615ae3243ef47fb4a58ad7b31c3e0a59b5ef1f"}, + {file = "mypy-1.18.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b8367e33506300f07a43012fc546402f283c3f8bcff1dc338636affb710154ce"}, + {file = "mypy-1.18.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:913f668ec50c3337b89df22f973c1c8f0b29ee9e290a8b7fe01cc1ef7446d42e"}, + {file = "mypy-1.18.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a0e70b87eb27b33209fa4792b051c6947976f6ab829daa83819df5f58330c71"}, + {file = "mypy-1.18.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c378d946e8a60be6b6ede48c878d145546fb42aad61df998c056ec151bf6c746"}, + {file = "mypy-1.18.1-cp313-cp313-win_amd64.whl", hash = "sha256:2cd2c1e0f3a7465f22731987fff6fc427e3dcbb4ca5f7db5bbeaff2ff9a31f6d"}, + {file = "mypy-1.18.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ba24603c58e34dd5b096dfad792d87b304fc6470cbb1c22fd64e7ebd17edcc61"}, + {file = "mypy-1.18.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ed36662fb92ae4cb3cacc682ec6656208f323bbc23d4b08d091eecfc0863d4b5"}, + {file = "mypy-1.18.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:040ecc95e026f71a9ad7956fea2724466602b561e6a25c2e5584160d3833aaa8"}, + {file = "mypy-1.18.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:937e3ed86cb731276706e46e03512547e43c391a13f363e08d0fee49a7c38a0d"}, + {file = "mypy-1.18.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1f95cc4f01c0f1701ca3b0355792bccec13ecb2ec1c469e5b85a6ef398398b1d"}, + {file = "mypy-1.18.1-cp314-cp314-win_amd64.whl", hash = "sha256:e4f16c0019d48941220ac60b893615be2f63afedaba6a0801bdcd041b96991ce"}, + {file = "mypy-1.18.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e37763af63a8018308859bc83d9063c501a5820ec5bd4a19f0a2ac0d1c25c061"}, + {file = "mypy-1.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:51531b6e94f34b8bd8b01dee52bbcee80daeac45e69ec5c36e25bce51cbc46e6"}, + {file = "mypy-1.18.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dbfdea20e90e9c5476cea80cfd264d8e197c6ef2c58483931db2eefb2f7adc14"}, + {file = "mypy-1.18.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:99f272c9b59f5826fffa439575716276d19cbf9654abc84a2ba2d77090a0ba14"}, + {file = "mypy-1.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8c05a7f8c00300a52f3a4fcc95a185e99bf944d7e851ff141bae8dcf6dcfeac4"}, + {file = "mypy-1.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:2fbcecbe5cf213ba294aa8c0b8c104400bf7bb64db82fb34fe32a205da4b3531"}, + {file = "mypy-1.18.1-py3-none-any.whl", hash = "sha256:b76a4de66a0ac01da1be14ecc8ae88ddea33b8380284a9e3eae39d57ebcbe26e"}, + {file = "mypy-1.18.1.tar.gz", hash = "sha256:9e988c64ad3ac5987f43f5154f884747faf62141b7f842e87465b45299eea5a9"}, ] [package.dependencies] @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "e4a7bef315e4ffc624eb6920a388733df8223a64f027eacf86ae1201805cfe41" +content-hash = "a529d5edd76f984ebd3c6cb6f45b13e4274f7e003ca4438de98c25b282d4f187" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index 85a2ad472..90e25a50d 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -31,7 +31,7 @@ langchain-nvidia-ai-endpoints = "^0.3.18" [tool.poetry.group.dev.dependencies] ruff = "0.13.0" -mypy = "1.17.1" +mypy = "1.18.1" pre-commit = "4.3.0" pytest = "8.4.2" pytest-cov = "7.0.0" From 3a9a00234980926c70ca87fdbb9ad32cfb124f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Caro?= Date: Mon, 15 Sep 2025 09:12:21 +0200 Subject: [PATCH 030/110] feat: add gpt-image-1 tool to generate images (#468) * feat(backend): add azure gpt-image-1 * feat(backend): adjust some texts --- backend/src/extensions/module.ts | 4 + .../src/extensions/tools/azure-gpt-image-1.ts | 53 ++++++ backend/src/extensions/tools/gpt-image-1.ts | 155 ++++++++++++++++++ backend/src/localization/i18n/de/texts.json | 10 ++ backend/src/localization/i18n/en/texts.json | 10 ++ 5 files changed, 232 insertions(+) create mode 100644 backend/src/extensions/tools/azure-gpt-image-1.ts create mode 100644 backend/src/extensions/tools/gpt-image-1.ts diff --git a/backend/src/extensions/module.ts b/backend/src/extensions/module.ts index 6dbf41d34..8c7fd76e7 100644 --- a/backend/src/extensions/module.ts +++ b/backend/src/extensions/module.ts @@ -26,6 +26,7 @@ import { SpeechToTextExtension } from './other/speech-to-text'; import { SummaryPromptExtension } from './other/summary'; import { AzureAISearchExtension } from './tools/azure-ai-search'; import { AzureDallEExtension } from './tools/azure-dall-e'; +import { AzureGPTImage1Extension } from './tools/azure-gpt-image-1'; import { BingWebSearchExtension } from './tools/bing-web-search'; import { BraveWebSearchExtension } from './tools/brave-web-search'; import { CalculatorExtension } from './tools/calculator'; @@ -34,6 +35,7 @@ import { DuckduckgoWebSearchExtension } from './tools/duckduckgo-web-search'; import { FilesExtension } from './tools/files'; import { FilesConversationExtension } from './tools/files-conversation'; import { FilesVisionExtension } from './tools/files-vision'; +import { GPTImage1Extension } from './tools/gpt-image-1'; import { GroundingWithBingSearchExtension } from './tools/grounding-with-bing'; import { MCPToolsExtension } from './tools/mcp-tools'; import { OpenApiExtension } from './tools/open-api'; @@ -105,6 +107,7 @@ export class ExtensionLibraryModule { ...dynamicProviders, AzureAISearchExtension, AzureDallEExtension, + AzureGPTImage1Extension, AzureOpenAIModelExtension, AzureOpenAIReasoningModelExtension, BedrockModelExtension, @@ -119,6 +122,7 @@ export class ExtensionLibraryModule { FilesExtension, FilesVisionExtension, GoogleGenAIModelExtension, + GPTImage1Extension, GroundingWithBingSearchExtension, HubPromptExtension, LangfuseExtension, diff --git a/backend/src/extensions/tools/azure-gpt-image-1.ts b/backend/src/extensions/tools/azure-gpt-image-1.ts new file mode 100644 index 000000000..09b30b682 --- /dev/null +++ b/backend/src/extensions/tools/azure-gpt-image-1.ts @@ -0,0 +1,53 @@ +import { AzureOpenAI } from 'openai'; +import { Extension, ExtensionSpec } from '../../domain/extensions'; +import { GPTImage1Extension, GPTImage1ExtensionConfiguration } from './gpt-image-1'; + +@Extension() +export class AzureGPTImage1Extension extends GPTImage1Extension { + get spec(): ExtensionSpec { + const baseSpec = super.spec; + return { + ...baseSpec, + name: 'azure-gpt-image-1', + title: this.i18n.t('texts.extensions.azure-gpt-image-1.title'), + logo: '', + description: this.i18n.t('texts.extensions.azure-gpt-image-1.description'), + type: 'tool', + arguments: { + ...baseSpec.arguments, + instanceName: { + type: 'string', + title: this.i18n.t('texts.extensions.common.instanceName'), + required: true, + }, + deploymentName: { + type: 'string', + title: this.i18n.t('texts.extensions.common.deploymentName'), + required: true, + }, + apiVersion: { + type: 'string', + title: this.i18n.t('texts.extensions.common.apiVersion'), + required: true, + format: 'select', + examples: ['2024-02-15-preview'], + }, + }, + }; + } + + protected createGptImageClient(configuration: AzureGPTImage1ExtensionConfiguration): AzureOpenAI { + return new AzureOpenAI({ + apiKey: configuration.apiKey, + apiVersion: configuration.apiVersion, + deployment: configuration.deploymentName, + endpoint: `https://${configuration.instanceName}.openai.azure.com/`, + }); + } +} + +export type AzureGPTImage1ExtensionConfiguration = GPTImage1ExtensionConfiguration & { + instanceName: string; + apiVersion: string; + deploymentName: string; +}; diff --git a/backend/src/extensions/tools/gpt-image-1.ts b/backend/src/extensions/tools/gpt-image-1.ts new file mode 100644 index 000000000..35d8fa6d1 --- /dev/null +++ b/backend/src/extensions/tools/gpt-image-1.ts @@ -0,0 +1,155 @@ +import { Tool } from '@langchain/core/tools'; +import { forwardRef, Inject, Logger } from '@nestjs/common'; +import { CommandBus } from '@nestjs/cqrs'; +import OpenAI from 'openai'; +import * as uuid from 'uuid'; +import { AuthService } from 'src/domain/auth'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; +import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; +import { UploadBlob } from 'src/domain/settings'; +import { User } from 'src/domain/users'; +import { BlobCategory } from '../../domain/database'; +import { I18nService } from '../../localization/i18n.service'; + +@Extension() +export class GPTImage1Extension implements Extension { + constructor( + private readonly authService: AuthService, + @Inject(forwardRef(() => CommandBus)) + private readonly commandBus: CommandBus, + protected readonly i18n: I18nService, + ) {} + + get spec(): ExtensionSpec { + return { + name: 'gpt-image-1', + title: this.i18n.t('texts.extensions.gpt-image-1.title'), + logo: 'OpenAI icon', + description: this.i18n.t('texts.extensions.gpt-image-1.description'), + type: 'tool', + arguments: { + apiKey: { + type: 'string', + title: this.i18n.t('texts.extensions.common.apiKey'), + required: true, + format: 'password', + }, + quality: { + type: 'string', + title: this.i18n.t('texts.extensions.gpt-image-1.quality'), + required: false, + format: 'select', + enum: ['auto', 'high', 'medium', 'low'], + }, + size: { + type: 'string', + title: this.i18n.t('texts.extensions.gpt-image-1.size'), + required: false, + format: 'select', + enum: ['auto', '1024x1024', '1536x1024', '1024x1536'], + }, + }, + }; + } + + async test(configuration: GPTImage1ExtensionConfiguration) { + const client = this.createGptImageClient(configuration); + + await client.images.generate({ + model: 'gpt-image-1', + prompt: 'test', + }); + } + + async getMiddlewares(user: User, extension: ExtensionEntity): Promise { + const middleware = { + invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { + const tool = await context.cache.get(this.spec.name, extension.values, () => { + const client = this.createGptImageClient(extension.values); + return Promise.resolve(new InternalTool(this.authService, client, this.commandBus, this.spec, extension.values)); + }); + context.tools.push(tool); + + return next(context); + }, + }; + + return Promise.resolve([middleware]); + } + + protected createGptImageClient(configuration: GPTImage1ExtensionConfiguration) { + return new OpenAI({ + apiKey: configuration.apiKey, + }); + } +} + +class InternalTool extends Tool { + readonly name: string; + readonly description = + 'A tool to generate images from a prompt using GPT-Image-1. It returns a link to an image. Show the image to the user by using Markdown to embed the image into your response, like `![alttext](link/from/the/response)`.'; + readonly returnDirect = false; + private readonly logger = new Logger(InternalTool.name); + + get lc_id() { + return [...this.lc_namespace, this.name]; + } + + constructor( + private readonly authService: AuthService, + private readonly client: OpenAI, + private readonly commandBus: CommandBus, + spec: ExtensionSpec, + private readonly configuration: GPTImage1ExtensionConfiguration, + ) { + super(); + this.name = spec.name; + } + + protected async _call(prompt: string): Promise { + try { + const response = await this.client.images.generate({ + model: 'gpt-image-1', + prompt: prompt, + size: this.configuration.size, + }); + + const imageData = response?.data?.[0]; + + if (!imageData) { + throw new Error('No image data received from OpenAI'); + } + + const id = uuid.v4(); + const contentType = response.output_format || 'png'; + let imageBuffer: Buffer; + let fileName; + + if (imageData.b64_json) { + imageBuffer = Buffer.from(imageData.b64_json, 'base64'); + fileName = `${id}.${contentType}`; + } else { + throw new Error('No valid image data format received from OpenAI'); + } + + await this.commandBus.execute( + new UploadBlob(id, imageBuffer, contentType, fileName, imageBuffer.length, BlobCategory.LLM_IMAGE), + ); + + return `${this.authService.config.baseUrl}/blobs/${id}`; + } catch (error) { + if (error instanceof Error) { + this.logger.error(`Error occurred in extension ${this.name}: ${error.message}`, error.stack); + } else { + this.logger.error(`Unknown error occurred in extension ${this.name}: ${JSON.stringify(error)}`); + } + return 'Failed'; + } + } +} + +export type GPTImage1ExtensionConfiguration = ExtensionConfiguration & { + apiKey: string; + quality: 'auto' | 'high' | 'medium' | 'low'; + size: 'auto' | '1024x1024' | '1536x1024' | '1024x1536'; +}; diff --git a/backend/src/localization/i18n/de/texts.json b/backend/src/localization/i18n/de/texts.json index 1dee5dedc..251a720ec 100644 --- a/backend/src/localization/i18n/de/texts.json +++ b/backend/src/localization/i18n/de/texts.json @@ -262,6 +262,16 @@ "simpleInput": { "title": "DEV: Simple Input", "description": "Fragt nach einer Eingabe vom Benutzer" + }, + "gpt-image-1": { + "title": "GPT-Image-1", + "description": "Bilder mit OpenAI gpt-image-1 generieren.", + "quality": "Qualität", + "size": "Größe" + }, + "azure-gpt-image-1": { + "title": "Azure GPT-Image-1", + "description": "Bilder mit Azure OpenAI gpt-image-1 generieren." } }, "chat": { diff --git a/backend/src/localization/i18n/en/texts.json b/backend/src/localization/i18n/en/texts.json index c0e14abe8..9d8704374 100644 --- a/backend/src/localization/i18n/en/texts.json +++ b/backend/src/localization/i18n/en/texts.json @@ -262,6 +262,16 @@ "simpleInput": { "title": "DEV: Simple Input", "description": "Asks for input from the user" + }, + "gpt-image-1": { + "title": "GPT-Image-1", + "description": "Generate images using OpenAI gpt-image-1.", + "quality": "Quality", + "size": "Size" + }, + "azure-gpt-image-1": { + "title": "Azure gpt-image-1", + "description": "Generate images using Azure OpenAI gpt-image-1." } }, "chat": { From 9539c01d1aef406fdd0cd7487adf8311cbb1f244 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Sep 2025 20:01:36 +0000 Subject: [PATCH 031/110] chore(deps): bump azure-identity from 1.24.0 to 1.25.0 in /services/reis Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.24.0 to 1.25.0. - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.24.0...azure-identity_1.25.0) --- updated-dependencies: - dependency-name: azure-identity dependency-version: 1.25.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 8 ++++---- services/reis/pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index c299409e3..2c49af49d 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -316,14 +316,14 @@ tracing = ["opentelemetry-api (>=1.26,<2.0)"] [[package]] name = "azure-identity" -version = "1.24.0" +version = "1.25.0" description = "Microsoft Azure Identity Library for Python" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "azure_identity-1.24.0-py3-none-any.whl", hash = "sha256:9e04997cde0ab02ed66422c74748548e620b7b29361c72ce622acab0267ff7c4"}, - {file = "azure_identity-1.24.0.tar.gz", hash = "sha256:6c3a40b2a70af831e920b89e6421e8dcd4af78a0cb38b9642d86c67643d4930c"}, + {file = "azure_identity-1.25.0-py3-none-any.whl", hash = "sha256:becaec086bbdf8d1a6aa4fb080c2772a0f824a97d50c29637ec8cc4933f1e82d"}, + {file = "azure_identity-1.25.0.tar.gz", hash = "sha256:4177df34d684cddc026e6cf684e1abb57767aa9d84e7f2129b080ec45eee7733"}, ] [package.dependencies] @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "a529d5edd76f984ebd3c6cb6f45b13e4274f7e003ca4438de98c25b282d4f187" +content-hash = "f6722733498454a3a2d25dfa42e3f7ebb91a52114c328d328c6e8126a9f54977" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index 90e25a50d..d48f85053 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -17,7 +17,7 @@ langchain-postgres = "0.0.15" psycopg = {extras = ["binary"], version = "^3.2.10"} fastapi = {extras = ["standard"], version = "0.116.1"} azure-search-documents = "11.5.3" -azure-identity = "1.24.0" +azure-identity = "1.25.0" unstructured = {extras = ["docx", "md", "pptx", "xlsx"], version = "0.18.14"} pdfminer-six = "^20250506" pypdf = "^6.0.0" From 2d88d142eb59ad1d32ddb13ebb54514483242562 Mon Sep 17 00:00:00 2001 From: Hendrik Schawe Date: Mon, 15 Sep 2025 15:20:17 +0200 Subject: [PATCH 032/110] chore: allow cla for azure-identity --- .github/dependency-review-config.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/dependency-review-config.yaml b/.github/dependency-review-config.yaml index 4d1a82b2b..9d8c21312 100644 --- a/.github/dependency-review-config.yaml +++ b/.github/dependency-review-config.yaml @@ -16,3 +16,4 @@ allow_licenses: - 'CC0-1.0' allow-dependencies-licenses: - 'pkg:pypi/structlog' # This package is a false-positive because of a Contributor License Agreement, which is not a software license. + - 'pkg:pypi/azure-identity' # This package is a false-positive because of a Contributor License Agreement, which is not a software license. From 949e71292800fccee5d69eed758ae0c195ca6fed Mon Sep 17 00:00:00 2001 From: christopherschaedlich Date: Mon, 15 Sep 2025 20:27:15 +0200 Subject: [PATCH 033/110] Feature/enhance reasoning models display (#473) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Implement real-time reasoning display system ✨ Features Added: • Real-time reasoning step visualization with collapsible interface • Loading indicators with progress tracking and animated feedback • Step-by-step reasoning process display with status indicators • Auto-expanding interface when new reasoning steps arrive • Comprehensive state management for reasoning data 🏗️ Technical Implementation: • ChatItemReasoning.tsx: Main display component with animations • ReasoningLoadingIndicator.tsx: Progress tracking and loading states • Extended chat state management with reasoning actions • useReasoning hook for reasoning step manipulation • ReasoningProgressTracker utility for advanced progress tracking • Integrated with existing AIChatItem component 🧪 Testing & Quality: • 100% test coverage for all new components • Integration tests for state management • ESLint and Prettier compliance • Comprehensive unit tests with React Testing Library 📚 Documentation: • Inline code documentation for all public interfaces • Migration guide for integrating with existing chat systems Resolves real-time reasoning transparency requirements. * feat: enhance reasoning display with gray theme, token visibility, and persistent UI - Update color scheme from blue to gray to match project design (ChatItemLogging) - Add tokens field to ReasoningStep interface for raw token display during reasoning - Implement persistent reasoning section that remains visible after completion - Add auto-expand behavior for active reasoning steps - Update ReasoningLoadingIndicator with consistent gray color scheme - Fix all test assertions to match new component behavior - Ensure full test coverage with 103/103 tests passing Features implemented: ✨ Gray color theme (gray-300, gray-100, gray-800, etc.) ✨ Raw token display in monospace font during 'in-progress' status ✨ Persistent collapsible reasoning section post-completion ✨ Auto-expand for active reasoning, manual expand/collapse after completion * feat: add nvidia extension and show reasoning messages * feat: add nvidia logo, and make reasoning content collapsable * feat: use tabler icons * chore: release v9.1.1 --------- Co-authored-by: Niklas Haas --- backend/backend-dev-spec.json | 21 +- backend/package-lock.json | 1738 +++++++++++++---- backend/package.json | 20 +- .../controllers/conversations/dtos/index.ts | 30 + backend/src/domain/chat/interfaces.ts | 11 + .../chat/middlewares/execute-middleware.ts | 17 +- backend/src/domain/chat/utils.ts | 6 + .../src/extensions/models/azure-open-ai.ts | 4 +- backend/src/extensions/models/nvidia.ts | 157 ++ .../extensions/models/open-ai-compatible.ts | 4 +- backend/src/extensions/models/open-ai.ts | 4 +- backend/src/extensions/module.ts | 2 + backend/src/extensions/tools/azure-dall-e.ts | 13 +- backend/src/localization/i18n/de/texts.json | 4 + backend/src/localization/i18n/en/texts.json | 4 + .../api/generated/.openapi-generator/FILES | 2 + .../api/generated/models/StreamEventDto.ts | 24 +- .../generated/models/StreamReasoningDto.ts | 81 + .../generated/models/StreamReasoningEndDto.ts | 72 + frontend/src/api/generated/models/index.ts | 2 + .../chat/conversation/ChatItem/AIChatItem.tsx | 4 + .../ReasoningLoadingIndicator.tsx | 55 + frontend/src/pages/chat/state/chat.ts | 8 + frontend/src/pages/chat/state/types.ts | 2 + .../src/pages/chat/state/zustand/chatStore.ts | 39 + frontend/src/texts/index.ts | 1 + frontend/src/texts/languages/de.ts | 1 + frontend/src/texts/languages/en.ts | 1 + helm-chart/Chart.yaml | 2 +- package-lock.json | 2 +- 30 files changed, 1950 insertions(+), 381 deletions(-) create mode 100644 backend/src/extensions/models/nvidia.ts create mode 100644 frontend/src/api/generated/models/StreamReasoningDto.ts create mode 100644 frontend/src/api/generated/models/StreamReasoningEndDto.ts create mode 100644 frontend/src/pages/chat/conversation/ReasoningLoadingIndicator.tsx diff --git a/backend/backend-dev-spec.json b/backend/backend-dev-spec.json index 923159048..252af8011 100644 --- a/backend/backend-dev-spec.json +++ b/backend/backend-dev-spec.json @@ -1640,6 +1640,19 @@ }, "required": ["content", "type"] }, + "StreamReasoningDto": { + "type": "object", + "properties": { + "content": { "type": "string", "description": "The content ." }, + "type": { "type": "string", "enum": ["reasoning"] } + }, + "required": ["content", "type"] + }, + "StreamReasoningEndDto": { + "type": "object", + "properties": { "type": { "type": "string", "enum": ["reasoning_end"] } }, + "required": ["type"] + }, "StreamEventHolderDto": { "type": "object", "properties": { @@ -1656,7 +1669,9 @@ { "$ref": "#/components/schemas/StreamTokenEventDto" }, { "$ref": "#/components/schemas/StreamToolEndEventDto" }, { "$ref": "#/components/schemas/StreamToolStartEventDto" }, - { "$ref": "#/components/schemas/StreamUIEventDto" } + { "$ref": "#/components/schemas/StreamUIEventDto" }, + { "$ref": "#/components/schemas/StreamReasoningDto" }, + { "$ref": "#/components/schemas/StreamReasoningEndDto" } ], "discriminator": { "propertyName": "type", @@ -1671,7 +1686,9 @@ "chunk": "#/components/schemas/StreamTokenEventDto", "tool_end": "#/components/schemas/StreamToolEndEventDto", "tool_start": "#/components/schemas/StreamToolStartEventDto", - "ui": "#/components/schemas/StreamUIEventDto" + "ui": "#/components/schemas/StreamUIEventDto", + "reasoning": "#/components/schemas/StreamReasoningDto", + "reasoning_end": "#/components/schemas/StreamReasoningEndDto" } } } diff --git a/backend/package-lock.json b/backend/package-lock.json index 1743ed8f9..7f7a5398d 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -12,14 +12,14 @@ "@azure/ai-agents": "^1.1.0", "@azure/core-util": "^1.13.0", "@azure/identity": "^4.11.0", - "@langchain/aws": "0.1.11", - "@langchain/community": "^0.3.48", - "@langchain/core": "^0.3.62", - "@langchain/google-genai": "^0.2.14", - "@langchain/google-vertexai": "^0.2.14", + "@langchain/aws": "0.1.15", + "@langchain/community": "^0.3.55", + "@langchain/core": "^0.3.75", + "@langchain/google-genai": "^0.2.17", + "@langchain/google-vertexai": "^0.2.17", "@langchain/mistralai": "^0.2.1", - "@langchain/ollama": "^0.2.3", - "@langchain/openai": "^0.5.18", + "@langchain/ollama": "^0.2.4", + "@langchain/openai": "^0.6.11", "@modelcontextprotocol/sdk": "^1.17.0", "@n8n/json-schema-to-zod": "^1.1.0", "@nestjs/common": "^11.1.3", @@ -41,13 +41,13 @@ "duck-duck-scrape": "^2.2.7", "express-session": "^1.18.2", "json-diff-ts": "^4.6.3", - "langchain": "^0.3.29", - "langfuse-langchain": "^3.38.4", + "langchain": "^0.3.33", + "langfuse-langchain": "^3.38.5", "logform": "^2.7.0", "nest-winston": "^1.10.2", "nestjs-i18n": "^10.5.1", "nunjucks": "^3.2.4", - "openai": "^5.8.3", + "openai": "5.12.2", "passport-custom": "^1.1.1", "passport-github2": "^0.1.12", "passport-google-oauth2": "^0.2.0", @@ -389,6 +389,40 @@ "license": "MIT", "peer": true }, + "node_modules/@aws-crypto/crc32": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", + "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/crc32/node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/crc32/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", + "optional": true, + "peer": true + }, "node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", "license": "Apache-2.0", @@ -482,10 +516,12 @@ } }, "node_modules/@aws-sdk/client-bedrock-agent-runtime/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -504,53 +540,57 @@ } }, "node_modules/@aws-sdk/client-bedrock-runtime": { - "version": "3.806.0", + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.888.0.tgz", + "integrity": "sha512-XuTayKaxjQkBtasJp4+mzXwE06k8YML+VKMcYEq096JFC4/bwQA1TrF/T8wlE6Xw6FD/XU2OUdLfq3j/QgEOgA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.806.0", - "@aws-sdk/credential-provider-node": "3.806.0", - "@aws-sdk/eventstream-handler-node": "3.804.0", - "@aws-sdk/middleware-eventstream": "3.804.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.806.0", - "@aws-sdk/region-config-resolver": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.806.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.806.0", - "@smithy/config-resolver": "^4.1.1", - "@smithy/core": "^3.3.1", - "@smithy/eventstream-serde-browser": "^4.0.2", - "@smithy/eventstream-serde-config-resolver": "^4.1.0", - "@smithy/eventstream-serde-node": "^4.0.2", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.3", - "@smithy/middleware-retry": "^4.1.4", - "@smithy/middleware-serde": "^4.0.3", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.0", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.3", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.11", - "@smithy/util-defaults-mode-node": "^4.0.11", - "@smithy/util-endpoints": "^3.0.3", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-stream": "^4.2.0", - "@smithy/util-utf8": "^4.0.0", + "@aws-sdk/core": "3.888.0", + "@aws-sdk/credential-provider-node": "3.888.0", + "@aws-sdk/eventstream-handler-node": "3.887.0", + "@aws-sdk/middleware-eventstream": "3.887.0", + "@aws-sdk/middleware-host-header": "3.887.0", + "@aws-sdk/middleware-logger": "3.887.0", + "@aws-sdk/middleware-recursion-detection": "3.887.0", + "@aws-sdk/middleware-user-agent": "3.888.0", + "@aws-sdk/middleware-websocket": "3.887.0", + "@aws-sdk/region-config-resolver": "3.887.0", + "@aws-sdk/token-providers": "3.888.0", + "@aws-sdk/types": "3.887.0", + "@aws-sdk/util-endpoints": "3.887.0", + "@aws-sdk/util-user-agent-browser": "3.887.0", + "@aws-sdk/util-user-agent-node": "3.888.0", + "@smithy/config-resolver": "^4.2.1", + "@smithy/core": "^3.11.0", + "@smithy/eventstream-serde-browser": "^4.1.1", + "@smithy/eventstream-serde-config-resolver": "^4.2.1", + "@smithy/eventstream-serde-node": "^4.1.1", + "@smithy/fetch-http-handler": "^5.2.1", + "@smithy/hash-node": "^4.1.1", + "@smithy/invalid-dependency": "^4.1.1", + "@smithy/middleware-content-length": "^4.1.1", + "@smithy/middleware-endpoint": "^4.2.1", + "@smithy/middleware-retry": "^4.2.1", + "@smithy/middleware-serde": "^4.1.1", + "@smithy/middleware-stack": "^4.1.1", + "@smithy/node-config-provider": "^4.2.1", + "@smithy/node-http-handler": "^4.2.1", + "@smithy/protocol-http": "^5.2.1", + "@smithy/smithy-client": "^4.6.1", + "@smithy/types": "^4.5.0", + "@smithy/url-parser": "^4.1.1", + "@smithy/util-base64": "^4.1.0", + "@smithy/util-body-length-browser": "^4.1.0", + "@smithy/util-body-length-node": "^4.1.0", + "@smithy/util-defaults-mode-browser": "^4.1.1", + "@smithy/util-defaults-mode-node": "^4.1.1", + "@smithy/util-endpoints": "^3.1.1", + "@smithy/util-middleware": "^4.1.1", + "@smithy/util-retry": "^4.1.1", + "@smithy/util-stream": "^4.3.1", + "@smithy/util-utf8": "^4.1.0", "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" @@ -559,11 +599,468 @@ "node": ">=18.0.0" } }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/client-sso": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.888.0.tgz", + "integrity": "sha512-8CLy/ehGKUmekjH+VtZJ4w40PqDg3u0K7uPziq/4P8Q7LLgsy8YQoHNbuY4am7JU3HWrqLXJI9aaz1+vPGPoWA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.888.0", + "@aws-sdk/middleware-host-header": "3.887.0", + "@aws-sdk/middleware-logger": "3.887.0", + "@aws-sdk/middleware-recursion-detection": "3.887.0", + "@aws-sdk/middleware-user-agent": "3.888.0", + "@aws-sdk/region-config-resolver": "3.887.0", + "@aws-sdk/types": "3.887.0", + "@aws-sdk/util-endpoints": "3.887.0", + "@aws-sdk/util-user-agent-browser": "3.887.0", + "@aws-sdk/util-user-agent-node": "3.888.0", + "@smithy/config-resolver": "^4.2.1", + "@smithy/core": "^3.11.0", + "@smithy/fetch-http-handler": "^5.2.1", + "@smithy/hash-node": "^4.1.1", + "@smithy/invalid-dependency": "^4.1.1", + "@smithy/middleware-content-length": "^4.1.1", + "@smithy/middleware-endpoint": "^4.2.1", + "@smithy/middleware-retry": "^4.2.1", + "@smithy/middleware-serde": "^4.1.1", + "@smithy/middleware-stack": "^4.1.1", + "@smithy/node-config-provider": "^4.2.1", + "@smithy/node-http-handler": "^4.2.1", + "@smithy/protocol-http": "^5.2.1", + "@smithy/smithy-client": "^4.6.1", + "@smithy/types": "^4.5.0", + "@smithy/url-parser": "^4.1.1", + "@smithy/util-base64": "^4.1.0", + "@smithy/util-body-length-browser": "^4.1.0", + "@smithy/util-body-length-node": "^4.1.0", + "@smithy/util-defaults-mode-browser": "^4.1.1", + "@smithy/util-defaults-mode-node": "^4.1.1", + "@smithy/util-endpoints": "^3.1.1", + "@smithy/util-middleware": "^4.1.1", + "@smithy/util-retry": "^4.1.1", + "@smithy/util-utf8": "^4.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/core": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.888.0.tgz", + "integrity": "sha512-L3S2FZywACo4lmWv37Y4TbefuPJ1fXWyWwIJ3J4wkPYFJ47mmtUPqThlVrSbdTHkEjnZgJe5cRfxk0qCLsFh1w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.887.0", + "@aws-sdk/xml-builder": "3.887.0", + "@smithy/core": "^3.11.0", + "@smithy/node-config-provider": "^4.2.1", + "@smithy/property-provider": "^4.0.5", + "@smithy/protocol-http": "^5.2.1", + "@smithy/signature-v4": "^5.1.3", + "@smithy/smithy-client": "^4.6.1", + "@smithy/types": "^4.5.0", + "@smithy/util-base64": "^4.1.0", + "@smithy/util-body-length-browser": "^4.1.0", + "@smithy/util-middleware": "^4.1.1", + "@smithy/util-utf8": "^4.1.0", + "fast-xml-parser": "5.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.888.0.tgz", + "integrity": "sha512-shPi4AhUKbIk7LugJWvNpeZA8va7e5bOHAEKo89S0Ac8WDZt2OaNzbh/b9l0iSL2eEyte8UgIsYGcFxOwIF1VA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.888.0", + "@aws-sdk/types": "3.887.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.888.0.tgz", + "integrity": "sha512-Jvuk6nul0lE7o5qlQutcqlySBHLXOyoPtiwE6zyKbGc7RVl0//h39Lab7zMeY2drMn8xAnIopL4606Fd8JI/Hw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.888.0", + "@aws-sdk/types": "3.887.0", + "@smithy/fetch-http-handler": "^5.2.1", + "@smithy/node-http-handler": "^4.2.1", + "@smithy/property-provider": "^4.0.5", + "@smithy/protocol-http": "^5.2.1", + "@smithy/smithy-client": "^4.6.1", + "@smithy/types": "^4.5.0", + "@smithy/util-stream": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.888.0.tgz", + "integrity": "sha512-M82ItvS5yq+tO6ZOV1ruaVs2xOne+v8HW85GFCXnz8pecrzYdgxh6IsVqEbbWruryG/mUGkWMbkBZoEsy4MgyA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.888.0", + "@aws-sdk/credential-provider-env": "3.888.0", + "@aws-sdk/credential-provider-http": "3.888.0", + "@aws-sdk/credential-provider-process": "3.888.0", + "@aws-sdk/credential-provider-sso": "3.888.0", + "@aws-sdk/credential-provider-web-identity": "3.888.0", + "@aws-sdk/nested-clients": "3.888.0", + "@aws-sdk/types": "3.887.0", + "@smithy/credential-provider-imds": "^4.0.7", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.888.0.tgz", + "integrity": "sha512-KCrQh1dCDC8Y+Ap3SZa6S81kHk+p+yAaOQ5jC3dak4zhHW3RCrsGR/jYdemTOgbEGcA6ye51UbhWfrrlMmeJSA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.888.0", + "@aws-sdk/credential-provider-http": "3.888.0", + "@aws-sdk/credential-provider-ini": "3.888.0", + "@aws-sdk/credential-provider-process": "3.888.0", + "@aws-sdk/credential-provider-sso": "3.888.0", + "@aws-sdk/credential-provider-web-identity": "3.888.0", + "@aws-sdk/types": "3.887.0", + "@smithy/credential-provider-imds": "^4.0.7", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.888.0.tgz", + "integrity": "sha512-+aX6piSukPQ8DUS4JAH344GePg8/+Q1t0+kvSHAZHhYvtQ/1Zek3ySOJWH2TuzTPCafY4nmWLcQcqvU1w9+4Lw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.888.0", + "@aws-sdk/types": "3.887.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.888.0.tgz", + "integrity": "sha512-b1ZJji7LJ6E/j1PhFTyvp51in2iCOQ3VP6mj5H6f5OUnqn7efm41iNMoinKr87n0IKZw7qput5ggXVxEdPhouA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.888.0", + "@aws-sdk/core": "3.888.0", + "@aws-sdk/token-providers": "3.888.0", + "@aws-sdk/types": "3.887.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.888.0.tgz", + "integrity": "sha512-7P0QNtsDzMZdmBAaY/vY1BsZHwTGvEz3bsn2bm5VSKFAeMmZqsHK1QeYdNsFjLtegnVh+wodxMq50jqLv3LFlA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.888.0", + "@aws-sdk/nested-clients": "3.888.0", + "@aws-sdk/types": "3.887.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.887.0.tgz", + "integrity": "sha512-ulzqXv6NNqdu/kr0sgBYupWmahISHY+azpJidtK6ZwQIC+vBUk9NdZeqQpy7KVhIk2xd4+5Oq9rxapPwPI21CA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.887.0", + "@smithy/protocol-http": "^5.2.1", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-logger": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.887.0.tgz", + "integrity": "sha512-YbbgLI6jKp2qSoAcHnXrQ5jcuc5EYAmGLVFgMVdk8dfCfJLfGGSaOLxF4CXC7QYhO50s+mPPkhBYejCik02Kug==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.887.0", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.887.0.tgz", + "integrity": "sha512-tjrUXFtQnFLo+qwMveq5faxP5MQakoLArXtqieHphSqZTXm21wDJM73hgT4/PQQGTwgYjDKqnqsE1hvk0hcfDw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.887.0", + "@aws/lambda-invoke-store": "^0.0.1", + "@smithy/protocol-http": "^5.2.1", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.888.0.tgz", + "integrity": "sha512-ZkcUkoys8AdrNNG7ATjqw2WiXqrhTvT+r4CIK3KhOqIGPHX0p0DQWzqjaIl7ZhSUToKoZ4Ud7MjF795yUr73oA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.888.0", + "@aws-sdk/types": "3.887.0", + "@aws-sdk/util-endpoints": "3.887.0", + "@smithy/core": "^3.11.0", + "@smithy/protocol-http": "^5.2.1", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/nested-clients": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.888.0.tgz", + "integrity": "sha512-py4o4RPSGt+uwGvSBzR6S6cCBjS4oTX5F8hrHFHfPCdIOMVjyOBejn820jXkCrcdpSj3Qg1yUZXxsByvxc9Lyg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.888.0", + "@aws-sdk/middleware-host-header": "3.887.0", + "@aws-sdk/middleware-logger": "3.887.0", + "@aws-sdk/middleware-recursion-detection": "3.887.0", + "@aws-sdk/middleware-user-agent": "3.888.0", + "@aws-sdk/region-config-resolver": "3.887.0", + "@aws-sdk/types": "3.887.0", + "@aws-sdk/util-endpoints": "3.887.0", + "@aws-sdk/util-user-agent-browser": "3.887.0", + "@aws-sdk/util-user-agent-node": "3.888.0", + "@smithy/config-resolver": "^4.2.1", + "@smithy/core": "^3.11.0", + "@smithy/fetch-http-handler": "^5.2.1", + "@smithy/hash-node": "^4.1.1", + "@smithy/invalid-dependency": "^4.1.1", + "@smithy/middleware-content-length": "^4.1.1", + "@smithy/middleware-endpoint": "^4.2.1", + "@smithy/middleware-retry": "^4.2.1", + "@smithy/middleware-serde": "^4.1.1", + "@smithy/middleware-stack": "^4.1.1", + "@smithy/node-config-provider": "^4.2.1", + "@smithy/node-http-handler": "^4.2.1", + "@smithy/protocol-http": "^5.2.1", + "@smithy/smithy-client": "^4.6.1", + "@smithy/types": "^4.5.0", + "@smithy/url-parser": "^4.1.1", + "@smithy/util-base64": "^4.1.0", + "@smithy/util-body-length-browser": "^4.1.0", + "@smithy/util-body-length-node": "^4.1.0", + "@smithy/util-defaults-mode-browser": "^4.1.1", + "@smithy/util-defaults-mode-node": "^4.1.1", + "@smithy/util-endpoints": "^3.1.1", + "@smithy/util-middleware": "^4.1.1", + "@smithy/util-retry": "^4.1.1", + "@smithy/util-utf8": "^4.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.887.0.tgz", + "integrity": "sha512-VdSMrIqJ3yjJb/fY+YAxrH/lCVv0iL8uA+lbMNfQGtO5tB3Zx6SU9LEpUwBNX8fPK1tUpI65CNE4w42+MY/7Mg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.887.0", + "@smithy/node-config-provider": "^4.2.1", + "@smithy/types": "^4.5.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.1.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/token-providers": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.888.0.tgz", + "integrity": "sha512-WA3NF+3W8GEuCMG1WvkDYbB4z10G3O8xuhT7QSjhvLYWQ9CPt3w4VpVIfdqmUn131TCIbhCzD0KN/1VJTjAjyw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.888.0", + "@aws-sdk/nested-clients": "3.888.0", + "@aws-sdk/types": "3.887.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/types": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.887.0.tgz", + "integrity": "sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/util-endpoints": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.887.0.tgz", + "integrity": "sha512-kpegvT53KT33BMeIcGLPA65CQVxLUL/C3gTz9AzlU/SDmeusBHX4nRApAicNzI/ltQ5lxZXbQn18UczzBuwF1w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.887.0", + "@smithy/types": "^4.5.0", + "@smithy/url-parser": "^4.1.1", + "@smithy/util-endpoints": "^3.1.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.887.0.tgz", + "integrity": "sha512-X71UmVsYc6ZTH4KU6hA5urOzYowSXc3qvroagJNLJYU1ilgZ529lP4J9XOYfEvTXkLR1hPFSRxa43SrwgelMjA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.887.0", + "@smithy/types": "^4.5.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.888.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.888.0.tgz", + "integrity": "sha512-rSB3OHyuKXotIGfYEo//9sU0lXAUrTY28SUUnxzOGYuQsAt0XR5iYwBAp+RjV6x8f+Hmtbg0PdCsy1iNAXa0UQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.888.0", + "@aws-sdk/types": "3.887.0", + "@smithy/node-config-provider": "^4.2.1", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/is-array-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.1.0.tgz", + "integrity": "sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/signature-v4": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.2.1.tgz", + "integrity": "sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.1.0", + "@smithy/protocol-http": "^5.2.1", + "@smithy/types": "^4.5.0", + "@smithy/util-hex-encoding": "^4.1.0", + "@smithy/util-middleware": "^4.1.1", + "@smithy/util-uri-escape": "^4.1.0", + "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -571,16 +1068,48 @@ } }, "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-utf8": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", + "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/@aws-sdk/client-kendra": { "version": "3.806.0", "license": "Apache-2.0", @@ -632,10 +1161,12 @@ } }, "node_modules/@aws-sdk/client-kendra/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -701,10 +1232,12 @@ } }, "node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -743,7 +1276,9 @@ } }, "node_modules/@aws-sdk/core/node_modules/@smithy/is-array-buffer": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.1.0.tgz", + "integrity": "sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -753,10 +1288,12 @@ } }, "node_modules/@aws-sdk/core/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -764,26 +1301,18 @@ } }, "node_modules/@aws-sdk/core/node_modules/@smithy/signature-v4": { - "version": "5.1.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^4.0.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "@smithy/util-hex-encoding": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-uri-escape": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/core/node_modules/@smithy/util-hex-encoding": { - "version": "4.0.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.2.1.tgz", + "integrity": "sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA==", "license": "Apache-2.0", "dependencies": { + "@smithy/is-array-buffer": "^4.1.0", + "@smithy/protocol-http": "^5.2.1", + "@smithy/types": "^4.5.0", + "@smithy/util-hex-encoding": "^4.1.0", + "@smithy/util-middleware": "^4.1.1", + "@smithy/util-uri-escape": "^4.1.0", + "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -791,10 +1320,12 @@ } }, "node_modules/@aws-sdk/core/node_modules/@smithy/util-utf8": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", + "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -835,10 +1366,12 @@ } }, "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -936,12 +1469,14 @@ } }, "node_modules/@aws-sdk/eventstream-handler-node": { - "version": "3.804.0", + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.887.0.tgz", + "integrity": "sha512-BFzSgyrbCOr9O2bOZCq7uOw4fuJP0Lpt7++41YNfzAXInNSYcSKFLDhmnrDnSSqJ+yC7SWOAiPYSV5o66YNzFA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/eventstream-codec": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.887.0", + "@smithy/eventstream-codec": "^4.0.5", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -950,6 +1485,8 @@ }, "node_modules/@aws-sdk/eventstream-handler-node/node_modules/@aws-crypto/crc32": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", @@ -960,36 +1497,56 @@ "node": ">=16.0.0" } }, + "node_modules/@aws-sdk/eventstream-handler-node/node_modules/@aws-sdk/types": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.887.0.tgz", + "integrity": "sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@aws-sdk/eventstream-handler-node/node_modules/@smithy/eventstream-codec": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.1.1.tgz", + "integrity": "sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.2.0", - "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/types": "^4.5.0", + "@smithy/util-hex-encoding": "^4.1.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/eventstream-handler-node/node_modules/@smithy/util-hex-encoding": { - "version": "4.0.0", + "node_modules/@aws-sdk/middleware-eventstream": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.887.0.tgz", + "integrity": "sha512-OeZyhx9O5u3aYmkKspByzuUes2AUbbZjr52SM2KmP/9qRBuQ20rUMir4d6iYtN0Ha24OOkhDOlEtEjkEN546rQ==", "license": "Apache-2.0", "dependencies": { + "@aws-sdk/types": "3.887.0", + "@smithy/protocol-http": "^5.2.1", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-eventstream": { - "version": "3.804.0", + "node_modules/@aws-sdk/middleware-eventstream/node_modules/@aws-sdk/types": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.887.0.tgz", + "integrity": "sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -997,10 +1554,12 @@ } }, "node_modules/@aws-sdk/middleware-eventstream/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1021,10 +1580,12 @@ } }, "node_modules/@aws-sdk/middleware-host-header/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1057,10 +1618,12 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1084,10 +1647,132 @@ } }, "node_modules/@aws-sdk/middleware-user-agent/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-websocket": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.887.0.tgz", + "integrity": "sha512-qEv2c3sritwdYUERMYmLCt3kw/MI8or0s1C8/y5CyINJ5DAlwlnyHbKxKvG0+QuUXEctpuhji2ZO3Cb0kmYD2Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.887.0", + "@aws-sdk/util-format-url": "3.887.0", + "@smithy/eventstream-codec": "^4.0.5", + "@smithy/eventstream-serde-browser": "^4.1.1", + "@smithy/fetch-http-handler": "^5.2.1", + "@smithy/protocol-http": "^5.2.1", + "@smithy/signature-v4": "^5.1.3", + "@smithy/types": "^4.5.0", + "@smithy/util-hex-encoding": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-websocket/node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-websocket/node_modules/@aws-sdk/types": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.887.0.tgz", + "integrity": "sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/eventstream-codec": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.1.1.tgz", + "integrity": "sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.5.0", + "@smithy/util-hex-encoding": "^4.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/is-array-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.1.0.tgz", + "integrity": "sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/protocol-http": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/signature-v4": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.2.1.tgz", + "integrity": "sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.1.0", + "@smithy/protocol-http": "^5.2.1", + "@smithy/types": "^4.5.0", + "@smithy/util-hex-encoding": "^4.1.0", + "@smithy/util-middleware": "^4.1.1", + "@smithy/util-uri-escape": "^4.1.0", + "@smithy/util-utf8": "^4.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/util-utf8": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", + "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -1142,10 +1827,12 @@ } }, "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1217,6 +1904,34 @@ "node": ">=18.0.0" } }, + "node_modules/@aws-sdk/util-format-url": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.887.0.tgz", + "integrity": "sha512-ABDSP6KsrdD+JC7qwMqUpLXqPidvfgT+Q+W8sGGuk/IBy7smgZDOdYSZLE4VBbQpH3N/zSJuslAWhL2x37Qwww==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.887.0", + "@smithy/querystring-builder": "^4.1.1", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-format-url/node_modules/@aws-sdk/types": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.887.0.tgz", + "integrity": "sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.804.0", "license": "Apache-2.0", @@ -1259,6 +1974,39 @@ } } }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.887.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.887.0.tgz", + "integrity": "sha512-lMwgWK1kNgUhHGfBvO/5uLe7TKhycwOn3eRCqsKPT9aPCx/HWuTlpcQp8oW2pCRGLS7qzcxqpQulcD+bbUL7XQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.0.1.tgz", + "integrity": "sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@azure-rest/core-client": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@azure-rest/core-client/-/core-client-2.5.0.tgz", @@ -3239,13 +3987,13 @@ } }, "node_modules/@langchain/aws": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@langchain/aws/-/aws-0.1.11.tgz", - "integrity": "sha512-JNnEmJaJB5TzcniPYGZi6dlpmZyzeyVsS+Za0Ye1DhCpcNmEiWRy514gVcTPQUEl5EcpIR51B/YyowI7zUzVvg==", + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/@langchain/aws/-/aws-0.1.15.tgz", + "integrity": "sha512-oyOMhTHP0rxdSCVI/g5KXYCOs9Kq/FpXMZbOk1JSIUoaIzUg4p6d98lsHu7erW//8NSaT+SX09QRbVDAgt7pNA==", "license": "MIT", "dependencies": { "@aws-sdk/client-bedrock-agent-runtime": "^3.755.0", - "@aws-sdk/client-bedrock-runtime": "^3.755.0", + "@aws-sdk/client-bedrock-runtime": "^3.840.0", "@aws-sdk/client-kendra": "^3.750.0", "@aws-sdk/credential-provider-node": "^3.750.0" }, @@ -3257,18 +4005,19 @@ } }, "node_modules/@langchain/community": { - "version": "0.3.48", - "resolved": "https://registry.npmjs.org/@langchain/community/-/community-0.3.48.tgz", - "integrity": "sha512-0KceBKSx34lL5cnbKybWIMQAFTgkZJMOzcZ1YdcagIwgoDa5a4MsJdtTABxaY0gu+87Uo3KqMj+GXx2wQqnZWA==", + "version": "0.3.55", + "resolved": "https://registry.npmjs.org/@langchain/community/-/community-0.3.55.tgz", + "integrity": "sha512-vCBM59gYfsRxB+OCD2ot/6Hb5/uKHipGKDxP6Jq3PCB/hUR6crvPi0nxb1bi+DJub6FpZUmSnwj7YV240ObaaQ==", + "license": "MIT", "dependencies": { - "@langchain/openai": ">=0.2.0 <0.6.0", + "@langchain/openai": ">=0.2.0 <0.7.0", "@langchain/weaviate": "^0.2.0", "binary-extensions": "^2.2.0", "expr-eval": "^2.0.2", "flat": "^5.0.2", "js-yaml": "^4.1.0", "langchain": ">=0.2.3 <0.3.0 || >=0.3.4 <0.4.0", - "langsmith": "^0.3.33", + "langsmith": "^0.3.67", "uuid": "^10.0.0", "zod": "^3.25.32" }, @@ -3319,7 +4068,7 @@ "@pinecone-database/pinecone": "*", "@planetscale/database": "^1.8.0", "@premai/prem-sdk": "^0.3.25", - "@qdrant/js-client-rest": "^1.8.2", + "@qdrant/js-client-rest": "^1.15.0", "@raycast/api": "^1.55.2", "@rockset/client": "^0.9.1", "@smithy/eventstream-codec": "^2.0.5", @@ -3359,7 +4108,7 @@ "duck-duck-scrape": "^2.2.5", "epub2": "^3.0.1", "fast-xml-parser": "*", - "firebase-admin": "^11.9.0 || ^12.0.0", + "firebase-admin": "^11.9.0 || ^12.0.0 || ^13.0.0", "google-auth-library": "*", "googleapis": "*", "hnswlib-node": "^3.0.0", @@ -3794,16 +4543,17 @@ } }, "node_modules/@langchain/core": { - "version": "0.3.62", - "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.62.tgz", - "integrity": "sha512-GqRTcoUPnozGRMUcA6QkP7LHL/OvanGdB51Jgb0w7IIPDI3wFugxMHZ4gphnGDtxsD1tQY5ykyEpYNxFK8kl1w==", + "version": "0.3.75", + "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.75.tgz", + "integrity": "sha512-kTyBS0DTeD0JYa9YH5lg6UdDbHmvplk3t9PCjP5jDQZCK5kPe2aDFToqdiCaLzZg8RzzM+clXLVyJtPTE8bZ2Q==", + "license": "MIT", "dependencies": { "@cfworker/json-schema": "^4.0.2", "ansi-styles": "^5.0.0", "camelcase": "6", "decamelize": "1.2.0", "js-tiktoken": "^1.0.12", - "langsmith": "^0.3.33", + "langsmith": "^0.3.67", "mustache": "^4.2.0", "p-queue": "^6.6.2", "p-retry": "4", @@ -3829,9 +4579,10 @@ } }, "node_modules/@langchain/google-common": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/@langchain/google-common/-/google-common-0.2.14.tgz", - "integrity": "sha512-oz1YwwPUP+FC5UMLus1reJ578LfNSEh81shqBP8xXDioLUfKub6p5Jye61gHm8JTXcSvKHPCLGPeK0Uq7PDx2g==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/@langchain/google-common/-/google-common-0.2.17.tgz", + "integrity": "sha512-51h/BHl8EzAES83U7BJV2TrxMYGf0oNx0jE0YAzMBpe6rG0lkjrV8K2jFtvRxLIp/+RyKlfrd+eC5+DcymGLKw==", + "license": "MIT", "dependencies": { "uuid": "^10.0.0" }, @@ -3850,16 +4601,18 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/@langchain/google-gauth": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/@langchain/google-gauth/-/google-gauth-0.2.14.tgz", - "integrity": "sha512-vS68e13eupTOfQ6P0QpIaOkiAlwZthV23U9Afm7b6rD2lsZ78jwTabzmmkU2o9x/DioNa9hEPpbE7+Z26V0NYg==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/@langchain/google-gauth/-/google-gauth-0.2.17.tgz", + "integrity": "sha512-EubaUKlWo5TLjHRRoQNL40EhytWNZwgwzo8qyM0Kh8hDNK6sKOiXxeV2w2Ehmd8z3cNW5pF0d+96A19e31W4lA==", + "license": "MIT", "dependencies": { - "@langchain/google-common": "^0.2.14", + "@langchain/google-common": "^0.2.17", "google-auth-library": "^10.1.0" }, "engines": { @@ -3870,9 +4623,10 @@ } }, "node_modules/@langchain/google-genai": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/@langchain/google-genai/-/google-genai-0.2.14.tgz", - "integrity": "sha512-gKe/T2LNh8wSSMJOaFmYd8cwQnDSXKtVtC6a7CFoq5nWuh0bKzhItM/7bue1aMN8mlKfB2G1HCwxhaZoSpS/DA==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/@langchain/google-genai/-/google-genai-0.2.17.tgz", + "integrity": "sha512-A21HhTJ5WQdh06ZMC8o/1HzkptHudzzRU8oExcWQ8aRa3Q9/4Es4bopEsEnu50rmDeARG3czMsUSUVS+BQYGEA==", + "license": "MIT", "dependencies": { "@google/generative-ai": "^0.24.0", "uuid": "^11.1.0" @@ -3898,11 +4652,12 @@ } }, "node_modules/@langchain/google-vertexai": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/@langchain/google-vertexai/-/google-vertexai-0.2.14.tgz", - "integrity": "sha512-OqfK3xDo8AmVFJHoINSfqFeKCp4d9aH4YnCOPBe6qDaTnME1QTCHs3U9BRWwUhfD46K50ocbQUAsnTYSclhhMg==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/@langchain/google-vertexai/-/google-vertexai-0.2.17.tgz", + "integrity": "sha512-iK5rM7p2TG+gbTA1EOhZdCIvRfafVm7kqD/6AqNyOhPBMyZl20ZN6n9Ttbj9ihBHWmMBeIgN1+Ia8dru0E+rlg==", + "license": "MIT", "dependencies": { - "@langchain/google-gauth": "^0.2.14" + "@langchain/google-gauth": "^0.2.17" }, "engines": { "node": ">=18" @@ -3939,11 +4694,12 @@ } }, "node_modules/@langchain/ollama": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@langchain/ollama/-/ollama-0.2.3.tgz", - "integrity": "sha512-1Obe45jgQspqLMBVlayQbGdywFmri8DgmGRdzNu0li56cG5RReYlRCFVDZBRMMvF9JhsP5eXRyfyivtKfITHWQ==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@langchain/ollama/-/ollama-0.2.4.tgz", + "integrity": "sha512-XThDrZurNPcUO6sasN13rkes1aGgu5gWAtDkkyIGT3ZeMOvrYgPKGft+bbhvsigTIH9C01TfPzrSp8LAmvHIjA==", + "license": "MIT", "dependencies": { - "ollama": "^0.5.12", + "ollama": "^0.5.17", "uuid": "^10.0.0" }, "engines": { @@ -3967,19 +4723,20 @@ } }, "node_modules/@langchain/openai": { - "version": "0.5.18", - "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.5.18.tgz", - "integrity": "sha512-CX1kOTbT5xVFNdtLjnM0GIYNf+P7oMSu+dGCFxxWRa3dZwWiuyuBXCm+dToUGxDLnsHuV1bKBtIzrY1mLq/A1Q==", + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.6.11.tgz", + "integrity": "sha512-BkaudQTLsmdt9mF6tn6CrsK2TEFKk4EhAWYkouGTy/ljJIH/p2Nz9awIOGdrQiQt6AJ5mvKGupyVqy3W/jim2Q==", + "license": "MIT", "dependencies": { "js-tiktoken": "^1.0.12", - "openai": "^5.3.0", + "openai": "5.12.2", "zod": "^3.25.32" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@langchain/core": ">=0.3.58 <0.4.0" + "@langchain/core": ">=0.3.68 <0.4.0" } }, "node_modules/@langchain/textsplitters": { @@ -5058,10 +5815,12 @@ } }, "node_modules/@smithy/abort-controller": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.1.1.tgz", + "integrity": "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5069,13 +5828,15 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "4.1.2", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.2.1.tgz", + "integrity": "sha512-FXil8q4QN7mgKwU2hCLm0ltab8NyY/1RiqEf25Jnf6WLS3wmb11zGAoLETqg1nur2Aoibun4w4MjeN9CMJ4G6A==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.1.1", - "@smithy/types": "^4.2.0", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", + "@smithy/node-config-provider": "^4.2.1", + "@smithy/types": "^4.5.0", + "@smithy/util-config-provider": "^4.1.0", + "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" }, "engines": { @@ -5083,27 +5844,34 @@ } }, "node_modules/@smithy/core": { - "version": "3.3.1", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.11.0.tgz", + "integrity": "sha512-Abs5rdP1o8/OINtE49wwNeWuynCu0kme1r4RI3VXVrHr4odVDG7h7mTnw1WXXfN5Il+c25QOnrdL2y56USfxkA==", "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-serde": "^4.0.3", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-stream": "^4.2.0", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" + "@smithy/middleware-serde": "^4.1.1", + "@smithy/protocol-http": "^5.2.1", + "@smithy/types": "^4.5.0", + "@smithy/util-base64": "^4.1.0", + "@smithy/util-body-length-browser": "^4.1.0", + "@smithy/util-middleware": "^4.1.1", + "@smithy/util-stream": "^4.3.1", + "@smithy/util-utf8": "^4.1.0", + "@types/uuid": "^9.0.1", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/core/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5111,10 +5879,12 @@ } }, "node_modules/@smithy/core/node_modules/@smithy/util-utf8": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", + "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -5122,25 +5892,71 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.0.4", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.1.1.tgz", + "integrity": "sha512-1WdBfM9DwA59pnpIizxnUvBf/de18p4GP+6zP2AqrlFzoW3ERpZaT4QueBR0nS9deDMaQRkBlngpVlnkuuTisQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.1.1", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@smithy/node-config-provider": "^4.2.1", + "@smithy/property-provider": "^4.1.1", + "@smithy/types": "^4.5.0", + "@smithy/url-parser": "^4.1.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, + "node_modules/@smithy/eventstream-codec": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.2.0.tgz", + "integrity": "sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@smithy/types": "^2.12.0", + "@smithy/util-hex-encoding": "^2.2.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/eventstream-codec/node_modules/@smithy/types": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", + "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-codec/node_modules/@smithy/util-hex-encoding": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", + "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.1.1.tgz", + "integrity": "sha512-Q9QWdAzRaIuVkefupRPRFAasaG/droBqn1feiMnmLa+LLEUG45pqX1+FurHFmlqiCfobB3nUlgoJfeXZsr7MPA==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/eventstream-serde-universal": "^4.1.1", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5148,10 +5964,12 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.1.0", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.2.1.tgz", + "integrity": "sha512-oSUkF9zDN9zcOUBMtxp8RewJlh71E9NoHWU8jE3hU9JMYCsmW4assVTpgic/iS3/dM317j6hO5x18cc3XrfvEw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5159,11 +5977,13 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.1.1.tgz", + "integrity": "sha512-tn6vulwf/ScY0vjhzptSJuDJJqlhNtUjkxJ4wiv9E3SPoEqTEKbaq6bfqRO7nvhTG29ALICRcvfFheOUPl8KNA==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/eventstream-serde-universal": "^4.1.1", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5171,11 +5991,13 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.1.1.tgz", + "integrity": "sha512-uLOAiM/Dmgh2CbEXQx+6/ssK7fbzFhd+LjdyFxXid5ZBCbLHTFHLdD/QbXw5aEDsLxQhgzDxLLsZhsftAYwHJA==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/eventstream-codec": "^4.1.1", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5184,6 +6006,8 @@ }, "node_modules/@smithy/eventstream-serde-universal/node_modules/@aws-crypto/crc32": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", @@ -5195,22 +6019,14 @@ } }, "node_modules/@smithy/eventstream-serde-universal/node_modules/@smithy/eventstream-codec": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.1.1.tgz", + "integrity": "sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.2.0", - "@smithy/util-hex-encoding": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-universal/node_modules/@smithy/util-hex-encoding": { - "version": "4.0.0", - "license": "Apache-2.0", - "dependencies": { + "@smithy/types": "^4.5.0", + "@smithy/util-hex-encoding": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -5218,13 +6034,15 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.0.2", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.2.1.tgz", + "integrity": "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.1.0", - "@smithy/querystring-builder": "^4.0.2", - "@smithy/types": "^4.2.0", - "@smithy/util-base64": "^4.0.0", + "@smithy/protocol-http": "^5.2.1", + "@smithy/querystring-builder": "^4.1.1", + "@smithy/types": "^4.5.0", + "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -5232,10 +6050,12 @@ } }, "node_modules/@smithy/fetch-http-handler/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5243,12 +6063,14 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.1.1.tgz", + "integrity": "sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", - "@smithy/util-buffer-from": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", + "@smithy/types": "^4.5.0", + "@smithy/util-buffer-from": "^4.1.0", + "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -5256,10 +6078,12 @@ } }, "node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", + "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -5267,10 +6091,12 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.1.1.tgz", + "integrity": "sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5288,11 +6114,13 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.1.1.tgz", + "integrity": "sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@smithy/protocol-http": "^5.2.1", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5300,10 +6128,12 @@ } }, "node_modules/@smithy/middleware-content-length/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5311,16 +6141,18 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.1.4", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.2.1.tgz", + "integrity": "sha512-fUTMmQvQQZakXOuKizfu7fBLDpwvWZjfH6zUK2OLsoNZRZGbNUdNSdLJHpwk1vS208jtDjpUIskh+JoA8zMzZg==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.3.1", - "@smithy/middleware-serde": "^4.0.3", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-middleware": "^4.0.2", + "@smithy/core": "^3.11.0", + "@smithy/middleware-serde": "^4.1.1", + "@smithy/node-config-provider": "^4.2.1", + "@smithy/shared-ini-file-loader": "^4.1.1", + "@smithy/types": "^4.5.0", + "@smithy/url-parser": "^4.1.1", + "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" }, "engines": { @@ -5328,16 +6160,19 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.1.5", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.2.1.tgz", + "integrity": "sha512-JzfvjwSJXWRl7LkLgIRTUTd2Wj639yr3sQGpViGNEOjtb0AkAuYqRAHs+jSOI/LPC0ZTjmFVVtfrCICMuebexw==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/service-error-classification": "^4.0.3", - "@smithy/smithy-client": "^4.2.4", - "@smithy/types": "^4.2.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/node-config-provider": "^4.2.1", + "@smithy/protocol-http": "^5.2.1", + "@smithy/service-error-classification": "^4.1.1", + "@smithy/smithy-client": "^4.6.1", + "@smithy/types": "^4.5.0", + "@smithy/util-middleware": "^4.1.1", + "@smithy/util-retry": "^4.1.1", + "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" }, @@ -5346,10 +6181,12 @@ } }, "node_modules/@smithy/middleware-retry/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5357,10 +6194,26 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "4.0.3", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.1.1.tgz", + "integrity": "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/protocol-http": "^5.2.1", + "@smithy/types": "^4.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde/node_modules/@smithy/protocol-http": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5368,10 +6221,12 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.1.1.tgz", + "integrity": "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5379,12 +6234,14 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "4.1.1", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.2.1.tgz", + "integrity": "sha512-AIA0BJZq2h295J5NeCTKhg1WwtdTA/GqBCaVjk30bDgMHwniUETyh5cP9IiE9VrId7Kt8hS7zvREVMTv1VfA6g==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/property-provider": "^4.1.1", + "@smithy/shared-ini-file-loader": "^4.1.1", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5392,13 +6249,15 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.0.4", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.2.1.tgz", + "integrity": "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw==", "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.0.2", - "@smithy/protocol-http": "^5.1.0", - "@smithy/querystring-builder": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/abort-controller": "^4.1.1", + "@smithy/protocol-http": "^5.2.1", + "@smithy/querystring-builder": "^4.1.1", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5406,10 +6265,12 @@ } }, "node_modules/@smithy/node-http-handler/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5417,22 +6278,55 @@ } }, "node_modules/@smithy/property-provider": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.1.1.tgz", + "integrity": "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, + "node_modules/@smithy/protocol-http": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", + "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/protocol-http/node_modules/@smithy/types": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", + "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@smithy/querystring-builder": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.1.1.tgz", + "integrity": "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", - "@smithy/util-uri-escape": "^4.0.0", + "@smithy/types": "^4.5.0", + "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -5440,10 +6334,12 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.1.1.tgz", + "integrity": "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5451,36 +6347,119 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "4.0.3", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.1.1.tgz", + "integrity": "sha512-Iam75b/JNXyDE41UvrlM6n8DNOa/r1ylFyvgruTUx7h2Uk7vDNV9AAwP1vfL1fOL8ls0xArwEGVcGZVd7IO/Cw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0" + "@smithy/types": "^4.5.0" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.1.1.tgz", + "integrity": "sha512-YkpikhIqGc4sfXeIbzSj10t2bJI/sSoP5qxLue6zG+tEE3ngOBSm8sO3+djacYvS/R5DfpxN/L9CyZsvwjWOAQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, + "node_modules/@smithy/signature-v4": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.3.0.tgz", + "integrity": "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "@smithy/types": "^2.12.0", + "@smithy/util-hex-encoding": "^2.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-uri-escape": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/signature-v4/node_modules/@smithy/types": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", + "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/signature-v4/node_modules/@smithy/util-hex-encoding": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", + "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", + "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/signature-v4/node_modules/@smithy/util-uri-escape": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", + "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@smithy/smithy-client": { - "version": "4.2.4", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.6.1.tgz", + "integrity": "sha512-WolVLDb9UTPMEPPOncrCt6JmAMCSC/V2y5gst2STWJ5r7+8iNac+EFYQnmvDCYMfOLcilOSEpm5yXZXwbLak1Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.3.1", - "@smithy/middleware-endpoint": "^4.1.4", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "@smithy/util-stream": "^4.2.0", + "@smithy/core": "^3.11.0", + "@smithy/middleware-endpoint": "^4.2.1", + "@smithy/middleware-stack": "^4.1.1", + "@smithy/protocol-http": "^5.2.1", + "@smithy/types": "^4.5.0", + "@smithy/util-stream": "^4.3.1", "tslib": "^2.6.2" }, "engines": { @@ -5488,10 +6467,12 @@ } }, "node_modules/@smithy/smithy-client/node_modules/@smithy/protocol-http": { - "version": "5.1.0", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", + "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5499,7 +6480,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.2.0", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.5.0.tgz", + "integrity": "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5509,11 +6492,13 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.1.1.tgz", + "integrity": "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg==", "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/querystring-parser": "^4.1.1", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5521,11 +6506,13 @@ } }, "node_modules/@smithy/util-base64": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.1.0.tgz", + "integrity": "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", + "@smithy/util-buffer-from": "^4.1.0", + "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -5533,10 +6520,12 @@ } }, "node_modules/@smithy/util-base64/node_modules/@smithy/util-utf8": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", + "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -5544,7 +6533,9 @@ } }, "node_modules/@smithy/util-body-length-browser": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.1.0.tgz", + "integrity": "sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5554,7 +6545,9 @@ } }, "node_modules/@smithy/util-body-length-node": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.1.0.tgz", + "integrity": "sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5564,10 +6557,12 @@ } }, "node_modules/@smithy/util-buffer-from": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.1.0.tgz", + "integrity": "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw==", "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.0.0", + "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -5575,7 +6570,9 @@ } }, "node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.1.0.tgz", + "integrity": "sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5585,7 +6582,9 @@ } }, "node_modules/@smithy/util-config-provider": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.1.0.tgz", + "integrity": "sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5595,12 +6594,14 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.0.12", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.1.1.tgz", + "integrity": "sha512-hA1AKIHFUMa9Tl6q6y8p0pJ9aWHCCG8s57flmIyLE0W7HcJeYrYtnqXDcGnftvXEhdQnSexyegXnzzTGk8bKLA==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.0.2", - "@smithy/smithy-client": "^4.2.4", - "@smithy/types": "^4.2.0", + "@smithy/property-provider": "^4.1.1", + "@smithy/smithy-client": "^4.6.1", + "@smithy/types": "^4.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" }, @@ -5609,15 +6610,17 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.0.12", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.1.1.tgz", + "integrity": "sha512-RGSpmoBrA+5D2WjwtK7tto6Pc2wO9KSXKLpLONhFZ8VyuCbqlLdiDAfuDTNY9AJe4JoE+Cx806cpTQQoQ71zPQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.1.2", - "@smithy/credential-provider-imds": "^4.0.4", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/property-provider": "^4.0.2", - "@smithy/smithy-client": "^4.2.4", - "@smithy/types": "^4.2.0", + "@smithy/config-resolver": "^4.2.1", + "@smithy/credential-provider-imds": "^4.1.1", + "@smithy/node-config-provider": "^4.2.1", + "@smithy/property-provider": "^4.1.1", + "@smithy/smithy-client": "^4.6.1", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { @@ -5625,61 +6628,71 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "3.0.4", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.1.1.tgz", + "integrity": "sha512-qB4R9kO0SetA11Rzu6MVGFIaGYX3p6SGGGfWwsKnC6nXIf0n/0AKVwRTsYsz9ToN8CeNNtNgQRwKFBndGJZdyw==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.1.1", - "@smithy/types": "^4.2.0", + "@smithy/node-config-provider": "^4.2.1", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-middleware": { - "version": "4.0.2", + "node_modules/@smithy/util-hex-encoding": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.1.0.tgz", + "integrity": "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-retry": { - "version": "4.0.3", + "node_modules/@smithy/util-middleware": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.1.1.tgz", + "integrity": "sha512-CGmZ72mL29VMfESz7S6dekqzCh8ZISj3B+w0g1hZFXaOjGTVaSqfAEFAq8EGp8fUL+Q2l8aqNmt8U1tglTikeg==", "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.0.3", - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-stream": { - "version": "4.2.0", + "node_modules/@smithy/util-retry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.1.1.tgz", + "integrity": "sha512-jGeybqEZ/LIordPLMh5bnmnoIgsqnp4IEimmUp5c5voZ8yx+5kAlN5+juyr7p+f7AtZTgvhmInQk4Q0UVbrZ0Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/types": "^4.2.0", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-buffer-from": "^4.0.0", - "@smithy/util-hex-encoding": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", + "@smithy/service-error-classification": "^4.1.1", + "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-stream/node_modules/@smithy/util-hex-encoding": { - "version": "4.0.0", + "node_modules/@smithy/util-stream": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.3.1.tgz", + "integrity": "sha512-khKkW/Jqkgh6caxMWbMuox9+YfGlsk9OnHOYCGVEdYQb/XVzcORXHLYUubHmmda0pubEDncofUrPNniS9d+uAA==", "license": "Apache-2.0", "dependencies": { + "@smithy/fetch-http-handler": "^5.2.1", + "@smithy/node-http-handler": "^4.2.1", + "@smithy/types": "^4.5.0", + "@smithy/util-base64": "^4.1.0", + "@smithy/util-buffer-from": "^4.1.0", + "@smithy/util-hex-encoding": "^4.1.0", + "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -5687,10 +6700,12 @@ } }, "node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", + "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -5698,7 +6713,9 @@ } }, "node_modules/@smithy/util-uri-escape": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.1.0.tgz", + "integrity": "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -8531,7 +9548,9 @@ } }, "node_modules/console-table-printer": { - "version": "2.12.1", + "version": "2.14.6", + "resolved": "https://registry.npmjs.org/console-table-printer/-/console-table-printer-2.14.6.tgz", + "integrity": "sha512-MCBl5HNVaFuuHW6FGbL/4fB7N/ormCy+tQ+sxTrF6QtSbSNETvPuOVbkJBhzDgYhvjWGrTma4eYJa37ZuoQsPw==", "license": "MIT", "dependencies": { "simple-wcswidth": "^1.0.1" @@ -12836,16 +13855,17 @@ "license": "MIT" }, "node_modules/langchain": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/langchain/-/langchain-0.3.29.tgz", - "integrity": "sha512-L389pKlApVJPqu4hp58qY6NZAobI+MFPoBjSfjT1z3mcxtB68wLFGhaH4DVsTVg21NYO+0wTEoz24BWrxu9YGw==", + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/langchain/-/langchain-0.3.33.tgz", + "integrity": "sha512-MgMfy/68/xUi02dSg4AZhXjo4jQ+WuVYrU/ryzn59nUb+LXaMRoP/C9eaqblin0OLqGp93jfT8FXDg5mcqSg5A==", + "license": "MIT", "dependencies": { - "@langchain/openai": ">=0.1.0 <0.6.0", + "@langchain/openai": ">=0.1.0 <0.7.0", "@langchain/textsplitters": ">=0.0.0 <0.2.0", "js-tiktoken": "^1.0.12", "js-yaml": "^4.1.0", "jsonpointer": "^5.0.1", - "langsmith": "^0.3.33", + "langsmith": "^0.3.46", "openapi-types": "^12.1.3", "p-retry": "4", "uuid": "^10.0.0", @@ -12943,21 +13963,21 @@ } }, "node_modules/langfuse": { - "version": "3.38.4", - "resolved": "https://registry.npmjs.org/langfuse/-/langfuse-3.38.4.tgz", - "integrity": "sha512-2UqMeHLl3DGNX1Nh/cO4jGhk7TzDJ6gjQLlyS9rwFCKVO81xot6b58yeTsTB5YrWupWsOxQtMNoQYIQGOUlH9Q==", + "version": "3.38.5", + "resolved": "https://registry.npmjs.org/langfuse/-/langfuse-3.38.5.tgz", + "integrity": "sha512-pvcq9qJh/q/OFGPET4/sFfXRhCcEgONx1NTqZ8bu/hnorD5xZ/qpS+er0esXJ5cuRILEGw9ydKezAeULf8tpyQ==", "license": "MIT", "dependencies": { - "langfuse-core": "^3.38.4" + "langfuse-core": "^3.38.5" }, "engines": { "node": ">=18" } }, "node_modules/langfuse-core": { - "version": "3.38.4", - "resolved": "https://registry.npmjs.org/langfuse-core/-/langfuse-core-3.38.4.tgz", - "integrity": "sha512-onTAqcEGhoXuBgqDFXe2t+bt9Vi+5YChRgdz3voM49JKoHwtVZQiUdqTfjSivGR75eSbYoiaIL8IRoio+jaqwg==", + "version": "3.38.5", + "resolved": "https://registry.npmjs.org/langfuse-core/-/langfuse-core-3.38.5.tgz", + "integrity": "sha512-vf/4zxv7/mz97yOpQiCJ7Mok8YZt9a52nn3XWTj+qxll4zenHT+wfAHwvfJ4BnVjK54GbEmP7IB524f/5ltq7g==", "license": "MIT", "dependencies": { "mustache": "^4.2.0" @@ -12967,13 +13987,13 @@ } }, "node_modules/langfuse-langchain": { - "version": "3.38.4", - "resolved": "https://registry.npmjs.org/langfuse-langchain/-/langfuse-langchain-3.38.4.tgz", - "integrity": "sha512-7HJqouMrVOP9MFdu33M4G4uBFyQAIh/DqGYALfs41xqm7t99eZxKcTvt4rYZy67iQAhd58TG3q8+9haGzuLbOA==", + "version": "3.38.5", + "resolved": "https://registry.npmjs.org/langfuse-langchain/-/langfuse-langchain-3.38.5.tgz", + "integrity": "sha512-wlA4ZdsWcBuETDLKaKVNoyzRPvLYgz5qsF5gf+JlOH+jzxBdLNbNrcIt/3gmvptQ016VhuOaaxFKwlS7JljlfQ==", "license": "MIT", "dependencies": { - "langfuse": "^3.38.4", - "langfuse-core": "^3.38.4" + "langfuse": "^3.38.5", + "langfuse-core": "^3.38.5" }, "engines": { "node": ">=18" @@ -12983,9 +14003,9 @@ } }, "node_modules/langsmith": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.3.33.tgz", - "integrity": "sha512-imNIaBL6+ElE5eMzNHYwFxo6W/6rHlqcaUjCYoIeGdCYWlARxE3CTGKul5DJnaUgGP2CTLFeNXyvRx5HWC/4KQ==", + "version": "0.3.68", + "resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.3.68.tgz", + "integrity": "sha512-Yx4fnyTjrPKtqH2ax9nb6Ua6XAMYkafKkOLMcTzbJ/w+Yu3V6JjE+vabl/Q600oC53bo3hg6ourI4/KdZVXr4A==", "license": "MIT", "dependencies": { "@types/uuid": "^10.0.0", @@ -12997,9 +14017,21 @@ "uuid": "^10.0.0" }, "peerDependencies": { + "@opentelemetry/api": "*", + "@opentelemetry/exporter-trace-otlp-proto": "*", + "@opentelemetry/sdk-trace-base": "*", "openai": "*" }, "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@opentelemetry/exporter-trace-otlp-proto": { + "optional": true + }, + "@opentelemetry/sdk-trace-base": { + "optional": true + }, "openai": { "optional": true } @@ -13007,10 +14039,14 @@ }, "node_modules/langsmith/node_modules/@types/uuid": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", "license": "MIT" }, "node_modules/langsmith/node_modules/uuid": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -13795,7 +14831,9 @@ } }, "node_modules/ollama": { - "version": "0.5.15", + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/ollama/-/ollama-0.5.17.tgz", + "integrity": "sha512-q5LmPtk6GLFouS+3aURIVl+qcAOPC4+Msmx7uBb3pd+fxI55WnGjmLZ0yijI/CYy79x0QPGx3BwC3u5zv9fBvQ==", "license": "MIT", "dependencies": { "whatwg-fetch": "^3.6.20" @@ -13867,9 +14905,9 @@ } }, "node_modules/openai": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/openai/-/openai-5.8.3.tgz", - "integrity": "sha512-IdotKmquCnpouTRvF9xRXVhMx6K5Sc8zkD6Usf+so+NTQ+qiJ8bLSCd7LBb8b/Rof7uYltlSxJhNp+spphKI4Q==", + "version": "5.12.2", + "resolved": "https://registry.npmjs.org/openai/-/openai-5.12.2.tgz", + "integrity": "sha512-xqzHHQch5Tws5PcKR2xsZGX9xtch+JQFz5zb14dGqlshmmDAFBFEWmeIpf7wVqWV+w7Emj7jRgkNJakyKE0tYQ==", "license": "Apache-2.0", "bin": { "openai": "bin/cli" @@ -15522,7 +16560,9 @@ "license": "MIT" }, "node_modules/simple-wcswidth": { - "version": "1.0.1", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/simple-wcswidth/-/simple-wcswidth-1.1.2.tgz", + "integrity": "sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw==", "license": "MIT" }, "node_modules/sisteransi": { @@ -17363,6 +18403,8 @@ }, "node_modules/whatwg-fetch": { "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", "license": "MIT" }, "node_modules/whatwg-url": { diff --git a/backend/package.json b/backend/package.json index 66bdfbfb6..c5c68f29e 100644 --- a/backend/package.json +++ b/backend/package.json @@ -41,14 +41,14 @@ "@azure/ai-agents": "^1.1.0", "@azure/core-util": "^1.13.0", "@azure/identity": "^4.11.0", - "@langchain/aws": "0.1.11", - "@langchain/community": "^0.3.48", - "@langchain/core": "^0.3.62", - "@langchain/google-genai": "^0.2.14", - "@langchain/google-vertexai": "^0.2.14", + "@langchain/aws": "0.1.15", + "@langchain/community": "^0.3.55", + "@langchain/core": "^0.3.75", + "@langchain/google-genai": "^0.2.17", + "@langchain/google-vertexai": "^0.2.17", "@langchain/mistralai": "^0.2.1", - "@langchain/ollama": "^0.2.3", - "@langchain/openai": "^0.5.18", + "@langchain/ollama": "^0.2.4", + "@langchain/openai": "^0.6.11", "@modelcontextprotocol/sdk": "^1.17.0", "@n8n/json-schema-to-zod": "^1.1.0", "@nestjs/common": "^11.1.3", @@ -70,13 +70,13 @@ "duck-duck-scrape": "^2.2.7", "express-session": "^1.18.2", "json-diff-ts": "^4.6.3", - "langchain": "^0.3.29", - "langfuse-langchain": "^3.38.4", + "langchain": "^0.3.33", + "langfuse-langchain": "^3.38.5", "logform": "^2.7.0", "nest-winston": "^1.10.2", "nestjs-i18n": "^10.5.1", "nunjucks": "^3.2.4", - "openai": "^5.8.3", + "openai": "5.12.2", "passport-custom": "^1.1.1", "passport-github2": "^0.1.12", "passport-google-oauth2": "^0.2.0", diff --git a/backend/src/controllers/conversations/dtos/index.ts b/backend/src/controllers/conversations/dtos/index.ts index d3c2b2134..e182b12f6 100644 --- a/backend/src/controllers/conversations/dtos/index.ts +++ b/backend/src/controllers/conversations/dtos/index.ts @@ -460,6 +460,30 @@ export class StreamMessageSavedDto { type!: typeof StreamMessageSavedDto.TYPE_NAME; } +export class StreamReasoningDto { + static TYPE_NAME = 'reasoning'; + + @ApiProperty({ + description: 'The content .', + required: true, + }) + content!: string; + + @ApiProperty({ + enum: [StreamReasoningDto.TYPE_NAME], + }) + type!: typeof StreamReasoningDto.TYPE_NAME; +} + +export class StreamReasoningEndDto { + static TYPE_NAME = 'reasoning_end'; + + @ApiProperty({ + enum: [StreamReasoningEndDto.TYPE_NAME], + }) + type!: typeof StreamReasoningEndDto.TYPE_NAME; +} + export class StreamSummaryDto { static TYPE_NAME = 'summary'; @@ -566,6 +590,8 @@ export class StreamCompletedEventDto { StreamToolStartEventDto, StreamUIEventDto, StreamSummaryDto, + StreamReasoningDto, + StreamReasoningEndDto, ) export class StreamEventHolderDto { @ApiProperty({ @@ -582,6 +608,8 @@ export class StreamEventHolderDto { { $ref: getSchemaPath(StreamToolEndEventDto) }, { $ref: getSchemaPath(StreamToolStartEventDto) }, { $ref: getSchemaPath(StreamUIEventDto) }, + { $ref: getSchemaPath(StreamReasoningDto) }, + { $ref: getSchemaPath(StreamReasoningEndDto) }, ], discriminator: { propertyName: 'type', @@ -597,6 +625,8 @@ export class StreamEventHolderDto { [StreamToolEndEventDto.TYPE_NAME]: getSchemaPath(StreamToolEndEventDto), [StreamToolStartEventDto.TYPE_NAME]: getSchemaPath(StreamToolStartEventDto), [StreamUIEventDto.TYPE_NAME]: getSchemaPath(StreamUIEventDto), + [StreamReasoningDto.TYPE_NAME]: getSchemaPath(StreamReasoningDto), + [StreamReasoningEndDto.TYPE_NAME]: getSchemaPath(StreamReasoningEndDto), }, }, }) diff --git a/backend/src/domain/chat/interfaces.ts b/backend/src/domain/chat/interfaces.ts index 7a92d9c61..7af4908c3 100644 --- a/backend/src/domain/chat/interfaces.ts +++ b/backend/src/domain/chat/interfaces.ts @@ -214,6 +214,8 @@ export type MessageType = (typeof MESSAGE_TYPES)[number]; export type StreamEvent = | StreamSummaryEvent | StreamCompletedEvent + | StreamReasoningEvent + | StreamReasoningEndEvent | StreamDebugEvent | StreamSourcesEvent | StreamLoggingEvent @@ -275,6 +277,15 @@ export interface StreamSummaryEvent { content: string; } +export interface StreamReasoningEvent { + type: 'reasoning'; + content: string; +} + +export interface StreamReasoningEndEvent { + type: 'reasoning_end'; +} + export interface StreamCompletedEvent { type: 'completed'; metadata: ChatMetadata; diff --git a/backend/src/domain/chat/middlewares/execute-middleware.ts b/backend/src/domain/chat/middlewares/execute-middleware.ts index 2422b9f06..9ff4de7b0 100644 --- a/backend/src/domain/chat/middlewares/execute-middleware.ts +++ b/backend/src/domain/chat/middlewares/execute-middleware.ts @@ -8,7 +8,7 @@ import { AgentExecutor, AgentExecutorInput, createOpenAIToolsAgent } from 'langc import { I18nService } from '../../../localization/i18n.service'; import { MetricsService } from '../../../metrics/metrics.service'; import { ChatContext, ChatError, ChatMiddleware, NormalizedMessageContents } from '../interfaces'; -import { normalizedMessageContent } from '../utils'; +import { getReasoningContent, normalizedMessageContent } from '../utils'; type EventActionType = 'start' | 'stream' | 'end'; type EventContextType = 'llm' | 'chat_model' | 'prompt' | 'tool' | 'chain'; @@ -113,6 +113,18 @@ export class ExecuteMiddleware implements ChatMiddleware { const getToolName = (toolId: string) => tools.find((x) => x.name === toolId)?.displayName || toolId; + let isReasoning = false; + const handleReasoning = (chunk: ChatGenerationChunk | MessageContent) => { + const reasoningContent = getReasoningContent(chunk); + if (reasoningContent?.length) { + isReasoning = true; + result.next({ type: 'reasoning', content: reasoningContent }); + } else if (isReasoning) { + isReasoning = false; + result.next({ type: 'reasoning_end' }); + } + }; + for await (const event of stream) { const eventType = event.event as EventType; @@ -122,6 +134,7 @@ export class ExecuteMiddleware implements ChatMiddleware { hasLlmStream = true; const chunk = event.data?.chunk as ChatGenerationChunk; const content = normalizedMessageContent(chunk); + handleReasoning(chunk); // Content can either be a string or an array of objects. if (content.length > 0) { @@ -132,6 +145,7 @@ export class ExecuteMiddleware implements ChatMiddleware { hasChainStream = true; const chunk = event.data?.chunk as ChatGenerationChunk; const content = normalizedMessageContent(chunk); + handleReasoning(chunk); // Content can either be a string or an array of objects. if (content.length > 0) { @@ -141,6 +155,7 @@ export class ExecuteMiddleware implements ChatMiddleware { } else if (eventType === 'on_chain_end' && !!event.data.output) { const output = event.data.output as MessageContent; const result = normalizedMessageContent(output); + handleReasoning(result); if (result.length > 0) { lastResult = result; diff --git a/backend/src/domain/chat/utils.ts b/backend/src/domain/chat/utils.ts index 6a638e64e..a770d1718 100644 --- a/backend/src/domain/chat/utils.ts +++ b/backend/src/domain/chat/utils.ts @@ -8,6 +8,12 @@ function isTextItem(item: MessageContentComplex): item is MessageContentText { return !!(item as MessageContentText).text; } +export function getReasoningContent(source: MessageContent | AIMessageChunk | ChatGenerationChunk): string | undefined { + if (is(source, AIMessageChunk)) { + return source.additional_kwargs?.['reasoning_content'] as string; + } +} + export function normalizedMessageContent( source: MessageContent | AIMessageChunk | ChatGenerationChunk, ): NormalizedMessageContents { diff --git a/backend/src/extensions/models/azure-open-ai.ts b/backend/src/extensions/models/azure-open-ai.ts index f7d442257..29372f2e5 100644 --- a/backend/src/extensions/models/azure-open-ai.ts +++ b/backend/src/extensions/models/azure-open-ai.ts @@ -120,7 +120,7 @@ export class AzureOpenAIModelExtension implements Extension, + rawResponse: ChatCompletionChunk, + defaultRole?: 'system' | 'developer' | 'assistant' | 'user' | 'function' | 'tool', + ): AIMessageChunk | HumanMessageChunk | SystemMessageChunk | FunctionMessageChunk | ToolMessageChunk | ChatMessageChunk { + const result = super._convertCompletionsDeltaToBaseMessageChunk(delta, rawResponse, defaultRole); + if (result instanceof AIMessageChunk && delta['reasoning_content']) { + result.additional_kwargs['reasoning_content'] = delta['reasoning_content']; + } + + return result; + } +} + +export class ChatNvidia extends ChatOpenAI { + constructor(fields: ChatOpenAIFields) { + super(fields); + this.completions = new ChatNvidiaCompletions(fields); + } +} + +@Extension() +export class NvidiaModelExtension implements Extension { + constructor(private readonly i18n: I18nService) {} + + get spec(): ExtensionSpec { + return { + name: 'nvidia', + title: this.i18n.t('texts.extensions.nvidia.title'), + logo: '', + description: this.i18n.t('texts.extensions.nvidia.description'), + type: 'llm', + arguments: { + apiKey: { + type: 'string', + title: this.i18n.t('texts.extensions.common.apiKey'), + required: true, + format: 'password', + }, + baseUrl: { + type: 'string', + title: this.i18n.t('texts.extensions.common.endpoint'), + required: true, + description: this.i18n.t('texts.extensions.openai.endpointHint'), + }, + modelName: { + type: 'string', + title: this.i18n.t('texts.extensions.common.modelName'), + required: true, + }, + temperature: { + type: 'number', + title: this.i18n.t('texts.extensions.common.temperature'), + minimum: 0, + maximum: 2, + format: 'slider', + description: this.i18n.t('texts.extensions.common.temperatureHint'), + }, + seed: { + type: 'number', + title: this.i18n.t('texts.extensions.common.seed'), + description: this.i18n.t('texts.extensions.common.seedHint'), + }, + presencePenalty: { + type: 'number', + title: this.i18n.t('texts.extensions.common.presencePenalty'), + minimum: 0, + maximum: 2, + default: 0, + format: 'slider', + description: this.i18n.t('texts.extensions.common.presencePenaltyHint'), + }, + frequencyPenalty: { + type: 'number', + title: this.i18n.t('texts.extensions.common.frequencyPenalty'), + minimum: 0, + maximum: 2, + default: 0, + format: 'slider', + description: this.i18n.t('texts.extensions.common.frequencyPenaltyHint'), + }, + effort: { + type: 'string', + title: this.i18n.t('texts.extensions.common.effort'), + required: false, + enum: ['', 'low', 'medium', 'high'], + }, + }, + }; + } + + async test(configuration: NvidiaModelExtensionConfiguration) { + const model = this.createModel(configuration); + + await model.invoke('Just a test call'); + } + + getMiddlewares(_: User, extension: ExtensionEntity): Promise { + const middleware = { + invoke: async (context: ChatContext, _: GetContext, next: ChatNextDelegate): Promise => { + context.llms[this.spec.name] = await context.cache.get(this.spec.name, extension.values, () => { + return this.createModel(extension.values, true); + }); + + return next(context); + }, + }; + + return Promise.resolve([middleware]); + } + + private createModel(configuration: NvidiaModelExtensionConfiguration, streaming = false) { + const { apiKey, baseUrl, modelName, frequencyPenalty, presencePenalty, temperature, effort } = configuration; + + return new ChatNvidia({ + frequencyPenalty, + model: modelName, + apiKey, + presencePenalty, + streaming, + temperature, + configuration: { + baseURL: baseUrl, + }, + reasoning: effort ? { effort } : undefined, + useResponsesApi: false, + }); + } +} + +type NvidiaModelExtensionConfiguration = ExtensionConfiguration & { + apiKey: string; + baseUrl: string; + modelName: string; + temperature: number; + seed: number; + presencePenalty: number; + frequencyPenalty: number; + effort?: 'low' | 'medium' | 'high'; +}; diff --git a/backend/src/extensions/models/open-ai-compatible.ts b/backend/src/extensions/models/open-ai-compatible.ts index bd4f9664f..3bdfd53e5 100644 --- a/backend/src/extensions/models/open-ai-compatible.ts +++ b/backend/src/extensions/models/open-ai-compatible.ts @@ -100,8 +100,8 @@ export class OpenAICompatibleModelExtension implements Extension { - return client.post(`/deployments/${fields.modelName}/images/generations?api-version=${fields.apiVersion}`, { - body, - ...options, - }); - }; } } diff --git a/backend/src/localization/i18n/de/texts.json b/backend/src/localization/i18n/de/texts.json index 251a720ec..b5de4d637 100644 --- a/backend/src/localization/i18n/de/texts.json +++ b/backend/src/localization/i18n/de/texts.json @@ -77,6 +77,10 @@ "title": "OpenAI kompatibel", "description": "OpenAI-kompatible LLM-Integration" }, + "nvidia": { + "title": "Nvidia NIM", + "description": "Nvidia NIM LLM-Integration" + }, "vertexai": { "title": "VertexAI", "description": "Vertex AI LLM-Integration" diff --git a/backend/src/localization/i18n/en/texts.json b/backend/src/localization/i18n/en/texts.json index 9d8704374..6c585a0a4 100644 --- a/backend/src/localization/i18n/en/texts.json +++ b/backend/src/localization/i18n/en/texts.json @@ -77,6 +77,10 @@ "title": "OpenAI compatible", "description": "Open AI compatible LLM integration" }, + "nvidia": { + "title": "Nvidia NIM", + "description": "Nvidia NIM LLM integration" + }, "vertexai": { "title": "VertexAI", "description": "Vertex AI LLM integration" diff --git a/frontend/src/api/generated/.openapi-generator/FILES b/frontend/src/api/generated/.openapi-generator/FILES index 0c23634a7..1319cd805 100644 --- a/frontend/src/api/generated/.openapi-generator/FILES +++ b/frontend/src/api/generated/.openapi-generator/FILES @@ -68,6 +68,8 @@ models/StreamEventHolderDto.ts models/StreamLoggingEvent.ts models/StreamMessageSavedDto.ts models/StreamMetadataDto.ts +models/StreamReasoningDto.ts +models/StreamReasoningEndDto.ts models/StreamSourcesEvent.ts models/StreamSummaryDto.ts models/StreamTokenEventDto.ts diff --git a/frontend/src/api/generated/models/StreamEventDto.ts b/frontend/src/api/generated/models/StreamEventDto.ts index 539bc3aa1..773cd4187 100644 --- a/frontend/src/api/generated/models/StreamEventDto.ts +++ b/frontend/src/api/generated/models/StreamEventDto.ts @@ -48,6 +48,20 @@ import { StreamMessageSavedDtoFromJSONTyped, StreamMessageSavedDtoToJSON, } from './StreamMessageSavedDto'; +import type { StreamReasoningDto } from './StreamReasoningDto'; +import { + instanceOfStreamReasoningDto, + StreamReasoningDtoFromJSON, + StreamReasoningDtoFromJSONTyped, + StreamReasoningDtoToJSON, +} from './StreamReasoningDto'; +import type { StreamReasoningEndDto } from './StreamReasoningEndDto'; +import { + instanceOfStreamReasoningEndDto, + StreamReasoningEndDtoFromJSON, + StreamReasoningEndDtoFromJSONTyped, + StreamReasoningEndDtoToJSON, +} from './StreamReasoningEndDto'; import type { StreamSourcesEvent } from './StreamSourcesEvent'; import { instanceOfStreamSourcesEvent, @@ -96,7 +110,7 @@ import { * * @export */ -export type StreamEventDto = { type: 'chunk' } & StreamTokenEventDto | { type: 'completed' } & StreamCompletedEventDto | { type: 'debug' } & StreamDebugEvent | { type: 'error' } & StreamErrorEventDto | { type: 'logging' } & StreamLoggingEvent | { type: 'saved' } & StreamMessageSavedDto | { type: 'sources' } & StreamSourcesEvent | { type: 'summary' } & StreamSummaryDto | { type: 'tool_end' } & StreamToolEndEventDto | { type: 'tool_start' } & StreamToolStartEventDto | { type: 'ui' } & StreamUIEventDto; +export type StreamEventDto = { type: 'chunk' } & StreamTokenEventDto | { type: 'completed' } & StreamCompletedEventDto | { type: 'debug' } & StreamDebugEvent | { type: 'error' } & StreamErrorEventDto | { type: 'logging' } & StreamLoggingEvent | { type: 'reasoning' } & StreamReasoningDto | { type: 'reasoning_end' } & StreamReasoningEndDto | { type: 'saved' } & StreamMessageSavedDto | { type: 'sources' } & StreamSourcesEvent | { type: 'summary' } & StreamSummaryDto | { type: 'tool_end' } & StreamToolEndEventDto | { type: 'tool_start' } & StreamToolStartEventDto | { type: 'ui' } & StreamUIEventDto; export function StreamEventDtoFromJSON(json: any): StreamEventDto { return StreamEventDtoFromJSONTyped(json, false); @@ -117,6 +131,10 @@ export function StreamEventDtoFromJSONTyped(json: any, ignoreDiscriminator: bool return Object.assign({}, StreamErrorEventDtoFromJSONTyped(json, true), { type: 'error' } as const); case 'logging': return Object.assign({}, StreamLoggingEventFromJSONTyped(json, true), { type: 'logging' } as const); + case 'reasoning': + return Object.assign({}, StreamReasoningDtoFromJSONTyped(json, true), { type: 'reasoning' } as const); + case 'reasoning_end': + return Object.assign({}, StreamReasoningEndDtoFromJSONTyped(json, true), { type: 'reasoning_end' } as const); case 'saved': return Object.assign({}, StreamMessageSavedDtoFromJSONTyped(json, true), { type: 'saved' } as const); case 'sources': @@ -149,6 +167,10 @@ export function StreamEventDtoToJSON(value?: StreamEventDto | null): any { return StreamErrorEventDtoToJSON(value); case 'logging': return StreamLoggingEventToJSON(value); + case 'reasoning': + return StreamReasoningDtoToJSON(value); + case 'reasoning_end': + return StreamReasoningEndDtoToJSON(value); case 'saved': return StreamMessageSavedDtoToJSON(value); case 'sources': diff --git a/frontend/src/api/generated/models/StreamReasoningDto.ts b/frontend/src/api/generated/models/StreamReasoningDto.ts new file mode 100644 index 000000000..277416b6e --- /dev/null +++ b/frontend/src/api/generated/models/StreamReasoningDto.ts @@ -0,0 +1,81 @@ +//@ts-nocheck +/* tslint:disable */ +/* eslint-disable */ +/** + * c4 GenAI Suite + * c4 GenAI Suite + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface StreamReasoningDto + */ +export interface StreamReasoningDto { + /** + * The content . + * @type {string} + * @memberof StreamReasoningDto + */ + content: string; + /** + * + * @type {string} + * @memberof StreamReasoningDto + */ + type: StreamReasoningDtoTypeEnum; +} + + +/** + * @export + */ +export const StreamReasoningDtoTypeEnum = { + Reasoning: 'reasoning' +} as const; +export type StreamReasoningDtoTypeEnum = typeof StreamReasoningDtoTypeEnum[keyof typeof StreamReasoningDtoTypeEnum]; + + +/** + * Check if a given object implements the StreamReasoningDto interface. + */ +export function instanceOfStreamReasoningDto(value: object): value is StreamReasoningDto { + if (!('content' in value) || value['content'] === undefined) return false; + if (!('type' in value) || value['type'] === undefined) return false; + return true; +} + +export function StreamReasoningDtoFromJSON(json: any): StreamReasoningDto { + return StreamReasoningDtoFromJSONTyped(json, false); +} + +export function StreamReasoningDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): StreamReasoningDto { + if (json == null) { + return json; + } + return { + + 'content': json['content'], + 'type': json['type'], + }; +} + +export function StreamReasoningDtoToJSON(value?: StreamReasoningDto | null): any { + if (value == null) { + return value; + } + return { + + 'content': value['content'], + 'type': value['type'], + }; +} + diff --git a/frontend/src/api/generated/models/StreamReasoningEndDto.ts b/frontend/src/api/generated/models/StreamReasoningEndDto.ts new file mode 100644 index 000000000..c33c8ead7 --- /dev/null +++ b/frontend/src/api/generated/models/StreamReasoningEndDto.ts @@ -0,0 +1,72 @@ +//@ts-nocheck +/* tslint:disable */ +/* eslint-disable */ +/** + * c4 GenAI Suite + * c4 GenAI Suite + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface StreamReasoningEndDto + */ +export interface StreamReasoningEndDto { + /** + * + * @type {string} + * @memberof StreamReasoningEndDto + */ + type: StreamReasoningEndDtoTypeEnum; +} + + +/** + * @export + */ +export const StreamReasoningEndDtoTypeEnum = { + ReasoningEnd: 'reasoning_end' +} as const; +export type StreamReasoningEndDtoTypeEnum = typeof StreamReasoningEndDtoTypeEnum[keyof typeof StreamReasoningEndDtoTypeEnum]; + + +/** + * Check if a given object implements the StreamReasoningEndDto interface. + */ +export function instanceOfStreamReasoningEndDto(value: object): value is StreamReasoningEndDto { + if (!('type' in value) || value['type'] === undefined) return false; + return true; +} + +export function StreamReasoningEndDtoFromJSON(json: any): StreamReasoningEndDto { + return StreamReasoningEndDtoFromJSONTyped(json, false); +} + +export function StreamReasoningEndDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): StreamReasoningEndDto { + if (json == null) { + return json; + } + return { + + 'type': json['type'], + }; +} + +export function StreamReasoningEndDtoToJSON(value?: StreamReasoningEndDto | null): any { + if (value == null) { + return value; + } + return { + + 'type': value['type'], + }; +} + diff --git a/frontend/src/api/generated/models/index.ts b/frontend/src/api/generated/models/index.ts index 64ca7a50b..f969ab003 100644 --- a/frontend/src/api/generated/models/index.ts +++ b/frontend/src/api/generated/models/index.ts @@ -61,6 +61,8 @@ export * from './StreamEventHolderDto'; export * from './StreamLoggingEvent'; export * from './StreamMessageSavedDto'; export * from './StreamMetadataDto'; +export * from './StreamReasoningDto'; +export * from './StreamReasoningEndDto'; export * from './StreamSourcesEvent'; export * from './StreamSummaryDto'; export * from './StreamTokenEventDto'; diff --git a/frontend/src/pages/chat/conversation/ChatItem/AIChatItem.tsx b/frontend/src/pages/chat/conversation/ChatItem/AIChatItem.tsx index 7befd6a78..bc402e46d 100644 --- a/frontend/src/pages/chat/conversation/ChatItem/AIChatItem.tsx +++ b/frontend/src/pages/chat/conversation/ChatItem/AIChatItem.tsx @@ -10,6 +10,7 @@ import { ChatItemDebug } from '../ChatItemDebug'; import { ChatItemLogging } from '../ChatItemLogging'; import ChatItemSources from '../ChatItemSources'; import { ChatItemTools } from '../ChatItemTools'; +import { ReasoningLoadingIndicator } from '../ReasoningLoadingIndicator'; import { AIChatItemActions } from './AIChatItemActions'; import { AiAvatar } from './AiAvatar'; import { ChatItemProps } from './ChatItem'; @@ -50,6 +51,9 @@ export const AIChatItem = ({ agentName, message, isLast, selectDocument }: ChatI {message.error && } {message.ui && } + {message.reasoning?.length && ( + + )} {textContent} diff --git a/frontend/src/pages/chat/conversation/ReasoningLoadingIndicator.tsx b/frontend/src/pages/chat/conversation/ReasoningLoadingIndicator.tsx new file mode 100644 index 000000000..01a1af184 --- /dev/null +++ b/frontend/src/pages/chat/conversation/ReasoningLoadingIndicator.tsx @@ -0,0 +1,55 @@ +import { IconCheck, IconChevronDown, IconChevronUp, IconRefresh } from '@tabler/icons-react'; +import { memo, useState } from 'react'; +import { Markdown } from 'src/components'; +import { texts } from 'src/texts'; + +interface ReasoningLoadingIndicatorProps { + message: string; + inProgress?: boolean; +} + +export const ReasoningLoadingIndicator = memo(({ message, inProgress }: ReasoningLoadingIndicatorProps) => { + const [isExpanded, setIsExpanded] = useState(true); + + const toggleExpanded = () => { + setIsExpanded(!isExpanded); + }; + + return ( +
+
+
+ {inProgress && } + {!inProgress && } +
+ +
+
+

{texts.chat.reasoning}

+ +
+ +
+ + {message} + +
+
+
+
+ ); +}); diff --git a/frontend/src/pages/chat/state/chat.ts b/frontend/src/pages/chat/state/chat.ts index b51c4f4a1..6a7f539d2 100644 --- a/frontend/src/pages/chat/state/chat.ts +++ b/frontend/src/pages/chat/state/chat.ts @@ -124,6 +124,14 @@ export const useChatStream = (chatId: number) => { if (chunk.type === 'image_url') chatStore.appendToStreamingMessage(chatId, `![image](${chunk.image.url})`); return; } + case 'reasoning': { + chatStore.updateReasoning(chatId, msg.content); + return; + } + case 'reasoning_end': { + chatStore.clearReasoning(chatId); + return; + } case 'tool_start': return chatStore.updateMessage(chatId, actualAiMessageId, (oldMessage) => ({ toolsInUse: { ...oldMessage.toolsInUse, [msg.tool.name]: 'Started' }, diff --git a/frontend/src/pages/chat/state/types.ts b/frontend/src/pages/chat/state/types.ts index 05f4c2d67..397e5bb70 100644 --- a/frontend/src/pages/chat/state/types.ts +++ b/frontend/src/pages/chat/state/types.ts @@ -6,6 +6,8 @@ type MessageMetaInfoState = { debug: string[]; sources: SourceDto[]; logging: string[]; + reasoning: string; + reasoningInProgress: boolean; error?: string; isAiWriting?: boolean; ui?: StreamUIRequestDto; diff --git a/frontend/src/pages/chat/state/zustand/chatStore.ts b/frontend/src/pages/chat/state/zustand/chatStore.ts index 3edb1f72c..115056eaf 100644 --- a/frontend/src/pages/chat/state/zustand/chatStore.ts +++ b/frontend/src/pages/chat/state/zustand/chatStore.ts @@ -48,6 +48,9 @@ type ChatActions = { editMessageId: number | undefined, ) => Observable; + updateReasoning: (chatId: number, content: string) => void; + clearReasoning: (chatId: number) => void; + setSelectedDocument: (document: DocumentSource | undefined) => void; setSelectedSource: (source: SourceDto | undefined) => void; }; @@ -220,5 +223,41 @@ export const useChatStore = create()((set, get) => { setSelectedSource: (selectedSource) => { set({ selectedSource }); }, + + updateReasoning: (chatId, content) => + set((state) => { + const chatData = state.chatDataMap.get(chatId); + if (!chatData || !chatData.streamingMessageId) return state; + + const messages = [...chatData.messages]; + const messageIndex = messages.findIndex((msg) => msg.id === chatData.streamingMessageId); + if (messageIndex === -1) return state; + + const message = messages[messageIndex]; + const currentReasoningContent = message.reasoning ?? ''; + + messages[messageIndex] = { ...message, reasoning: currentReasoningContent + content, reasoningInProgress: true }; + + const newMap = new Map(state.chatDataMap); + newMap.set(chatId, { ...chatData, messages }); + return { chatDataMap: newMap }; + }), + + clearReasoning: (chatId) => + set((state) => { + const chatData = state.chatDataMap.get(chatId); + if (!chatData || !chatData.streamingMessageId) return state; + + const messages = [...chatData.messages]; + const messageIndex = messages.findIndex((msg) => msg.id === chatData.streamingMessageId); + if (messageIndex === -1) return state; + + const message = messages[messageIndex]; + messages[messageIndex] = { ...message, reasoningInProgress: false }; + + const newMap = new Map(state.chatDataMap); + newMap.set(chatId, { ...chatData, messages }); + return { chatDataMap: newMap }; + }), }; }); diff --git a/frontend/src/texts/index.ts b/frontend/src/texts/index.ts index 3359c90ff..6878b5132 100644 --- a/frontend/src/texts/index.ts +++ b/frontend/src/texts/index.ts @@ -111,6 +111,7 @@ function load() { rowsSelected: (rowCount: number) => translate('common.rowsSelected', { rowCount }), }, chat: { + reasoning: translate('chat.reasoning'), conversationNotFound: translate('chat.conversationNotFound'), noAccessToConversation: translate('chat.noAccessToConversation'), errorLoadingMessagesOrConversation: translate('chat.errorLoadingMessagesOrConversation'), diff --git a/frontend/src/texts/languages/de.ts b/frontend/src/texts/languages/de.ts index 6cf6878ca..bc41c267c 100644 --- a/frontend/src/texts/languages/de.ts +++ b/frontend/src/texts/languages/de.ts @@ -90,6 +90,7 @@ export const de: typeof en = { welcomeText: 'Wie kann ich dir helfen?', placeholder: 'Nachricht an {{configuration}}', rateConversation: 'War dieser Chat bisher hilfreich?', + reasoning: 'Reasoning', rating: { incorrect: 'Inhaltlich nicht korrekt', instructions_not_followed: 'Anweisungen nicht befolgt', diff --git a/frontend/src/texts/languages/en.ts b/frontend/src/texts/languages/en.ts index a3366e7f0..2d243d66f 100644 --- a/frontend/src/texts/languages/en.ts +++ b/frontend/src/texts/languages/en.ts @@ -88,6 +88,7 @@ export const en = { welcomeText: 'How may I help you?', placeholder: 'Message {{configuration}}', rateConversation: 'Was this conversation helpful so far?', + reasoning: 'Reasoning', rating: { incorrect: 'Not factually correct', instructions_not_followed: "Didn't follow instructions", diff --git a/helm-chart/Chart.yaml b/helm-chart/Chart.yaml index 1bdde1d65..398fe1661 100644 --- a/helm-chart/Chart.yaml +++ b/helm-chart/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: c4-genai-suite description: A Helm chart for the c4 GenAI Suite. -version: 9.1.0 +version: 9.2.0 sources: - https://github.com/codecentric/c4-genai-suite/ diff --git a/package-lock.json b/package-lock.json index e6d403354..11ea9a889 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "c4-genai-suite", + "name": "company-chat", "lockfileVersion": 3, "requires": true, "packages": { From 0d8c4b8faeacbad0a16e11581e6eebeed9e1bee1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 19:29:12 +0000 Subject: [PATCH 034/110] chore(deps): bump ollama/ollama from 0.11.10 to 0.11.11 Bumps ollama/ollama from 0.11.10 to 0.11.11. --- updated-dependencies: - dependency-name: ollama/ollama dependency-version: 0.11.11 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 19e4b3509..304a0493f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -52,7 +52,7 @@ services: retries: 20 ollama: - image: ollama/ollama:0.11.10 + image: ollama/ollama:0.11.11 restart: unless-stopped volumes: - ollama-data:/root/.ollama From 8bc2a46c48e0181c66ad34d5936333edbf09650f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 19:29:21 +0000 Subject: [PATCH 035/110] chore(deps): bump curlimages/curl from 8.15.0 to 8.16.0 Bumps curlimages/curl from 8.15.0 to 8.16.0. --- updated-dependencies: - dependency-name: curlimages/curl dependency-version: 8.16.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 304a0493f..cb84f6ca6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -64,7 +64,7 @@ services: start_period: 60s ollama-models-pull: - image: curlimages/curl:8.15.0 + image: curlimages/curl:8.16.0 depends_on: ollama: condition: service_healthy From ce2379b6e143d0dc8b69c0a60f1c873dfa6346fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 19:30:49 +0000 Subject: [PATCH 036/110] chore(deps-dev): bump faker from 37.6.0 to 37.7.0 in /services/reis Bumps [faker](https://github.com/joke2k/faker) from 37.6.0 to 37.7.0. - [Release notes](https://github.com/joke2k/faker/releases) - [Changelog](https://github.com/joke2k/faker/blob/master/CHANGELOG.md) - [Commits](https://github.com/joke2k/faker/compare/v37.6.0...v37.7.0) --- updated-dependencies: - dependency-name: faker dependency-version: 37.7.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 8 ++++---- services/reis/pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 2c49af49d..b73377dfd 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -1024,14 +1024,14 @@ test = ["pytest (>=6)"] [[package]] name = "faker" -version = "37.6.0" +version = "37.7.0" description = "Faker is a Python package that generates fake data for you." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "faker-37.6.0-py3-none-any.whl", hash = "sha256:3c5209b23d7049d596a51db5d76403a0ccfea6fc294ffa2ecfef6a8843b1e6a7"}, - {file = "faker-37.6.0.tar.gz", hash = "sha256:0f8cc34f30095184adf87c3c24c45b38b33ad81c35ef6eb0a3118f301143012c"}, + {file = "faker-37.7.0-py3-none-any.whl", hash = "sha256:8e94fad273e6ac85b507890298d4b1a41eb24faa1db86a2f9060d52e97cfa5cf"}, + {file = "faker-37.7.0.tar.gz", hash = "sha256:d0bbfa0a48aacaf10bc1079bb8bfc27aff226fc9cc49e3f4d606fa599fc49036"}, ] [package.dependencies] @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "f6722733498454a3a2d25dfa42e3f7ebb91a52114c328d328c6e8126a9f54977" +content-hash = "1361bca12603bcac9a5801b4ddb7307bd58d6cc88959ad3085ff710d04fa2a9c" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index d48f85053..d4586e77f 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -39,7 +39,7 @@ pytest-mock = "3.15.0" pytest-responses = "0.5.1" pytest-github-report = "0.0.1" pytest-error-for-skips = "2.0.2" -faker = "37.6.0" +faker = "37.7.0" responses = "0.25.8" [tool.poetry.scripts] From 4740cf4a3d700573dcfd274c3e6db294982ee13b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 19:43:03 +0000 Subject: [PATCH 037/110] chore(deps): bump pydantic from 2.11.7 to 2.11.9 in /services/reis Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.11.7 to 2.11.9. - [Release notes](https://github.com/pydantic/pydantic/releases) - [Changelog](https://github.com/pydantic/pydantic/blob/v2.11.9/HISTORY.md) - [Commits](https://github.com/pydantic/pydantic/compare/v2.11.7...v2.11.9) --- updated-dependencies: - dependency-name: pydantic dependency-version: 2.11.9 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 8 ++++---- services/reis/pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index b73377dfd..bc217fbcc 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -3694,14 +3694,14 @@ files = [ [[package]] name = "pydantic" -version = "2.11.7" +version = "2.11.9" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b"}, - {file = "pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db"}, + {file = "pydantic-2.11.9-py3-none-any.whl", hash = "sha256:c42dd626f5cfc1c6950ce6205ea58c93efa406da65f479dcb4029d5934857da2"}, + {file = "pydantic-2.11.9.tar.gz", hash = "sha256:6b8ffda597a14812a7975c90b82a8a2e777d9257aba3453f973acd3c032a18e2"}, ] [package.dependencies] @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "1361bca12603bcac9a5801b4ddb7307bd58d6cc88959ad3085ff710d04fa2a9c" +content-hash = "aa4a0ca531522b64f25794b7f0793ff36e3eaf5c694d8d9e708b22733315d029" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index d4586e77f..6907816d9 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -8,7 +8,7 @@ license = "Apache-2.0" [tool.poetry.dependencies] python = "<4.0,>=3.12.0" -pydantic = "2.11.7" +pydantic = "2.11.9" pydantic-settings = "^2.10.1" langchain-core = "0.3.76" langchain-community = "0.3.29" From 97e9c00f6d3421e3130cb3c802e227ea34d77396 Mon Sep 17 00:00:00 2001 From: christopherschaedlich Date: Tue, 16 Sep 2025 10:41:42 +0200 Subject: [PATCH 038/110] feat: ai sdk integration (#474) * feat: ai sdk integration * feat: refactor tools to be compatible with ai sdk * feat: removed unused deepseek package --- backend/package-lock.json | 125 +++++++++++++++++- backend/package.json | 7 +- backend/src/domain/chat/interfaces.ts | 70 +++++++++- .../chat/middlewares/execute-middleware.ts | 125 ++++++++++++++++-- .../summarize-history-middleware.ts | 50 +++++-- backend/src/extensions/examples/always-42.ts | 5 +- backend/src/extensions/examples/confirm.ts | 5 +- .../src/extensions/examples/show-context.ts | 5 +- .../src/extensions/examples/simple-input.ts | 5 +- backend/src/extensions/examples/user-args.ts | 15 ++- backend/src/extensions/models/nvidia.ts | 83 +++++------- .../src/extensions/tools/azure-ai-search.ts | 7 +- .../src/extensions/tools/bing-web-search.ts | 7 +- .../src/extensions/tools/brave-web-search.ts | 5 +- backend/src/extensions/tools/calculator.ts | 30 ++++- backend/src/extensions/tools/dall-e.ts | 14 +- .../extensions/tools/duckduckgo-web-search.ts | 5 +- .../extensions/tools/files-conversation.ts | 5 +- backend/src/extensions/tools/files-vision.ts | 69 ++++++---- backend/src/extensions/tools/files.ts | 5 +- backend/src/extensions/tools/gpt-image-1.ts | 13 +- .../extensions/tools/grounding-with-bing.ts | 5 +- backend/src/extensions/tools/mcp-tools.ts | 27 ++-- backend/src/extensions/tools/open-api.ts | 5 +- .../tools/whole-files-conversation.ts | 5 +- 25 files changed, 513 insertions(+), 184 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index 7f7a5398d..d807601c1 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.1", "license": "Apache-2.0", "dependencies": { + "@ai-sdk/openai-compatible": "^1.0.17", "@azure/ai-agents": "^1.1.0", "@azure/core-util": "^1.13.0", "@azure/identity": "^4.11.0", @@ -32,6 +33,7 @@ "@nestjs/terminus": "^11.0.0", "@nestjs/typeorm": "^11.0.0", "@willsoto/nestjs-prometheus": "^6.0.2", + "ai": "^5.0.44", "bcrypt": "^6.0.0", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", @@ -39,6 +41,7 @@ "date-fns": "^4.1.0", "dotenv": "^16.6.1", "duck-duck-scrape": "^2.2.7", + "expr-eval": "^2.0.2", "express-session": "^1.18.2", "json-diff-ts": "^4.6.3", "langchain": "^0.3.33", @@ -73,6 +76,7 @@ "@testcontainers/postgresql": "^11.0.3", "@types/bcrypt": "5.0.2", "@types/cookie-parser": "1.4.9", + "@types/expr-eval": "^1.0.2", "@types/express": "5.0.3", "@types/express-session": "1.18.2", "@types/jest": "29.5.14", @@ -108,6 +112,67 @@ "../library/dist": { "extraneous": true }, + "node_modules/@ai-sdk/gateway": { + "version": "1.0.23", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-1.0.23.tgz", + "integrity": "sha512-ynV7WxpRK2zWLGkdOtrU2hW22mBVkEYVS3iMg1+ZGmAYSgzCqzC74bfOJZ2GU1UdcrFWUsFI9qAYjsPkd+AebA==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4" + } + }, + "node_modules/@ai-sdk/openai-compatible": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/@ai-sdk/openai-compatible/-/openai-compatible-1.0.17.tgz", + "integrity": "sha512-5AWWS8sbT7VJmi2gQZKXRJsnPg+3+yN2BLms3x1sjRA/ZUq2TfmVzv6PSMObvbkn27jpvyIX5/e6JYgafhYJkA==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4" + } + }, + "node_modules/@ai-sdk/provider": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-2.0.0.tgz", + "integrity": "sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==", + "license": "Apache-2.0", + "dependencies": { + "json-schema": "^0.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ai-sdk/provider-utils": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-3.0.9.tgz", + "integrity": "sha512-Pm571x5efqaI4hf9yW4KsVlDBDme8++UepZRnq+kqVBWWjgvGhQlzU8glaFq0YJEB9kkxZHbRRyVeHoV2sRYaQ==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@standard-schema/spec": "^1.0.0", + "eventsource-parser": "^3.0.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "dev": true, @@ -4578,6 +4643,23 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@langchain/deepseek": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@langchain/deepseek/-/deepseek-0.1.0.tgz", + "integrity": "sha512-5VzaG/oi2oSfBt+JUdXWjavZcmOzjk14+N5sCFnbrY6xeAjHrtBq7VeBcBJcHqkrjafxADK1aVGV0hpbhiFyJg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@langchain/openai": "^0.6.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@langchain/core": ">=0.3.58 <0.4.0" + } + }, "node_modules/@langchain/google-common": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/@langchain/google-common/-/google-common-0.2.17.tgz", @@ -6750,6 +6832,12 @@ "version": "1.2.5", "license": "MIT" }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT" + }, "node_modules/@testcontainers/postgresql": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@testcontainers/postgresql/-/postgresql-11.0.3.tgz", @@ -6933,6 +7021,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/expr-eval": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/expr-eval/-/expr-eval-1.0.2.tgz", + "integrity": "sha512-kZO1EBkS1bTAZM8iex14PkEK/NHxR93e2OY8IPTW5veQ32Li6+QTWeh+3gtLiEB1vnMwO3vn2zJfdoNQeWMusQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/express": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz", @@ -7915,6 +8010,24 @@ "node": ">= 8.0.0" } }, + "node_modules/ai": { + "version": "5.0.44", + "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.44.tgz", + "integrity": "sha512-l/rdoM4LcRpsRBVvZQBwSU73oNoFGlWj+PcH86QRzxDGJgZqgGItWO0QcKjBNcLDmUjGN1VYd/8J0TAXHJleRQ==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/gateway": "1.0.23", + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.9", + "@opentelemetry/api": "1.9.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4" + } + }, "node_modules/ajv": { "version": "6.12.6", "license": "MIT", @@ -10884,7 +10997,9 @@ } }, "node_modules/eventsource-parser": { - "version": "3.0.1", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", "license": "MIT", "engines": { "node": ">=18.0.0" @@ -10941,6 +11056,8 @@ }, "node_modules/expr-eval": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expr-eval/-/expr-eval-2.0.2.tgz", + "integrity": "sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg==", "license": "MIT" }, "node_modules/express": { @@ -13743,6 +13860,12 @@ "dev": true, "license": "MIT" }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "license": "MIT" diff --git a/backend/package.json b/backend/package.json index c5c68f29e..7724e4dc9 100644 --- a/backend/package.json +++ b/backend/package.json @@ -38,6 +38,7 @@ "migration:revert": "npm run typeorm -- -d src/config/typeorm-migration.config.ts migration:revert" }, "dependencies": { + "@ai-sdk/openai-compatible": "^1.0.17", "@azure/ai-agents": "^1.1.0", "@azure/core-util": "^1.13.0", "@azure/identity": "^4.11.0", @@ -61,6 +62,7 @@ "@nestjs/terminus": "^11.0.0", "@nestjs/typeorm": "^11.0.0", "@willsoto/nestjs-prometheus": "^6.0.2", + "ai": "^5.0.44", "bcrypt": "^6.0.0", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", @@ -68,6 +70,7 @@ "date-fns": "^4.1.0", "dotenv": "^16.6.1", "duck-duck-scrape": "^2.2.7", + "expr-eval": "^2.0.2", "express-session": "^1.18.2", "json-diff-ts": "^4.6.3", "langchain": "^0.3.33", @@ -102,6 +105,7 @@ "@testcontainers/postgresql": "^11.0.3", "@types/bcrypt": "5.0.2", "@types/cookie-parser": "1.4.9", + "@types/expr-eval": "^1.0.2", "@types/express": "5.0.3", "@types/express-session": "1.18.2", "@types/jest": "29.5.14", @@ -136,6 +140,7 @@ "overrides": { "@browserbasehq/stagehand@1.14.0": { "openai": "^5.8.2" - } + }, + "zod": "3.25.51" } } diff --git a/backend/src/domain/chat/interfaces.ts b/backend/src/domain/chat/interfaces.ts index 7af4908c3..af7636522 100644 --- a/backend/src/domain/chat/interfaces.ts +++ b/backend/src/domain/chat/interfaces.ts @@ -3,8 +3,10 @@ import { type BaseListChatMessageHistory } from '@langchain/core/chat_history'; import { type BaseChatModel, type BaseChatModelCallOptions } from '@langchain/core/language_models/chat_models'; import { type ChatPromptTemplate } from '@langchain/core/prompts'; import { type RunnableSequence } from '@langchain/core/runnables'; -import { type StructuredToolInterface } from '@langchain/core/tools'; +import { StructuredTool, type StructuredToolInterface } from '@langchain/core/tools'; +import { CallSettings, LanguageModel } from 'ai'; import { Subject } from 'rxjs'; +import * as z from 'zod'; import { ConfigurationModel, ExtensionArgument } from '../extensions'; import { UploadedFile } from '../files'; import { User } from '../users'; @@ -77,12 +79,74 @@ export interface MessagesHistory { addSources(externalExtensionId: string, sources: Source[]): void; } +export interface LanguageModelContext { + model: LanguageModel; + options: Partial; +} + +export function isLanguageModelContext(instance: BaseChatModel | LanguageModelContext): instance is LanguageModelContext { + return (instance as BaseChatModel).invoke == null; +} + +export abstract class NamedStructuredTool< + T extends z.ZodRawShape = z.ZodRawShape, + TSchema extends z.ZodObject = z.ZodObject, + TToolOutput = string | Record | undefined | void, +> extends StructuredTool { + abstract displayName: string; + abstract schema: TSchema; + + execute(input: z.infer): Promise { + return this._call(input); + } + + get lc_id() { + return [...this.lc_namespace, this.name]; + } +} + +export type NamedDynamicStructuredToolInput, TToolOutput> = { + name: string; + description: string; + displayName: string; + schema: TSchema; + func: (arg: z.infer) => Promise; + returnDirect?: boolean; +}; + +export class NamedDynamicStructuredTool< + T extends z.ZodRawShape = z.ZodRawShape, + TSchema extends z.ZodObject = z.ZodObject, + TToolOutput = string | Record | undefined | void, +> extends NamedStructuredTool { + displayName: string; + name: string; + schema: TSchema; + description: string; + func: (arg: z.infer) => Promise; + returnDirect: boolean; + + constructor({ displayName, func, schema, ...toolInput }: NamedDynamicStructuredToolInput) { + super({}); + this.displayName = displayName; + this.func = func; + this.schema = schema; + this.name = toolInput.name; + this.description = toolInput.description; + this.returnDirect = toolInput.returnDirect ?? false; + } + + protected async _call(arg: z.infer): Promise { + return this.func(arg); + } +} + export interface ChatContext { // The abort controller. readonly abort: AbortController; // Tools this agent has access to. - readonly tools: (StructuredToolInterface & { displayName?: string })[]; + readonly tools: NamedStructuredTool[]; // The input. readonly input: string; @@ -124,7 +188,7 @@ export interface ChatContext { user: User; // LLM to use as the agent. - llms: Record>; + llms: Record | LanguageModelContext>; agentFactory?: (args: AgentArgument) => Promise | RunnableSequence; diff --git a/backend/src/domain/chat/middlewares/execute-middleware.ts b/backend/src/domain/chat/middlewares/execute-middleware.ts index 9ff4de7b0..c1bf8fa91 100644 --- a/backend/src/domain/chat/middlewares/execute-middleware.ts +++ b/backend/src/domain/chat/middlewares/execute-middleware.ts @@ -1,13 +1,23 @@ -import { MessageContent } from '@langchain/core/messages'; +import type { BaseChatModel } from '@langchain/core/language_models/chat_models'; +import { BaseMessage, MessageContent } from '@langchain/core/messages'; import { ChatGenerationChunk } from '@langchain/core/outputs'; import { Runnable, RunnableWithMessageHistory } from '@langchain/core/runnables'; import { StructuredToolInterface } from '@langchain/core/tools'; import { Injectable, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; +import { stepCountIs, streamText, tool, ToolSet } from 'ai'; import { AgentExecutor, AgentExecutorInput, createOpenAIToolsAgent } from 'langchain/agents'; import { I18nService } from '../../../localization/i18n.service'; import { MetricsService } from '../../../metrics/metrics.service'; -import { ChatContext, ChatError, ChatMiddleware, NormalizedMessageContents } from '../interfaces'; +import { + ChatContext, + ChatError, + ChatMiddleware, + isLanguageModelContext, + LanguageModelContext, + NamedStructuredTool, + NormalizedMessageContents, +} from '../interfaces'; import { getReasoningContent, normalizedMessageContent } from '../utils'; type EventActionType = 'start' | 'stream' | 'end'; @@ -42,26 +52,95 @@ export class ExecuteMiddleware implements ChatMiddleware { } } - async execute(context: ChatContext) { - const { llm: chosenLlm, agentFactory, configuration, llms, input, result, prompt, tools, history } = context; + async handleAiSdkChainExecution(llm: LanguageModelContext, context: ChatContext) { + const { input, systemMessages, abort, result, history, tools } = context; + + const messages = await history?.getMessages(); + + const mapTool = (langchainTool: NamedStructuredTool) => { + return { + name: langchainTool.name, + tool: tool({ + name: langchainTool.name, + inputSchema: langchainTool.schema, + execute: (input) => langchainTool.execute(input), + description: langchainTool.description, + }), + }; + }; - const shouldLogLLMAgent = this.configService.get('LOG_LLM_AGENT', 'false'); - if (configuration.executorEndpoint) { - return; + const allTools = tools.reduce((prev, curr) => { + const { name, tool } = mapTool(curr); + prev[name] = tool; + return prev; + }, {} as ToolSet); + + const mapBaseMessage = (message: BaseMessage) => { + const normalized = normalizedMessageContent(message.content)?.[0]; + const text = normalized?.type === 'text' ? normalized.text : ''; + + const type = message.getType(); + switch (type) { + case 'human': + return { role: 'user' as const, content: text }; + case 'system': + return { role: 'system' as const, content: text }; + case 'ai': + return { role: 'assistant' as const, content: text }; + } + }; + + const { fullStream, text } = streamText({ + model: llm.model, + tools: allTools, + toolChoice: 'auto', + prompt: [ + ...systemMessages.map((x) => ({ role: 'system' as const, content: x })), + ...(messages?.map((x) => mapBaseMessage(x)).filter((x) => !!x) ?? []), + { role: 'user' as const, content: input }, + ], + ...llm.options, + abortSignal: abort.signal, + stopWhen: stepCountIs(1000), + }); + + for await (const event of fullStream) { + if (event.type === 'tool-call') { + const toolName = tools.find((x) => x.name === event.toolName)?.displayName ?? event.toolName; + result.next({ type: 'tool_start', tool: { name: toolName } }); + } + if (event.type === 'tool-result') { + const toolName = tools.find((x) => x.name === event.toolName)?.displayName ?? event.toolName; + result.next({ type: 'tool_end', tool: { name: toolName } }); + } + if (event.type === 'tool-error') { + console.log({ event }); + const toolName = tools.find((x) => x.name === event.toolName)?.displayName ?? event.toolName; + result.next({ type: 'tool_end', tool: { name: toolName } }); + } + if (event.type === 'reasoning-delta') { + result.next({ type: 'reasoning', content: event.text }); + } + if (event.type === 'reasoning-end') { + result.next({ type: 'reasoning_end' }); + } + if (event.type === 'text-delta') { + result.next({ type: 'chunk', content: [{ type: 'text', text: event.text }] }); + } } - const llm = llms[chosenLlm ?? '']; + await history?.addAIMessage(await text); + } - if (!llm) { - throw new ChatError(this.i18n.t('texts.chat.errorMissingLLM')); - } + async handleLangChainExecution(llm: BaseChatModel, context: ChatContext) { + const shouldLogLLMAgent = this.configService.get('LOG_LLM_AGENT', 'false'); + const { agentFactory, input, result, prompt, tools, history } = context; + let runnable: Runnable; if (!prompt) { throw new ChatError(this.i18n.t('texts.chat.errorMissingPrompt')); } - let runnable: Runnable; - if (tools.length > 0) { const agent = await (agentFactory ?? createOpenAIToolsAgent)({ llm, @@ -191,6 +270,26 @@ export class ExecuteMiddleware implements ChatMiddleware { result.next({ type: 'chunk', content: lastResult }); } } + + async execute(context: ChatContext) { + const { llm: chosenLlm, configuration, llms } = context; + + if (configuration.executorEndpoint) { + return; + } + + const llm = llms[chosenLlm ?? '']; + + if (!llm) { + throw new ChatError(this.i18n.t('texts.chat.errorMissingLLM')); + } + + if (isLanguageModelContext(llm)) { + return this.handleAiSdkChainExecution(llm, context); + } + + return this.handleLangChainExecution(llm, context); + } } type ToolWithFallback = StructuredToolInterface & { returnDirectFallback: boolean }; diff --git a/backend/src/domain/chat/middlewares/summarize-history-middleware.ts b/backend/src/domain/chat/middlewares/summarize-history-middleware.ts index 13da8bf64..585a0487b 100644 --- a/backend/src/domain/chat/middlewares/summarize-history-middleware.ts +++ b/backend/src/domain/chat/middlewares/summarize-history-middleware.ts @@ -3,9 +3,10 @@ import { StringOutputParser } from '@langchain/core/output_parsers'; import { ChatPromptTemplate } from '@langchain/core/prompts'; import { forwardRef, Inject, Injectable, Logger, NotFoundException } from '@nestjs/common'; import { CommandBus, QueryBus } from '@nestjs/cqrs'; +import { streamText } from 'ai'; import { is } from 'src/lib'; import { I18nService } from '../../../localization/i18n.service'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from '../interfaces'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, isLanguageModelContext } from '../interfaces'; import { GetConversation, GetConversationResponse } from '../use-cases'; import { UpdateConversation } from '../use-cases'; import { normalizedMessageContent } from '../utils'; @@ -53,18 +54,41 @@ export class SummarizeHistoryMiddleware implements ChatMiddleware { } const userMessages = await this.getUserMessages(context); - const historyPrompt = - context.summaryConfig?.prompt ?? - "Summarize the following content ALWAYS in the same language as the content as short as possible in not more than 3 words. Write it as if it is Headline of an Article. Dont't use new lines: {content}"; - const prompt = ChatPromptTemplate.fromMessages([['user', historyPrompt]]); - const outputParser = new StringOutputParser(); - const outputChain = prompt.pipe(llm).pipe(outputParser); - - try { - const name = await outputChain.invoke({ content: userMessages.join(' ') }, { timeout: 60000 }); - return name ?? this.i18n.t('texts.chat.noSummary'); - } catch (err) { - this.logger.error('Failed to get conversation summary.', err); + + if (isLanguageModelContext(llm)) { + const historyPrompt = + context.summaryConfig?.prompt ?? + "Summarize the following content ALWAYS in the same language as the content as short as possible in not more than 3 words. Write it as if it is Headline of an Article. Dont't use new lines!"; + + const { text } = streamText({ + model: llm.model, + prompt: [ + { role: 'system' as const, content: historyPrompt }, + { role: 'user' as const, content: userMessages.join(' ') }, + ], + ...llm.options, + }); + + try { + const name = await text; + return name ?? this.i18n.t('texts.chat.noSummary'); + } catch (err) { + this.logger.error('Failed to get conversation summary.', err); + } + } else { + const historyPrompt = + context.summaryConfig?.prompt ?? + "Summarize the following content ALWAYS in the same language as the content as short as possible in not more than 3 words. Write it as if it is Headline of an Article. Dont't use new lines: {content}"; + + const prompt = ChatPromptTemplate.fromMessages([['user', historyPrompt]]); + const outputParser = new StringOutputParser(); + const outputChain = prompt.pipe(llm).pipe(outputParser); + try { + const name = await outputChain.invoke({ content: userMessages.join(' ') }, { timeout: 60000 }); + return name ?? this.i18n.t('texts.chat.noSummary'); + } catch (err) { + this.logger.error('Failed to get conversation summary.', err); + } } return this.i18n.t('texts.chat.noSummary'); diff --git a/backend/src/extensions/examples/always-42.ts b/backend/src/extensions/examples/always-42.ts index e5984b8f6..d3fc542e1 100644 --- a/backend/src/extensions/examples/always-42.ts +++ b/backend/src/extensions/examples/always-42.ts @@ -1,6 +1,5 @@ -import { StructuredTool } from '@langchain/core/tools'; import { z } from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedStructuredTool } from 'src/domain/chat'; import { Extension, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; @@ -32,7 +31,7 @@ export class Always42Extension implements Extension { } } -class InternalTool extends StructuredTool { +class InternalTool extends NamedStructuredTool { readonly name: string; readonly description = 'Calculates the sum of two numbers'; readonly displayName = 'Always 42'; diff --git a/backend/src/extensions/examples/confirm.ts b/backend/src/extensions/examples/confirm.ts index 3a4ae86d2..c3949e869 100644 --- a/backend/src/extensions/examples/confirm.ts +++ b/backend/src/extensions/examples/confirm.ts @@ -1,6 +1,5 @@ -import { StructuredTool } from '@langchain/core/tools'; import { z } from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, FormActionType, GetContext } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, FormActionType, GetContext, NamedStructuredTool } from 'src/domain/chat'; import { Extension, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; @@ -32,7 +31,7 @@ export class ConfirmExtension implements Extension { } } -class InternalTool extends StructuredTool { +class InternalTool extends NamedStructuredTool { readonly name: string; readonly description = 'Calculates the sum of two numbers after confirmation'; readonly displayName = 'Confirm'; diff --git a/backend/src/extensions/examples/show-context.ts b/backend/src/extensions/examples/show-context.ts index e192f9301..d72d8f4af 100644 --- a/backend/src/extensions/examples/show-context.ts +++ b/backend/src/extensions/examples/show-context.ts @@ -1,6 +1,5 @@ -import { StructuredTool } from '@langchain/core/tools'; import { z } from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedStructuredTool } from 'src/domain/chat'; import { Extension, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; @@ -32,7 +31,7 @@ export class ContextExtension implements Extension { } } -class InternalTool extends StructuredTool { +class InternalTool extends NamedStructuredTool { readonly name: string; readonly description = 'Shows the current context.'; readonly displayName = 'Context'; diff --git a/backend/src/extensions/examples/simple-input.ts b/backend/src/extensions/examples/simple-input.ts index 077311c6e..7027d247b 100644 --- a/backend/src/extensions/examples/simple-input.ts +++ b/backend/src/extensions/examples/simple-input.ts @@ -1,6 +1,5 @@ -import { StructuredTool } from '@langchain/core/tools'; import { z } from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, FormActionType, GetContext } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, FormActionType, GetContext, NamedStructuredTool } from 'src/domain/chat'; import { Extension, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; @@ -35,7 +34,7 @@ export class SimpleInputExtension implements Extension { } } -class InternalTool extends StructuredTool { +class InternalTool extends NamedStructuredTool { readonly name: string; readonly description = 'Handles a user input'; readonly displayName = 'Simple Input'; diff --git a/backend/src/extensions/examples/user-args.ts b/backend/src/extensions/examples/user-args.ts index 427b07417..607af6090 100644 --- a/backend/src/extensions/examples/user-args.ts +++ b/backend/src/extensions/examples/user-args.ts @@ -1,6 +1,12 @@ -import { StructuredTool } from '@langchain/core/tools'; import { z } from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, ExtensionUserArgumentValues, GetContext } from 'src/domain/chat'; +import { + ChatContext, + ChatMiddleware, + ChatNextDelegate, + ExtensionUserArgumentValues, + GetContext, + NamedStructuredTool, +} from 'src/domain/chat'; import { Extension, ExtensionArgument, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; @@ -96,7 +102,7 @@ export class UserArgsExtension implements Extension { } } -class InternalTool extends StructuredTool { +class InternalTool extends NamedStructuredTool { readonly name: string; readonly description = 'Shows the current user arguments.'; readonly displayName = 'User Args'; @@ -112,8 +118,7 @@ class InternalTool extends StructuredTool { private readonly context: ChatContext, extensionExternalId: string, ) { - super(); - + super({}); this.name = extensionExternalId; } diff --git a/backend/src/extensions/models/nvidia.ts b/backend/src/extensions/models/nvidia.ts index e812f3c53..cdc2ea234 100644 --- a/backend/src/extensions/models/nvidia.ts +++ b/backend/src/extensions/models/nvidia.ts @@ -1,41 +1,10 @@ -import { - AIMessageChunk, - ChatMessageChunk, - FunctionMessageChunk, - HumanMessageChunk, - SystemMessageChunk, - ToolMessageChunk, -} from '@langchain/core/messages'; -import { ChatOpenAI, ChatOpenAICompletions, ChatOpenAIFields } from '@langchain/openai'; -import { Record } from 'openai/internal/builtin-types'; -import { ChatCompletionChunk } from 'openai/resources'; +import { createOpenAICompatible } from '@ai-sdk/openai-compatible'; +import { CallSettings, generateText } from 'ai'; import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; -export class ChatNvidiaCompletions extends ChatOpenAICompletions { - protected _convertCompletionsDeltaToBaseMessageChunk( - delta: Record, - rawResponse: ChatCompletionChunk, - defaultRole?: 'system' | 'developer' | 'assistant' | 'user' | 'function' | 'tool', - ): AIMessageChunk | HumanMessageChunk | SystemMessageChunk | FunctionMessageChunk | ToolMessageChunk | ChatMessageChunk { - const result = super._convertCompletionsDeltaToBaseMessageChunk(delta, rawResponse, defaultRole); - if (result instanceof AIMessageChunk && delta['reasoning_content']) { - result.additional_kwargs['reasoning_content'] = delta['reasoning_content']; - } - - return result; - } -} - -export class ChatNvidia extends ChatOpenAI { - constructor(fields: ChatOpenAIFields) { - super(fields); - this.completions = new ChatNvidiaCompletions(fields); - } -} - @Extension() export class NvidiaModelExtension implements Extension { constructor(private readonly i18n: I18nService) {} @@ -107,9 +76,15 @@ export class NvidiaModelExtension implements Extension): Promise { @@ -126,22 +101,28 @@ export class NvidiaModelExtension implements Extension, + }; } } @@ -153,5 +134,5 @@ type NvidiaModelExtensionConfiguration = ExtensionConfiguration & { seed: number; presencePenalty: number; frequencyPenalty: number; - effort?: 'low' | 'medium' | 'high'; + effort?: 'minimal' | 'low' | 'medium' | 'high'; }; diff --git a/backend/src/extensions/tools/azure-ai-search.ts b/backend/src/extensions/tools/azure-ai-search.ts index 0b532acac..98fa5af5c 100644 --- a/backend/src/extensions/tools/azure-ai-search.ts +++ b/backend/src/extensions/tools/azure-ai-search.ts @@ -1,7 +1,6 @@ -import { StructuredTool } from '@langchain/core/tools'; import { Logger } from '@nestjs/common'; import { z } from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedStructuredTool } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; @@ -65,7 +64,7 @@ export class AzureAISearchExtension implements Extension): Promise { const middleware = { - invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { + invoke: async (context: ChatContext, _: GetContext, next: ChatNextDelegate): Promise => { context.tools.push(new InternalTool(extension.values, extension.externalId)); return next(context); }, @@ -75,7 +74,7 @@ export class AzureAISearchExtension implements Extension): Promise { const middleware = { - invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { + invoke: async (context: ChatContext, _: GetContext, next: ChatNextDelegate): Promise => { context.tools.push(new InternalTool(extension.values, extension.externalId)); return next(context); }, @@ -41,7 +40,7 @@ export class BingWebSearchExtension implements Extension { const middleware = { - invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { - context.tools.push(this.tool); + invoke: async (context: ChatContext, _: GetContext, next: ChatNextDelegate): Promise => { + context.tools.push(new InternalTool()); return next(context); }, }; @@ -53,3 +52,22 @@ export class CalculatorExtension implements Extension { return Promise.resolve([middleware]); } } + +class InternalTool extends NamedStructuredTool { + readonly name = 'calculator'; + readonly description = + 'Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.'; + readonly displayName = 'Calculator'; + + get lc_id() { + return [...this.lc_namespace, this.name]; + } + + readonly schema = z.object({ + input: z.string(), + }); + + protected async _call({ input }: z.infer): Promise { + return Promise.resolve(String(Parser.evaluate(input))); + } +} diff --git a/backend/src/extensions/tools/dall-e.ts b/backend/src/extensions/tools/dall-e.ts index 01dfc5806..3ddcb9777 100644 --- a/backend/src/extensions/tools/dall-e.ts +++ b/backend/src/extensions/tools/dall-e.ts @@ -1,10 +1,10 @@ -import { Tool } from '@langchain/core/tools'; import { DallEAPIWrapper } from '@langchain/openai'; import { forwardRef, Inject, Logger } from '@nestjs/common'; import { CommandBus } from '@nestjs/cqrs'; import * as uuid from 'uuid'; +import * as z from 'zod'; import { AuthService } from 'src/domain/auth'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedStructuredTool } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { UploadBlob } from 'src/domain/settings'; import { User } from 'src/domain/users'; @@ -106,7 +106,7 @@ export class DallEExtension implements Extension { } } -class InternalTool extends Tool { +class InternalTool extends NamedStructuredTool { readonly name: string; readonly description = 'A tool to generate images from a prompt. It returns a link to an image. Show the image to the user by using Markdown to embed the image into your response, like `![alttext](link/from/the/response)`.'; @@ -118,6 +118,10 @@ class InternalTool extends Tool { return [...this.lc_namespace, this.name]; } + readonly schema = z.object({ + input: z.string(), + }); + constructor( private readonly authService: AuthService, private readonly wrapper: DallEAPIWrapper, @@ -129,9 +133,9 @@ class InternalTool extends Tool { this.displayName = spec.title; } - protected async _call(arg: string): Promise { + protected async _call({ input }: z.infer): Promise { try { - const image = (await this.wrapper.invoke(arg)) as string; + const image = (await this.wrapper.invoke(input)) as string; // Download the image to put it in our store. const downloaded = await fetch(image); diff --git a/backend/src/extensions/tools/duckduckgo-web-search.ts b/backend/src/extensions/tools/duckduckgo-web-search.ts index 91f28aea4..6024a9342 100644 --- a/backend/src/extensions/tools/duckduckgo-web-search.ts +++ b/backend/src/extensions/tools/duckduckgo-web-search.ts @@ -1,7 +1,6 @@ import { DuckDuckGoSearch } from '@langchain/community/tools/duckduckgo_search'; -import { StructuredTool } from '@langchain/core/tools'; import z from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedStructuredTool } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; @@ -41,7 +40,7 @@ export class DuckduckgoWebSearchExtension implements Extension {}, @@ -112,6 +111,7 @@ export class FilesVisionExtension implements Extension { const llm = context.llms[context.llm ?? '']; if (!llm) { @@ -139,23 +139,36 @@ export class FilesVisionExtension implements Extension[0] = [ - { - role: 'human', - content: images.map((imageUrl) => ({ - type: 'image_url', - image_url: imageUrl, - })), - }, - ['user', context.input], - ]; - try { - const prompt = ChatPromptTemplate.fromMessages(messages); - const outputParser = new StringOutputParser(); - const outputChain = prompt.pipe(llm).pipe(outputParser); - const result = await outputChain.invoke({}); - return `Add the following content to your response without modification: ${result}`; + if (isLanguageModelContext(llm)) { + const { text } = await generateText({ + model: llm.model, + prompt: [ + { role: 'user' as const, content: images.map((x) => ({ type: 'image', image: x })) }, + { role: 'user' as const, content: context.input }, + ], + ...llm.options, + }); + + return `Add the following content to your response without modification: ${text}`; + } else { + const messages: Parameters[0] = [ + { + role: 'human', + content: images.map((imageUrl) => ({ + type: 'image_url', + image_url: imageUrl, + })), + }, + ['user', context.input], + ]; + const prompt = ChatPromptTemplate.fromMessages(messages); + const outputParser = new StringOutputParser(); + //TODO: fixme + const outputChain = prompt.pipe(llm as unknown as BaseChatModel).pipe(outputParser); + const result = await outputChain.invoke({}); + return `Add the following content to your response without modification: ${result}`; + } } catch (err) { //TODO: for unsupported models there should be error handling this.logger.error('Error reading image', err); diff --git a/backend/src/extensions/tools/files.ts b/backend/src/extensions/tools/files.ts index e19c09bc2..44a46501d 100644 --- a/backend/src/extensions/tools/files.ts +++ b/backend/src/extensions/tools/files.ts @@ -1,9 +1,8 @@ -import { StructuredTool } from '@langchain/core/tools'; import { forwardRef, Inject, Logger, NotFoundException } from '@nestjs/common'; import { QueryBus } from '@nestjs/cqrs'; import { InjectRepository } from '@nestjs/typeorm'; import { z } from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedStructuredTool } from 'src/domain/chat'; import { BucketEntity, BucketRepository, FileEntity, FileRepository } from 'src/domain/database'; import { Extension, ExtensionArgument, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { Bucket, GetDocumentContent, GetDocumentContentResponse, SearchFiles, SearchFilesResponse } from 'src/domain/files'; @@ -171,7 +170,7 @@ export class FilesExtension { + protected async _call({ prompt }: z.infer): Promise { try { const response = await this.client.images.generate({ model: 'gpt-image-1', diff --git a/backend/src/extensions/tools/grounding-with-bing.ts b/backend/src/extensions/tools/grounding-with-bing.ts index 09327febd..b4e342861 100644 --- a/backend/src/extensions/tools/grounding-with-bing.ts +++ b/backend/src/extensions/tools/grounding-with-bing.ts @@ -7,10 +7,9 @@ import { } from '@azure/ai-agents'; import { delay } from '@azure/core-util'; import { ClientSecretCredential } from '@azure/identity'; -import { StructuredTool } from '@langchain/core/tools'; import { Logger } from '@nestjs/common'; import { z } from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, Source } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedStructuredTool, Source } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; @@ -84,7 +83,7 @@ export class GroundingWithBingSearchExtension implements Extension { + return jsonSchemaToZod(schema); +} + type MCPListToolsResultSchema = z.infer; enum Transport { @@ -69,15 +79,6 @@ interface ExtensionState extends Pick { changed?: boolean; } -export class NamedDynamicStructuredTool extends DynamicStructuredTool { - displayName: string; - - constructor({ displayName, ...toolInput }: DynamicStructuredToolInput & { displayName: string }) { - super(toolInput); - this.displayName = displayName; - } -} - // zod has no password type since it is handled as string so we introduce a whitelist to map password fields const passwordKeys = ['apiKey', 'api-key', 'password', 'credentials']; @@ -470,7 +471,7 @@ export class MCPToolsExtension implements Extension { displayName, name: `${extension.externalId}_${name}`, description: params.description || description || name, - schema: jsonSchemaToZod(schema), + schema: jsonSchemaToZodInternal(schema), func: async (args: Record) => { const attributes = params.attributes ?? {}; const adminArgs = this.applyTemplates(context, this.getTemplateArgs(attributes, 'admin')); diff --git a/backend/src/extensions/tools/open-api.ts b/backend/src/extensions/tools/open-api.ts index bb6ad1582..e2bc8f1ca 100644 --- a/backend/src/extensions/tools/open-api.ts +++ b/backend/src/extensions/tools/open-api.ts @@ -1,10 +1,9 @@ -import { StructuredTool } from '@langchain/core/tools'; import { Logger } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { addMilliseconds, addYears } from 'date-fns'; import { MoreThan } from 'typeorm'; import { z } from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, FormActionType, GetContext } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, FormActionType, GetContext, NamedStructuredTool } from 'src/domain/chat'; import { CacheEntity, CacheRepository } from 'src/domain/database'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; @@ -115,7 +114,7 @@ export class OpenApiExtension implements Extension; readonly displayName: string; diff --git a/backend/src/extensions/tools/whole-files-conversation.ts b/backend/src/extensions/tools/whole-files-conversation.ts index 5c5f29d02..ef42bd6d5 100644 --- a/backend/src/extensions/tools/whole-files-conversation.ts +++ b/backend/src/extensions/tools/whole-files-conversation.ts @@ -1,8 +1,7 @@ -import { StructuredTool } from '@langchain/core/tools'; import { forwardRef, Inject, Logger } from '@nestjs/common'; import { QueryBus } from '@nestjs/cqrs'; import { z } from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedStructuredTool } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { GetFiles, GetFilesResponse } from '../../domain/files'; @@ -137,7 +136,7 @@ export class WholeFilesExtension implements Extension Date: Tue, 16 Sep 2025 19:23:14 +0000 Subject: [PATCH 039/110] chore(deps-dev): bump faker from 37.7.0 to 37.8.0 in /services/reis Bumps [faker](https://github.com/joke2k/faker) from 37.7.0 to 37.8.0. - [Release notes](https://github.com/joke2k/faker/releases) - [Changelog](https://github.com/joke2k/faker/blob/master/CHANGELOG.md) - [Commits](https://github.com/joke2k/faker/compare/v37.7.0...v37.8.0) --- updated-dependencies: - dependency-name: faker dependency-version: 37.8.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 8 ++++---- services/reis/pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index bc217fbcc..e3d2efb7c 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -1024,14 +1024,14 @@ test = ["pytest (>=6)"] [[package]] name = "faker" -version = "37.7.0" +version = "37.8.0" description = "Faker is a Python package that generates fake data for you." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "faker-37.7.0-py3-none-any.whl", hash = "sha256:8e94fad273e6ac85b507890298d4b1a41eb24faa1db86a2f9060d52e97cfa5cf"}, - {file = "faker-37.7.0.tar.gz", hash = "sha256:d0bbfa0a48aacaf10bc1079bb8bfc27aff226fc9cc49e3f4d606fa599fc49036"}, + {file = "faker-37.8.0-py3-none-any.whl", hash = "sha256:b08233118824423b5fc239f7dd51f145e7018082b4164f8da6a9994e1f1ae793"}, + {file = "faker-37.8.0.tar.gz", hash = "sha256:090bb5abbec2b30949a95ce1ba6b20d1d0ed222883d63483a0d4be4a970d6fb8"}, ] [package.dependencies] @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "aa4a0ca531522b64f25794b7f0793ff36e3eaf5c694d8d9e708b22733315d029" +content-hash = "97d708ddb84593fefc081a16c7fccc0ca28bf5ddfd8c379a9268588170213311" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index 6907816d9..f4486965b 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -39,7 +39,7 @@ pytest-mock = "3.15.0" pytest-responses = "0.5.1" pytest-github-report = "0.0.1" pytest-error-for-skips = "2.0.2" -faker = "37.7.0" +faker = "37.8.0" responses = "0.25.8" [tool.poetry.scripts] From 8d95fe9bba6462856ad700a6154b9d8bd530cb4d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Sep 2025 19:44:04 +0000 Subject: [PATCH 040/110] chore(deps): bump langchain-aws from 0.2.32 to 0.2.33 in /services/reis Bumps [langchain-aws](https://github.com/langchain-ai/langchain-aws) from 0.2.32 to 0.2.33. - [Release notes](https://github.com/langchain-ai/langchain-aws/releases) - [Commits](https://github.com/langchain-ai/langchain-aws/compare/langchain-aws==0.2.32...langchain-aws==0.2.33) --- updated-dependencies: - dependency-name: langchain-aws dependency-version: 0.2.33 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 10 +++++----- services/reis/pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index e3d2efb7c..453f894d0 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -1839,19 +1839,19 @@ xai = ["langchain-xai"] [[package]] name = "langchain-aws" -version = "0.2.32" +version = "0.2.33" description = "An integration package connecting AWS and LangChain" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "langchain_aws-0.2.32-py3-none-any.whl", hash = "sha256:dbdfa3d9352d0fa60db650fea0b49f79d154754462c222039582dadf2e75c690"}, - {file = "langchain_aws-0.2.32.tar.gz", hash = "sha256:9364d18cb68dc111b965f630ea024cd3352132fe0e008eeb3bef5a364d98592e"}, + {file = "langchain_aws-0.2.33-py3-none-any.whl", hash = "sha256:92c0b4ddcc5e789b3d61cdf20556aeb75ca5a61e8431356f429227bb2760ca39"}, + {file = "langchain_aws-0.2.33.tar.gz", hash = "sha256:5160043fcacaf56f29b38e4ac58f9bee65872d9ab51b893a1cb7b28388c2e685"}, ] [package.dependencies] boto3 = ">=1.39.7" -langchain-core = ">=0.3.75,<0.4.0" +langchain-core = ">=0.3.76,<0.4.0" numpy = {version = ">=1.26.0,<3", markers = "python_version >= \"3.12\""} pydantic = ">=2.10.0,<3" @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "97d708ddb84593fefc081a16c7fccc0ca28bf5ddfd8c379a9268588170213311" +content-hash = "600ff11972dab0a5b1cd693b964ecfa21c62157068317cd161860ca347a235ce" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index f4486965b..686b4c1df 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -26,7 +26,7 @@ aiofiles = "^24.1.0" prometheus-fastapi-instrumentator = "^7.0.0" fastmcp = "^2.12.3" langchain-ollama = "^0.3.8" -langchain-aws = "^0.2.32" +langchain-aws = "^0.2.33" langchain-nvidia-ai-endpoints = "^0.3.18" [tool.poetry.group.dev.dependencies] From a4f2c58be0e7be7a538838955343119cfa390c07 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Sep 2025 07:13:50 +0000 Subject: [PATCH 041/110] chore(deps-dev): bump pytest-mock in /services/reis Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.15.0 to 3.15.1. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.15.0...v3.15.1) --- updated-dependencies: - dependency-name: pytest-mock dependency-version: 3.15.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 8 ++++---- services/reis/pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 453f894d0..d0ee11e12 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -4032,14 +4032,14 @@ all = ["pytablewriter", "pytest"] [[package]] name = "pytest-mock" -version = "3.15.0" +version = "3.15.1" description = "Thin-wrapper around the mock package for easier use with pytest" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest_mock-3.15.0-py3-none-any.whl", hash = "sha256:ef2219485fb1bd256b00e7ad7466ce26729b30eadfc7cbcdb4fa9a92ca68db6f"}, - {file = "pytest_mock-3.15.0.tar.gz", hash = "sha256:ab896bd190316b9d5d87b277569dfcdf718b2d049a2ccff5f7aca279c002a1cf"}, + {file = "pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d"}, + {file = "pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f"}, ] [package.dependencies] @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "600ff11972dab0a5b1cd693b964ecfa21c62157068317cd161860ca347a235ce" +content-hash = "aa61581907bffa0d1a4fb61d05d8ec0880b79d7b1a8f2e8952dc4de34fbfbe30" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index 686b4c1df..30b2b5cc2 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -35,7 +35,7 @@ mypy = "1.18.1" pre-commit = "4.3.0" pytest = "8.4.2" pytest-cov = "7.0.0" -pytest-mock = "3.15.0" +pytest-mock = "3.15.1" pytest-responses = "0.5.1" pytest-github-report = "0.0.1" pytest-error-for-skips = "2.0.2" From 05261594ea20b00d8ce7a43df9f8cd166bb769fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Sep 2025 07:26:36 +0000 Subject: [PATCH 042/110] chore(deps): bump fastapi from 0.116.1 to 0.116.2 in /services/reis Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.116.1 to 0.116.2. - [Release notes](https://github.com/fastapi/fastapi/releases) - [Commits](https://github.com/fastapi/fastapi/compare/0.116.1...0.116.2) --- updated-dependencies: - dependency-name: fastapi dependency-version: 0.116.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 10 +++++----- services/reis/pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index d0ee11e12..8ba7bdc12 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -1039,14 +1039,14 @@ tzdata = "*" [[package]] name = "fastapi" -version = "0.116.1" +version = "0.116.2" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "fastapi-0.116.1-py3-none-any.whl", hash = "sha256:c46ac7c312df840f0c9e220f7964bada936781bc4e2e6eb71f1c4d7553786565"}, - {file = "fastapi-0.116.1.tar.gz", hash = "sha256:ed52cbf946abfd70c5a0dccb24673f0670deeb517a88b3544d03c2a6bf283143"}, + {file = "fastapi-0.116.2-py3-none-any.whl", hash = "sha256:c3a7a8fb830b05f7e087d920e0d786ca1fc9892eb4e9a84b227be4c1bc7569db"}, + {file = "fastapi-0.116.2.tar.gz", hash = "sha256:231a6af2fe21cfa2c32730170ad8514985fc250bec16c9b242d3b94c835ef529"}, ] [package.dependencies] @@ -1056,7 +1056,7 @@ httpx = {version = ">=0.23.0", optional = true, markers = "extra == \"standard\" jinja2 = {version = ">=3.1.5", optional = true, markers = "extra == \"standard\""} pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" python-multipart = {version = ">=0.0.18", optional = true, markers = "extra == \"standard\""} -starlette = ">=0.40.0,<0.48.0" +starlette = ">=0.40.0,<0.49.0" typing-extensions = ">=4.8.0" uvicorn = {version = ">=0.12.0", extras = ["standard"], optional = true, markers = "extra == \"standard\""} @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "aa61581907bffa0d1a4fb61d05d8ec0880b79d7b1a8f2e8952dc4de34fbfbe30" +content-hash = "88e318d51d1f4c712b20e034d0de13561db454d60c8b319a56eb32547078e048" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index 30b2b5cc2..f299d21bb 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -15,7 +15,7 @@ langchain-community = "0.3.29" langchain-openai = "0.3.33" langchain-postgres = "0.0.15" psycopg = {extras = ["binary"], version = "^3.2.10"} -fastapi = {extras = ["standard"], version = "0.116.1"} +fastapi = {extras = ["standard"], version = "0.116.2"} azure-search-documents = "11.5.3" azure-identity = "1.25.0" unstructured = {extras = ["docx", "md", "pptx", "xlsx"], version = "0.18.14"} From 477b806523558a5651f9a2c4b0507149839ffcea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Sep 2025 19:24:09 +0000 Subject: [PATCH 043/110] chore(deps): bump the langchain group across 1 directory with 6 updates Bumps the langchain group with 6 updates in the /backend directory: | Package | From | To | | --- | --- | --- | | [@langchain/community](https://github.com/langchain-ai/langchainjs) | `0.3.55` | `0.3.56` | | [@langchain/core](https://github.com/langchain-ai/langchainjs) | `0.3.75` | `0.3.76` | | [@langchain/google-genai](https://github.com/langchain-ai/langchainjs) | `0.2.17` | `0.2.18` | | [@langchain/google-vertexai](https://github.com/langchain-ai/langchainjs) | `0.2.17` | `0.2.18` | | [@langchain/openai](https://github.com/langchain-ai/langchainjs) | `0.6.11` | `0.6.12` | | [langchain](https://github.com/langchain-ai/langchainjs) | `0.3.33` | `0.3.34` | Updates `@langchain/community` from 0.3.55 to 0.3.56 - [Release notes](https://github.com/langchain-ai/langchainjs/releases) - [Changelog](https://github.com/langchain-ai/langchainjs/blob/main/release_workspace.js) - [Commits](https://github.com/langchain-ai/langchainjs/compare/@langchain/community==0.3.55...@langchain/community==0.3.56) Updates `@langchain/core` from 0.3.75 to 0.3.76 - [Release notes](https://github.com/langchain-ai/langchainjs/releases) - [Changelog](https://github.com/langchain-ai/langchainjs/blob/main/release_workspace.js) - [Commits](https://github.com/langchain-ai/langchainjs/compare/@langchain/core==0.3.75...@langchain/core==0.3.76) Updates `@langchain/google-genai` from 0.2.17 to 0.2.18 - [Release notes](https://github.com/langchain-ai/langchainjs/releases) - [Changelog](https://github.com/langchain-ai/langchainjs/blob/main/release_workspace.js) - [Commits](https://github.com/langchain-ai/langchainjs/compare/@langchain/google-genai==0.2.17...@langchain/google-genai==0.2.18) Updates `@langchain/google-vertexai` from 0.2.17 to 0.2.18 - [Release notes](https://github.com/langchain-ai/langchainjs/releases) - [Changelog](https://github.com/langchain-ai/langchainjs/blob/main/release_workspace.js) - [Commits](https://github.com/langchain-ai/langchainjs/compare/@langchain/google-vertexai==0.2.17...@langchain/google-vertexai==0.2.18) Updates `@langchain/openai` from 0.6.11 to 0.6.12 - [Release notes](https://github.com/langchain-ai/langchainjs/releases) - [Changelog](https://github.com/langchain-ai/langchainjs/blob/main/release_workspace.js) - [Commits](https://github.com/langchain-ai/langchainjs/compare/@langchain/openai==0.6.11...@langchain/openai==0.6.12) Updates `langchain` from 0.3.33 to 0.3.34 - [Release notes](https://github.com/langchain-ai/langchainjs/releases) - [Changelog](https://github.com/langchain-ai/langchainjs/blob/main/release_workspace.js) - [Commits](https://github.com/langchain-ai/langchainjs/compare/langchain==0.3.33...langchain==0.3.34) --- updated-dependencies: - dependency-name: "@langchain/community" dependency-version: 0.3.56 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: langchain - dependency-name: "@langchain/core" dependency-version: 0.3.76 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: langchain - dependency-name: "@langchain/google-genai" dependency-version: 0.2.18 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: langchain - dependency-name: "@langchain/google-vertexai" dependency-version: 0.2.18 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: langchain - dependency-name: "@langchain/openai" dependency-version: 0.6.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: langchain - dependency-name: langchain dependency-version: 0.3.34 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: langchain ... Signed-off-by: dependabot[bot] --- backend/package-lock.json | 72 ++++++++++++++++++--------------------- backend/package.json | 12 +++---- 2 files changed, 40 insertions(+), 44 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index d807601c1..11f50e52c 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -14,13 +14,13 @@ "@azure/core-util": "^1.13.0", "@azure/identity": "^4.11.0", "@langchain/aws": "0.1.15", - "@langchain/community": "^0.3.55", - "@langchain/core": "^0.3.75", - "@langchain/google-genai": "^0.2.17", - "@langchain/google-vertexai": "^0.2.17", + "@langchain/community": "^0.3.56", + "@langchain/core": "^0.3.77", + "@langchain/google-genai": "^0.2.18", + "@langchain/google-vertexai": "^0.2.18", "@langchain/mistralai": "^0.2.1", "@langchain/ollama": "^0.2.4", - "@langchain/openai": "^0.6.11", + "@langchain/openai": "^0.6.12", "@modelcontextprotocol/sdk": "^1.17.0", "@n8n/json-schema-to-zod": "^1.1.0", "@nestjs/common": "^11.1.3", @@ -44,7 +44,7 @@ "expr-eval": "^2.0.2", "express-session": "^1.18.2", "json-diff-ts": "^4.6.3", - "langchain": "^0.3.33", + "langchain": "^0.3.34", "langfuse-langchain": "^3.38.5", "logform": "^2.7.0", "nest-winston": "^1.10.2", @@ -4070,9 +4070,9 @@ } }, "node_modules/@langchain/community": { - "version": "0.3.55", - "resolved": "https://registry.npmjs.org/@langchain/community/-/community-0.3.55.tgz", - "integrity": "sha512-vCBM59gYfsRxB+OCD2ot/6Hb5/uKHipGKDxP6Jq3PCB/hUR6crvPi0nxb1bi+DJub6FpZUmSnwj7YV240ObaaQ==", + "version": "0.3.56", + "resolved": "https://registry.npmjs.org/@langchain/community/-/community-0.3.56.tgz", + "integrity": "sha512-lDjUnRfHAX7aMXyEB2EWbe5qOmdQdz8n+0CNQ4ExpLy3NOFQhEVkWclhsucaX04zh0r/VH5Pkk9djpnhPBDH7g==", "license": "MIT", "dependencies": { "@langchain/openai": ">=0.2.0 <0.7.0", @@ -4120,7 +4120,7 @@ "@huggingface/inference": "^4.0.5", "@huggingface/transformers": "^3.5.2", "@ibm-cloud/watsonx-ai": "*", - "@lancedb/lancedb": "^0.12.0", + "@lancedb/lancedb": "^0.19.1", "@langchain/core": ">=0.3.58 <0.4.0", "@layerup/layerup-security": "^1.5.12", "@libsql/client": "^0.14.0", @@ -4169,7 +4169,6 @@ "crypto-js": "^4.2.0", "d3-dsv": "^2.0.0", "discord.js": "^14.14.1", - "dria": "^0.0.3", "duck-duck-scrape": "^2.2.5", "epub2": "^3.0.1", "fast-xml-parser": "*", @@ -4451,9 +4450,6 @@ "discord.js": { "optional": true }, - "dria": { - "optional": true - }, "duck-duck-scrape": { "optional": true }, @@ -4608,9 +4604,9 @@ } }, "node_modules/@langchain/core": { - "version": "0.3.75", - "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.75.tgz", - "integrity": "sha512-kTyBS0DTeD0JYa9YH5lg6UdDbHmvplk3t9PCjP5jDQZCK5kPe2aDFToqdiCaLzZg8RzzM+clXLVyJtPTE8bZ2Q==", + "version": "0.3.77", + "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.77.tgz", + "integrity": "sha512-aqXHea9xfpVn6VoCq9pjujwFqrh3vw3Fgm9KFUZJ1cF7Bx5HI62DvQPw8LlRB3NB4dhwBBA1ldAVkkkd1du8nA==", "license": "MIT", "dependencies": { "@cfworker/json-schema": "^4.0.2", @@ -4661,9 +4657,9 @@ } }, "node_modules/@langchain/google-common": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/@langchain/google-common/-/google-common-0.2.17.tgz", - "integrity": "sha512-51h/BHl8EzAES83U7BJV2TrxMYGf0oNx0jE0YAzMBpe6rG0lkjrV8K2jFtvRxLIp/+RyKlfrd+eC5+DcymGLKw==", + "version": "0.2.18", + "resolved": "https://registry.npmjs.org/@langchain/google-common/-/google-common-0.2.18.tgz", + "integrity": "sha512-HjWB6Bx4zj7KkiHnqRpx8YNaXdA97sKQMQ17keyWl7nQJlRauNyymm8QGeduKSEfECDr2nGzY8Y/SNY64X6cSA==", "license": "MIT", "dependencies": { "uuid": "^10.0.0" @@ -4689,12 +4685,12 @@ } }, "node_modules/@langchain/google-gauth": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/@langchain/google-gauth/-/google-gauth-0.2.17.tgz", - "integrity": "sha512-EubaUKlWo5TLjHRRoQNL40EhytWNZwgwzo8qyM0Kh8hDNK6sKOiXxeV2w2Ehmd8z3cNW5pF0d+96A19e31W4lA==", + "version": "0.2.18", + "resolved": "https://registry.npmjs.org/@langchain/google-gauth/-/google-gauth-0.2.18.tgz", + "integrity": "sha512-xof4jBnPB0YI6OlFuETdbODoM05XBTJoC+qQKJ4qNOcWI7u760sRKm57cvG+jzjParojAxdCdrNEKV47wUpoKg==", "license": "MIT", "dependencies": { - "@langchain/google-common": "^0.2.17", + "@langchain/google-common": "^0.2.18", "google-auth-library": "^10.1.0" }, "engines": { @@ -4705,9 +4701,9 @@ } }, "node_modules/@langchain/google-genai": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/@langchain/google-genai/-/google-genai-0.2.17.tgz", - "integrity": "sha512-A21HhTJ5WQdh06ZMC8o/1HzkptHudzzRU8oExcWQ8aRa3Q9/4Es4bopEsEnu50rmDeARG3czMsUSUVS+BQYGEA==", + "version": "0.2.18", + "resolved": "https://registry.npmjs.org/@langchain/google-genai/-/google-genai-0.2.18.tgz", + "integrity": "sha512-m9EiN3VKC01A7/625YQ6Q1Lqq8zueewADX4W5Tcme4RImN75zkg2Z7FYbD1Fo6Zwolc4wBNO6LUtbg3no4rv1Q==", "license": "MIT", "dependencies": { "@google/generative-ai": "^0.24.0", @@ -4734,12 +4730,12 @@ } }, "node_modules/@langchain/google-vertexai": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/@langchain/google-vertexai/-/google-vertexai-0.2.17.tgz", - "integrity": "sha512-iK5rM7p2TG+gbTA1EOhZdCIvRfafVm7kqD/6AqNyOhPBMyZl20ZN6n9Ttbj9ihBHWmMBeIgN1+Ia8dru0E+rlg==", + "version": "0.2.18", + "resolved": "https://registry.npmjs.org/@langchain/google-vertexai/-/google-vertexai-0.2.18.tgz", + "integrity": "sha512-oZsOp9Sx4rsFpHH5UiuObo5NYCAqhhmroL3f3pDZ06DB6hpfnNc6XNjdpbmt0AemP6PO/52UlKHeSYtnYlBzIQ==", "license": "MIT", "dependencies": { - "@langchain/google-gauth": "^0.2.17" + "@langchain/google-gauth": "^0.2.18" }, "engines": { "node": ">=18" @@ -4805,9 +4801,9 @@ } }, "node_modules/@langchain/openai": { - "version": "0.6.11", - "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.6.11.tgz", - "integrity": "sha512-BkaudQTLsmdt9mF6tn6CrsK2TEFKk4EhAWYkouGTy/ljJIH/p2Nz9awIOGdrQiQt6AJ5mvKGupyVqy3W/jim2Q==", + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.6.12.tgz", + "integrity": "sha512-xc81QFQ2E5IuwCOYN91TG2prsbsxH2jAqMbZx2nRO+3XUzqH5RNqxSHvJKFmh9793KcPw3PE3vEvBQ8oO+3iOA==", "license": "MIT", "dependencies": { "js-tiktoken": "^1.0.12", @@ -13978,9 +13974,9 @@ "license": "MIT" }, "node_modules/langchain": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/langchain/-/langchain-0.3.33.tgz", - "integrity": "sha512-MgMfy/68/xUi02dSg4AZhXjo4jQ+WuVYrU/ryzn59nUb+LXaMRoP/C9eaqblin0OLqGp93jfT8FXDg5mcqSg5A==", + "version": "0.3.34", + "resolved": "https://registry.npmjs.org/langchain/-/langchain-0.3.34.tgz", + "integrity": "sha512-OADHLQYRX+36EqQBxIoryCdMKfHex32cJBSWveadIIeRhygqivacIIDNwVjX51Y++c80JIdR0jaQHWn2r3H1iA==", "license": "MIT", "dependencies": { "@langchain/openai": ">=0.1.0 <0.7.0", @@ -13988,7 +13984,7 @@ "js-tiktoken": "^1.0.12", "js-yaml": "^4.1.0", "jsonpointer": "^5.0.1", - "langsmith": "^0.3.46", + "langsmith": "^0.3.67", "openapi-types": "^12.1.3", "p-retry": "4", "uuid": "^10.0.0", diff --git a/backend/package.json b/backend/package.json index 7724e4dc9..913cbde2f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -43,13 +43,13 @@ "@azure/core-util": "^1.13.0", "@azure/identity": "^4.11.0", "@langchain/aws": "0.1.15", - "@langchain/community": "^0.3.55", - "@langchain/core": "^0.3.75", - "@langchain/google-genai": "^0.2.17", - "@langchain/google-vertexai": "^0.2.17", + "@langchain/community": "^0.3.56", + "@langchain/core": "^0.3.77", + "@langchain/google-genai": "^0.2.18", + "@langchain/google-vertexai": "^0.2.18", "@langchain/mistralai": "^0.2.1", "@langchain/ollama": "^0.2.4", - "@langchain/openai": "^0.6.11", + "@langchain/openai": "^0.6.12", "@modelcontextprotocol/sdk": "^1.17.0", "@n8n/json-schema-to-zod": "^1.1.0", "@nestjs/common": "^11.1.3", @@ -73,7 +73,7 @@ "expr-eval": "^2.0.2", "express-session": "^1.18.2", "json-diff-ts": "^4.6.3", - "langchain": "^0.3.33", + "langchain": "^0.3.34", "langfuse-langchain": "^3.38.5", "logform": "^2.7.0", "nest-winston": "^1.10.2", From 42bb25a72f33d10cce587d224c7172f651de18be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Sep 2025 19:23:34 +0000 Subject: [PATCH 044/110] chore(deps-dev): bump eslint-config-prettier in /backend Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 10.1.5 to 10.1.8. - [Release notes](https://github.com/prettier/eslint-config-prettier/releases) - [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/eslint-config-prettier/compare/v10.1.5...v10.1.8) --- updated-dependencies: - dependency-name: eslint-config-prettier dependency-version: 10.1.8 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- backend/package-lock.json | 6 ++++-- backend/package.json | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index 11f50e52c..b14e10942 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -91,7 +91,7 @@ "@typescript-eslint/eslint-plugin": "8.33.1", "@typescript-eslint/parser": "8.35.1", "eslint": "9.32.0", - "eslint-config-prettier": "10.1.5", + "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-prettier": "5.5.1", "globals": "16.3.0", @@ -10660,7 +10660,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "10.1.5", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", "bin": { diff --git a/backend/package.json b/backend/package.json index 913cbde2f..2a0e8cc8c 100644 --- a/backend/package.json +++ b/backend/package.json @@ -120,7 +120,7 @@ "@typescript-eslint/eslint-plugin": "8.33.1", "@typescript-eslint/parser": "8.35.1", "eslint": "9.32.0", - "eslint-config-prettier": "10.1.5", + "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-prettier": "5.5.1", "globals": "16.3.0", From c18093f37c24fa088a03efcaf57bee87cf734e02 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Sep 2025 19:28:41 +0000 Subject: [PATCH 045/110] chore(deps-dev): bump eslint-config-prettier in /e2e Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 10.1.5 to 10.1.8. - [Release notes](https://github.com/prettier/eslint-config-prettier/releases) - [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/eslint-config-prettier/compare/v10.1.5...v10.1.8) --- updated-dependencies: - dependency-name: eslint-config-prettier dependency-version: 10.1.8 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- e2e/package-lock.json | 8 ++++---- e2e/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/e2e/package-lock.json b/e2e/package-lock.json index aec2ecdf7..7623b6a06 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -22,7 +22,7 @@ "@typescript-eslint/eslint-plugin": "8.33.1", "@typescript-eslint/parser": "8.35.1", "eslint": "9.30.0", - "eslint-config-prettier": "10.1.5", + "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-prettier": "5.4.1", "globals": "16.3.0", @@ -1607,9 +1607,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", - "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", "bin": { diff --git a/e2e/package.json b/e2e/package.json index 1640b47b3..f538691fb 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -20,7 +20,7 @@ "@typescript-eslint/eslint-plugin": "8.33.1", "@typescript-eslint/parser": "8.35.1", "eslint": "9.30.0", - "eslint-config-prettier": "10.1.5", + "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-prettier": "5.4.1", "globals": "16.3.0", From 523237acebbc5d37576cf49f5124da3472059c08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Sep 2025 19:35:42 +0000 Subject: [PATCH 046/110] chore(deps-dev): bump eslint-config-prettier in /frontend Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 10.1.5 to 10.1.8. - [Release notes](https://github.com/prettier/eslint-config-prettier/releases) - [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/eslint-config-prettier/compare/v10.1.5...v10.1.8) --- updated-dependencies: - dependency-name: eslint-config-prettier dependency-version: 10.1.8 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- frontend/package-lock.json | 6 ++++-- frontend/package.json | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index d8617d07a..3600609c9 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -75,7 +75,7 @@ "@vitest/coverage-v8": "3.2.1", "daisyui": "5.0.43", "eslint": "9.30.0", - "eslint-config-prettier": "10.1.5", + "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-prettier": "5.4.1", "eslint-plugin-react": "7.37.5", @@ -5557,7 +5557,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "10.1.5", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", "bin": { diff --git a/frontend/package.json b/frontend/package.json index 19da86ec0..5a179360f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -84,7 +84,7 @@ "@vitest/coverage-v8": "3.2.1", "daisyui": "5.0.43", "eslint": "9.30.0", - "eslint-config-prettier": "10.1.5", + "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-prettier": "5.4.1", "eslint-plugin-react": "7.37.5", From b23f9a4df529a13c8462bb84e5823432088b4e61 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Sep 2025 19:23:40 +0000 Subject: [PATCH 047/110] chore(deps): bump unstructured from 0.18.14 to 0.18.15 in /services/reis Bumps [unstructured](https://github.com/Unstructured-IO/unstructured) from 0.18.14 to 0.18.15. - [Release notes](https://github.com/Unstructured-IO/unstructured/releases) - [Changelog](https://github.com/Unstructured-IO/unstructured/blob/main/CHANGELOG.md) - [Commits](https://github.com/Unstructured-IO/unstructured/compare/unstructured_0.18.14...0.18.15) --- updated-dependencies: - dependency-name: unstructured dependency-version: 0.18.15 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 8 ++++---- services/reis/pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 8ba7bdc12..673c633fd 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -5473,14 +5473,14 @@ files = [ [[package]] name = "unstructured" -version = "0.18.14" +version = "0.18.15" description = "A library that prepares raw documents for downstream ML tasks." optional = false python-versions = ">=3.10.0" groups = ["main"] files = [ - {file = "unstructured-0.18.14-py3-none-any.whl", hash = "sha256:cc6fadcf2f84fb6d910dd87bcbd54d8b6e2593ce29b851af167bc786d9263f73"}, - {file = "unstructured-0.18.14.tar.gz", hash = "sha256:c23760dd38dd6eca924a2803a005318f4ddc8af6a69388a7ce9d5b7fbc4b51bf"}, + {file = "unstructured-0.18.15-py3-none-any.whl", hash = "sha256:f05b1defcbe8190319d30da8adddbb888f74bf8ec7f65886867d7dca41d67ad0"}, + {file = "unstructured-0.18.15.tar.gz", hash = "sha256:81d8481280a4ac5cefe74bdb6db3687e8f240d5643706f86728eac39549112b5"}, ] [package.dependencies] @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "88e318d51d1f4c712b20e034d0de13561db454d60c8b319a56eb32547078e048" +content-hash = "cd8c98346ade17f0467a31d0a0bd10d3e71b3c993f6d95a9c55e930fcfda92a7" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index f299d21bb..e79f7054a 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -18,7 +18,7 @@ psycopg = {extras = ["binary"], version = "^3.2.10"} fastapi = {extras = ["standard"], version = "0.116.2"} azure-search-documents = "11.5.3" azure-identity = "1.25.0" -unstructured = {extras = ["docx", "md", "pptx", "xlsx"], version = "0.18.14"} +unstructured = {extras = ["docx", "md", "pptx", "xlsx"], version = "0.18.15"} pdfminer-six = "^20250506" pypdf = "^6.0.0" ffmpeg-python = "^0.2.0" From 6af1815f34ba2d181612b941777b9bbf2d1f8bd9 Mon Sep 17 00:00:00 2001 From: Hendrik Schawe Date: Fri, 19 Sep 2025 16:48:05 +0200 Subject: [PATCH 048/110] feat(backend): replace langchain by ai-sdk (#481) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(backend): model extensions: replace langchain by ai-sdk * wip: remove dead code * wip: replace langchain in extensions * feat: remove langchain/community dependency this apparently needs to be supplied credentials via env variables, which is not in the spirit of our GUI configurable extension approach * fix: handle api call errors and re-add langfuse * fix: do not start langfuse without credentials also fix a problem with jest * feat: use aisdk group in dependabot * feat: add reasoning to azure extension, merge azure and azure reasoning extensions * chore: release v9.3.0 * feat: add reasoning summary config --------- Co-authored-by: Christopher Schädlich --- .github/dependabot.yaml | 7 +- README.md | 2 +- backend/.env.example | 9 +- backend/README.md | 10 + backend/package-lock.json | 9303 ++++++----------- backend/package.json | 34 +- backend/src/app.module.ts | 2 + backend/src/domain/chat/interfaces.ts | 102 +- .../middlewares/default-prompt-middleware.ts | 22 - .../chat/middlewares/execute-middleware.ts | 254 +- .../chat/middlewares/executor-middleware.ts | 12 +- .../middlewares/get-history-middleware.ts | 72 +- .../chat/middlewares/langfuse-middleware.ts | 3 +- .../summarize-history-middleware.ts | 43 +- .../src/domain/chat/use-cases/get-history.ts | 4 +- .../src/domain/chat/use-cases/send-message.ts | 1 - backend/src/domain/chat/utils.ts | 44 +- backend/src/domain/extensions/interfaces.ts | 11 - .../src/domain/settings/use-cases/get-blob.ts | 4 +- backend/src/extensions/examples/always-42.ts | 4 - backend/src/extensions/examples/confirm.ts | 4 - .../src/extensions/examples/show-context.ts | 4 - .../src/extensions/examples/simple-input.ts | 4 - backend/src/extensions/examples/user-args.ts | 6 +- .../models/azure-open-ai-reasoning.ts | 106 - .../extensions/models/azure-open-ai.spec.ts | 20 +- .../src/extensions/models/azure-open-ai.ts | 104 +- .../src/extensions/models/bedrock-ai.spec.ts | 11 + backend/src/extensions/models/bedrock-ai.ts | 43 +- .../extensions/models/google-genai.spec.ts | 11 + backend/src/extensions/models/google-genai.ts | 40 +- .../src/extensions/models/internal/utils.ts | 61 - backend/src/extensions/models/mistral.spec.ts | 19 +- backend/src/extensions/models/mistral.ts | 48 +- .../src/extensions/models/model-test.base.ts | 12 +- backend/src/extensions/models/nvidia.spec.ts | 11 + backend/src/extensions/models/nvidia.ts | 19 +- backend/src/extensions/models/ollama.spec.ts | 18 +- backend/src/extensions/models/ollama.ts | 35 +- .../models/open-ai-compatible.spec.ts | 19 +- .../extensions/models/open-ai-compatible.ts | 62 +- backend/src/extensions/models/open-ai.spec.ts | 21 +- backend/src/extensions/models/open-ai.ts | 99 +- .../src/extensions/models/vertex-ai.spec.ts | 16 - backend/src/extensions/models/vertex-al.ts | 64 - backend/src/extensions/module.ts | 8 - backend/src/extensions/other/hub.ts | 53 - backend/src/extensions/other/langfuse.ts | 65 - .../src/extensions/tools/azure-ai-search.ts | 4 - backend/src/extensions/tools/azure-dall-e.ts | 31 +- .../src/extensions/tools/bing-web-search.ts | 4 - .../src/extensions/tools/brave-web-search.ts | 101 +- backend/src/extensions/tools/calculator.ts | 4 - backend/src/extensions/tools/dall-e.ts | 70 +- .../extensions/tools/duckduckgo-web-search.ts | 56 +- .../extensions/tools/files-conversation.ts | 4 - backend/src/extensions/tools/files-vision.ts | 50 +- backend/src/extensions/tools/files.ts | 4 - backend/src/extensions/tools/gpt-image-1.ts | 4 - .../extensions/tools/grounding-with-bing.ts | 4 - backend/src/extensions/tools/open-api.ts | 4 - .../tools/whole-files-conversation.ts | 4 - backend/src/localization/i18n/de/texts.json | 3 +- backend/src/localization/i18n/en/texts.json | 3 +- backend/src/metrics/opentelemetry.module.ts | 34 + ...AzureReasoningExtensionByAzureExtension.ts | 11 + e2e/tests/utils/helper.ts | 7 +- helm-chart/Chart.yaml | 2 +- package-lock.json | 2 +- 69 files changed, 4278 insertions(+), 7054 deletions(-) delete mode 100644 backend/src/extensions/models/azure-open-ai-reasoning.ts create mode 100644 backend/src/extensions/models/bedrock-ai.spec.ts create mode 100644 backend/src/extensions/models/google-genai.spec.ts delete mode 100644 backend/src/extensions/models/internal/utils.ts create mode 100644 backend/src/extensions/models/nvidia.spec.ts delete mode 100644 backend/src/extensions/models/vertex-ai.spec.ts delete mode 100644 backend/src/extensions/models/vertex-al.ts delete mode 100644 backend/src/extensions/other/hub.ts delete mode 100644 backend/src/extensions/other/langfuse.ts create mode 100644 backend/src/metrics/opentelemetry.module.ts create mode 100644 backend/src/migrations/1758289967016-replaceAzureReasoningExtensionByAzureExtension.ts diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index c8b7ada07..bb92093d5 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -34,11 +34,10 @@ updates: schedule: interval: "daily" groups: - langchain: + ai-sdk: patterns: - - "langchain" - - "langfuse-langchain" - - "@langchain/*" + - "ai" + - "@ai-sdk/*" nestjs: patterns: - "nest-" diff --git a/README.md b/README.md index 6d4781d3c..008eb940a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # c4 GenAI Suite -An AI chatbot application with Model Context Provider (MCP) integration, powered by Langchain and compatibility for all major Large Language Models (LLMs) and Embedding Models. +An AI chatbot application with Model Context Provider (MCP) integration, powered by ai-sdk and compatibility for all major Large Language Models (LLMs) and Embedding Models. Administrators can create assistants with different capabilities by adding extensions, such as RAG (Retrieval-Augmented Generation) services or MCP servers. The application is built using a modern tech stack, including React, NestJS, and Python FastAPI for the REI-S service. diff --git a/backend/.env.example b/backend/.env.example index 8805f5efa..09ec0b413 100644 --- a/backend/.env.example +++ b/backend/.env.example @@ -1,5 +1,5 @@ BASE_URL="http://localhost:5173" -AUTH_LOGOUT_REDIRECT="/" +AUTH_LOGOUT_REDIRECT="/" ## If you want to use local https: ## - use the following, ## - also change the /frontend/.env/VITE_SERVER_URL and @@ -19,4 +19,9 @@ DB_URL="postgres://admin:secret@localhost:5432/cccc" ## - If you want the Full log of the Langchain Agent to the console just comment the next line back in #LOG_LLM_AGENT=true ## - Needed for the openapi generator, due to restrictions in search.maven.org -OPENAPI_GENERATOR_CLI_SEARCH_URL=DEFAULT \ No newline at end of file +OPENAPI_GENERATOR_CLI_SEARCH_URL=DEFAULT + +# (optional) langfuse credentials to enable tracing +LANGFUSE_SECRET_KEY= +LANGFUSE_PUBLIC_KEY= +LANGFUSE_BASEURL= \ No newline at end of file diff --git a/backend/README.md b/backend/README.md index 6243973cc..644facfe5 100644 --- a/backend/README.md +++ b/backend/README.md @@ -45,6 +45,16 @@ npm run migration:run npm run migration:revert ``` +## Langfuse + +To enable langfuse tracing, the following environment variables need to be set: + +``` +LANGFUSE_SECRET_KEY="sk-lf-..." +LANGFUSE_PUBLIC_KEY="pk-lf-..." +LANGFUSE_BASEURL="https://cloud.langfuse.com" +``` + ## Create Extensions Each extension class needs to meet the following criteria: diff --git a/backend/package-lock.json b/backend/package-lock.json index b14e10942..6fd88b656 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -9,18 +9,16 @@ "version": "0.0.1", "license": "Apache-2.0", "dependencies": { + "@ai-sdk/amazon-bedrock": "^3.0.22", + "@ai-sdk/azure": "^2.0.30", + "@ai-sdk/google": "^2.0.14", + "@ai-sdk/google-vertex": "^3.0.27", + "@ai-sdk/mistral": "^2.0.14", + "@ai-sdk/openai": "^2.0.30", "@ai-sdk/openai-compatible": "^1.0.17", "@azure/ai-agents": "^1.1.0", "@azure/core-util": "^1.13.0", "@azure/identity": "^4.11.0", - "@langchain/aws": "0.1.15", - "@langchain/community": "^0.3.56", - "@langchain/core": "^0.3.77", - "@langchain/google-genai": "^0.2.18", - "@langchain/google-vertexai": "^0.2.18", - "@langchain/mistralai": "^0.2.1", - "@langchain/ollama": "^0.2.4", - "@langchain/openai": "^0.6.12", "@modelcontextprotocol/sdk": "^1.17.0", "@n8n/json-schema-to-zod": "^1.1.0", "@nestjs/common": "^11.1.3", @@ -32,6 +30,8 @@ "@nestjs/swagger": "^11.1.6", "@nestjs/terminus": "^11.0.0", "@nestjs/typeorm": "^11.0.0", + "@opentelemetry/auto-instrumentations-node": "^0.64.1", + "@opentelemetry/sdk-node": "^0.205.0", "@willsoto/nestjs-prometheus": "^6.0.2", "ai": "^5.0.44", "bcrypt": "^6.0.0", @@ -44,12 +44,12 @@ "expr-eval": "^2.0.2", "express-session": "^1.18.2", "json-diff-ts": "^4.6.3", - "langchain": "^0.3.34", - "langfuse-langchain": "^3.38.5", + "langfuse-vercel": "^3.38.5", "logform": "^2.7.0", "nest-winston": "^1.10.2", "nestjs-i18n": "^10.5.1", "nunjucks": "^3.2.4", + "ollama-ai-provider-v2": "^1.3.1", "openai": "5.12.2", "passport-custom": "^1.1.1", "passport-github2": "^0.1.12", @@ -62,6 +62,7 @@ "rxjs": "^7.8.2", "typeorm": "^0.3.25", "undici": "^7.11.0", + "uuid": "^9.0.1", "winston": "^3.17.0", "zod": "3.25.51" }, @@ -88,6 +89,7 @@ "@types/passport-microsoft": "2.1.0", "@types/pg": "8.15.4", "@types/supertest": "6.0.3", + "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "8.33.1", "@typescript-eslint/parser": "8.35.1", "eslint": "9.32.0", @@ -112,6 +114,101 @@ "../library/dist": { "extraneous": true }, + "node_modules/@ai-sdk/amazon-bedrock": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/@ai-sdk/amazon-bedrock/-/amazon-bedrock-3.0.22.tgz", + "integrity": "sha512-0JvTWfWr15yWgB9LNgqmoOikw0nLF7RHHBKnYBKo7gR9E61EHMeWprchAbUJphxkGSxmbImHHEnG84X6bv9sug==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/anthropic": "2.0.17", + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.9", + "@smithy/eventstream-codec": "^4.0.1", + "@smithy/util-utf8": "^4.0.0", + "aws4fetch": "^1.0.20" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4" + } + }, + "node_modules/@ai-sdk/amazon-bedrock/node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@ai-sdk/amazon-bedrock/node_modules/@smithy/eventstream-codec": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.1.1.tgz", + "integrity": "sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.5.0", + "@smithy/util-hex-encoding": "^4.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@ai-sdk/amazon-bedrock/node_modules/@smithy/util-utf8": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", + "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@ai-sdk/anthropic": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@ai-sdk/anthropic/-/anthropic-2.0.17.tgz", + "integrity": "sha512-fEmGD3H3cI4ahcrtU/ekA6xvUq9kk/IpOh2TI3wOSxqvKqpo+ztwiem5/x5R92Yenl9KRooYIefr0LNlFUR5Ow==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4" + } + }, + "node_modules/@ai-sdk/azure": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/@ai-sdk/azure/-/azure-2.0.30.tgz", + "integrity": "sha512-bBa8WVYpjmfAznzf9Ba6TcGsaVcxeSNs+mEByk1k6mT/xtt3kxRpPixssSpKP/fc0Gl1us+O51OYzqc7G9/B+w==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/openai": "2.0.30", + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4" + } + }, "node_modules/@ai-sdk/gateway": { "version": "1.0.23", "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-1.0.23.tgz", @@ -128,6 +225,103 @@ "zod": "^3.25.76 || ^4" } }, + "node_modules/@ai-sdk/google": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@ai-sdk/google/-/google-2.0.14.tgz", + "integrity": "sha512-OCBBkEUq1RNLkbJuD+ejqGsWDD0M5nRyuFWDchwylxy0J4HSsAiGNhutNYVTdnqmNw+r9LyZlkyZ1P4YfAfLdg==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4" + } + }, + "node_modules/@ai-sdk/google-vertex": { + "version": "3.0.27", + "resolved": "https://registry.npmjs.org/@ai-sdk/google-vertex/-/google-vertex-3.0.27.tgz", + "integrity": "sha512-qR4+gLBNJPbnqaSBhvWktK0h3MfQryTLpKj9OWTYVhesNPqpkcchmbHmWBBXhI9kGN5niIknzHmCYdrtMqzF5w==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/anthropic": "2.0.17", + "@ai-sdk/google": "2.0.14", + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.9", + "google-auth-library": "^9.15.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4" + } + }, + "node_modules/@ai-sdk/google-vertex/node_modules/google-auth-library": { + "version": "9.15.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz", + "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==", + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ai-sdk/google-vertex/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "license": "MIT", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@ai-sdk/mistral": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@ai-sdk/mistral/-/mistral-2.0.14.tgz", + "integrity": "sha512-HPj/tz03k8IeW9SabHqhHmgdeKq1H89MltU5zUaxU/7JVV3n96MYIG3aQUtKbPMdtHw6LngJf6r/A+hampGLOA==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4" + } + }, + "node_modules/@ai-sdk/openai": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/@ai-sdk/openai/-/openai-2.0.30.tgz", + "integrity": "sha512-a9Vf64OT2dWEFyEGv+OxtCs69B18BsuzInvuyUxVPczbIiBLqUCt3zcD/8EwqbTPJwsFNsL8/9nbVZFmwA1+2A==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4" + } + }, "node_modules/@ai-sdk/openai-compatible": { "version": "1.0.17", "resolved": "https://registry.npmjs.org/@ai-sdk/openai-compatible/-/openai-compatible-1.0.17.tgz", @@ -427,6373 +621,4570 @@ "tslib": "^2.1.0" } }, - "node_modules/@anthropic-ai/sdk": { - "version": "0.27.3", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "^18.11.18", - "@types/node-fetch": "^2.6.4", - "abort-controller": "^3.0.0", - "agentkeepalive": "^4.2.1", - "form-data-encoder": "1.7.2", - "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7" - } - }, - "node_modules/@anthropic-ai/sdk/node_modules/@types/node": { - "version": "18.19.100", - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@anthropic-ai/sdk/node_modules/undici-types": { - "version": "5.26.5", - "license": "MIT", - "peer": true - }, - "node_modules/@aws-crypto/crc32": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", - "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/crc32/node_modules/@aws-crypto/util": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/crc32/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD", - "optional": true, - "peer": true - }, - "node_modules/@aws-crypto/sha256-browser": { + "node_modules/@aws-crypto/util": { "version": "5.2.0", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/sha256-js": { - "version": "5.2.0", + "node_modules/@aws-sdk/types": { + "version": "3.804.0", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", + "@smithy/types": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" + "node": ">=18.0.0" } }, - "node_modules/@aws-crypto/util": { - "version": "5.2.0", - "license": "Apache-2.0", + "node_modules/@azure-rest/core-client": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@azure-rest/core-client/-/core-client-2.5.0.tgz", + "integrity": "sha512-KMVIPxG6ygcQ1M2hKHahF7eddKejYsWTjoLIfTWiqnaj42dBkYzj4+S8rK9xxmlOaEHKZHcMrRbm0NfN4kgwHw==", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-rest-pipeline": "^1.5.0", + "@azure/core-tracing": "^1.0.1", + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-agent-runtime": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "license": "MIT", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.806.0", - "@aws-sdk/credential-provider-node": "3.806.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.806.0", - "@aws-sdk/region-config-resolver": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.806.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.806.0", - "@smithy/config-resolver": "^4.1.1", - "@smithy/core": "^3.3.1", - "@smithy/eventstream-serde-browser": "^4.0.2", - "@smithy/eventstream-serde-config-resolver": "^4.1.0", - "@smithy/eventstream-serde-node": "^4.0.2", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.3", - "@smithy/middleware-retry": "^4.1.4", - "@smithy/middleware-serde": "^4.0.3", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.0", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.3", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.11", - "@smithy/util-defaults-mode-node": "^4.0.11", - "@smithy/util-endpoints": "^3.0.3", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-agent-runtime/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", - "license": "Apache-2.0", + "node_modules/@azure/ai-agents": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/ai-agents/-/ai-agents-1.1.0.tgz", + "integrity": "sha512-i8HFA7ql18t/otGrRfTWNOE5HgJf/RqedV3VNbFav5z9iTSexf8k4EeWOb/IWWaCsq0z/S7mihdGPAluPs+nXQ==", + "license": "MIT", "dependencies": { - "@smithy/types": "^4.5.0", + "@azure-rest/core-client": "^2.1.0", + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.6.0", + "@azure/core-lro": "^3.0.0", + "@azure/core-paging": "^1.5.0", + "@azure/core-rest-pipeline": "^1.5.0", + "@azure/core-sse": "^2.1.3", + "@azure/core-tracing": "^1.2.0", + "@azure/core-util": "^1.9.0", + "@azure/logger": "^1.1.4", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-agent-runtime/node_modules/@smithy/util-utf8": { - "version": "4.0.0", - "license": "Apache-2.0", + "node_modules/@azure/core-auth": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.0.tgz", + "integrity": "sha512-88Djs5vBvGbHQHf5ZZcaoNHo6Y8BKZkt3cw2iuJIQzLEgH4Ox6Tm4hjFhbqOxyYsgIG/eJbFEHpxRIfEEWv5Ow==", + "license": "MIT", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.11.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.888.0.tgz", - "integrity": "sha512-XuTayKaxjQkBtasJp4+mzXwE06k8YML+VKMcYEq096JFC4/bwQA1TrF/T8wlE6Xw6FD/XU2OUdLfq3j/QgEOgA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.888.0", - "@aws-sdk/credential-provider-node": "3.888.0", - "@aws-sdk/eventstream-handler-node": "3.887.0", - "@aws-sdk/middleware-eventstream": "3.887.0", - "@aws-sdk/middleware-host-header": "3.887.0", - "@aws-sdk/middleware-logger": "3.887.0", - "@aws-sdk/middleware-recursion-detection": "3.887.0", - "@aws-sdk/middleware-user-agent": "3.888.0", - "@aws-sdk/middleware-websocket": "3.887.0", - "@aws-sdk/region-config-resolver": "3.887.0", - "@aws-sdk/token-providers": "3.888.0", - "@aws-sdk/types": "3.887.0", - "@aws-sdk/util-endpoints": "3.887.0", - "@aws-sdk/util-user-agent-browser": "3.887.0", - "@aws-sdk/util-user-agent-node": "3.888.0", - "@smithy/config-resolver": "^4.2.1", - "@smithy/core": "^3.11.0", - "@smithy/eventstream-serde-browser": "^4.1.1", - "@smithy/eventstream-serde-config-resolver": "^4.2.1", - "@smithy/eventstream-serde-node": "^4.1.1", - "@smithy/fetch-http-handler": "^5.2.1", - "@smithy/hash-node": "^4.1.1", - "@smithy/invalid-dependency": "^4.1.1", - "@smithy/middleware-content-length": "^4.1.1", - "@smithy/middleware-endpoint": "^4.2.1", - "@smithy/middleware-retry": "^4.2.1", - "@smithy/middleware-serde": "^4.1.1", - "@smithy/middleware-stack": "^4.1.1", - "@smithy/node-config-provider": "^4.2.1", - "@smithy/node-http-handler": "^4.2.1", - "@smithy/protocol-http": "^5.2.1", - "@smithy/smithy-client": "^4.6.1", - "@smithy/types": "^4.5.0", - "@smithy/url-parser": "^4.1.1", - "@smithy/util-base64": "^4.1.0", - "@smithy/util-body-length-browser": "^4.1.0", - "@smithy/util-body-length-node": "^4.1.0", - "@smithy/util-defaults-mode-browser": "^4.1.1", - "@smithy/util-defaults-mode-node": "^4.1.1", - "@smithy/util-endpoints": "^3.1.1", - "@smithy/util-middleware": "^4.1.1", - "@smithy/util-retry": "^4.1.1", - "@smithy/util-stream": "^4.3.1", - "@smithy/util-utf8": "^4.1.0", - "@types/uuid": "^9.0.1", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/client-sso": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.888.0.tgz", - "integrity": "sha512-8CLy/ehGKUmekjH+VtZJ4w40PqDg3u0K7uPziq/4P8Q7LLgsy8YQoHNbuY4am7JU3HWrqLXJI9aaz1+vPGPoWA==", - "license": "Apache-2.0", + "node_modules/@azure/core-client": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.0.tgz", + "integrity": "sha512-O4aP3CLFNodg8eTHXECaH3B3CjicfzkxVtnrfLkOq0XNP7TIECGfHpK/C6vADZkWP75wzmdBnsIA8ksuJMk18g==", + "license": "MIT", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.888.0", - "@aws-sdk/middleware-host-header": "3.887.0", - "@aws-sdk/middleware-logger": "3.887.0", - "@aws-sdk/middleware-recursion-detection": "3.887.0", - "@aws-sdk/middleware-user-agent": "3.888.0", - "@aws-sdk/region-config-resolver": "3.887.0", - "@aws-sdk/types": "3.887.0", - "@aws-sdk/util-endpoints": "3.887.0", - "@aws-sdk/util-user-agent-browser": "3.887.0", - "@aws-sdk/util-user-agent-node": "3.888.0", - "@smithy/config-resolver": "^4.2.1", - "@smithy/core": "^3.11.0", - "@smithy/fetch-http-handler": "^5.2.1", - "@smithy/hash-node": "^4.1.1", - "@smithy/invalid-dependency": "^4.1.1", - "@smithy/middleware-content-length": "^4.1.1", - "@smithy/middleware-endpoint": "^4.2.1", - "@smithy/middleware-retry": "^4.2.1", - "@smithy/middleware-serde": "^4.1.1", - "@smithy/middleware-stack": "^4.1.1", - "@smithy/node-config-provider": "^4.2.1", - "@smithy/node-http-handler": "^4.2.1", - "@smithy/protocol-http": "^5.2.1", - "@smithy/smithy-client": "^4.6.1", - "@smithy/types": "^4.5.0", - "@smithy/url-parser": "^4.1.1", - "@smithy/util-base64": "^4.1.0", - "@smithy/util-body-length-browser": "^4.1.0", - "@smithy/util-body-length-node": "^4.1.0", - "@smithy/util-defaults-mode-browser": "^4.1.1", - "@smithy/util-defaults-mode-node": "^4.1.1", - "@smithy/util-endpoints": "^3.1.1", - "@smithy/util-middleware": "^4.1.1", - "@smithy/util-retry": "^4.1.1", - "@smithy/util-utf8": "^4.1.0", + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.20.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/core": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.888.0.tgz", - "integrity": "sha512-L3S2FZywACo4lmWv37Y4TbefuPJ1fXWyWwIJ3J4wkPYFJ47mmtUPqThlVrSbdTHkEjnZgJe5cRfxk0qCLsFh1w==", - "license": "Apache-2.0", + "node_modules/@azure/core-lro": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-3.3.0.tgz", + "integrity": "sha512-q8onFxe4O2iqPiURwnqAEO/x6oYkU+lHDWOOc16vPonhuNoKeisDPB8xzun25EClCTrd1xG51YfLGMlvKcB9mg==", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.887.0", - "@aws-sdk/xml-builder": "3.887.0", - "@smithy/core": "^3.11.0", - "@smithy/node-config-provider": "^4.2.1", - "@smithy/property-provider": "^4.0.5", - "@smithy/protocol-http": "^5.2.1", - "@smithy/signature-v4": "^5.1.3", - "@smithy/smithy-client": "^4.6.1", - "@smithy/types": "^4.5.0", - "@smithy/util-base64": "^4.1.0", - "@smithy/util-body-length-browser": "^4.1.0", - "@smithy/util-middleware": "^4.1.1", - "@smithy/util-utf8": "^4.1.0", - "fast-xml-parser": "5.2.5", + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.2.0", + "@azure/logger": "^1.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.888.0.tgz", - "integrity": "sha512-shPi4AhUKbIk7LugJWvNpeZA8va7e5bOHAEKo89S0Ac8WDZt2OaNzbh/b9l0iSL2eEyte8UgIsYGcFxOwIF1VA==", - "license": "Apache-2.0", + "node_modules/@azure/core-paging": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", + "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.888.0", - "@aws-sdk/types": "3.887.0", - "@smithy/property-provider": "^4.0.5", - "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.888.0.tgz", - "integrity": "sha512-Jvuk6nul0lE7o5qlQutcqlySBHLXOyoPtiwE6zyKbGc7RVl0//h39Lab7zMeY2drMn8xAnIopL4606Fd8JI/Hw==", - "license": "Apache-2.0", + "node_modules/@azure/core-rest-pipeline": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.0.tgz", + "integrity": "sha512-OKHmb3/Kpm06HypvB3g6Q3zJuvyXcpxDpCS1PnU8OV6AJgSFaee/covXBcPbWc6XDDxtEPlbi3EMQ6nUiPaQtw==", + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.888.0", - "@aws-sdk/types": "3.887.0", - "@smithy/fetch-http-handler": "^5.2.1", - "@smithy/node-http-handler": "^4.2.1", - "@smithy/property-provider": "^4.0.5", - "@smithy/protocol-http": "^5.2.1", - "@smithy/smithy-client": "^4.6.1", - "@smithy/types": "^4.5.0", - "@smithy/util-stream": "^4.3.1", + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.8.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.888.0.tgz", - "integrity": "sha512-M82ItvS5yq+tO6ZOV1ruaVs2xOne+v8HW85GFCXnz8pecrzYdgxh6IsVqEbbWruryG/mUGkWMbkBZoEsy4MgyA==", - "license": "Apache-2.0", + "node_modules/@azure/core-sse": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@azure/core-sse/-/core-sse-2.3.0.tgz", + "integrity": "sha512-jKhPpdDbVS5GlpadSKIC7V6Q4P2vEcwXi1c4CLTXs01Q/PAITES9v5J/S73+RtCMqQpsX0jGa2yPWwXi9JzdgA==", + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.888.0", - "@aws-sdk/credential-provider-env": "3.888.0", - "@aws-sdk/credential-provider-http": "3.888.0", - "@aws-sdk/credential-provider-process": "3.888.0", - "@aws-sdk/credential-provider-sso": "3.888.0", - "@aws-sdk/credential-provider-web-identity": "3.888.0", - "@aws-sdk/nested-clients": "3.888.0", - "@aws-sdk/types": "3.887.0", - "@smithy/credential-provider-imds": "^4.0.7", - "@smithy/property-provider": "^4.0.5", - "@smithy/shared-ini-file-loader": "^4.0.5", - "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.888.0.tgz", - "integrity": "sha512-KCrQh1dCDC8Y+Ap3SZa6S81kHk+p+yAaOQ5jC3dak4zhHW3RCrsGR/jYdemTOgbEGcA6ye51UbhWfrrlMmeJSA==", - "license": "Apache-2.0", + "node_modules/@azure/core-tracing": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.0.tgz", + "integrity": "sha512-+XvmZLLWPe67WXNZo9Oc9CrPj/Tm8QnHR92fFAFdnbzwNdCH1h+7UdpaQgRSBsMY+oW1kHXNUZQLdZ1gHX3ROw==", + "license": "MIT", "dependencies": { - "@aws-sdk/credential-provider-env": "3.888.0", - "@aws-sdk/credential-provider-http": "3.888.0", - "@aws-sdk/credential-provider-ini": "3.888.0", - "@aws-sdk/credential-provider-process": "3.888.0", - "@aws-sdk/credential-provider-sso": "3.888.0", - "@aws-sdk/credential-provider-web-identity": "3.888.0", - "@aws-sdk/types": "3.887.0", - "@smithy/credential-provider-imds": "^4.0.7", - "@smithy/property-provider": "^4.0.5", - "@smithy/shared-ini-file-loader": "^4.0.5", - "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.888.0.tgz", - "integrity": "sha512-+aX6piSukPQ8DUS4JAH344GePg8/+Q1t0+kvSHAZHhYvtQ/1Zek3ySOJWH2TuzTPCafY4nmWLcQcqvU1w9+4Lw==", - "license": "Apache-2.0", + "node_modules/@azure/core-util": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.0.tgz", + "integrity": "sha512-o0psW8QWQ58fq3i24Q1K2XfS/jYTxr7O1HRcyUE9bV9NttLU+kYOH82Ixj8DGlMTOWgxm1Sss2QAfKK5UkSPxw==", + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.888.0", - "@aws-sdk/types": "3.887.0", - "@smithy/property-provider": "^4.0.5", - "@smithy/shared-ini-file-loader": "^4.0.5", - "@smithy/types": "^4.5.0", + "@azure/abort-controller": "^2.0.0", + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.888.0.tgz", - "integrity": "sha512-b1ZJji7LJ6E/j1PhFTyvp51in2iCOQ3VP6mj5H6f5OUnqn7efm41iNMoinKr87n0IKZw7qput5ggXVxEdPhouA==", - "license": "Apache-2.0", + "node_modules/@azure/identity": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.11.0.tgz", + "integrity": "sha512-GkbNnd3mrsL1gX3BxIblhahCfFEViLTfNMFgfSo4wPSH2ipw4duc1TtOPVOf8Wt6XTnjZROZRAvYqjJBWXV39g==", + "license": "MIT", "dependencies": { - "@aws-sdk/client-sso": "3.888.0", - "@aws-sdk/core": "3.888.0", - "@aws-sdk/token-providers": "3.888.0", - "@aws-sdk/types": "3.887.0", - "@smithy/property-provider": "^4.0.5", - "@smithy/shared-ini-file-loader": "^4.0.5", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.17.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^4.2.0", + "@azure/msal-node": "^3.5.0", + "open": "^10.1.0", + "tslib": "^2.2.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.888.0.tgz", - "integrity": "sha512-7P0QNtsDzMZdmBAaY/vY1BsZHwTGvEz3bsn2bm5VSKFAeMmZqsHK1QeYdNsFjLtegnVh+wodxMq50jqLv3LFlA==", - "license": "Apache-2.0", + "node_modules/@azure/logger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", + "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.888.0", - "@aws-sdk/nested-clients": "3.888.0", - "@aws-sdk/types": "3.887.0", - "@smithy/property-provider": "^4.0.5", - "@smithy/types": "^4.5.0", + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.887.0.tgz", - "integrity": "sha512-ulzqXv6NNqdu/kr0sgBYupWmahISHY+azpJidtK6ZwQIC+vBUk9NdZeqQpy7KVhIk2xd4+5Oq9rxapPwPI21CA==", - "license": "Apache-2.0", + "node_modules/@azure/msal-browser": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.18.0.tgz", + "integrity": "sha512-esQwdtHHVkFJhcKWnysnCTchiKsy3dmNZGs8AckD9PO3t8Lp5VtY0xcrbCBC0JbttG/5w2/xukUQOsMpoUFKrg==", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.887.0", - "@smithy/protocol-http": "^5.2.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@azure/msal-common": "15.9.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=0.8.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-logger": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.887.0.tgz", - "integrity": "sha512-YbbgLI6jKp2qSoAcHnXrQ5jcuc5EYAmGLVFgMVdk8dfCfJLfGGSaOLxF4CXC7QYhO50s+mPPkhBYejCik02Kug==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.887.0", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" - }, + "node_modules/@azure/msal-common": { + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.9.0.tgz", + "integrity": "sha512-lbz/D+C9ixUG3hiZzBLjU79a0+5ZXCorjel3mwXluisKNH0/rOS/ajm8yi4yI9RP5Uc70CAcs9Ipd0051Oh/kA==", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=0.8.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.887.0.tgz", - "integrity": "sha512-tjrUXFtQnFLo+qwMveq5faxP5MQakoLArXtqieHphSqZTXm21wDJM73hgT4/PQQGTwgYjDKqnqsE1hvk0hcfDw==", - "license": "Apache-2.0", + "node_modules/@azure/msal-node": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.6.4.tgz", + "integrity": "sha512-jMeut9UQugcmq7aPWWlJKhJIse4DQ594zc/JaP6BIxg55XaX3aM/jcPuIQ4ryHnI4QSf03wUspy/uqAvjWKbOg==", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.887.0", - "@aws/lambda-invoke-store": "^0.0.1", - "@smithy/protocol-http": "^5.2.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@azure/msal-common": "15.9.0", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=16" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.888.0.tgz", - "integrity": "sha512-ZkcUkoys8AdrNNG7ATjqw2WiXqrhTvT+r4CIK3KhOqIGPHX0p0DQWzqjaIl7ZhSUToKoZ4Ud7MjF795yUr73oA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.888.0", - "@aws-sdk/types": "3.887.0", - "@aws-sdk/util-endpoints": "3.887.0", - "@smithy/core": "^3.11.0", - "@smithy/protocol-http": "^5.2.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "node_modules/@azure/msal-node/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/nested-clients": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.888.0.tgz", - "integrity": "sha512-py4o4RPSGt+uwGvSBzR6S6cCBjS4oTX5F8hrHFHfPCdIOMVjyOBejn820jXkCrcdpSj3Qg1yUZXxsByvxc9Lyg==", - "license": "Apache-2.0", + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.888.0", - "@aws-sdk/middleware-host-header": "3.887.0", - "@aws-sdk/middleware-logger": "3.887.0", - "@aws-sdk/middleware-recursion-detection": "3.887.0", - "@aws-sdk/middleware-user-agent": "3.888.0", - "@aws-sdk/region-config-resolver": "3.887.0", - "@aws-sdk/types": "3.887.0", - "@aws-sdk/util-endpoints": "3.887.0", - "@aws-sdk/util-user-agent-browser": "3.887.0", - "@aws-sdk/util-user-agent-node": "3.888.0", - "@smithy/config-resolver": "^4.2.1", - "@smithy/core": "^3.11.0", - "@smithy/fetch-http-handler": "^5.2.1", - "@smithy/hash-node": "^4.1.1", - "@smithy/invalid-dependency": "^4.1.1", - "@smithy/middleware-content-length": "^4.1.1", - "@smithy/middleware-endpoint": "^4.2.1", - "@smithy/middleware-retry": "^4.2.1", - "@smithy/middleware-serde": "^4.1.1", - "@smithy/middleware-stack": "^4.1.1", - "@smithy/node-config-provider": "^4.2.1", - "@smithy/node-http-handler": "^4.2.1", - "@smithy/protocol-http": "^5.2.1", - "@smithy/smithy-client": "^4.6.1", - "@smithy/types": "^4.5.0", - "@smithy/url-parser": "^4.1.1", - "@smithy/util-base64": "^4.1.0", - "@smithy/util-body-length-browser": "^4.1.0", - "@smithy/util-body-length-node": "^4.1.0", - "@smithy/util-defaults-mode-browser": "^4.1.1", - "@smithy/util-defaults-mode-node": "^4.1.1", - "@smithy/util-endpoints": "^3.1.1", - "@smithy/util-middleware": "^4.1.1", - "@smithy/util-retry": "^4.1.1", - "@smithy/util-utf8": "^4.1.0", - "tslib": "^2.6.2" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.887.0.tgz", - "integrity": "sha512-VdSMrIqJ3yjJb/fY+YAxrH/lCVv0iL8uA+lbMNfQGtO5tB3Zx6SU9LEpUwBNX8fPK1tUpI65CNE4w42+MY/7Mg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.887.0", - "@smithy/node-config-provider": "^4.2.1", - "@smithy/types": "^4.5.0", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.1.1", - "tslib": "^2.6.2" - }, + "node_modules/@babel/compat-data": { + "version": "7.27.2", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/token-providers": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.888.0.tgz", - "integrity": "sha512-WA3NF+3W8GEuCMG1WvkDYbB4z10G3O8xuhT7QSjhvLYWQ9CPt3w4VpVIfdqmUn131TCIbhCzD0KN/1VJTjAjyw==", - "license": "Apache-2.0", + "node_modules/@babel/core": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.888.0", - "@aws-sdk/nested-clients": "3.888.0", - "@aws-sdk/types": "3.887.0", - "@smithy/property-provider": "^4.0.5", - "@smithy/shared-ini-file-loader": "^4.0.5", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helpers": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/types": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.887.0.tgz", - "integrity": "sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==", - "license": "Apache-2.0", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/util-endpoints": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.887.0.tgz", - "integrity": "sha512-kpegvT53KT33BMeIcGLPA65CQVxLUL/C3gTz9AzlU/SDmeusBHX4nRApAicNzI/ltQ5lxZXbQn18UczzBuwF1w==", - "license": "Apache-2.0", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.887.0", - "@smithy/types": "^4.5.0", - "@smithy/url-parser": "^4.1.1", - "@smithy/util-endpoints": "^3.1.1", - "tslib": "^2.6.2" + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.887.0.tgz", - "integrity": "sha512-X71UmVsYc6ZTH4KU6hA5urOzYowSXc3qvroagJNLJYU1ilgZ529lP4J9XOYfEvTXkLR1hPFSRxa43SrwgelMjA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.887.0", - "@smithy/types": "^4.5.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.888.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.888.0.tgz", - "integrity": "sha512-rSB3OHyuKXotIGfYEo//9sU0lXAUrTY28SUUnxzOGYuQsAt0XR5iYwBAp+RjV6x8f+Hmtbg0PdCsy1iNAXa0UQ==", - "license": "Apache-2.0", + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.888.0", - "@aws-sdk/types": "3.887.0", - "@smithy/node-config-provider": "^4.2.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/is-array-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.1.0.tgz", - "integrity": "sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==", - "license": "Apache-2.0", + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "node": ">=6.9.0" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/signature-v4": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.2.1.tgz", - "integrity": "sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^4.1.0", - "@smithy/protocol-http": "^5.2.1", - "@smithy/types": "^4.5.0", - "@smithy/util-hex-encoding": "^4.1.0", - "@smithy/util-middleware": "^4.1.1", - "@smithy/util-uri-escape": "^4.1.0", - "@smithy/util-utf8": "^4.1.0", - "tslib": "^2.6.2" - }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-utf8": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", - "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.1.0", - "tslib": "^2.6.2" - }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/fast-xml-parser": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", - "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "dev": true, "license": "MIT", - "dependencies": { - "strnum": "^2.1.0" - }, - "bin": { - "fxparser": "src/cli/cli.js" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/strnum": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", - "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT" - }, - "node_modules/@aws-sdk/client-kendra": { - "version": "3.806.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.806.0", - "@aws-sdk/credential-provider-node": "3.806.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.806.0", - "@aws-sdk/region-config-resolver": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.806.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.806.0", - "@smithy/config-resolver": "^4.1.1", - "@smithy/core": "^3.3.1", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.3", - "@smithy/middleware-retry": "^4.1.4", - "@smithy/middleware-serde": "^4.0.3", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.0", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.3", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.11", - "@smithy/util-defaults-mode-node": "^4.0.11", - "@smithy/util-endpoints": "^3.0.3", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-utf8": "^4.0.0", - "@types/uuid": "^9.0.1", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-kendra/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", - "license": "Apache-2.0", + "node_modules/@babel/helpers": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-kendra/node_modules/@smithy/util-utf8": { - "version": "4.0.0", - "license": "Apache-2.0", + "node_modules/@babel/parser": { + "version": "7.27.2", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", - "tslib": "^2.6.2" + "@babel/types": "^7.27.1" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.0.0" } }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.806.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.806.0", - "@aws-sdk/region-config-resolver": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.806.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.806.0", - "@smithy/config-resolver": "^4.1.1", - "@smithy/core": "^3.3.1", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.3", - "@smithy/middleware-retry": "^4.1.4", - "@smithy/middleware-serde": "^4.0.3", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.0", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.3", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.11", - "@smithy/util-defaults-mode-node": "^4.0.11", - "@smithy/util-endpoints": "^3.0.3", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-utf8": { - "version": "4.0.0", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.12.13" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/core": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/core": "^3.3.1", - "@smithy/node-config-provider": "^4.1.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/protocol-http": "^5.1.0", - "@smithy/signature-v4": "^5.1.0", - "@smithy/smithy-client": "^4.2.3", - "@smithy/types": "^4.2.0", - "@smithy/util-middleware": "^4.0.2", - "fast-xml-parser": "4.4.1", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/core/node_modules/@smithy/is-array-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.1.0.tgz", - "integrity": "sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/core/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/core/node_modules/@smithy/signature-v4": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.2.1.tgz", - "integrity": "sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/is-array-buffer": "^4.1.0", - "@smithy/protocol-http": "^5.2.1", - "@smithy/types": "^4.5.0", - "@smithy/util-hex-encoding": "^4.1.0", - "@smithy/util-middleware": "^4.1.1", - "@smithy/util-uri-escape": "^4.1.0", - "@smithy/util-utf8": "^4.1.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/core/node_modules/@smithy/util-utf8": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", - "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/util-buffer-from": "^4.1.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/property-provider": "^4.0.2", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.3", - "@smithy/types": "^4.2.0", - "@smithy/util-stream": "^4.2.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.806.0", - "@aws-sdk/credential-provider-env": "3.806.0", - "@aws-sdk/credential-provider-http": "3.806.0", - "@aws-sdk/credential-provider-process": "3.806.0", - "@aws-sdk/credential-provider-sso": "3.806.0", - "@aws-sdk/credential-provider-web-identity": "3.806.0", - "@aws-sdk/nested-clients": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@smithy/credential-provider-imds": "^4.0.2", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/credential-provider-env": "3.806.0", - "@aws-sdk/credential-provider-http": "3.806.0", - "@aws-sdk/credential-provider-ini": "3.806.0", - "@aws-sdk/credential-provider-process": "3.806.0", - "@aws-sdk/credential-provider-sso": "3.806.0", - "@aws-sdk/credential-provider-web-identity": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@smithy/credential-provider-imds": "^4.0.2", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/client-sso": "3.806.0", - "@aws-sdk/core": "3.806.0", - "@aws-sdk/token-providers": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.806.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.806.0", - "@aws-sdk/nested-clients": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" + "node": ">=6.9.0" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/eventstream-handler-node": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.887.0.tgz", - "integrity": "sha512-BFzSgyrbCOr9O2bOZCq7uOw4fuJP0Lpt7++41YNfzAXInNSYcSKFLDhmnrDnSSqJ+yC7SWOAiPYSV5o66YNzFA==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.887.0", - "@smithy/eventstream-codec": "^4.0.5", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/eventstream-handler-node/node_modules/@aws-crypto/crc32": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", - "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=16.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/eventstream-handler-node/node_modules/@aws-sdk/types": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.887.0.tgz", - "integrity": "sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" - }, + "node_modules/@babel/runtime": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/eventstream-handler-node/node_modules/@smithy/eventstream-codec": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.1.1.tgz", - "integrity": "sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw==", - "license": "Apache-2.0", + "node_modules/@babel/template": { + "version": "7.27.2", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.5.0", - "@smithy/util-hex-encoding": "^4.1.0", - "tslib": "^2.6.2" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/middleware-eventstream": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.887.0.tgz", - "integrity": "sha512-OeZyhx9O5u3aYmkKspByzuUes2AUbbZjr52SM2KmP/9qRBuQ20rUMir4d6iYtN0Ha24OOkhDOlEtEjkEN546rQ==", - "license": "Apache-2.0", + "node_modules/@babel/traverse": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.887.0", - "@smithy/protocol-http": "^5.2.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/middleware-eventstream/node_modules/@aws-sdk/types": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.887.0.tgz", - "integrity": "sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" - }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=4" } }, - "node_modules/@aws-sdk/middleware-eventstream/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", - "license": "Apache-2.0", + "node_modules/@babel/types": { + "version": "7.27.1", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.804.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, + "node_modules/@balena/dockerignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", + "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", + "dev": true + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "optional": true, "engines": { - "node": ">=18.0.0" + "node": ">=0.1.90" } }, - "node_modules/@aws-sdk/middleware-host-header/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", - "license": "Apache-2.0", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "devOptional": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=18.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.804.0", - "license": "Apache-2.0", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "devOptional": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.804.0", - "license": "Apache-2.0", + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", - "license": "Apache-2.0", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.806.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.806.0", - "@smithy/core": "^3.3.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", + "node_modules/@eslint/compat": { + "version": "1.2.9", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^9.10.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/@aws-sdk/middleware-websocket": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.887.0.tgz", - "integrity": "sha512-qEv2c3sritwdYUERMYmLCt3kw/MI8or0s1C8/y5CyINJ5DAlwlnyHbKxKvG0+QuUXEctpuhji2ZO3Cb0kmYD2Q==", - "license": "Apache-2.0", + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.887.0", - "@aws-sdk/util-format-url": "3.887.0", - "@smithy/eventstream-codec": "^4.0.5", - "@smithy/eventstream-serde-browser": "^4.1.1", - "@smithy/fetch-http-handler": "^5.2.1", - "@smithy/protocol-http": "^5.2.1", - "@smithy/signature-v4": "^5.1.3", - "@smithy/types": "^4.5.0", - "@smithy/util-hex-encoding": "^4.0.0", - "tslib": "^2.6.2" + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, "engines": { - "node": ">= 14.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@aws-sdk/middleware-websocket/node_modules/@aws-crypto/crc32": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", - "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "dev": true, "engines": { - "node": ">=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@aws-sdk/middleware-websocket/node_modules/@aws-sdk/types": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.887.0.tgz", - "integrity": "sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==", + "node_modules/@eslint/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@types/json-schema": "^7.0.15" }, "engines": { - "node": ">=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/eventstream-codec": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.1.1.tgz", - "integrity": "sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw==", - "license": "Apache-2.0", + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.5.0", - "@smithy/util-hex-encoding": "^4.1.0", - "tslib": "^2.6.2" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/is-array-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.1.0.tgz", - "integrity": "sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.31.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz", + "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, - "node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", + "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@eslint/core": "^0.15.1", + "levn": "^0.4.1" }, "engines": { - "node": ">=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/signature-v4": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.2.1.tgz", - "integrity": "sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA==", + "node_modules/@grpc/grpc-js": { + "version": "1.13.3", "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.1.0", - "@smithy/protocol-http": "^5.2.1", - "@smithy/types": "^4.5.0", - "@smithy/util-hex-encoding": "^4.1.0", - "@smithy/util-middleware": "^4.1.1", - "@smithy/util-uri-escape": "^4.1.0", - "@smithy/util-utf8": "^4.1.0", - "tslib": "^2.6.2" + "@grpc/proto-loader": "^0.7.13", + "@js-sdsl/ordered-map": "^4.4.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=12.10.0" } }, - "node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/util-utf8": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", - "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", + "node_modules/@grpc/proto-loader": { + "version": "0.7.15", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.1.0", - "tslib": "^2.6.2" + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" }, "engines": { - "node": ">=18.0.0" + "node": ">=6" } }, - "node_modules/@aws-sdk/nested-clients": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@grpc/proto-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.806.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.806.0", - "@aws-sdk/region-config-resolver": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.806.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.806.0", - "@smithy/config-resolver": "^4.1.1", - "@smithy/core": "^3.3.1", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.3", - "@smithy/middleware-retry": "^4.1.4", - "@smithy/middleware-serde": "^4.0.3", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.0", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.3", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.11", - "@smithy/util-defaults-mode-node": "^4.0.11", - "@smithy/util-endpoints": "^3.0.3", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", - "license": "Apache-2.0", + "node_modules/@grpc/proto-loader/node_modules/cliui": { + "version": "8.0.1", + "license": "ISC", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8": { - "version": "4.0.0", - "license": "Apache-2.0", + "node_modules/@grpc/proto-loader/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", - "tslib": "^2.6.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@grpc/proto-loader/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/@grpc/proto-loader/node_modules/wrap-ansi": { + "version": "7.0.0", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/node-config-provider": "^4.1.0", - "@smithy/types": "^4.2.0", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", - "tslib": "^2.6.2" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@grpc/proto-loader/node_modules/yargs": { + "version": "17.7.2", + "license": "MIT", "dependencies": { - "@aws-sdk/nested-clients": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/types": { - "version": "3.804.0", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">=18.18.0" } }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.806.0", + "node_modules/@humanfs/node": { + "version": "0.16.6", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", - "@smithy/util-endpoints": "^3.0.3", - "tslib": "^2.6.2" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=18.18.0" } }, - "node_modules/@aws-sdk/util-format-url": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.887.0.tgz", - "integrity": "sha512-ABDSP6KsrdD+JC7qwMqUpLXqPidvfgT+Q+W8sGGuk/IBy7smgZDOdYSZLE4VBbQpH3N/zSJuslAWhL2x37Qwww==", + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.887.0", - "@smithy/querystring-builder": "^4.1.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/util-format-url/node_modules/@aws-sdk/types": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.887.0.tgz", - "integrity": "sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "node": ">=18.18" }, - "engines": { - "node": ">=18.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.804.0", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.804.0", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.806.0", - "license": "Apache-2.0", + "node_modules/@inquirer/checkbox": { + "version": "4.1.6", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.806.0", - "@aws-sdk/types": "3.804.0", - "@smithy/node-config-provider": "^4.1.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" + "@inquirer/core": "^10.1.11", + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.6", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=18" }, "peerDependencies": { - "aws-crt": ">=1.0.0" + "@types/node": ">=18" }, "peerDependenciesMeta": { - "aws-crt": { + "@types/node": { "optional": true } } }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.3.1" - } - }, - "node_modules/@aws-sdk/xml-builder": { - "version": "3.887.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.887.0.tgz", - "integrity": "sha512-lMwgWK1kNgUhHGfBvO/5uLe7TKhycwOn3eRCqsKPT9aPCx/HWuTlpcQp8oW2pCRGLS7qzcxqpQulcD+bbUL7XQ==", - "license": "Apache-2.0", + "node_modules/@inquirer/confirm": { + "version": "5.1.10", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@inquirer/core": "^10.1.11", + "@inquirer/type": "^3.0.6" }, "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws/lambda-invoke-store": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.0.1.tgz", - "integrity": "sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@azure-rest/core-client": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@azure-rest/core-client/-/core-client-2.5.0.tgz", - "integrity": "sha512-KMVIPxG6ygcQ1M2hKHahF7eddKejYsWTjoLIfTWiqnaj42dBkYzj4+S8rK9xxmlOaEHKZHcMrRbm0NfN4kgwHw==", + "node_modules/@inquirer/core": { + "version": "10.1.11", + "dev": true, "license": "MIT", "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.9.0", - "@azure/core-rest-pipeline": "^1.5.0", - "@azure/core-tracing": "^1.0.1", - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.6", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "node_modules/@inquirer/editor": { + "version": "4.2.11", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "@inquirer/core": "^10.1.11", + "@inquirer/type": "^3.0.6", + "external-editor": "^3.1.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@azure/ai-agents": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/ai-agents/-/ai-agents-1.1.0.tgz", - "integrity": "sha512-i8HFA7ql18t/otGrRfTWNOE5HgJf/RqedV3VNbFav5z9iTSexf8k4EeWOb/IWWaCsq0z/S7mihdGPAluPs+nXQ==", + "node_modules/@inquirer/expand": { + "version": "4.0.13", + "dev": true, "license": "MIT", "dependencies": { - "@azure-rest/core-client": "^2.1.0", - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.6.0", - "@azure/core-lro": "^3.0.0", - "@azure/core-paging": "^1.5.0", - "@azure/core-rest-pipeline": "^1.5.0", - "@azure/core-sse": "^2.1.3", - "@azure/core-tracing": "^1.2.0", - "@azure/core-util": "^1.9.0", - "@azure/logger": "^1.1.4", - "tslib": "^2.6.2" + "@inquirer/core": "^10.1.11", + "@inquirer/type": "^3.0.6", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@azure/core-auth": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.0.tgz", - "integrity": "sha512-88Djs5vBvGbHQHf5ZZcaoNHo6Y8BKZkt3cw2iuJIQzLEgH4Ox6Tm4hjFhbqOxyYsgIG/eJbFEHpxRIfEEWv5Ow==", + "node_modules/@inquirer/figures": { + "version": "1.0.11", + "dev": true, "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.11.0", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=20.0.0" + "node": ">=18" } }, - "node_modules/@azure/core-client": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.0.tgz", - "integrity": "sha512-O4aP3CLFNodg8eTHXECaH3B3CjicfzkxVtnrfLkOq0XNP7TIECGfHpK/C6vADZkWP75wzmdBnsIA8ksuJMk18g==", + "node_modules/@inquirer/input": { + "version": "4.1.10", + "dev": true, "license": "MIT", "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.20.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" + "@inquirer/core": "^10.1.11", + "@inquirer/type": "^3.0.6" }, "engines": { - "node": ">=20.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@azure/core-lro": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-3.3.0.tgz", - "integrity": "sha512-q8onFxe4O2iqPiURwnqAEO/x6oYkU+lHDWOOc16vPonhuNoKeisDPB8xzun25EClCTrd1xG51YfLGMlvKcB9mg==", + "node_modules/@inquirer/number": { + "version": "3.0.13", + "dev": true, "license": "MIT", "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.2.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" + "@inquirer/core": "^10.1.11", + "@inquirer/type": "^3.0.6" }, "engines": { - "node": ">=20.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@azure/core-paging": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", - "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", + "node_modules/@inquirer/password": { + "version": "4.0.13", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "@inquirer/core": "^10.1.11", + "@inquirer/type": "^3.0.6", + "ansi-escapes": "^4.3.2" }, "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.0.tgz", - "integrity": "sha512-OKHmb3/Kpm06HypvB3g6Q3zJuvyXcpxDpCS1PnU8OV6AJgSFaee/covXBcPbWc6XDDxtEPlbi3EMQ6nUiPaQtw==", + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.4.1", + "dev": true, "license": "MIT", "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.8.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" + "@inquirer/checkbox": "^4.1.5", + "@inquirer/confirm": "^5.1.9", + "@inquirer/editor": "^4.2.10", + "@inquirer/expand": "^4.0.12", + "@inquirer/input": "^4.1.9", + "@inquirer/number": "^3.0.12", + "@inquirer/password": "^4.0.12", + "@inquirer/rawlist": "^4.0.12", + "@inquirer/search": "^3.0.12", + "@inquirer/select": "^4.1.1" }, "engines": { - "node": ">=20.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@azure/core-sse": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@azure/core-sse/-/core-sse-2.3.0.tgz", - "integrity": "sha512-jKhPpdDbVS5GlpadSKIC7V6Q4P2vEcwXi1c4CLTXs01Q/PAITES9v5J/S73+RtCMqQpsX0jGa2yPWwXi9JzdgA==", + "node_modules/@inquirer/rawlist": { + "version": "4.1.1", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "@inquirer/core": "^10.1.11", + "@inquirer/type": "^3.0.6", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@azure/core-tracing": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.0.tgz", - "integrity": "sha512-+XvmZLLWPe67WXNZo9Oc9CrPj/Tm8QnHR92fFAFdnbzwNdCH1h+7UdpaQgRSBsMY+oW1kHXNUZQLdZ1gHX3ROw==", + "node_modules/@inquirer/search": { + "version": "3.0.13", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "@inquirer/core": "^10.1.11", + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.6", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@azure/core-util": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.0.tgz", - "integrity": "sha512-o0psW8QWQ58fq3i24Q1K2XfS/jYTxr7O1HRcyUE9bV9NttLU+kYOH82Ixj8DGlMTOWgxm1Sss2QAfKK5UkSPxw==", + "node_modules/@inquirer/select": { + "version": "4.2.1", + "dev": true, "license": "MIT", "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" + "@inquirer/core": "^10.1.11", + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.6", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@azure/identity": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.11.0.tgz", - "integrity": "sha512-GkbNnd3mrsL1gX3BxIblhahCfFEViLTfNMFgfSo4wPSH2ipw4duc1TtOPVOf8Wt6XTnjZROZRAvYqjJBWXV39g==", + "node_modules/@inquirer/type": { + "version": "3.0.6", + "dev": true, "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.9.0", - "@azure/core-client": "^1.9.2", - "@azure/core-rest-pipeline": "^1.17.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^4.2.0", - "@azure/msal-node": "^3.5.0", - "open": "^10.1.0", - "tslib": "^2.2.0" + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=20.0.0" + "node": "20 || >=22" } }, - "node_modules/@azure/logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", - "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, "license": "MIT", "dependencies": { - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" + "@isaacs/balanced-match": "^4.0.1" }, "engines": { - "node": ">=20.0.0" + "node": "20 || >=22" } }, - "node_modules/@azure/msal-browser": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.18.0.tgz", - "integrity": "sha512-esQwdtHHVkFJhcKWnysnCTchiKsy3dmNZGs8AckD9PO3t8Lp5VtY0xcrbCBC0JbttG/5w2/xukUQOsMpoUFKrg==", - "license": "MIT", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "license": "ISC", "dependencies": { - "@azure/msal-common": "15.9.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=12" } }, - "node_modules/@azure/msal-common": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.9.0.tgz", - "integrity": "sha512-lbz/D+C9ixUG3hiZzBLjU79a0+5ZXCorjel3mwXluisKNH0/rOS/ajm8yi4yI9RP5Uc70CAcs9Ipd0051Oh/kA==", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@azure/msal-node": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.6.4.tgz", - "integrity": "sha512-jMeut9UQugcmq7aPWWlJKhJIse4DQ594zc/JaP6BIxg55XaX3aM/jcPuIQ4ryHnI4QSf03wUspy/uqAvjWKbOg==", + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", "license": "MIT", - "dependencies": { - "@azure/msal-common": "15.9.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, "engines": { - "node": ">=16" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@azure/msal-node/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "license": "MIT" }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/compat-data": { - "version": "7.27.2", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=6.9.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@babel/core": { - "version": "7.27.1", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helpers": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@babel/generator": { - "version": "7.27.1", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.1", - "@babel/types": "^7.27.1", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">=6" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, "bin": { - "semver": "bin/semver.js" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.27.1", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "p-try": "^2.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=6" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", "dev": true, "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", + "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { + "version": "1.0.3", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } + "license": "BSD-3-Clause" }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", "dev": true, "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/@babel/helpers": { - "version": "7.27.1", + "node_modules/@jest/console": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/parser": { - "version": "7.27.2", + "node_modules/@jest/core": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.1" - }, - "bin": { - "parser": "bin/babel-parser.js" + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", + "node_modules/@jest/environment": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", + "node_modules/@jest/expect": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "jest-get-type": "^29.6.3" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", + "node_modules/@jest/fake-timers": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", + "node_modules/@jest/globals": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", + "node_modules/@jest/reporters": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "node": "*" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", + "node_modules/@jest/schemas": { + "version": "29.6.3", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@sinclair/typebox": "^0.27.8" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", + "node_modules/@jest/source-map": { + "version": "29.6.3", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", + "node_modules/@jest/test-result": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", + "node_modules/@jest/transform": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", + "node_modules/@jest/types": { + "version": "29.6.3", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "dev": true, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "devOptional": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6.0.0" } }, - "node_modules/@babel/runtime": { - "version": "7.27.1", + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", "dev": true, "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">=6.0.0" } }, - "node_modules/@babel/template": { - "version": "7.27.2", + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@babel/traverse": { - "version": "7.27.1", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "dev": true, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", "license": "MIT", - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" } }, - "node_modules/@babel/types": { - "version": "7.27.1", - "dev": true, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/@balena/dockerignore": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", - "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", - "dev": true - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "dev": true, + "node_modules/@microsoft/tsdoc": { + "version": "0.15.1", "license": "MIT" }, - "node_modules/@browserbasehq/sdk": { - "version": "2.5.0", - "peer": true, - "dependencies": { - "@types/node": "^18.11.18", - "@types/node-fetch": "^2.6.4", - "abort-controller": "^3.0.0", - "agentkeepalive": "^4.2.1", - "form-data-encoder": "1.7.2", - "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7" - } - }, - "node_modules/@browserbasehq/sdk/node_modules/@types/node": { - "version": "18.19.100", + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.0.tgz", + "integrity": "sha512-qFfbWFA7r1Sd8D697L7GkTd36yqDuTkvz0KfOGkgXR8EUhQn3/EDNIR/qUdQNMT8IjmasBvHWuXeisxtXTQT2g==", "license": "MIT", - "peer": true, "dependencies": { - "undici-types": "~5.26.4" + "ajv": "^6.12.6", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.24.1" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@browserbasehq/sdk/node_modules/undici-types": { - "version": "5.26.5", - "license": "MIT", - "peer": true + "node_modules/@n8n/json-schema-to-zod": { + "version": "1.1.0", + "license": "SEE LICENSE IN LICENSE.md", + "peerDependencies": { + "zod": "^3.0.0" + } }, - "node_modules/@browserbasehq/stagehand": { - "version": "1.14.0", + "node_modules/@nestjs/axios": { + "version": "4.0.0", + "devOptional": true, "license": "MIT", - "peer": true, - "dependencies": { - "@anthropic-ai/sdk": "^0.27.3", - "@browserbasehq/sdk": "^2.0.0", - "ws": "^8.18.0", - "zod-to-json-schema": "^3.23.5" - }, "peerDependencies": { - "@playwright/test": "^1.42.1", - "deepmerge": "^4.3.1", - "dotenv": "^16.4.5", - "openai": "^4.62.1", - "zod": "^3.23.8" + "@nestjs/common": "^10.0.0 || ^11.0.0", + "axios": "^1.3.1", + "rxjs": "^7.0.0" } }, - "node_modules/@cfworker/json-schema": { - "version": "4.1.1", - "license": "MIT" - }, - "node_modules/@colors/colors": { - "version": "1.5.0", + "node_modules/@nestjs/cli": { + "version": "11.0.7", "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "@angular-devkit/core": "19.2.8", + "@angular-devkit/schematics": "19.2.8", + "@angular-devkit/schematics-cli": "19.2.8", + "@inquirer/prompts": "7.4.1", + "@nestjs/schematics": "^11.0.1", + "ansis": "3.17.0", + "chokidar": "4.0.3", + "cli-table3": "0.6.5", + "commander": "4.1.1", + "fork-ts-checker-webpack-plugin": "9.1.0", + "glob": "11.0.1", + "node-emoji": "1.11.0", + "ora": "5.4.1", + "tree-kill": "1.2.2", + "tsconfig-paths": "4.2.0", + "tsconfig-paths-webpack-plugin": "4.2.0", + "typescript": "5.8.3", + "webpack": "5.99.6", + "webpack-node-externals": "3.0.0" + }, + "bin": { + "nest": "bin/nest.js" + }, "engines": { - "node": ">=0.1.90" + "node": ">= 20.11" + }, + "peerDependencies": { + "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", + "@swc/core": "^1.3.62" + }, + "peerDependenciesMeta": { + "@swc/cli": { + "optional": true + }, + "@swc/core": { + "optional": true + } } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "devOptional": true, + "node_modules/@nestjs/cli/node_modules/@angular-devkit/core": { + "version": "19.2.8", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" }, "engines": { - "node": ">=12" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "devOptional": true, + "node_modules/@nestjs/cli/node_modules/ajv": { + "version": "8.17.1", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", + "node_modules/@nestjs/cli/node_modules/ajv-keywords": { + "version": "5.1.0", + "dev": true, "license": "MIT", "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", + "node_modules/@nestjs/cli/node_modules/chokidar": { + "version": "4.0.3", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.4.3" + "readdirp": "^4.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 14.16.0" }, "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", + "node_modules/@nestjs/cli/node_modules/eslint-scope": { + "version": "5.1.1", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=8.0.0" } }, - "node_modules/@eslint/compat": { - "version": "1.2.9", + "node_modules/@nestjs/cli/node_modules/estraverse": { + "version": "4.3.0", "dev": true, - "license": "Apache-2.0", + "license": "BSD-2-Clause", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^9.10.0" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "node": ">=4.0" } }, - "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "node_modules/@nestjs/cli/node_modules/json-schema-traverse": { + "version": "1.0.0", "dev": true, - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } + "license": "MIT" }, - "node_modules/@eslint/config-helpers": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", - "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "node_modules/@nestjs/cli/node_modules/mime-db": { + "version": "1.52.0", "dev": true, + "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 0.6" } }, - "node_modules/@eslint/core": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", - "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "node_modules/@nestjs/cli/node_modules/mime-types": { + "version": "2.1.35", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.15" + "mime-db": "1.52.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 0.6" } }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", + "node_modules/@nestjs/cli/node_modules/readdirp": { + "version": "4.1.2", "dev": true, "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 14.18.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", + "node_modules/@nestjs/cli/node_modules/rxjs": { + "version": "7.8.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" } }, - "node_modules/@eslint/js": { - "version": "9.31.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz", - "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==", + "node_modules/@nestjs/cli/node_modules/schema-utils": { + "version": "4.3.2", "dev": true, "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 10.13.0" }, "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/@eslint/plugin-kit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", - "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", + "node_modules/@nestjs/cli/node_modules/schema-utils/node_modules/ajv-formats": { + "version": "2.1.1", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@eslint/core": "^0.15.1", - "levn": "^0.4.1" + "ajv": "^8.0.0" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@google/generative-ai": { - "version": "0.24.1", - "license": "Apache-2.0", - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "license": "MIT", "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@grpc/grpc-js": { - "version": "1.13.3", - "license": "Apache-2.0", - "dependencies": { - "@grpc/proto-loader": "^0.7.13", - "@js-sdsl/ordered-map": "^4.4.2" + "ajv": "^8.0.0" }, - "engines": { - "node": ">=12.10.0" + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.15", - "license": "Apache-2.0", + "node_modules/@nestjs/cli/node_modules/webpack": { + "version": "5.99.6", + "dev": true, + "license": "MIT", "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.5", - "yargs": "^17.7.2" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" }, "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + "webpack": "bin/webpack.js" }, "engines": { - "node": ">=6" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/@grpc/proto-loader/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@nestjs/common": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.3.tgz", + "integrity": "sha512-ogEK+GriWodIwCw6buQ1rpcH4Kx+G7YQ9EwuPySI3rS05pSdtQ++UhucjusSI9apNidv+QURBztJkRecwwJQXg==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "file-type": "21.0.0", + "iterare": "1.2.1", + "load-esm": "1.0.2", + "tslib": "2.8.1", + "uid": "2.0.2" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@grpc/proto-loader/node_modules/cliui": { - "version": "8.0.1", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "type": "opencollective", + "url": "https://opencollective.com/nest" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } } }, - "node_modules/@grpc/proto-loader/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@nestjs/config": { + "version": "4.0.2", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "dotenv": "16.4.7", + "dotenv-expand": "12.0.1", + "lodash": "4.17.21" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "rxjs": "^7.1.0" } }, - "node_modules/@grpc/proto-loader/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/@grpc/proto-loader/node_modules/wrap-ansi": { - "version": "7.0.0", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "node_modules/@nestjs/config/node_modules/dotenv": { + "version": "16.4.7", + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://dotenvx.com" } }, - "node_modules/@grpc/proto-loader/node_modules/yargs": { - "version": "17.7.2", + "node_modules/@nestjs/core": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.3.tgz", + "integrity": "sha512-5lTni0TCh8x7bXETRD57pQFnKnEg1T6M+VLE7wAmyQRIecKQU+2inRGZD+A4v2DC1I04eA0WffP0GKLxjOKlzw==", + "hasInstallScript": true, "license": "MIT", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.2.0", + "tslib": "2.8.1", + "uid": "2.0.2" }, "engines": { - "node": ">=12" + "node": ">= 20" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } } }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" + "node_modules/@nestjs/cqrs": { + "version": "11.0.3", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "rxjs": "^7.2.0" } }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" + "node_modules/@nestjs/mapped-types": { + "version": "2.1.0", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "class-transformer": "^0.4.0 || ^0.5.0", + "class-validator": "^0.13.0 || ^0.14.0", + "reflect-metadata": "^0.1.12 || ^0.2.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node_modules/@nestjs/passport": { + "version": "11.0.5", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "passport": "^0.5.0 || ^0.6.0 || ^0.7.0" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" + "node_modules/@nestjs/platform-express": { + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.5.tgz", + "integrity": "sha512-OsoiUBY9Shs5IG3uvDIt9/IDfY5OlvWBESuB/K4Eun8xILw1EK5d5qMfC3d2sIJ+kA3l+kBR1d/RuzH7VprLIg==", + "license": "MIT", + "dependencies": { + "cors": "2.8.5", + "express": "5.1.0", + "multer": "2.0.2", + "path-to-regexp": "8.2.0", + "tslib": "2.8.1" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@ibm-cloud/watsonx-ai": { - "version": "1.6.4", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@langchain/textsplitters": "^0.1.0", - "@types/node": "^18.0.0", - "extend": "3.0.2", - "ibm-cloud-sdk-core": "^5.3.2" + "type": "opencollective", + "url": "https://opencollective.com/nest" }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@ibm-cloud/watsonx-ai/node_modules/@types/node": { - "version": "18.19.100", - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~5.26.4" + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" } }, - "node_modules/@ibm-cloud/watsonx-ai/node_modules/undici-types": { - "version": "5.26.5", - "license": "MIT", - "peer": true - }, - "node_modules/@inquirer/checkbox": { - "version": "4.1.6", + "node_modules/@nestjs/schematics": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.7.tgz", + "integrity": "sha512-t8dNYYMwEeEsrlwc2jbkfwCfXczq4AeNEgx1KVQuJ6wYibXk0ZbXbPdfp8scnEAaQv1grpncNV5gWgzi7ZwbvQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.11", - "@inquirer/figures": "^1.0.11", - "@inquirer/type": "^3.0.6", - "ansi-escapes": "^4.3.2", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" + "@angular-devkit/core": "19.2.15", + "@angular-devkit/schematics": "19.2.15", + "comment-json": "4.2.5", + "jsonc-parser": "3.3.1", + "pluralize": "8.0.0" }, "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "typescript": ">=4.8.2" } }, - "node_modules/@inquirer/confirm": { - "version": "5.1.10", + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.15.tgz", + "integrity": "sha512-pU2RZYX6vhd7uLSdLwPnuBcr0mXJSjp3EgOXKsrlQFQZevc+Qs+2JdXgIElnOT/aDqtRtriDmLlSbtdE8n3ZbA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.11", - "@inquirer/type": "^3.0.6" + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" }, "peerDependencies": { - "@types/node": ">=18" + "chokidar": "^4.0.0" }, "peerDependenciesMeta": { - "@types/node": { + "chokidar": { "optional": true } } }, - "node_modules/@inquirer/core": { - "version": "10.1.11", + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.15.tgz", + "integrity": "sha512-kNOJ+3vekJJCQKWihNmxBkarJzNW09kP5a9E1SRNiQVNOUEeSwcRR0qYotM65nx821gNzjjhJXnAZ8OazWldrg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/figures": "^1.0.11", - "@inquirer/type": "^3.0.6", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" + "@angular-devkit/core": "19.2.15", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@inquirer/editor": { - "version": "4.2.11", + "node_modules/@nestjs/schematics/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.11", - "@inquirer/type": "^3.0.6", - "external-editor": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@inquirer/expand": { - "version": "4.0.13", + "node_modules/@nestjs/schematics/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@inquirer/core": "^10.1.11", - "@inquirer/type": "^3.0.6", - "yoctocolors-cjs": "^2.1.2" + "readdirp": "^4.0.1" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "node": ">= 14.16.0" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@inquirer/figures": { - "version": "1.0.11", + "node_modules/@nestjs/schematics/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } + "license": "MIT" }, - "node_modules/@inquirer/input": { - "version": "4.1.10", + "node_modules/@nestjs/schematics/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.1.11", - "@inquirer/type": "^3.0.6" - }, + "optional": true, + "peer": true, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "node": ">= 14.18.0" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@inquirer/number": { - "version": "3.0.13", + "node_modules/@nestjs/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.1.11", - "@inquirer/type": "^3.0.6" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "tslib": "^2.1.0" } }, - "node_modules/@inquirer/password": { - "version": "4.0.13", - "dev": true, + "node_modules/@nestjs/swagger": { + "version": "11.2.0", "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.11", - "@inquirer/type": "^3.0.6", - "ansi-escapes": "^4.3.2" - }, - "engines": { - "node": ">=18" + "@microsoft/tsdoc": "0.15.1", + "@nestjs/mapped-types": "2.1.0", + "js-yaml": "4.1.0", + "lodash": "4.17.21", + "path-to-regexp": "8.2.0", + "swagger-ui-dist": "5.21.0" }, "peerDependencies": { - "@types/node": ">=18" + "@fastify/static": "^8.0.0", + "@nestjs/common": "^11.0.1", + "@nestjs/core": "^11.0.1", + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12 || ^0.2.0" }, "peerDependenciesMeta": { - "@types/node": { + "@fastify/static": { + "optional": true + }, + "class-transformer": { + "optional": true + }, + "class-validator": { "optional": true } } }, - "node_modules/@inquirer/prompts": { - "version": "7.4.1", - "dev": true, + "node_modules/@nestjs/terminus": { + "version": "11.0.0", "license": "MIT", "dependencies": { - "@inquirer/checkbox": "^4.1.5", - "@inquirer/confirm": "^5.1.9", - "@inquirer/editor": "^4.2.10", - "@inquirer/expand": "^4.0.12", - "@inquirer/input": "^4.1.9", - "@inquirer/number": "^3.0.12", - "@inquirer/password": "^4.0.12", - "@inquirer/rawlist": "^4.0.12", - "@inquirer/search": "^3.0.12", - "@inquirer/select": "^4.1.1" - }, - "engines": { - "node": ">=18" + "boxen": "5.1.2", + "check-disk-space": "3.4.0" }, "peerDependencies": { - "@types/node": ">=18" + "@grpc/grpc-js": "*", + "@grpc/proto-loader": "*", + "@mikro-orm/core": "*", + "@mikro-orm/nestjs": "*", + "@nestjs/axios": "^2.0.0 || ^3.0.0 || ^4.0.0", + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0", + "@nestjs/microservices": "^10.0.0 || ^11.0.0", + "@nestjs/mongoose": "^11.0.0", + "@nestjs/sequelize": "^10.0.0 || ^11.0.0", + "@nestjs/typeorm": "^10.0.0 || ^11.0.0", + "@prisma/client": "*", + "mongoose": "*", + "reflect-metadata": "0.1.x || 0.2.x", + "rxjs": "7.x", + "sequelize": "*", + "typeorm": "*" }, "peerDependenciesMeta": { - "@types/node": { + "@grpc/grpc-js": { + "optional": true + }, + "@grpc/proto-loader": { + "optional": true + }, + "@mikro-orm/core": { + "optional": true + }, + "@mikro-orm/nestjs": { + "optional": true + }, + "@nestjs/axios": { + "optional": true + }, + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/mongoose": { + "optional": true + }, + "@nestjs/sequelize": { + "optional": true + }, + "@nestjs/typeorm": { + "optional": true + }, + "@prisma/client": { + "optional": true + }, + "mongoose": { + "optional": true + }, + "sequelize": { + "optional": true + }, + "typeorm": { "optional": true } } }, - "node_modules/@inquirer/rawlist": { - "version": "4.1.1", + "node_modules/@nestjs/testing": { + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.5.tgz", + "integrity": "sha512-ZYRYF750SefmuIo7ZqPlHDcin1OHh6My0OkOfGEFjrD9mJ0vMVIpwMTOOkpzCfCcpqUuxeHBuecpiIn+NLrQbQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.11", - "@inquirer/type": "^3.0.6", - "yoctocolors-cjs": "^2.1.2" + "tslib": "2.8.1" }, - "engines": { - "node": ">=18" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" }, "peerDependencies": { - "@types/node": ">=18" + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0" }, "peerDependenciesMeta": { - "@types/node": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { "optional": true } } }, - "node_modules/@inquirer/search": { - "version": "3.0.13", - "dev": true, + "node_modules/@nestjs/typeorm": { + "version": "11.0.0", "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.1.11", - "@inquirer/figures": "^1.0.11", - "@inquirer/type": "^3.0.6", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - }, "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "rxjs": "^7.2.0", + "typeorm": "^0.3.0" } }, - "node_modules/@inquirer/select": { - "version": "4.2.1", + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.1.11", - "@inquirer/figures": "^1.0.11", - "@inquirer/type": "^3.0.6", - "ansi-escapes": "^4.3.2", - "yoctocolors-cjs": "^2.1.2" - }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "node": "^14.21.3 || >=16" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@inquirer/type": { - "version": "3.0.6", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "engines": { + "node": ">= 8" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { - "node": "20 || >=22" + "node": ">= 8" } }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { - "@isaacs/balanced-match": "^4.0.1" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": "20 || >=22" + "node": ">= 8" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "license": "ISC", + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "license": "MIT", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "consola": "^3.2.3" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "license": "MIT", - "engines": { - "node": ">=12" + "bin": { + "opencollective": "bin/opencollective.js" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "dev": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" }, - "engines": { - "node": ">=12" + "bin": { + "opencollective": "bin/opencollective.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "license": "MIT", + "node_modules/@nuxtjs/opencollective/node_modules/consola": { + "version": "2.15.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@openapitools/openapi-generator-cli": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.21.0.tgz", + "integrity": "sha512-NdDvCd7hya+UucxH7G94Jf6tmA6641I4CF/T3xtFhM+NQQNWAP5tpiOBN4Ub9ocU6cCgQgXdWl4EpwlEwW7JDQ==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^6.0.1" + "@nestjs/axios": "4.0.0", + "@nestjs/common": "11.1.3", + "@nestjs/core": "11.1.3", + "@nuxtjs/opencollective": "0.3.2", + "axios": "1.10.0", + "chalk": "4.1.2", + "commander": "8.3.0", + "compare-versions": "4.1.4", + "concurrently": "6.5.1", + "console.table": "0.10.0", + "fs-extra": "11.3.0", + "glob": "11.0.3", + "inquirer": "8.2.6", + "lodash": "4.17.21", + "proxy-agent": "6.5.0", + "reflect-metadata": "0.2.2", + "rxjs": "7.8.2", + "tslib": "2.8.1" + }, + "bin": { + "openapi-generator-cli": "main.js" }, "engines": { - "node": ">=12" + "node": ">=16" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/openapi_generator" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", + "node_modules/@openapitools/openapi-generator-cli/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">= 12" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", + "node_modules/@openapitools/openapi-generator-cli/node_modules/glob": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", "dev": true, "license": "ISC", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", + "node_modules/@openapitools/openapi-generator-cli/node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "node": "20 || >=22" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/api-logs": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.205.0.tgz", + "integrity": "sha512-wBlPk1nFB37Hsm+3Qy73yQSobVn28F4isnWIBvKpd5IUH/eat8bwcL02H9yzmHyyPmukeccSl2mbN5sDQZYnPg==", + "license": "Apache-2.0", "dependencies": { - "p-try": "^2.0.0" + "@opentelemetry/api": "^1.3.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/auto-instrumentations-node": { + "version": "0.64.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/auto-instrumentations-node/-/auto-instrumentations-node-0.64.1.tgz", + "integrity": "sha512-V893tqyTsCD0zYsHjJXUor/x1M7VxmPr5j8Tga7EYVXfxubVrrPwqKk37ygtVRp2oDnQp+P/D7LGP+AP6eCblw==", + "license": "Apache-2.0", "dependencies": { - "p-limit": "^2.2.0" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/instrumentation-amqplib": "^0.52.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.56.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.60.0", + "@opentelemetry/instrumentation-bunyan": "^0.51.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.51.0", + "@opentelemetry/instrumentation-connect": "^0.49.0", + "@opentelemetry/instrumentation-cucumber": "^0.21.0", + "@opentelemetry/instrumentation-dataloader": "^0.23.0", + "@opentelemetry/instrumentation-dns": "^0.49.0", + "@opentelemetry/instrumentation-express": "^0.54.0", + "@opentelemetry/instrumentation-fastify": "^0.50.0", + "@opentelemetry/instrumentation-fs": "^0.25.0", + "@opentelemetry/instrumentation-generic-pool": "^0.49.0", + "@opentelemetry/instrumentation-graphql": "^0.53.0", + "@opentelemetry/instrumentation-grpc": "^0.205.0", + "@opentelemetry/instrumentation-hapi": "^0.52.0", + "@opentelemetry/instrumentation-http": "^0.205.0", + "@opentelemetry/instrumentation-ioredis": "^0.53.0", + "@opentelemetry/instrumentation-kafkajs": "^0.15.0", + "@opentelemetry/instrumentation-knex": "^0.50.0", + "@opentelemetry/instrumentation-koa": "^0.53.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.50.0", + "@opentelemetry/instrumentation-memcached": "^0.49.0", + "@opentelemetry/instrumentation-mongodb": "^0.58.0", + "@opentelemetry/instrumentation-mongoose": "^0.52.0", + "@opentelemetry/instrumentation-mysql": "^0.51.0", + "@opentelemetry/instrumentation-mysql2": "^0.52.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.51.0", + "@opentelemetry/instrumentation-net": "^0.49.0", + "@opentelemetry/instrumentation-oracledb": "^0.31.0", + "@opentelemetry/instrumentation-pg": "^0.58.0", + "@opentelemetry/instrumentation-pino": "^0.52.0", + "@opentelemetry/instrumentation-redis": "^0.54.1", + "@opentelemetry/instrumentation-restify": "^0.51.0", + "@opentelemetry/instrumentation-router": "^0.50.0", + "@opentelemetry/instrumentation-runtime-node": "^0.19.0", + "@opentelemetry/instrumentation-socket.io": "^0.52.0", + "@opentelemetry/instrumentation-tedious": "^0.24.0", + "@opentelemetry/instrumentation-undici": "^0.16.0", + "@opentelemetry/instrumentation-winston": "^0.50.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.31.5", + "@opentelemetry/resource-detector-aws": "^2.5.0", + "@opentelemetry/resource-detector-azure": "^0.12.0", + "@opentelemetry/resource-detector-container": "^0.7.5", + "@opentelemetry/resource-detector-gcp": "^0.40.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-node": "^0.205.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "peerDependencies": { + "@opentelemetry/api": "^1.4.1", + "@opentelemetry/core": "^2.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { - "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/context-async-hooks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.1.0.tgz", + "integrity": "sha512-zOyetmZppnwTyPrt4S7jMfXiSX9yyfF0hxlA8B5oo2TtKl+/RGCy7fi4DrBfIf3lCPrkKsRBWZZD7RFojK7FDg==", + "license": "Apache-2.0", "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" + "node": "^18.19.0 || >=20.6.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@jest/core": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@js-sdsl/ordered-map": { - "version": "4.4.2", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/@langchain/aws": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/@langchain/aws/-/aws-0.1.15.tgz", - "integrity": "sha512-oyOMhTHP0rxdSCVI/g5KXYCOs9Kq/FpXMZbOk1JSIUoaIzUg4p6d98lsHu7erW//8NSaT+SX09QRbVDAgt7pNA==", - "license": "MIT", - "dependencies": { - "@aws-sdk/client-bedrock-agent-runtime": "^3.755.0", - "@aws-sdk/client-bedrock-runtime": "^3.840.0", - "@aws-sdk/client-kendra": "^3.750.0", - "@aws-sdk/credential-provider-node": "^3.750.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.3.58 <0.4.0" - } - }, - "node_modules/@langchain/community": { - "version": "0.3.56", - "resolved": "https://registry.npmjs.org/@langchain/community/-/community-0.3.56.tgz", - "integrity": "sha512-lDjUnRfHAX7aMXyEB2EWbe5qOmdQdz8n+0CNQ4ExpLy3NOFQhEVkWclhsucaX04zh0r/VH5Pkk9djpnhPBDH7g==", - "license": "MIT", - "dependencies": { - "@langchain/openai": ">=0.2.0 <0.7.0", - "@langchain/weaviate": "^0.2.0", - "binary-extensions": "^2.2.0", - "expr-eval": "^2.0.2", - "flat": "^5.0.2", - "js-yaml": "^4.1.0", - "langchain": ">=0.2.3 <0.3.0 || >=0.3.4 <0.4.0", - "langsmith": "^0.3.67", - "uuid": "^10.0.0", - "zod": "^3.25.32" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@arcjet/redact": "^v1.0.0-alpha.23", - "@aws-crypto/sha256-js": "^5.0.0", - "@aws-sdk/client-bedrock-agent-runtime": "^3.749.0", - "@aws-sdk/client-bedrock-runtime": "^3.749.0", - "@aws-sdk/client-dynamodb": "^3.749.0", - "@aws-sdk/client-kendra": "^3.749.0", - "@aws-sdk/client-lambda": "^3.749.0", - "@aws-sdk/client-s3": "^3.749.0", - "@aws-sdk/client-sagemaker-runtime": "^3.749.0", - "@aws-sdk/client-sfn": "^3.749.0", - "@aws-sdk/credential-provider-node": "^3.388.0", - "@azure/search-documents": "^12.0.0", - "@azure/storage-blob": "^12.15.0", - "@browserbasehq/sdk": "*", - "@browserbasehq/stagehand": "^1.0.0", - "@clickhouse/client": "^0.2.5", - "@cloudflare/ai": "*", - "@datastax/astra-db-ts": "^1.0.0", - "@elastic/elasticsearch": "^8.4.0", - "@getmetal/metal-sdk": "*", - "@getzep/zep-cloud": "^1.0.6", - "@getzep/zep-js": "^0.9.0", - "@gomomento/sdk": "^1.51.1", - "@gomomento/sdk-core": "^1.51.1", - "@google-ai/generativelanguage": "*", - "@google-cloud/storage": "^6.10.1 || ^7.7.0", - "@gradientai/nodejs-sdk": "^1.2.0", - "@huggingface/inference": "^4.0.5", - "@huggingface/transformers": "^3.5.2", - "@ibm-cloud/watsonx-ai": "*", - "@lancedb/lancedb": "^0.19.1", - "@langchain/core": ">=0.3.58 <0.4.0", - "@layerup/layerup-security": "^1.5.12", - "@libsql/client": "^0.14.0", - "@mendable/firecrawl-js": "^1.4.3", - "@mlc-ai/web-llm": "*", - "@mozilla/readability": "*", - "@neondatabase/serverless": "*", - "@notionhq/client": "^2.2.10", - "@opensearch-project/opensearch": "*", - "@pinecone-database/pinecone": "*", - "@planetscale/database": "^1.8.0", - "@premai/prem-sdk": "^0.3.25", - "@qdrant/js-client-rest": "^1.15.0", - "@raycast/api": "^1.55.2", - "@rockset/client": "^0.9.1", - "@smithy/eventstream-codec": "^2.0.5", - "@smithy/protocol-http": "^3.0.6", - "@smithy/signature-v4": "^2.0.10", - "@smithy/util-utf8": "^2.0.0", - "@spider-cloud/spider-client": "^0.0.21", - "@supabase/supabase-js": "^2.45.0", - "@tensorflow-models/universal-sentence-encoder": "*", - "@tensorflow/tfjs-converter": "*", - "@tensorflow/tfjs-core": "*", - "@upstash/ratelimit": "^1.1.3 || ^2.0.3", - "@upstash/redis": "^1.20.6", - "@upstash/vector": "^1.1.1", - "@vercel/kv": "*", - "@vercel/postgres": "*", - "@writerai/writer-sdk": "^0.40.2", - "@xata.io/client": "^0.28.0", - "@zilliz/milvus2-sdk-node": ">=2.3.5", - "apify-client": "^2.7.1", - "assemblyai": "^4.6.0", - "azion": "^1.11.1", - "better-sqlite3": ">=9.4.0 <12.0.0", - "cassandra-driver": "^4.7.2", - "cborg": "^4.1.1", - "cheerio": "^1.0.0-rc.12", - "chromadb": "*", - "closevector-common": "0.1.3", - "closevector-node": "0.1.6", - "closevector-web": "0.1.6", - "cohere-ai": "*", - "convex": "^1.3.1", - "crypto-js": "^4.2.0", - "d3-dsv": "^2.0.0", - "discord.js": "^14.14.1", - "duck-duck-scrape": "^2.2.5", - "epub2": "^3.0.1", - "fast-xml-parser": "*", - "firebase-admin": "^11.9.0 || ^12.0.0 || ^13.0.0", - "google-auth-library": "*", - "googleapis": "*", - "hnswlib-node": "^3.0.0", - "html-to-text": "^9.0.5", - "ibm-cloud-sdk-core": "*", - "ignore": "^5.2.0", - "interface-datastore": "^8.2.11", - "ioredis": "^5.3.2", - "it-all": "^3.0.4", - "jsdom": "*", - "jsonwebtoken": "^9.0.2", - "llmonitor": "^0.5.9", - "lodash": "^4.17.21", - "lunary": "^0.7.10", - "mammoth": "^1.6.0", - "mariadb": "^3.4.0", - "mem0ai": "^2.1.8", - "mongodb": "^6.17.0", - "mysql2": "^3.9.8", - "neo4j-driver": "*", - "notion-to-md": "^3.1.0", - "officeparser": "^4.0.4", - "openai": "*", - "pdf-parse": "1.1.1", - "pg": "^8.11.0", - "pg-copy-streams": "^6.0.5", - "pickleparser": "^0.2.1", - "playwright": "^1.32.1", - "portkey-ai": "^0.1.11", - "puppeteer": "*", - "pyodide": ">=0.24.1 <0.27.0", - "redis": "*", - "replicate": "*", - "sonix-speech-recognition": "^2.1.1", - "srt-parser-2": "^1.2.3", - "typeorm": "^0.3.20", - "typesense": "^1.5.3", - "usearch": "^1.1.1", - "voy-search": "0.6.2", - "weaviate-client": "^3.5.2", - "web-auth-library": "^1.0.3", - "word-extractor": "*", - "ws": "^8.14.2", - "youtubei.js": "*" - }, - "peerDependenciesMeta": { - "@arcjet/redact": { - "optional": true - }, - "@aws-crypto/sha256-js": { - "optional": true - }, - "@aws-sdk/client-bedrock-agent-runtime": { - "optional": true - }, - "@aws-sdk/client-bedrock-runtime": { - "optional": true - }, - "@aws-sdk/client-dynamodb": { - "optional": true - }, - "@aws-sdk/client-kendra": { - "optional": true - }, - "@aws-sdk/client-lambda": { - "optional": true - }, - "@aws-sdk/client-s3": { - "optional": true - }, - "@aws-sdk/client-sagemaker-runtime": { - "optional": true - }, - "@aws-sdk/client-sfn": { - "optional": true - }, - "@aws-sdk/credential-provider-node": { - "optional": true - }, - "@aws-sdk/dsql-signer": { - "optional": true - }, - "@azure/search-documents": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@browserbasehq/sdk": { - "optional": true - }, - "@clickhouse/client": { - "optional": true - }, - "@cloudflare/ai": { - "optional": true - }, - "@datastax/astra-db-ts": { - "optional": true - }, - "@elastic/elasticsearch": { - "optional": true - }, - "@getmetal/metal-sdk": { - "optional": true - }, - "@getzep/zep-cloud": { - "optional": true - }, - "@getzep/zep-js": { - "optional": true - }, - "@gomomento/sdk": { - "optional": true - }, - "@gomomento/sdk-core": { - "optional": true - }, - "@google-ai/generativelanguage": { - "optional": true - }, - "@google-cloud/storage": { - "optional": true - }, - "@gradientai/nodejs-sdk": { - "optional": true - }, - "@huggingface/inference": { - "optional": true - }, - "@huggingface/transformers": { - "optional": true - }, - "@lancedb/lancedb": { - "optional": true - }, - "@layerup/layerup-security": { - "optional": true - }, - "@libsql/client": { - "optional": true - }, - "@mendable/firecrawl-js": { - "optional": true - }, - "@mlc-ai/web-llm": { - "optional": true - }, - "@mozilla/readability": { - "optional": true - }, - "@neondatabase/serverless": { - "optional": true - }, - "@notionhq/client": { - "optional": true - }, - "@opensearch-project/opensearch": { - "optional": true - }, - "@pinecone-database/pinecone": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@premai/prem-sdk": { - "optional": true - }, - "@qdrant/js-client-rest": { - "optional": true - }, - "@raycast/api": { - "optional": true - }, - "@rockset/client": { - "optional": true - }, - "@smithy/eventstream-codec": { - "optional": true - }, - "@smithy/protocol-http": { - "optional": true - }, - "@smithy/signature-v4": { - "optional": true - }, - "@smithy/util-utf8": { - "optional": true - }, - "@spider-cloud/spider-client": { - "optional": true - }, - "@supabase/supabase-js": { - "optional": true - }, - "@tensorflow-models/universal-sentence-encoder": { - "optional": true - }, - "@tensorflow/tfjs-converter": { - "optional": true - }, - "@tensorflow/tfjs-core": { - "optional": true - }, - "@upstash/ratelimit": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@upstash/vector": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "@vercel/postgres": { - "optional": true - }, - "@writerai/writer-sdk": { - "optional": true - }, - "@xata.io/client": { - "optional": true - }, - "@zilliz/milvus2-sdk-node": { - "optional": true - }, - "apify-client": { - "optional": true - }, - "assemblyai": { - "optional": true - }, - "azion": { - "optional": true - }, - "better-sqlite3": { - "optional": true - }, - "cassandra-driver": { - "optional": true - }, - "cborg": { - "optional": true - }, - "cheerio": { - "optional": true - }, - "chromadb": { - "optional": true - }, - "closevector-common": { - "optional": true - }, - "closevector-node": { - "optional": true - }, - "closevector-web": { - "optional": true - }, - "cohere-ai": { - "optional": true - }, - "convex": { - "optional": true - }, - "crypto-js": { - "optional": true - }, - "d3-dsv": { - "optional": true - }, - "discord.js": { - "optional": true - }, - "duck-duck-scrape": { - "optional": true - }, - "epub2": { - "optional": true - }, - "fast-xml-parser": { - "optional": true - }, - "firebase-admin": { - "optional": true - }, - "google-auth-library": { - "optional": true - }, - "googleapis": { - "optional": true - }, - "hnswlib-node": { - "optional": true - }, - "html-to-text": { - "optional": true - }, - "ignore": { - "optional": true - }, - "interface-datastore": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "it-all": { - "optional": true - }, - "jsdom": { - "optional": true - }, - "jsonwebtoken": { - "optional": true - }, - "llmonitor": { - "optional": true - }, - "lodash": { - "optional": true - }, - "lunary": { - "optional": true - }, - "mammoth": { - "optional": true - }, - "mariadb": { - "optional": true - }, - "mem0ai": { - "optional": true - }, - "mongodb": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "neo4j-driver": { - "optional": true - }, - "notion-to-md": { - "optional": true - }, - "officeparser": { - "optional": true - }, - "pdf-parse": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-copy-streams": { - "optional": true - }, - "pickleparser": { - "optional": true - }, - "playwright": { - "optional": true - }, - "portkey-ai": { - "optional": true - }, - "puppeteer": { - "optional": true - }, - "pyodide": { - "optional": true - }, - "redis": { - "optional": true - }, - "replicate": { - "optional": true - }, - "sonix-speech-recognition": { - "optional": true - }, - "srt-parser-2": { - "optional": true - }, - "typeorm": { - "optional": true - }, - "typesense": { - "optional": true - }, - "usearch": { - "optional": true - }, - "voy-search": { - "optional": true - }, - "weaviate-client": { - "optional": true - }, - "web-auth-library": { - "optional": true - }, - "word-extractor": { - "optional": true - }, - "ws": { - "optional": true - }, - "youtubei.js": { - "optional": true - } - } - }, - "node_modules/@langchain/community/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@langchain/core": { - "version": "0.3.77", - "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.77.tgz", - "integrity": "sha512-aqXHea9xfpVn6VoCq9pjujwFqrh3vw3Fgm9KFUZJ1cF7Bx5HI62DvQPw8LlRB3NB4dhwBBA1ldAVkkkd1du8nA==", - "license": "MIT", - "dependencies": { - "@cfworker/json-schema": "^4.0.2", - "ansi-styles": "^5.0.0", - "camelcase": "6", - "decamelize": "1.2.0", - "js-tiktoken": "^1.0.12", - "langsmith": "^0.3.67", - "mustache": "^4.2.0", - "p-queue": "^6.6.2", - "p-retry": "4", - "uuid": "^10.0.0", - "zod": "^3.25.32", - "zod-to-json-schema": "^3.22.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@langchain/core/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@langchain/deepseek": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@langchain/deepseek/-/deepseek-0.1.0.tgz", - "integrity": "sha512-5VzaG/oi2oSfBt+JUdXWjavZcmOzjk14+N5sCFnbrY6xeAjHrtBq7VeBcBJcHqkrjafxADK1aVGV0hpbhiFyJg==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@langchain/openai": "^0.6.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.3.58 <0.4.0" - } - }, - "node_modules/@langchain/google-common": { - "version": "0.2.18", - "resolved": "https://registry.npmjs.org/@langchain/google-common/-/google-common-0.2.18.tgz", - "integrity": "sha512-HjWB6Bx4zj7KkiHnqRpx8YNaXdA97sKQMQ17keyWl7nQJlRauNyymm8QGeduKSEfECDr2nGzY8Y/SNY64X6cSA==", - "license": "MIT", - "dependencies": { - "uuid": "^10.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.3.58 <0.4.0" - } - }, - "node_modules/@langchain/google-common/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@langchain/google-gauth": { - "version": "0.2.18", - "resolved": "https://registry.npmjs.org/@langchain/google-gauth/-/google-gauth-0.2.18.tgz", - "integrity": "sha512-xof4jBnPB0YI6OlFuETdbODoM05XBTJoC+qQKJ4qNOcWI7u760sRKm57cvG+jzjParojAxdCdrNEKV47wUpoKg==", - "license": "MIT", - "dependencies": { - "@langchain/google-common": "^0.2.18", - "google-auth-library": "^10.1.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.3.58 <0.4.0" - } - }, - "node_modules/@langchain/google-genai": { - "version": "0.2.18", - "resolved": "https://registry.npmjs.org/@langchain/google-genai/-/google-genai-0.2.18.tgz", - "integrity": "sha512-m9EiN3VKC01A7/625YQ6Q1Lqq8zueewADX4W5Tcme4RImN75zkg2Z7FYbD1Fo6Zwolc4wBNO6LUtbg3no4rv1Q==", - "license": "MIT", - "dependencies": { - "@google/generative-ai": "^0.24.0", - "uuid": "^11.1.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.3.58 <0.4.0" - } - }, - "node_modules/@langchain/google-genai/node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, - "node_modules/@langchain/google-vertexai": { - "version": "0.2.18", - "resolved": "https://registry.npmjs.org/@langchain/google-vertexai/-/google-vertexai-0.2.18.tgz", - "integrity": "sha512-oZsOp9Sx4rsFpHH5UiuObo5NYCAqhhmroL3f3pDZ06DB6hpfnNc6XNjdpbmt0AemP6PO/52UlKHeSYtnYlBzIQ==", - "license": "MIT", - "dependencies": { - "@langchain/google-gauth": "^0.2.18" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.3.58 <0.4.0" - } - }, - "node_modules/@langchain/mistralai": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@langchain/mistralai/-/mistralai-0.2.1.tgz", - "integrity": "sha512-s91BlNcuxaaZGnVukyl81nwGrWpeE0EYiAdEFoBmZwlT4yLpx+QpPhRsGKrTg/Vm7Nscy6Wd8Xy2PJ93wftMdw==", - "license": "MIT", - "dependencies": { - "@mistralai/mistralai": "^1.3.1", - "uuid": "^10.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.3.58 <0.4.0" - } - }, - "node_modules/@langchain/mistralai/node_modules/uuid": { - "version": "10.0.0", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@langchain/ollama": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@langchain/ollama/-/ollama-0.2.4.tgz", - "integrity": "sha512-XThDrZurNPcUO6sasN13rkes1aGgu5gWAtDkkyIGT3ZeMOvrYgPKGft+bbhvsigTIH9C01TfPzrSp8LAmvHIjA==", - "license": "MIT", - "dependencies": { - "ollama": "^0.5.17", - "uuid": "^10.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.3.58 <0.4.0" - } - }, - "node_modules/@langchain/ollama/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@langchain/openai": { - "version": "0.6.12", - "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.6.12.tgz", - "integrity": "sha512-xc81QFQ2E5IuwCOYN91TG2prsbsxH2jAqMbZx2nRO+3XUzqH5RNqxSHvJKFmh9793KcPw3PE3vEvBQ8oO+3iOA==", - "license": "MIT", - "dependencies": { - "js-tiktoken": "^1.0.12", - "openai": "5.12.2", - "zod": "^3.25.32" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.3.68 <0.4.0" - } - }, - "node_modules/@langchain/textsplitters": { - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "js-tiktoken": "^1.0.12" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.2.21 <0.4.0" - } - }, - "node_modules/@langchain/weaviate": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@langchain/weaviate/-/weaviate-0.2.0.tgz", - "integrity": "sha512-gAtTCxSllR8Z92qAuRn2ir0cop241VmftQHQN+UYtTeoLge8hvZT5k0j55PDVaXTVpjx0ecx6DKv5I/wLRQI+A==", - "license": "MIT", - "dependencies": { - "uuid": "^10.0.0", - "weaviate-client": "^3.5.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.2.21 <0.4.0" - } - }, - "node_modules/@langchain/weaviate/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@lukeed/csprng": { - "version": "1.1.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@microsoft/tsdoc": { - "version": "0.15.1", - "license": "MIT" - }, - "node_modules/@mistralai/mistralai": { - "version": "1.6.0", - "dependencies": { - "zod-to-json-schema": "^3.24.1" - }, - "peerDependencies": { - "zod": ">= 3" - } - }, - "node_modules/@modelcontextprotocol/sdk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.0.tgz", - "integrity": "sha512-qFfbWFA7r1Sd8D697L7GkTd36yqDuTkvz0KfOGkgXR8EUhQn3/EDNIR/qUdQNMT8IjmasBvHWuXeisxtXTQT2g==", - "license": "MIT", - "dependencies": { - "ajv": "^6.12.6", - "content-type": "^1.0.5", - "cors": "^2.8.5", - "cross-spawn": "^7.0.5", - "eventsource": "^3.0.2", - "eventsource-parser": "^3.0.0", - "express": "^5.0.1", - "express-rate-limit": "^7.5.0", - "pkce-challenge": "^5.0.0", - "raw-body": "^3.0.0", - "zod": "^3.23.8", - "zod-to-json-schema": "^3.24.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@n8n/json-schema-to-zod": { - "version": "1.1.0", - "license": "SEE LICENSE IN LICENSE.md", - "peerDependencies": { - "zod": "^3.0.0" - } - }, - "node_modules/@nestjs/axios": { - "version": "4.0.0", - "devOptional": true, - "license": "MIT", - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "axios": "^1.3.1", - "rxjs": "^7.0.0" - } - }, - "node_modules/@nestjs/cli": { - "version": "11.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.8", - "@angular-devkit/schematics": "19.2.8", - "@angular-devkit/schematics-cli": "19.2.8", - "@inquirer/prompts": "7.4.1", - "@nestjs/schematics": "^11.0.1", - "ansis": "3.17.0", - "chokidar": "4.0.3", - "cli-table3": "0.6.5", - "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "9.1.0", - "glob": "11.0.1", - "node-emoji": "1.11.0", - "ora": "5.4.1", - "tree-kill": "1.2.2", - "tsconfig-paths": "4.2.0", - "tsconfig-paths-webpack-plugin": "4.2.0", - "typescript": "5.8.3", - "webpack": "5.99.6", - "webpack-node-externals": "3.0.0" - }, - "bin": { - "nest": "bin/nest.js" - }, - "engines": { - "node": ">= 20.11" - }, - "peerDependencies": { - "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", - "@swc/core": "^1.3.62" - }, - "peerDependenciesMeta": { - "@swc/cli": { - "optional": true - }, - "@swc/core": { - "optional": true - } - } - }, - "node_modules/@nestjs/cli/node_modules/@angular-devkit/core": { - "version": "19.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "8.17.1", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@nestjs/cli/node_modules/ajv": { - "version": "8.17.1", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@nestjs/cli/node_modules/ajv-keywords": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/@nestjs/cli/node_modules/chokidar": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nestjs/cli/node_modules/eslint-scope": { - "version": "5.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@nestjs/cli/node_modules/estraverse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@nestjs/cli/node_modules/json-schema-traverse": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@nestjs/cli/node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@nestjs/cli/node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@nestjs/cli/node_modules/readdirp": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nestjs/cli/node_modules/rxjs": { - "version": "7.8.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@nestjs/cli/node_modules/schema-utils": { - "version": "4.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/@nestjs/cli/node_modules/schema-utils/node_modules/ajv-formats": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@nestjs/cli/node_modules/webpack": { - "version": "5.99.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/@nestjs/common": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.3.tgz", - "integrity": "sha512-ogEK+GriWodIwCw6buQ1rpcH4Kx+G7YQ9EwuPySI3rS05pSdtQ++UhucjusSI9apNidv+QURBztJkRecwwJQXg==", - "license": "MIT", - "dependencies": { - "file-type": "21.0.0", - "iterare": "1.2.1", - "load-esm": "1.0.2", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "class-transformer": ">=0.4.1", - "class-validator": ">=0.13.2", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, - "node_modules/@nestjs/config": { - "version": "4.0.2", - "license": "MIT", - "dependencies": { - "dotenv": "16.4.7", - "dotenv-expand": "12.0.1", - "lodash": "4.17.21" - }, - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "rxjs": "^7.1.0" - } - }, - "node_modules/@nestjs/config/node_modules/dotenv": { - "version": "16.4.7", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/@nestjs/core": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.3.tgz", - "integrity": "sha512-5lTni0TCh8x7bXETRD57pQFnKnEg1T6M+VLE7wAmyQRIecKQU+2inRGZD+A4v2DC1I04eA0WffP0GKLxjOKlzw==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@nuxt/opencollective": "0.4.1", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "path-to-regexp": "8.2.0", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "engines": { - "node": ">= 20" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0", - "@nestjs/websockets": "^11.0.0", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - } - } - }, - "node_modules/@nestjs/cqrs": { - "version": "11.0.3", - "license": "MIT", - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "@nestjs/core": "^10.0.0 || ^11.0.0", - "reflect-metadata": "^0.1.13 || ^0.2.0", - "rxjs": "^7.2.0" - } - }, - "node_modules/@nestjs/mapped-types": { + "node_modules/@opentelemetry/core": { "version": "2.1.0", - "license": "MIT", - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "class-transformer": "^0.4.0 || ^0.5.0", - "class-validator": "^0.13.0 || ^0.14.0", - "reflect-metadata": "^0.1.12 || ^0.2.0" - }, - "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, - "node_modules/@nestjs/passport": { - "version": "11.0.5", - "license": "MIT", - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "passport": "^0.5.0 || ^0.6.0 || ^0.7.0" - } - }, - "node_modules/@nestjs/platform-express": { - "version": "11.1.5", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.5.tgz", - "integrity": "sha512-OsoiUBY9Shs5IG3uvDIt9/IDfY5OlvWBESuB/K4Eun8xILw1EK5d5qMfC3d2sIJ+kA3l+kBR1d/RuzH7VprLIg==", - "license": "MIT", - "dependencies": { - "cors": "2.8.5", - "express": "5.1.0", - "multer": "2.0.2", - "path-to-regexp": "8.2.0", - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0" - } - }, - "node_modules/@nestjs/schematics": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.7.tgz", - "integrity": "sha512-t8dNYYMwEeEsrlwc2jbkfwCfXczq4AeNEgx1KVQuJ6wYibXk0ZbXbPdfp8scnEAaQv1grpncNV5gWgzi7ZwbvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.15", - "@angular-devkit/schematics": "19.2.15", - "comment-json": "4.2.5", - "jsonc-parser": "3.3.1", - "pluralize": "8.0.0" + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { - "typescript": ">=4.8.2" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { - "version": "19.2.15", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.15.tgz", - "integrity": "sha512-pU2RZYX6vhd7uLSdLwPnuBcr0mXJSjp3EgOXKsrlQFQZevc+Qs+2JdXgIElnOT/aDqtRtriDmLlSbtdE8n3ZbA==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/exporter-logs-otlp-grpc": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.205.0.tgz", + "integrity": "sha512-jQlw7OHbqZ8zPt+pOrW2KGN7T55P50e3NXBMr4ckPOF+DWDwSy4W7mkG09GpYWlQAQ5C9BXg5gfUlv5ldTgWsw==", + "license": "Apache-2.0", "dependencies": { - "ajv": "8.17.1", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.1", - "source-map": "0.7.4" + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/sdk-logs": "0.205.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { - "version": "19.2.15", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.15.tgz", - "integrity": "sha512-kNOJ+3vekJJCQKWihNmxBkarJzNW09kP5a9E1SRNiQVNOUEeSwcRR0qYotM65nx821gNzjjhJXnAZ8OazWldrg==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/exporter-logs-otlp-grpc/node_modules/@opentelemetry/sdk-logs": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.205.0.tgz", + "integrity": "sha512-nyqhNQ6eEzPWQU60Nc7+A5LIq8fz3UeIzdEVBQYefB4+msJZ2vuVtRuk9KxPMw1uHoHDtYEwkr2Ct0iG29jU8w==", + "license": "Apache-2.0", "dependencies": { - "@angular-devkit/core": "19.2.15", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "5.4.1", - "rxjs": "7.8.1" + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, - "node_modules/@nestjs/schematics/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/exporter-logs-otlp-http": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.205.0.tgz", + "integrity": "sha512-5JteMyVWiro4ghF0tHQjfE6OJcF7UBUcoEqX3UIQ5jutKP1H+fxFdyhqjjpmeHMFxzOHaYuLlNR1Bn7FOjGyJg==", + "license": "Apache-2.0", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/sdk-logs": "0.205.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@nestjs/schematics/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/sdk-logs": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.205.0.tgz", + "integrity": "sha512-nyqhNQ6eEzPWQU60Nc7+A5LIq8fz3UeIzdEVBQYefB4+msJZ2vuVtRuk9KxPMw1uHoHDtYEwkr2Ct0iG29jU8w==", + "license": "Apache-2.0", "dependencies": { - "readdirp": "^4.0.1" + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" }, "engines": { - "node": ">= 14.16.0" + "node": "^18.19.0 || >=20.6.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, - "node_modules/@nestjs/schematics/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nestjs/schematics/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/@opentelemetry/exporter-logs-otlp-proto": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.205.0.tgz", + "integrity": "sha512-q3VS9wS+lpZ01txKxiDGBtBpTNge3YhbVEFDgem9ZQR9eI3EZ68+9tVZH9zJcSxI37nZPJ6lEEZO58yEjYZsVA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-logs": "0.205.0", + "@opentelemetry/sdk-trace-base": "2.1.0" + }, "engines": { - "node": ">= 14.18.0" + "node": "^18.19.0 || >=20.6.0" }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@nestjs/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, + "node_modules/@opentelemetry/exporter-logs-otlp-proto/node_modules/@opentelemetry/sdk-logs": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.205.0.tgz", + "integrity": "sha512-nyqhNQ6eEzPWQU60Nc7+A5LIq8fz3UeIzdEVBQYefB4+msJZ2vuVtRuk9KxPMw1uHoHDtYEwkr2Ct0iG29jU8w==", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.1.0" + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, - "node_modules/@nestjs/swagger": { - "version": "11.2.0", - "license": "MIT", + "node_modules/@opentelemetry/exporter-logs-otlp-proto/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", "dependencies": { - "@microsoft/tsdoc": "0.15.1", - "@nestjs/mapped-types": "2.1.0", - "js-yaml": "4.1.0", - "lodash": "4.17.21", - "path-to-regexp": "8.2.0", - "swagger-ui-dist": "5.21.0" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, - "peerDependencies": { - "@fastify/static": "^8.0.0", - "@nestjs/common": "^11.0.1", - "@nestjs/core": "^11.0.1", - "class-transformer": "*", - "class-validator": "*", - "reflect-metadata": "^0.1.12 || ^0.2.0" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "peerDependenciesMeta": { - "@fastify/static": { - "optional": true - }, - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@nestjs/terminus": { - "version": "11.0.0", - "license": "MIT", + "node_modules/@opentelemetry/exporter-metrics-otlp-grpc": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.205.0.tgz", + "integrity": "sha512-1Vxlo4lUwqSKYX+phFkXHKYR3DolFHxCku6lVMP1H8sVE3oj4wwmwxMzDsJ7zF+sXd8M0FCr+ckK4SnNNKkV+w==", + "license": "Apache-2.0", "dependencies": { - "boxen": "5.1.2", - "check-disk-space": "3.4.0" + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.205.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" }, - "peerDependencies": { - "@grpc/grpc-js": "*", - "@grpc/proto-loader": "*", - "@mikro-orm/core": "*", - "@mikro-orm/nestjs": "*", - "@nestjs/axios": "^2.0.0 || ^3.0.0 || ^4.0.0", - "@nestjs/common": "^10.0.0 || ^11.0.0", - "@nestjs/core": "^10.0.0 || ^11.0.0", - "@nestjs/microservices": "^10.0.0 || ^11.0.0", - "@nestjs/mongoose": "^11.0.0", - "@nestjs/sequelize": "^10.0.0 || ^11.0.0", - "@nestjs/typeorm": "^10.0.0 || ^11.0.0", - "@prisma/client": "*", - "mongoose": "*", - "reflect-metadata": "0.1.x || 0.2.x", - "rxjs": "7.x", - "sequelize": "*", - "typeorm": "*" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "peerDependenciesMeta": { - "@grpc/grpc-js": { - "optional": true - }, - "@grpc/proto-loader": { - "optional": true - }, - "@mikro-orm/core": { - "optional": true - }, - "@mikro-orm/nestjs": { - "optional": true - }, - "@nestjs/axios": { - "optional": true - }, - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/mongoose": { - "optional": true - }, - "@nestjs/sequelize": { - "optional": true - }, - "@nestjs/typeorm": { - "optional": true - }, - "@prisma/client": { - "optional": true - }, - "mongoose": { - "optional": true - }, - "sequelize": { - "optional": true - }, - "typeorm": { - "optional": true - } + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@nestjs/testing": { - "version": "11.1.5", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.5.tgz", - "integrity": "sha512-ZYRYF750SefmuIo7ZqPlHDcin1OHh6My0OkOfGEFjrD9mJ0vMVIpwMTOOkpzCfCcpqUuxeHBuecpiIn+NLrQbQ==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/exporter-metrics-otlp-grpc/node_modules/@opentelemetry/sdk-metrics": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.1.0.tgz", + "integrity": "sha512-J9QX459mzqHLL9Y6FZ4wQPRZG4TOpMCyPOh6mkr/humxE1W2S3Bvf4i75yiMW9uyed2Kf5rxmLhTm/UK8vNkAw==", + "license": "Apache-2.0", "dependencies": { - "tslib": "2.8.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0" + "@opentelemetry/api": ">=1.9.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.205.0.tgz", + "integrity": "sha512-fFxNQ/HbbpLmh1pgU6HUVbFD1kNIjrkoluoKJkh88+gnmpFD92kMQ8WFNjPnSbjg2mNVnEkeKXgCYEowNW+p1w==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - } + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@nestjs/typeorm": { - "version": "11.0.0", - "license": "MIT", + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/sdk-metrics": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.1.0.tgz", + "integrity": "sha512-J9QX459mzqHLL9Y6FZ4wQPRZG4TOpMCyPOh6mkr/humxE1W2S3Bvf4i75yiMW9uyed2Kf5rxmLhTm/UK8vNkAw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "@nestjs/core": "^10.0.0 || ^11.0.0", - "reflect-metadata": "^0.1.13 || ^0.2.0", - "rxjs": "^7.2.0", - "typeorm": "^0.3.0" + "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, - "node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "dev": true, + "node_modules/@opentelemetry/exporter-metrics-otlp-proto": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.205.0.tgz", + "integrity": "sha512-qIbNnedw9QfFjwpx4NQvdgjK3j3R2kWH/2T+7WXAm1IfMFe9fwatYxE61i7li4CIJKf8HgUC3GS8Du0C3D+AuQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.205.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" + }, "engines": { - "node": "^14.21.3 || >=16" + "node": "^18.19.0 || >=20.6.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/exporter-metrics-otlp-proto/node_modules/@opentelemetry/sdk-metrics": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.1.0.tgz", + "integrity": "sha512-J9QX459mzqHLL9Y6FZ4wQPRZG4TOpMCyPOh6mkr/humxE1W2S3Bvf4i75yiMW9uyed2Kf5rxmLhTm/UK8vNkAw==", + "license": "Apache-2.0", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" }, "engines": { - "node": ">= 8" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/exporter-prometheus": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.205.0.tgz", + "integrity": "sha512-xsot/Qm9VLDTag4GEwAunD1XR1U8eBHTLAgO7IZNo2JuD/c/vL7xmDP7mQIUr6Lk3gtj/yGGIR2h3vhTeVzv4w==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" + }, "engines": { - "node": ">= 8" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/exporter-prometheus/node_modules/@opentelemetry/sdk-metrics": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.1.0.tgz", + "integrity": "sha512-J9QX459mzqHLL9Y6FZ4wQPRZG4TOpMCyPOh6mkr/humxE1W2S3Bvf4i75yiMW9uyed2Kf5rxmLhTm/UK8vNkAw==", + "license": "Apache-2.0", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" }, "engines": { - "node": ">= 8" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, - "node_modules/@nuxt/opencollective": { - "version": "0.4.1", - "license": "MIT", + "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.205.0.tgz", + "integrity": "sha512-ZBksUk84CcQOuDJB65yu5A4PORkC4qEsskNwCrPZxDLeWjPOFZNSWt0E0jQxKCY8PskLhjNXJYo12YaqsYvGFA==", + "license": "Apache-2.0", "dependencies": { - "consola": "^3.2.3" - }, - "bin": { - "opencollective": "bin/opencollective.js" + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" }, "engines": { - "node": "^14.18.0 || >=16.10.0", - "npm": ">=5.10.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@nuxtjs/opencollective": { - "version": "0.3.2", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", "dependencies": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" - }, - "bin": { - "opencollective": "bin/opencollective.js" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@nuxtjs/opencollective/node_modules/consola": { - "version": "2.15.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@openapitools/openapi-generator-cli": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.21.0.tgz", - "integrity": "sha512-NdDvCd7hya+UucxH7G94Jf6tmA6641I4CF/T3xtFhM+NQQNWAP5tpiOBN4Ub9ocU6cCgQgXdWl4EpwlEwW7JDQ==", - "dev": true, - "hasInstallScript": true, + "node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.205.0.tgz", + "integrity": "sha512-vr2bwwPCSc9u7rbKc74jR+DXFvyMFQo9o5zs+H/fgbK672Whw/1izUKVf+xfWOdJOvuwTnfWxy+VAY+4TSo74Q==", "license": "Apache-2.0", "dependencies": { - "@nestjs/axios": "4.0.0", - "@nestjs/common": "11.1.3", - "@nestjs/core": "11.1.3", - "@nuxtjs/opencollective": "0.3.2", - "axios": "1.10.0", - "chalk": "4.1.2", - "commander": "8.3.0", - "compare-versions": "4.1.4", - "concurrently": "6.5.1", - "console.table": "0.10.0", - "fs-extra": "11.3.0", - "glob": "11.0.3", - "inquirer": "8.2.6", - "lodash": "4.17.21", - "proxy-agent": "6.5.0", - "reflect-metadata": "0.2.2", - "rxjs": "7.8.2", - "tslib": "2.8.1" - }, - "bin": { - "openapi-generator-cli": "main.js" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" }, "engines": { - "node": ">=16" + "node": "^18.19.0 || >=20.6.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/openapi_generator" + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, "engines": { - "node": ">= 12" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/glob": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", - "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", - "dev": true, - "license": "ISC", + "node_modules/@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.205.0.tgz", + "integrity": "sha512-bGtFzqiENO2GpJk988mOBMe0MfeNpTQjbLm/LBijas6VRyEDQarUzdBHpFlu89A25k1+BCntdWGsWTa9Ai4FyA==", + "license": "Apache-2.0", "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.0.3", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" }, "engines": { - "node": "20 || >=22" + "node": "^18.19.0 || >=20.6.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@openapitools/openapi-generator-cli/node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", - "dev": true, - "license": "ISC", + "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": "20 || >=22" + "node": "^18.19.0 || >=20.6.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", + "node_modules/@opentelemetry/exporter-zipkin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-2.1.0.tgz", + "integrity": "sha512-0mEI0VDZrrX9t5RE1FhAyGz+jAGt96HSuXu73leswtY3L5YZD11gtcpARY2KAx/s6Z2+rj5Mhj566JsI2C7mfA==", "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, "engines": { - "node": ">=8.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@paralleldrive/cuid2": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", - "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", - "dev": true, + "node_modules/@opentelemetry/exporter-zipkin/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", "dependencies": { - "@noble/hashes": "^1.1.5" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "license": "MIT", - "optional": true, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.205.0.tgz", + "integrity": "sha512-cgvm7tvQdu9Qo7VurJP84wJ7ZV9F6WqDDGZpUc6rUEXwjV7/bXWs0kaYp9v+1Vh1+3TZCD3i6j/lUBcPhu8NhA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.205.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1" + }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@pkgr/core": { - "version": "0.2.4", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/instrumentation-amqplib": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.52.0.tgz", + "integrity": "sha512-G8RnaoDxfwYe6uXC7erNGzYJi0gY/xMSu+fPthQr9Won8+/ot9kqt48WQCk9OA2uiV67lSPs5hiDKKBBOcvJCA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + "node": "^18.19.0 || >=20.6.0" }, - "funding": { - "url": "https://opencollective.com/pkgr" + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@playwright/test": { - "version": "1.52.0", + "node_modules/@opentelemetry/instrumentation-aws-lambda": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-aws-lambda/-/instrumentation-aws-lambda-0.56.0.tgz", + "integrity": "sha512-QS3rhpdcuHzGQB84Qfy8cV75rP9R3vZ8lcUiRkRh+Uu3/+QnaXET1eOi9kS8Jc5I3uoLEz6L/A61I7lUXZ+U4A==", "license": "Apache-2.0", - "peer": true, "dependencies": { - "playwright": "1.52.0" - }, - "bin": { - "playwright": "cli.js" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/aws-lambda": "8.10.152" }, "engines": { - "node": ">=18" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "license": "BSD-3-Clause", + "node_modules/@opentelemetry/instrumentation-aws-sdk": { + "version": "0.60.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-aws-sdk/-/instrumentation-aws-sdk-0.60.0.tgz", + "integrity": "sha512-TX5tSQpSNO1um0xyQBmTIDqd4ANh/rOXJCZWHkKEKStfZH3vTxfunkTOCSWdzIcCfft+PaEJcLFjCivr34/6pQ==", + "license": "Apache-2.0", "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.34.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@scarf/scarf": { - "version": "1.4.0", - "hasInstallScript": true, - "license": "Apache-2.0" + "node_modules/@opentelemetry/instrumentation-bunyan": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-bunyan/-/instrumentation-bunyan-0.51.0.tgz", + "integrity": "sha512-N84VeifmawRyTrGkIhHRzzpHyaWkbD8fnVHg4LpbbFW1nQJcQphDE62kvuqKrzezIUbaYeS7Ue+tHV2WveTe9w==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "^0.205.0", + "@opentelemetry/instrumentation": "^0.205.0", + "@types/bunyan": "1.8.11" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "dev": true, - "license": "MIT" + "node_modules/@opentelemetry/instrumentation-cassandra-driver": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-cassandra-driver/-/instrumentation-cassandra-driver-0.51.0.tgz", + "integrity": "sha512-Qy8SmLCqXPzP3vMRcwWYtpAnOdhdU1WhAnvGoS8JMNvn48sush42CjJIYkQmsgpz676WDkrppCQ4V5T0nD5z4A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/@opentelemetry/instrumentation-connect": { + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.49.0.tgz", + "integrity": "sha512-mcGcz9w9gtJuNM3ErxBiwsVSgFkPu97Guxt16cxaZZKQkm+6he5qtQbUfLsmEj5tgaF0c3K4jvXhRQsusNilSQ==", + "license": "Apache-2.0", "dependencies": { - "type-detect": "4.0.8" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/connect": "3.4.38" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/@opentelemetry/instrumentation-cucumber": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-cucumber/-/instrumentation-cucumber-0.21.0.tgz", + "integrity": "sha512-a9v73VpANHK5MiiK2TxhDHVYPbbSofuKAhiE+3EUyTinz7KkLzUS4zk7sKip4yWzu04HmJ5N2S4Ke85dXpgK1g==", + "license": "Apache-2.0", "dependencies": { - "@sinonjs/commons": "^3.0.0" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@smithy/abort-controller": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.1.1.tgz", - "integrity": "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg==", + "node_modules/@opentelemetry/instrumentation-dataloader": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.23.0.tgz", + "integrity": "sha512-HLPl6/kCcHMoMjVHy+nqBZa2ODSUdSRHOG63+ZRRn5JAeFLj74U/gZ93qNzip1nVSWYaPRxclSfDb44E2PH72w==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/config-resolver": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.2.1.tgz", - "integrity": "sha512-FXil8q4QN7mgKwU2hCLm0ltab8NyY/1RiqEf25Jnf6WLS3wmb11zGAoLETqg1nur2Aoibun4w4MjeN9CMJ4G6A==", + "node_modules/@opentelemetry/instrumentation-dns": { + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dns/-/instrumentation-dns-0.49.0.tgz", + "integrity": "sha512-DWVfSI5oH1X9sh4bMJd4HOWQ+UCqHLp76s8X8dw8+TPP10jI8Ca9oyoCjNPxS4GMpFFDYtCLlFgsPq7LfTcN2A==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.2.1", - "@smithy/types": "^4.5.0", - "@smithy/util-config-provider": "^4.1.0", - "@smithy/util-middleware": "^4.1.1", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/core": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.11.0.tgz", - "integrity": "sha512-Abs5rdP1o8/OINtE49wwNeWuynCu0kme1r4RI3VXVrHr4odVDG7h7mTnw1WXXfN5Il+c25QOnrdL2y56USfxkA==", + "node_modules/@opentelemetry/instrumentation-express": { + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.54.0.tgz", + "integrity": "sha512-Bar+y7h4qs9MSrU8ItaOAMOYmXVC0xCh5RCBDqaPsMeBmWMc2IUD3l0R6Ts+qL5extJCbboD7JKcQPXHPbMOGw==", "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-serde": "^4.1.1", - "@smithy/protocol-http": "^5.2.1", - "@smithy/types": "^4.5.0", - "@smithy/util-base64": "^4.1.0", - "@smithy/util-body-length-browser": "^4.1.0", - "@smithy/util-middleware": "^4.1.1", - "@smithy/util-stream": "^4.3.1", - "@smithy/util-utf8": "^4.1.0", - "@types/uuid": "^9.0.1", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/core/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", + "node_modules/@opentelemetry/instrumentation-fastify": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.50.0.tgz", + "integrity": "sha512-j30yphIxdt6Wm8dgUoRORSORxlcFX2IxCLV6QZ9G5HtvvMIEP0hA0UnhJ3CDrDHKJRSHCiW8E8piOSbtU+0MLA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/core/node_modules/@smithy/util-utf8": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", - "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", + "node_modules/@opentelemetry/instrumentation-fs": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.25.0.tgz", + "integrity": "sha512-U19QQ4WfbAjty1grQQoMFrhB0HIsAQktu41nN50E+T2defjz4OC2IvNwfAJFWT7gGzFA23daxzOS7+DumZOVMg==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.1.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/credential-provider-imds": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.1.1.tgz", - "integrity": "sha512-1WdBfM9DwA59pnpIizxnUvBf/de18p4GP+6zP2AqrlFzoW3ERpZaT4QueBR0nS9deDMaQRkBlngpVlnkuuTisQ==", + "node_modules/@opentelemetry/instrumentation-generic-pool": { + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.49.0.tgz", + "integrity": "sha512-HwZmSNb7gjbWBXST/+elp8CnOZ5tvT1pOFr4GjnWpCdpx31lHhEA8cLhkao+hozqg+uMl1/nmTXR78vnIbG+8g==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.2.1", - "@smithy/property-provider": "^4.1.1", - "@smithy/types": "^4.5.0", - "@smithy/url-parser": "^4.1.1", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/eventstream-codec": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.2.0.tgz", - "integrity": "sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==", + "node_modules/@opentelemetry/instrumentation-graphql": { + "version": "0.53.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.53.0.tgz", + "integrity": "sha512-yVYgGlkfwOlBTqOm4YI9oHw0sWB18CpYMbxan2UMo7UAgm6JQ6ikur0c2T1ALp2jnkXv0XnR1PkYBGmGYUjG8A==", "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.12.0", - "@smithy/util-hex-encoding": "^2.2.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/eventstream-codec/node_modules/@smithy/types": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", - "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "node_modules/@opentelemetry/instrumentation-grpc": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.205.0.tgz", + "integrity": "sha512-IB5eKpb/7/x+tyWUVIIyY5KcAtODy/YbcDKPdnlJl8sMCFPByjNxti/lzOfPajYBPOXsN91g7H7cN0L1aSlerQ==", "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "0.205.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=14.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/eventstream-codec/node_modules/@smithy/util-hex-encoding": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", - "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", + "node_modules/@opentelemetry/instrumentation-hapi": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.52.0.tgz", + "integrity": "sha512-Hd39MAnYC+PrlWLpAwmkcZJE9l2g6Tie3Flg6gcHTEfs3WFJZb5WmfagDTKDujLwTMwc+setqjDJm/EOJyGXig==", "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=14.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.1.1.tgz", - "integrity": "sha512-Q9QWdAzRaIuVkefupRPRFAasaG/droBqn1feiMnmLa+LLEUG45pqX1+FurHFmlqiCfobB3nUlgoJfeXZsr7MPA==", + "node_modules/@opentelemetry/instrumentation-http": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.205.0.tgz", + "integrity": "sha512-6fOgRlV7ypBuEzCQP7vXkLQxz3UL1FhE24rAlMRbwGvPAnZLvutcG/fq9FI/n+VU23dOpYexocYsXCf5oy/AXw==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.1.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/instrumentation": "0.205.0", + "@opentelemetry/semantic-conventions": "^1.29.0", + "forwarded-parse": "2.1.2" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.2.1.tgz", - "integrity": "sha512-oSUkF9zDN9zcOUBMtxp8RewJlh71E9NoHWU8jE3hU9JMYCsmW4assVTpgic/iS3/dM317j6hO5x18cc3XrfvEw==", + "node_modules/@opentelemetry/instrumentation-ioredis": { + "version": "0.53.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.53.0.tgz", + "integrity": "sha512-Ah2wU347vOJYbE563Tgm3UX2J3DAXoI8gsr8qH0OOO4uDuEv3kVS/eDCfXApt11bvvDDPlOoc60/TGn6m9IoPw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/redis-common": "^0.38.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.1.1.tgz", - "integrity": "sha512-tn6vulwf/ScY0vjhzptSJuDJJqlhNtUjkxJ4wiv9E3SPoEqTEKbaq6bfqRO7nvhTG29ALICRcvfFheOUPl8KNA==", + "node_modules/@opentelemetry/instrumentation-kafkajs": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.15.0.tgz", + "integrity": "sha512-bfMRg8ICe8ICZgP8Nezy8xxov/uBQ7518r2h7puwKUZeEqga+5F+hKVL9to0aVlPWTAiHgEjdOAdP1D5eRzvuw==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.1.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.30.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.1.1.tgz", - "integrity": "sha512-uLOAiM/Dmgh2CbEXQx+6/ssK7fbzFhd+LjdyFxXid5ZBCbLHTFHLdD/QbXw5aEDsLxQhgzDxLLsZhsftAYwHJA==", + "node_modules/@opentelemetry/instrumentation-knex": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.50.0.tgz", + "integrity": "sha512-kuQaU0BLMF1alpRS8pR7j2hA38h9M2c09EijfhVwhm63zzQoT34RLOB37maLepx9nY3EJo4ohZUHTnNmHE10ZQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.1.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.33.1" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/eventstream-serde-universal/node_modules/@aws-crypto/crc32": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", - "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "node_modules/@opentelemetry/instrumentation-koa": { + "version": "0.53.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.53.0.tgz", + "integrity": "sha512-aZbivQx+IXZpqkMWWH8RlZNVsaJnPExYfGiUdzOtjwPLQqXVV1SN4gzzPC0kL1r6BVK6NKwUSQI6jznV81i8aQ==", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=16.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/eventstream-serde-universal/node_modules/@smithy/eventstream-codec": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.1.1.tgz", - "integrity": "sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw==", + "node_modules/@opentelemetry/instrumentation-lru-memoizer": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.50.0.tgz", + "integrity": "sha512-2mI3Yv7vzlNU1LURY1Jp3lgzICqKWeyeNEljGN2PUuOXwAoWviQwmFzTI5FoSnbWflANUvKGL1j0NH3KjagjdA==", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.5.0", - "@smithy/util-hex-encoding": "^4.1.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/fetch-http-handler": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.2.1.tgz", - "integrity": "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng==", + "node_modules/@opentelemetry/instrumentation-memcached": { + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-memcached/-/instrumentation-memcached-0.49.0.tgz", + "integrity": "sha512-TyurQ0NqbeV1Y12Cw72rXKikSkeeGVPNwCCRkA4Y60k0asVD3MCfnFs6Kpy1sZWMvqkSelLJbjuGh0yLJ3GN3A==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.2.1", - "@smithy/querystring-builder": "^4.1.1", - "@smithy/types": "^4.5.0", - "@smithy/util-base64": "^4.1.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/memcached": "^2.2.6" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/fetch-http-handler/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", + "node_modules/@opentelemetry/instrumentation-mongodb": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.58.0.tgz", + "integrity": "sha512-h6vrdfCE7qhflgZV41l7vAXUzvbt0ukuHrJ/9ByfNEWiCkNd7tW4FRKdJilWYzr6Nr69ddzMq6vtVFN0WUABUw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/hash-node": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.1.1.tgz", - "integrity": "sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA==", + "node_modules/@opentelemetry/instrumentation-mongoose": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.52.0.tgz", + "integrity": "sha512-qdpq/hZO353UpD5FxmBowpuI+HinPEOmi7feQzX9GO1PCTmlGGzaeQ8xwUX1eA0OKg0YDrKuiWsFxlLoOXsocw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "@smithy/util-buffer-from": "^4.1.0", - "@smithy/util-utf8": "^4.1.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", - "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", + "node_modules/@opentelemetry/instrumentation-mysql": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.51.0.tgz", + "integrity": "sha512-WBCG18gMo7rNem5CZ3uXpnfbdN6PLMg2ioikL7G/cHNzjbcvGGuf/x6vBNMdmOUqLSIeVgEtnbniCo/GOrWcgw==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.1.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/mysql": "2.15.27" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/invalid-dependency": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.1.1.tgz", - "integrity": "sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg==", + "node_modules/@opentelemetry/instrumentation-mysql2": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.52.0.tgz", + "integrity": "sha512-+yuck72xsX8QE0B4IJpLzmGiAz8yeLHfVHBkTOR3GKfLz4D88AUx7O3QJW/uqkQQSDQOJybRRazOZfhC1Bkz3A==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/sql-common": "^0.41.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", + "node_modules/@opentelemetry/instrumentation-nestjs-core": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.51.0.tgz", + "integrity": "sha512-Se/m4887W94OO12pjKMjI3398L7HCoWeCjcbwoPvNOWpSpMkljBOHA9vE/fyo63CaVG1XAM5xA4ad60wmJKl9A==", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.30.0" }, "engines": { - "node": ">=14.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/middleware-content-length": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.1.1.tgz", - "integrity": "sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w==", + "node_modules/@opentelemetry/instrumentation-net": { + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-net/-/instrumentation-net-0.49.0.tgz", + "integrity": "sha512-XmpRZa1uRlZ2qff0LYzALkBmzJsEJyaDKEw50C0MDrawg/p5z1/TOMwMIKPG2g1EgAW56+dl/WD8p70XyW08Qg==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.2.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/middleware-content-length/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", + "node_modules/@opentelemetry/instrumentation-oracledb": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-oracledb/-/instrumentation-oracledb-0.31.0.tgz", + "integrity": "sha512-CqjWWL1CEYR1ryBN6fCGWNhUS4rS+zNMLE/gYbpwJqH07QA6/Jt4ThbiOPujcq/PEQK3KuqoXeoGDCiI3YWMcQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/oracledb": "6.5.2" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/middleware-endpoint": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.2.1.tgz", - "integrity": "sha512-fUTMmQvQQZakXOuKizfu7fBLDpwvWZjfH6zUK2OLsoNZRZGbNUdNSdLJHpwk1vS208jtDjpUIskh+JoA8zMzZg==", + "node_modules/@opentelemetry/instrumentation-pg": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.58.0.tgz", + "integrity": "sha512-WHntZAorf6CZ0n5a3oHlwGkSeu5Xa4AiCmXkNTKg24TbYSFWzJUtWvPQSkxePvQ3ku71lhAY/M20WgwHlvpZpQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.11.0", - "@smithy/middleware-serde": "^4.1.1", - "@smithy/node-config-provider": "^4.2.1", - "@smithy/shared-ini-file-loader": "^4.1.1", - "@smithy/types": "^4.5.0", - "@smithy/url-parser": "^4.1.1", - "@smithy/util-middleware": "^4.1.1", - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.34.0", + "@opentelemetry/sql-common": "^0.41.0", + "@types/pg": "8.15.5", + "@types/pg-pool": "2.0.6" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/middleware-retry": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.2.1.tgz", - "integrity": "sha512-JzfvjwSJXWRl7LkLgIRTUTd2Wj639yr3sQGpViGNEOjtb0AkAuYqRAHs+jSOI/LPC0ZTjmFVVtfrCICMuebexw==", + "node_modules/@opentelemetry/instrumentation-pg/node_modules/@types/pg": { + "version": "8.15.5", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.5.tgz", + "integrity": "sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } + }, + "node_modules/@opentelemetry/instrumentation-pino": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pino/-/instrumentation-pino-0.52.0.tgz", + "integrity": "sha512-FLATUe4E1N/x2NkNyzXVGAIu8Jau6RitHmfIbCn3IL1gyuFT/aSlyc5z8HPotlonPZg5RAhp5rUcKiDKtuLY8Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.2.1", - "@smithy/protocol-http": "^5.2.1", - "@smithy/service-error-classification": "^4.1.1", - "@smithy/smithy-client": "^4.6.1", - "@smithy/types": "^4.5.0", - "@smithy/util-middleware": "^4.1.1", - "@smithy/util-retry": "^4.1.1", - "@types/uuid": "^9.0.1", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "@opentelemetry/api-logs": "^0.205.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/middleware-retry/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", + "node_modules/@opentelemetry/instrumentation-redis": { + "version": "0.54.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.54.1.tgz", + "integrity": "sha512-/hOkOa9uIpestrpKuVCNPLHYkSXY1sjsaiXZw/Srv5mzTjpybnDZs5MOCdsIADjFfaCg23sM/JmfIx6IhWgP0w==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/redis-common": "^0.38.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/middleware-serde": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.1.1.tgz", - "integrity": "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg==", + "node_modules/@opentelemetry/instrumentation-restify": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-restify/-/instrumentation-restify-0.51.0.tgz", + "integrity": "sha512-DR8rquJixfQJzbOoGXB5qs1tuL4hGh1II+fk2xtxSu3qmOcmNI8jihez2dYPN67iofuhX+DxqZgvTYSqx4REpQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.2.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/middleware-serde/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", + "node_modules/@opentelemetry/instrumentation-router": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-router/-/instrumentation-router-0.50.0.tgz", + "integrity": "sha512-tnEo9yoWUNgCm4FrizjINSTvkGOlS7pO0j+BUByRNf2sBvw8zpC3uG6C+8rg9f6Th5L+yZUU1W8Y6itWLNdh4g==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/middleware-stack": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.1.1.tgz", - "integrity": "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A==", + "node_modules/@opentelemetry/instrumentation-runtime-node": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-runtime-node/-/instrumentation-runtime-node-0.19.0.tgz", + "integrity": "sha512-rWlCcoroV3XlZ+YfTgVTO3Vq6nt61xjB1Or4C94g13Jf49zVi+QlipuEQRvMz8vsqtpxH21ZbAzCb1PcSsjT9g==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/node-config-provider": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.2.1.tgz", - "integrity": "sha512-AIA0BJZq2h295J5NeCTKhg1WwtdTA/GqBCaVjk30bDgMHwniUETyh5cP9IiE9VrId7Kt8hS7zvREVMTv1VfA6g==", + "node_modules/@opentelemetry/instrumentation-socket.io": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-socket.io/-/instrumentation-socket.io-0.52.0.tgz", + "integrity": "sha512-+dXOZGp2dHZ1+PaaebRKC4Hp5AIpryHbWIpZVmJ1mg3d24Xge2QZqOLjYF+3Z2s3IYSVp+j3uLef2vwg7e8+zQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.1.1", - "@smithy/shared-ini-file-loader": "^4.1.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/node-http-handler": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.2.1.tgz", - "integrity": "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw==", + "node_modules/@opentelemetry/instrumentation-tedious": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.24.0.tgz", + "integrity": "sha512-sOX7JaHzdYoaFmu2cHDcdKGJAvdEIrk/IB6uS5Tr28nSos3E+beGsWGbPPKRXJ6E97ubqS2c8YUH9W1ece1rOQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.1.1", - "@smithy/protocol-http": "^5.2.1", - "@smithy/querystring-builder": "^4.1.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/instrumentation": "^0.205.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/tedious": "^4.0.14" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/node-http-handler/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", + "node_modules/@opentelemetry/instrumentation-undici": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.16.0.tgz", + "integrity": "sha512-sky42QpDmsHbrmE02sCEk7kdug2uTB4w5OwLpfHKom/5vbzTJZDoaM68YpCq0vTQ9QwL/DIDGwjdaTcU+XXCxQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.205.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.7.0" } }, - "node_modules/@smithy/property-provider": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.1.1.tgz", - "integrity": "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg==", + "node_modules/@opentelemetry/instrumentation-winston": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-winston/-/instrumentation-winston-0.50.0.tgz", + "integrity": "sha512-RKcbKIwwKzT6RnNPo5yU6Zus5DYSysK5zr8dL+LU/8Qh8icV/U2rghFJzMI+t01GeirhwSJeuuWB28AdZvSnLQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/api-logs": "^0.205.0", + "@opentelemetry/instrumentation": "^0.205.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/protocol-http": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", - "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.205.0.tgz", + "integrity": "sha512-2MN0C1IiKyo34M6NZzD6P9Nv9Dfuz3OJ3rkZwzFmF6xzjDfqqCTatc9v1EpNfaP55iDOCLHFyYNCgs61FFgtUQ==", "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-transformer": "0.205.0" }, "engines": { - "node": ">=14.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/protocol-http/node_modules/@smithy/types": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", - "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "node_modules/@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.205.0.tgz", + "integrity": "sha512-AeuLfrciGYffqsp4EUTdYYc6Ee2BQS+hr08mHZk1C524SFWx0WnfcTnV0NFXbVURUNU6DZu1DhS89zRRrcx/hg==", "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { - "tslib": "^2.6.2" + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0" }, "engines": { - "node": ">=14.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/querystring-builder": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.1.1.tgz", - "integrity": "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA==", + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.205.0.tgz", + "integrity": "sha512-KmObgqPtk9k/XTlWPJHdMbGCylRAmMJNXIRh6VYJmvlRDMfe+DonH41G7eenG8t4FXn3fxOGh14o/WiMRR6vPg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "@smithy/util-uri-escape": "^4.1.0", - "tslib": "^2.6.2" + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-logs": "0.205.0", + "@opentelemetry/sdk-metrics": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", + "protobufjs": "^7.3.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/querystring-parser": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.1.1.tgz", - "integrity": "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng==", + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-logs": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.205.0.tgz", + "integrity": "sha512-nyqhNQ6eEzPWQU60Nc7+A5LIq8fz3UeIzdEVBQYefB4+msJZ2vuVtRuk9KxPMw1uHoHDtYEwkr2Ct0iG29jU8w==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, - "node_modules/@smithy/service-error-classification": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.1.1.tgz", - "integrity": "sha512-Iam75b/JNXyDE41UvrlM6n8DNOa/r1ylFyvgruTUx7h2Uk7vDNV9AAwP1vfL1fOL8ls0xArwEGVcGZVd7IO/Cw==", + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-metrics": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.1.0.tgz", + "integrity": "sha512-J9QX459mzqHLL9Y6FZ4wQPRZG4TOpMCyPOh6mkr/humxE1W2S3Bvf4i75yiMW9uyed2Kf5rxmLhTm/UK8vNkAw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.1.1.tgz", - "integrity": "sha512-YkpikhIqGc4sfXeIbzSj10t2bJI/sSoP5qxLue6zG+tEE3ngOBSm8sO3+djacYvS/R5DfpxN/L9CyZsvwjWOAQ==", + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@smithy/signature-v4": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.3.0.tgz", - "integrity": "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==", + "node_modules/@opentelemetry/propagator-b3": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-2.1.0.tgz", + "integrity": "sha512-yOdHmFseIChYanddMMz0mJIFQHyjwbNhoxc65fEAA8yanxcBPwoFDoh1+WBUWAO/Z0NRgk+k87d+aFIzAZhcBw==", "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "@smithy/types": "^2.12.0", - "@smithy/util-hex-encoding": "^2.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-uri-escape": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "2.1.0" }, "engines": { - "node": ">=14.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@smithy/signature-v4/node_modules/@smithy/types": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", - "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "node_modules/@opentelemetry/propagator-jaeger": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-2.1.0.tgz", + "integrity": "sha512-QYo7vLyMjrBCUTpwQBF/e+rvP7oGskrSELGxhSvLj5gpM0az9oJnu/0O4l2Nm7LEhAff80ntRYKkAcSwVgvSVQ==", "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { - "tslib": "^2.6.2" + "@opentelemetry/core": "2.1.0" }, "engines": { - "node": ">=14.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@smithy/signature-v4/node_modules/@smithy/util-hex-encoding": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", - "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", + "node_modules/@opentelemetry/redis-common": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.38.0.tgz", + "integrity": "sha512-4Wc0AWURII2cfXVVoZ6vDqK+s5n4K5IssdrlVrvGsx6OEOKdghKtJZqXAHWFiZv4nTDLH2/2fldjIHY8clMOjQ==", "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, "engines": { - "node": ">=14.0.0" + "node": "^18.19.0 || >=20.6.0" } }, - "node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", - "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==", + "node_modules/@opentelemetry/resource-detector-alibaba-cloud": { + "version": "0.31.5", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-alibaba-cloud/-/resource-detector-alibaba-cloud-0.31.5.tgz", + "integrity": "sha512-SVweVr/WWWQZVuBII7WlqIW2exT5bYZdLwuGEh3EAi5Y5mulY4KUzvW8Rx+NoFWd8wgEscCltxuztFhhnlQDWQ==", "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=14.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@smithy/signature-v4/node_modules/@smithy/util-uri-escape": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", - "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", + "node_modules/@opentelemetry/resource-detector-aws": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-aws/-/resource-detector-aws-2.5.0.tgz", + "integrity": "sha512-NI7by8oi4G03yQA/igYZLZhbKkEy9tn/9JOQsHCPaRTDjzW+VHNcP5BLJH0FEM0NJZm7Ue/59J1a1aTSNJSDuA==", "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=14.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@smithy/smithy-client": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.6.1.tgz", - "integrity": "sha512-WolVLDb9UTPMEPPOncrCt6JmAMCSC/V2y5gst2STWJ5r7+8iNac+EFYQnmvDCYMfOLcilOSEpm5yXZXwbLak1Q==", + "node_modules/@opentelemetry/resource-detector-azure": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-azure/-/resource-detector-azure-0.12.0.tgz", + "integrity": "sha512-U87/nRFthxoPxPJVOeqytf+M0X43Es1al7+K3+fAYQN4kEenahhA3TUZESl6MweEW8tejUxp7A0AjxWrydAWQg==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.11.0", - "@smithy/middleware-endpoint": "^4.2.1", - "@smithy/middleware-stack": "^4.1.1", - "@smithy/protocol-http": "^5.2.1", - "@smithy/types": "^4.5.0", - "@smithy/util-stream": "^4.3.1", - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@smithy/smithy-client/node_modules/@smithy/protocol-http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz", - "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==", + "node_modules/@opentelemetry/resource-detector-container": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-container/-/resource-detector-container-0.7.5.tgz", + "integrity": "sha512-oa2+suq7q2epLC1R+pp3rmel7sS6kc4lPe67lxNNVSJ2Bw23ZJatCeG4Fjb2enueDE70VhqPpslVef5hnw1mBA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@smithy/types": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.5.0.tgz", - "integrity": "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg==", + "node_modules/@opentelemetry/resource-detector-gcp": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-gcp/-/resource-detector-gcp-0.40.0.tgz", + "integrity": "sha512-uAsUV8K4R9OJ3cgPUGYDqQByxOMTz4StmzJyofIv7+W+c1dTSEc1WVjWpTS2PAmywik++JlSmd8O4rMRJZpO8Q==", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "gcp-metadata": "^6.0.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@smithy/url-parser": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.1.1.tgz", - "integrity": "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg==", + "node_modules/@opentelemetry/resources": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.1.0.tgz", + "integrity": "sha512-1CJjf3LCvoefUOgegxi8h6r4B/wLSzInyhGP2UmIBYNlo4Qk5CZ73e1eEyWmfXvFtm1ybkmfb2DqWvspsYLrWw==", "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.1.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@smithy/util-base64": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.1.0.tgz", - "integrity": "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ==", + "node_modules/@opentelemetry/sdk-node": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.205.0.tgz", + "integrity": "sha512-Y4Wcs8scj/Wy1u61pX1ggqPXPtCsGaqx/UnFu7BtRQE1zCQR+b0h56K7I0jz7U2bRlPUZIFdnNLtoaJSMNzz2g==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.1.0", - "@smithy/util-utf8": "^4.1.0", - "tslib": "^2.6.2" + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/exporter-logs-otlp-grpc": "0.205.0", + "@opentelemetry/exporter-logs-otlp-http": "0.205.0", + "@opentelemetry/exporter-logs-otlp-proto": "0.205.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.205.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.205.0", + "@opentelemetry/exporter-metrics-otlp-proto": "0.205.0", + "@opentelemetry/exporter-prometheus": "0.205.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.205.0", + "@opentelemetry/exporter-trace-otlp-http": "0.205.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.205.0", + "@opentelemetry/exporter-zipkin": "2.1.0", + "@opentelemetry/instrumentation": "0.205.0", + "@opentelemetry/propagator-b3": "2.1.0", + "@opentelemetry/propagator-jaeger": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-logs": "0.205.0", + "@opentelemetry/sdk-metrics": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", + "@opentelemetry/sdk-trace-node": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@smithy/util-base64/node_modules/@smithy/util-utf8": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", - "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-logs": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.205.0.tgz", + "integrity": "sha512-nyqhNQ6eEzPWQU60Nc7+A5LIq8fz3UeIzdEVBQYefB4+msJZ2vuVtRuk9KxPMw1uHoHDtYEwkr2Ct0iG29jU8w==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.1.0", - "tslib": "^2.6.2" + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, - "node_modules/@smithy/util-body-length-browser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.1.0.tgz", - "integrity": "sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ==", + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-metrics": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.1.0.tgz", + "integrity": "sha512-J9QX459mzqHLL9Y6FZ4wQPRZG4TOpMCyPOh6mkr/humxE1W2S3Bvf4i75yiMW9uyed2Kf5rxmLhTm/UK8vNkAw==", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, - "node_modules/@smithy/util-body-length-node": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.1.0.tgz", - "integrity": "sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ==", + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@smithy/util-buffer-from": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.1.0.tgz", - "integrity": "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw==", + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.1.0.tgz", + "integrity": "sha512-SvVlBFc/jI96u/mmlKm86n9BbTCbQ35nsPoOohqJX6DXH92K0kTe73zGY5r8xoI1QkjR9PizszVJLzMC966y9Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.1.0", - "tslib": "^2.6.2" + "@opentelemetry/context-async-hooks": "2.1.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.1.0.tgz", - "integrity": "sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==", + "node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@smithy/util-config-provider": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.1.0.tgz", - "integrity": "sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ==", + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.37.0.tgz", + "integrity": "sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==", "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">=14" } }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.1.1.tgz", - "integrity": "sha512-hA1AKIHFUMa9Tl6q6y8p0pJ9aWHCCG8s57flmIyLE0W7HcJeYrYtnqXDcGnftvXEhdQnSexyegXnzzTGk8bKLA==", + "node_modules/@opentelemetry/sql-common": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.41.0.tgz", + "integrity": "sha512-pmzXctVbEERbqSfiAgdes9Y63xjoOyXcD7B6IXBkVb+vbM7M9U98mn33nGXxPf4dfYR0M+vhcKRZmbSJ7HfqFA==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.1.1", - "@smithy/smithy-client": "^4.6.1", - "@smithy/types": "^4.5.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" + "@opentelemetry/core": "^2.0.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0" } }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.1.1.tgz", - "integrity": "sha512-RGSpmoBrA+5D2WjwtK7tto6Pc2wO9KSXKLpLONhFZ8VyuCbqlLdiDAfuDTNY9AJe4JoE+Cx806cpTQQoQ71zPQ==", - "license": "Apache-2.0", + "node_modules/@paralleldrive/cuid2": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", + "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "dev": true, "dependencies": { - "@smithy/config-resolver": "^4.2.1", - "@smithy/credential-provider-imds": "^4.1.1", - "@smithy/node-config-provider": "^4.2.1", - "@smithy/property-provider": "^4.1.1", - "@smithy/smithy-client": "^4.6.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" - }, + "@noble/hashes": "^1.1.5" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "license": "MIT", + "optional": true, "engines": { - "node": ">=18.0.0" + "node": ">=14" } }, - "node_modules/@smithy/util-endpoints": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.1.1.tgz", - "integrity": "sha512-qB4R9kO0SetA11Rzu6MVGFIaGYX3p6SGGGfWwsKnC6nXIf0n/0AKVwRTsYsz9ToN8CeNNtNgQRwKFBndGJZdyw==", - "license": "Apache-2.0", + "node_modules/@pkgr/core": { + "version": "0.2.4", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@scarf/scarf": { + "version": "1.4.0", + "hasInstallScript": true, + "license": "Apache-2.0" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@smithy/node-config-provider": "^4.2.1", - "@smithy/types": "^4.5.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "type-detect": "4.0.8" } }, - "node_modules/@smithy/util-hex-encoding": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.1.0.tgz", - "integrity": "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w==", - "license": "Apache-2.0", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@smithy/util-middleware": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.1.1.tgz", - "integrity": "sha512-CGmZ72mL29VMfESz7S6dekqzCh8ZISj3B+w0g1hZFXaOjGTVaSqfAEFAq8EGp8fUL+Q2l8aqNmt8U1tglTikeg==", + "node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@smithy/util-retry": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.1.1.tgz", - "integrity": "sha512-jGeybqEZ/LIordPLMh5bnmnoIgsqnp4IEimmUp5c5voZ8yx+5kAlN5+juyr7p+f7AtZTgvhmInQk4Q0UVbrZ0Q==", + "node_modules/@smithy/types": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.5.0.tgz", + "integrity": "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg==", "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.1.1", - "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-stream": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.3.1.tgz", - "integrity": "sha512-khKkW/Jqkgh6caxMWbMuox9+YfGlsk9OnHOYCGVEdYQb/XVzcORXHLYUubHmmda0pubEDncofUrPNniS9d+uAA==", + "node_modules/@smithy/util-buffer-from": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.1.0.tgz", + "integrity": "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw==", "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.2.1", - "@smithy/node-http-handler": "^4.2.1", - "@smithy/types": "^4.5.0", - "@smithy/util-base64": "^4.1.0", - "@smithy/util-buffer-from": "^4.1.0", - "@smithy/util-hex-encoding": "^4.1.0", - "@smithy/util-utf8": "^4.1.0", + "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8": { + "node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz", - "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.1.0.tgz", + "integrity": "sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-uri-escape": { + "node_modules/@smithy/util-hex-encoding": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.1.0.tgz", - "integrity": "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg==", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.1.0.tgz", + "integrity": "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -6889,6 +5280,12 @@ "devOptional": true, "license": "MIT" }, + "node_modules/@types/aws-lambda": { + "version": "8.10.152", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.152.tgz", + "integrity": "sha512-soT/c2gYBnT5ygwiHPmd9a1bftj462NWVk2tKCc1PYHSIacB2UwbTS2zYG4jzag1mRDuzg/OjtxQjQ2NKRB6Rw==", + "license": "MIT" + }, "node_modules/@types/babel__core": { "version": "7.20.5", "dev": true, @@ -6943,9 +5340,17 @@ "@types/node": "*" } }, + "node_modules/@types/bunyan": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/@types/bunyan/-/bunyan-1.8.11.tgz", + "integrity": "sha512-758fRH7umIMk5qt5ELmRMff4mLDlN+xyYzC+dkPTdKwbSkJFvz6xwyScrytPU0QIBbRRwbiE8/BIg8bpajerNQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/connect": { "version": "3.4.38", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -6965,14 +5370,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/debug": { - "version": "4.1.12", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/ms": "*" - } - }, "node_modules/@types/docker-modem": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.6.tgz", @@ -7109,6 +5506,15 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/memcached": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/@types/memcached/-/memcached-2.2.10.tgz", + "integrity": "sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/methods": { "version": "1.1.4", "dev": true, @@ -7119,11 +5525,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/ms": { - "version": "2.1.0", - "license": "MIT", - "peer": true - }, "node_modules/@types/multer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/multer/-/multer-2.0.0.tgz", @@ -7133,6 +5534,15 @@ "@types/express": "*" } }, + "node_modules/@types/mysql": { + "version": "2.15.27", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.27.tgz", + "integrity": "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/node": { "version": "24.1.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz", @@ -7142,15 +5552,6 @@ "undici-types": "~7.8.0" } }, - "node_modules/@types/node-fetch": { - "version": "2.6.12", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" - } - }, "node_modules/@types/nunjucks": { "version": "3.2.6", "dev": true, @@ -7164,6 +5565,15 @@ "@types/node": "*" } }, + "node_modules/@types/oracledb": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@types/oracledb/-/oracledb-6.5.2.tgz", + "integrity": "sha512-kK1eBS/Adeyis+3OlBDMeQQuasIDLUYXsi2T15ccNJ0iyUpQ4xDF7svFu3+bGVrI0CMBUclPciz+lsQR3JX3TQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/passport": { "version": "1.0.17", "dev": true, @@ -7213,7 +5623,6 @@ "version": "8.15.4", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.4.tgz", "integrity": "sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg==", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -7221,6 +5630,15 @@ "pg-types": "^2.2.0" } }, + "node_modules/@types/pg-pool": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz", + "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==", + "license": "MIT", + "dependencies": { + "@types/pg": "*" + } + }, "node_modules/@types/qs": { "version": "6.9.18", "dev": true, @@ -7231,10 +5649,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/retry": { - "version": "0.12.0", - "license": "MIT" - }, "node_modules/@types/send": { "version": "0.17.4", "dev": true, @@ -7311,17 +5725,24 @@ "@types/superagent": "^8.1.0" } }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", + "node_modules/@types/tedious": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", + "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==", "license": "MIT", - "peer": true + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/triple-beam": { "version": "1.3.5", "license": "MIT" }, "node_modules/@types/uuid": { - "version": "9.0.8", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/validator": { @@ -7927,6 +6348,7 @@ }, "node_modules/abort-controller": { "version": "3.0.0", + "dev": true, "license": "MIT", "dependencies": { "event-target-shim": "^5.0.0" @@ -7935,12 +6357,6 @@ "node": ">=6.5" } }, - "node_modules/abort-controller-x": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/abort-controller-x/-/abort-controller-x-0.4.3.tgz", - "integrity": "sha512-VtUwTNU8fpMwvWGn4xE93ywbogTYsuT+AUxAXOeelbXuQVIwNmC5YLeho9sH4vZ4ITW8414TTAOG1nW6uIVHCA==", - "license": "MIT" - }, "node_modules/accept-language-parser": { "version": "1.5.0", "license": "MIT" @@ -7960,7 +6376,6 @@ "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "devOptional": true, "bin": { "acorn": "bin/acorn" }, @@ -7968,6 +6383,15 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "dev": true, @@ -7995,17 +6419,6 @@ "node": ">= 14" } }, - "node_modules/agentkeepalive": { - "version": "4.6.0", - "license": "MIT", - "peer": true, - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, "node_modules/ai": { "version": "5.0.44", "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.44.tgz", @@ -8120,6 +6533,7 @@ }, "node_modules/ansi-styles": { "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -8493,6 +6907,7 @@ }, "node_modules/asynckit": { "version": "0.4.0", + "devOptional": true, "license": "MIT" }, "node_modules/available-typed-arrays": { @@ -8508,10 +6923,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws4fetch": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/aws4fetch/-/aws4fetch-1.0.20.tgz", + "integrity": "sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==", + "license": "MIT" + }, "node_modules/axios": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", + "devOptional": true, "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -8846,10 +7268,6 @@ "node": ">=18" } }, - "node_modules/bowser": { - "version": "2.11.0", - "license": "MIT" - }, "node_modules/boxen": { "version": "5.1.2", "license": "MIT", @@ -9281,7 +7699,6 @@ }, "node_modules/cjs-module-lexer": { "version": "1.4.3", - "dev": true, "license": "MIT" }, "node_modules/class-transformer": { @@ -9466,6 +7883,7 @@ }, "node_modules/combined-stream": { "version": "1.0.8", + "devOptional": true, "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" @@ -9656,15 +8074,6 @@ "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/console-table-printer": { - "version": "2.14.6", - "resolved": "https://registry.npmjs.org/console-table-printer/-/console-table-printer-2.14.6.tgz", - "integrity": "sha512-MCBl5HNVaFuuHW6FGbL/4fB7N/ormCy+tQ+sxTrF6QtSbSNETvPuOVbkJBhzDgYhvjWGrTma4eYJa37ZuoQsPw==", - "license": "MIT", - "dependencies": { - "simple-wcswidth": "^1.0.1" - } - }, "node_modules/console.table": { "version": "0.10.0", "dev": true, @@ -9851,15 +8260,6 @@ "devOptional": true, "license": "MIT" }, - "node_modules/cross-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", - "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "license": "MIT", @@ -9956,13 +8356,6 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/dedent": { "version": "1.6.0", "license": "MIT", @@ -9982,6 +8375,7 @@ }, "node_modules/deepmerge": { "version": "4.3.1", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10084,6 +8478,7 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -10499,6 +8894,7 @@ }, "node_modules/es-set-tostringtag": { "version": "2.1.0", + "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -10968,17 +9364,15 @@ }, "node_modules/event-target-shim": { "version": "5.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "license": "MIT" - }, "node_modules/events": { "version": "3.3.0", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.x" @@ -11252,26 +9646,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/fast-xml-parser": { - "version": "4.4.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "license": "MIT", - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", @@ -11294,36 +9668,6 @@ "version": "4.2.3", "license": "MIT" }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/fetch-blob/node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "engines": { - "node": ">= 8" - } - }, "node_modules/fflate": { "version": "0.8.2", "license": "MIT" @@ -11448,13 +9792,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat": { - "version": "5.0.2", - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, "node_modules/flat-cache": { "version": "4.0.1", "dev": true, @@ -11486,6 +9823,7 @@ }, "node_modules/follow-redirects": { "version": "1.15.9", + "devOptional": true, "funding": [ { "type": "individual", @@ -11598,6 +9936,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "devOptional": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -11610,13 +9949,9 @@ "node": ">= 6" } }, - "node_modules/form-data-encoder": { - "version": "1.7.2", - "license": "MIT", - "peer": true - }, "node_modules/form-data/node_modules/mime-db": { "version": "1.52.0", + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -11624,6 +9959,7 @@ }, "node_modules/form-data/node_modules/mime-types": { "version": "2.1.35", + "devOptional": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -11632,29 +9968,6 @@ "node": ">= 0.6" } }, - "node_modules/formdata-node": { - "version": "4.4.1", - "license": "MIT", - "peer": true, - "dependencies": { - "node-domexception": "1.0.0", - "web-streams-polyfill": "4.0.0-beta.3" - }, - "engines": { - "node": ">= 12.20" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/formidable": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", @@ -11679,6 +9992,12 @@ "node": ">= 0.6" } }, + "node_modules/forwarded-parse": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz", + "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==", + "license": "MIT" + }, "node_modules/fresh": { "version": "2.0.0", "license": "MIT", @@ -11764,54 +10083,33 @@ } }, "node_modules/gaxios": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.1.tgz", - "integrity": "sha512-Odju3uBUJyVCkW64nLD4wKLhbh93bh6vIg/ZIXkWiLPBrdgtc65+tls/qml+un3pr6JqYVFDZbbmLDQT68rTOQ==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "license": "Apache-2.0", "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", - "node-fetch": "^3.3.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/gaxios/node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/gaxios/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "node": ">=14" } }, "node_modules/gcp-metadata": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-7.0.1.tgz", - "integrity": "sha512-UcO3kefx6dCcZkgcTGgVOTFb7b1LlQ02hY1omMjjrrBzkajRMCFgYOjs7J71WqnuG1k2b+9ppGL7FsOfhZMQKQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", + "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", + "license": "Apache-2.0", "dependencies": { - "gaxios": "^7.0.0", - "google-logging-utils": "^1.0.0", + "gaxios": "^6.1.1", + "google-logging-utils": "^0.0.2", "json-bigint": "^1.0.0" }, "engines": { - "node": ">=18" + "node": ">=14" } }, "node_modules/gensync": { @@ -12001,36 +10299,20 @@ "license": "MIT", "dependencies": { "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/google-auth-library": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.1.0.tgz", - "integrity": "sha512-GspVjZj1RbyRWpQ9FbAXMKjFGzZwDKnUHi66JJ+tcjcu5/xYAP1pdlWotCuIkMwjfVsxxDvsGZXGLzRt72D0sQ==", - "dependencies": { - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "gaxios": "^7.0.0", - "gcp-metadata": "^7.0.0", - "google-logging-utils": "^1.0.0", - "gtoken": "^8.0.0", - "jws": "^4.0.0" + "gopd": "^1.0.1" }, "engines": { - "node": ">=18" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/google-logging-utils": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.1.tgz", - "integrity": "sha512-rcX58I7nqpu4mbKztFeOAObbomBbHU2oIb/d3tJfF3dizGSApqtSwYJigGCooHdnMyQBIw8BrWyK96w3YXgr6A==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz", + "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==", + "license": "Apache-2.0", "engines": { "node": ">=14" } @@ -12055,40 +10337,6 @@ "dev": true, "license": "MIT" }, - "node_modules/graphql": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz", - "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==", - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" - } - }, - "node_modules/graphql-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz", - "integrity": "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.2.0", - "cross-fetch": "^3.1.5" - }, - "peerDependencies": { - "graphql": "14 - 16" - } - }, - "node_modules/gtoken": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-8.0.0.tgz", - "integrity": "sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==", - "dependencies": { - "gaxios": "^7.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/has-bigints": { "version": "1.1.0", "dev": true, @@ -12238,137 +10486,6 @@ "node": ">=10.17.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/ibm-cloud-sdk-core": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-5.4.1.tgz", - "integrity": "sha512-kGh1KlkFHFsJANWiGTJZ5PNoL4bZHAGprAa/uSFvLpJdKUEOH+xUAUYcLMTH71jtgy9Wl2ePDjaLWiWe80uGiA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@types/debug": "^4.1.12", - "@types/node": "^18.19.80", - "@types/tough-cookie": "^4.0.0", - "axios": "^1.8.2", - "camelcase": "^6.3.0", - "debug": "^4.3.4", - "dotenv": "^16.4.5", - "extend": "3.0.2", - "file-type": "16.5.4", - "form-data": "^4.0.4", - "isstream": "0.1.2", - "jsonwebtoken": "^9.0.2", - "mime-types": "2.1.35", - "retry-axios": "^2.6.0", - "tough-cookie": "^4.1.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/ibm-cloud-sdk-core/node_modules/@types/node": { - "version": "18.19.100", - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/ibm-cloud-sdk-core/node_modules/file-type": { - "version": "16.5.4", - "license": "MIT", - "peer": true, - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/ibm-cloud-sdk-core/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ibm-cloud-sdk-core/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "peer": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ibm-cloud-sdk-core/node_modules/peek-readable": { - "version": "4.1.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/ibm-cloud-sdk-core/node_modules/strtok3": { - "version": "6.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/ibm-cloud-sdk-core/node_modules/token-types": { - "version": "4.2.1", - "license": "MIT", - "peer": true, - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/ibm-cloud-sdk-core/node_modules/undici-types": { - "version": "5.26.5", - "license": "MIT", - "peer": true - }, "node_modules/iconv-lite": { "version": "0.6.3", "license": "MIT", @@ -12399,7 +10516,7 @@ }, "node_modules/ignore": { "version": "5.3.2", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -12420,6 +10537,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-in-the-middle": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.14.2.tgz", + "integrity": "sha512-5tCuY9BV8ujfOpwtAGgsTx9CGUapcFMEEyByLv1B+v2+6DhAcw+Zr0nhQT7uwaZ7DiourxFEscghOR8e1aPLQw==", + "license": "Apache-2.0", + "dependencies": { + "acorn": "^8.14.0", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" + } + }, "node_modules/import-local": { "version": "3.2.0", "dev": true, @@ -12619,7 +10748,6 @@ }, "node_modules/is-core-module": { "version": "2.16.1", - "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -12986,11 +11114,6 @@ "version": "2.0.0", "license": "ISC" }, - "node_modules/isstream": { - "version": "0.1.2", - "license": "MIT", - "peer": true - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "dev": true, @@ -13794,13 +11917,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/js-tiktoken": { - "version": "1.0.20", - "license": "MIT", - "dependencies": { - "base64-js": "^1.5.1" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "dev": true, @@ -13900,13 +12016,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jsonwebtoken": { "version": "9.0.2", "license": "MIT", @@ -13975,114 +12084,6 @@ "version": "2.0.0", "license": "MIT" }, - "node_modules/langchain": { - "version": "0.3.34", - "resolved": "https://registry.npmjs.org/langchain/-/langchain-0.3.34.tgz", - "integrity": "sha512-OADHLQYRX+36EqQBxIoryCdMKfHex32cJBSWveadIIeRhygqivacIIDNwVjX51Y++c80JIdR0jaQHWn2r3H1iA==", - "license": "MIT", - "dependencies": { - "@langchain/openai": ">=0.1.0 <0.7.0", - "@langchain/textsplitters": ">=0.0.0 <0.2.0", - "js-tiktoken": "^1.0.12", - "js-yaml": "^4.1.0", - "jsonpointer": "^5.0.1", - "langsmith": "^0.3.67", - "openapi-types": "^12.1.3", - "p-retry": "4", - "uuid": "^10.0.0", - "yaml": "^2.2.1", - "zod": "^3.25.32" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/anthropic": "*", - "@langchain/aws": "*", - "@langchain/cerebras": "*", - "@langchain/cohere": "*", - "@langchain/core": ">=0.3.58 <0.4.0", - "@langchain/deepseek": "*", - "@langchain/google-genai": "*", - "@langchain/google-vertexai": "*", - "@langchain/google-vertexai-web": "*", - "@langchain/groq": "*", - "@langchain/mistralai": "*", - "@langchain/ollama": "*", - "@langchain/xai": "*", - "axios": "*", - "cheerio": "*", - "handlebars": "^4.7.8", - "peggy": "^3.0.2", - "typeorm": "*" - }, - "peerDependenciesMeta": { - "@langchain/anthropic": { - "optional": true - }, - "@langchain/aws": { - "optional": true - }, - "@langchain/cerebras": { - "optional": true - }, - "@langchain/cohere": { - "optional": true - }, - "@langchain/deepseek": { - "optional": true - }, - "@langchain/google-genai": { - "optional": true - }, - "@langchain/google-vertexai": { - "optional": true - }, - "@langchain/google-vertexai-web": { - "optional": true - }, - "@langchain/groq": { - "optional": true - }, - "@langchain/mistralai": { - "optional": true - }, - "@langchain/ollama": { - "optional": true - }, - "@langchain/xai": { - "optional": true - }, - "axios": { - "optional": true - }, - "cheerio": { - "optional": true - }, - "handlebars": { - "optional": true - }, - "peggy": { - "optional": true - }, - "typeorm": { - "optional": true - } - } - }, - "node_modules/langchain/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/langfuse": { "version": "3.38.5", "resolved": "https://registry.npmjs.org/langfuse/-/langfuse-3.38.5.tgz", @@ -14103,78 +12104,24 @@ "dependencies": { "mustache": "^4.2.0" }, - "engines": { - "node": ">=18" - } - }, - "node_modules/langfuse-langchain": { - "version": "3.38.5", - "resolved": "https://registry.npmjs.org/langfuse-langchain/-/langfuse-langchain-3.38.5.tgz", - "integrity": "sha512-wlA4ZdsWcBuETDLKaKVNoyzRPvLYgz5qsF5gf+JlOH+jzxBdLNbNrcIt/3gmvptQ016VhuOaaxFKwlS7JljlfQ==", - "license": "MIT", - "dependencies": { - "langfuse": "^3.38.5", - "langfuse-core": "^3.38.5" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "langchain": ">=0.0.157 <0.4.0" - } - }, - "node_modules/langsmith": { - "version": "0.3.68", - "resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.3.68.tgz", - "integrity": "sha512-Yx4fnyTjrPKtqH2ax9nb6Ua6XAMYkafKkOLMcTzbJ/w+Yu3V6JjE+vabl/Q600oC53bo3hg6ourI4/KdZVXr4A==", - "license": "MIT", - "dependencies": { - "@types/uuid": "^10.0.0", - "chalk": "^4.1.2", - "console-table-printer": "^2.12.1", - "p-queue": "^6.6.2", - "p-retry": "4", - "semver": "^7.6.3", - "uuid": "^10.0.0" - }, - "peerDependencies": { - "@opentelemetry/api": "*", - "@opentelemetry/exporter-trace-otlp-proto": "*", - "@opentelemetry/sdk-trace-base": "*", - "openai": "*" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@opentelemetry/exporter-trace-otlp-proto": { - "optional": true - }, - "@opentelemetry/sdk-trace-base": { - "optional": true - }, - "openai": { - "optional": true - } - } - }, - "node_modules/langsmith/node_modules/@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "license": "MIT" - }, - "node_modules/langsmith/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "engines": { + "node": ">=18" + } + }, + "node_modules/langfuse-vercel": { + "version": "3.38.5", + "resolved": "https://registry.npmjs.org/langfuse-vercel/-/langfuse-vercel-3.38.5.tgz", + "integrity": "sha512-Kst5kLVhYppMYIO3zmfrkO9MF/SBI/yDaUDqh6IRRK7YEsS3dO70LiXAwBULt8VD8WsZr7ICoqXG405CoWwtJw==", "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "langfuse": "^3.38.5", + "langfuse-core": "^3.38.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "ai": ">=3.2.44" } }, "node_modules/lazystream": { @@ -14533,6 +12480,12 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, + "node_modules/module-details-from-path": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "license": "MIT" @@ -14612,6 +12565,8 @@ }, "node_modules/mustache": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", "license": "MIT", "bin": { "mustache": "bin/mustache" @@ -14704,36 +12659,6 @@ "node": ">= 0.4.0" } }, - "node_modules/nice-grpc": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/nice-grpc/-/nice-grpc-2.1.12.tgz", - "integrity": "sha512-J1n4Wg+D3IhRhGQb+iqh2OpiM0GzTve/kf2lnlW4S+xczmIEd0aHUDV1OsJ5a3q8GSTqJf+s4Rgg1M8uJltarw==", - "license": "MIT", - "dependencies": { - "@grpc/grpc-js": "^1.13.1", - "abort-controller-x": "^0.4.0", - "nice-grpc-common": "^2.0.2" - } - }, - "node_modules/nice-grpc-client-middleware-retry": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/nice-grpc-client-middleware-retry/-/nice-grpc-client-middleware-retry-3.1.11.tgz", - "integrity": "sha512-xW/imz/kNG2g0DwTfH2eYEGrg1chSLrXtvGp9fg2qkhTgGFfAS/Pq3+t+9G8KThcC4hK/xlEyKvZWKk++33S6A==", - "license": "MIT", - "dependencies": { - "abort-controller-x": "^0.4.0", - "nice-grpc-common": "^2.0.2" - } - }, - "node_modules/nice-grpc-common": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/nice-grpc-common/-/nice-grpc-common-2.0.2.tgz", - "integrity": "sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ==", - "license": "MIT", - "dependencies": { - "ts-error": "^1.0.6" - } - }, "node_modules/node-abort-controller": { "version": "3.1.1", "dev": true, @@ -14746,23 +12671,6 @@ "node": "^18 || ^20 || >= 21" } }, - "node_modules/node-domexception": { - "version": "1.0.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } - }, "node_modules/node-emoji": { "version": "1.11.0", "dev": true, @@ -14951,13 +12859,20 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ollama": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/ollama/-/ollama-0.5.17.tgz", - "integrity": "sha512-q5LmPtk6GLFouS+3aURIVl+qcAOPC4+Msmx7uBb3pd+fxI55WnGjmLZ0yijI/CYy79x0QPGx3BwC3u5zv9fBvQ==", - "license": "MIT", + "node_modules/ollama-ai-provider-v2": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ollama-ai-provider-v2/-/ollama-ai-provider-v2-1.3.1.tgz", + "integrity": "sha512-UfDX40h2uz/mHjvjFapQIrPzb7h+QQuq0j8OxYLWXMz6Z5CCydmI5l4oLQtZm/lZijisF3zaG1EkIPNzOVDMcw==", + "license": "Apache-2.0", "dependencies": { - "whatwg-fetch": "^3.6.20" + "@ai-sdk/provider": "^2.0.0", + "@ai-sdk/provider-utils": "^3.0.7" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^4.0.16" } }, "node_modules/on-finished": { @@ -15046,10 +12961,6 @@ } } }, - "node_modules/openapi-types": { - "version": "12.1.3", - "license": "MIT" - }, "node_modules/optionator": { "version": "0.9.4", "dev": true, @@ -15112,13 +13023,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/p-limit": { "version": "3.1.0", "dev": true, @@ -15147,41 +13051,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-queue": { - "version": "6.6.2", - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "4.6.2", - "license": "MIT", - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-try": { "version": "2.2.0", "dev": true, @@ -15360,7 +13229,6 @@ }, "node_modules/path-parse": { "version": "1.0.7", - "dev": true, "license": "MIT" }, "node_modules/path-scurry": { @@ -15588,49 +13456,6 @@ "node": ">=8" } }, - "node_modules/playwright": { - "version": "1.52.0", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "playwright-core": "1.52.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.52.0", - "license": "Apache-2.0", - "peer": true, - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/playwright/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/pluralize": { "version": "8.0.0", "dev": true, @@ -15734,6 +13559,7 @@ }, "node_modules/process": { "version": "0.11.10", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6.0" @@ -15866,19 +13692,9 @@ }, "node_modules/proxy-from-env": { "version": "1.1.0", + "devOptional": true, "license": "MIT" }, - "node_modules/psl": { - "version": "1.15.0", - "license": "MIT", - "peer": true, - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, "node_modules/pump": { "version": "3.0.2", "dev": true, @@ -15923,11 +13739,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "license": "MIT", - "peer": true - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -16008,44 +13819,6 @@ "dev": true, "license": "MIT" }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.4", - "license": "MIT", - "peer": true, - "dependencies": { - "readable-stream": "^4.7.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { - "version": "4.7.0", - "license": "MIT", - "peer": true, - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/readable-web-to-node-stream/node_modules/string_decoder": { - "version": "1.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/readdir-glob": { "version": "1.1.3", "dev": true, @@ -16162,14 +13935,22 @@ "node": ">=0.10.0" } }, - "node_modules/requires-port": { - "version": "1.0.0", + "node_modules/require-in-the-middle": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz", + "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==", "license": "MIT", - "peer": true + "dependencies": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.8" + }, + "engines": { + "node": ">=8.6.0" + } }, "node_modules/resolve": { "version": "1.22.10", - "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", @@ -16238,24 +14019,6 @@ "dev": true, "license": "ISC" }, - "node_modules/retry": { - "version": "0.13.1", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/retry-axios": { - "version": "2.6.0", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=10.7.0" - }, - "peerDependencies": { - "axios": "*" - } - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -16680,12 +14443,6 @@ "version": "0.3.2", "license": "MIT" }, - "node_modules/simple-wcswidth": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/simple-wcswidth/-/simple-wcswidth-1.1.2.tgz", - "integrity": "sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw==", - "license": "MIT" - }, "node_modules/sisteransi": { "version": "1.0.5", "dev": true, @@ -17048,16 +14805,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strnum": { - "version": "1.1.2", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT" - }, "node_modules/strtok3": { "version": "10.2.2", "license": "MIT", @@ -17119,7 +14866,6 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -17496,28 +15242,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/tr46": { "version": "0.0.3", "license": "MIT" @@ -17548,12 +15272,6 @@ "typescript": ">=4.8.4" } }, - "node_modules/ts-error": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/ts-error/-/ts-error-1.0.6.tgz", - "integrity": "sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==", - "license": "MIT" - }, "node_modules/ts-jest": { "version": "29.4.0", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.0.tgz", @@ -18224,15 +15942,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "license": "MIT", - "peer": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "license": "MIT" @@ -18246,6 +15955,8 @@ }, "node_modules/uuid": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -18315,33 +16026,6 @@ "defaults": "^1.0.3" } }, - "node_modules/weaviate-client": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/weaviate-client/-/weaviate-client-3.5.5.tgz", - "integrity": "sha512-wAjJtJmBQn2KiTPkfUGEzddBIbySpN0y0wAcYPWDCBXVjXqf0UOExujFJ+QeeRp+AjHk15B6BmUaUX9NHVLzsw==", - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "abort-controller-x": "^0.4.3", - "graphql": "^16.10.0", - "graphql-request": "^6.1.0", - "long": "^5.2.4", - "nice-grpc": "^2.1.11", - "nice-grpc-client-middleware-retry": "^3.1.10", - "nice-grpc-common": "^2.0.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/web-streams-polyfill": { - "version": "4.0.0-beta.3", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 14" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "license": "BSD-2-Clause" @@ -18522,12 +16206,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", - "license": "MIT" - }, "node_modules/whatwg-url": { "version": "5.0.0", "license": "MIT", @@ -18822,26 +16500,6 @@ "dev": true, "license": "ISC" }, - "node_modules/ws": { - "version": "8.18.2", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/wsl-utils": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", @@ -18883,6 +16541,7 @@ }, "node_modules/yaml": { "version": "2.7.1", + "dev": true, "license": "ISC", "bin": { "yaml": "bin.mjs" diff --git a/backend/package.json b/backend/package.json index 2a0e8cc8c..4b18ad611 100644 --- a/backend/package.json +++ b/backend/package.json @@ -16,12 +16,9 @@ "start:prod": "node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\"", "lint:fix": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", - "test": "jest --forceExit", - "test:ci:unit": "jest --coverage --selectProjects='Unit Tests'", - "test:ci:e2e": "jest --coverage --selectProjects='E2E Tests' --forceExit", - "test:watch": "jest --watch", - "test:cov": "jest --coverage --forceExit", - "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "test": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest --runInBand --forceExit", + "test:cov": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest --runInBand --coverage --forceExit", + "test:debug": "node --experimental-vm-modules --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "generate-openapi-dev": "npm run build && node dist/openapi.js -- localFile && npx prettier --write backend-dev-spec.json", "generate-base": "npx @openapitools/openapi-generator-cli generate -g typescript-fetch --additional-properties=useSingleRequestParameter=false,ensureUniqueParams=false", "generate-tools": "npx rimraf ./src/extensions/tools/generated && npm run generate-base -- -i ./src/openapi/tools-spec.json -o ./src/extensions/tools/generated", @@ -38,18 +35,16 @@ "migration:revert": "npm run typeorm -- -d src/config/typeorm-migration.config.ts migration:revert" }, "dependencies": { + "@ai-sdk/amazon-bedrock": "^3.0.22", + "@ai-sdk/azure": "^2.0.30", + "@ai-sdk/google": "^2.0.14", + "@ai-sdk/google-vertex": "^3.0.27", + "@ai-sdk/mistral": "^2.0.14", + "@ai-sdk/openai": "^2.0.30", "@ai-sdk/openai-compatible": "^1.0.17", "@azure/ai-agents": "^1.1.0", "@azure/core-util": "^1.13.0", "@azure/identity": "^4.11.0", - "@langchain/aws": "0.1.15", - "@langchain/community": "^0.3.56", - "@langchain/core": "^0.3.77", - "@langchain/google-genai": "^0.2.18", - "@langchain/google-vertexai": "^0.2.18", - "@langchain/mistralai": "^0.2.1", - "@langchain/ollama": "^0.2.4", - "@langchain/openai": "^0.6.12", "@modelcontextprotocol/sdk": "^1.17.0", "@n8n/json-schema-to-zod": "^1.1.0", "@nestjs/common": "^11.1.3", @@ -61,6 +56,8 @@ "@nestjs/swagger": "^11.1.6", "@nestjs/terminus": "^11.0.0", "@nestjs/typeorm": "^11.0.0", + "@opentelemetry/auto-instrumentations-node": "^0.64.1", + "@opentelemetry/sdk-node": "^0.205.0", "@willsoto/nestjs-prometheus": "^6.0.2", "ai": "^5.0.44", "bcrypt": "^6.0.0", @@ -73,12 +70,12 @@ "expr-eval": "^2.0.2", "express-session": "^1.18.2", "json-diff-ts": "^4.6.3", - "langchain": "^0.3.34", - "langfuse-langchain": "^3.38.5", + "langfuse-vercel": "^3.38.5", "logform": "^2.7.0", "nest-winston": "^1.10.2", "nestjs-i18n": "^10.5.1", "nunjucks": "^3.2.4", + "ollama-ai-provider-v2": "^1.3.1", "openai": "5.12.2", "passport-custom": "^1.1.1", "passport-github2": "^0.1.12", @@ -91,6 +88,7 @@ "rxjs": "^7.8.2", "typeorm": "^0.3.25", "undici": "^7.11.0", + "uuid": "^9.0.1", "winston": "^3.17.0", "zod": "3.25.51" }, @@ -117,6 +115,7 @@ "@types/passport-microsoft": "2.1.0", "@types/pg": "8.15.4", "@types/supertest": "6.0.3", + "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "8.33.1", "@typescript-eslint/parser": "8.35.1", "eslint": "9.32.0", @@ -138,9 +137,6 @@ "typescript": "5.8.3" }, "overrides": { - "@browserbasehq/stagehand@1.14.0": { - "openai": "^5.8.2" - }, "zod": "3.25.51" } } diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index ada8abe19..fb04114d3 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -30,6 +30,7 @@ import { SettingsModule } from './domain/settings'; import { UsersModule } from './domain/users/module'; import { ExtensionLibraryModule } from './extensions'; import { I18nModule } from './localization/i18n.module'; +import { OpenTelemetryModule } from './metrics/opentelemetry.module'; import { PrometheusModule } from './metrics/prometheus.module'; @Module({ @@ -50,6 +51,7 @@ import { PrometheusModule } from './metrics/prometheus.module'; }), PrometheusModule.forRoot(), PromptModule, + OpenTelemetryModule, SettingsModule, UsersModule, TerminusModule, diff --git a/backend/src/domain/chat/interfaces.ts b/backend/src/domain/chat/interfaces.ts index af7636522..c8f9ef13d 100644 --- a/backend/src/domain/chat/interfaces.ts +++ b/backend/src/domain/chat/interfaces.ts @@ -1,9 +1,3 @@ -import { type BaseCallbackHandler, type CallbackHandlerMethods } from '@langchain/core/callbacks/base'; -import { type BaseListChatMessageHistory } from '@langchain/core/chat_history'; -import { type BaseChatModel, type BaseChatModelCallOptions } from '@langchain/core/language_models/chat_models'; -import { type ChatPromptTemplate } from '@langchain/core/prompts'; -import { type RunnableSequence } from '@langchain/core/runnables'; -import { StructuredTool, type StructuredToolInterface } from '@langchain/core/tools'; import { CallSettings, LanguageModel } from 'ai'; import { Subject } from 'rxjs'; import * as z from 'zod'; @@ -68,41 +62,88 @@ export interface ChatUI { form(text: string, schema: ExtensionArgument): Promise; } -export interface AgentArgument { - llm: BaseChatModel; - tools: StructuredToolInterface[]; - prompt: ChatPromptTemplate; - streamRunnable?: boolean; +export abstract class BaseMessage { + role!: 'assistant' | 'user'; + content: string; + constructor(content: string) { + this.content = content; + } + getType(): 'ai' | 'human' { + if (this.isHuman()) { + return 'human'; + } + return 'ai'; + } + getRole(): 'assistant' | 'user' { + return this.role; + } + isHuman(): this is HumanMessage { + return this.role === 'user'; + } + isAI(): this is AIMessage { + return this.role === 'assistant'; + } } -export interface MessagesHistory { - addSources(externalExtensionId: string, sources: Source[]): void; +export class AIMessage extends BaseMessage { + readonly role = 'assistant' as const; + constructor(content: string) { + super(content); + } +} + +export class HumanMessage extends BaseMessage { + readonly role = 'user' as const; + constructor(content: string) { + super(content); + } +} + +export abstract class MessagesHistory { + /** Returns a list of messages stored in the store. */ + public abstract getMessages(): Promise; + /** Add a message object to the store. */ + public abstract addMessage(message: BaseMessage): Promise; + /** Add source annotations. */ + public abstract addSources(externalExtensionId: string, sources: Source[]): void; + + public addUserMessage(message: string): Promise { + return this.addMessage(new HumanMessage(message)); + } + public addAIMessage(message: string): Promise { + return this.addMessage(new AIMessage(message)); + } + public async addMessages(messages: BaseMessage[]): Promise { + for (const message of messages) { + await this.addMessage(message); + } + } } export interface LanguageModelContext { model: LanguageModel; options: Partial; -} - -export function isLanguageModelContext(instance: BaseChatModel | LanguageModelContext): instance is LanguageModelContext { - return (instance as BaseChatModel).invoke == null; + // metadata (e.g. for usage counting) + modelName: string; + providerName: string; } export abstract class NamedStructuredTool< T extends z.ZodRawShape = z.ZodRawShape, TSchema extends z.ZodObject = z.ZodObject, TToolOutput = string | Record | undefined | void, -> extends StructuredTool { +> { abstract displayName: string; abstract schema: TSchema; + abstract name: string; + abstract description: string; + + protected abstract _call(arg: z.infer): Promise; + execute(input: z.infer): Promise { return this._call(input); } - - get lc_id() { - return [...this.lc_namespace, this.name]; - } } export type NamedDynamicStructuredToolInput, TToolOutput> = { @@ -127,7 +168,7 @@ export class NamedDynamicStructuredTool< returnDirect: boolean; constructor({ displayName, func, schema, ...toolInput }: NamedDynamicStructuredToolInput) { - super({}); + super(); this.displayName = displayName; this.func = func; this.schema = schema; @@ -175,9 +216,6 @@ export interface ChatContext { // The context values. readonly context: ConversationContext; - // The callbacks for the chain. - readonly callbacks: (BaseCallbackHandler | CallbackHandlerMethods)[]; - // Configures the summary generation. summaryConfig?: { prompt: string; historyLength?: number }; @@ -188,12 +226,7 @@ export interface ChatContext { user: User; // LLM to use as the agent. - llms: Record | LanguageModelContext>; - - agentFactory?: (args: AgentArgument) => Promise | RunnableSequence; - - // The prompt to use, must have an input key. - prompt?: ChatPromptTemplate; + llms: Record; // The chosen LLM. llm?: string; @@ -202,7 +235,10 @@ export interface ChatContext { tokenUsage?: TokenUsage; // The history of previous messages - history?: BaseListChatMessageHistory & MessagesHistory; + history?: MessagesHistory; + + // whether open telemetry is enabled + telemetry?: boolean; } export interface TokenUsage { diff --git a/backend/src/domain/chat/middlewares/default-prompt-middleware.ts b/backend/src/domain/chat/middlewares/default-prompt-middleware.ts index 96cd14457..35797fe7f 100644 --- a/backend/src/domain/chat/middlewares/default-prompt-middleware.ts +++ b/backend/src/domain/chat/middlewares/default-prompt-middleware.ts @@ -1,4 +1,3 @@ -import { ChatPromptTemplate, MessagesPlaceholder } from '@langchain/core/prompts'; import { Injectable } from '@nestjs/common'; import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from '../interfaces'; import { ExecuteMiddleware } from './execute-middleware'; @@ -8,30 +7,9 @@ export class DefaultPromptMiddleware implements ChatMiddleware { order = ExecuteMiddleware.ORDER - 10; async invoke(context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise { - if (context.prompt) { - await next(context); - return; - } - if (context.systemMessages.length === 0) { context.systemMessages.push(`You are a helpful assistant. Today is ${new Date().toISOString()}.`); } - - const messages: Parameters[0] = [ - ...context.systemMessages.map((x) => ({ - role: 'system', - content: x, - })), - - new MessagesPlaceholder('chat_history'), - ['human', '{input}'], - ]; - - if (context.tools.length) { - messages.push(new MessagesPlaceholder('agent_scratchpad')); - } - - context.prompt = ChatPromptTemplate.fromMessages(messages); await next(context); } } diff --git a/backend/src/domain/chat/middlewares/execute-middleware.ts b/backend/src/domain/chat/middlewares/execute-middleware.ts index c1bf8fa91..32d586782 100644 --- a/backend/src/domain/chat/middlewares/execute-middleware.ts +++ b/backend/src/domain/chat/middlewares/execute-middleware.ts @@ -1,28 +1,11 @@ -import type { BaseChatModel } from '@langchain/core/language_models/chat_models'; -import { BaseMessage, MessageContent } from '@langchain/core/messages'; -import { ChatGenerationChunk } from '@langchain/core/outputs'; -import { Runnable, RunnableWithMessageHistory } from '@langchain/core/runnables'; -import { StructuredToolInterface } from '@langchain/core/tools'; import { Injectable, Logger } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; import { stepCountIs, streamText, tool, ToolSet } from 'ai'; -import { AgentExecutor, AgentExecutorInput, createOpenAIToolsAgent } from 'langchain/agents'; import { I18nService } from '../../../localization/i18n.service'; import { MetricsService } from '../../../metrics/metrics.service'; -import { - ChatContext, - ChatError, - ChatMiddleware, - isLanguageModelContext, - LanguageModelContext, - NamedStructuredTool, - NormalizedMessageContents, -} from '../interfaces'; -import { getReasoningContent, normalizedMessageContent } from '../utils'; +import { ChatContext, ChatError, ChatMiddleware, LanguageModelContext, NamedStructuredTool } from '../interfaces'; -type EventActionType = 'start' | 'stream' | 'end'; -type EventContextType = 'llm' | 'chat_model' | 'prompt' | 'tool' | 'chain'; -type EventType = `on_${EventContextType}_${EventActionType}`; +// this is the general structure of how AI SDK wraps errors +type GenericAIError = { data: { error: unknown } }; @Injectable() export class ExecuteMiddleware implements ChatMiddleware { @@ -30,7 +13,6 @@ export class ExecuteMiddleware implements ChatMiddleware { logger = new Logger(ExecuteMiddleware.name); constructor( - private readonly configService: ConfigService, private readonly i18n: I18nService, private readonly metricsService: MetricsService, ) {} @@ -57,14 +39,14 @@ export class ExecuteMiddleware implements ChatMiddleware { const messages = await history?.getMessages(); - const mapTool = (langchainTool: NamedStructuredTool) => { + const mapTool = (namedTool: NamedStructuredTool) => { return { - name: langchainTool.name, + name: namedTool.name, tool: tool({ - name: langchainTool.name, - inputSchema: langchainTool.schema, - execute: (input) => langchainTool.execute(input), - description: langchainTool.description, + name: namedTool.name, + inputSchema: namedTool.schema, + execute: (input) => namedTool.execute(input), + description: namedTool.description, }), }; }; @@ -75,35 +57,37 @@ export class ExecuteMiddleware implements ChatMiddleware { return prev; }, {} as ToolSet); - const mapBaseMessage = (message: BaseMessage) => { - const normalized = normalizedMessageContent(message.content)?.[0]; - const text = normalized?.type === 'text' ? normalized.text : ''; - - const type = message.getType(); - switch (type) { - case 'human': - return { role: 'user' as const, content: text }; - case 'system': - return { role: 'system' as const, content: text }; - case 'ai': - return { role: 'assistant' as const, content: text }; - } - }; - - const { fullStream, text } = streamText({ + const { fullStream } = streamText({ model: llm.model, tools: allTools, toolChoice: 'auto', prompt: [ ...systemMessages.map((x) => ({ role: 'system' as const, content: x })), - ...(messages?.map((x) => mapBaseMessage(x)).filter((x) => !!x) ?? []), + ...(messages?.filter((x) => !!x) ?? []), { role: 'user' as const, content: input }, ], ...llm.options, abortSignal: abort.signal, stopWhen: stepCountIs(1000), + onFinish: ({ totalUsage }) => { + const totalTokens = totalUsage.totalTokens ?? 0; + context.tokenUsage ??= { tokenCount: 0, model: llm.modelName, llm: llm.providerName }; + context.tokenUsage.tokenCount += totalTokens; + }, + experimental_telemetry: { + isEnabled: context.telemetry ?? false, + metadata: { + conversationId: context.conversationId, + assistantId: context.configuration.id, + assistantName: context.configuration.name, + modelName: llm.modelName, + providerName: llm.providerName, + }, + }, }); + let error: GenericAIError | null = null; + const text: string[] = []; for await (const event of fullStream) { if (event.type === 'tool-call') { const toolName = tools.find((x) => x.name === event.toolName)?.displayName ?? event.toolName; @@ -114,8 +98,9 @@ export class ExecuteMiddleware implements ChatMiddleware { result.next({ type: 'tool_end', tool: { name: toolName } }); } if (event.type === 'tool-error') { - console.log({ event }); + this.logger.error({ event }); const toolName = tools.find((x) => x.name === event.toolName)?.displayName ?? event.toolName; + // TODO: maybe add a `tool_error` event type and indicate errors in the ui result.next({ type: 'tool_end', tool: { name: toolName } }); } if (event.type === 'reasoning-delta') { @@ -125,149 +110,20 @@ export class ExecuteMiddleware implements ChatMiddleware { result.next({ type: 'reasoning_end' }); } if (event.type === 'text-delta') { + text.push(event.text); result.next({ type: 'chunk', content: [{ type: 'text', text: event.text }] }); } - } - - await history?.addAIMessage(await text); - } - - async handleLangChainExecution(llm: BaseChatModel, context: ChatContext) { - const shouldLogLLMAgent = this.configService.get('LOG_LLM_AGENT', 'false'); - const { agentFactory, input, result, prompt, tools, history } = context; - let runnable: Runnable; - - if (!prompt) { - throw new ChatError(this.i18n.t('texts.chat.errorMissingPrompt')); - } - - if (tools.length > 0) { - const agent = await (agentFactory ?? createOpenAIToolsAgent)({ - llm, - tools, - prompt, - }); - - runnable = new HackingAgentExecutor({ - agent, - tools, - verbose: shouldLogLLMAgent === 'true', - }); - } else { - runnable = prompt.pipe(llm); - } - - // This class is not properly documented in langchain but it works after a lot of testing. - const agentWithChatHistory = history - ? new RunnableWithMessageHistory({ - runnable, - // We don't need the session ID because we create the agent per call. - getMessageHistory: () => history, - // Uses the key to calculate the diff between all messages and input messages. - inputMessagesKey: 'input', - // Used to inject the history into the prompt. - historyMessagesKey: 'chat_history', - }) - : runnable; - - const stream = agentWithChatHistory.streamEvents( - { - input, - }, - { - version: 'v1', - configurable: { - sessionId: context.conversationId.toString(), - }, - callbacks: context.callbacks, - }, - ); - - // Stores the last result in case streaming is not supported. - let lastResult: NormalizedMessageContents | undefined; - let hasBeenStreamed = false; - let hasBeenStarted = false; - let hasLlmStream = false; - let hasChainStream = false; - - const getToolName = (toolId: string) => tools.find((x) => x.name === toolId)?.displayName || toolId; - - let isReasoning = false; - const handleReasoning = (chunk: ChatGenerationChunk | MessageContent) => { - const reasoningContent = getReasoningContent(chunk); - if (reasoningContent?.length) { - isReasoning = true; - result.next({ type: 'reasoning', content: reasoningContent }); - } else if (isReasoning) { - isReasoning = false; - result.next({ type: 'reasoning_end' }); - } - }; - - for await (const event of stream) { - const eventType = event.event as EventType; - - if (eventType === 'on_llm_start') { - hasBeenStarted = true; - } else if (hasBeenStarted && eventType === 'on_llm_stream' && !hasChainStream) { - hasLlmStream = true; - const chunk = event.data?.chunk as ChatGenerationChunk; - const content = normalizedMessageContent(chunk); - handleReasoning(chunk); - - // Content can either be a string or an array of objects. - if (content.length > 0) { - result.next({ type: 'chunk', content }); - hasBeenStreamed = true; - } - } else if (hasBeenStarted && eventType === 'on_chain_stream' && !hasLlmStream) { - hasChainStream = true; - const chunk = event.data?.chunk as ChatGenerationChunk; - const content = normalizedMessageContent(chunk); - handleReasoning(chunk); - - // Content can either be a string or an array of objects. - if (content.length > 0) { - result.next({ type: 'chunk', content }); - hasBeenStreamed = true; - } - } else if (eventType === 'on_chain_end' && !!event.data.output) { - const output = event.data.output as MessageContent; - const result = normalizedMessageContent(output); - handleReasoning(result); - - if (result.length > 0) { - lastResult = result; - } - } else if (eventType === 'on_tool_start') { - const toolName = getToolName(event.name); - result.next({ type: 'tool_start', tool: { name: toolName } }); - } else if (eventType === 'on_tool_end') { - if (this.configService.get('LOG_RAG_CHUNKS', 'false') === 'true') { - try { - const chunks = JSON.parse(event.data.output as string) as { content: string; metadata: Record }[]; - this.logger.log('==============RAG DEBUG=============='); - this.logger.log('Query: ' + event.data.input); - this.logger.log('Num of chunks ' + chunks.length); - chunks.forEach((chunk: { content: string; metadata: Record }) => { - this.logger.log(JSON.stringify(chunk, null, 2)); - this.logger.log('-----------------------------'); - }); - this.logger.log('====================================='); - - result.next({ type: 'logging', content: createLoggingChunks(chunks) }); - } catch (ex) { - this.logger.error('Log for RAG Chunks failed\n Cause: ', ex); - } - } - - result.next({ type: 'tool_end', tool: { name: getToolName(event.name) } }); + if (event.type === 'error') { + this.logger.error({ event }); + error = event.error as GenericAIError; } } - if (!hasBeenStreamed && lastResult && lastResult.length > 0) { - // If the llm does not support streaming we have a fallback. - result.next({ type: 'chunk', content: lastResult }); + await history?.addAIMessage(text.join('')); + + if (error) { + // unwrap and throw the causing error to be handled by the ExceptionMiddleware + throw error.data.error; } } @@ -284,36 +140,6 @@ export class ExecuteMiddleware implements ChatMiddleware { throw new ChatError(this.i18n.t('texts.chat.errorMissingLLM')); } - if (isLanguageModelContext(llm)) { - return this.handleAiSdkChainExecution(llm, context); - } - - return this.handleLangChainExecution(llm, context); - } -} - -type ToolWithFallback = StructuredToolInterface & { returnDirectFallback: boolean }; - -class HackingAgentExecutor extends AgentExecutor { - constructor(input: AgentExecutorInput) { - for (const tool of input.tools) { - (tool as ToolWithFallback)['returnDirectFallback'] = tool.returnDirect; - tool.returnDirect = false; - } - - super(input); - - for (const tool of input.tools) { - tool.returnDirect = (tool as ToolWithFallback)['returnDirectFallback']; - } + return this.handleAiSdkChainExecution(llm, context); } } - -function createLoggingChunks(chunks: { content: string }[]) { - let logging = '**LOGGING**\n\n***Number of chunks*** ' + chunks.length + '\n\n'; - chunks.forEach((chunk, index) => { - logging += '***Chunk nr. ' + (index + 1) + ':***\n\n'; - logging += chunk.content + '\n\n'; - }); - return logging; -} diff --git a/backend/src/domain/chat/middlewares/executor-middleware.ts b/backend/src/domain/chat/middlewares/executor-middleware.ts index d29497eaa..6b059ecfd 100644 --- a/backend/src/domain/chat/middlewares/executor-middleware.ts +++ b/backend/src/domain/chat/middlewares/executor-middleware.ts @@ -1,4 +1,3 @@ -import { mapChatMessagesToStoredMessages } from '@langchain/core/messages'; import { Injectable } from '@nestjs/common'; import { CommandBus } from '@nestjs/cqrs'; import { isString } from 'class-validator'; @@ -57,7 +56,10 @@ export class ExecutorMiddleware implements ChatMiddleware { context: context.context, }; - const stored = mapChatMessagesToStoredMessages(messages); + const stored = messages.map((msg) => ({ + type: msg.getType(), + data: { content: msg.content }, + })); for (const message of context.systemMessages) { request.history.push({ content: message, type: 'ai' }); @@ -68,12 +70,8 @@ export class ExecutorMiddleware implements ChatMiddleware { throw new InternalError('Only string messages are supported.'); } - // FIXME: find out if 'system' should be part of `MessageType` or if the check below - // can omit `messageType === 'system'` - // Then change to: - // const type = message.type as MessageType; const messageType = message.type; - if (messageType === 'human' || messageType === 'system' || messageType === 'ai') { + if (messageType === 'human' || messageType === 'ai') { request.history.push({ content: message.data.content, type: 'ai' }); } } diff --git a/backend/src/domain/chat/middlewares/get-history-middleware.ts b/backend/src/domain/chat/middlewares/get-history-middleware.ts index 0153f30f7..c2c129cb3 100644 --- a/backend/src/domain/chat/middlewares/get-history-middleware.ts +++ b/backend/src/domain/chat/middlewares/get-history-middleware.ts @@ -1,18 +1,18 @@ -import { BaseListChatMessageHistory } from '@langchain/core/chat_history'; -import { - AIMessage, - AIMessageChunk, - BaseMessage, - HumanMessage, - mapChatMessagesToStoredMessages, - mapStoredMessagesToChatMessages, -} from '@langchain/core/messages'; import { Injectable, Logger } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { onErrorResumeNextWith } from 'rxjs'; import { ExtensionSource, MessageEntity, MessageRepository } from 'src/domain/database'; -import { is } from 'src/lib'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, MessagesHistory, Source } from '../interfaces'; +import { + AIMessage, + BaseMessage, + ChatContext, + ChatMiddleware, + ChatNextDelegate, + GetContext, + HumanMessage, + MessagesHistory, + Source, +} from '../interfaces'; @Injectable() export class GetHistoryMiddleware implements ChatMiddleware { @@ -30,20 +30,14 @@ export class GetHistoryMiddleware implements ChatMiddleware { const history = new InternalChatHistory(conversationId, configuration.id, context, this.messages); - await history.addMessage( - new HumanMessage({ - content: context.input, - }), - true, - context.editMessageId, - ); + await history.addMessage(new HumanMessage(context.input), true, context.editMessageId); context.history = history; await next(context); } } -class InternalChatHistory extends BaseListChatMessageHistory implements MessagesHistory { +class InternalChatHistory extends MessagesHistory { private readonly logger = new Logger(InternalChatHistory.name); private readonly tools: string[] = []; private readonly debug: string[] = []; @@ -104,25 +98,27 @@ class InternalChatHistory extends BaseListChatMessageHistory implements Messages } async addMessage(message: BaseMessage, persistHuman?: boolean, editMessageId?: number): Promise { - const data = mapChatMessagesToStoredMessages([message]).map(({ type, data }) => ({ - type, + const data = { + type: message.getType(), + data: { + content: message.content, + }, conversation: { id: this.conversationId, }, - data, // The tools is used for the UI only to display the used tools for old conversations. - tools: isAIMessage(message) ? this.tools : [], + tools: message.isAI() ? this.tools : [], // The debug information are only relevant for AI messages. - debug: isAIMessage(message) ? this.debug : [], + debug: message.isAI() ? this.debug : [], // The sources information are only relevant for AI messages. - sources: isAIMessage(message) ? this.sources : [], - })); + sources: message.isAI() ? this.sources : [], + }; try { - if (isAIMessage(message)) { + if (message.isAI()) { this.publishSourcesReferences(); const entity = await this.messages.save({ - ...data[0], + ...data, parentId: this.currentParentId, configurationId: this.configurationId, }); @@ -153,7 +149,7 @@ class InternalChatHistory extends BaseListChatMessageHistory implements Messages const entity = await this.messages.save({ parentId: this.currentParentId, configurationId: this.configurationId, - ...data[0], + ...data, }); this.currentParentId = entity.id; this.context.result.next({ type: 'saved', messageId: entity.id, messageType: 'human' }); @@ -164,7 +160,19 @@ class InternalChatHistory extends BaseListChatMessageHistory implements Messages } } -function isAIMessage(message: BaseMessage) { - // For whatever reason there are two kind of messages for that. - return is(message, AIMessage) || is(message, AIMessageChunk); +function mapStoredMessagesToChatMessages(messages: MessageEntity[]): BaseMessage[] { + return messages.map((message) => { + // TODO: maybe we should not save this json structure but migrate to a string column + const data = message.data as { content: string }; + const text = data.content; + + switch (message.type) { + case 'human': + return new HumanMessage(text); + case 'ai': + return new AIMessage(text); + default: + throw new Error(`Unsupported message type '${message.type}'.`); + } + }); } diff --git a/backend/src/domain/chat/middlewares/langfuse-middleware.ts b/backend/src/domain/chat/middlewares/langfuse-middleware.ts index 317d29547..9d67c10a8 100644 --- a/backend/src/domain/chat/middlewares/langfuse-middleware.ts +++ b/backend/src/domain/chat/middlewares/langfuse-middleware.ts @@ -14,8 +14,7 @@ export class LangfuseMiddleware implements ChatMiddleware { const secretKey = this.configService.get('LANGFUSE_SECRET_KEY'); const baseUrl = this.configService.get('LANGFUSE_BASE_URL', 'https://cloud.langfuse.com'); if (publicKey && secretKey && baseUrl) { - const { CallbackHandler } = await import('langfuse-langchain'); - context.callbacks.push(new CallbackHandler({ publicKey, secretKey, baseUrl })); + context.telemetry = true; } return next(context); diff --git a/backend/src/domain/chat/middlewares/summarize-history-middleware.ts b/backend/src/domain/chat/middlewares/summarize-history-middleware.ts index 585a0487b..fe073ef41 100644 --- a/backend/src/domain/chat/middlewares/summarize-history-middleware.ts +++ b/backend/src/domain/chat/middlewares/summarize-history-middleware.ts @@ -1,12 +1,8 @@ -import { HumanMessage } from '@langchain/core/messages'; -import { StringOutputParser } from '@langchain/core/output_parsers'; -import { ChatPromptTemplate } from '@langchain/core/prompts'; import { forwardRef, Inject, Injectable, Logger, NotFoundException } from '@nestjs/common'; import { CommandBus, QueryBus } from '@nestjs/cqrs'; -import { streamText } from 'ai'; -import { is } from 'src/lib'; +import { generateText } from 'ai'; import { I18nService } from '../../../localization/i18n.service'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, isLanguageModelContext } from '../interfaces'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from '../interfaces'; import { GetConversation, GetConversationResponse } from '../use-cases'; import { UpdateConversation } from '../use-cases'; import { normalizedMessageContent } from '../utils'; @@ -30,7 +26,7 @@ export class SummarizeHistoryMiddleware implements ChatMiddleware { const allUserMessages = messages .reverse() - .filter((message) => is(message, HumanMessage)) + .filter((message) => message.isHuman()) .flatMap((humanMessage) => normalizedMessageContent(humanMessage.content) .filter((item) => item.type === 'text') @@ -55,12 +51,12 @@ export class SummarizeHistoryMiddleware implements ChatMiddleware { const userMessages = await this.getUserMessages(context); - if (isLanguageModelContext(llm)) { - const historyPrompt = - context.summaryConfig?.prompt ?? - "Summarize the following content ALWAYS in the same language as the content as short as possible in not more than 3 words. Write it as if it is Headline of an Article. Dont't use new lines!"; + const historyPrompt = + context.summaryConfig?.prompt ?? + "Summarize the following content ALWAYS in the same language as the content as short as possible in not more than 3 words. Write it as if it is Headline of an Article. Dont't use new lines!"; - const { text } = streamText({ + try { + const { text } = await generateText({ model: llm.model, prompt: [ { role: 'system' as const, content: historyPrompt }, @@ -69,26 +65,9 @@ export class SummarizeHistoryMiddleware implements ChatMiddleware { ...llm.options, }); - try { - const name = await text; - return name ?? this.i18n.t('texts.chat.noSummary'); - } catch (err) { - this.logger.error('Failed to get conversation summary.', err); - } - } else { - const historyPrompt = - context.summaryConfig?.prompt ?? - "Summarize the following content ALWAYS in the same language as the content as short as possible in not more than 3 words. Write it as if it is Headline of an Article. Dont't use new lines: {content}"; - - const prompt = ChatPromptTemplate.fromMessages([['user', historyPrompt]]); - const outputParser = new StringOutputParser(); - const outputChain = prompt.pipe(llm).pipe(outputParser); - try { - const name = await outputChain.invoke({ content: userMessages.join(' ') }, { timeout: 60000 }); - return name ?? this.i18n.t('texts.chat.noSummary'); - } catch (err) { - this.logger.error('Failed to get conversation summary.', err); - } + return text ?? this.i18n.t('texts.chat.noSummary'); + } catch (err) { + this.logger.error('Failed to get conversation summary.', err); } return this.i18n.t('texts.chat.noSummary'); diff --git a/backend/src/domain/chat/use-cases/get-history.ts b/backend/src/domain/chat/use-cases/get-history.ts index 767f68200..be96553dc 100644 --- a/backend/src/domain/chat/use-cases/get-history.ts +++ b/backend/src/domain/chat/use-cases/get-history.ts @@ -1,5 +1,3 @@ -import { AIMessageChunk, MessageContent } from '@langchain/core/messages'; -import { ChatGenerationChunk } from '@langchain/core/outputs'; import { ForbiddenException, NotFoundException } from '@nestjs/common'; import { IQueryHandler, QueryHandler } from '@nestjs/cqrs'; import { InjectRepository } from '@nestjs/typeorm'; @@ -54,5 +52,5 @@ export class GetHistoryHandler implements IQueryHandler 0) { - result.push({ type: 'text', text: source }); - } - } else if (isArray(source)) { - for (const item of source) { - if (item.type === 'image_url') { - if (isString(item.image_url)) { - result.push({ type: 'image_url', image: { url: item.image_url } }); - } else { - result.push({ type: 'image_url', image: { url: (item.image_url as { url: string }).url } }); - } - } else { - if (isTextItem(item)) { - result.push({ type: 'text', text: item.text }); - } - } - } + if (source.length > 0) { + result.push({ type: 'text', text: source }); } return result; diff --git a/backend/src/domain/extensions/interfaces.ts b/backend/src/domain/extensions/interfaces.ts index 7bacf396d..031eba579 100644 --- a/backend/src/domain/extensions/interfaces.ts +++ b/backend/src/domain/extensions/interfaces.ts @@ -1,4 +1,3 @@ -import { Embeddings } from '@langchain/core/embeddings'; import { ChatMiddleware, ExtensionUserArgumentValues } from '../chat'; import { ChatSuggestion } from '../shared'; import { User } from '../users'; @@ -153,14 +152,6 @@ export interface ExtensionSpec { triggers?: string[]; } -export interface ExtensionEmbeddings { - // The embedding. - embeddings: Embeddings; - - // The optional name. - name?: string; -} - export type ExtensionState = { [param: string]: any; changed?: boolean; @@ -289,8 +280,6 @@ export interface Extension< test?(configuration: TConfig): Promise; getMiddlewares(user: User, extension: ExtensionEntity, userArgumentValues?: TUserValues): Promise; - - getEmbedding?(user: User, configuration: TConfig): Promise; } export const EXTENSION_METADATA = 'EXTENSION'; diff --git a/backend/src/domain/settings/use-cases/get-blob.ts b/backend/src/domain/settings/use-cases/get-blob.ts index 164c27681..4c7ea1f35 100644 --- a/backend/src/domain/settings/use-cases/get-blob.ts +++ b/backend/src/domain/settings/use-cases/get-blob.ts @@ -14,13 +14,13 @@ export class GetBlobResponse { export class GetBlobHandler implements IQueryHandler { constructor( @InjectRepository(BlobEntity) - private readonly blogs: BlobRepository, + private readonly blobs: BlobRepository, ) {} async execute(request: GetBlob): Promise { const { id } = request; - const entity = await this.blogs.findOneBy({ id }); + const entity = await this.blobs.findOneBy({ id }); if (!entity) { return new GetBlobResponse(); diff --git a/backend/src/extensions/examples/always-42.ts b/backend/src/extensions/examples/always-42.ts index d3fc542e1..892901f04 100644 --- a/backend/src/extensions/examples/always-42.ts +++ b/backend/src/extensions/examples/always-42.ts @@ -36,10 +36,6 @@ class InternalTool extends NamedStructuredTool { readonly description = 'Calculates the sum of two numbers'; readonly displayName = 'Always 42'; - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({ lhs: z .number() // diff --git a/backend/src/extensions/examples/confirm.ts b/backend/src/extensions/examples/confirm.ts index c3949e869..39ee2dfc2 100644 --- a/backend/src/extensions/examples/confirm.ts +++ b/backend/src/extensions/examples/confirm.ts @@ -36,10 +36,6 @@ class InternalTool extends NamedStructuredTool { readonly description = 'Calculates the sum of two numbers after confirmation'; readonly displayName = 'Confirm'; - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({ lhs: z .number() // diff --git a/backend/src/extensions/examples/show-context.ts b/backend/src/extensions/examples/show-context.ts index d72d8f4af..cd580962e 100644 --- a/backend/src/extensions/examples/show-context.ts +++ b/backend/src/extensions/examples/show-context.ts @@ -36,10 +36,6 @@ class InternalTool extends NamedStructuredTool { readonly description = 'Shows the current context.'; readonly displayName = 'Context'; - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({}); constructor( diff --git a/backend/src/extensions/examples/simple-input.ts b/backend/src/extensions/examples/simple-input.ts index 7027d247b..018913f46 100644 --- a/backend/src/extensions/examples/simple-input.ts +++ b/backend/src/extensions/examples/simple-input.ts @@ -39,10 +39,6 @@ class InternalTool extends NamedStructuredTool { readonly description = 'Handles a user input'; readonly displayName = 'Simple Input'; - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({}); constructor( diff --git a/backend/src/extensions/examples/user-args.ts b/backend/src/extensions/examples/user-args.ts index 607af6090..5a408d9c2 100644 --- a/backend/src/extensions/examples/user-args.ts +++ b/backend/src/extensions/examples/user-args.ts @@ -107,10 +107,6 @@ class InternalTool extends NamedStructuredTool { readonly description = 'Shows the current user arguments.'; readonly displayName = 'User Args'; - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({}); constructor( @@ -118,7 +114,7 @@ class InternalTool extends NamedStructuredTool { private readonly context: ChatContext, extensionExternalId: string, ) { - super({}); + super(); this.name = extensionExternalId; } diff --git a/backend/src/extensions/models/azure-open-ai-reasoning.ts b/backend/src/extensions/models/azure-open-ai-reasoning.ts deleted file mode 100644 index bcd5ba0c7..000000000 --- a/backend/src/extensions/models/azure-open-ai-reasoning.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { CallbackHandlerMethods } from '@langchain/core/callbacks/base'; -import { AzureChatOpenAI } from '@langchain/openai'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; -import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; -import { User } from 'src/domain/users'; -import { I18nService } from '../../localization/i18n.service'; -import { getEstimatedUsageCallback } from './internal/utils'; - -@Extension() -export class AzureOpenAIReasoningModelExtension implements Extension { - constructor(private readonly i18n: I18nService) {} - - get spec(): ExtensionSpec { - return { - name: 'azure-open-ai-model-reasoning', - title: this.i18n.t('texts.extensions.azure-o.title'), - logo: '', - description: this.i18n.t('texts.extensions.azure-o.description'), - type: 'llm', - arguments: { - apiKey: { - type: 'string', - title: this.i18n.t('texts.extensions.common.apiKey'), - required: true, - format: 'password', - }, - deploymentName: { - type: 'string', - title: this.i18n.t('texts.extensions.common.deploymentName'), - required: true, - }, - instanceName: { - type: 'string', - title: this.i18n.t('texts.extensions.common.instanceName'), - required: true, - }, - apiVersion: { - type: 'string', - title: this.i18n.t('texts.extensions.common.apiVersion'), - required: true, - format: 'select', - examples: ['2024-12-01-preview'], - }, - effort: { - type: 'string', - title: this.i18n.t('texts.extensions.common.effort'), - required: false, - enum: ['', 'low', 'medium', 'high'], - }, - }, - }; - } - - async test(configuration: AzureOpenAIReasoningModelExtensionConfiguration) { - const model = this.createModel(configuration); - - await model.invoke('Just a test call'); - } - - getMiddlewares( - _user: User, - extension: ExtensionEntity, - ): Promise { - const middleware = { - invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { - context.llms[this.spec.name] = await context.cache.get(this.spec.name, extension.values, () => { - // The model does not provide the token usage, therefore estimate it. - const callbacks = [getEstimatedUsageCallback('azure-open-ai-reasoning', extension.values.deploymentName, getContext)]; - - // Stream the result token by token to the frontend. - return this.createModel(extension.values, callbacks, true); - }); - - return next(context); - }, - }; - - return Promise.resolve([middleware]); - } - - private createModel( - configuration: AzureOpenAIReasoningModelExtensionConfiguration, - callbacks?: CallbackHandlerMethods[], - streaming = false, - ) { - const { apiKey, apiVersion, deploymentName, instanceName, effort } = configuration; - - return new AzureChatOpenAI({ - azureOpenAIApiDeploymentName: deploymentName, - azureOpenAIApiInstanceName: instanceName, - azureOpenAIApiKey: apiKey, - azureOpenAIApiVersion: apiVersion, - callbacks, - streaming, - reasoning: effort ? { effort } : undefined, - }); - } -} - -type AzureOpenAIReasoningModelExtensionConfiguration = ExtensionConfiguration & { - apiKey: string; - deploymentName: string; - instanceName: string; - apiVersion: string; - effort?: 'low' | 'medium' | 'high'; -}; diff --git a/backend/src/extensions/models/azure-open-ai.spec.ts b/backend/src/extensions/models/azure-open-ai.spec.ts index dc5dd244e..3c0eb0043 100644 --- a/backend/src/extensions/models/azure-open-ai.spec.ts +++ b/backend/src/extensions/models/azure-open-ai.spec.ts @@ -1,16 +1,14 @@ import { AzureOpenAIModelExtension } from './azure-open-ai'; import { modelExtensionTestSuite } from './model-test.base'; -const instance = { - invoke: jest.fn().mockReturnThis(), -}; +jest.mock('@ai-sdk/azure', () => ({ + createAzure: jest.fn(() => ({ + responses: jest.fn(() => () => 'mocked model'), + })), +})); -jest.mock('@langchain/openai', () => { - return { - AzureChatOpenAI: jest.fn().mockImplementation(() => { - return instance; - }), - }; -}); +jest.mock('ai', () => ({ + generateText: jest.fn(() => () => 'test output'), +})); -describe('OpenAIModelExtension', () => modelExtensionTestSuite(AzureOpenAIModelExtension, instance)); +describe('OpenAIModelExtension', () => modelExtensionTestSuite(AzureOpenAIModelExtension)); diff --git a/backend/src/extensions/models/azure-open-ai.ts b/backend/src/extensions/models/azure-open-ai.ts index 29372f2e5..af3c139e1 100644 --- a/backend/src/extensions/models/azure-open-ai.ts +++ b/backend/src/extensions/models/azure-open-ai.ts @@ -1,10 +1,9 @@ -import { CallbackHandlerMethods } from '@langchain/core/callbacks/base'; -import { AzureChatOpenAI } from '@langchain/openai'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; +import { createAzure } from '@ai-sdk/azure'; +import { CallSettings, generateText } from 'ai'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, LanguageModelContext } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; -import { getEstimatedUsageCallback } from './internal/utils'; @Extension() export class AzureOpenAIModelExtension implements Extension { @@ -35,13 +34,6 @@ export class AzureOpenAIModelExtension implements Extension): Promise { const middleware = { invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { context.llms[this.spec.name] = await context.cache.get(this.spec.name, extension.values, () => { - // The model does not provide the token usage, therefore estimate it. - const callbacks = [getEstimatedUsageCallback('azure-open-ai', extension.values.deploymentName, getContext)]; - - // Stream the result token by token to the frontend. - return this.createModel(extension.values, callbacks, true); + return this.createModel(extension.values, true); }); return next(context); @@ -112,26 +119,42 @@ export class AzureOpenAIModelExtension implements Extension = !effort + ? { + presencePenalty, + frequencyPenalty, + temperature, + topP, + } + : {}; + + return { + model: azure.responses(deploymentName), + options: { + ...reasoningOptions, + seed, + streaming, + providerOptions: { + openai: effort + ? { + reasoningEffort: effort ? effort : undefined, + reasoningSummary: summary || 'detailed', + } + : {}, + }, + } as Partial, + modelName: deploymentName, + providerName: 'azure-open-ai', + }; } } @@ -139,10 +162,11 @@ type AzureOpenAIModelExtensionConfiguration = ExtensionConfiguration & { apiKey: string; deploymentName: string; instanceName: string; - apiVersion: string; - temperature: number; seed: number; - presencePenalty: number; - frequencyPenalty: number; - topP: number; + temperature?: number; + presencePenalty?: number; + frequencyPenalty?: number; + topP?: number; + effort?: 'low' | 'medium' | 'high'; + summary?: 'detailed' | 'auto'; }; diff --git a/backend/src/extensions/models/bedrock-ai.spec.ts b/backend/src/extensions/models/bedrock-ai.spec.ts new file mode 100644 index 000000000..62c3e0f8d --- /dev/null +++ b/backend/src/extensions/models/bedrock-ai.spec.ts @@ -0,0 +1,11 @@ +import { BedrockModelExtension } from './bedrock-ai'; +import { modelExtensionTestSuite } from './model-test.base'; + +jest.mock('@ai-sdk/amazon-bedrock', () => ({ + createAmazonBedrock: jest.fn(() => () => 'mocked model'), +})); +jest.mock('ai', () => ({ + generateText: jest.fn(() => () => 'test output'), +})); + +describe('BedrockModelExtension', () => modelExtensionTestSuite(BedrockModelExtension)); diff --git a/backend/src/extensions/models/bedrock-ai.ts b/backend/src/extensions/models/bedrock-ai.ts index fadfad1c7..0f4c43f91 100644 --- a/backend/src/extensions/models/bedrock-ai.ts +++ b/backend/src/extensions/models/bedrock-ai.ts @@ -1,11 +1,9 @@ -import { ChatBedrockConverse } from '@langchain/aws'; -import { CallbackHandlerMethods } from '@langchain/core/callbacks/base'; -import { createToolCallingAgent } from 'langchain/agents'; +import { createAmazonBedrock } from '@ai-sdk/amazon-bedrock'; +import { CallSettings, generateText } from 'ai'; import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; -import { getEstimatedUsageCallback } from './internal/utils'; @Extension() export class BedrockModelExtension implements Extension { @@ -72,19 +70,23 @@ export class BedrockModelExtension implements Extension): Promise { const middleware = { invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { context.llms[this.spec.name] = await context.cache.get(this.spec.name, extension.values, () => { - const callbacks = [getEstimatedUsageCallback('bedrock-ai', extension.values.model, getContext)]; - - return this.createModel(extension.values, callbacks); + return this.createModel(extension.values); }); - context.agentFactory = createToolCallingAgent; return next(context); }, @@ -93,17 +95,24 @@ export class BedrockModelExtension implements Extension, + modelName: model, + providerName: 'bedrock-ai', + }; } } diff --git a/backend/src/extensions/models/google-genai.spec.ts b/backend/src/extensions/models/google-genai.spec.ts new file mode 100644 index 000000000..8dd3ff730 --- /dev/null +++ b/backend/src/extensions/models/google-genai.spec.ts @@ -0,0 +1,11 @@ +import { GoogleGenAIModelExtension } from './google-genai'; +import { modelExtensionTestSuite } from './model-test.base'; + +jest.mock('@ai-sdk/google', () => ({ + createGoogleGenerativeAI: jest.fn(() => () => 'mocked model'), +})); +jest.mock('ai', () => ({ + generateText: jest.fn(() => () => 'test output'), +})); + +describe('GoogleGenAIModelExtension', () => modelExtensionTestSuite(GoogleGenAIModelExtension)); diff --git a/backend/src/extensions/models/google-genai.ts b/backend/src/extensions/models/google-genai.ts index a0af31a37..57b280517 100644 --- a/backend/src/extensions/models/google-genai.ts +++ b/backend/src/extensions/models/google-genai.ts @@ -1,11 +1,9 @@ -import { CallbackHandlerMethods } from '@langchain/core/callbacks/base'; -import { ChatGoogleGenerativeAI } from '@langchain/google-genai'; -import { createToolCallingAgent } from 'langchain/agents'; +import { createGoogleGenerativeAI } from '@ai-sdk/google'; +import { CallSettings, generateText } from 'ai'; import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; -import { getEstimatedUsageCallback } from './internal/utils'; @Extension() export class GoogleGenAIModelExtension implements Extension { @@ -75,20 +73,23 @@ export class GoogleGenAIModelExtension implements Extension): Promise { const middleware = { invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { - context.llms[this.spec.name] = await context.cache.get('google-genai', extension.values, () => { - // The model does not provide the token usage, therefore estimate it. - const callbacks = [getEstimatedUsageCallback('google-genai', extension.values.modelName, getContext)]; - return this.createModel(extension.values, callbacks); + context.llms[this.spec.name] = await context.cache.get(this.spec.name, extension.values, () => { + return this.createModel(extension.values); }); - context.agentFactory = createToolCallingAgent; return next(context); }, @@ -97,10 +98,23 @@ export class GoogleGenAIModelExtension implements Extension, + modelName: modelName, + providerName: 'google-genai', + }; } } diff --git a/backend/src/extensions/models/internal/utils.ts b/backend/src/extensions/models/internal/utils.ts deleted file mode 100644 index 522a7bdec..000000000 --- a/backend/src/extensions/models/internal/utils.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { CallbackHandlerMethods } from '@langchain/core/callbacks/base'; -import { MessageContentComplex, MessageContentText } from '@langchain/core/messages'; -import { GetContext } from 'src/domain/chat'; -import { isString } from 'src/lib'; - -function isMessageContentText(messageContent: MessageContentComplex): messageContent is MessageContentText { - return messageContent.type === 'text'; -} - -export function getEstimatedUsageCallback(llm: string, model: string, getContext: GetContext): CallbackHandlerMethods { - return { - handleChatModelStart(_, messages) { - const context = getContext(); - - let totalLength = 0; - for (const block of messages) { - for (const message of block) { - if (isString(message.content)) { - totalLength += message.content.length; - } else { - for (const part of message.content) { - if (isMessageContentText(part)) { - totalLength += part.text.length; - } else if (part.type === 'image_url') { - if (isString(part.image_url)) { - totalLength += part.image_url.length; - } else { - totalLength += (part.image_url as { url: string }).url.length; - } - } - } - } - } - } - - // Fallback to approximate calculation if tiktoken is not available - const tokenCount = Math.ceil(totalLength / 4); - - context.tokenUsage ??= { tokenCount, model, llm }; - context.tokenUsage.tokenCount += tokenCount; - }, - handleLLMEnd(output) { - const context = getContext(); - - let totalLength = 0; - for (const block of output.generations) { - for (const message of block) { - if (isString(message.text)) { - totalLength += message.text.length; - } - } - } - - // Fallback to approximate calculation if tiktoken is not available - const tokenCount = Math.ceil(totalLength / 4); - - context.tokenUsage ??= { tokenCount, model, llm }; - context.tokenUsage.tokenCount += tokenCount; - }, - }; -} diff --git a/backend/src/extensions/models/mistral.spec.ts b/backend/src/extensions/models/mistral.spec.ts index 576756ff7..6a129acba 100644 --- a/backend/src/extensions/models/mistral.spec.ts +++ b/backend/src/extensions/models/mistral.spec.ts @@ -1,16 +1,11 @@ import { MistralModelExtension } from './mistral'; import { modelExtensionTestSuite } from './model-test.base'; -const instance = { - invoke: jest.fn().mockReturnThis(), -}; +jest.mock('@ai-sdk/mistral', () => ({ + createMistral: jest.fn(() => () => 'mocked model'), +})); +jest.mock('ai', () => ({ + generateText: jest.fn(() => () => 'test output'), +})); -jest.mock('@langchain/mistralai', () => { - return { - ChatMistralAI: jest.fn().mockImplementation(() => { - return instance; - }), - }; -}); - -describe('MistralModelExtension', () => modelExtensionTestSuite(MistralModelExtension, instance)); +describe('MistralModelExtension', () => modelExtensionTestSuite(MistralModelExtension)); diff --git a/backend/src/extensions/models/mistral.ts b/backend/src/extensions/models/mistral.ts index 6eea98f00..72d55ea88 100644 --- a/backend/src/extensions/models/mistral.ts +++ b/backend/src/extensions/models/mistral.ts @@ -1,10 +1,9 @@ -import { CallbackHandlerMethods } from '@langchain/core/callbacks/base'; -import { ChatMistralAI } from '@langchain/mistralai'; -import { ChatContext, ChatError, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; +import { createMistral } from '@ai-sdk/mistral'; +import { CallSettings, generateText } from 'ai'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; -import { getEstimatedUsageCallback } from './internal/utils'; @Extension() export class MistralModelExtension implements Extension { @@ -45,26 +44,22 @@ export class MistralModelExtension implements Extension): Promise { const middleware = { invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { - const isLargeModel = extension.values.modelName.startsWith('mistral-large'); - - if (context.tools.length > 0 && !isLargeModel) { - throw new ChatError('Tools are only supported with mistral-large model.'); - } - context.llms[this.spec.name] = await context.cache.get(this.spec.name, extension.values, () => { - // The model does not provide the token usage, therefore estimate it. - const callbacks = [getEstimatedUsageCallback('mistral', extension.values.modelName, getContext)]; - - // Stream the result token by token to the frontend. - return this.createModel(extension.values, callbacks, true); + return this.createModel(extension.values, true); }); return next(context); @@ -74,14 +69,21 @@ export class MistralModelExtension implements Extension, + modelName: modelName, + providerName: 'mistral', + }; } } diff --git a/backend/src/extensions/models/model-test.base.ts b/backend/src/extensions/models/model-test.base.ts index 2a9c8c144..245176cb1 100644 --- a/backend/src/extensions/models/model-test.base.ts +++ b/backend/src/extensions/models/model-test.base.ts @@ -1,13 +1,12 @@ -import { StructuredToolInterface } from '@langchain/core/tools'; -import { ChatContext } from 'src/domain/chat'; +import { generateText } from 'ai'; +import { ChatContext, NamedStructuredTool } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; type ExtensionConstructor = new (i18n: I18nService) => Extension; -export function modelExtensionTestSuite(modelExtension: ExtensionConstructor, instance: { invoke: () => void }) { - let invokeMock: jest.SpyInstance; +export function modelExtensionTestSuite(modelExtension: ExtensionConstructor) { let extension: Extension; const i18n = { @@ -16,7 +15,6 @@ export function modelExtensionTestSuite(modelExtension: ExtensionConstructor, in beforeEach(() => { extension = new modelExtension(i18n); - invokeMock = jest.spyOn(instance, 'invoke').mockReturnThis(); }); it('should have getMiddlewares method', async () => { @@ -28,7 +26,7 @@ export function modelExtensionTestSuite(modelExtension: ExtensionConstructor, in }; const context = { - tools: [] as StructuredToolInterface[], + tools: [] as NamedStructuredTool[], llms: {}, cache: { get: (_key: string, _args: any, resolver: () => Promise) => { @@ -56,6 +54,6 @@ export function modelExtensionTestSuite(modelExtension: ExtensionConstructor, in const configuration: ExtensionConfiguration = {}; await extension.test?.(configuration); expect(extension.test?.bind(extension)).toBeDefined(); - expect(invokeMock).toHaveBeenCalled(); + expect(generateText).toHaveBeenCalled(); }); } diff --git a/backend/src/extensions/models/nvidia.spec.ts b/backend/src/extensions/models/nvidia.spec.ts new file mode 100644 index 000000000..4f746c25e --- /dev/null +++ b/backend/src/extensions/models/nvidia.spec.ts @@ -0,0 +1,11 @@ +import { modelExtensionTestSuite } from './model-test.base'; +import { NvidiaModelExtension } from './nvidia'; + +jest.mock('@ai-sdk/openai-compatible', () => ({ + createOpenAICompatible: jest.fn(() => () => 'mocked model'), +})); +jest.mock('ai', () => ({ + generateText: jest.fn(() => () => 'test output'), +})); + +describe('NvidiaModelExtension', () => modelExtensionTestSuite(NvidiaModelExtension)); diff --git a/backend/src/extensions/models/nvidia.ts b/backend/src/extensions/models/nvidia.ts index cdc2ea234..3edcd8ccf 100644 --- a/backend/src/extensions/models/nvidia.ts +++ b/backend/src/extensions/models/nvidia.ts @@ -39,6 +39,7 @@ export class NvidiaModelExtension implements Extension, + modelName: config.modelName, + providerName: 'nvidia', }; } } @@ -135,4 +147,5 @@ type NvidiaModelExtensionConfiguration = ExtensionConfiguration & { presencePenalty: number; frequencyPenalty: number; effort?: 'minimal' | 'low' | 'medium' | 'high'; + summary?: 'detailed' | 'auto'; }; diff --git a/backend/src/extensions/models/ollama.spec.ts b/backend/src/extensions/models/ollama.spec.ts index a067f852f..f815843b9 100644 --- a/backend/src/extensions/models/ollama.spec.ts +++ b/backend/src/extensions/models/ollama.spec.ts @@ -1,15 +1,11 @@ import { modelExtensionTestSuite } from './model-test.base'; import { OllamaModelExtension } from './ollama'; -const instance = { - invoke: jest.fn().mockReturnThis(), -}; +jest.mock('ollama-ai-provider-v2', () => ({ + createOllama: jest.fn(() => () => 'mocked model'), +})); +jest.mock('ai', () => ({ + generateText: jest.fn(() => () => 'test output'), +})); -jest.mock('@langchain/ollama', () => { - return { - ChatOllama: jest.fn().mockImplementation(() => { - return instance; - }), - }; -}); -describe('OllamaModelExtension', () => modelExtensionTestSuite(OllamaModelExtension, instance)); +describe('OllamaModelExtension', () => modelExtensionTestSuite(OllamaModelExtension)); diff --git a/backend/src/extensions/models/ollama.ts b/backend/src/extensions/models/ollama.ts index 0655f521b..365b4b8a1 100644 --- a/backend/src/extensions/models/ollama.ts +++ b/backend/src/extensions/models/ollama.ts @@ -1,5 +1,5 @@ -import { ChatOllama } from '@langchain/ollama'; -import { createToolCallingAgent } from 'langchain/agents'; +import { CallSettings, generateText } from 'ai'; +import { createOllama } from 'ollama-ai-provider-v2'; import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; @@ -32,17 +32,23 @@ export class OllamaModelExtension implements Extension): Promise { const middleware = { invoke: async (context: ChatContext, _: GetContext, next: ChatNextDelegate): Promise => { context.llms[this.spec.name] = await context.cache.get(this.spec.name, extension.values, () => { - return this.createModel(extension.values); + return this.createModel(extension.values, true); }); - context.agentFactory = createToolCallingAgent; return next(context); }, @@ -51,13 +57,22 @@ export class OllamaModelExtension implements Extension, + modelName: modelName, + providerName: 'ollama', + }; } } diff --git a/backend/src/extensions/models/open-ai-compatible.spec.ts b/backend/src/extensions/models/open-ai-compatible.spec.ts index c703f17cc..100841a3e 100644 --- a/backend/src/extensions/models/open-ai-compatible.spec.ts +++ b/backend/src/extensions/models/open-ai-compatible.spec.ts @@ -1,16 +1,11 @@ import { modelExtensionTestSuite } from './model-test.base'; import { OpenAICompatibleModelExtension } from './open-ai-compatible'; -const instance = { - invoke: jest.fn().mockReturnThis(), -}; +jest.mock('@ai-sdk/openai-compatible', () => ({ + createOpenAICompatible: jest.fn(() => () => 'mocked model'), +})); +jest.mock('ai', () => ({ + generateText: jest.fn(() => () => 'test output'), +})); -jest.mock('@langchain/openai', () => { - return { - ChatOpenAI: jest.fn().mockImplementation(() => { - return instance; - }), - }; -}); - -describe('OpenAICompatibleModelExtension', () => modelExtensionTestSuite(OpenAICompatibleModelExtension, instance)); +describe('OpenAICompatibleModelExtension', () => modelExtensionTestSuite(OpenAICompatibleModelExtension)); diff --git a/backend/src/extensions/models/open-ai-compatible.ts b/backend/src/extensions/models/open-ai-compatible.ts index 3bdfd53e5..7076d01d9 100644 --- a/backend/src/extensions/models/open-ai-compatible.ts +++ b/backend/src/extensions/models/open-ai-compatible.ts @@ -1,4 +1,5 @@ -import { ChatOpenAI } from '@langchain/openai'; +import { createOpenAICompatible } from '@ai-sdk/openai-compatible'; +import { CallSettings, generateText } from 'ai'; import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; @@ -67,18 +68,31 @@ export class OpenAICompatibleModelExtension implements Extension): Promise { @@ -96,20 +110,35 @@ export class OpenAICompatibleModelExtension implements Extension, + modelName: modelName, + providerName: 'openai-compatible', + }; } } @@ -122,4 +151,5 @@ type OpenAICompatibleModelExtensionConfiguration = ExtensionConfiguration & { presencePenalty: number; frequencyPenalty: number; effort?: 'low' | 'medium' | 'high'; + summary?: 'detailed' | 'auto'; }; diff --git a/backend/src/extensions/models/open-ai.spec.ts b/backend/src/extensions/models/open-ai.spec.ts index 2ae387c8b..e73581ab7 100644 --- a/backend/src/extensions/models/open-ai.spec.ts +++ b/backend/src/extensions/models/open-ai.spec.ts @@ -1,16 +1,13 @@ import { modelExtensionTestSuite } from './model-test.base'; import { OpenAIModelExtension } from './open-ai'; -const instance = { - invoke: jest.fn().mockReturnThis(), -}; +jest.mock('@ai-sdk/openai', () => ({ + createOpenAI: jest.fn(() => ({ + responses: jest.fn(() => () => 'mocked model'), + })), +})); +jest.mock('ai', () => ({ + generateText: jest.fn(() => () => 'test output'), +})); -jest.mock('@langchain/openai', () => { - return { - ChatOpenAI: jest.fn().mockImplementation(() => { - return instance; - }), - }; -}); - -describe('OpenAIModelExtension', () => modelExtensionTestSuite(OpenAIModelExtension, instance)); +describe('OpenAIModelExtension', () => modelExtensionTestSuite(OpenAIModelExtension)); diff --git a/backend/src/extensions/models/open-ai.ts b/backend/src/extensions/models/open-ai.ts index ce9ffac1e..72dc407ed 100644 --- a/backend/src/extensions/models/open-ai.ts +++ b/backend/src/extensions/models/open-ai.ts @@ -1,5 +1,5 @@ -import { CallbackHandlerMethods } from '@langchain/core/callbacks/base'; -import { ChatOpenAI } from '@langchain/openai'; +import { createOpenAI } from '@ai-sdk/openai'; +import { CallSettings, generateText } from 'ai'; import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; @@ -63,50 +63,38 @@ export class OpenAIModelExtension implements Extension): Promise { const middleware = { - invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { + invoke: async (context: ChatContext, _: GetContext, next: ChatNextDelegate): Promise => { context.llms[this.spec.name] = await context.cache.get(this.spec.name, extension.values, () => { - const callbacks: CallbackHandlerMethods[] = [ - { - handleLLMEnd: (output) => { - // Do not capture the context to make this class cacheable if needed. - const context = getContext(); - - if (!context) { - return; - } - - // This is provider specific, therefore we cannot handle it in the execute step. - const { completionTokens, promptTokens } = (output.llmOutput?.estimatedTokenUsage as OpenAITokenEstimation) || {}; - - let tokenCount = 0; - tokenCount += completionTokens ?? 0; - tokenCount += promptTokens ?? 0; - - if (tokenCount > 0) { - context.tokenUsage = { tokenCount, model: extension.values.modelName, llm: 'open-ai' }; - } - }, - }, - ]; - - // The model does not support any streaming parameters. - return this.createModel(extension.values, callbacks, true); + return this.createModel(extension.values, true); }); return next(context); @@ -116,19 +104,34 @@ export class OpenAIModelExtension implements Extension, + modelName: modelName, + providerName: 'open-ai', + }; } } @@ -139,10 +142,6 @@ type OpenAIModelExtensionConfiguration = ExtensionConfiguration & { seed: number; presencePenalty: number; frequencyPenalty: number; - effort?: 'low' | 'medium' | 'high'; -}; - -type OpenAITokenEstimation = { - completionTokens?: number; - promptTokens?: number; + effort?: 'minimal' | 'low' | 'medium' | 'high'; + summary?: 'detailed' | 'auto'; }; diff --git a/backend/src/extensions/models/vertex-ai.spec.ts b/backend/src/extensions/models/vertex-ai.spec.ts deleted file mode 100644 index db6fb307e..000000000 --- a/backend/src/extensions/models/vertex-ai.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { modelExtensionTestSuite } from './model-test.base'; -import { VertexAIModelExtension } from './vertex-al'; - -const instance = { - invoke: jest.fn().mockReturnThis(), -}; - -jest.mock('@langchain/google-vertexai', () => { - return { - ChatVertexAI: jest.fn().mockImplementation(() => { - return instance; - }), - }; -}); - -describe('VertexAIModelExtension', () => modelExtensionTestSuite(VertexAIModelExtension, instance)); diff --git a/backend/src/extensions/models/vertex-al.ts b/backend/src/extensions/models/vertex-al.ts deleted file mode 100644 index 26a2b48de..000000000 --- a/backend/src/extensions/models/vertex-al.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { CallbackHandlerMethods } from '@langchain/core/callbacks/base'; -import { ChatVertexAI } from '@langchain/google-vertexai'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; -import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; -import { User } from 'src/domain/users'; -import { I18nService } from '../../localization/i18n.service'; -import { getEstimatedUsageCallback } from './internal/utils'; - -@Extension() -export class VertexAIModelExtension implements Extension { - constructor(private readonly i18n: I18nService) {} - - get spec(): ExtensionSpec { - return { - name: 'vertex-ai-model', - title: this.i18n.t('texts.extensions.vertexai.title'), - logo: '', - description: this.i18n.t('texts.extensions.vertexai.description'), - type: 'llm', - arguments: { - modelName: { - type: 'string', - title: this.i18n.t('texts.extensions.common.modelName'), - required: true, - format: 'select', - enum: ['gemini-1.0-pro', 'gemini-1.0-pro-vision'], - showInList: true, - }, - }, - }; - } - - async test(configuration: VertexAIModelExtensionConfiguration) { - const model = this.createModel(configuration); - - await model.invoke('Just a test call'); - } - - getMiddlewares(_: User, extension: ExtensionEntity): Promise { - const middleware = { - invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { - context.llms[this.spec.name] = await context.cache.get('open-ai-model', extension.values, () => { - // The model does not provide the token usage, therefore estimate it. - const callbacks = [getEstimatedUsageCallback('vertex-ai', extension.values.modelName, getContext)]; - - // The model does not support any streaming parameters. - return this.createModel(extension.values, callbacks); - }); - - return next(context); - }, - }; - - return Promise.resolve([middleware]); - } - - private createModel(configuration: VertexAIModelExtensionConfiguration, callbacks?: CallbackHandlerMethods[]) { - const { modelName } = configuration; - - return new ChatVertexAI({ modelName, callbacks }); - } -} - -type VertexAIModelExtensionConfiguration = ExtensionConfiguration & { modelName: string }; diff --git a/backend/src/extensions/module.ts b/backend/src/extensions/module.ts index 0e76dd889..f60f05e5b 100644 --- a/backend/src/extensions/module.ts +++ b/backend/src/extensions/module.ts @@ -11,7 +11,6 @@ import { Extension } from 'src/domain/extensions'; import { ContextExtension } from './examples/show-context'; import { UserArgsExtension } from './examples/user-args'; import { AzureOpenAIModelExtension } from './models/azure-open-ai'; -import { AzureOpenAIReasoningModelExtension } from './models/azure-open-ai-reasoning'; import { BedrockModelExtension } from './models/bedrock-ai'; import { GoogleGenAIModelExtension } from './models/google-genai'; import { MistralModelExtension } from './models/mistral'; @@ -19,10 +18,7 @@ import { NvidiaModelExtension } from './models/nvidia'; import { OllamaModelExtension } from './models/ollama'; import { OpenAIModelExtension } from './models/open-ai'; import { OpenAICompatibleModelExtension } from './models/open-ai-compatible'; -import { VertexAIModelExtension } from './models/vertex-al'; import { CustomPromptExtension } from './other/custom'; -import { HubPromptExtension } from './other/hub'; -import { LangfuseExtension } from './other/langfuse'; import { SpeechToTextExtension } from './other/speech-to-text'; import { SummaryPromptExtension } from './other/summary'; import { AzureAISearchExtension } from './tools/azure-ai-search'; @@ -110,7 +106,6 @@ export class ExtensionLibraryModule { AzureDallEExtension, AzureGPTImage1Extension, AzureOpenAIModelExtension, - AzureOpenAIReasoningModelExtension, BedrockModelExtension, BingWebSearchExtension, BraveWebSearchExtension, @@ -125,8 +120,6 @@ export class ExtensionLibraryModule { GoogleGenAIModelExtension, GPTImage1Extension, GroundingWithBingSearchExtension, - HubPromptExtension, - LangfuseExtension, MCPToolsExtension, MistralModelExtension, NvidiaModelExtension, @@ -137,7 +130,6 @@ export class ExtensionLibraryModule { SpeechToTextExtension, SummaryPromptExtension, UserArgsExtension, - VertexAIModelExtension, WholeFilesExtension, ], }; diff --git a/backend/src/extensions/other/hub.ts b/backend/src/extensions/other/hub.ts deleted file mode 100644 index a4e0f5fa5..000000000 --- a/backend/src/extensions/other/hub.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { ChatPromptTemplate } from '@langchain/core/prompts'; -import { pull } from 'langchain/hub'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; -import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; -import { User } from 'src/domain/users'; -import { I18nService } from '../../localization/i18n.service'; - -@Extension() -export class HubPromptExtension implements Extension { - constructor(private readonly i18n: I18nService) {} - private readonly cache: Record = {}; - - get spec(): ExtensionSpec { - return { - name: 'hub-prompt', - title: this.i18n.t('texts.extensions.hubPrompt.title'), - logo: ' ', - description: this.i18n.t('texts.extensions.hubPrompt.description'), - type: 'other', - arguments: { - name: { - type: 'string', - title: this.i18n.t('texts.extensions.common.name'), - required: true, - }, - }, - }; - } - - async test(configuration: HubPromptExtensionConfiguration) { - const { name } = configuration; - - await pull(name); - } - - getMiddlewares(_: User, extension: ExtensionEntity): Promise { - const middleware = { - invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { - context.prompt = await context.cache.get(this.spec.name, extension.values, async () => { - const { name } = extension.values; - - return await pull(name); - }); - - return next(context); - }, - }; - - return Promise.resolve([middleware]); - } -} - -type HubPromptExtensionConfiguration = ExtensionConfiguration & { name: string }; diff --git a/backend/src/extensions/other/langfuse.ts b/backend/src/extensions/other/langfuse.ts deleted file mode 100644 index 5367e4557..000000000 --- a/backend/src/extensions/other/langfuse.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext } from 'src/domain/chat'; -import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; -import { User } from 'src/domain/users'; -import { I18nService } from '../../localization/i18n.service'; - -@Extension() -export class LangfuseExtension implements Extension { - constructor(private readonly i18n: I18nService) {} - - get spec(): ExtensionSpec { - return { - name: 'langfuse', - title: this.i18n.t('texts.extensions.langfuse.title'), - logo: 'Langfuse', - description: this.i18n.t('texts.extensions.langfuse.description'), - type: 'other', - arguments: { - baseUrl: { - type: 'string', - title: this.i18n.t('texts.extensions.langfuse.baseUrl'), - description: this.i18n.t('texts.extensions.langfuse.baseUrlHint'), - default: 'https://cloud.langfuse.com', - required: true, - }, - publicKey: { - type: 'string', - format: 'password', - title: this.i18n.t('texts.extensions.langfuse.publicKey'), - required: true, - }, - secretKey: { - type: 'string', - format: 'password', - title: this.i18n.t('texts.extensions.langfuse.secretKey'), - required: true, - }, - }, - }; - } - - getMiddlewares(_: User, extension: ExtensionEntity): Promise { - const middleware = { - invoke: async (context: ChatContext, _: GetContext, next: ChatNextDelegate): Promise => { - const { CallbackHandler } = await import('langfuse-langchain'); - context.callbacks.push( - await context.cache.get(this.spec.name, extension.values, () => { - const { publicKey, secretKey, baseUrl } = extension.values; - context.callbacks.push(new CallbackHandler({ publicKey, secretKey, baseUrl })); - return new CallbackHandler({ - publicKey, - secretKey, - baseUrl, - }); - }), - ); - - return next(context); - }, - }; - - return Promise.resolve([middleware]); - } -} - -type LangfuseExtensionConfiguration = ExtensionConfiguration & { publicKey: string; baseUrl: string; secretKey: string }; diff --git a/backend/src/extensions/tools/azure-ai-search.ts b/backend/src/extensions/tools/azure-ai-search.ts index 98fa5af5c..af185258c 100644 --- a/backend/src/extensions/tools/azure-ai-search.ts +++ b/backend/src/extensions/tools/azure-ai-search.ts @@ -87,10 +87,6 @@ class InternalTool extends NamedStructuredTool { readonly vectorField: string; private readonly logger = new Logger(InternalTool.name); - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({ query: z.string().describe('A precise search query containing keywords, phrases or questions.'), }); diff --git a/backend/src/extensions/tools/azure-dall-e.ts b/backend/src/extensions/tools/azure-dall-e.ts index faa132356..84aabcee2 100644 --- a/backend/src/extensions/tools/azure-dall-e.ts +++ b/backend/src/extensions/tools/azure-dall-e.ts @@ -1,4 +1,3 @@ -import { DallEAPIWrapper, DallEAPIWrapperParams } from '@langchain/openai'; import { AzureOpenAI } from 'openai'; import { Extension, ExtensionSpec } from 'src/domain/extensions'; import { DallEExtension, DallEExtensionConfiguration } from './dall-e'; @@ -31,30 +30,12 @@ export class AzureDallEExtension extends DallEExtension { }; } - protected createWrapper(configuration: AzureDallEExtensionConfiguration) { - const { apiKey, modelName, apiVersion, instanceName, quality, size, style } = configuration; - - return new AzureDallEAPIWrapper({ - model: modelName, - quality, - style, - size, - openAIApiKey: apiKey, - apiKey, - instanceName, - apiVersion, - }); - } -} - -export class AzureDallEAPIWrapper extends DallEAPIWrapper { - constructor(fields: DallEAPIWrapperParams & { instanceName: string; apiVersion: string }) { - super(fields); - this.client = new AzureOpenAI({ - apiKey: fields.apiKey, - apiVersion: fields.apiVersion, - deployment: fields.model, - endpoint: `https://${fields.instanceName}.openai.azure.com`, + protected createDallEClient(configuration: AzureDallEExtensionConfiguration): AzureOpenAI { + return new AzureOpenAI({ + apiKey: configuration.apiKey, + apiVersion: configuration.apiVersion, + deployment: configuration.modelName, + endpoint: `https://${configuration.instanceName}.openai.azure.com/`, }); } } diff --git a/backend/src/extensions/tools/bing-web-search.ts b/backend/src/extensions/tools/bing-web-search.ts index fad43d922..311b1cd7e 100644 --- a/backend/src/extensions/tools/bing-web-search.ts +++ b/backend/src/extensions/tools/bing-web-search.ts @@ -48,10 +48,6 @@ class InternalTool extends NamedStructuredTool { readonly endpoint = 'https://api.bing.microsoft.com/v7.0/search'; private readonly logger = new Logger(InternalTool.name); - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({ query: z.string().describe('The search query.'), }); diff --git a/backend/src/extensions/tools/brave-web-search.ts b/backend/src/extensions/tools/brave-web-search.ts index e13138be7..c7dadbf21 100644 --- a/backend/src/extensions/tools/brave-web-search.ts +++ b/backend/src/extensions/tools/brave-web-search.ts @@ -1,6 +1,5 @@ -import { BraveSearch } from '@langchain/community/tools/brave_search'; import { z } from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedStructuredTool } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedStructuredTool, Source } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; @@ -31,7 +30,7 @@ export class BraveWebSearchExtension implements Extension): Promise { const middleware = { invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { - context.tools.push(new InternalTool(extension.values, extension.externalId)); + context.tools.push(new InternalTool(extension.values, extension.externalId, context)); return next(context); }, }; @@ -45,33 +44,107 @@ class InternalTool extends NamedStructuredTool { readonly description: string; readonly displayName = 'Brave Search'; readonly apiKey: string; - readonly braveSearch: BraveSearch; - - get lc_id() { - return [...this.lc_namespace, this.name]; - } readonly schema = z.object({ query: z.string().describe('The search query.'), }); - constructor(configuration: BraveWebSearchExtensionConfiguration, extensionExternalId: string) { + constructor( + configuration: BraveWebSearchExtensionConfiguration, + extensionExternalId: string, + private readonly context: ChatContext, + ) { super(); this.name = extensionExternalId; this.apiKey = configuration.apiKey; this.description = 'Performs a web search using Brave Search.'; - - this.braveSearch = new BraveSearch({ - apiKey: this.apiKey, - }); } protected async _call(arg: z.infer): Promise { - return (await this.braveSearch.invoke(arg.query)) as string; + const { query } = arg; + + const headers = { + 'X-Subscription-Token': this.apiKey, + Accept: 'application/json', + }; + const encodedQuery = encodeURIComponent(query); + const searchUrl = new URL(`https://api.search.brave.com/res/v1/web/search?q=${encodedQuery}`); + + const response = await fetch(searchUrl, { headers }); + + if (!response.ok) { + throw new Error(`Failed to fetch data from Brave Search: ${response.status} ${response.statusText}`); + } + + const parsedResponse = (await response.json()) as SearchResponse; + const results = parsedResponse.web?.results; + const items = Array.isArray(results) ? results : []; + + const toolResult = []; + const sources: Source[] = []; + for (const item of items) { + const { title, url, description, content_type } = item; + + toolResult.push({ title, link: url, snippet: description }); + + const source: Source = { + title: title ?? 'Search result', + chunk: { + content: description ?? 'no content', + score: 0, + }, + document: { + uri: url, + mimeType: content_type ?? 'text/html', + link: url, + }, + }; + sources.push(source); + } + + this.context.history?.addSources(this.name, sources); + return JSON.stringify(toolResult); } } export type BraveWebSearchExtensionConfiguration = ExtensionConfiguration & { apiKey: string; }; + +// see also https://api-dashboard.search.brave.com/app/documentation/web-search/responses +type SearchResponse = { + type: 'search'; + // discussions?: Discussions + // faq?: FAQ + // infobox?: GraphInfobox + // locations?: Locations + // mixed?: MixedResponse + // news?: News + // query?: Query + // videos?: Videos + web?: Search; + // summarizer?: Summarizer + // rich?: RichCallbackInfo +}; + +type Search = { + type: 'search'; + results: SearchResult[]; + family_friendly: boolean; +}; + +type Result = { + title: string; + url: string; + description?: string; + language: string; + page_age?: string; + page_fetched?: string; +}; + +type SearchResult = Result & { + type: 'search_result'; + content_type?: string; + extra_snippets?: string[]; +}; diff --git a/backend/src/extensions/tools/calculator.ts b/backend/src/extensions/tools/calculator.ts index e5429c703..821100d4e 100644 --- a/backend/src/extensions/tools/calculator.ts +++ b/backend/src/extensions/tools/calculator.ts @@ -59,10 +59,6 @@ class InternalTool extends NamedStructuredTool { 'Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.'; readonly displayName = 'Calculator'; - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({ input: z.string(), }); diff --git a/backend/src/extensions/tools/dall-e.ts b/backend/src/extensions/tools/dall-e.ts index 3ddcb9777..00180b3fc 100644 --- a/backend/src/extensions/tools/dall-e.ts +++ b/backend/src/extensions/tools/dall-e.ts @@ -1,6 +1,6 @@ -import { DallEAPIWrapper } from '@langchain/openai'; import { forwardRef, Inject, Logger } from '@nestjs/common'; import { CommandBus } from '@nestjs/cqrs'; +import OpenAI from 'openai'; import * as uuid from 'uuid'; import * as z from 'zod'; import { AuthService } from 'src/domain/auth'; @@ -70,18 +70,20 @@ export class DallEExtension implements Extension { } async test(configuration: DallEExtensionConfiguration) { - const wrapper = this.createWrapper(configuration); + const client = this.createDallEClient(configuration); - await wrapper.invoke('Dog'); + await client.images.generate({ + model: configuration.modelName, + prompt: 'test', + }); } async getMiddlewares(_user: User, extension: ExtensionEntity): Promise { const middleware = { invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { const tool = await context.cache.get(this.spec.name, extension.values, () => { - const wrapper = this.createWrapper(extension.values); - - return Promise.resolve(new InternalTool(this.authService, wrapper, this.commandBus, this.spec)); + const client = this.createDallEClient(extension.values); + return Promise.resolve(new InternalTool(this.authService, client, this.commandBus, this.spec, extension.values)); }); context.tools.push(tool); @@ -93,15 +95,9 @@ export class DallEExtension implements Extension { return Promise.resolve([middleware]); } - protected createWrapper(configuration: DallEExtensionConfiguration) { - const { apiKey, modelName, quality, size, style } = configuration; - - return new DallEAPIWrapper({ - modelName, - quality, - style, - size, - openAIApiKey: apiKey, + protected createDallEClient(configuration: DallEExtensionConfiguration) { + return new OpenAI({ + apiKey: configuration.apiKey, }); } } @@ -114,19 +110,16 @@ class InternalTool extends NamedStructuredTool { readonly returnDirect = false; private readonly logger = new Logger(InternalTool.name); - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({ input: z.string(), }); constructor( private readonly authService: AuthService, - private readonly wrapper: DallEAPIWrapper, + private readonly client: OpenAI, private readonly commandBus: CommandBus, spec: ExtensionSpec, + private readonly configuration: DallEExtensionConfiguration, ) { super(); this.name = spec.name; @@ -135,28 +128,33 @@ class InternalTool extends NamedStructuredTool { protected async _call({ input }: z.infer): Promise { try { - const image = (await this.wrapper.invoke(input)) as string; + const response = await this.client.images.generate({ + model: this.configuration.modelName, + prompt: input, + size: this.configuration.size, + response_format: 'b64_json', + }); - // Download the image to put it in our store. - const downloaded = await fetch(image); - if (!downloaded.ok) { - return 'Failed to download image'; - } + const imageData = response?.data?.[0]; - // Would be great to have a solution that streams the buffer to the database. - const buffer = await downloaded.arrayBuffer(); + if (!imageData) { + throw new Error('No image data received from OpenAI'); + } const id = uuid.v4(); + const contentType = response.output_format || 'png'; + let imageBuffer: Buffer; + let fileName; + + if (imageData.b64_json) { + imageBuffer = Buffer.from(imageData.b64_json, 'base64'); + fileName = `${id}.${contentType}`; + } else { + throw new Error('No valid image data format received from OpenAI'); + } await this.commandBus.execute( - new UploadBlob( - id, - Buffer.from(buffer), - downloaded.headers.get('Content-Type') || 'unknown', - downloaded.headers.get('filename') || 'unknown', - buffer.byteLength, - BlobCategory.LLM_IMAGE, - ), + new UploadBlob(id, imageBuffer, contentType, fileName, imageBuffer.length, BlobCategory.LLM_IMAGE), ); return `${this.authService.config.baseUrl}/blobs/${id}`; diff --git a/backend/src/extensions/tools/duckduckgo-web-search.ts b/backend/src/extensions/tools/duckduckgo-web-search.ts index 6024a9342..5de695905 100644 --- a/backend/src/extensions/tools/duckduckgo-web-search.ts +++ b/backend/src/extensions/tools/duckduckgo-web-search.ts @@ -1,6 +1,6 @@ -import { DuckDuckGoSearch } from '@langchain/community/tools/duckduckgo_search'; +import { search } from 'duck-duck-scrape'; import z from 'zod'; -import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedStructuredTool } from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedStructuredTool, Source } from 'src/domain/chat'; import { Extension, ExtensionConfiguration, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { I18nService } from '../../localization/i18n.service'; @@ -31,7 +31,7 @@ export class DuckduckgoWebSearchExtension implements Extension): Promise { const middleware = { invoke: async (context: ChatContext, getContext: GetContext, next: ChatNextDelegate): Promise => { - context.tools.push(new InternalTool(extension.values, extension.externalId)); + context.tools.push(new InternalTool(extension.values, extension.externalId, context)); return next(context); }, }; @@ -44,29 +44,57 @@ class InternalTool extends NamedStructuredTool { readonly name: string; readonly description: string; readonly displayName = 'DuckDuckGo'; - readonly duckduckgoSearch: DuckDuckGoSearch; - - get lc_id() { - return [...this.lc_namespace, this.name]; - } + readonly maxResults: number; readonly schema = z.object({ query: z.string().describe('The search query.'), }); - constructor(configuration: DuckduckgoWebSearchExtensionConfiguration, extensionExternalId: string) { + constructor( + configuration: DuckduckgoWebSearchExtensionConfiguration, + extensionExternalId: string, + private readonly context: ChatContext, + ) { super(); this.name = extensionExternalId; this.description = 'Performs a web search using DuckDuckGo.'; - - this.duckduckgoSearch = new DuckDuckGoSearch({ - maxResults: configuration.maxResults || 5, - }); + this.maxResults = configuration.maxResults || 5; } protected async _call(arg: z.infer): Promise { - return (await this.duckduckgoSearch.invoke(arg.query)) as string; + const { query } = arg; + + console.log(`DuckDuckGo Web Search for query: ${query}`); + + const items = (await search(query)).results.slice(0, this.maxResults); + + console.log(items); + + const toolResult = []; + const sources: Source[] = []; + for (const item of items) { + const { title, url, description } = item; + + toolResult.push({ title, link: url, snippet: description }); + + const source: Source = { + title: title ?? 'Search result', + chunk: { + content: description ?? 'no content', + score: 0, + }, + document: { + uri: url, + mimeType: 'text/html', + link: url, + }, + }; + sources.push(source); + } + + this.context.history?.addSources(this.name, sources); + return JSON.stringify(toolResult); } } diff --git a/backend/src/extensions/tools/files-conversation.ts b/backend/src/extensions/tools/files-conversation.ts index 0a09b9a63..f7929764c 100644 --- a/backend/src/extensions/tools/files-conversation.ts +++ b/backend/src/extensions/tools/files-conversation.ts @@ -111,10 +111,6 @@ class InternalTool extends NamedStructuredTool { readonly displayName = 'Files in chat'; private readonly logger = new Logger(`${FilesConversationExtension.name}$${InternalTool.name}`); - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({ query: z.string().describe('The query'), }); diff --git a/backend/src/extensions/tools/files-vision.ts b/backend/src/extensions/tools/files-vision.ts index 746fdca6e..2be804779 100644 --- a/backend/src/extensions/tools/files-vision.ts +++ b/backend/src/extensions/tools/files-vision.ts @@ -1,18 +1,8 @@ -import { BaseChatModel } from '@langchain/core/language_models/chat_models'; -import { StringOutputParser } from '@langchain/core/output_parsers'; -import { ChatPromptTemplate } from '@langchain/core/prompts'; import { forwardRef, Inject, Logger } from '@nestjs/common'; import { QueryBus } from '@nestjs/cqrs'; import { generateText } from 'ai'; import { z } from 'zod'; -import { - ChatContext, - ChatMiddleware, - ChatNextDelegate, - GetContext, - isLanguageModelContext, - NamedDynamicStructuredTool, -} from 'src/domain/chat'; +import { ChatContext, ChatMiddleware, ChatNextDelegate, GetContext, NamedDynamicStructuredTool } from 'src/domain/chat'; import { Extension, ExtensionEntity, ExtensionSpec } from 'src/domain/extensions'; import { User } from 'src/domain/users'; import { GetFiles, GetFilesResponse, matchExtension } from '../../domain/files'; @@ -140,35 +130,15 @@ export class FilesVisionExtension implements Extension ({ type: 'image', image: x })) }, - { role: 'user' as const, content: context.input }, - ], - ...llm.options, - }); - - return `Add the following content to your response without modification: ${text}`; - } else { - const messages: Parameters[0] = [ - { - role: 'human', - content: images.map((imageUrl) => ({ - type: 'image_url', - image_url: imageUrl, - })), - }, - ['user', context.input], - ]; - const prompt = ChatPromptTemplate.fromMessages(messages); - const outputParser = new StringOutputParser(); - //TODO: fixme - const outputChain = prompt.pipe(llm as unknown as BaseChatModel).pipe(outputParser); - const result = await outputChain.invoke({}); - return `Add the following content to your response without modification: ${result}`; - } + const { text } = await generateText({ + model: llm.model, + prompt: [ + { role: 'user' as const, content: images.map((x) => ({ type: 'image', image: x })) }, + { role: 'user' as const, content: context.input }, + ], + ...llm.options, + }); + return `Add the following content to your response without modification: ${text}`; } catch (err) { //TODO: for unsupported models there should be error handling this.logger.error('Error reading image', err); diff --git a/backend/src/extensions/tools/files.ts b/backend/src/extensions/tools/files.ts index 44a46501d..107237f3d 100644 --- a/backend/src/extensions/tools/files.ts +++ b/backend/src/extensions/tools/files.ts @@ -175,10 +175,6 @@ class InternalTool extends NamedStructuredTool { readonly displayName = 'Files'; private readonly logger = new Logger(`${FilesExtension.name}$${InternalTool.name}`); - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({ query: z.string().describe('The query'), }); diff --git a/backend/src/extensions/tools/gpt-image-1.ts b/backend/src/extensions/tools/gpt-image-1.ts index 0612aa41e..3412afd67 100644 --- a/backend/src/extensions/tools/gpt-image-1.ts +++ b/backend/src/extensions/tools/gpt-image-1.ts @@ -96,10 +96,6 @@ class InternalTool extends NamedStructuredTool { prompt: z.string(), }); - get lc_id() { - return [...this.lc_namespace, this.name]; - } - constructor( private readonly authService: AuthService, private readonly client: OpenAI, diff --git a/backend/src/extensions/tools/grounding-with-bing.ts b/backend/src/extensions/tools/grounding-with-bing.ts index b4e342861..f6e6eed66 100644 --- a/backend/src/extensions/tools/grounding-with-bing.ts +++ b/backend/src/extensions/tools/grounding-with-bing.ts @@ -95,10 +95,6 @@ class InternalTool extends NamedStructuredTool { readonly model: string; private readonly logger = new Logger(InternalTool.name); - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({ query: z.string().describe('The search query.'), }); diff --git a/backend/src/extensions/tools/open-api.ts b/backend/src/extensions/tools/open-api.ts index e2bc8f1ca..a0a316ca4 100644 --- a/backend/src/extensions/tools/open-api.ts +++ b/backend/src/extensions/tools/open-api.ts @@ -120,10 +120,6 @@ class InternalTool extends NamedStructuredTool { readonly displayName: string; readonly description: string; - get lc_id() { - return [...this.lc_namespace, this.name]; - } - constructor( private readonly cache: CacheRepository, private readonly context: ChatContext, diff --git a/backend/src/extensions/tools/whole-files-conversation.ts b/backend/src/extensions/tools/whole-files-conversation.ts index ef42bd6d5..09479eeab 100644 --- a/backend/src/extensions/tools/whole-files-conversation.ts +++ b/backend/src/extensions/tools/whole-files-conversation.ts @@ -141,10 +141,6 @@ class InternalTool extends NamedStructuredTool { readonly displayName = 'Complete Files'; private readonly logger = new Logger(`${WholeFilesExtension.name}$${InternalTool.name}`); - get lc_id() { - return [...this.lc_namespace, this.name]; - } - readonly schema = z.object({}); constructor( diff --git a/backend/src/localization/i18n/de/texts.json b/backend/src/localization/i18n/de/texts.json index b5de4d637..22e15e745 100644 --- a/backend/src/localization/i18n/de/texts.json +++ b/backend/src/localization/i18n/de/texts.json @@ -7,7 +7,8 @@ "instanceName": "Instance Name", "apiVersion": "API-Version", "temperature": "Temperatur", - "effort": "Effort", + "reasoningEffort": "Reasoning Effort", + "reasoningSummary": "Reasoning Zusammenfassung", "seed": "Seed", "presencePenalty": "Presence Penalty", "frequencyPenalty": "Frequency Penalty", diff --git a/backend/src/localization/i18n/en/texts.json b/backend/src/localization/i18n/en/texts.json index 6c585a0a4..8993869d1 100644 --- a/backend/src/localization/i18n/en/texts.json +++ b/backend/src/localization/i18n/en/texts.json @@ -7,7 +7,8 @@ "instanceName": "Instance Name", "apiVersion": "API Version", "temperature": "Temperature", - "effort": "Effort", + "reasoningEffort": "Reasoning Effort", + "reasoningSummary": "Reasoning Summary", "seed": "Seed", "presencePenalty": "Presence Penalty", "frequencyPenalty": "Frequency Penalty", diff --git a/backend/src/metrics/opentelemetry.module.ts b/backend/src/metrics/opentelemetry.module.ts new file mode 100644 index 000000000..3ed35714c --- /dev/null +++ b/backend/src/metrics/opentelemetry.module.ts @@ -0,0 +1,34 @@ +import { Module, OnApplicationBootstrap, OnApplicationShutdown } from '@nestjs/common'; +import { ConfigModule, ConfigService } from '@nestjs/config'; +import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node'; +import { NodeSDK } from '@opentelemetry/sdk-node'; +import { LangfuseExporter } from 'langfuse-vercel'; + +@Module({ + imports: [ConfigModule], +}) +export class OpenTelemetryModule implements OnApplicationBootstrap, OnApplicationShutdown { + private sdk?: NodeSDK; + + constructor(private readonly configService: ConfigService) {} + + onApplicationBootstrap() { + const publicKey = this.configService.get('LANGFUSE_PUBLIC_KEY'); + const secretKey = this.configService.get('LANGFUSE_SECRET_KEY'); + const baseUrl = this.configService.get('LANGFUSE_BASE_URL', 'https://cloud.langfuse.com'); + + if (publicKey && secretKey && baseUrl) { + this.sdk = new NodeSDK({ + traceExporter: new LangfuseExporter(), + instrumentations: [getNodeAutoInstrumentations()], + }); + this.sdk.start(); + } + } + + async onApplicationShutdown(_signal?: string) { + if (this.sdk) { + await this.sdk.shutdown(); + } + } +} diff --git a/backend/src/migrations/1758289967016-replaceAzureReasoningExtensionByAzureExtension.ts b/backend/src/migrations/1758289967016-replaceAzureReasoningExtensionByAzureExtension.ts new file mode 100644 index 000000000..f4394db38 --- /dev/null +++ b/backend/src/migrations/1758289967016-replaceAzureReasoningExtensionByAzureExtension.ts @@ -0,0 +1,11 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class ReplaceAzureReasoningExtensionByAzureExtension1758289967016 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `update company_chat.extensions set "name" = 'azure-open-ai-model' where "name" = 'azure-open-ai-model-reasoning'`, + ); + } + + public async down(_: QueryRunner): Promise {} +} diff --git a/e2e/tests/utils/helper.ts b/e2e/tests/utils/helper.ts index 8637a8604..6dd497c1d 100644 --- a/e2e/tests/utils/helper.ts +++ b/e2e/tests/utils/helper.ts @@ -407,7 +407,6 @@ export async function addAzureModelToConfiguration( await page.getByLabel('Instance Name').fill('cccc-testing'); await page.getByLabel('Seed').fill('42'); await page.getByLabel('Temperature').fill('0'); - await selectOption(page, 'API Version', '2023-05-15'); await page.getByRole('button', { name: 'Test' }).click(); const loader = page.locator('.mantine-Button-loader'); await loader.waitFor({ state: 'visible' }); @@ -447,11 +446,7 @@ export async function addSystemPromptToConfiguration( await page.getByLabel('Create Extension').getByRole('tab', { name: 'Other' }).click(); - await page - .locator('*') - .filter({ hasText: /^Prompt/ }) - .nth(1) - .click(); + await page.getByRole('heading', { name: 'Prompt', exact: true }).click(); await page.getByLabel('Text').fill(prompt.text); if (prompt.configurable) { diff --git a/helm-chart/Chart.yaml b/helm-chart/Chart.yaml index 398fe1661..6df800b50 100644 --- a/helm-chart/Chart.yaml +++ b/helm-chart/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: c4-genai-suite description: A Helm chart for the c4 GenAI Suite. -version: 9.2.0 +version: 9.3.0 sources: - https://github.com/codecentric/c4-genai-suite/ diff --git a/package-lock.json b/package-lock.json index 11ea9a889..e6d403354 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "company-chat", + "name": "c4-genai-suite", "lockfileVersion": 3, "requires": true, "packages": { From 339c4b43557622785bd067bbd1179bc888ef7c56 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Sep 2025 14:50:03 +0000 Subject: [PATCH 049/110] chore(deps-dev): bump mypy from 1.18.1 to 1.18.2 in /services/reis Bumps [mypy](https://github.com/python/mypy) from 1.18.1 to 1.18.2. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.18.1...v1.18.2) --- updated-dependencies: - dependency-name: mypy dependency-version: 1.18.2 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 80 ++++++++++++++++++------------------ services/reis/pyproject.toml | 2 +- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 673c633fd..5274c06ae 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -2587,50 +2587,50 @@ files = [ [[package]] name = "mypy" -version = "1.18.1" +version = "1.18.2" description = "Optional static typing for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "mypy-1.18.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2761b6ae22a2b7d8e8607fb9b81ae90bc2e95ec033fd18fa35e807af6c657763"}, - {file = "mypy-1.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5b10e3ea7f2eec23b4929a3fabf84505da21034a4f4b9613cda81217e92b74f3"}, - {file = "mypy-1.18.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:261fbfced030228bc0f724d5d92f9ae69f46373bdfd0e04a533852677a11dbea"}, - {file = "mypy-1.18.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4dc6b34a1c6875e6286e27d836a35c0d04e8316beac4482d42cfea7ed2527df8"}, - {file = "mypy-1.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1cabb353194d2942522546501c0ff75c4043bf3b63069cb43274491b44b773c9"}, - {file = "mypy-1.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:738b171690c8e47c93569635ee8ec633d2cdb06062f510b853b5f233020569a9"}, - {file = "mypy-1.18.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c903857b3e28fc5489e54042684a9509039ea0aedb2a619469438b544ae1961"}, - {file = "mypy-1.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a0c8392c19934c2b6c65566d3a6abdc6b51d5da7f5d04e43f0eb627d6eeee65"}, - {file = "mypy-1.18.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f85eb7efa2ec73ef63fc23b8af89c2fe5bf2a4ad985ed2d3ff28c1bb3c317c92"}, - {file = "mypy-1.18.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:82ace21edf7ba8af31c3308a61dc72df30500f4dbb26f99ac36b4b80809d7e94"}, - {file = "mypy-1.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a2dfd53dfe632f1ef5d161150a4b1f2d0786746ae02950eb3ac108964ee2975a"}, - {file = "mypy-1.18.1-cp311-cp311-win_amd64.whl", hash = "sha256:320f0ad4205eefcb0e1a72428dde0ad10be73da9f92e793c36228e8ebf7298c0"}, - {file = "mypy-1.18.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:502cde8896be8e638588b90fdcb4c5d5b8c1b004dfc63fd5604a973547367bb9"}, - {file = "mypy-1.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7509549b5e41be279afc1228242d0e397f1af2919a8f2877ad542b199dc4083e"}, - {file = "mypy-1.18.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5956ecaabb3a245e3f34100172abca1507be687377fe20e24d6a7557e07080e2"}, - {file = "mypy-1.18.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8750ceb014a96c9890421c83f0db53b0f3b8633e2864c6f9bc0a8e93951ed18d"}, - {file = "mypy-1.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fb89ea08ff41adf59476b235293679a6eb53a7b9400f6256272fb6029bec3ce5"}, - {file = "mypy-1.18.1-cp312-cp312-win_amd64.whl", hash = "sha256:2657654d82fcd2a87e02a33e0d23001789a554059bbf34702d623dafe353eabf"}, - {file = "mypy-1.18.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d70d2b5baf9b9a20bc9c730015615ae3243ef47fb4a58ad7b31c3e0a59b5ef1f"}, - {file = "mypy-1.18.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b8367e33506300f07a43012fc546402f283c3f8bcff1dc338636affb710154ce"}, - {file = "mypy-1.18.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:913f668ec50c3337b89df22f973c1c8f0b29ee9e290a8b7fe01cc1ef7446d42e"}, - {file = "mypy-1.18.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a0e70b87eb27b33209fa4792b051c6947976f6ab829daa83819df5f58330c71"}, - {file = "mypy-1.18.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c378d946e8a60be6b6ede48c878d145546fb42aad61df998c056ec151bf6c746"}, - {file = "mypy-1.18.1-cp313-cp313-win_amd64.whl", hash = "sha256:2cd2c1e0f3a7465f22731987fff6fc427e3dcbb4ca5f7db5bbeaff2ff9a31f6d"}, - {file = "mypy-1.18.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ba24603c58e34dd5b096dfad792d87b304fc6470cbb1c22fd64e7ebd17edcc61"}, - {file = "mypy-1.18.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ed36662fb92ae4cb3cacc682ec6656208f323bbc23d4b08d091eecfc0863d4b5"}, - {file = "mypy-1.18.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:040ecc95e026f71a9ad7956fea2724466602b561e6a25c2e5584160d3833aaa8"}, - {file = "mypy-1.18.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:937e3ed86cb731276706e46e03512547e43c391a13f363e08d0fee49a7c38a0d"}, - {file = "mypy-1.18.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1f95cc4f01c0f1701ca3b0355792bccec13ecb2ec1c469e5b85a6ef398398b1d"}, - {file = "mypy-1.18.1-cp314-cp314-win_amd64.whl", hash = "sha256:e4f16c0019d48941220ac60b893615be2f63afedaba6a0801bdcd041b96991ce"}, - {file = "mypy-1.18.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e37763af63a8018308859bc83d9063c501a5820ec5bd4a19f0a2ac0d1c25c061"}, - {file = "mypy-1.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:51531b6e94f34b8bd8b01dee52bbcee80daeac45e69ec5c36e25bce51cbc46e6"}, - {file = "mypy-1.18.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dbfdea20e90e9c5476cea80cfd264d8e197c6ef2c58483931db2eefb2f7adc14"}, - {file = "mypy-1.18.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:99f272c9b59f5826fffa439575716276d19cbf9654abc84a2ba2d77090a0ba14"}, - {file = "mypy-1.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8c05a7f8c00300a52f3a4fcc95a185e99bf944d7e851ff141bae8dcf6dcfeac4"}, - {file = "mypy-1.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:2fbcecbe5cf213ba294aa8c0b8c104400bf7bb64db82fb34fe32a205da4b3531"}, - {file = "mypy-1.18.1-py3-none-any.whl", hash = "sha256:b76a4de66a0ac01da1be14ecc8ae88ddea33b8380284a9e3eae39d57ebcbe26e"}, - {file = "mypy-1.18.1.tar.gz", hash = "sha256:9e988c64ad3ac5987f43f5154f884747faf62141b7f842e87465b45299eea5a9"}, + {file = "mypy-1.18.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1eab0cf6294dafe397c261a75f96dc2c31bffe3b944faa24db5def4e2b0f77c"}, + {file = "mypy-1.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a780ca61fc239e4865968ebc5240bb3bf610ef59ac398de9a7421b54e4a207e"}, + {file = "mypy-1.18.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:448acd386266989ef11662ce3c8011fd2a7b632e0ec7d61a98edd8e27472225b"}, + {file = "mypy-1.18.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f9e171c465ad3901dc652643ee4bffa8e9fef4d7d0eece23b428908c77a76a66"}, + {file = "mypy-1.18.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:592ec214750bc00741af1f80cbf96b5013d81486b7bb24cb052382c19e40b428"}, + {file = "mypy-1.18.2-cp310-cp310-win_amd64.whl", hash = "sha256:7fb95f97199ea11769ebe3638c29b550b5221e997c63b14ef93d2e971606ebed"}, + {file = "mypy-1.18.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:807d9315ab9d464125aa9fcf6d84fde6e1dc67da0b6f80e7405506b8ac72bc7f"}, + {file = "mypy-1.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:776bb00de1778caf4db739c6e83919c1d85a448f71979b6a0edd774ea8399341"}, + {file = "mypy-1.18.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1379451880512ffce14505493bd9fe469e0697543717298242574882cf8cdb8d"}, + {file = "mypy-1.18.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1331eb7fd110d60c24999893320967594ff84c38ac6d19e0a76c5fd809a84c86"}, + {file = "mypy-1.18.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3ca30b50a51e7ba93b00422e486cbb124f1c56a535e20eff7b2d6ab72b3b2e37"}, + {file = "mypy-1.18.2-cp311-cp311-win_amd64.whl", hash = "sha256:664dc726e67fa54e14536f6e1224bcfce1d9e5ac02426d2326e2bb4e081d1ce8"}, + {file = "mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34"}, + {file = "mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764"}, + {file = "mypy-1.18.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d6c838e831a062f5f29d11c9057c6009f60cb294fea33a98422688181fe2893"}, + {file = "mypy-1.18.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01199871b6110a2ce984bde85acd481232d17413868c9807e95c1b0739a58914"}, + {file = "mypy-1.18.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a2afc0fa0b0e91b4599ddfe0f91e2c26c2b5a5ab263737e998d6817874c5f7c8"}, + {file = "mypy-1.18.2-cp312-cp312-win_amd64.whl", hash = "sha256:d8068d0afe682c7c4897c0f7ce84ea77f6de953262b12d07038f4d296d547074"}, + {file = "mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc"}, + {file = "mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e"}, + {file = "mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986"}, + {file = "mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d"}, + {file = "mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba"}, + {file = "mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544"}, + {file = "mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce"}, + {file = "mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d"}, + {file = "mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c"}, + {file = "mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb"}, + {file = "mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075"}, + {file = "mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf"}, + {file = "mypy-1.18.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25a9c8fb67b00599f839cf472713f54249a62efd53a54b565eb61956a7e3296b"}, + {file = "mypy-1.18.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2b9c7e284ee20e7598d6f42e13ca40b4928e6957ed6813d1ab6348aa3f47133"}, + {file = "mypy-1.18.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d6985ed057513e344e43a26cc1cd815c7a94602fb6a3130a34798625bc2f07b6"}, + {file = "mypy-1.18.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22f27105f1525ec024b5c630c0b9f36d5c1cc4d447d61fe51ff4bd60633f47ac"}, + {file = "mypy-1.18.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:030c52d0ea8144e721e49b1f68391e39553d7451f0c3f8a7565b59e19fcb608b"}, + {file = "mypy-1.18.2-cp39-cp39-win_amd64.whl", hash = "sha256:aa5e07ac1a60a253445797e42b8b2963c9675563a94f11291ab40718b016a7a0"}, + {file = "mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e"}, + {file = "mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b"}, ] [package.dependencies] @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "cd8c98346ade17f0467a31d0a0bd10d3e71b3c993f6d95a9c55e930fcfda92a7" +content-hash = "c9a6807cb9202be7859470b6664598e20859ce03f835a683e6ad3327e37e6e21" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index e79f7054a..c8416fb62 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -31,7 +31,7 @@ langchain-nvidia-ai-endpoints = "^0.3.18" [tool.poetry.group.dev.dependencies] ruff = "0.13.0" -mypy = "1.18.1" +mypy = "1.18.2" pre-commit = "4.3.0" pytest = "8.4.2" pytest-cov = "7.0.0" From a8fa5ba5dc64fc64ec38f35e8164f36a3e33498e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Sep 2025 15:11:26 +0000 Subject: [PATCH 050/110] chore(deps-dev): bump ruff from 0.13.0 to 0.13.1 in /services/reis Bumps [ruff](https://github.com/astral-sh/ruff) from 0.13.0 to 0.13.1. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.13.0...0.13.1) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.13.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- services/reis/poetry.lock | 42 ++++++++++++++++++------------------ services/reis/pyproject.toml | 2 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/services/reis/poetry.lock b/services/reis/poetry.lock index 5274c06ae..dc0fa838e 100644 --- a/services/reis/poetry.lock +++ b/services/reis/poetry.lock @@ -4949,31 +4949,31 @@ files = [ [[package]] name = "ruff" -version = "0.13.0" +version = "0.13.1" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.13.0-py3-none-linux_armv6l.whl", hash = "sha256:137f3d65d58ee828ae136a12d1dc33d992773d8f7644bc6b82714570f31b2004"}, - {file = "ruff-0.13.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:21ae48151b66e71fd111b7d79f9ad358814ed58c339631450c66a4be33cc28b9"}, - {file = "ruff-0.13.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:64de45f4ca5441209e41742d527944635a05a6e7c05798904f39c85bafa819e3"}, - {file = "ruff-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b2c653ae9b9d46e0ef62fc6fbf5b979bda20a0b1d2b22f8f7eb0cde9f4963b8"}, - {file = "ruff-0.13.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cec632534332062bc9eb5884a267b689085a1afea9801bf94e3ba7498a2d207"}, - {file = "ruff-0.13.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd628101d9f7d122e120ac7c17e0a0f468b19bc925501dbe03c1cb7f5415b24"}, - {file = "ruff-0.13.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afe37db8e1466acb173bb2a39ca92df00570e0fd7c94c72d87b51b21bb63efea"}, - {file = "ruff-0.13.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f96a8d90bb258d7d3358b372905fe7333aaacf6c39e2408b9f8ba181f4b6ef2"}, - {file = "ruff-0.13.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b5e3d883e4f924c5298e3f2ee0f3085819c14f68d1e5b6715597681433f153"}, - {file = "ruff-0.13.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03447f3d18479df3d24917a92d768a89f873a7181a064858ea90a804a7538991"}, - {file = "ruff-0.13.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:fbc6b1934eb1c0033da427c805e27d164bb713f8e273a024a7e86176d7f462cf"}, - {file = "ruff-0.13.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a8ab6a3e03665d39d4a25ee199d207a488724f022db0e1fe4002968abdb8001b"}, - {file = "ruff-0.13.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d2a5c62f8ccc6dd2fe259917482de7275cecc86141ee10432727c4816235bc41"}, - {file = "ruff-0.13.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b7b85ca27aeeb1ab421bc787009831cffe6048faae08ad80867edab9f2760945"}, - {file = "ruff-0.13.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:79ea0c44a3032af768cabfd9616e44c24303af49d633b43e3a5096e009ebe823"}, - {file = "ruff-0.13.0-py3-none-win32.whl", hash = "sha256:4e473e8f0e6a04e4113f2e1de12a5039579892329ecc49958424e5568ef4f768"}, - {file = "ruff-0.13.0-py3-none-win_amd64.whl", hash = "sha256:48e5c25c7a3713eea9ce755995767f4dcd1b0b9599b638b12946e892123d1efb"}, - {file = "ruff-0.13.0-py3-none-win_arm64.whl", hash = "sha256:ab80525317b1e1d38614addec8ac954f1b3e662de9d59114ecbf771d00cf613e"}, - {file = "ruff-0.13.0.tar.gz", hash = "sha256:5b4b1ee7eb35afae128ab94459b13b2baaed282b1fb0f472a73c82c996c8ae60"}, + {file = "ruff-0.13.1-py3-none-linux_armv6l.whl", hash = "sha256:b2abff595cc3cbfa55e509d89439b5a09a6ee3c252d92020bd2de240836cf45b"}, + {file = "ruff-0.13.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:4ee9f4249bf7f8bb3984c41bfaf6a658162cdb1b22e3103eabc7dd1dc5579334"}, + {file = "ruff-0.13.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5c5da4af5f6418c07d75e6f3224e08147441f5d1eac2e6ce10dcce5e616a3bae"}, + {file = "ruff-0.13.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80524f84a01355a59a93cef98d804e2137639823bcee2931f5028e71134a954e"}, + {file = "ruff-0.13.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff7f5ce8d7988767dd46a148192a14d0f48d1baea733f055d9064875c7d50389"}, + {file = "ruff-0.13.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c55d84715061f8b05469cdc9a446aa6c7294cd4bd55e86a89e572dba14374f8c"}, + {file = "ruff-0.13.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:ac57fed932d90fa1624c946dc67a0a3388d65a7edc7d2d8e4ca7bddaa789b3b0"}, + {file = "ruff-0.13.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c366a71d5b4f41f86a008694f7a0d75fe409ec298685ff72dc882f882d532e36"}, + {file = "ruff-0.13.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4ea9d1b5ad3e7a83ee8ebb1229c33e5fe771e833d6d3dcfca7b77d95b060d38"}, + {file = "ruff-0.13.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0f70202996055b555d3d74b626406476cc692f37b13bac8828acff058c9966a"}, + {file = "ruff-0.13.1-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:f8cff7a105dad631085d9505b491db33848007d6b487c3c1979dd8d9b2963783"}, + {file = "ruff-0.13.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:9761e84255443316a258dd7dfbd9bfb59c756e52237ed42494917b2577697c6a"}, + {file = "ruff-0.13.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:3d376a88c3102ef228b102211ef4a6d13df330cb0f5ca56fdac04ccec2a99700"}, + {file = "ruff-0.13.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:cbefd60082b517a82c6ec8836989775ac05f8991715d228b3c1d86ccc7df7dae"}, + {file = "ruff-0.13.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:dd16b9a5a499fe73f3c2ef09a7885cb1d97058614d601809d37c422ed1525317"}, + {file = "ruff-0.13.1-py3-none-win32.whl", hash = "sha256:55e9efa692d7cb18580279f1fbb525146adc401f40735edf0aaeabd93099f9a0"}, + {file = "ruff-0.13.1-py3-none-win_amd64.whl", hash = "sha256:3a3fb595287ee556de947183489f636b9f76a72f0fa9c028bdcabf5bab2cc5e5"}, + {file = "ruff-0.13.1-py3-none-win_arm64.whl", hash = "sha256:c0bae9ffd92d54e03c2bf266f466da0a65e145f298ee5b5846ed435f6a00518a"}, + {file = "ruff-0.13.1.tar.gz", hash = "sha256:88074c3849087f153d4bb22e92243ad4c1b366d7055f98726bc19aa08dc12d51"}, ] [[package]] @@ -6220,4 +6220,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "<4.0,>=3.12.0" -content-hash = "c9a6807cb9202be7859470b6664598e20859ce03f835a683e6ad3327e37e6e21" +content-hash = "eb2011f646be0270ab91e641723e339ce23f044bfda9311c6240ff3a282b9496" diff --git a/services/reis/pyproject.toml b/services/reis/pyproject.toml index c8416fb62..8db2ea63d 100644 --- a/services/reis/pyproject.toml +++ b/services/reis/pyproject.toml @@ -30,7 +30,7 @@ langchain-aws = "^0.2.33" langchain-nvidia-ai-endpoints = "^0.3.18" [tool.poetry.group.dev.dependencies] -ruff = "0.13.0" +ruff = "0.13.1" mypy = "1.18.2" pre-commit = "4.3.0" pytest = "8.4.2" From 126b37fddcfb448c906bc634f9536a0266ab9fbd Mon Sep 17 00:00:00 2001 From: Ralf Brauchler Date: Fri, 19 Sep 2025 17:35:47 +0200 Subject: [PATCH 051/110] feat(frontend): enhance-assistant-selection (#379) * feat: enhance assistant selection with persistence and search - Add persistent assistant selection state - Implement searchable dropdown with larger UI - Fix new chat creation to use last selected assistant * feat: implement assistant selection improvements with basic tests * fix: add MantineProvider to Configuration test wrapper * feat: enhance assistant selection with improved UX and test compatibility - Add persistent last assistant selection using localStorage - Increase dropdown size and improve search functionality - Add keyboard navigation support (Enter/Tab selection) - Fix E2E test compatibility by removing custom renderOption - Maintain all core UX improvements while ensuring test stability * chore: revert/delete some changes * feat(frontend): adjust persistence functions and rename persistent variable --------- Co-authored-by: Andres --- frontend/src/pages/chat/NewChatRedirect.tsx | 8 +++--- .../pages/chat/conversation/Configuration.tsx | 27 ++++++++++++++++--- .../src/pages/chat/state/listOfAssistants.ts | 21 +++++++++++++-- frontend/src/pages/chat/state/listOfChats.ts | 24 ++++++++++++----- 4 files changed, 63 insertions(+), 17 deletions(-) diff --git a/frontend/src/pages/chat/NewChatRedirect.tsx b/frontend/src/pages/chat/NewChatRedirect.tsx index 923f92601..ecb62f215 100644 --- a/frontend/src/pages/chat/NewChatRedirect.tsx +++ b/frontend/src/pages/chat/NewChatRedirect.tsx @@ -1,21 +1,21 @@ import { useEffect, useRef } from 'react'; -import { useStateOfSelectedAssistantId } from 'src/pages/chat/state/chat'; +import { useStateOfSelectedAssistant } from 'src/pages/chat/state/listOfAssistants'; import { useStateOfAssistants } from 'src/pages/chat/state/listOfAssistants'; import { useMutateNewChat } from './state/listOfChats'; export function NewChatRedirect() { const createNewConversation = useMutateNewChat(); - const assistantId = useStateOfSelectedAssistantId(); + const assistant = useStateOfSelectedAssistant(); const assistants = useStateOfAssistants(); const hasRun = useRef(false); useEffect(() => { if (!hasRun.current && assistants.length) { hasRun.current = true; - createNewConversation.mutate(assistantId); + createNewConversation.mutate(assistant.id); } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [assistantId, createNewConversation]); + }, [assistant, createNewConversation]); return null; } diff --git a/frontend/src/pages/chat/conversation/Configuration.tsx b/frontend/src/pages/chat/conversation/Configuration.tsx index 4bdca60dd..e38bed08c 100644 --- a/frontend/src/pages/chat/conversation/Configuration.tsx +++ b/frontend/src/pages/chat/conversation/Configuration.tsx @@ -1,6 +1,7 @@ import { ActionIcon, Select, SelectProps, Text } from '@mantine/core'; -import { IconSettings } from '@tabler/icons-react'; +import { IconChevronDown, IconSettings } from '@tabler/icons-react'; import { useState } from 'react'; +import { usePersistentState } from 'src/hooks'; import { ConfigurationUserValuesModal } from 'src/pages/chat/conversation/ConfigurationUserValuesModal'; import { useStateOfAssistants, useStateOfSelectedAssistant } from 'src/pages/chat/state/listOfAssistants'; import { isMobile } from 'src/pages/utils'; @@ -18,9 +19,11 @@ export const Configuration = ({ canEditConfiguration }: ConfigurationProps) => { const [showModal, setShowModal] = useState(false); + const [, setPersistentAssistantId] = usePersistentState('selectedAssistantId', null); + const renderSelectOption: SelectProps['renderOption'] = ({ option }) => (
- {option.label} + {option.label} {assistants.find((c) => c.id + '' === option.value)?.description} @@ -29,20 +32,36 @@ export const Configuration = ({ canEditConfiguration }: ConfigurationProps) => { const close = () => setShowModal(false); + const handleOnChange = (value: string | null) => { + if (value) { + updateChat.mutate({ configurationId: +value }); + setPersistentAssistantId(+value); + } + }; + return (