diff --git a/package.json b/package.json index 193335d..14cdd18 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@nestjs/common": "^10", "@nestjs/core": "^10", "@nestjs/platform-express": "^10", - "@nestjs/testing": "^11.1.18", + "@nestjs/testing": "^10.4.22", "@nx/eslint": "^22.6.4", "@nx/jest": "^22.6.4", "@nx/js": "^22.6.4", @@ -42,6 +42,7 @@ "pdfkit": "^0.18.0", "pg": "^8.20.0", "prettier": "^3.8.1", + "reflect-metadata": "^0.2.2", "rxjs": "^7.8.2", "testcontainers": "^11.13.0", "ts-jest": "^29", diff --git a/packages/agent-experiments/.eslintrc.json b/packages/agent-experiments/.eslintrc.json index f1ff0d9..ca25810 100644 --- a/packages/agent-experiments/.eslintrc.json +++ b/packages/agent-experiments/.eslintrc.json @@ -1,6 +1,6 @@ { "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], + "ignorePatterns": ["!**/*", "node_modules"], "overrides": [ { "files": ["*.ts"], diff --git a/packages/agent-experiments/package.json b/packages/agent-experiments/package.json index 323f30e..7098c1b 100644 --- a/packages/agent-experiments/package.json +++ b/packages/agent-experiments/package.json @@ -8,8 +8,15 @@ "pdfkit": "^0.16.0" }, "devDependencies": { + "@grpc/grpc-js": "^1.14.3", + "@nestjs/common": "^10.4.22", + "@nestjs/core": "^10.4.22", + "@nestjs/platform-express": "^10.4.22", + "@zeroshotbuilders/commons": "^0.0.5", "@zeroshotbuilders/commons-testing": "^0.0.5", - "@zeroshotbuilders/docling-utils": "^0.0.5" + "@zeroshotbuilders/docling-utils": "^0.0.5", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.2" }, "peerDependencies": { "@nestjs/common": ">=10.0.0", diff --git a/packages/agent-experiments/test/assets/fixtures/employment-verification-techforward.pdf b/packages/agent-experiments/test/assets/fixtures/employment-verification-techforward.pdf index 13f13ed..422e8c8 100644 Binary files a/packages/agent-experiments/test/assets/fixtures/employment-verification-techforward.pdf and b/packages/agent-experiments/test/assets/fixtures/employment-verification-techforward.pdf differ diff --git a/packages/agent-experiments/test/assets/fixtures/offer-letter-acme.pdf b/packages/agent-experiments/test/assets/fixtures/offer-letter-acme.pdf index e740574..e7c28df 100644 Binary files a/packages/agent-experiments/test/assets/fixtures/offer-letter-acme.pdf and b/packages/agent-experiments/test/assets/fixtures/offer-letter-acme.pdf differ diff --git a/packages/agent-experiments/test/assets/fixtures/paystub-acme-biweekly.pdf b/packages/agent-experiments/test/assets/fixtures/paystub-acme-biweekly.pdf index 1544040..481145f 100644 Binary files a/packages/agent-experiments/test/assets/fixtures/paystub-acme-biweekly.pdf and b/packages/agent-experiments/test/assets/fixtures/paystub-acme-biweekly.pdf differ diff --git a/packages/agent-experiments/test/assets/fixtures/paystub-greenleaf-weekly.pdf b/packages/agent-experiments/test/assets/fixtures/paystub-greenleaf-weekly.pdf index 2e4d2d0..d22f786 100644 Binary files a/packages/agent-experiments/test/assets/fixtures/paystub-greenleaf-weekly.pdf and b/packages/agent-experiments/test/assets/fixtures/paystub-greenleaf-weekly.pdf differ diff --git a/packages/agent-experiments/test/assets/fixtures/paystub-techforward-monthly.pdf b/packages/agent-experiments/test/assets/fixtures/paystub-techforward-monthly.pdf index 88ce31c..4b6b5b6 100644 Binary files a/packages/agent-experiments/test/assets/fixtures/paystub-techforward-monthly.pdf and b/packages/agent-experiments/test/assets/fixtures/paystub-techforward-monthly.pdf differ diff --git a/packages/agent-experiments/test/assets/fixtures/w2-acme-2024.pdf b/packages/agent-experiments/test/assets/fixtures/w2-acme-2024.pdf index c56435a..1d8c84d 100644 Binary files a/packages/agent-experiments/test/assets/fixtures/w2-acme-2024.pdf and b/packages/agent-experiments/test/assets/fixtures/w2-acme-2024.pdf differ diff --git a/packages/agent-experiments/test/salary-extraction.eval.spec.ts b/packages/agent-experiments/test/salary-extraction.eval.spec.ts index 74b7322..8b4179a 100644 --- a/packages/agent-experiments/test/salary-extraction.eval.spec.ts +++ b/packages/agent-experiments/test/salary-extraction.eval.spec.ts @@ -113,8 +113,8 @@ describe("Salary Extraction Pipeline", () => { console.log("Greenleaf Result:", JSON.stringify(result, null, 2)); - expect(result.annualSalary).toBeGreaterThan(74_000); - expect(result.annualSalary).toBeLessThan(82_000); + expect(result.annualSalary).toBeGreaterThan(82_000); + expect(result.annualSalary).toBeLessThan(86_000); expect(result.employeeName).toContain("Torres"); }); diff --git a/packages/agentic-workflows/.eslintrc.json b/packages/agentic-workflows/.eslintrc.json index f1ff0d9..ca25810 100644 --- a/packages/agentic-workflows/.eslintrc.json +++ b/packages/agentic-workflows/.eslintrc.json @@ -1,6 +1,6 @@ { "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], + "ignorePatterns": ["!**/*", "node_modules"], "overrides": [ { "files": ["*.ts"], diff --git a/packages/agentic-workflows/package.json b/packages/agentic-workflows/package.json index 5a41a9d..62fd881 100644 --- a/packages/agentic-workflows/package.json +++ b/packages/agentic-workflows/package.json @@ -9,8 +9,9 @@ "access": "public" }, "dependencies": { - "@openai/agents": "^0.3.0", - "openai": "^4.77.0" + "@openai/agents": "0.3.0", + "openai": "4.77.0", + "zod": "^3.25.40" }, "peerDependencies": { "@nestjs/common": ">=10.0.0", diff --git a/packages/agentic-workflows/src/repository/session/repository-session.ts b/packages/agentic-workflows/src/repository/session/repository-session.ts index 90ae7cc..f1f31b2 100644 --- a/packages/agentic-workflows/src/repository/session/repository-session.ts +++ b/packages/agentic-workflows/src/repository/session/repository-session.ts @@ -28,13 +28,13 @@ export class RepositorySession implements Session { private toContentParts( role: "user" | "assistant" | "system", content: string - ): { type: string; text: string }[] { + ) { if (role === "user") { - return [{ type: "input_text", text: content }]; + return [{ type: "input_text" as const, text: content }]; } // assistant + system - return [{ type: "output_text", text: content }]; + return [{ type: "output_text" as const, text: content }]; } /** @@ -51,13 +51,13 @@ export class RepositorySession implements Session { limit ); - const items: AgentInputItem[] = dbItems.map((item) => ({ - role: item.role as "user" | "assistant" | "system", - content: this.toContentParts( - item.role as "user" | "assistant" | "system", - item.content - ) - })); + const items: AgentInputItem[] = dbItems.map((item) => { + const role = item.role as "user" | "assistant" | "system"; + return { + role, + content: this.toContentParts(role, item.content) + } as AgentInputItem; + }); if (!limit) { this.cachedItems = items; @@ -75,10 +75,11 @@ export class RepositorySession implements Session { // Down-project aggressively: only keep human-visible chat turns const messages = items .filter( - (item) => - item.role === "user" || - item.role === "assistant" || - item.role === "system" + (item): item is AgentInputItem & { role: string; content: unknown } => + "role" in item && + (item.role === "user" || + item.role === "assistant" || + item.role === "system") ) .map((item) => ({ role: item.role as string, @@ -112,12 +113,10 @@ export class RepositorySession implements Session { return undefined; } + const role = poppedItem.role as "user" | "assistant" | "system"; return { - role: poppedItem.role as "user" | "assistant" | "system", - content: this.toContentParts( - poppedItem.role as "user" | "assistant" | "system", - poppedItem.content - ) - }; + role, + content: this.toContentParts(role, poppedItem.content) + } as AgentInputItem; } } diff --git a/packages/agentic-workflows/src/service/ai-agent-service-local.ts b/packages/agentic-workflows/src/service/ai-agent-service-local.ts index 895468a..c426357 100644 --- a/packages/agentic-workflows/src/service/ai-agent-service-local.ts +++ b/packages/agentic-workflows/src/service/ai-agent-service-local.ts @@ -34,6 +34,7 @@ import { export class AiAgentServiceLocal implements AiAgentService { private static instance: AiAgentServiceLocal = new AiAgentServiceLocal(); private static responsesByAgentName: Map = new Map(); + private static lastResponseByAgentName: Map = new Map(); private static errorsByAgentName: Map = new Map(); private static mockWorkingDir: string | undefined; @@ -82,6 +83,7 @@ export class AiAgentServiceLocal implements AiAgentService { */ public static clearResponses(): void { this.responsesByAgentName.clear(); + this.lastResponseByAgentName.clear(); } /** @@ -96,6 +98,7 @@ export class AiAgentServiceLocal implements AiAgentService { */ public static clearAllOverrides(): void { this.responsesByAgentName.clear(); + this.lastResponseByAgentName.clear(); this.errorsByAgentName.clear(); this.mockWorkingDir = undefined; } @@ -147,10 +150,16 @@ export class AiAgentServiceLocal implements AiAgentService { { role: "user", content: runConfig.input }, { role: "assistant", - content: - typeof result.output === "string" - ? result.output - : JSON.stringify(result.output) + status: "completed", + content: [ + { + type: "output_text", + text: + typeof result.output === "string" + ? result.output + : JSON.stringify(result.output) + } + ] } ]); } @@ -176,7 +185,8 @@ export class AiAgentServiceLocal implements AiAgentService { agentConfig.name ); if (responses && responses.length > 0) { - const response = responses.shift(); // Pop first response from queue + const response = responses.shift(); + AiAgentServiceLocal.lastResponseByAgentName.set(agentConfig.name, response); return { success: true, output: response, @@ -184,6 +194,19 @@ export class AiAgentServiceLocal implements AiAgentService { }; } + // If the queue is exhausted but we have a last response, repeat it. + // This supports consensus testing where 1 response is set for N runs. + const lastResponse = AiAgentServiceLocal.lastResponseByAgentName.get( + agentConfig.name + ); + if (lastResponse !== undefined) { + return { + success: true, + output: lastResponse, + workingDir: AiAgentServiceLocal.mockWorkingDir + }; + } + // Default mock response return { success: true, diff --git a/packages/agentic-workflows/src/service/ai-agent-service-ollama.ts b/packages/agentic-workflows/src/service/ai-agent-service-ollama.ts index a670d8e..49409db 100644 --- a/packages/agentic-workflows/src/service/ai-agent-service-ollama.ts +++ b/packages/agentic-workflows/src/service/ai-agent-service-ollama.ts @@ -49,10 +49,10 @@ export class AiAgentServiceOllama implements AiAgentService { instructions: config.instructions, model: config.model ?? this.defaultModel, tools: config.tools ?? [], - outputType: config.outputSchema, + outputType: config.outputSchema as any, modelSettings: config.modelSettings, inputGuardrails: config.inputGuardrails ?? undefined - }) as AgentType; + }) as unknown as AgentType; } public async runAgent( diff --git a/packages/agentic-workflows/src/service/ai-agent-service-openai.ts b/packages/agentic-workflows/src/service/ai-agent-service-openai.ts index 936bb72..3976be2 100644 --- a/packages/agentic-workflows/src/service/ai-agent-service-openai.ts +++ b/packages/agentic-workflows/src/service/ai-agent-service-openai.ts @@ -30,10 +30,10 @@ export class AiAgentServiceOpenai implements AiAgentService { instructions: config.instructions, model: config.model ?? this.defaultModel, tools: config.tools ?? [], - outputType: config.outputSchema, + outputType: config.outputSchema as any, modelSettings: config.modelSettings, inputGuardrails: config.inputGuardrails ?? [] - }) as AgentType; + }) as unknown as AgentType; } public async runAgent( diff --git a/packages/agentic-workflows/src/service/ai-agent-service.ts b/packages/agentic-workflows/src/service/ai-agent-service.ts index bb70fa4..8f3ff2e 100644 --- a/packages/agentic-workflows/src/service/ai-agent-service.ts +++ b/packages/agentic-workflows/src/service/ai-agent-service.ts @@ -1,11 +1,6 @@ -import type { - InputGuardrail, - ModelSettings, - Session, - UnknownContext -} from "@openai/agents"; -import { Agent, Tool } from "@openai/agents"; -import { z } from "zod"; +import type {InputGuardrail, ModelSettings, Session, UnknownContext} from "@openai/agents"; +import {Agent, Tool} from "@openai/agents"; +import {z} from "zod"; /** * Configuration for an AI agent run @@ -39,6 +34,32 @@ export interface AgentRunResult { workingDir?: string; } +/** + * Strategy for resolving consensus across multiple agent runs + */ +export enum ConsensusStrategy { + /** Most common output wins (uses equality comparison). Requires odd number of runs. */ + MAJORITY = "majority", + /** All runs must produce the same output or the consensus fails. */ + UNANIMOUS = "unanimous", + /** A user-provided judge function decides the winning output. */ + JUDGE = "judge" +} + +/** + * Result from a consensus agent run, extending AgentRunResult with multi-run metadata + */ +export interface ConsensusRunResult extends AgentRunResult { + /** All individual run results (including failures) */ + runs: AgentRunResult[]; + /** Fraction of successful runs that agreed with the winning output (e.g. 0.8 = 4/5) */ + agreement: number; + /** Total number of runs requested */ + totalRuns: number; + /** Number of runs that completed successfully */ + successfulRuns: number; +} + /** * Configuration for creating an AI agent */ @@ -62,10 +83,7 @@ export interface AgentConfig { /** * Helper type for Agent with Zod output type */ -export type AgentType = Agent< - UnknownContext, - T extends string ? undefined : z.ZodType ->; +export type AgentType = Agent; /** * Interface for AI agent services that abstracts the underlying provider. diff --git a/packages/agentic-workflows/src/service/decorators.ts b/packages/agentic-workflows/src/service/decorators.ts index ff25668..c95a71d 100644 --- a/packages/agentic-workflows/src/service/decorators.ts +++ b/packages/agentic-workflows/src/service/decorators.ts @@ -9,7 +9,9 @@ import { AgentConfig, AgentRunConfig, AgentRunResult, - AiAgentService + AiAgentService, + ConsensusRunResult, + ConsensusStrategy } from "./ai-agent-service"; import { generateToolsReference, @@ -65,6 +67,131 @@ export type AgentOptions = { branchParam?: string; }; +/** + * Options for ConsensusAgent, extending AgentOptions with multi-run consensus configuration. + */ +export type ConsensusAgentOptions = AgentOptions & { + /** Number of concurrent runs. Must be odd. */ + runs: number; + /** Strategy for resolving consensus across runs. */ + consensusStrategy: ConsensusStrategy; + /** + * Judge function, required when consensusStrategy is JUDGE. + * Receives the class instance and all successful run results, returns the winning result. + * Typically delegates to another @Agent method on the same class. + */ + judge?: ( + instance: any, + results: AgentRunResult[] + ) => Promise>; + /** + * Optional [min, max] temperature range. If provided, each run gets a linearly + * interpolated temperature across the range. If omitted, all runs use the same + * temperature from modelSettings. + */ + temperatureSpread?: [number, number]; +}; + +// -- Shared helpers for @Agent and @ConsensusAgent -- + +interface PreparedAgentExecution { + aiAgentService: AiAgentService; + agentConfig: AgentConfig; + runConfig: AgentRunConfig; +} + +function prepareAgentExecution( + parentInstance: any, + target: any, + propertyKey: string | symbol, + options: AgentOptions, + parameterMapper: AgentParameterMapper, + args: any[] +): PreparedAgentExecution { + const aiAgentService: AiAgentService = parentInstance.aiAgentService; + + if (!aiAgentService) { + throw new Error( + "aiAgentService not found on the class instance. Make sure it is injected as 'aiAgentService'." + ); + } + + const promptsDirectory = + parentInstance.agenticWorkflowOptions?.promptsDirectory; + if (!promptsDirectory) { + throw new Error("promptsDirectory not specified in @AgenticWorkflow"); + } + + const filePath = path.join( + promptsDirectory, + `${propertyKey.toString()}.md` + ); + if (!fs.existsSync(filePath)) { + throw new Error(`Prompt file not found: ${filePath}`); + } + const rawMarkdown = fs.readFileSync(filePath, "utf-8"); + + const { frontmatter, content } = parsePromptFrontmatter(rawMarkdown); + + const tools = + typeof options.tools === "function" + ? options.tools(parentInstance) + : options.tools; + + const toolRegistry = parentInstance.agenticWorkflowOptions?.toolRegistry; + if (frontmatter.tools && frontmatter.tools.length > 0) { + if (toolRegistry) { + const declaredToolNames = mapToolKeys(frontmatter.tools, toolRegistry); + if (tools) { + validateToolsMatch(declaredToolNames, tools); + } + } + } + + const toolsReference = tools ? generateToolsReference(tools) : ""; + const instructions = toolsReference + content; + + const agentName = + options.name ?? `${target.constructor.name}:${propertyKey.toString()}`; + + const agentConfig: AgentConfig = { + name: agentName, + instructions, + tools, + model: options.model, + modelSettings: options.modelSettings, + outputSchema: options.outputSchema + }; + + const { input, context } = parameterMapper.mapArguments(args); + + const maybeSession: RepositorySession = args.find( + (arg) => arg instanceof RepositorySession + ); + + let branch: string | undefined; + if (options.branchParam) { + const paramNames = parameterMapper.getParameterNames(); + const branchIdx = paramNames.indexOf(options.branchParam); + if (branchIdx >= 0 && typeof args[branchIdx] === "string") { + branch = args[branchIdx]; + } + } + + const hasTools = tools && tools.length > 0; + const maxTurns = options.maxTurns ?? (hasTools ? 8 : 1); + + const runConfig: AgentRunConfig = { + input, + context, + session: maybeSession, + maxTurns, + branch + }; + + return { aiAgentService, agentConfig, runConfig }; +} + /** * Decorator for a class method that executes an AI agent * @param options @@ -82,101 +209,196 @@ export function Agent(options: AgentOptions): MethodDecorator { descriptor.value = async function ( ...args: any[] ): Promise> { - const parentInstance = this as any; - const aiAgentService: AiAgentService = parentInstance.aiAgentService; + const { aiAgentService, agentConfig, runConfig } = + prepareAgentExecution(this, target, propertyKey, options, parameterMapper, args); - if (!aiAgentService) { - throw new Error( - "aiAgentService not found on the class instance. Make sure it is injected as 'aiAgentService'." - ); - } + return timeFunction( + () => aiAgentService.createAndRun(agentConfig, runConfig), + agentConfig.name + ); + }; + }; +} - const promptsDirectory = - parentInstance.agenticWorkflowOptions?.promptsDirectory; - if (!promptsDirectory) { - throw new Error("promptsDirectory not specified in @AgenticWorkflow"); - } +/** + * Resolves consensus from multiple agent run results using the specified strategy. + */ +function resolveConsensus( + results: AgentRunResult[], + allResults: AgentRunResult[], + strategy: ConsensusStrategy +): ConsensusRunResult { + const totalRuns = allResults.length; + const successfulRuns = results.length; - const filePath = path.join( - promptsDirectory, - `${propertyKey.toString()}.md` - ); - if (!fs.existsSync(filePath)) { - throw new Error(`Prompt file not found: ${filePath}`); - } - const rawMarkdown = fs.readFileSync(filePath, "utf-8"); - - // Parse frontmatter from the markdown file - const { frontmatter, content } = parsePromptFrontmatter(rawMarkdown); - - const tools = - typeof options.tools === "function" - ? options.tools(parentInstance) - : options.tools; - - // If frontmatter declares tools and a registry is provided, validate - const toolRegistry = parentInstance.agenticWorkflowOptions?.toolRegistry; - if (frontmatter.tools && frontmatter.tools.length > 0) { - if (toolRegistry) { - // Map tool keys to tool names and validate - const declaredToolNames = mapToolKeys( - frontmatter.tools, - toolRegistry - ); - if (tools) { - validateToolsMatch(declaredToolNames, tools); - } - } + if (successfulRuns === 0) { + return { + output: undefined as any, + success: false, + error: "All runs failed — no outputs to compare", + runs: allResults, + agreement: 0, + totalRuns, + successfulRuns: 0 + }; + } + + if (strategy === ConsensusStrategy.MAJORITY) { + const groups = new Map[]>(); + for (const result of results) { + const key = JSON.stringify(result.output); + const group = groups.get(key) || []; + group.push(result); + groups.set(key, group); + } + + let largestGroup: AgentRunResult[] = []; + for (const group of groups.values()) { + if (group.length > largestGroup.length) { + largestGroup = group; } + } - // Generate tools reference documentation and inject it into instructions - const toolsReference = tools ? generateToolsReference(tools) : ""; - const instructions = toolsReference + content; + return { + output: largestGroup[0].output, + success: true, + runs: allResults, + agreement: largestGroup.length / successfulRuns, + totalRuns, + successfulRuns + }; + } - const agentName = - options.name ?? `${target.constructor.name}:${propertyKey.toString()}`; + if (strategy === ConsensusStrategy.UNANIMOUS) { + const firstOutput = JSON.stringify(results[0].output); + const allAgree = results.every( + (r) => JSON.stringify(r.output) === firstOutput + ); - const agentConfig: AgentConfig = { - name: agentName, - instructions, - tools, - model: options.model, - modelSettings: options.modelSettings, - outputSchema: options.outputSchema + if (!allAgree) { + return { + output: undefined as any, + success: false, + error: "Unanimous consensus not reached — outputs differ", + runs: allResults, + agreement: 0, + totalRuns, + successfulRuns }; + } - const { input, context } = parameterMapper.mapArguments(args); + return { + output: results[0].output, + success: true, + runs: allResults, + agreement: 1, + totalRuns, + successfulRuns + }; + } - const maybeSession: RepositorySession = args.find( - (arg) => arg instanceof RepositorySession - ); + // JUDGE strategy is handled in the decorator itself since it needs the instance + throw new Error(`Unexpected consensus strategy: ${strategy}`); +} + +/** + * Decorator for a class method that executes an AI agent multiple times concurrently + * and resolves the outputs into a single consensus result. + * @param options + * @constructor + */ +export function ConsensusAgent( + options: ConsensusAgentOptions +): MethodDecorator { + if (options.runs % 2 === 0) { + throw new Error( + `ConsensusAgent requires an odd number of runs, got ${options.runs}` + ); + } + + if ( + options.consensusStrategy === ConsensusStrategy.JUDGE && + !options.judge + ) { + throw new Error( + "ConsensusAgent with JUDGE strategy requires a judge function" + ); + } + + return function ( + target: any, + propertyKey: string | symbol, + descriptor: PropertyDescriptor + ) { + const originalMethod = descriptor.value; + const parameterMapper = AgentParameterMapper.create(originalMethod); + + descriptor.value = async function ( + ...args: any[] + ): Promise> { + const { aiAgentService, agentConfig, runConfig } = + prepareAgentExecution(this, target, propertyKey, options, parameterMapper, args); + + const runPromises: Promise>[] = []; - // Extract branch from the named parameter if branchParam is specified - let branch: string | undefined; - if (options.branchParam) { - const paramNames = parameterMapper.getParameterNames(); - const branchIdx = paramNames.indexOf(options.branchParam); - if (branchIdx >= 0 && typeof args[branchIdx] === "string") { - branch = args[branchIdx]; + for (let i = 0; i < options.runs; i++) { + // Build per-run config, potentially varying temperature + let perRunAgentConfig = agentConfig; + if (options.temperatureSpread) { + const [minTemp, maxTemp] = options.temperatureSpread; + const t = + options.runs === 1 + ? minTemp + : minTemp + (maxTemp - minTemp) * (i / (options.runs - 1)); + perRunAgentConfig = { + ...agentConfig, + modelSettings: { + ...agentConfig.modelSettings, + temperature: t + } + }; } + + runPromises.push( + aiAgentService.createAndRun(perRunAgentConfig, runConfig) + ); } - // Default maxTurns: 1 for agents without tools (they complete in a single turn), - // 8 for agents with tools (to allow for multi-step tool call + response cycles) - const hasTools = tools && tools.length > 0; - const maxTurns = options.maxTurns ?? (hasTools ? 8 : 1); - - const runConfig: AgentRunConfig = { - input, - context, - session: maybeSession, - maxTurns, - branch - }; + const allResults = await timeFunction( + () => Promise.all(runPromises), + `${agentConfig.name}:consensus(${options.runs})` + ); - return timeFunction( - () => aiAgentService.createAndRun(agentConfig, runConfig), - agentConfig.name + const successfulResults = allResults.filter((r) => r.success); + + // For JUDGE strategy, delegate to the user-provided judge function + if (options.consensusStrategy === ConsensusStrategy.JUDGE) { + if (successfulResults.length === 0) { + return { + output: undefined as any, + success: false, + error: "All runs failed — no outputs for judge to evaluate", + runs: allResults, + agreement: 0, + totalRuns: options.runs, + successfulRuns: 0 + }; + } + + const judgeResult = await options.judge!(this, successfulResults); + return { + ...judgeResult, + runs: allResults, + agreement: 0, // Judge doesn't produce a numeric agreement + totalRuns: options.runs, + successfulRuns: successfulResults.length + }; + } + + return resolveConsensus( + successfulResults, + allResults, + options.consensusStrategy ); }; }; diff --git a/packages/agentic-workflows/test/ai-agent-service-local.spec.ts b/packages/agentic-workflows/test/ai-agent-service-local.spec.ts index 95359a5..0e4ea78 100644 --- a/packages/agentic-workflows/test/ai-agent-service-local.spec.ts +++ b/packages/agentic-workflows/test/ai-agent-service-local.spec.ts @@ -139,14 +139,14 @@ describe("AiAgentServiceLocal", () => { expect(result.output).toEqual({}); }); - it("should fall back to default after all mocked responses are consumed", async () => { + it("should repeat last response after all mocked responses are consumed", async () => { const agentConfig: AgentConfig = { name: "ExhaustedAgent", instructions: "Test agent", tools: [] }; AiAgentServiceLocal.setResponses("ExhaustedAgent", ["Response 1", "Response 2"]); await service.createAndRun(agentConfig, { input: "1" }); await service.createAndRun(agentConfig, { input: "2" }); const result = await service.createAndRun(agentConfig, { input: "3" }); expect(result.success).toBe(true); - expect(result.output).toBe("Mock response for ExhaustedAgent"); + expect(result.output).toBe("Response 2"); }); }); @@ -200,7 +200,7 @@ describe("AiAgentServiceLocal", () => { const linkExtractionConfig: AgentConfig<{ links: string[] }> = { name: "TestAgent:extractLinks", instructions: "Extract links", - outputSchema: z.object({ links: z.array(z.string()) }), + outputSchema: z.object({ links: z.array(z.string()) }) as any, tools: [] }; AiAgentServiceLocal.setResponse("TestAgent:extractLinks", { @@ -235,7 +235,7 @@ describe("AiAgentServiceLocal", () => { const synthesisConfig: AgentConfig<{ steps: string[] }> = { name: "TestAgent:synthesizeFindings", instructions: "Synthesize findings", - outputSchema: z.object({ steps: z.array(z.string()) }), + outputSchema: z.object({ steps: z.array(z.string()) }) as any, tools: [] }; AiAgentServiceLocal.setResponse("TestAgent:synthesizeFindings", { diff --git a/packages/agentic-workflows/test/repository/session/in-memory-conversation-session-repository.spec.ts b/packages/agentic-workflows/test/repository/session/in-memory-conversation-session-repository.spec.ts index 650a32d..d2384ea 100644 --- a/packages/agentic-workflows/test/repository/session/in-memory-conversation-session-repository.spec.ts +++ b/packages/agentic-workflows/test/repository/session/in-memory-conversation-session-repository.spec.ts @@ -83,7 +83,7 @@ describe("InMemoryConversationSessionRepository", () => { describe("RepositorySession with InMemory", () => { it("should work as an OpenAI Agents SDK Session", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); await session.addItems([ { role: "user", content: "Hello" }, { role: "assistant", content: "Hi!" } @@ -104,7 +104,7 @@ describe("InMemoryConversationSessionRepository", () => { describe("chat message filtering (execution artifact removal)", () => { it("should only persist user, assistant, and system messages", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); await session.addItems([ { role: "user", content: "Hello" }, { role: "assistant", content: "Hi there!" }, @@ -119,7 +119,7 @@ describe("InMemoryConversationSessionRepository", () => { it("should filter out reasoning items when adding", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); await session.addItems([ { role: "user", content: "Hello" }, { role: "reasoning", content: "Internal reasoning..." } as any, @@ -133,7 +133,7 @@ describe("InMemoryConversationSessionRepository", () => { it("should filter out tool_call items when adding", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); await session.addItems([ { role: "user", content: "Search for something" }, { role: "tool_call", content: "search query", id: "call_123" } as any, @@ -147,7 +147,7 @@ describe("InMemoryConversationSessionRepository", () => { it("should filter out tool_result items when adding", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); await session.addItems([ { role: "user", content: "Search for something" }, { role: "tool_result", content: "search results", callId: "call_123" } as any, @@ -161,7 +161,7 @@ describe("InMemoryConversationSessionRepository", () => { it("should filter out items with type instead of role", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); await session.addItems([ { role: "user", content: "Hello" }, { type: "reasoning", content: "Internal reasoning..." } as any, @@ -176,7 +176,7 @@ describe("InMemoryConversationSessionRepository", () => { it("should handle empty items array when all items are execution artifacts", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); await session.addItems([ { role: "reasoning", content: "Reasoning 1" } as any, { role: "tool_call", content: "Tool call" } as any, @@ -188,7 +188,7 @@ describe("InMemoryConversationSessionRepository", () => { it("should NOT preserve metadata like tool_calls on assistant messages", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); await session.addItems([ { role: "user", content: "Hello" }, { role: "assistant", content: "Let me search for that", tool_calls: [{ id: "call_123", name: "search" }] } as any @@ -202,7 +202,7 @@ describe("InMemoryConversationSessionRepository", () => { it("should return plain chat messages without any metadata", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); await session.addItems([ { role: "user", content: "Hello" }, { role: "assistant", content: "Hi!" } @@ -217,7 +217,7 @@ describe("InMemoryConversationSessionRepository", () => { it("should handle non-string content by JSON stringifying and converting to content parts", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); const arrayContent = [{ type: "text", text: "Hello" }]; await session.addItems([{ role: "user", content: arrayContent } as any]); const items = await session.getItems(); @@ -228,7 +228,7 @@ describe("InMemoryConversationSessionRepository", () => { it("should handle array content (like assistant content parts) correctly", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); const arrayContent = [{ type: "output_text", text: "Hello, how can I help you?", annotations: [] as any[], logprobs: [] as any[] }]; await session.addItems([{ role: "assistant", content: arrayContent } as any]); const items = await session.getItems(); @@ -239,7 +239,7 @@ describe("InMemoryConversationSessionRepository", () => { it("should convert plain string content to content parts array", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); await session.addItems([ { role: "user", content: "Hello" }, { role: "assistant", content: "Hi there!" } @@ -254,7 +254,7 @@ describe("InMemoryConversationSessionRepository", () => { it("should return plain chat message from popItem without metadata", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); await repository.addConversationItems(sessionModel.sessionId, [ { role: "user", content: "Hello" }, { role: "assistant", content: "Hi!", metadata: { id: "msg_123", type: "message" } } @@ -269,7 +269,7 @@ describe("InMemoryConversationSessionRepository", () => { it("should handle legacy data with reasoning role by returning all stored items", async () => { const sessionModel = await repository.createSession(clientId); - const session = new RepositorySession(sessionModel.sessionId, repository); + const session: any = new RepositorySession(sessionModel.sessionId, repository); await repository.addConversationItems(sessionModel.sessionId, [ { role: "user", content: "Hello" }, { role: "reasoning", content: "Internal reasoning..." }, diff --git a/packages/agentic-workflows/test/service/decorators.spec.ts b/packages/agentic-workflows/test/service/decorators.spec.ts index e218c48..1e9a0f5 100644 --- a/packages/agentic-workflows/test/service/decorators.spec.ts +++ b/packages/agentic-workflows/test/service/decorators.spec.ts @@ -6,6 +6,9 @@ import { AgentRunConfig, AgentRunResult, AiAgentService, + ConsensusAgent, + ConsensusRunResult, + ConsensusStrategy, RepositorySession } from "../../index"; @@ -30,24 +33,72 @@ class TestWorkflow { async testModelOverrideMethod(input: string): Promise> { return null; } + + @ConsensusAgent({ + tools: [], + runs: 3, + consensusStrategy: ConsensusStrategy.MAJORITY + }) + async majorityMethod(input: string): Promise> { + return null; + } + + @ConsensusAgent({ + tools: [], + runs: 3, + consensusStrategy: ConsensusStrategy.UNANIMOUS + }) + async unanimousMethod(input: string): Promise> { + return null; + } + + @ConsensusAgent({ + tools: [], + runs: 3, + consensusStrategy: ConsensusStrategy.JUDGE, + judge: async (_instance, results) => results[0] + }) + async judgeMethod(input: string): Promise> { + return null; + } + + @ConsensusAgent({ + tools: [], + runs: 3, + consensusStrategy: ConsensusStrategy.MAJORITY, + temperatureSpread: [0.2, 1.0] + }) + async tempSpreadMethod(input: string): Promise> { + return null; + } } -describe("@Agent decorator", () => { - const promptsDir = path.join(__dirname, "prompts"); +const promptsDir = path.join(__dirname, "prompts"); +const promptContent = "---\ntools: []\n---\nTest instructions"; - beforeAll(() => { - if (!fs.existsSync(promptsDir)) { - fs.mkdirSync(promptsDir, { recursive: true }); - } - fs.writeFileSync(path.join(promptsDir, "testMethod.md"), "---\ntools: []\n---\nTest instructions"); - fs.writeFileSync(path.join(promptsDir, "testModelOverrideMethod.md"), "---\ntools: []\n---\nTest instructions"); - }); +beforeAll(() => { + if (!fs.existsSync(promptsDir)) { + fs.mkdirSync(promptsDir, { recursive: true }); + } + for (const name of [ + "testMethod", "testModelOverrideMethod", + "majorityMethod", "unanimousMethod", "judgeMethod", "tempSpreadMethod" + ]) { + fs.writeFileSync(path.join(promptsDir, `${name}.md`), promptContent); + } +}); - afterAll(() => { - if (fs.existsSync(promptsDir)) { - fs.rmSync(promptsDir, { recursive: true }); - } - }); +afterAll(() => { + if (fs.existsSync(promptsDir)) { + fs.rmSync(promptsDir, { recursive: true }); + } +}); + +beforeEach(() => { + jest.clearAllMocks(); +}); + +describe("@Agent decorator", () => { it("should pick up session from arguments", async () => { const workflow = new TestWorkflow(mockAiAgentService); @@ -84,3 +135,180 @@ describe("@Agent decorator", () => { ); }); }); + +describe("@ConsensusAgent decorator", () => { + const promptsDir = path.join(__dirname, "prompts"); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it("should throw when runs is even", () => { + expect(() => { + ConsensusAgent({ + tools: [], + runs: 4, + consensusStrategy: ConsensusStrategy.MAJORITY + }); + }).toThrow("ConsensusAgent requires an odd number of runs, got 4"); + }); + + it("should throw when JUDGE strategy has no judge function", () => { + expect(() => { + ConsensusAgent({ + tools: [], + runs: 3, + consensusStrategy: ConsensusStrategy.JUDGE + }); + }).toThrow("ConsensusAgent with JUDGE strategy requires a judge function"); + }); + + describe("MAJORITY strategy", () => { + it("should return the majority output when all agree", async () => { + const workflow = new TestWorkflow(mockAiAgentService); + (mockAiAgentService.createAndRun as jest.Mock).mockResolvedValue({ + success: true, + output: { answer: true } + }); + + const result = await workflow.majorityMethod("test"); + + expect(mockAiAgentService.createAndRun).toHaveBeenCalledTimes(3); + expect(result.success).toBe(true); + expect(result.output).toEqual({ answer: true }); + expect(result.agreement).toBe(1); + expect(result.totalRuns).toBe(3); + expect(result.successfulRuns).toBe(3); + expect(result.runs).toHaveLength(3); + }); + + it("should return the majority output when 2/3 agree", async () => { + const workflow = new TestWorkflow(mockAiAgentService); + (mockAiAgentService.createAndRun as jest.Mock) + .mockResolvedValueOnce({ success: true, output: { answer: true } }) + .mockResolvedValueOnce({ success: true, output: { answer: true } }) + .mockResolvedValueOnce({ success: true, output: { answer: false } }); + + const result = await workflow.majorityMethod("test"); + + expect(result.success).toBe(true); + expect(result.output).toEqual({ answer: true }); + expect(result.agreement).toBeCloseTo(2 / 3); + expect(result.successfulRuns).toBe(3); + }); + + it("should handle failed runs and reflect reduced successful count", async () => { + const workflow = new TestWorkflow(mockAiAgentService); + (mockAiAgentService.createAndRun as jest.Mock) + .mockResolvedValueOnce({ success: true, output: "yes" }) + .mockResolvedValueOnce({ success: false, error: "timeout" }) + .mockResolvedValueOnce({ success: true, output: "yes" }); + + const result = await workflow.majorityMethod("test"); + + expect(result.success).toBe(true); + expect(result.output).toBe("yes"); + expect(result.totalRuns).toBe(3); + expect(result.successfulRuns).toBe(2); + expect(result.agreement).toBe(1); // 2/2 successful runs agreed + }); + + it("should fail when all runs fail", async () => { + const workflow = new TestWorkflow(mockAiAgentService); + (mockAiAgentService.createAndRun as jest.Mock).mockResolvedValue({ + success: false, + error: "fail" + }); + + const result = await workflow.majorityMethod("test"); + + expect(result.success).toBe(false); + expect(result.error).toContain("All runs failed"); + expect(result.successfulRuns).toBe(0); + }); + }); + + describe("UNANIMOUS strategy", () => { + it("should succeed when all runs agree", async () => { + const workflow = new TestWorkflow(mockAiAgentService); + (mockAiAgentService.createAndRun as jest.Mock).mockResolvedValue({ + success: true, + output: "same" + }); + + const result = await workflow.unanimousMethod("test"); + + expect(result.success).toBe(true); + expect(result.output).toBe("same"); + expect(result.agreement).toBe(1); + }); + + it("should fail when any run disagrees", async () => { + const workflow = new TestWorkflow(mockAiAgentService); + (mockAiAgentService.createAndRun as jest.Mock) + .mockResolvedValueOnce({ success: true, output: "a" }) + .mockResolvedValueOnce({ success: true, output: "a" }) + .mockResolvedValueOnce({ success: true, output: "b" }); + + const result = await workflow.unanimousMethod("test"); + + expect(result.success).toBe(false); + expect(result.error).toContain("Unanimous consensus not reached"); + }); + }); + + describe("JUDGE strategy", () => { + it("should delegate to the judge function", async () => { + const workflow = new TestWorkflow(mockAiAgentService); + (mockAiAgentService.createAndRun as jest.Mock) + .mockResolvedValueOnce({ success: true, output: "a" }) + .mockResolvedValueOnce({ success: true, output: "b" }) + .mockResolvedValueOnce({ success: true, output: "c" }); + + const result = await workflow.judgeMethod("test"); + + // Judge picks first result + expect(result.success).toBe(true); + expect(result.output).toBe("a"); + expect(result.totalRuns).toBe(3); + expect(result.successfulRuns).toBe(3); + expect(result.runs).toHaveLength(3); + }); + + it("should fail when all runs fail before judge", async () => { + const workflow = new TestWorkflow(mockAiAgentService); + (mockAiAgentService.createAndRun as jest.Mock).mockResolvedValue({ + success: false, + error: "fail" + }); + + const result = await workflow.judgeMethod("test"); + + expect(result.success).toBe(false); + expect(result.error).toContain("All runs failed"); + }); + }); + + describe("temperatureSpread", () => { + it("should vary temperature across runs", async () => { + const workflow = new TestWorkflow(mockAiAgentService); + (mockAiAgentService.createAndRun as jest.Mock).mockResolvedValue({ + success: true, + output: "ok" + }); + + await workflow.tempSpreadMethod("test"); + + expect(mockAiAgentService.createAndRun).toHaveBeenCalledTimes(3); + + const calls = (mockAiAgentService.createAndRun as jest.Mock).mock.calls; + const temps = calls.map( + ([agentConfig]: [any]) => agentConfig.modelSettings.temperature + ); + + expect(temps[0]).toBeCloseTo(0.2); + expect(temps[1]).toBeCloseTo(0.6); + expect(temps[2]).toBeCloseTo(1.0); + }); + }); +}); diff --git a/packages/commons/.eslintrc.json b/packages/commons/.eslintrc.json index f1ff0d9..ca25810 100644 --- a/packages/commons/.eslintrc.json +++ b/packages/commons/.eslintrc.json @@ -1,6 +1,6 @@ { "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], + "ignorePatterns": ["!**/*", "node_modules"], "overrides": [ { "files": ["*.ts"], diff --git a/packages/docling-utils/.eslintrc.json b/packages/docling-utils/.eslintrc.json index f1ff0d9..ca25810 100644 --- a/packages/docling-utils/.eslintrc.json +++ b/packages/docling-utils/.eslintrc.json @@ -1,6 +1,6 @@ { "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], + "ignorePatterns": ["!**/*", "node_modules"], "overrides": [ { "files": ["*.ts"], diff --git a/packages/openai-utils/.eslintrc.json b/packages/openai-utils/.eslintrc.json index f1ff0d9..ca25810 100644 --- a/packages/openai-utils/.eslintrc.json +++ b/packages/openai-utils/.eslintrc.json @@ -1,6 +1,6 @@ { "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], + "ignorePatterns": ["!**/*", "node_modules"], "overrides": [ { "files": ["*.ts"], diff --git a/packages/sql-decorators/.eslintrc.json b/packages/sql-decorators/.eslintrc.json index f1ff0d9..ca25810 100644 --- a/packages/sql-decorators/.eslintrc.json +++ b/packages/sql-decorators/.eslintrc.json @@ -1,6 +1,6 @@ { "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], + "ignorePatterns": ["!**/*", "node_modules"], "overrides": [ { "files": ["*.ts"], diff --git a/packages/tavily-utils/.eslintrc.json b/packages/tavily-utils/.eslintrc.json index f1ff0d9..ca25810 100644 --- a/packages/tavily-utils/.eslintrc.json +++ b/packages/tavily-utils/.eslintrc.json @@ -1,6 +1,6 @@ { "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], + "ignorePatterns": ["!**/*", "node_modules"], "overrides": [ { "files": ["*.ts"], diff --git a/yarn.lock b/yarn.lock index 6eeaa4b..d13b2a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1404,22 +1404,50 @@ __metadata: languageName: node linkType: hard +"@emnapi/core@npm:1.4.5": + version: 1.4.5 + resolution: "@emnapi/core@npm:1.4.5" + dependencies: + "@emnapi/wasi-threads": "npm:1.0.4" + tslib: "npm:^2.4.0" + checksum: 10c0/da4a57f65f325d720d0e0d1a9c6618b90c4c43a5027834a110476984e1d47c95ebaed4d316b5dddb9c0ed9a493ffeb97d1934f9677035f336d8a36c1f3b2818f + languageName: node + linkType: hard + "@emnapi/core@npm:^1.1.0, @emnapi/core@npm:^1.4.3": - version: 1.9.2 - resolution: "@emnapi/core@npm:1.9.2" + version: 1.10.0 + resolution: "@emnapi/core@npm:1.10.0" dependencies: "@emnapi/wasi-threads": "npm:1.2.1" tslib: "npm:^2.4.0" - checksum: 10c0/5500393f953951bad0768fafaa9191f2d938956b20c6d6a79e5ab696a613a25ce6ad23422bc18e86e6ce8deb147619d8d0d7d413a69f84adc01a6633cc353cd9 + checksum: 10c0/f51d08227857b60632de7714d708124f0e100a1462dde6df8221760939aa3204a73193830371830fac0716f3ccd2129f2cac1b17cd7d7958bc4da9018a296edb + languageName: node + linkType: hard + +"@emnapi/runtime@npm:1.4.5": + version: 1.4.5 + resolution: "@emnapi/runtime@npm:1.4.5" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/37a0278be5ac81e918efe36f1449875cbafba947039c53c65a1f8fc238001b866446fc66041513b286baaff5d6f9bec667f5164b3ca481373a8d9cb65bfc984b languageName: node linkType: hard "@emnapi/runtime@npm:^1.1.0, @emnapi/runtime@npm:^1.4.3": - version: 1.9.2 - resolution: "@emnapi/runtime@npm:1.9.2" + version: 1.10.0 + resolution: "@emnapi/runtime@npm:1.10.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/953f14991d1aefb92ee6f8eb27dea725e484791a53a0cb5f47d9e0087b9a2c929ff2e92adf95af15d6ad456db6300c6b761ebf72b50a875b874a83520b3ba093 + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.0.4": + version: 1.0.4 + resolution: "@emnapi/wasi-threads@npm:1.0.4" dependencies: tslib: "npm:^2.4.0" - checksum: 10c0/61c3a59e0c36784558b8d58eb02bd04815aa5fb0dbfbaf84d1b3050a78aa0cc63ea129ae806bd1e48062bfeb7fc36eb0e5431740d62f64ea51bdf426404b8caa + checksum: 10c0/2c91a53e62f875800baf035c4d42c9c0d18e5afd9a31ca2aac8b435aeaeaeaac386b5b3d0d0e70aa7a5a9852bbe05106b1f680cd82cce03145c703b423d41313 languageName: node linkType: hard @@ -1534,7 +1562,7 @@ __metadata: languageName: node linkType: hard -"@grpc/grpc-js@npm:^1.11.1, @grpc/grpc-js@npm:^1.14.0, @grpc/grpc-js@npm:^1.9": +"@grpc/grpc-js@npm:^1.11.1, @grpc/grpc-js@npm:^1.14.0, @grpc/grpc-js@npm:^1.14.3, @grpc/grpc-js@npm:^1.9": version: 1.14.3 resolution: "@grpc/grpc-js@npm:1.14.3" dependencies: @@ -1581,20 +1609,30 @@ __metadata: languageName: node linkType: hard -"@humanfs/core@npm:^0.19.1": - version: 0.19.1 - resolution: "@humanfs/core@npm:0.19.1" - checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67 +"@humanfs/core@npm:^0.19.2": + version: 0.19.2 + resolution: "@humanfs/core@npm:0.19.2" + dependencies: + "@humanfs/types": "npm:^0.15.0" + checksum: 10c0/d0a1d52d7b30c27d49475a53072d1510b81c5803e44b342fb8faf3887f1aa27593a1e6dc76a45268e7892d3f4e198146659281f6b6d55eacf3fd5a38bac30c5c languageName: node linkType: hard "@humanfs/node@npm:^0.16.6": - version: 0.16.7 - resolution: "@humanfs/node@npm:0.16.7" + version: 0.16.8 + resolution: "@humanfs/node@npm:0.16.8" dependencies: - "@humanfs/core": "npm:^0.19.1" + "@humanfs/core": "npm:^0.19.2" + "@humanfs/types": "npm:^0.15.0" "@humanwhocodes/retry": "npm:^0.4.0" - checksum: 10c0/9f83d3cf2cfa37383e01e3cdaead11cd426208e04c44adcdd291aa983aaf72d7d3598844d2fe9ce54896bb1bf8bd4b56883376611c8905a19c44684642823f30 + checksum: 10c0/56140579db811af4e160b195d45d0f29acf644d192c93fe24c9e594ebf06f19dfc157494a07c84540b8a071c0e4b37209c2362765d31734f4d0be869c2422e25 + languageName: node + linkType: hard + +"@humanfs/types@npm:^0.15.0": + version: 0.15.0 + resolution: "@humanfs/types@npm:0.15.0" + checksum: 10c0/fc26b9a024b0e55f7eaf64036df94345bf5d36d6a41ef80ef38e78f1f7430ce26cf435af736adae58913baae18eac3f38c18739054a3d379102015978eae862e languageName: node linkType: hard @@ -1999,6 +2037,13 @@ __metadata: languageName: node linkType: hard +"@jest/diff-sequences@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/diff-sequences@npm:30.0.1" + checksum: 10c0/3a840404e6021725ef7f86b11f7b2d13dd02846481264db0e447ee33b7ee992134e402cdc8b8b0ac969d37c6c0183044e382dedee72001cdf50cfb3c8088de74 + languageName: node + linkType: hard + "@jest/diff-sequences@npm:30.3.0": version: 30.3.0 resolution: "@jest/diff-sequences@npm:30.3.0" @@ -2480,7 +2525,7 @@ __metadata: languageName: node linkType: hard -"@modelcontextprotocol/sdk@npm:^1.25.2": +"@modelcontextprotocol/sdk@npm:^1.17.2": version: 1.29.0 resolution: "@modelcontextprotocol/sdk@npm:1.29.0" dependencies: @@ -2577,7 +2622,7 @@ __metadata: languageName: node linkType: hard -"@nestjs/common@npm:^10": +"@nestjs/common@npm:^10, @nestjs/common@npm:^10.4.22": version: 10.4.22 resolution: "@nestjs/common@npm:10.4.22" dependencies: @@ -2599,7 +2644,7 @@ __metadata: languageName: node linkType: hard -"@nestjs/core@npm:^10": +"@nestjs/core@npm:^10, @nestjs/core@npm:^10.4.22": version: 10.4.22 resolution: "@nestjs/core@npm:10.4.22" dependencies: @@ -2627,7 +2672,7 @@ __metadata: languageName: node linkType: hard -"@nestjs/platform-express@npm:^10": +"@nestjs/platform-express@npm:^10, @nestjs/platform-express@npm:^10.4.22": version: 10.4.22 resolution: "@nestjs/platform-express@npm:10.4.22" dependencies: @@ -2643,22 +2688,22 @@ __metadata: languageName: node linkType: hard -"@nestjs/testing@npm:^11.1.18": - version: 11.1.19 - resolution: "@nestjs/testing@npm:11.1.19" +"@nestjs/testing@npm:^10.4.22": + version: 10.4.22 + resolution: "@nestjs/testing@npm:10.4.22" dependencies: tslib: "npm:2.8.1" peerDependencies: - "@nestjs/common": ^11.0.0 - "@nestjs/core": ^11.0.0 - "@nestjs/microservices": ^11.0.0 - "@nestjs/platform-express": ^11.0.0 + "@nestjs/common": ^10.0.0 + "@nestjs/core": ^10.0.0 + "@nestjs/microservices": ^10.0.0 + "@nestjs/platform-express": ^10.0.0 peerDependenciesMeta: "@nestjs/microservices": optional: true "@nestjs/platform-express": optional: true - checksum: 10c0/58c1d8249384ca22dd68af20d8cbd555328e8c2bbecd64c2785964ef75a084c94b760edf08cc7085896496292bc6e5ec42e018e7743a99bb2f1bb23ba2ec5b55 + checksum: 10c0/cb3d0f3997b1c08ef7263f25beff0f0ba8af9f718361cede5c2b0a72ec0c3baadba8fcc92ec18c735171550b9e950c9e66b43e81ea62273c1ca6c82aa54e9715 languageName: node linkType: hard @@ -2970,9 +3015,9 @@ __metadata: languageName: node linkType: hard -"@nx/devkit@npm:22.6.5, @nx/devkit@npm:>=21.5.2 < 23.0.0": - version: 22.6.5 - resolution: "@nx/devkit@npm:22.6.5" +"@nx/devkit@npm:22.7.0, @nx/devkit@npm:>=21.5.2 < 23.0.0": + version: 22.7.0 + resolution: "@nx/devkit@npm:22.7.0" dependencies: "@zkochan/js-yaml": "npm:0.0.7" ejs: "npm:5.0.1" @@ -2983,37 +3028,40 @@ __metadata: yargs-parser: "npm:21.1.1" peerDependencies: nx: ">= 21 <= 23 || ^22.0.0-0" - checksum: 10c0/bff5f51cf2041f2d0f08ff1e93984c0e1def2e554b5f2edbcc5240a18a3b434ef6059898c87bbd2a5f9b84b5ef04e66f8607e5dcf7f26bf44e0009796ea7a628 + checksum: 10c0/b6293b9505bc771dbfe330f5877f55a3d475b77ce929978450d43006c6fc1ba80e1408ae689fb97e3205f69ef0e793597a194bf6594def80e499bdfc540a3e7f languageName: node linkType: hard "@nx/eslint@npm:^22.6.4": - version: 22.6.5 - resolution: "@nx/eslint@npm:22.6.5" + version: 22.7.0 + resolution: "@nx/eslint@npm:22.7.0" dependencies: - "@nx/devkit": "npm:22.6.5" - "@nx/js": "npm:22.6.5" + "@nx/devkit": "npm:22.7.0" + "@nx/js": "npm:22.7.0" semver: "npm:^7.6.3" tslib: "npm:^2.3.0" typescript: "npm:~5.9.2" peerDependencies: + "@nx/jest": 22.7.0 "@zkochan/js-yaml": 0.0.7 eslint: ^8.0.0 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: + "@nx/jest": + optional: true "@zkochan/js-yaml": optional: true - checksum: 10c0/dd760f73a2b66d968c773a2ce4182b0208ff9bce6f649e5d548af59f8d0c86a4d9ca48951c8ad0e94525134fb81e3ef628ea26f5b8e9e6843337619a420d9655 + checksum: 10c0/801c30112cf2784491923e8712fbbf1247c86bce19ede20eac82525448867499c17a31e0cc8140780e934a9fcfc28ef5d54f17aae65d1eab87f3ea3f1939c412 languageName: node linkType: hard "@nx/jest@npm:^22.6.4": - version: 22.6.5 - resolution: "@nx/jest@npm:22.6.5" + version: 22.7.0 + resolution: "@nx/jest@npm:22.7.0" dependencies: "@jest/reporters": "npm:^30.0.2" "@jest/test-result": "npm:^30.0.2" - "@nx/devkit": "npm:22.6.5" - "@nx/js": "npm:22.6.5" + "@nx/devkit": "npm:22.7.0" + "@nx/js": "npm:22.7.0" "@phenomnomnominal/tsquery": "npm:~6.1.4" identity-obj-proxy: "npm:3.0.0" jest-config: "npm:^30.0.2" @@ -3025,13 +3073,13 @@ __metadata: semver: "npm:^7.6.3" tslib: "npm:^2.3.0" yargs-parser: "npm:21.1.1" - checksum: 10c0/512c49c12089530442d43b3d3b74cf59d00c0450d51c6e56f476b2602aa5a8e1d8bdc10c259b42f21959fdf866cd4af057998aab2c55a0351a73775cf45d5959 + checksum: 10c0/188f97581a6f0bce5208682300708f20177ab46f124a4af6729bd8922e27932cade9c5922a82c51bb3c15b162068ee11d6715d16bf4a0f8fed060b114988c3e9 languageName: node linkType: hard -"@nx/js@npm:22.6.5, @nx/js@npm:^22.6.4": - version: 22.6.5 - resolution: "@nx/js@npm:22.6.5" +"@nx/js@npm:22.7.0, @nx/js@npm:^22.6.4": + version: 22.7.0 + resolution: "@nx/js@npm:22.7.0" dependencies: "@babel/core": "npm:^7.23.2" "@babel/plugin-proposal-decorators": "npm:^7.22.7" @@ -3040,8 +3088,8 @@ __metadata: "@babel/preset-env": "npm:^7.23.2" "@babel/preset-typescript": "npm:^7.22.5" "@babel/runtime": "npm:^7.22.6" - "@nx/devkit": "npm:22.6.5" - "@nx/workspace": "npm:22.6.5" + "@nx/devkit": "npm:22.7.0" + "@nx/workspace": "npm:22.7.0" "@zkochan/js-yaml": "npm:0.0.7" babel-plugin-const-enum: "npm:^1.0.1" babel-plugin-macros: "npm:^3.1.0" @@ -3064,94 +3112,94 @@ __metadata: peerDependenciesMeta: verdaccio: optional: true - checksum: 10c0/05a0fa1884899cca77c2f3f199c0d9780a4f466ff6c3d358f5b0544b8805603b481307391ba6947fea074cb9cd6b345823efff6fefc3ed5c8961f87a93001173 + checksum: 10c0/80e0112f0c7206b8421bd8e72acbe6996e4e8b6f87a0f2344b69bf47f8b7fd9086c24d0cc49d89b32c53f4707a1c9dca7970ee42c13b511b49e70b5b9efa7de8 languageName: node linkType: hard -"@nx/nx-darwin-arm64@npm:22.6.5": - version: 22.6.5 - resolution: "@nx/nx-darwin-arm64@npm:22.6.5" +"@nx/nx-darwin-arm64@npm:22.7.0": + version: 22.7.0 + resolution: "@nx/nx-darwin-arm64@npm:22.7.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@nx/nx-darwin-x64@npm:22.6.5": - version: 22.6.5 - resolution: "@nx/nx-darwin-x64@npm:22.6.5" +"@nx/nx-darwin-x64@npm:22.7.0": + version: 22.7.0 + resolution: "@nx/nx-darwin-x64@npm:22.7.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@nx/nx-freebsd-x64@npm:22.6.5": - version: 22.6.5 - resolution: "@nx/nx-freebsd-x64@npm:22.6.5" +"@nx/nx-freebsd-x64@npm:22.7.0": + version: 22.7.0 + resolution: "@nx/nx-freebsd-x64@npm:22.7.0" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@nx/nx-linux-arm-gnueabihf@npm:22.6.5": - version: 22.6.5 - resolution: "@nx/nx-linux-arm-gnueabihf@npm:22.6.5" +"@nx/nx-linux-arm-gnueabihf@npm:22.7.0": + version: 22.7.0 + resolution: "@nx/nx-linux-arm-gnueabihf@npm:22.7.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@nx/nx-linux-arm64-gnu@npm:22.6.5": - version: 22.6.5 - resolution: "@nx/nx-linux-arm64-gnu@npm:22.6.5" +"@nx/nx-linux-arm64-gnu@npm:22.7.0": + version: 22.7.0 + resolution: "@nx/nx-linux-arm64-gnu@npm:22.7.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@nx/nx-linux-arm64-musl@npm:22.6.5": - version: 22.6.5 - resolution: "@nx/nx-linux-arm64-musl@npm:22.6.5" +"@nx/nx-linux-arm64-musl@npm:22.7.0": + version: 22.7.0 + resolution: "@nx/nx-linux-arm64-musl@npm:22.7.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@nx/nx-linux-x64-gnu@npm:22.6.5": - version: 22.6.5 - resolution: "@nx/nx-linux-x64-gnu@npm:22.6.5" +"@nx/nx-linux-x64-gnu@npm:22.7.0": + version: 22.7.0 + resolution: "@nx/nx-linux-x64-gnu@npm:22.7.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@nx/nx-linux-x64-musl@npm:22.6.5": - version: 22.6.5 - resolution: "@nx/nx-linux-x64-musl@npm:22.6.5" +"@nx/nx-linux-x64-musl@npm:22.7.0": + version: 22.7.0 + resolution: "@nx/nx-linux-x64-musl@npm:22.7.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@nx/nx-win32-arm64-msvc@npm:22.6.5": - version: 22.6.5 - resolution: "@nx/nx-win32-arm64-msvc@npm:22.6.5" +"@nx/nx-win32-arm64-msvc@npm:22.7.0": + version: 22.7.0 + resolution: "@nx/nx-win32-arm64-msvc@npm:22.7.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@nx/nx-win32-x64-msvc@npm:22.6.5": - version: 22.6.5 - resolution: "@nx/nx-win32-x64-msvc@npm:22.6.5" +"@nx/nx-win32-x64-msvc@npm:22.7.0": + version: 22.7.0 + resolution: "@nx/nx-win32-x64-msvc@npm:22.7.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@nx/workspace@npm:22.6.5": - version: 22.6.5 - resolution: "@nx/workspace@npm:22.6.5" +"@nx/workspace@npm:22.7.0": + version: 22.7.0 + resolution: "@nx/workspace@npm:22.7.0" dependencies: - "@nx/devkit": "npm:22.6.5" + "@nx/devkit": "npm:22.7.0" "@zkochan/js-yaml": "npm:0.0.7" chalk: "npm:^4.1.0" enquirer: "npm:~2.3.6" - nx: "npm:22.6.5" + nx: "npm:22.7.0" picomatch: "npm:4.0.4" semver: "npm:^7.6.3" tslib: "npm:^2.3.0" yargs-parser: "npm:21.1.1" - checksum: 10c0/9f7749103df1af31e15a2ed7832914e9c595c3c98e9fe9ed65f5f5d955ddf7168a7938e0af9abf48ebdb072d9e51f38b59c7b02e93c2088219a3fcb59369cf0f + checksum: 10c0/06cdd79235be9ce31800bc7485bdc6c27fb87a58b178631cf6b5fc7164a6a692094ab8fc0ae5bbdadbb2526364c61a4bd3bf1342f8b5580271b1c46495abc757 languageName: node linkType: hard @@ -3287,11 +3335,11 @@ __metadata: languageName: node linkType: hard -"@openai/agents-core@npm:0.3.9": - version: 0.3.9 - resolution: "@openai/agents-core@npm:0.3.9" +"@openai/agents-core@npm:0.3.0": + version: 0.3.0 + resolution: "@openai/agents-core@npm:0.3.0" dependencies: - "@modelcontextprotocol/sdk": "npm:^1.25.2" + "@modelcontextprotocol/sdk": "npm:^1.17.2" debug: "npm:^4.4.0" openai: "npm:^6" peerDependencies: @@ -3302,49 +3350,49 @@ __metadata: peerDependenciesMeta: zod: optional: true - checksum: 10c0/8cf01b89ac906c0328778a3067eb0a112f3b42df88d2fcb7691292d45e78523bcbc2f9f7a27daabdf4d101bc56b48ae41d69cc7dd5d37376b32e9cd3f297e745 + checksum: 10c0/fe38c1e0d370985e6cfb6b393a65f7adc781b7c8fae74b6f2ececa299f06edea484a9d067dec74caeff60c27bd1509be8f981b022a86e6544b48b76b537e04fa languageName: node linkType: hard -"@openai/agents-openai@npm:0.3.9": - version: 0.3.9 - resolution: "@openai/agents-openai@npm:0.3.9" +"@openai/agents-openai@npm:0.3.0": + version: 0.3.0 + resolution: "@openai/agents-openai@npm:0.3.0" dependencies: - "@openai/agents-core": "npm:0.3.9" + "@openai/agents-core": "npm:0.3.0" debug: "npm:^4.4.0" openai: "npm:^6" peerDependencies: zod: ^3.25.40 || ^4.0 - checksum: 10c0/f6be0d93e4de925d40da9ae2bd95eea154171911ec33342be0fd3cdb4cbc397202f5856e649894e0f13c3cf58c568c06deb50e02ee17c6a8f9061c13b952f5e1 + checksum: 10c0/df1dad497d2081850c9a7afd3001badb547cca7a49feaf4dcecfa01cee50d1a28538d95464d3b5b8ba8ec6f06861f04b2461cf0816dacd735460c16e76839072 languageName: node linkType: hard -"@openai/agents-realtime@npm:0.3.9": - version: 0.3.9 - resolution: "@openai/agents-realtime@npm:0.3.9" +"@openai/agents-realtime@npm:0.3.0": + version: 0.3.0 + resolution: "@openai/agents-realtime@npm:0.3.0" dependencies: - "@openai/agents-core": "npm:0.3.9" + "@openai/agents-core": "npm:0.3.0" "@types/ws": "npm:^8.18.1" debug: "npm:^4.4.0" ws: "npm:^8.18.1" peerDependencies: zod: ^3.25.40 || ^4.0 - checksum: 10c0/3bf61704cb48f108efdbc43154226be2cacd379edadaf75d68e074f5e62377836598d62f846697d302cb6d4a97c4cf13f864062238f1a2a442a6d605e2441791 + checksum: 10c0/6b4194f5d4aaeba0d9ec22d0441aaf0e5b2cf126d0a22a144d2c8980fc8f43ff761d33a6c83cc4fe706ab18ac6c115cfd87092f7c079d3d20c0e04814911f4a2 languageName: node linkType: hard -"@openai/agents@npm:^0.3.0": - version: 0.3.9 - resolution: "@openai/agents@npm:0.3.9" +"@openai/agents@npm:0.3.0": + version: 0.3.0 + resolution: "@openai/agents@npm:0.3.0" dependencies: - "@openai/agents-core": "npm:0.3.9" - "@openai/agents-openai": "npm:0.3.9" - "@openai/agents-realtime": "npm:0.3.9" + "@openai/agents-core": "npm:0.3.0" + "@openai/agents-openai": "npm:0.3.0" + "@openai/agents-realtime": "npm:0.3.0" debug: "npm:^4.4.0" openai: "npm:^6" peerDependencies: zod: ^3.25.40 || ^4.0 - checksum: 10c0/b353021372a760b87f4bab71bee9072791c3778d4320508834e8de746fa1442cc1d01d93bdd1ce1e158b5e74e42644e58ed9c60d48bec023a4c4ce670d542ad6 + checksum: 10c0/2b664e9f6a5f82917c29492783d7f81d27f5544bbe233d002c5b55ac6b07bced9bd49fb306b9d88ab8a28303c8008e7b2eab5dd19aa91ce2779aa19369db050d languageName: node linkType: hard @@ -3695,21 +3743,21 @@ __metadata: languageName: node linkType: hard -"@tybys/wasm-util@npm:^0.10.0": - version: 0.10.1 - resolution: "@tybys/wasm-util@npm:0.10.1" +"@tybys/wasm-util@npm:0.9.0, @tybys/wasm-util@npm:^0.9.0": + version: 0.9.0 + resolution: "@tybys/wasm-util@npm:0.9.0" dependencies: tslib: "npm:^2.4.0" - checksum: 10c0/b255094f293794c6d2289300c5fbcafbb5532a3aed3a5ffd2f8dc1828e639b88d75f6a376dd8f94347a44813fd7a7149d8463477a9a49525c8b2dcaa38c2d1e8 + checksum: 10c0/f9fde5c554455019f33af6c8215f1a1435028803dc2a2825b077d812bed4209a1a64444a4ca0ce2ea7e1175c8d88e2f9173a36a33c199e8a5c671aa31de8242d languageName: node linkType: hard -"@tybys/wasm-util@npm:^0.9.0": - version: 0.9.0 - resolution: "@tybys/wasm-util@npm:0.9.0" +"@tybys/wasm-util@npm:^0.10.0": + version: 0.10.1 + resolution: "@tybys/wasm-util@npm:0.10.1" dependencies: tslib: "npm:^2.4.0" - checksum: 10c0/f9fde5c554455019f33af6c8215f1a1435028803dc2a2825b077d812bed4209a1a64444a4ca0ce2ea7e1175c8d88e2f9173a36a33c199e8a5c671aa31de8242d + checksum: 10c0/b255094f293794c6d2289300c5fbcafbb5532a3aed3a5ffd2f8dc1828e639b88d75f6a376dd8f94347a44813fd7a7149d8463477a9a49525c8b2dcaa38c2d1e8 languageName: node linkType: hard @@ -3951,11 +3999,11 @@ __metadata: linkType: hard "@types/pdfkit@npm:^0.17.5": - version: 0.17.5 - resolution: "@types/pdfkit@npm:0.17.5" + version: 0.17.6 + resolution: "@types/pdfkit@npm:0.17.6" dependencies: "@types/node": "npm:*" - checksum: 10c0/4b854f5172f899684d231d45feb4018fee5806e639859b55bbdc93c0abe185c83194ac82da5f82d7e7716eb042079df4e21806d2ab628b955bb407be8dfbe2ea + checksum: 10c0/78c86ec829ad54afab58340a40c7b126ddc378315f735eae786a68da5abd97be82d3b11a77a1fb3d0f53c654e3656a7ace715a544a6964d001836dfab696c4b1 languageName: node linkType: hard @@ -4041,104 +4089,104 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^8": - version: 8.58.2 - resolution: "@typescript-eslint/eslint-plugin@npm:8.58.2" + version: 8.59.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.59.0" dependencies: "@eslint-community/regexpp": "npm:^4.12.2" - "@typescript-eslint/scope-manager": "npm:8.58.2" - "@typescript-eslint/type-utils": "npm:8.58.2" - "@typescript-eslint/utils": "npm:8.58.2" - "@typescript-eslint/visitor-keys": "npm:8.58.2" + "@typescript-eslint/scope-manager": "npm:8.59.0" + "@typescript-eslint/type-utils": "npm:8.59.0" + "@typescript-eslint/utils": "npm:8.59.0" + "@typescript-eslint/visitor-keys": "npm:8.59.0" ignore: "npm:^7.0.5" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^2.5.0" peerDependencies: - "@typescript-eslint/parser": ^8.58.2 + "@typescript-eslint/parser": ^8.59.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/87dd29c7a87461c586e3025cde2a6e35c7cc99e69c3a93ee8254f1523ab6d4d5d322cacd476e42a3aa87581fbcf9039ef528a638a80a5c9beb1c5ebb4cc557e2 + checksum: 10c0/f98171ecad6a5106fe978df155f4b65a72dfdadfcd663651b633b61480b543e74796baa224a1393e323f9514901604fe6302323c4b80b79f7a98512a01bc6461 languageName: node linkType: hard "@typescript-eslint/parser@npm:^8": - version: 8.58.2 - resolution: "@typescript-eslint/parser@npm:8.58.2" + version: 8.59.0 + resolution: "@typescript-eslint/parser@npm:8.59.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.58.2" - "@typescript-eslint/types": "npm:8.58.2" - "@typescript-eslint/typescript-estree": "npm:8.58.2" - "@typescript-eslint/visitor-keys": "npm:8.58.2" + "@typescript-eslint/scope-manager": "npm:8.59.0" + "@typescript-eslint/types": "npm:8.59.0" + "@typescript-eslint/typescript-estree": "npm:8.59.0" + "@typescript-eslint/visitor-keys": "npm:8.59.0" debug: "npm:^4.4.3" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/7ce3e5086b5376a91f2932fda6e0d6777ff457535eff9c133852b21c895dc56933dcda173430352850e77c2437f81c5699fac9c70207abbbd087882766b88758 + checksum: 10c0/996a7b43f8a515ebbd06455c9f53065c561c8519bc4f634d6783b92832aa69e47945478d1601a87582f9f7b303becc172d5d7f776e201b2a2d375bc762ad4015 languageName: node linkType: hard -"@typescript-eslint/project-service@npm:8.58.2": - version: 8.58.2 - resolution: "@typescript-eslint/project-service@npm:8.58.2" +"@typescript-eslint/project-service@npm:8.59.0": + version: 8.59.0 + resolution: "@typescript-eslint/project-service@npm:8.59.0" dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.58.2" - "@typescript-eslint/types": "npm:^8.58.2" + "@typescript-eslint/tsconfig-utils": "npm:^8.59.0" + "@typescript-eslint/types": "npm:^8.59.0" debug: "npm:^4.4.3" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/57fa2a54452f9d9058781feb8d99d7a25096d55db15783a552b242d144992ccf893548672d3bc554c1bc0768cd8c80dbb467e9aff0db471ebcc876d4409cf75e + checksum: 10c0/ffba9595a427235bbeb0e5c7db3486f8d01dd8f8686964b4f82084e82008c49b897d01c4d331f33a9ce29edae70a9286f6fdedec4bf9037d732d9c9e86ebc7ea languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.58.2": - version: 8.58.2 - resolution: "@typescript-eslint/scope-manager@npm:8.58.2" +"@typescript-eslint/scope-manager@npm:8.59.0": + version: 8.59.0 + resolution: "@typescript-eslint/scope-manager@npm:8.59.0" dependencies: - "@typescript-eslint/types": "npm:8.58.2" - "@typescript-eslint/visitor-keys": "npm:8.58.2" - checksum: 10c0/9bf17c32d99db840500dfa4f0504635f6422fa435e0d2f3c58c36a88434d7af7ffe7ba9a6b13bd105dfa0f36a74307955ef2837ec5f1855e34c3af1843c11d36 + "@typescript-eslint/types": "npm:8.59.0" + "@typescript-eslint/visitor-keys": "npm:8.59.0" + checksum: 10c0/d372f08be190d01e6d237932dc0d77808a9dc0a34fe8f690a3eac496d6e2f93c030c6ccb5000b35e825a6cfc4d9ca69a00f2ccda334115a9865a9d02cd603e52 languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.58.2, @typescript-eslint/tsconfig-utils@npm:^8.58.2": - version: 8.58.2 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.58.2" +"@typescript-eslint/tsconfig-utils@npm:8.59.0, @typescript-eslint/tsconfig-utils@npm:^8.59.0": + version: 8.59.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.59.0" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/d3dc874ab43af39245ee8383bb6d39c985e64c43b81a7bbf18b7982047473366c252e19a9fbfe38df30c677b42133aa43a1c0a75e92b8de5d2e64defd4b3a05e + checksum: 10c0/ab482c22f23774d24b3048c9fcdc5e0b94137064b3af901f4b0327da2270c2b2961c19165ccf8bdeaedfa83138be98c5cd8edcdc89deb6187baf6438cd8584b0 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.58.2": - version: 8.58.2 - resolution: "@typescript-eslint/type-utils@npm:8.58.2" +"@typescript-eslint/type-utils@npm:8.59.0": + version: 8.59.0 + resolution: "@typescript-eslint/type-utils@npm:8.59.0" dependencies: - "@typescript-eslint/types": "npm:8.58.2" - "@typescript-eslint/typescript-estree": "npm:8.58.2" - "@typescript-eslint/utils": "npm:8.58.2" + "@typescript-eslint/types": "npm:8.59.0" + "@typescript-eslint/typescript-estree": "npm:8.59.0" + "@typescript-eslint/utils": "npm:8.59.0" debug: "npm:^4.4.3" ts-api-utils: "npm:^2.5.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/1e7248694c15b5e78aeb573aef755513910f6a7ec1842223ec0c8429b6abd7342996de215aefab78520e64d2e8600c9829bdf56132476cb86703fd54f2492467 + checksum: 10c0/e2f2176a9bce81c19b53accf4e9189c60b1b84717cf129a6d003a2271019e30d410d2ccdc0fc6a37cbb8274a1b297d7d30a116189110f9d24a86391ee24a9fef languageName: node linkType: hard -"@typescript-eslint/types@npm:8.58.2, @typescript-eslint/types@npm:^8.58.2": - version: 8.58.2 - resolution: "@typescript-eslint/types@npm:8.58.2" - checksum: 10c0/6707c1a2ec921b9ae441b35d9cb4e0af11673a67e332a366e3033f1d558ff5db4f39021872c207fb361841670e9ffcc4981f19eb21e4495a3a031d02015637a7 +"@typescript-eslint/types@npm:8.59.0, @typescript-eslint/types@npm:^8.59.0": + version: 8.59.0 + resolution: "@typescript-eslint/types@npm:8.59.0" + checksum: 10c0/2750b1e21290dffe90a424fe05c2bab701f60a7b51b5e0921ed14bb1a5fc29ff3fe8f286817d2287e93ff78e33e6626f6ce26d0bc79a729bd608deda77a9bdde languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.58.2": - version: 8.58.2 - resolution: "@typescript-eslint/typescript-estree@npm:8.58.2" +"@typescript-eslint/typescript-estree@npm:8.59.0": + version: 8.59.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.59.0" dependencies: - "@typescript-eslint/project-service": "npm:8.58.2" - "@typescript-eslint/tsconfig-utils": "npm:8.58.2" - "@typescript-eslint/types": "npm:8.58.2" - "@typescript-eslint/visitor-keys": "npm:8.58.2" + "@typescript-eslint/project-service": "npm:8.59.0" + "@typescript-eslint/tsconfig-utils": "npm:8.59.0" + "@typescript-eslint/types": "npm:8.59.0" + "@typescript-eslint/visitor-keys": "npm:8.59.0" debug: "npm:^4.4.3" minimatch: "npm:^10.2.2" semver: "npm:^7.7.3" @@ -4146,32 +4194,32 @@ __metadata: ts-api-utils: "npm:^2.5.0" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/60a323f60eff9b4bb6eb3121c5f6292e7962517a329a8a9f828e8f07516de78e6a7c1b1b1cfd732f39edf184fe57828ca557fbc63b74c61b54bcb679a69e249c + checksum: 10c0/82d3dfb4de591d9a39d2c4dafc13f14b4940f5b116fb3db311935137aa7e34c9dce3209aaeace118070847b2355df7c185ff1e0f2a36232c3aea9b5fa2652f98 languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.58.2": - version: 8.58.2 - resolution: "@typescript-eslint/utils@npm:8.58.2" +"@typescript-eslint/utils@npm:8.59.0": + version: 8.59.0 + resolution: "@typescript-eslint/utils@npm:8.59.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.9.1" - "@typescript-eslint/scope-manager": "npm:8.58.2" - "@typescript-eslint/types": "npm:8.58.2" - "@typescript-eslint/typescript-estree": "npm:8.58.2" + "@typescript-eslint/scope-manager": "npm:8.59.0" + "@typescript-eslint/types": "npm:8.59.0" + "@typescript-eslint/typescript-estree": "npm:8.59.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/d83e6c7c1b01236d255cabe2a5dc5384eedebc9f9af6aa19cc2ab7d8b280f86912f2b1a87659b2754919afd2606820b4e53862ac91970794e2980bc97487537c + checksum: 10c0/eca4e5a18ae8e8c4360b05758fa142465daef3a9dffe4d78b15607b4680698eece96f899bce1e8d83427da74ddfbca80a95456727b8b9239816528978180b047 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.58.2": - version: 8.58.2 - resolution: "@typescript-eslint/visitor-keys@npm:8.58.2" +"@typescript-eslint/visitor-keys@npm:8.59.0": + version: 8.59.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.59.0" dependencies: - "@typescript-eslint/types": "npm:8.58.2" + "@typescript-eslint/types": "npm:8.59.0" eslint-visitor-keys: "npm:^5.0.0" - checksum: 10c0/6775a63dbafe7a305f0cf3f0c5eb077e30dba8a60022e4ce3220669c7f1e742c6ea2ebff8c6c0288dc17eeef8f4015089a23abbdc82a6a9382abe4a77950b695 + checksum: 10c0/09ec24c9c9d0a3ccb57bb2ab3dfd8deca124339aba6621503285c22765a4dfc89bf3d31e337dd647b1cdf89bac384e3a62e0f5b8c1d5a93d16d1f417144e3226 languageName: node linkType: hard @@ -4317,30 +4365,27 @@ __metadata: languageName: node linkType: hard -"@yarnpkg/lockfile@npm:^1.1.0": +"@yarnpkg/lockfile@npm:1.1.0": version: 1.1.0 resolution: "@yarnpkg/lockfile@npm:1.1.0" checksum: 10c0/0bfa50a3d756623d1f3409bc23f225a1d069424dbc77c6fd2f14fb377390cd57ec703dc70286e081c564be9051ead9ba85d81d66a3e68eeb6eb506d4e0c0fbda languageName: node linkType: hard -"@yarnpkg/parsers@npm:3.0.2": - version: 3.0.2 - resolution: "@yarnpkg/parsers@npm:3.0.2" - dependencies: - js-yaml: "npm:^3.10.0" - tslib: "npm:^2.4.0" - checksum: 10c0/a0c340e13129643162423d7e666061c0b39b143bfad3fc5a74c7d92a30fd740f6665d41cd4e61832c20375889d793eea1d1d103cacb39ed68f7acd168add8c53 - languageName: node - linkType: hard - "@zeroshotbuilders/agent-experiments@workspace:packages/agent-experiments": version: 0.0.0-use.local resolution: "@zeroshotbuilders/agent-experiments@workspace:packages/agent-experiments" dependencies: - "@zeroshotbuilders/commons-testing": "npm:^0.0.4" - "@zeroshotbuilders/docling-utils": "npm:^0.0.4" + "@grpc/grpc-js": "npm:^1.14.3" + "@nestjs/common": "npm:^10.4.22" + "@nestjs/core": "npm:^10.4.22" + "@nestjs/platform-express": "npm:^10.4.22" + "@zeroshotbuilders/commons": "npm:^0.0.5" + "@zeroshotbuilders/commons-testing": "npm:^0.0.5" + "@zeroshotbuilders/docling-utils": "npm:^0.0.5" pdfkit: "npm:^0.16.0" + reflect-metadata: "npm:^0.2.2" + rxjs: "npm:^7.8.2" peerDependencies: "@nestjs/common": ">=10.0.0" "@nestjs/core": ">=10.0.0" @@ -4353,8 +4398,9 @@ __metadata: version: 0.0.0-use.local resolution: "@zeroshotbuilders/agentic-workflows@workspace:packages/agentic-workflows" dependencies: - "@openai/agents": "npm:^0.3.0" - openai: "npm:^4.77.0" + "@openai/agents": "npm:0.3.0" + openai: "npm:4.77.0" + zod: "npm:^3.25.40" peerDependencies: "@nestjs/common": ">=10.0.0" "@nestjs/core": ">=10.0.0" @@ -4362,7 +4408,7 @@ __metadata: languageName: unknown linkType: soft -"@zeroshotbuilders/commons-testing@npm:^0.0.4, @zeroshotbuilders/commons-testing@workspace:packages/commons-testing": +"@zeroshotbuilders/commons-testing@npm:^0.0.5, @zeroshotbuilders/commons-testing@workspace:packages/commons-testing": version: 0.0.0-use.local resolution: "@zeroshotbuilders/commons-testing@workspace:packages/commons-testing" dependencies: @@ -4372,7 +4418,7 @@ __metadata: languageName: unknown linkType: soft -"@zeroshotbuilders/commons@workspace:packages/commons": +"@zeroshotbuilders/commons@npm:^0.0.5, @zeroshotbuilders/commons@workspace:packages/commons": version: 0.0.0-use.local resolution: "@zeroshotbuilders/commons@workspace:packages/commons" dependencies: @@ -4399,7 +4445,7 @@ __metadata: languageName: unknown linkType: soft -"@zeroshotbuilders/docling-utils@npm:^0.0.4, @zeroshotbuilders/docling-utils@workspace:packages/docling-utils": +"@zeroshotbuilders/docling-utils@npm:^0.0.5, @zeroshotbuilders/docling-utils@workspace:packages/docling-utils": version: 0.0.0-use.local resolution: "@zeroshotbuilders/docling-utils@workspace:packages/docling-utils" peerDependencies: @@ -4620,30 +4666,30 @@ __metadata: linkType: hard "ajv@npm:^6.14.0": - version: 6.14.0 - resolution: "ajv@npm:6.14.0" + version: 6.15.0 + resolution: "ajv@npm:6.15.0" dependencies: fast-deep-equal: "npm:^3.1.1" fast-json-stable-stringify: "npm:^2.0.0" json-schema-traverse: "npm:^0.4.1" uri-js: "npm:^4.2.2" - checksum: 10c0/a2bc39b0555dc9802c899f86990eb8eed6e366cddbf65be43d5aa7e4f3c4e1a199d5460fd7ca4fb3d864000dbbc049253b72faa83b3b30e641ca52cb29a68c22 + checksum: 10c0/67966499dd272ecde1c2e467084411132891523d057487587879d39ac04207f4351b7b2324c83198013967fbfa632c1612adc960114a30770fbe07a0773b32c2 languageName: node linkType: hard "ajv@npm:^8.0.0, ajv@npm:^8.17.1": - version: 8.18.0 - resolution: "ajv@npm:8.18.0" + version: 8.20.0 + resolution: "ajv@npm:8.20.0" dependencies: fast-deep-equal: "npm:^3.1.3" fast-uri: "npm:^3.0.1" json-schema-traverse: "npm:^1.0.0" require-from-string: "npm:^2.0.2" - checksum: 10c0/e7517c426173513a07391be951879932bdf3348feaebd2199f5b901c20f99d60db8cd1591502d4d551dc82f594e82a05c4fe1c70139b15b8937f7afeaed9532f + checksum: 10c0/5df9a1c8f83863cde1bd3a9ddb426f599718f88e3dc9153616c79fb28e0be455335830d7f21d745576519f057b371352daa31047b6a33d7036fe08777d60cf2a languageName: node linkType: hard -"ansi-colors@npm:^4.1.1": +"ansi-colors@npm:4.1.3, ansi-colors@npm:^4.1.1": version: 4.1.3 resolution: "ansi-colors@npm:4.1.3" checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 @@ -4659,7 +4705,7 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^5.0.1": +"ansi-regex@npm:5.0.1, ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 @@ -4673,7 +4719,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": +"ansi-styles@npm:4.3.0, ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" dependencies: @@ -4774,6 +4820,13 @@ __metadata: languageName: node linkType: hard +"argparse@npm:2.0.1, argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -4783,13 +4836,6 @@ __metadata: languageName: node linkType: hard -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e - languageName: node - linkType: hard - "array-flatten@npm:1.1.1": version: 1.1.1 resolution: "array-flatten@npm:1.1.1" @@ -4834,14 +4880,14 @@ __metadata: languageName: node linkType: hard -"asynckit@npm:^0.4.0": +"asynckit@npm:0.4.0, asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d languageName: node linkType: hard -"axios@npm:1.15.0, axios@npm:^1.7.7": +"axios@npm:1.15.0": version: 1.15.0 resolution: "axios@npm:1.15.0" dependencies: @@ -4852,6 +4898,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:^1.7.7": + version: 1.15.2 + resolution: "axios@npm:1.15.2" + dependencies: + follow-redirects: "npm:^1.15.11" + form-data: "npm:^4.0.5" + proxy-from-env: "npm:^2.1.0" + checksum: 10c0/4eeae0feeaa7fdc1ef24f81f8b378fdadedf4aebdd6bf224484675160f8744cf17b9b0d1c215279979940f7e8ce463beffa2f713099612e428eac238515c81d5 + languageName: node + linkType: hard + "b4a@npm:^1.6.4": version: 1.8.0 resolution: "b4a@npm:1.8.0" @@ -5075,6 +5132,13 @@ __metadata: languageName: node linkType: hard +"balanced-match@npm:4.0.3": + version: 4.0.3 + resolution: "balanced-match@npm:4.0.3" + checksum: 10c0/4d96945d0815849934145b2cdc0ccb80fb869d909060820fde5f95da0a32040f2142560ef931584fbb6a1607d39d399707e7d2364030a720ac1dc6f78ddaf9dc + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -5120,9 +5184,9 @@ __metadata: linkType: hard "bare-os@npm:^3.0.1": - version: 3.8.7 - resolution: "bare-os@npm:3.8.7" - checksum: 10c0/6541b223a196a58b52e1103ef1f04d35018c1b56b6c250410fc54680767624273691ece741eb88502c95b058ab90b632972348a9231410df05c5df61a62c9c08 + version: 3.9.0 + resolution: "bare-os@npm:3.9.0" + checksum: 10c0/fc17ca44a7ae59b9c62531365d6b68fb436f0c77c4c35bb2bbdb9382f2f229f73365164c33350fe1833857e0f4224e3079dc5175cd438067c078d99ccb7932e8 languageName: node linkType: hard @@ -5157,11 +5221,11 @@ __metadata: linkType: hard "bare-url@npm:^2.2.2": - version: 2.4.0 - resolution: "bare-url@npm:2.4.0" + version: 2.4.2 + resolution: "bare-url@npm:2.4.2" dependencies: bare-path: "npm:^3.0.0" - checksum: 10c0/b349bf4d3826d6e9fea40aae0b8aaba6e7e83af89feac93ad0b87721c11e0dd84eb651549275242c5ae07a3a21d24620b76bf59c434db65e9605a6e3180f8af2 + checksum: 10c0/50d225755a0f312e4951ca71538e9401276f73e9a1fbc4419118ff0d1b9ec93fe8c03e1ddbc95672afdc2c9d0ced224a5fb2b15b241759b2649dca572a295c51 languageName: node linkType: hard @@ -5172,7 +5236,7 @@ __metadata: languageName: node linkType: hard -"base64-js@npm:^1.1.2, base64-js@npm:^1.3.0, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": +"base64-js@npm:1.5.1, base64-js@npm:^1.1.2, base64-js@npm:^1.3.0, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf @@ -5180,11 +5244,11 @@ __metadata: linkType: hard "baseline-browser-mapping@npm:^2.10.12": - version: 2.10.19 - resolution: "baseline-browser-mapping@npm:2.10.19" + version: 2.10.23 + resolution: "baseline-browser-mapping@npm:2.10.23" bin: baseline-browser-mapping: dist/cli.cjs - checksum: 10c0/d7ab47484477d16e29b711b74c56791d751701e796a133fcd6b72cf7f73f95cb72c0bc02070c3a93e78210cd02a4dc6d573191ce6920b863b3a9d8e9aa893bcf + checksum: 10c0/b2c167b9b46dc1c0c6a2c2ccc24469910f22ca953fa591dcff7a222a69aa864b8172f3fdff851da00de307732752b87b1e23a0b4b416f024e5608facdbc461c4 languageName: node linkType: hard @@ -5228,7 +5292,7 @@ __metadata: languageName: node linkType: hard -"bl@npm:^4.0.3": +"bl@npm:4.1.0, bl@npm:^4.0.3": version: 4.1.0 resolution: "bl@npm:4.1.0" dependencies: @@ -5239,7 +5303,7 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.20.4, body-parser@npm:~1.20.3": +"body-parser@npm:1.20.4": version: 1.20.4 resolution: "body-parser@npm:1.20.4" dependencies: @@ -5276,6 +5340,35 @@ __metadata: languageName: node linkType: hard +"body-parser@npm:~1.20.3": + version: 1.20.5 + resolution: "body-parser@npm:1.20.5" + dependencies: + bytes: "npm:~3.1.2" + content-type: "npm:~1.0.5" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:~1.2.0" + http-errors: "npm:~2.0.1" + iconv-lite: "npm:~0.4.24" + on-finished: "npm:~2.4.1" + qs: "npm:~6.15.1" + raw-body: "npm:~2.5.3" + type-is: "npm:~1.6.18" + unpipe: "npm:~1.0.0" + checksum: 10c0/ad777ca5e4711eae253c93f50fdc4608c60b76a9710d79e5e5b84581c76691e6ad21ecc9158986d9ea2b365df73e403ca33c27a8bccc1a7cfc2ccc248548118d + languageName: node + linkType: hard + +"brace-expansion@npm:5.0.2": + version: 5.0.2 + resolution: "brace-expansion@npm:5.0.2" + dependencies: + balanced-match: "npm:^4.0.2" + checksum: 10c0/60c765e5df6fc0ceca3d5703202ae6779db61f28ea3bf93a04dbf0d50c22ef8e4644e09d0459c827077cd2d09ba8f199a04d92c36419fcf874601a5565013174 + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.14 resolution: "brace-expansion@npm:1.1.14" @@ -5378,7 +5471,7 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^5.5.0": +"buffer@npm:5.7.1, buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: @@ -5406,7 +5499,7 @@ __metadata: "@nestjs/common": "npm:^10" "@nestjs/core": "npm:^10" "@nestjs/platform-express": "npm:^10" - "@nestjs/testing": "npm:^11.1.18" + "@nestjs/testing": "npm:^10.4.22" "@nx/eslint": "npm:^22.6.4" "@nx/jest": "npm:^22.6.4" "@nx/js": "npm:^22.6.4" @@ -5432,6 +5525,7 @@ __metadata: pdfkit: "npm:^0.18.0" pg: "npm:^8.20.0" prettier: "npm:^3.8.1" + reflect-metadata: "npm:^0.2.2" rxjs: "npm:^7.8.2" testcontainers: "npm:^11.13.0" ts-jest: "npm:^29" @@ -5449,8 +5543,8 @@ __metadata: linkType: hard "bullmq@npm:^5.0.0": - version: 5.74.1 - resolution: "bullmq@npm:5.74.1" + version: 5.76.2 + resolution: "bullmq@npm:5.76.2" dependencies: cron-parser: "npm:4.9.0" ioredis: "npm:5.10.1" @@ -5458,8 +5552,7 @@ __metadata: node-abort-controller: "npm:3.1.1" semver: "npm:7.7.4" tslib: "npm:2.8.1" - uuid: "npm:11.1.0" - checksum: 10c0/2ab22676ef7b56f3d1c4fb64f345bcd132ff04f60c271d820372fc988220e6e1316d1332173c1ef84bf70a1279c1b680c401385ba4af7a1f809995c9859cbfaa + checksum: 10c0/8f093c5976b7742dfc76c7138157ce6c7bfafe75a8971ddc2f77ec390841829376ae87d5093bf5eb3ec0bcae0871ca0a02b0679c151ab6392b1cddd8913b6192 languageName: node linkType: hard @@ -5511,7 +5604,7 @@ __metadata: languageName: node linkType: hard -"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": +"call-bind-apply-helpers@npm:1.0.2, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": version: 1.0.2 resolution: "call-bind-apply-helpers@npm:1.0.2" dependencies: @@ -5564,9 +5657,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001782": - version: 1.0.30001788 - resolution: "caniuse-lite@npm:1.0.30001788" - checksum: 10c0/d3c4695d0e7a1e95194cc5072e26db59cbcd25adfff64253859213c1a04ce9bc17f7b8ec8b11908ac1ecc6c1a0caf95fae0aec064a64b8df03286dffa629ce8a + version: 1.0.30001791 + resolution: "caniuse-lite@npm:1.0.30001791" + checksum: 10c0/53c8b5dad1c196a5e495405a7d2dc1db58aed9be02f60cf2a2e29d2c8d8cbb6c39beabf958d6aa191ab967ddcf49f22319452256b980bad1e271615acfe58940 languageName: node linkType: hard @@ -5592,7 +5685,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": +"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -5727,29 +5820,29 @@ __metadata: languageName: node linkType: hard -"cliui@npm:^7.0.2": - version: 7.0.4 - resolution: "cliui@npm:7.0.4" +"cliui@npm:8.0.1, cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" dependencies: string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.0" + strip-ansi: "npm:^6.0.1" wrap-ansi: "npm:^7.0.0" - checksum: 10c0/6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 languageName: node linkType: hard -"cliui@npm:^8.0.1": - version: 8.0.1 - resolution: "cliui@npm:8.0.1" +"cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" dependencies: string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.1" + strip-ansi: "npm:^6.0.0" wrap-ansi: "npm:^7.0.0" - checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + checksum: 10c0/6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 languageName: node linkType: hard -"clone@npm:^1.0.2": +"clone@npm:1.0.4, clone@npm:^1.0.2": version: 1.0.4 resolution: "clone@npm:1.0.4" checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b @@ -5798,7 +5891,7 @@ __metadata: languageName: node linkType: hard -"color-convert@npm:^2.0.1": +"color-convert@npm:2.0.1, color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" dependencies: @@ -5816,6 +5909,13 @@ __metadata: languageName: node linkType: hard +"color-name@npm:1.1.4, color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + "color-name@npm:^2.0.0": version: 2.1.0 resolution: "color-name@npm:2.1.0" @@ -5823,13 +5923,6 @@ __metadata: languageName: node linkType: hard -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 - languageName: node - linkType: hard - "color-string@npm:^2.1.3": version: 2.1.4 resolution: "color-string@npm:2.1.4" @@ -5868,7 +5961,7 @@ __metadata: languageName: node linkType: hard -"combined-stream@npm:^1.0.8": +"combined-stream@npm:1.0.8, combined-stream@npm:^1.0.8": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: @@ -6348,7 +6441,7 @@ __metadata: languageName: node linkType: hard -"defaults@npm:^1.0.3": +"defaults@npm:1.0.4, defaults@npm:^1.0.3": version: 1.0.4 resolution: "defaults@npm:1.0.4" dependencies: @@ -6357,14 +6450,14 @@ __metadata: languageName: node linkType: hard -"define-lazy-prop@npm:^2.0.0": +"define-lazy-prop@npm:2.0.0, define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" checksum: 10c0/db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 languageName: node linkType: hard -"delayed-stream@npm:~1.0.0": +"delayed-stream@npm:1.0.0, delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 @@ -6485,8 +6578,8 @@ __metadata: linkType: hard "dockerode@npm:^4.0.10, dockerode@npm:^4.0.5": - version: 4.0.10 - resolution: "dockerode@npm:4.0.10" + version: 4.0.12 + resolution: "dockerode@npm:4.0.12" dependencies: "@balena/dockerignore": "npm:^1.0.2" "@grpc/grpc-js": "npm:^1.11.1" @@ -6495,7 +6588,7 @@ __metadata: protobufjs: "npm:^7.3.2" tar-fs: "npm:^2.1.4" uuid: "npm:^10.0.0" - checksum: 10c0/064930c4446ee833227417952ee9450b6f2a0045bfb93041ce36dd3f831fd6f24b7f87b44b6ff067782d0f121e5e530044e7e9ef538ef0c83133928a486d2d47 + checksum: 10c0/7bd7eae9c399f481964be0068118b0cb24a6baa24c69cb7fab27b1f5bbf7e171c25b2fc7793f401bb8caa0f61be5810656606614befe12d9ae36c5ffbbd1f7e7 languageName: node linkType: hard @@ -6508,12 +6601,19 @@ __metadata: languageName: node linkType: hard -"dotenv-expand@npm:~11.0.6": - version: 11.0.7 - resolution: "dotenv-expand@npm:11.0.7" +"dotenv-expand@npm:12.0.3": + version: 12.0.3 + resolution: "dotenv-expand@npm:12.0.3" dependencies: dotenv: "npm:^16.4.5" - checksum: 10c0/d80b8a7be085edf351270b96ac0e794bc3ddd7f36157912939577cb4d33ba6492ebee349d59798b71b90e36f498d24a2a564fb4aa00073b2ef4c2a3a49c467b1 + checksum: 10c0/0824bdc74fc816a28b0744b7853a23e046602e9616c82121dfdae21ebc13c6e89afeb773e794e97c35d48be2be0a990fbca721ee3869a49c04210a58a3cf296f + languageName: node + linkType: hard + +"dotenv@npm:16.4.7": + version: 16.4.7 + resolution: "dotenv@npm:16.4.7" + checksum: 10c0/be9f597e36a8daf834452daa1f4cc30e5375a5968f98f46d89b16b983c567398a330580c88395069a77473943c06b877d1ca25b4afafcdd6d4adb549e8293462 languageName: node linkType: hard @@ -6524,13 +6624,6 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:~16.4.5": - version: 16.4.7 - resolution: "dotenv@npm:16.4.7" - checksum: 10c0/be9f597e36a8daf834452daa1f4cc30e5375a5968f98f46d89b16b983c567398a330580c88395069a77473943c06b877d1ca25b4afafcdd6d4adb549e8293462 - languageName: node - linkType: hard - "dottie@npm:^2.0.6": version: 2.0.7 resolution: "dottie@npm:2.0.7" @@ -6538,7 +6631,7 @@ __metadata: languageName: node linkType: hard -"dunder-proto@npm:^1.0.1": +"dunder-proto@npm:1.0.1, dunder-proto@npm:^1.0.1": version: 1.0.1 resolution: "dunder-proto@npm:1.0.1" dependencies: @@ -6573,9 +6666,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.328": - version: 1.5.337 - resolution: "electron-to-chromium@npm:1.5.337" - checksum: 10c0/0703de2a58adc6fa48531d9cf7c8002d69acdce0fa3af366a07655e89481c8414e2993d40bc4a27b6338eeec0dac9e31651a55950cecc5301e71d007cba5223d + version: 1.5.344 + resolution: "electron-to-chromium@npm:1.5.344" + checksum: 10c0/36624a59b2da4cb2bdee3085f5fc814bc0ba5830162a26f45c4b189177455869fd9d9c2e05fa28e69a45fb95c04d3e995962ff0e1658f552dcbe147a731c4f1d languageName: node linkType: hard @@ -6586,7 +6679,7 @@ __metadata: languageName: node linkType: hard -"emoji-regex@npm:^8.0.0": +"emoji-regex@npm:8.0.0, emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 @@ -6623,7 +6716,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": +"end-of-stream@npm:1.4.5, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": version: 1.4.5 resolution: "end-of-stream@npm:1.4.5" dependencies: @@ -6632,7 +6725,7 @@ __metadata: languageName: node linkType: hard -"enquirer@npm:~2.3.6": +"enquirer@npm:2.3.6, enquirer@npm:~2.3.6": version: 2.3.6 resolution: "enquirer@npm:2.3.6" dependencies: @@ -6673,21 +6766,21 @@ __metadata: languageName: node linkType: hard -"es-define-property@npm:^1.0.1": +"es-define-property@npm:1.0.1, es-define-property@npm:^1.0.1": version: 1.0.1 resolution: "es-define-property@npm:1.0.1" checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c languageName: node linkType: hard -"es-errors@npm:^1.3.0": +"es-errors@npm:1.3.0, es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 languageName: node linkType: hard -"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": +"es-object-atoms@npm:1.1.1, es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": version: 1.1.1 resolution: "es-object-atoms@npm:1.1.1" dependencies: @@ -6696,7 +6789,7 @@ __metadata: languageName: node linkType: hard -"es-set-tostringtag@npm:^2.1.0": +"es-set-tostringtag@npm:2.1.0, es-set-tostringtag@npm:^2.1.0": version: 2.1.0 resolution: "es-set-tostringtag@npm:2.1.0" dependencies: @@ -6708,7 +6801,7 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1, escalade@npm:^3.2.0": +"escalade@npm:3.2.0, escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 @@ -6722,7 +6815,7 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^1.0.5": +"escape-string-regexp@npm:1.0.5, escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 @@ -6945,9 +7038,9 @@ __metadata: linkType: hard "eventsource-parser@npm:^3.0.0, eventsource-parser@npm:^3.0.1": - version: 3.0.6 - resolution: "eventsource-parser@npm:3.0.6" - checksum: 10c0/70b8ccec7dac767ef2eca43f355e0979e70415701691382a042a2df8d6a68da6c2fca35363669821f3da876d29c02abe9b232964637c1b6635c940df05ada78a + version: 3.0.8 + resolution: "eventsource-parser@npm:3.0.8" + checksum: 10c0/3a73eee85311f33b12fa558381a477c1bdcf8c024a429a9d48f87b043e328c26d24ed280fd7ca92e2fdd4c8c37f749b758420c1533778aaca2beabf895024efa languageName: node linkType: hard @@ -7043,13 +7136,13 @@ __metadata: linkType: hard "express-rate-limit@npm:^8.2.1": - version: 8.3.2 - resolution: "express-rate-limit@npm:8.3.2" + version: 8.4.1 + resolution: "express-rate-limit@npm:8.4.1" dependencies: ip-address: "npm:10.1.0" peerDependencies: express: ">= 4.11" - checksum: 10c0/5b64d0691071086cdb8cfc6bcd5e761f5687cf4fabdebfe2a043ea5b4d31443637181e7be71e7ffabce76aee816daee62c1ca83250045847957da408a129f650 + checksum: 10c0/ead87bcf7b9b4094d2a597b6a77569eed34c7d2ff3a449eeef25e1cd4a96dc3de17b8da93e8cf82f757ef441974846138b4bc371621fbc72346f8cc4a07a712b languageName: node linkType: hard @@ -7319,7 +7412,7 @@ __metadata: languageName: node linkType: hard -"flat@npm:^5.0.2": +"flat@npm:5.0.2": version: 5.0.2 resolution: "flat@npm:5.0.2" bin: @@ -7342,6 +7435,16 @@ __metadata: languageName: node linkType: hard +"follow-redirects@npm:1.15.11": + version: 1.15.11 + resolution: "follow-redirects@npm:1.15.11" + peerDependenciesMeta: + debug: + optional: true + checksum: 10c0/d301f430542520a54058d4aeeb453233c564aaccac835d29d15e050beb33f339ad67d9bddbce01739c5dc46a6716dbe3d9d0d5134b1ca203effa11a7ef092343 + languageName: node + linkType: hard + "follow-redirects@npm:^1.15.11": version: 1.16.0 resolution: "follow-redirects@npm:1.16.0" @@ -7386,7 +7489,7 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^4.0.4, form-data@npm:^4.0.5": +"form-data@npm:4.0.5, form-data@npm:^4.0.4, form-data@npm:^4.0.5": version: 4.0.5 resolution: "form-data@npm:4.0.5" dependencies: @@ -7430,16 +7533,7 @@ __metadata: languageName: node linkType: hard -"front-matter@npm:^4.0.2": - version: 4.0.2 - resolution: "front-matter@npm:4.0.2" - dependencies: - js-yaml: "npm:^3.13.1" - checksum: 10c0/7a0df5ca37428dd563c057bc17a8940481fe53876609bcdc443a02ce463c70f1842c7cb4628b80916de46a253732794b36fb6a31105db0f185698a93acee4011 - languageName: node - linkType: hard - -"fs-constants@npm:^1.0.0": +"fs-constants@npm:1.0.0, fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" checksum: 10c0/a0cde99085f0872f4d244e83e03a46aa387b74f5a5af750896c6b05e9077fac00e9932fdf5aef84f2f16634cd473c63037d7a512576da7d5c2b9163d1909f3a8 @@ -7501,7 +7595,7 @@ __metadata: languageName: node linkType: hard -"function-bind@npm:^1.1.2": +"function-bind@npm:1.1.2, function-bind@npm:^1.1.2": version: 1.1.2 resolution: "function-bind@npm:1.1.2" checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 @@ -7539,14 +7633,14 @@ __metadata: languageName: node linkType: hard -"get-caller-file@npm:^2.0.5": +"get-caller-file@npm:2.0.5, get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde languageName: node linkType: hard -"get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0": +"get-intrinsic@npm:1.3.0, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0": version: 1.3.0 resolution: "get-intrinsic@npm:1.3.0" dependencies: @@ -7592,7 +7686,7 @@ __metadata: languageName: node linkType: hard -"get-proto@npm:^1.0.1": +"get-proto@npm:1.0.1, get-proto@npm:^1.0.1": version: 1.0.1 resolution: "get-proto@npm:1.0.1" dependencies: @@ -7752,7 +7846,7 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.2.0": +"gopd@npm:1.2.0, gopd@npm:^1.2.0": version: 1.2.0 resolution: "gopd@npm:1.2.0" checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead @@ -7798,21 +7892,21 @@ __metadata: languageName: node linkType: hard -"has-flag@npm:^4.0.0": +"has-flag@npm:4.0.0, has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 languageName: node linkType: hard -"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": +"has-symbols@npm:1.1.0, has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": version: 1.1.0 resolution: "has-symbols@npm:1.1.0" checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e languageName: node linkType: hard -"has-tostringtag@npm:^1.0.2": +"has-tostringtag@npm:1.0.2, has-tostringtag@npm:^1.0.2": version: 1.0.2 resolution: "has-tostringtag@npm:1.0.2" dependencies: @@ -7828,7 +7922,7 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.2": +"hasown@npm:2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" dependencies: @@ -7837,10 +7931,19 @@ __metadata: languageName: node linkType: hard +"hasown@npm:^2.0.2": + version: 2.0.3 + resolution: "hasown@npm:2.0.3" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/f5eb28c3fd0d3e4facd821c1eeee3836c37b70ab0b0fc532e8a39976e18fef43652415dadc52f8c7a5ff6d5ac93b7bef128789aa6f90f4e9b9a9083dce74ab38 + languageName: node + linkType: hard + "hono@npm:^4.11.4": - version: 4.12.14 - resolution: "hono@npm:4.12.14" - checksum: 10c0/78de4c98a9a3da0f067e38dcc4bd27f0d82b45d146ac39f5ca688515ee482c0a2e704d2ac6c1ee91ad17596b7c52b3e4b9483acd9c238d42f6ebcb43414a71b6 + version: 4.12.15 + resolution: "hono@npm:4.12.15" + checksum: 10c0/83f5778525bd4b706ddf1877c5f3cec0c8a3a0edf0944f8dfb041179c23a854166b8566f6e9be95894199a22e3b3aba139582d4ba24776e707c453d293bda24d languageName: node linkType: hard @@ -7987,7 +8090,7 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": +"ieee754@npm:1.2.1, ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb @@ -8003,6 +8106,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:7.0.5, ignore@npm:^7.0.5": + version: 7.0.5 + resolution: "ignore@npm:7.0.5" + checksum: 10c0/ae00db89fe873064a093b8999fe4cc284b13ef2a178636211842cceb650b9c3e390d3339191acb145d81ed5379d2074840cf0c33a20bdbd6f32821f79eb4ad5d + languageName: node + linkType: hard + "ignore@npm:^5.0.4, ignore@npm:^5.2.0": version: 5.3.2 resolution: "ignore@npm:5.3.2" @@ -8010,13 +8120,6 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^7.0.5": - version: 7.0.5 - resolution: "ignore@npm:7.0.5" - checksum: 10c0/ae00db89fe873064a093b8999fe4cc284b13ef2a178636211842cceb650b9c3e390d3339191acb145d81ed5379d2074840cf0c33a20bdbd6f32821f79eb4ad5d - languageName: node - linkType: hard - "immutable@npm:^4.3.0": version: 4.3.8 resolution: "immutable@npm:4.3.8" @@ -8089,7 +8192,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -8210,7 +8313,7 @@ __metadata: languageName: node linkType: hard -"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": +"is-docker@npm:2.2.1, is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": version: 2.2.1 resolution: "is-docker@npm:2.2.1" bin: @@ -8226,7 +8329,7 @@ __metadata: languageName: node linkType: hard -"is-fullwidth-code-point@npm:^3.0.0": +"is-fullwidth-code-point@npm:3.0.0, is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc @@ -8249,7 +8352,7 @@ __metadata: languageName: node linkType: hard -"is-interactive@npm:^1.0.0": +"is-interactive@npm:1.0.0, is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d @@ -8309,14 +8412,14 @@ __metadata: languageName: node linkType: hard -"is-unicode-supported@npm:^0.1.0": +"is-unicode-supported@npm:0.1.0, is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 languageName: node linkType: hard -"is-wsl@npm:^2.2.0": +"is-wsl@npm:2.2.0, is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" dependencies: @@ -8631,7 +8734,7 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:30.3.0, jest-diff@npm:>=30.0.0 < 31, jest-diff@npm:^30.0.2": +"jest-diff@npm:30.3.0, jest-diff@npm:>=30.0.0 < 31": version: 30.3.0 resolution: "jest-diff@npm:30.3.0" dependencies: @@ -9305,7 +9408,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1": +"js-yaml@npm:^3.13.1": version: 3.14.2 resolution: "js-yaml@npm:3.14.2" dependencies: @@ -9403,7 +9506,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.2.2, json5@npm:^2.2.3": +"json5@npm:2.2.3, json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -9420,15 +9523,15 @@ __metadata: linkType: hard "jsonfile@npm:^6.0.1": - version: 6.2.0 - resolution: "jsonfile@npm:6.2.0" + version: 6.2.1 + resolution: "jsonfile@npm:6.2.1" dependencies: graceful-fs: "npm:^4.1.6" universalify: "npm:^2.0.0" dependenciesMeta: graceful-fs: optional: true - checksum: 10c0/7f4f43b08d1869ded8a6822213d13ae3b99d651151d77efd1557ced0889c466296a7d9684e397bd126acf5eb2cfcb605808c3e681d0fdccd2fe5a04b47e76c0d + checksum: 10c0/e1abf000ecee9942d4d028a8e02dc752617face227d72afd1cfb2187e2433079e625bf82b807a313689db71b6472c6b2b389a2340d2798737b1199a39631c28a languageName: node linkType: hard @@ -9612,9 +9715,9 @@ __metadata: linkType: hard "libphonenumber-js@npm:^1.11.1": - version: 1.12.41 - resolution: "libphonenumber-js@npm:1.12.41" - checksum: 10c0/dda2a3ada1d4271a93f6eb9cc9b061e294ab05e7efb71c5e2e2bea02f8f478d7b4359fcd3a67b8a377e53ca671d0303ffa78e3df4857901d5aa03ecfb19becf0 + version: 1.12.42 + resolution: "libphonenumber-js@npm:1.12.42" + checksum: 10c0/55c1ac5ab2657868d84e85f426e8c17d33ffccbdefc8eff1248641d2d390377b566e024833374921549008466a3d8c796e767f066749c0d7f37c3c5b32561e29 languageName: node linkType: hard @@ -9750,7 +9853,7 @@ __metadata: languageName: node linkType: hard -"log-symbols@npm:^4.0.0": +"log-symbols@npm:4.1.0, log-symbols@npm:^4.0.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" dependencies: @@ -9907,7 +10010,7 @@ __metadata: languageName: node linkType: hard -"math-intrinsics@npm:^1.1.0": +"math-intrinsics@npm:1.1.0, math-intrinsics@npm:^1.1.0": version: 1.1.0 resolution: "math-intrinsics@npm:1.1.0" checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f @@ -9999,7 +10102,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -10026,7 +10129,7 @@ __metadata: languageName: node linkType: hard -"mimic-fn@npm:^2.1.0": +"mimic-fn@npm:2.1.0, mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 @@ -10112,7 +10215,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.5, minimist@npm:^1.2.6": +"minimist@npm:1.2.8, minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 @@ -10430,13 +10533,13 @@ __metadata: linkType: hard "nice-grpc@npm:^2.1.0": - version: 2.1.15 - resolution: "nice-grpc@npm:2.1.15" + version: 2.1.16 + resolution: "nice-grpc@npm:2.1.16" dependencies: "@grpc/grpc-js": "npm:^1.14.0" abort-controller-x: "npm:^0.5.0" nice-grpc-common: "npm:^2.0.3" - checksum: 10c0/2dd0ab483ac72f92ceabdcf75b8ab3d61f982846d479f0a03cc6e0226cfa097d9daf02a902c108c8552adef2fe132f815444fbd482c59c9e0ef261f589c94b38 + checksum: 10c0/db79f7744918a94f504b2028279df28440d8880cead2919276e4ba854f4666e888bf1df798f75c11d35e417bf9e5a8ba0110792d9708e7b94f2419cdbf187362 languageName: node linkType: hard @@ -10509,22 +10612,22 @@ __metadata: linkType: hard "node-gyp@npm:^12.1.0, node-gyp@npm:latest": - version: 12.2.0 - resolution: "node-gyp@npm:12.2.0" + version: 12.3.0 + resolution: "node-gyp@npm:12.3.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^15.0.0" nopt: "npm:^9.0.0" proc-log: "npm:^6.0.0" semver: "npm:^7.3.5" tar: "npm:^7.5.4" tinyglobby: "npm:^0.2.12" + undici: "npm:^6.25.0" which: "npm:^6.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/3ed046746a5a7d90950cd8b0547332b06598443f31fe213ef4332a7174c7b7d259e1704835feda79b87d3f02e59d7791842aac60642ede4396ab25fdf0f8f759 + checksum: 10c0/9d9032b405cbe42f72a105259d9eb679376470c102df4a2dbaa51e07d59bf741dcffb85897087ea9d8318b9cabb824a8978af51508ae142f0239ae1e6a3c2329 languageName: node linkType: hard @@ -10536,9 +10639,9 @@ __metadata: linkType: hard "node-releases@npm:^2.0.36": - version: 2.0.37 - resolution: "node-releases@npm:2.0.37" - checksum: 10c0/306df89190b3225d0cb001260de52f0befd225a782ec85311ce97b0aa3b2e22f5e4e4c00395c6dc9bc9ef440c64723f6205fe1e27d32b8dd1d140891fbadf901 + version: 2.0.38 + resolution: "node-releases@npm:2.0.38" + checksum: 10c0/db9909234ed750c5b9d0075f83214cd16b76370b54eab50e3554f3ba939ba7ac39f3aca2ddf93471ae8553dbde2ea9354b0ae380c9cff1f8e53b55e414903413 languageName: node linkType: hard @@ -10768,7 +10871,7 @@ __metadata: languageName: node linkType: hard -"npm-run-path@npm:^4.0.1": +"npm-run-path@npm:4.0.1, npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" dependencies: @@ -10789,55 +10892,129 @@ __metadata: languageName: node linkType: hard -"nx@npm:22.6.5, nx@npm:>=21.5.3 < 23.0.0, nx@npm:^22.6.4": - version: 22.6.5 - resolution: "nx@npm:22.6.5" +"nx@npm:22.7.0, nx@npm:>=21.5.3 < 23.0.0, nx@npm:^22.6.4": + version: 22.7.0 + resolution: "nx@npm:22.7.0" dependencies: + "@emnapi/core": "npm:1.4.5" + "@emnapi/runtime": "npm:1.4.5" + "@emnapi/wasi-threads": "npm:1.0.4" + "@jest/diff-sequences": "npm:30.0.1" "@napi-rs/wasm-runtime": "npm:0.2.4" - "@nx/nx-darwin-arm64": "npm:22.6.5" - "@nx/nx-darwin-x64": "npm:22.6.5" - "@nx/nx-freebsd-x64": "npm:22.6.5" - "@nx/nx-linux-arm-gnueabihf": "npm:22.6.5" - "@nx/nx-linux-arm64-gnu": "npm:22.6.5" - "@nx/nx-linux-arm64-musl": "npm:22.6.5" - "@nx/nx-linux-x64-gnu": "npm:22.6.5" - "@nx/nx-linux-x64-musl": "npm:22.6.5" - "@nx/nx-win32-arm64-msvc": "npm:22.6.5" - "@nx/nx-win32-x64-msvc": "npm:22.6.5" - "@yarnpkg/lockfile": "npm:^1.1.0" - "@yarnpkg/parsers": "npm:3.0.2" + "@nx/nx-darwin-arm64": "npm:22.7.0" + "@nx/nx-darwin-x64": "npm:22.7.0" + "@nx/nx-freebsd-x64": "npm:22.7.0" + "@nx/nx-linux-arm-gnueabihf": "npm:22.7.0" + "@nx/nx-linux-arm64-gnu": "npm:22.7.0" + "@nx/nx-linux-arm64-musl": "npm:22.7.0" + "@nx/nx-linux-x64-gnu": "npm:22.7.0" + "@nx/nx-linux-x64-musl": "npm:22.7.0" + "@nx/nx-win32-arm64-msvc": "npm:22.7.0" + "@nx/nx-win32-x64-msvc": "npm:22.7.0" + "@tybys/wasm-util": "npm:0.9.0" + "@yarnpkg/lockfile": "npm:1.1.0" "@zkochan/js-yaml": "npm:0.0.7" + ansi-colors: "npm:4.1.3" + ansi-regex: "npm:5.0.1" + ansi-styles: "npm:4.3.0" + argparse: "npm:2.0.1" + asynckit: "npm:0.4.0" axios: "npm:1.15.0" + balanced-match: "npm:4.0.3" + base64-js: "npm:1.5.1" + bl: "npm:4.1.0" + brace-expansion: "npm:5.0.2" + buffer: "npm:5.7.1" + call-bind-apply-helpers: "npm:1.0.2" + chalk: "npm:4.1.2" cli-cursor: "npm:3.1.0" cli-spinners: "npm:2.6.1" - cliui: "npm:^8.0.1" - dotenv: "npm:~16.4.5" - dotenv-expand: "npm:~11.0.6" + cliui: "npm:8.0.1" + clone: "npm:1.0.4" + color-convert: "npm:2.0.1" + color-name: "npm:1.1.4" + combined-stream: "npm:1.0.8" + defaults: "npm:1.0.4" + define-lazy-prop: "npm:2.0.0" + delayed-stream: "npm:1.0.0" + dotenv: "npm:16.4.7" + dotenv-expand: "npm:12.0.3" + dunder-proto: "npm:1.0.1" ejs: "npm:5.0.1" - enquirer: "npm:~2.3.6" + emoji-regex: "npm:8.0.0" + end-of-stream: "npm:1.4.5" + enquirer: "npm:2.3.6" + es-define-property: "npm:1.0.1" + es-errors: "npm:1.3.0" + es-object-atoms: "npm:1.1.1" + es-set-tostringtag: "npm:2.1.0" + escalade: "npm:3.2.0" + escape-string-regexp: "npm:1.0.5" figures: "npm:3.2.0" - flat: "npm:^5.0.2" - front-matter: "npm:^4.0.2" - ignore: "npm:^7.0.5" - jest-diff: "npm:^30.0.2" + flat: "npm:5.0.2" + follow-redirects: "npm:1.15.11" + form-data: "npm:4.0.5" + fs-constants: "npm:1.0.0" + function-bind: "npm:1.1.2" + get-caller-file: "npm:2.0.5" + get-intrinsic: "npm:1.3.0" + get-proto: "npm:1.0.1" + gopd: "npm:1.2.0" + has-flag: "npm:4.0.0" + has-symbols: "npm:1.1.0" + has-tostringtag: "npm:1.0.2" + hasown: "npm:2.0.2" + ieee754: "npm:1.2.1" + ignore: "npm:7.0.5" + inherits: "npm:2.0.4" + is-docker: "npm:2.2.1" + is-fullwidth-code-point: "npm:3.0.0" + is-interactive: "npm:1.0.0" + is-unicode-supported: "npm:0.1.0" + is-wsl: "npm:2.2.0" + json5: "npm:2.2.3" jsonc-parser: "npm:3.2.0" lines-and-columns: "npm:2.0.3" + log-symbols: "npm:4.1.0" + math-intrinsics: "npm:1.1.0" + mime-db: "npm:1.52.0" + mime-types: "npm:2.1.35" + mimic-fn: "npm:2.1.0" minimatch: "npm:10.2.4" - npm-run-path: "npm:^4.0.1" - open: "npm:^8.4.0" + minimist: "npm:1.2.8" + npm-run-path: "npm:4.0.1" + once: "npm:1.4.0" + onetime: "npm:5.1.2" + open: "npm:8.4.2" ora: "npm:5.3.0" - picocolors: "npm:^1.1.0" + path-key: "npm:3.1.1" + picocolors: "npm:1.1.1" + proxy-from-env: "npm:2.1.0" + readable-stream: "npm:3.6.2" + require-directory: "npm:2.1.1" resolve.exports: "npm:2.0.3" - semver: "npm:^7.6.3" + restore-cursor: "npm:3.1.0" + safe-buffer: "npm:5.2.1" + semver: "npm:7.7.4" + signal-exit: "npm:3.0.7" smol-toml: "npm:1.6.1" - string-width: "npm:^4.2.3" - tar-stream: "npm:~2.2.0" - tmp: "npm:~0.2.1" - tree-kill: "npm:^1.2.2" - tsconfig-paths: "npm:^4.1.2" - tslib: "npm:^2.3.0" - yaml: "npm:^2.6.0" - yargs: "npm:^17.6.2" + string-width: "npm:4.2.3" + string_decoder: "npm:1.3.0" + strip-ansi: "npm:6.0.1" + strip-bom: "npm:3.0.0" + supports-color: "npm:7.2.0" + tar-stream: "npm:2.2.0" + tmp: "npm:0.2.4" + tree-kill: "npm:1.2.2" + tsconfig-paths: "npm:4.2.0" + tslib: "npm:2.8.1" + util-deprecate: "npm:1.0.2" + wcwidth: "npm:1.0.1" + wrap-ansi: "npm:7.0.0" + wrappy: "npm:1.0.2" + y18n: "npm:5.0.8" + yaml: "npm:2.8.0" + yargs: "npm:17.7.2" yargs-parser: "npm:21.1.1" peerDependencies: "@swc-node/register": ^1.11.1 @@ -10869,9 +11046,9 @@ __metadata: "@swc/core": optional: true bin: - nx: bin/nx.js - nx-cloud: bin/nx-cloud.js - checksum: 10c0/f83c002c7f7b5312ab05fdf503f6a107bbf11eabe85df0e8426f7e172d9adbc2bd24f887fb7e1aa08b28b1a27b36ed115c19c8531cd06a3d1cabdbef25c0e0c9 + nx: dist/bin/nx.js + nx-cloud: dist/bin/nx-cloud.js + checksum: 10c0/1fb1362aa0ac48e907e447bddcc534f9eb90e32679e6b3af7717537ee32447e00371a6d95db67b4b42ce380631c1e9b8d03b233389fe5166b4f195d9ae9bb7ed languageName: node linkType: hard @@ -10898,7 +11075,7 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": +"once@npm:1.4.0, once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -10916,7 +11093,7 @@ __metadata: languageName: node linkType: hard -"onetime@npm:^5.1.0, onetime@npm:^5.1.2": +"onetime@npm:5.1.2, onetime@npm:^5.1.0, onetime@npm:^5.1.2": version: 5.1.2 resolution: "onetime@npm:5.1.2" dependencies: @@ -10925,7 +11102,7 @@ __metadata: languageName: node linkType: hard -"open@npm:^8.4.0": +"open@npm:8.4.2": version: 8.4.2 resolution: "open@npm:8.4.2" dependencies: @@ -10936,6 +11113,28 @@ __metadata: languageName: node linkType: hard +"openai@npm:4.77.0": + version: 4.77.0 + resolution: "openai@npm:4.77.0" + dependencies: + "@types/node": "npm:^18.11.18" + "@types/node-fetch": "npm:^2.6.4" + abort-controller: "npm:^3.0.0" + agentkeepalive: "npm:^4.2.1" + form-data-encoder: "npm:1.7.2" + formdata-node: "npm:^4.3.2" + node-fetch: "npm:^2.6.7" + peerDependencies: + zod: ^3.23.8 + peerDependenciesMeta: + zod: + optional: true + bin: + openai: bin/cli + checksum: 10c0/438e5acbcdc592ff192f294e936c10a8b71edf898b53afacb937da45f8d4e221e041bfcc84d6174c8dcb9ed4080b32760f8d94de1fcec7ab889046f1e1173f68 + languageName: node + linkType: hard + "openai@npm:^4.77.0": version: 4.104.0 resolution: "openai@npm:4.104.0" @@ -11311,7 +11510,7 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": +"path-key@npm:3.1.1, path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c @@ -11522,7 +11721,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": +"picocolors@npm:1.1.1, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 @@ -11821,7 +12020,7 @@ __metadata: languageName: node linkType: hard -"proxy-from-env@npm:^2.1.0": +"proxy-from-env@npm:2.1.0, proxy-from-env@npm:^2.1.0": version: 2.1.0 resolution: "proxy-from-env@npm:2.1.0" checksum: 10c0/ed01729fd4d094eab619cd7e17ce3698b3413b31eb102c4904f9875e677cd207392795d5b4adee9cec359dfd31c44d5ad7595a3a3ad51c40250e141512281c58 @@ -11859,7 +12058,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.14.0, qs@npm:^6.14.1": +"qs@npm:^6.14.0, qs@npm:^6.14.1, qs@npm:~6.15.1": version: 6.15.1 resolution: "qs@npm:6.15.1" dependencies: @@ -12009,6 +12208,17 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:3.6.2, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0, readable-stream@npm:^3.6.2": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + "readable-stream@npm:^2.0.5, readable-stream@npm:~2.3.6": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" @@ -12024,17 +12234,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0, readable-stream@npm:^3.6.2": - version: 3.6.2 - resolution: "readable-stream@npm:3.6.2" - dependencies: - inherits: "npm:^2.0.3" - string_decoder: "npm:^1.1.1" - util-deprecate: "npm:^1.0.1" - checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 - languageName: node - linkType: hard - "readable-stream@npm:^4.0.0": version: 4.7.0 resolution: "readable-stream@npm:4.7.0" @@ -12097,7 +12296,7 @@ __metadata: languageName: node linkType: hard -"reflect-metadata@npm:^0.2.0": +"reflect-metadata@npm:^0.2.0, reflect-metadata@npm:^0.2.2": version: 0.2.2 resolution: "reflect-metadata@npm:0.2.2" checksum: 10c0/1cd93a15ea291e420204955544637c264c216e7aac527470e393d54b4bb075f10a17e60d8168ec96600c7e0b9fcc0cb0bb6e91c3fbf5b0d8c9056f04e6ac1ec2 @@ -12152,7 +12351,7 @@ __metadata: languageName: node linkType: hard -"require-directory@npm:^2.1.1": +"require-directory@npm:2.1.1, require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 @@ -12224,7 +12423,7 @@ __metadata: languageName: node linkType: hard -"restore-cursor@npm:^3.1.0": +"restore-cursor@npm:3.1.0, restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" dependencies: @@ -12859,7 +13058,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:4.2.3, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -12881,7 +13080,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": +"string_decoder@npm:1.3.0, string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -12899,7 +13098,7 @@ __metadata: languageName: node linkType: hard -"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" dependencies: @@ -12917,7 +13116,7 @@ __metadata: languageName: node linkType: hard -"strip-bom@npm:^3.0.0": +"strip-bom@npm:3.0.0, strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 @@ -12963,7 +13162,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^7.1.0": +"supports-color@npm:7.2.0, supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" dependencies: @@ -13026,7 +13225,7 @@ __metadata: languageName: node linkType: hard -"tar-stream@npm:^2.1.4, tar-stream@npm:~2.2.0": +"tar-stream@npm:2.2.0, tar-stream@npm:^2.1.4": version: 2.2.0 resolution: "tar-stream@npm:2.2.0" dependencies: @@ -13224,7 +13423,14 @@ __metadata: languageName: node linkType: hard -"tmp@npm:^0.2.3, tmp@npm:^0.2.5, tmp@npm:~0.2.1": +"tmp@npm:0.2.4": + version: 0.2.4 + resolution: "tmp@npm:0.2.4" + checksum: 10c0/ac4a7538a9ddb89ead6f4ee019bc23c28ce31549a0bd0ba499a64f81e0804b1e9a3a758622b33807a1f9644dbde9a0205637985f9450abdba1d5062704f98782 + languageName: node + linkType: hard + +"tmp@npm:^0.2.3, tmp@npm:^0.2.5": version: 0.2.5 resolution: "tmp@npm:0.2.5" checksum: 10c0/cee5bb7d674bb4ba3ab3f3841c2ca7e46daeb2109eec395c1ec7329a91d52fcb21032b79ac25161a37b2565c4858fefab927af9735926a113ef7bac9091a6e0e @@ -13279,7 +13485,7 @@ __metadata: languageName: node linkType: hard -"tree-kill@npm:^1.2.2": +"tree-kill@npm:1.2.2": version: 1.2.2 resolution: "tree-kill@npm:1.2.2" bin: @@ -13410,7 +13616,7 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^4.1.2": +"tsconfig-paths@npm:4.2.0": version: 4.2.0 resolution: "tsconfig-paths@npm:4.2.0" dependencies: @@ -13620,6 +13826,13 @@ __metadata: languageName: node linkType: hard +"undici@npm:^6.25.0": + version: 6.25.0 + resolution: "undici@npm:6.25.0" + checksum: 10c0/2597cc6689bdb02c210c557b1f85febbfda65becae6e6fc1061508e2f33734d25207f81cd8af56ada9956329eb3a7bd7431e87dcfeceba20ee87059b57dcf985 + languageName: node + linkType: hard + "undici@npm:^7.24.5": version: 7.25.0 resolution: "undici@npm:7.25.0" @@ -13808,7 +14021,7 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": +"util-deprecate@npm:1.0.2, util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 @@ -13822,15 +14035,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:11.1.0, uuid@npm:^11.0.0": - version: 11.1.0 - resolution: "uuid@npm:11.1.0" - bin: - uuid: dist/esm/bin/uuid - checksum: 10c0/34aa51b9874ae398c2b799c88a127701408cd581ee89ec3baa53509dd8728cbb25826f2a038f9465f8b7be446f0fbf11558862965b18d21c993684297628d4d3 - languageName: node - linkType: hard - "uuid@npm:^10.0.0": version: 10.0.0 resolution: "uuid@npm:10.0.0" @@ -13840,6 +14044,15 @@ __metadata: languageName: node linkType: hard +"uuid@npm:^11.0.0": + version: 11.1.0 + resolution: "uuid@npm:11.1.0" + bin: + uuid: dist/esm/bin/uuid + checksum: 10c0/34aa51b9874ae398c2b799c88a127701408cd581ee89ec3baa53509dd8728cbb25826f2a038f9465f8b7be446f0fbf11558862965b18d21c993684297628d4d3 + languageName: node + linkType: hard + "uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" @@ -13921,7 +14134,7 @@ __metadata: languageName: node linkType: hard -"wcwidth@npm:^1.0.0, wcwidth@npm:^1.0.1": +"wcwidth@npm:1.0.1, wcwidth@npm:^1.0.0, wcwidth@npm:^1.0.1": version: 1.0.1 resolution: "wcwidth@npm:1.0.1" dependencies: @@ -14049,7 +14262,7 @@ __metadata: languageName: node linkType: hard -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" dependencies: @@ -14082,7 +14295,7 @@ __metadata: languageName: node linkType: hard -"wrappy@npm:1": +"wrappy@npm:1, wrappy@npm:1.0.2": version: 1.0.2 resolution: "wrappy@npm:1.0.2" checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 @@ -14141,7 +14354,7 @@ __metadata: languageName: node linkType: hard -"y18n@npm:^5.0.5": +"y18n@npm:5.0.8, y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 @@ -14169,6 +14382,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:2.8.0": + version: 2.8.0 + resolution: "yaml@npm:2.8.0" + bin: + yaml: bin.mjs + checksum: 10c0/f6f7310cf7264a8107e72c1376f4de37389945d2fb4656f8060eca83f01d2d703f9d1b925dd8f39852a57034fafefde6225409ddd9f22aebfda16c6141b71858 + languageName: node + linkType: hard + "yaml@npm:^1.10.0": version: 1.10.3 resolution: "yaml@npm:1.10.3" @@ -14176,7 +14398,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.2.2, yaml@npm:^2.6.0": +"yaml@npm:^2.2.2": version: 2.8.3 resolution: "yaml@npm:2.8.3" bin: @@ -14199,7 +14421,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.7.2, yargs@npm:^17.3.1, yargs@npm:^17.6.2, yargs@npm:^17.7.2": +"yargs@npm:17.7.2, yargs@npm:^17.3.1, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -14276,3 +14498,10 @@ __metadata: checksum: 10c0/860d25a81ab41d33aa25f8d0d07b091a04acb426e605f396227a796e9e800c44723ed96d0f53a512b57be3d1520f45bf69c0cb3b378a232a00787a2609625307 languageName: node linkType: hard + +"zod@npm:^3.25.40": + version: 3.25.76 + resolution: "zod@npm:3.25.76" + checksum: 10c0/5718ec35e3c40b600316c5b4c5e4976f7fee68151bc8f8d90ec18a469be9571f072e1bbaace10f1e85cf8892ea12d90821b200e980ab46916a6166a4260a983c + languageName: node + linkType: hard