From e4fd4158bb2a0d261bd611960ab818cc211e6252 Mon Sep 17 00:00:00 2001 From: Alex Yang <himself65@outlook.com> Date: Tue, 24 Sep 2024 14:55:40 -0700 Subject: [PATCH] feat: move agent into core (#1254) --- packages/core/package.json | 28 ++ .../{llamaindex => core}/src/agent/base.ts | 20 +- packages/core/src/agent/index.ts | 11 + .../{llamaindex => core}/src/agent/llm.ts | 6 +- .../{llamaindex => core}/src/agent/types.ts | 6 +- .../{llamaindex => core}/src/agent/utils.ts | 16 +- packages/core/src/global/index.ts | 2 +- packages/core/src/global/settings.ts | 14 +- .../src/global/settings/callback-manager.ts | 3 + packages/core/src/objects/index.ts | 78 ++++ packages/core/src/utils/index.ts | 25 +- .../{llamaindex => core}/tests/agents.test.ts | 2 +- packages/core/tsconfig.json | 2 +- packages/env/src/index.browser.ts | 1 + packages/env/src/index.edge-light.ts | 1 + packages/env/src/index.ts | 1 + packages/env/src/index.workerd.ts | 1 + .../logger.ts => env/src/logger/index.ts} | 8 +- .../cloudflare-worker-agent/package.json | 12 +- .../cloudflare-worker-agent/src/index.ts | 17 +- .../test/index.spec.ts | 6 +- .../llamaindex/e2e/fixtures/llm/openai.ts | 2 + packages/llamaindex/e2e/mock-module.js | 4 + packages/llamaindex/src/Settings.ts | 9 +- packages/llamaindex/src/agent/anthropic.ts | 6 +- packages/llamaindex/src/agent/index.ts | 15 +- packages/llamaindex/src/agent/react.ts | 28 +- packages/llamaindex/src/index.edge.ts | 17 +- packages/llamaindex/src/internal/utils.ts | 16 - packages/llamaindex/src/objects/base.ts | 79 +--- packages/llamaindex/src/readers/JSONReader.ts | 2 +- .../openai.ts => llm/openai/src/agent.ts} | 10 +- packages/llm/openai/src/index.ts | 5 + pnpm-lock.yaml | 401 ++++-------------- 34 files changed, 345 insertions(+), 509 deletions(-) rename packages/{llamaindex => core}/src/agent/base.ts (95%) create mode 100644 packages/core/src/agent/index.ts rename packages/{llamaindex => core}/src/agent/llm.ts (88%) rename packages/{llamaindex => core}/src/agent/types.ts (94%) rename packages/{llamaindex => core}/src/agent/utils.ts (96%) create mode 100644 packages/core/src/objects/index.ts rename packages/{llamaindex => core}/tests/agents.test.ts (91%) rename packages/{llamaindex/src/internal/logger.ts => env/src/logger/index.ts} (85%) rename packages/{llamaindex/src/agent/openai.ts => llm/openai/src/agent.ts} (72%) diff --git a/packages/core/package.json b/packages/core/package.json index 99ccdd1f0..b0057b893 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -4,6 +4,34 @@ "version": "0.2.6", "description": "LlamaIndex Core Module", "exports": { + "./agent": { + "require": { + "types": "./dist/agent/index.d.cts", + "default": "./dist/agent/index.cjs" + }, + "import": { + "types": "./dist/agent/index.d.ts", + "default": "./dist/agent/index.js" + }, + "default": { + "types": "./dist/agent/index.d.ts", + "default": "./dist/agent/index.js" + } + }, + "./objects": { + "require": { + "types": "./dist/objects/index.d.cts", + "default": "./dist/objects/index.cjs" + }, + "import": { + "types": "./dist/objects/index.d.ts", + "default": "./dist/objects/index.js" + }, + "default": { + "types": "./dist/objects/index.d.ts", + "default": "./dist/objects/index.js" + } + }, "./node-parser": { "require": { "types": "./dist/node-parser/index.d.cts", diff --git a/packages/llamaindex/src/agent/base.ts b/packages/core/src/agent/base.ts similarity index 95% rename from packages/llamaindex/src/agent/base.ts rename to packages/core/src/agent/base.ts index 2cc2233ca..98afd8293 100644 --- a/packages/llamaindex/src/agent/base.ts +++ b/packages/core/src/agent/base.ts @@ -1,23 +1,21 @@ +import { consoleLogger, emptyLogger, randomUUID } from "@llamaindex/env"; import { BaseChatEngine, type NonStreamingChatEngineParams, type StreamingChatEngineParams, -} from "@llamaindex/core/chat-engine"; +} from "../chat-engine"; +import { Settings } from "../global"; import type { BaseToolWithCall, ChatMessage, LLM, MessageContent, ToolOutput, -} from "@llamaindex/core/llms"; -import { BaseMemory } from "@llamaindex/core/memory"; -import { EngineResponse } from "@llamaindex/core/schema"; -import { wrapEventCaller } from "@llamaindex/core/utils"; -import { randomUUID } from "@llamaindex/env"; -import { Settings } from "../Settings.js"; -import { consoleLogger, emptyLogger } from "../internal/logger.js"; -import { isReadableStream } from "../internal/utils.js"; -import { ObjectRetriever } from "../objects/index.js"; +} from "../llms"; +import { BaseMemory } from "../memory"; +import type { ObjectRetriever } from "../objects"; +import { EngineResponse } from "../schema"; +import { wrapEventCaller } from "../utils"; import type { AgentTaskContext, TaskHandler, @@ -374,7 +372,7 @@ export abstract class AgentRunner< this.#chatHistory = [...stepOutput.taskStep.context.store.messages]; if (stepOutput.isLast) { const { output } = stepOutput; - if (isReadableStream(output)) { + if (output instanceof ReadableStream) { return output.pipeThrough<EngineResponse>( new TransformStream({ transform(chunk, controller) { diff --git a/packages/core/src/agent/index.ts b/packages/core/src/agent/index.ts new file mode 100644 index 000000000..1599230a5 --- /dev/null +++ b/packages/core/src/agent/index.ts @@ -0,0 +1,11 @@ +export { AgentRunner, AgentWorker, type AgentParamsBase } from "./base.js"; +export { LLMAgent, LLMAgentWorker, type LLMAgentParams } from "./llm.js"; +export type { AgentEndEvent, AgentStartEvent, TaskHandler } from "./types.js"; +export { + callTool, + consumeAsyncIterable, + createReadableStream, + stepTools, + stepToolsStreaming, + validateAgentParams, +} from "./utils.js"; diff --git a/packages/llamaindex/src/agent/llm.ts b/packages/core/src/agent/llm.ts similarity index 88% rename from packages/llamaindex/src/agent/llm.ts rename to packages/core/src/agent/llm.ts index 6292c1cd7..5050ee2a8 100644 --- a/packages/llamaindex/src/agent/llm.ts +++ b/packages/core/src/agent/llm.ts @@ -1,6 +1,6 @@ -import type { BaseToolWithCall, LLM } from "@llamaindex/core/llms"; -import { ObjectRetriever } from "../objects/index.js"; -import { Settings } from "../Settings.js"; +import { Settings } from "../global"; +import type { BaseToolWithCall, LLM } from "../llms"; +import { ObjectRetriever } from "../objects"; import { AgentRunner, AgentWorker, type AgentParamsBase } from "./base.js"; import { validateAgentParams } from "./utils.js"; diff --git a/packages/llamaindex/src/agent/types.ts b/packages/core/src/agent/types.ts similarity index 94% rename from packages/llamaindex/src/agent/types.ts rename to packages/core/src/agent/types.ts index 40765139c..d6c951d35 100644 --- a/packages/llamaindex/src/agent/types.ts +++ b/packages/core/src/agent/types.ts @@ -1,3 +1,5 @@ +import type { Logger } from "@llamaindex/env"; +import type { UUID } from "../global"; import type { BaseToolWithCall, ChatMessage, @@ -6,9 +8,7 @@ import type { LLM, MessageContent, ToolOutput, -} from "@llamaindex/core/llms"; -import type { Logger } from "../internal/logger.js"; -import type { UUID } from "../types.js"; +} from "../llms"; export type AgentTaskContext< Model extends LLM, diff --git a/packages/llamaindex/src/agent/utils.ts b/packages/core/src/agent/utils.ts similarity index 96% rename from packages/llamaindex/src/agent/utils.ts rename to packages/core/src/agent/utils.ts index 9e6502e61..94d740eea 100644 --- a/packages/llamaindex/src/agent/utils.ts +++ b/packages/core/src/agent/utils.ts @@ -1,8 +1,6 @@ -import { - type JSONObject, - type JSONValue, - Settings, -} from "@llamaindex/core/global"; +import type { Logger } from "@llamaindex/env"; +import { z } from "zod"; +import { type JSONObject, type JSONValue, Settings } from "../global"; import type { BaseTool, ChatMessage, @@ -14,15 +12,13 @@ import type { ToolCall, ToolCallLLMMessageOptions, ToolOutput, -} from "@llamaindex/core/llms"; -import { baseToolWithCallSchema } from "@llamaindex/core/schema"; -import { z } from "zod"; -import type { Logger } from "../internal/logger.js"; +} from "../llms"; +import { baseToolWithCallSchema } from "../schema"; import { isAsyncIterable, prettifyError, stringifyJSONToMessageContent, -} from "../internal/utils.js"; +} from "../utils"; import type { AgentParamsBase } from "./base.js"; import type { TaskHandler } from "./types.js"; diff --git a/packages/core/src/global/index.ts b/packages/core/src/global/index.ts index 78167fb40..5859b4857 100644 --- a/packages/core/src/global/index.ts +++ b/packages/core/src/global/index.ts @@ -9,4 +9,4 @@ export type { LLMToolResultEvent, LlamaIndexEventMaps, } from "./settings/callback-manager"; -export type { JSONArray, JSONObject, JSONValue } from "./type"; +export type { JSONArray, JSONObject, JSONValue, UUID } from "./type"; diff --git a/packages/core/src/global/settings.ts b/packages/core/src/global/settings.ts index e01901d45..5b49d9d75 100644 --- a/packages/core/src/global/settings.ts +++ b/packages/core/src/global/settings.ts @@ -1,4 +1,4 @@ -import type { Tokenizer } from "@llamaindex/env"; +import { getEnv, type Tokenizer } from "@llamaindex/env"; import type { LLM } from "../llms"; import { type CallbackManager, @@ -61,4 +61,16 @@ export const Settings = { ): Result { return withCallbackManager(callbackManager, fn); }, + + get debug() { + let debug = getEnv("DEBUG"); + if (typeof window !== "undefined") { + debug ||= window.localStorage.debug; + } + return ( + (Boolean(debug) && debug?.includes("llamaindex")) || + debug === "*" || + debug === "true" + ); + }, }; diff --git a/packages/core/src/global/settings/callback-manager.ts b/packages/core/src/global/settings/callback-manager.ts index bce2f7237..36a309514 100644 --- a/packages/core/src/global/settings/callback-manager.ts +++ b/packages/core/src/global/settings/callback-manager.ts @@ -1,4 +1,5 @@ import { AsyncLocalStorage, CustomEvent } from "@llamaindex/env"; +import type { AgentEndEvent, AgentStartEvent } from "../../agent"; import type { ChatMessage, ChatResponse, @@ -72,6 +73,8 @@ export interface LlamaIndexEventMaps { "synthesize-end": SynthesizeEndEvent; "retrieve-start": RetrieveStartEvent; "retrieve-end": RetrieveEndEvent; + "agent-start": AgentStartEvent; + "agent-end": AgentEndEvent; } export class LlamaIndexCustomEvent<T = any> extends CustomEvent<T> { diff --git a/packages/core/src/objects/index.ts b/packages/core/src/objects/index.ts new file mode 100644 index 000000000..d1810d5d9 --- /dev/null +++ b/packages/core/src/objects/index.ts @@ -0,0 +1,78 @@ +/** + * @todo refactor this module, most of the part is broken + * reference + * - https://github.com/run-llama/LlamaIndexTS/pull/531 + * - https://github.com/run-llama/LlamaIndexTS/pull/416 + */ +import type { MessageContent } from "../llms"; +import { BaseRetriever } from "../retriever"; +import { BaseNode, TextNode } from "../schema"; +import { extractText } from "../utils"; + +// Assuming that necessary interfaces and classes (like OT, TextNode, BaseNode, etc.) are defined elsewhere +// Import statements (e.g., for TextNode, BaseNode) should be added based on your project's structure +export abstract class BaseObjectNodeMapping { + // TypeScript doesn't support Python's classmethod directly, but we can use static methods as an alternative + abstract fromObjects<OT>(objs: OT[], ...args: any[]): BaseObjectNodeMapping; + + // Abstract methods in TypeScript + abstract objNodeMapping(): Record<any, any>; + abstract toNode(obj: any): TextNode; + + // Concrete methods can be defined as usual + validateObject(obj: any): void {} + + // Implementing the add object logic + addObj(obj: any): void { + this.validateObject(obj); + this._addObj(obj); + } + + // Abstract method for internal add object logic + abstract _addObj(obj: any): void; + + // Implementing toNodes method + toNodes(objs: any[]): TextNode[] { + return objs.map((obj) => this.toNode(obj)); + } + + // Abstract method for internal from node logic + abstract _fromNode(node: BaseNode): any; + + // Implementing fromNode method + fromNode(node: BaseNode): any { + const obj = this._fromNode(node); + this.validateObject(obj); + return obj; + } + + // Abstract methods for persistence + abstract persist(persistDir: string, objNodeMappingFilename: string): void; +} + +export class ObjectRetriever<T = unknown> { + _retriever: BaseRetriever; + _objectNodeMapping: BaseObjectNodeMapping; + + constructor( + retriever: BaseRetriever, + objectNodeMapping: BaseObjectNodeMapping, + ) { + this._retriever = retriever; + this._objectNodeMapping = objectNodeMapping; + } + + // In TypeScript, getters are defined like this. + get retriever(): BaseRetriever { + return this._retriever; + } + + // Translating the retrieve method + async retrieve(strOrQueryBundle: MessageContent): Promise<T[]> { + const nodes = await this.retriever.retrieve({ + query: extractText(strOrQueryBundle), + }); + const objs = nodes.map((n) => this._objectNodeMapping.fromNode(n.node)); + return objs; + } +} diff --git a/packages/core/src/utils/index.ts b/packages/core/src/utils/index.ts index d589702dd..fa6d89629 100644 --- a/packages/core/src/utils/index.ts +++ b/packages/core/src/utils/index.ts @@ -1,4 +1,12 @@ -export { EventCaller, getEventCaller, wrapEventCaller } from "./event-caller"; +import type { JSONValue } from "../global"; + +export { + EventCaller, + getEventCaller, + isAsyncIterable, + isIterable, + wrapEventCaller, +} from "./event-caller"; export async function* streamConverter<S, D>( stream: AsyncIterable<S>, @@ -44,6 +52,21 @@ export async function* streamReducer<S, D>(params: { } } +/** + * Prettify an error for AI to read + */ +export function prettifyError(error: unknown): string { + if (error instanceof Error) { + return `Error(${error.name}): ${error.message}`; + } else { + return `${error}`; + } +} + +export function stringifyJSONToMessageContent(value: JSONValue): string { + return JSON.stringify(value, null, 2).replace(/"([^"]*)"/g, "$1"); +} + export { wrapLLMEvent } from "./wrap-llm-event"; export { diff --git a/packages/llamaindex/tests/agents.test.ts b/packages/core/tests/agents.test.ts similarity index 91% rename from packages/llamaindex/tests/agents.test.ts rename to packages/core/tests/agents.test.ts index f61f9f4b5..ca55937a5 100644 --- a/packages/llamaindex/tests/agents.test.ts +++ b/packages/core/tests/agents.test.ts @@ -1,4 +1,4 @@ -import { validateAgentParams } from "llamaindex/agent/utils"; +import { validateAgentParams } from "@llamaindex/core/agent"; import { expect, test } from "vitest"; import { ZodError } from "zod"; diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index e225d02d8..207b319ff 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -8,7 +8,7 @@ "moduleResolution": "Bundler", "skipLibCheck": true, "strict": true, - "lib": ["ESNext", "DOM"], + "lib": ["ESNext", "DOM", "DOM.AsyncIterable"], "types": ["node"] }, "include": ["./src"], diff --git a/packages/env/src/index.browser.ts b/packages/env/src/index.browser.ts index fa0c505ef..d6ec0fa82 100644 --- a/packages/env/src/index.browser.ts +++ b/packages/env/src/index.browser.ts @@ -6,6 +6,7 @@ import "./global-check.js"; export * from "./web-polyfill.js"; +export { consoleLogger, emptyLogger, type Logger } from "./logger/index.js"; export { loadTransformers, setTransformers, diff --git a/packages/env/src/index.edge-light.ts b/packages/env/src/index.edge-light.ts index fb6b70c00..76097886d 100644 --- a/packages/env/src/index.edge-light.ts +++ b/packages/env/src/index.edge-light.ts @@ -6,6 +6,7 @@ import "./global-check.js"; export * from "./node-polyfill.js"; +export { consoleLogger, emptyLogger, type Logger } from "./logger/index.js"; export { loadTransformers, setTransformers, diff --git a/packages/env/src/index.ts b/packages/env/src/index.ts index 3f784c42b..40d8ccf7c 100644 --- a/packages/env/src/index.ts +++ b/packages/env/src/index.ts @@ -33,6 +33,7 @@ export function createSHA256(): SHA256 { }; } +export { consoleLogger, emptyLogger, type Logger } from "./logger/index.js"; export { loadTransformers, setTransformers, diff --git a/packages/env/src/index.workerd.ts b/packages/env/src/index.workerd.ts index e688fe1de..863d6550d 100644 --- a/packages/env/src/index.workerd.ts +++ b/packages/env/src/index.workerd.ts @@ -13,6 +13,7 @@ export function getEnv(name: string): string | undefined { return INTERNAL_ENV[name]; } +export { consoleLogger, emptyLogger, type Logger } from "./logger/index.js"; export { loadTransformers, setTransformers, diff --git a/packages/llamaindex/src/internal/logger.ts b/packages/env/src/logger/index.ts similarity index 85% rename from packages/llamaindex/src/internal/logger.ts rename to packages/env/src/logger/index.ts index 686d7e170..12ba69bb3 100644 --- a/packages/llamaindex/src/internal/logger.ts +++ b/packages/env/src/logger/index.ts @@ -4,10 +4,12 @@ export type Logger = { warn: (...args: unknown[]) => void; }; +function noop() {} + export const emptyLogger: Logger = Object.freeze({ - log: () => {}, - error: () => {}, - warn: () => {}, + log: noop, + error: noop, + warn: noop, }); export const consoleLogger: Logger = Object.freeze({ diff --git a/packages/llamaindex/e2e/examples/cloudflare-worker-agent/package.json b/packages/llamaindex/e2e/examples/cloudflare-worker-agent/package.json index 2936348fb..dafc52f74 100644 --- a/packages/llamaindex/e2e/examples/cloudflare-worker-agent/package.json +++ b/packages/llamaindex/e2e/examples/cloudflare-worker-agent/package.json @@ -12,13 +12,13 @@ "cf-typegen": "wrangler types" }, "devDependencies": { - "@cloudflare/vitest-pool-workers": "^0.4.27", - "@cloudflare/workers-types": "^4.20240821.1", - "@vitest/runner": "1.5.3", - "@vitest/snapshot": "1.5.3", + "@cloudflare/vitest-pool-workers": "^0.5.8", + "@cloudflare/workers-types": "^4.20240924.0", + "@vitest/runner": "2.1.1", + "@vitest/snapshot": "2.1.1", "typescript": "^5.6.2", - "vitest": "1.5.3", - "wrangler": "^3.73.0" + "vitest": "2.1.1", + "wrangler": "^3.78.8" }, "dependencies": { "llamaindex": "workspace:*" diff --git a/packages/llamaindex/e2e/examples/cloudflare-worker-agent/src/index.ts b/packages/llamaindex/e2e/examples/cloudflare-worker-agent/src/index.ts index 8a283cc6b..dd4f4d939 100644 --- a/packages/llamaindex/e2e/examples/cloudflare-worker-agent/src/index.ts +++ b/packages/llamaindex/e2e/examples/cloudflare-worker-agent/src/index.ts @@ -1,21 +1,26 @@ +// add `OPENAI_API_KEY` to the `.dev.vars` file +interface Env { + OPENAI_API_KEY: string; +} + export default { async fetch( request: Request, env: Env, ctx: ExecutionContext, ): Promise<Response> { - const { setEnvs } = await import("@llamaindex/env"); - setEnvs(env); - const { OpenAIAgent } = await import("llamaindex"); + const { OpenAIAgent, OpenAI } = await import("@llamaindex/openai"); + const text = await request.text(); const agent = new OpenAIAgent({ + llm: new OpenAI({ + apiKey: env.OPENAI_API_KEY, + }), tools: [], }); - console.log(1); const responseStream = await agent.chat({ stream: true, - message: "Hello? What is the weather today?", + message: text, }); - console.log(2); const textEncoder = new TextEncoder(); const response = responseStream.pipeThrough<Uint8Array>( new TransformStream({ diff --git a/packages/llamaindex/e2e/examples/cloudflare-worker-agent/test/index.spec.ts b/packages/llamaindex/e2e/examples/cloudflare-worker-agent/test/index.spec.ts index d78091e78..247f77c92 100644 --- a/packages/llamaindex/e2e/examples/cloudflare-worker-agent/test/index.spec.ts +++ b/packages/llamaindex/e2e/examples/cloudflare-worker-agent/test/index.spec.ts @@ -14,7 +14,11 @@ describe("Hello World worker", () => { const request = new IncomingRequest("http://example.com"); // Create an empty context to pass to `worker.fetch()`. const ctx = createExecutionContext(); - const response = await worker.fetch(request, env, ctx); + const response = await worker.fetch( + request, + { ...env, OPENAI_API_KEY: "sk-1234" }, + ctx, + ); // Wait for all `Promise`s passed to `ctx.waitUntil()` to settle before running test assertions await waitOnExecutionContext(ctx); // fixme: should be not "Hello World!" diff --git a/packages/llamaindex/e2e/fixtures/llm/openai.ts b/packages/llamaindex/e2e/fixtures/llm/openai.ts index 10fd90c64..6e21c8794 100644 --- a/packages/llamaindex/e2e/fixtures/llm/openai.ts +++ b/packages/llamaindex/e2e/fixtures/llm/openai.ts @@ -21,6 +21,8 @@ import { type MessageContentDetail, } from "llamaindex"; +export { OpenAIAgent, OpenAIAgentWorker } from "@llamaindex/openai"; + export function getOpenAISession() { return {}; } diff --git a/packages/llamaindex/e2e/mock-module.js b/packages/llamaindex/e2e/mock-module.js index fe6cd6262..28f55f3aa 100644 --- a/packages/llamaindex/e2e/mock-module.js +++ b/packages/llamaindex/e2e/mock-module.js @@ -35,6 +35,10 @@ export async function resolve(specifier, context, nextResolve) { if (!exist) { return result; } + if (context.parentURL.includes("e2e/fixtures")) { + // ignore the fixture import itself + return result; + } return { url, format: "module", diff --git a/packages/llamaindex/src/Settings.ts b/packages/llamaindex/src/Settings.ts index 4eae4745c..b522a6a81 100644 --- a/packages/llamaindex/src/Settings.ts +++ b/packages/llamaindex/src/Settings.ts @@ -13,7 +13,7 @@ import { SentenceSplitter, } from "@llamaindex/core/node-parser"; import type { LoadTransformerEvent } from "@llamaindex/env"; -import { AsyncLocalStorage, getEnv } from "@llamaindex/env"; +import { AsyncLocalStorage } from "@llamaindex/env"; import type { ServiceContext } from "./ServiceContext.js"; import { getEmbeddedModel, @@ -57,12 +57,7 @@ class GlobalSettings implements Config { #promptAsyncLocalStorage = new AsyncLocalStorage<PromptConfig>(); get debug() { - const debug = getEnv("DEBUG"); - return ( - (Boolean(debug) && debug?.includes("llamaindex")) || - debug === "*" || - debug === "true" - ); + return CoreSettings.debug; } get llm(): LLM { diff --git a/packages/llamaindex/src/agent/anthropic.ts b/packages/llamaindex/src/agent/anthropic.ts index 45d7c5ce3..86463fff1 100644 --- a/packages/llamaindex/src/agent/anthropic.ts +++ b/packages/llamaindex/src/agent/anthropic.ts @@ -1,3 +1,8 @@ +import { + LLMAgent, + LLMAgentWorker, + type LLMAgentParams, +} from "@llamaindex/core/agent"; import type { NonStreamingChatEngineParams, StreamingChatEngineParams, @@ -5,7 +10,6 @@ import type { import type { EngineResponse } from "@llamaindex/core/schema"; import { Settings } from "../Settings.js"; import { Anthropic } from "../llm/anthropic.js"; -import { LLMAgent, LLMAgentWorker, type LLMAgentParams } from "./llm.js"; export type AnthropicAgentParams = LLMAgentParams; diff --git a/packages/llamaindex/src/agent/index.ts b/packages/llamaindex/src/agent/index.ts index feda11bd4..3473f0c5f 100644 --- a/packages/llamaindex/src/agent/index.ts +++ b/packages/llamaindex/src/agent/index.ts @@ -1,22 +1,19 @@ +export * from "@llamaindex/core/agent"; +export { + OpenAIAgent, + OpenAIAgentWorker, + type OpenAIAgentParams, +} from "@llamaindex/openai"; export { AnthropicAgent, AnthropicAgentWorker, type AnthropicAgentParams, } from "./anthropic.js"; -export { AgentRunner, AgentWorker, type AgentParamsBase } from "./base.js"; -export { LLMAgent, LLMAgentWorker, type LLMAgentParams } from "./llm.js"; -export { - OpenAIAgent, - OpenAIAgentWorker, - type OpenAIAgentParams, -} from "./openai.js"; export { ReACTAgentWorker, ReActAgent, type ReACTAgentParams, } from "./react.js"; -export { type TaskHandler } from "./types.js"; -export { callTool, stepTools, stepToolsStreaming } from "./utils.js"; // todo: ParallelAgent // todo: CustomAgent diff --git a/packages/llamaindex/src/agent/react.ts b/packages/llamaindex/src/agent/react.ts index cec254f89..7cc01f262 100644 --- a/packages/llamaindex/src/agent/react.ts +++ b/packages/llamaindex/src/agent/react.ts @@ -1,3 +1,13 @@ +import { + type AgentParamsBase, + AgentRunner, + AgentWorker, + callTool, + consumeAsyncIterable, + createReadableStream, + type TaskHandler, + validateAgentParams, +} from "@llamaindex/core/agent"; import type { JSONObject, JSONValue } from "@llamaindex/core/global"; import type { BaseTool, @@ -6,22 +16,14 @@ import type { ChatResponseChunk, LLM, } from "@llamaindex/core/llms"; -import { extractText } from "@llamaindex/core/utils"; -import { randomUUID } from "@llamaindex/env"; -import { getReACTAgentSystemHeader } from "../internal/prompt/react.js"; import { - isAsyncIterable, + extractText, stringifyJSONToMessageContent, -} from "../internal/utils.js"; +} from "@llamaindex/core/utils"; +import { randomUUID } from "@llamaindex/env"; +import { getReACTAgentSystemHeader } from "../internal/prompt/react.js"; +import { isAsyncIterable } from "../internal/utils.js"; import { Settings } from "../Settings.js"; -import { AgentRunner, AgentWorker, type AgentParamsBase } from "./base.js"; -import type { TaskHandler } from "./types.js"; -import { - callTool, - consumeAsyncIterable, - createReadableStream, - validateAgentParams, -} from "./utils.js"; export type ReACTAgentParams = AgentParamsBase<LLM>; diff --git a/packages/llamaindex/src/index.edge.ts b/packages/llamaindex/src/index.edge.ts index a2b819430..20f920299 100644 --- a/packages/llamaindex/src/index.edge.ts +++ b/packages/llamaindex/src/index.edge.ts @@ -1,5 +1,4 @@ -import type { AgentEndEvent, AgentStartEvent } from "./agent/types.js"; - +export * from "@llamaindex/core/agent"; export * from "@llamaindex/core/chat-engine"; export { CallbackManager, @@ -29,26 +28,16 @@ export type { LLMStreamEvent, LLMToolCallEvent, LLMToolResultEvent, + LlamaIndexEventMaps, } from "@llamaindex/core/global"; export * from "@llamaindex/core/indices"; export * from "@llamaindex/core/llms"; +export * from "@llamaindex/core/memory"; export * from "@llamaindex/core/prompts"; export * from "@llamaindex/core/query-engine"; export * from "@llamaindex/core/response-synthesizers"; export * from "@llamaindex/core/retriever"; export * from "@llamaindex/core/schema"; - -declare module "@llamaindex/core/global" { - export interface LlamaIndexEventMaps { - // agent events - "agent-start": AgentStartEvent; - "agent-end": AgentEndEvent; - } -} - -export * from "@llamaindex/core/llms"; -export * from "@llamaindex/core/memory"; -export * from "@llamaindex/core/schema"; export * from "./agent/index.js"; export * from "./cloud/index.js"; export * from "./embeddings/index.js"; diff --git a/packages/llamaindex/src/internal/utils.ts b/packages/llamaindex/src/internal/utils.ts index 1e18c474f..53e5b9755 100644 --- a/packages/llamaindex/src/internal/utils.ts +++ b/packages/llamaindex/src/internal/utils.ts @@ -1,5 +1,4 @@ import { similarity } from "@llamaindex/core/embeddings"; -import type { JSONValue } from "@llamaindex/core/global"; import type { ImageType } from "@llamaindex/core/schema"; import { fs } from "@llamaindex/env"; import { filetypemime } from "magic-bytes.js"; @@ -18,21 +17,6 @@ export const isIterable = (obj: unknown): obj is Iterable<unknown> => { return obj != null && typeof obj === "object" && Symbol.iterator in obj; }; -/** - * Prettify an error for AI to read - */ -export function prettifyError(error: unknown): string { - if (error instanceof Error) { - return `Error(${error.name}): ${error.message}`; - } else { - return `${error}`; - } -} - -export function stringifyJSONToMessageContent(value: JSONValue): string { - return JSON.stringify(value, null, 2).replace(/"([^"]*)"/g, "$1"); -} - /** * Get the top K embeddings from a list of embeddings ordered by similarity to the query. * @param queryEmbedding diff --git a/packages/llamaindex/src/objects/base.ts b/packages/llamaindex/src/objects/base.ts index eb7cb0083..688346834 100644 --- a/packages/llamaindex/src/objects/base.ts +++ b/packages/llamaindex/src/objects/base.ts @@ -1,81 +1,12 @@ -import type { BaseTool, MessageContent } from "@llamaindex/core/llms"; -import { BaseRetriever } from "@llamaindex/core/retriever"; +import type { BaseTool } from "@llamaindex/core/llms"; +import { + BaseObjectNodeMapping, + ObjectRetriever, +} from "@llamaindex/core/objects"; import type { BaseNode, Metadata } from "@llamaindex/core/schema"; import { TextNode } from "@llamaindex/core/schema"; -import { extractText } from "@llamaindex/core/utils"; import type { VectorStoreIndex } from "../indices/vectorStore/index.js"; -// Assuming that necessary interfaces and classes (like OT, TextNode, BaseNode, etc.) are defined elsewhere -// Import statements (e.g., for TextNode, BaseNode) should be added based on your project's structure - -export abstract class BaseObjectNodeMapping { - // TypeScript doesn't support Python's classmethod directly, but we can use static methods as an alternative - abstract fromObjects<OT>(objs: OT[], ...args: any[]): BaseObjectNodeMapping; - - // Abstract methods in TypeScript - abstract objNodeMapping(): Record<any, any>; - abstract toNode(obj: any): TextNode; - - // Concrete methods can be defined as usual - validateObject(obj: any): void {} - - // Implementing the add object logic - addObj(obj: any): void { - this.validateObject(obj); - this._addObj(obj); - } - - // Abstract method for internal add object logic - abstract _addObj(obj: any): void; - - // Implementing toNodes method - toNodes(objs: any[]): TextNode[] { - return objs.map((obj) => this.toNode(obj)); - } - - // Abstract method for internal from node logic - abstract _fromNode(node: BaseNode): any; - - // Implementing fromNode method - fromNode(node: BaseNode): any { - const obj = this._fromNode(node); - this.validateObject(obj); - return obj; - } - - // Abstract methods for persistence - abstract persist(persistDir: string, objNodeMappingFilename: string): void; -} - -// You will need to implement specific subclasses of BaseObjectNodeMapping as per your project requirements. - -export class ObjectRetriever<T = unknown> { - _retriever: BaseRetriever; - _objectNodeMapping: BaseObjectNodeMapping; - - constructor( - retriever: BaseRetriever, - objectNodeMapping: BaseObjectNodeMapping, - ) { - this._retriever = retriever; - this._objectNodeMapping = objectNodeMapping; - } - - // In TypeScript, getters are defined like this. - get retriever(): BaseRetriever { - return this._retriever; - } - - // Translating the retrieve method - async retrieve(strOrQueryBundle: MessageContent): Promise<T[]> { - const nodes = await this.retriever.retrieve({ - query: extractText(strOrQueryBundle), - }); - const objs = nodes.map((n) => this._objectNodeMapping.fromNode(n.node)); - return objs; - } -} - const convertToolToNode = (tool: BaseTool): TextNode => { const nodeText = ` Tool name: ${tool.metadata.name} diff --git a/packages/llamaindex/src/readers/JSONReader.ts b/packages/llamaindex/src/readers/JSONReader.ts index b1894e2a2..6c5cff4bc 100644 --- a/packages/llamaindex/src/readers/JSONReader.ts +++ b/packages/llamaindex/src/readers/JSONReader.ts @@ -1,7 +1,7 @@ import { parseChunked } from "@discoveryjs/json-ext"; import type { JSONValue } from "@llamaindex/core/global"; import { Document, FileReader } from "@llamaindex/core/schema"; -import { type Logger, consoleLogger } from "../internal/logger.js"; +import { consoleLogger, type Logger } from "@llamaindex/env"; // Possible improvements: // - use `json-ext` for streaming JSON.stringify. Currently once JSON.stringify is called, the data is already chunked, so there should be no high risk of memory issues diff --git a/packages/llamaindex/src/agent/openai.ts b/packages/llm/openai/src/agent.ts similarity index 72% rename from packages/llamaindex/src/agent/openai.ts rename to packages/llm/openai/src/agent.ts index 8cd84bc67..36c6ad66c 100644 --- a/packages/llamaindex/src/agent/openai.ts +++ b/packages/llm/openai/src/agent.ts @@ -1,6 +1,10 @@ -import { OpenAI } from "@llamaindex/openai"; -import { Settings } from "../Settings.js"; -import { LLMAgent, LLMAgentWorker, type LLMAgentParams } from "./llm.js"; +import { + LLMAgent, + LLMAgentWorker, + type LLMAgentParams, +} from "@llamaindex/core/agent"; +import { Settings } from "@llamaindex/core/global"; +import { OpenAI } from "./llm"; // This is likely not necessary anymore but leaving it here just incase it's in use elsewhere diff --git a/packages/llm/openai/src/index.ts b/packages/llm/openai/src/index.ts index f1e663639..b74136de4 100644 --- a/packages/llm/openai/src/index.ts +++ b/packages/llm/openai/src/index.ts @@ -1,3 +1,8 @@ +export { + OpenAIAgent, + OpenAIAgentWorker, + type OpenAIAgentParams, +} from "./agent"; export { ALL_OPENAI_EMBEDDING_MODELS, OpenAIEmbedding } from "./embedding"; export { ALL_AVAILABLE_OPENAI_MODELS, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e3d2abce4..2fb4f982c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -709,26 +709,26 @@ importers: version: link:../../.. devDependencies: '@cloudflare/vitest-pool-workers': - specifier: ^0.4.27 - version: 0.4.27(@cloudflare/workers-types@4.20240821.1)(@vitest/runner@1.5.3)(@vitest/snapshot@1.5.3)(vitest@1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(terser@5.32.0)) + specifier: ^0.5.8 + version: 0.5.8(@cloudflare/workers-types@4.20240924.0)(@vitest/runner@2.1.1)(@vitest/snapshot@2.1.1)(vitest@2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(msw@2.4.8(typescript@5.6.2))(terser@5.32.0)) '@cloudflare/workers-types': - specifier: ^4.20240821.1 - version: 4.20240821.1 + specifier: ^4.20240924.0 + version: 4.20240924.0 '@vitest/runner': - specifier: 1.5.3 - version: 1.5.3 + specifier: 2.1.1 + version: 2.1.1 '@vitest/snapshot': - specifier: 1.5.3 - version: 1.5.3 + specifier: 2.1.1 + version: 2.1.1 typescript: specifier: ^5.6.2 version: 5.6.2 vitest: - specifier: 1.5.3 - version: 1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(terser@5.32.0) + specifier: 2.1.1 + version: 2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(msw@2.4.8(typescript@5.6.2))(terser@5.32.0) wrangler: - specifier: ^3.73.0 - version: 3.73.0(@cloudflare/workers-types@4.20240821.1) + specifier: ^3.78.8 + version: 3.78.8(@cloudflare/workers-types@4.20240924.0) packages/llamaindex/e2e/examples/llama-parse-browser: dependencies: @@ -2276,49 +2276,49 @@ packages: resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} engines: {node: '>=16.13'} - '@cloudflare/vitest-pool-workers@0.4.27': - resolution: {integrity: sha512-C56YNcHrLhTsES3kiY4xcCr4knq/dQX6jfVyXVFdKX1I1LHb43MsIm3OWCm9/RK/liHm1RpQD5Km+YZq/C7tyQ==} + '@cloudflare/vitest-pool-workers@0.5.8': + resolution: {integrity: sha512-YRN3uZRkZmpC2I6I56Jg+5Q+5aijOBxZxAQrUE9xO1+FjV9BNqHO/4LLdldj7ZqSV+LB2pzRCMhViHcnPCF91g==} peerDependencies: - '@vitest/runner': 1.3.x - 1.5.x - '@vitest/snapshot': 1.3.x - 1.5.x - vitest: 1.3.x - 1.5.x + '@vitest/runner': 2.0.x - 2.1.x + '@vitest/snapshot': 2.0.x - 2.1.x + vitest: 2.0.x - 2.1.x - '@cloudflare/workerd-darwin-64@1.20240821.1': - resolution: {integrity: sha512-CDBpfZKrSy4YrIdqS84z67r3Tzal2pOhjCsIb63IuCnvVes59/ft1qhczBzk9EffeOE2iTCrA4YBT7Sbn7USew==} + '@cloudflare/workerd-darwin-64@1.20240909.0': + resolution: {integrity: sha512-nJ8jm/6PR8DPzVb4QifNAfSdrFZXNblwIdOhLTU5FpSvFFocmzFX5WgzQagvtmcC9/ZAQyxuf7WynDNyBcoe0Q==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20240821.1': - resolution: {integrity: sha512-Q+9RedvNbPcEt/dKni1oN94OxbvuNAeJkgHmrLFTGF8zu21wzOhVkQeRNxcYxrMa9mfStc457NAg13OVCj2kHQ==} + '@cloudflare/workerd-darwin-arm64@1.20240909.0': + resolution: {integrity: sha512-gJqKa811oSsoxy9xuoQn7bS0Hr1sY+o3EUORTcEnulG6Kz9NQ6nd8QNdp2Hrk2jmmSqwrNkn+a6PZkWzk6Q0Gw==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20240821.1': - resolution: {integrity: sha512-j6z3KsPtawrscoLuP985LbqFrmsJL6q1mvSXOXTqXGODAHIzGBipHARdOjms3UQqovzvqB2lQaQsZtLBwCZxtA==} + '@cloudflare/workerd-linux-64@1.20240909.0': + resolution: {integrity: sha512-sJrmtccfMg73sZljiBpe4R+lhF58TqzqhF2pQG8HRjyxkzkM1sjpZqfEFaIkNUDqd3/Ibji49fklhPCGXljKSg==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20240821.1': - resolution: {integrity: sha512-I9bHgZOxJQW0CV5gTdilyxzTG7ILzbTirehQWgfPx9X77E/7eIbR9sboOMgyeC69W4he0SKtpx0sYZuTJu4ERw==} + '@cloudflare/workerd-linux-arm64@1.20240909.0': + resolution: {integrity: sha512-dTbSdceyRXPOSER+18AwYRbPQG0e/Dwl2trmfMMCETkfJhNLv1fU3FFMJPjfILijKnhTZHSnHCx0+xwHdon2fg==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20240821.1': - resolution: {integrity: sha512-keC97QPArs6LWbPejQM7/Y8Jy8QqyaZow4/ZdsGo+QjlOLiZRDpAenfZx3CBUoWwEeFwQTl2FLO+8hV1SWFFYw==} + '@cloudflare/workerd-windows-64@1.20240909.0': + resolution: {integrity: sha512-/d4BT0kcWFa7Qc0K4K9+cwVQ1qyPNKiO42JZUijlDlco+TYTPkLO3qGEohmwbfMq+BieK7JTMSgjO81ZHpA0HQ==} engines: {node: '>=16'} cpu: [x64] os: [win32] - '@cloudflare/workers-shared@0.4.1': - resolution: {integrity: sha512-nYh4r8JwOOjYIdH2zub++CmIKlkYFlpxI1nBHimoiHcytJXD/b7ldJ21TtfzUZMCgI78mxVlymMHA/ReaOxKlA==} + '@cloudflare/workers-shared@0.5.4': + resolution: {integrity: sha512-PNL/0TjKRdUHa1kwgVdqUNJVZ9ez4kacsi8omz+gv859EvJmsVuGiMAClY2YfJnC9LVKhKCcjqmFgKNXG9/IXA==} engines: {node: '>=16.7.0'} - '@cloudflare/workers-types@4.20240821.1': - resolution: {integrity: sha512-icAkbnAqgVl6ef9lgLTom8na+kj2RBw2ViPAQ586hbdj0xZcnrjK7P46Eu08OU9D/lNDgN2sKU/sxhe2iK/gIg==} + '@cloudflare/workers-types@4.20240924.0': + resolution: {integrity: sha512-AnoHY0B5rgMv4Lg34mdwfp4+Z9ZZRli8AFO7uY8Q9UchR+HPEMEdaAQ0EswTYQqcVBdarRuYyM0Oeo4hM8Jqog==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -4784,9 +4784,6 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 - '@vitest/expect@1.5.3': - resolution: {integrity: sha512-y+waPz31pOFr3rD7vWTbwiLe5+MgsMm40jTZbQE8p8/qXyBX3CQsIXRx9XK12IbY7q/t5a5aM/ckt33b4PxK2g==} - '@vitest/expect@2.1.1': resolution: {integrity: sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==} @@ -4805,27 +4802,15 @@ packages: '@vitest/pretty-format@2.1.1': resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} - '@vitest/runner@1.5.3': - resolution: {integrity: sha512-7PlfuReN8692IKQIdCxwir1AOaP5THfNkp0Uc4BKr2na+9lALNit7ub9l3/R7MP8aV61+mHKRGiqEKRIwu6iiQ==} - '@vitest/runner@2.1.1': resolution: {integrity: sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==} - '@vitest/snapshot@1.5.3': - resolution: {integrity: sha512-K3mvIsjyKYBhNIDujMD2gfQEzddLe51nNOAf45yKRt/QFJcUIeTQd2trRvv6M6oCBHNVnZwFWbQ4yj96ibiDsA==} - '@vitest/snapshot@2.1.1': resolution: {integrity: sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==} - '@vitest/spy@1.5.3': - resolution: {integrity: sha512-Llj7Jgs6lbnL55WoshJUUacdJfjU2honvGcAJBxhra5TPEzTJH8ZuhI3p/JwqqfnTr4PmP7nDmOXP53MS7GJlg==} - '@vitest/spy@2.1.1': resolution: {integrity: sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==} - '@vitest/utils@1.5.3': - resolution: {integrity: sha512-rE9DTN1BRhzkzqNQO+kw8ZgfeEBCLXiHJwetk668shmNBpSagQxneT5eSqEBLP+cqSiAeecvQmbpFfdMyLcIQA==} - '@vitest/utils@2.1.1': resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} @@ -5078,10 +5063,6 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -5178,9 +5159,6 @@ packages: engines: {node: '>=16', npm: '>=7'} hasBin: true - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -5487,10 +5465,6 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - chai@5.1.1: resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} engines: {node: '>=12'} @@ -5535,9 +5509,6 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -6045,10 +6016,6 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -6205,10 +6172,6 @@ packages: diff-match-patch@1.0.5: resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dingbat-to-unicode@1.0.1: resolution: {integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==} @@ -7858,9 +7821,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -8034,10 +7994,6 @@ packages: resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} engines: {node: '>= 12.13.0'} - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} @@ -8134,9 +8090,6 @@ packages: lop@0.4.1: resolution: {integrity: sha512-9xyho9why2A2tzm5aIcMWKvzqKsnxrf9B5I+8O30olh6lQU8PH978LqZoI4++37RBgS1Em5i54v1TFs/3wnmXQ==} - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - loupe@3.1.1: resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} @@ -8504,8 +8457,8 @@ packages: peerDependencies: webpack: ^5.0.0 - miniflare@3.20240821.0: - resolution: {integrity: sha512-4BhLGpssQxM/O6TZmJ10GkT3wBJK6emFkZ3V87/HyvQmVt8zMxEBvyw5uv6kdtp+7F54Nw6IKFJjPUL8rFVQrQ==} + miniflare@3.20240909.5: + resolution: {integrity: sha512-3Am3D9LGDljEKWnylSy6hFg3LFnNCo9DlWqZFcL7QkuIhQwN6Sqz1d6xQCkgft7FVXnykG6VNpz0NrjdW+mBjg==} engines: {node: '>=16.13'} hasBin: true @@ -8907,6 +8860,9 @@ packages: ohash@1.1.3: resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + ohash@1.1.4: + resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} + ollama@0.5.9: resolution: {integrity: sha512-F/KZuDRC+ZsVCuMvcOYuQ6zj42/idzCkkuknGyyGVmNStMZ/sU3jQpvhnl4SyC0+zBzLiKNZJnJeuPFuieWZvQ==} @@ -9027,10 +8983,6 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -9164,9 +9116,6 @@ packages: path-to-regexp@2.2.1: resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} - path-to-regexp@6.2.2: - resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} - path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} @@ -9177,9 +9126,6 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -9665,10 +9611,6 @@ packages: pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-ms@7.0.1: resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} engines: {node: '>=10'} @@ -9872,9 +9814,6 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-json-view-lite@1.4.0: resolution: {integrity: sha512-wh6F6uJyYAmQ4fK0e8dSQMEWuvTs2Wr3el3sLD9bambX1+pSWUVXIz1RFaoy3TI1mZ0FqdpKq9YgbgTTgyrmXA==} engines: {node: '>=14'} @@ -10655,9 +10594,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - strip-outer@2.0.0: resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -10857,10 +10793,6 @@ packages: tinyexec@0.3.0: resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - tinypool@1.0.1: resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -10869,10 +10801,6 @@ packages: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - tinyspy@3.0.0: resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} engines: {node: '>=14.0.0'} @@ -11012,10 +10940,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -11114,8 +11038,8 @@ packages: resolution: {integrity: sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==} engines: {node: '>=18.0'} - unenv-nightly@2.0.0-1724863496.70db6f1: - resolution: {integrity: sha512-r+VIl1gnsI4WQxluruSQhy8alpAf1AsLRLm4sEKp3otCyTIVD6I6wHEYzeQnwsyWgaD4+3BD4A/eqrgOpdTzhw==} + unenv-nightly@2.0.0-20240919-125358-9a64854: + resolution: {integrity: sha512-XjsgUTrTHR7iw+k/SRTNjh6EQgwpC9voygnoCJo5kh4hKqsSDHUW84MhL9EsHTNfLctvVBHaSw8e2k3R2fKXsQ==} unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} @@ -11265,11 +11189,6 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@1.5.3: - resolution: {integrity: sha512-axFo00qiCpU/JLd8N1gu9iEYL3xTbMbMrbe5nDp9GL0nb6gurIdZLkkFogZXWnE8Oyy5kfSLwNVIcVsnhE7lgQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - vite-node@2.1.1: resolution: {integrity: sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -11311,31 +11230,6 @@ packages: terser: optional: true - vitest@1.5.3: - resolution: {integrity: sha512-2oM7nLXylw3mQlW6GXnRriw+7YvZFk/YNV8AxIC3Z3MfFbuziLGWP9GPxxu/7nRlXhqyxBikpamr+lEEj1sUEw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.5.3 - '@vitest/ui': 1.5.3 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - vitest@2.1.1: resolution: {integrity: sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -11556,17 +11450,17 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - workerd@1.20240821.1: - resolution: {integrity: sha512-y4phjCnEG96u8ZkgkkHB+gSw0i6uMNo23rBmixylWpjxDklB+LWD8dztasvsu7xGaZbLoTxQESdEw956F7VJDA==} + workerd@1.20240909.0: + resolution: {integrity: sha512-NwuYh/Fgr/MK0H+Ht687sHl/f8tumwT5CWzYR0MZMHri8m3CIYu2IaY4tBFWoKE/tOU1Z5XjEXECa9zXY4+lwg==} engines: {node: '>=16'} hasBin: true - wrangler@3.73.0: - resolution: {integrity: sha512-VrdDR2OpvsCQp+r5Of3rDP1W64cNN/LHLVx1roULOlPS8PZiv7rUYgkwhdCQ61+HICAaeSxWYIzkL5+B9+8W3g==} + wrangler@3.78.8: + resolution: {integrity: sha512-tnJ++KY0EeQKa7Pm5Zxl1Cnf1QcmlLit2CohCpTEFHSgCzwzwViuxFL8JQvVKj8Qb65ouBNbfPZnlqrEyGpbew==} engines: {node: '>=16.17.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20240821.1 + '@cloudflare/workers-types': ^4.20240909.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -14472,18 +14366,18 @@ snapshots: dependencies: mime: 3.0.0 - '@cloudflare/vitest-pool-workers@0.4.27(@cloudflare/workers-types@4.20240821.1)(@vitest/runner@1.5.3)(@vitest/snapshot@1.5.3)(vitest@1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(terser@5.32.0))': + '@cloudflare/vitest-pool-workers@0.5.8(@cloudflare/workers-types@4.20240924.0)(@vitest/runner@2.1.1)(@vitest/snapshot@2.1.1)(vitest@2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(msw@2.4.8(typescript@5.6.2))(terser@5.32.0))': dependencies: - '@vitest/runner': 1.5.3 - '@vitest/snapshot': 1.5.3 + '@vitest/runner': 2.1.1 + '@vitest/snapshot': 2.1.1 birpc: 0.2.14 cjs-module-lexer: 1.4.0 devalue: 4.3.3 esbuild: 0.17.19 - miniflare: 3.20240821.0 + miniflare: 3.20240909.5 semver: 7.6.3 - vitest: 1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(terser@5.32.0) - wrangler: 3.73.0(@cloudflare/workers-types@4.20240821.1) + vitest: 2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(msw@2.4.8(typescript@5.6.2))(terser@5.32.0) + wrangler: 3.78.8(@cloudflare/workers-types@4.20240924.0) zod: 3.23.8 transitivePeerDependencies: - '@cloudflare/workers-types' @@ -14491,24 +14385,27 @@ snapshots: - supports-color - utf-8-validate - '@cloudflare/workerd-darwin-64@1.20240821.1': + '@cloudflare/workerd-darwin-64@1.20240909.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20240821.1': + '@cloudflare/workerd-darwin-arm64@1.20240909.0': optional: true - '@cloudflare/workerd-linux-64@1.20240821.1': + '@cloudflare/workerd-linux-64@1.20240909.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20240821.1': + '@cloudflare/workerd-linux-arm64@1.20240909.0': optional: true - '@cloudflare/workerd-windows-64@1.20240821.1': + '@cloudflare/workerd-windows-64@1.20240909.0': optional: true - '@cloudflare/workers-shared@0.4.1': {} + '@cloudflare/workers-shared@0.5.4': + dependencies: + mime: 3.0.0 + zod: 3.23.8 - '@cloudflare/workers-types@4.20240821.1': {} + '@cloudflare/workers-types@4.20240924.0': {} '@colors/colors@1.5.0': optional: true @@ -17551,12 +17448,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/expect@1.5.3': - dependencies: - '@vitest/spy': 1.5.3 - '@vitest/utils': 1.5.3 - chai: 4.5.0 - '@vitest/expect@2.1.1': dependencies: '@vitest/spy': 2.1.1 @@ -17586,44 +17477,21 @@ snapshots: dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@1.5.3': - dependencies: - '@vitest/utils': 1.5.3 - p-limit: 5.0.0 - pathe: 1.1.2 - '@vitest/runner@2.1.1': dependencies: '@vitest/utils': 2.1.1 pathe: 1.1.2 - '@vitest/snapshot@1.5.3': - dependencies: - magic-string: 0.30.11 - pathe: 1.1.2 - pretty-format: 29.7.0 - '@vitest/snapshot@2.1.1': dependencies: '@vitest/pretty-format': 2.1.1 magic-string: 0.30.11 pathe: 1.1.2 - '@vitest/spy@1.5.3': - dependencies: - tinyspy: 2.2.1 - '@vitest/spy@2.1.1': dependencies: tinyspy: 3.0.0 - '@vitest/utils@1.5.3': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - '@vitest/utils@2.1.1': dependencies: '@vitest/pretty-format': 2.1.1 @@ -17953,8 +17821,6 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} any-promise@1.3.0: {} @@ -18080,8 +17946,6 @@ snapshots: binaryen: 116.0.0-nightly.20240114 long: 5.2.3 - assertion-error@1.1.0: {} - assertion-error@2.0.1: {} ast-module-types@6.0.0: {} @@ -18463,16 +18327,6 @@ snapshots: ccount@2.0.1: {} - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - chai@5.1.1: dependencies: assertion-error: 2.0.1 @@ -18512,10 +18366,6 @@ snapshots: chardet@0.7.0: {} - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - check-error@2.1.1: {} cheerio-select@2.1.0: @@ -19079,10 +18929,6 @@ snapshots: dependencies: mimic-response: 3.1.0 - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - deep-eql@5.0.2: {} deep-equal@2.2.3: @@ -19258,8 +19104,6 @@ snapshots: diff-match-patch@1.0.5: {} - diff-sequences@29.6.3: {} - dingbat-to-unicode@1.0.1: {} dir-glob@3.0.1: @@ -21393,8 +21237,6 @@ snapshots: js-tokens@4.0.0: {} - js-tokens@9.0.0: {} - js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -21599,11 +21441,6 @@ snapshots: loader-utils@3.3.1: {} - local-pkg@0.5.0: - dependencies: - mlly: 1.7.1 - pkg-types: 1.2.0 - locate-character@3.0.0: {} locate-path@3.0.0: @@ -21696,10 +21533,6 @@ snapshots: option: 0.2.4 underscore: 1.13.6 - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - loupe@3.1.1: dependencies: get-func-name: 2.0.2 @@ -22349,7 +22182,7 @@ snapshots: tapable: 2.2.1 webpack: 5.94.0 - miniflare@3.20240821.0: + miniflare@3.20240909.5: dependencies: '@cspotcode/source-map-support': 0.8.1 acorn: 8.12.1 @@ -22359,7 +22192,7 @@ snapshots: glob-to-regexp: 0.4.1 stoppable: 1.1.0 undici: 5.28.4 - workerd: 1.20240821.1 + workerd: 1.20240909.0 ws: 8.18.0 youch: 3.3.3 zod: 3.23.8 @@ -22820,6 +22653,8 @@ snapshots: ohash@1.1.3: {} + ohash@1.1.4: {} + ollama@0.5.9: dependencies: whatwg-fetch: 3.6.20 @@ -22987,10 +22822,6 @@ snapshots: dependencies: yocto-queue: 1.1.1 - p-limit@5.0.0: - dependencies: - yocto-queue: 1.1.1 - p-locate@3.0.0: dependencies: p-limit: 2.3.0 @@ -23125,16 +22956,12 @@ snapshots: path-to-regexp@2.2.1: {} - path-to-regexp@6.2.2: {} - path-to-regexp@6.3.0: {} path-type@4.0.0: {} pathe@1.1.2: {} - pathval@1.1.1: {} - pathval@2.0.0: {} peek-readable@5.1.1: {} @@ -23591,12 +23418,6 @@ snapshots: lodash: 4.17.21 renderkid: 3.0.0 - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - pretty-ms@7.0.1: dependencies: parse-ms: 2.1.0 @@ -23832,8 +23653,6 @@ snapshots: react-is@16.13.1: {} - react-is@18.3.1: {} - react-json-view-lite@1.4.0(react@18.3.1): dependencies: react: 18.3.1 @@ -24822,10 +24641,6 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@2.1.0: - dependencies: - js-tokens: 9.0.0 - strip-outer@2.0.0: {} strnum@1.0.5: {} @@ -25067,14 +24882,10 @@ snapshots: tinyexec@0.3.0: {} - tinypool@0.8.4: {} - tinypool@1.0.1: {} tinyrainbow@1.2.0: {} - tinyspy@2.2.1: {} - tinyspy@3.0.0: {} tmp@0.0.33: @@ -25201,8 +25012,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-detect@4.1.0: {} - type-fest@0.20.2: {} type-fest@0.21.3: {} @@ -25301,10 +25110,10 @@ snapshots: undici@6.13.0: {} - unenv-nightly@2.0.0-1724863496.70db6f1: + unenv-nightly@2.0.0-20240919-125358-9a64854: dependencies: defu: 6.1.4 - ohash: 1.1.3 + ohash: 1.1.4 pathe: 1.1.2 ufo: 1.5.4 @@ -25468,24 +25277,6 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@1.5.3(@types/node@22.5.5)(terser@5.32.0): - dependencies: - cac: 6.7.14 - debug: 4.3.7 - pathe: 1.1.2 - picocolors: 1.1.0 - vite: 5.4.2(@types/node@22.5.5)(terser@5.32.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - vite-node@2.1.1(@types/node@22.5.4)(terser@5.32.0): dependencies: cac: 6.7.14 @@ -25544,42 +25335,6 @@ snapshots: fsevents: 2.3.3 terser: 5.32.0 - vitest@1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(terser@5.32.0): - dependencies: - '@vitest/expect': 1.5.3 - '@vitest/runner': 1.5.3 - '@vitest/snapshot': 1.5.3 - '@vitest/spy': 1.5.3 - '@vitest/utils': 1.5.3 - acorn-walk: 8.3.3 - chai: 4.5.0 - debug: 4.3.7 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.11 - pathe: 1.1.2 - picocolors: 1.1.0 - std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.9.0 - tinypool: 0.8.4 - vite: 5.4.2(@types/node@22.5.5)(terser@5.32.0) - vite-node: 1.5.3(@types/node@22.5.5)(terser@5.32.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@edge-runtime/vm': 4.0.3 - '@types/node': 22.5.5 - happy-dom: 15.7.4 - transitivePeerDependencies: - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - vitest@2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(msw@2.4.8(typescript@5.6.2))(terser@5.32.0): dependencies: '@vitest/expect': 2.1.1 @@ -25993,36 +25748,36 @@ snapshots: wordwrap@1.0.0: {} - workerd@1.20240821.1: + workerd@1.20240909.0: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20240821.1 - '@cloudflare/workerd-darwin-arm64': 1.20240821.1 - '@cloudflare/workerd-linux-64': 1.20240821.1 - '@cloudflare/workerd-linux-arm64': 1.20240821.1 - '@cloudflare/workerd-windows-64': 1.20240821.1 + '@cloudflare/workerd-darwin-64': 1.20240909.0 + '@cloudflare/workerd-darwin-arm64': 1.20240909.0 + '@cloudflare/workerd-linux-64': 1.20240909.0 + '@cloudflare/workerd-linux-arm64': 1.20240909.0 + '@cloudflare/workerd-windows-64': 1.20240909.0 - wrangler@3.73.0(@cloudflare/workers-types@4.20240821.1): + wrangler@3.78.8(@cloudflare/workers-types@4.20240924.0): dependencies: '@cloudflare/kv-asset-handler': 0.3.4 - '@cloudflare/workers-shared': 0.4.1 + '@cloudflare/workers-shared': 0.5.4 '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) blake3-wasm: 2.1.5 chokidar: 3.6.0 date-fns: 3.6.0 esbuild: 0.17.19 - miniflare: 3.20240821.0 + miniflare: 3.20240909.5 nanoid: 3.3.7 - path-to-regexp: 6.2.2 + path-to-regexp: 6.3.0 resolve: 1.22.8 resolve.exports: 2.0.2 selfsigned: 2.4.1 source-map: 0.6.1 - unenv: unenv-nightly@2.0.0-1724863496.70db6f1 - workerd: 1.20240821.1 + unenv: unenv-nightly@2.0.0-20240919-125358-9a64854 + workerd: 1.20240909.0 xxhash-wasm: 1.0.2 optionalDependencies: - '@cloudflare/workers-types': 4.20240821.1 + '@cloudflare/workers-types': 4.20240924.0 fsevents: 2.3.3 transitivePeerDependencies: - bufferutil -- GitLab