From 75b70e5824310ccc97b0ab7b283cdc8781bd3d0c Mon Sep 17 00:00:00 2001 From: Alex Yang <himself65@outlook.com> Date: Tue, 3 Sep 2024 18:01:42 -0700 Subject: [PATCH] fix: remove Stream API polyfill (#1149) --- examples/agent/openai-task.ts | 1 - examples/agent/react-task.ts | 1 - examples/tsconfig.json | 2 -- packages/env/src/index.ts | 8 -------- packages/env/src/polyfill.ts | 8 -------- .../e2e/examples/cloudflare-worker-agent/src/index.ts | 2 -- packages/llamaindex/e2e/tsconfig.json | 2 +- packages/llamaindex/src/agent/base.ts | 6 +++--- packages/llamaindex/src/agent/react.ts | 2 +- packages/llamaindex/src/agent/types.ts | 1 - packages/llamaindex/src/agent/utils.ts | 1 - packages/llamaindex/src/internal/utils.ts | 4 ++++ 12 files changed, 9 insertions(+), 29 deletions(-) diff --git a/examples/agent/openai-task.ts b/examples/agent/openai-task.ts index 3a242c15d..22a602d93 100644 --- a/examples/agent/openai-task.ts +++ b/examples/agent/openai-task.ts @@ -1,5 +1,4 @@ import { ChatResponseChunk, OpenAIAgent } from "llamaindex"; -import { ReadableStream } from "node:stream/web"; import { getCurrentIDTool, getUserInfoTool, diff --git a/examples/agent/react-task.ts b/examples/agent/react-task.ts index fdbdeec01..4c4835bc4 100644 --- a/examples/agent/react-task.ts +++ b/examples/agent/react-task.ts @@ -1,5 +1,4 @@ import { ChatResponseChunk, ReActAgent } from "llamaindex"; -import { ReadableStream } from "node:stream/web"; import { getCurrentIDTool, getUserInfoTool, diff --git a/examples/tsconfig.json b/examples/tsconfig.json index 600c6fe72..8dcc2b578 100644 --- a/examples/tsconfig.json +++ b/examples/tsconfig.json @@ -7,8 +7,6 @@ "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true, - "lib": ["ES2022"], - "types": ["node"], "outDir": "./lib", "tsBuildInfoFile": "./lib/.tsbuildinfo", "incremental": true, diff --git a/packages/env/src/index.ts b/packages/env/src/index.ts index b7895f88c..e3d20b159 100644 --- a/packages/env/src/index.ts +++ b/packages/env/src/index.ts @@ -16,11 +16,6 @@ import { createHash, randomUUID } from "node:crypto"; import { EOL } from "node:os"; import path from "node:path"; import { Readable } from "node:stream"; -import { - ReadableStream, - TransformStream, - WritableStream, -} from "node:stream/web"; import { fileURLToPath } from "node:url"; import { createWriteStream, fs } from "./fs/node.js"; import type { SHA256 } from "./polyfill.js"; @@ -48,7 +43,4 @@ export { path, randomUUID, Readable, - ReadableStream, - TransformStream, - WritableStream, }; diff --git a/packages/env/src/polyfill.ts b/packages/env/src/polyfill.ts index 9f47010be..c9294b7f7 100644 --- a/packages/env/src/polyfill.ts +++ b/packages/env/src/polyfill.ts @@ -46,12 +46,4 @@ export function randomUUID(): string { return crypto.randomUUID(); } -// @ts-expect-error -const ReadableStream = globalThis.ReadableStream; -// @ts-expect-error -const TransformStream = globalThis.TransformStream; -// @ts-expect-error -const WritableStream = globalThis.WritableStream; - export { AsyncLocalStorage, CustomEvent, getEnv, setEnvs } from "./utils.js"; -export { ReadableStream, TransformStream, WritableStream }; 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 d96fe9d74..8a283cc6b 100644 --- a/packages/llamaindex/e2e/examples/cloudflare-worker-agent/src/index.ts +++ b/packages/llamaindex/e2e/examples/cloudflare-worker-agent/src/index.ts @@ -18,14 +18,12 @@ export default { console.log(2); const textEncoder = new TextEncoder(); const response = responseStream.pipeThrough<Uint8Array>( - // @ts-expect-error: see https://github.com/cloudflare/workerd/issues/2067 new TransformStream({ transform: (chunk, controller) => { controller.enqueue(textEncoder.encode(chunk.delta)); }, }), ); - // @ts-expect-error: see https://github.com/cloudflare/workerd/issues/2067 return new Response(response); }, }; diff --git a/packages/llamaindex/e2e/tsconfig.json b/packages/llamaindex/e2e/tsconfig.json index de19b0f45..cd5c86ed7 100644 --- a/packages/llamaindex/e2e/tsconfig.json +++ b/packages/llamaindex/e2e/tsconfig.json @@ -5,7 +5,7 @@ "module": "node16", "moduleResolution": "node16", "target": "ESNext", - "lib": ["ES2022"], + "lib": ["ES2022", "DOM.AsyncIterable"], "types": ["node"] }, "include": ["./node", "./mock-module.js", "./mock-register.js", "./fixtures"], diff --git a/packages/llamaindex/src/agent/base.ts b/packages/llamaindex/src/agent/base.ts index 27e8af5c1..6971b022e 100644 --- a/packages/llamaindex/src/agent/base.ts +++ b/packages/llamaindex/src/agent/base.ts @@ -7,7 +7,7 @@ import type { } from "@llamaindex/core/llms"; import { EngineResponse } from "@llamaindex/core/schema"; import { wrapEventCaller } from "@llamaindex/core/utils"; -import { ReadableStream, TransformStream, randomUUID } from "@llamaindex/env"; +import { randomUUID } from "@llamaindex/env"; import { ChatHistory } from "../ChatHistory.js"; import { Settings } from "../Settings.js"; import { @@ -16,7 +16,7 @@ import { type ChatEngineParamsStreaming, } from "../engines/chat/index.js"; import { consoleLogger, emptyLogger } from "../internal/logger.js"; -import { isAsyncIterable } from "../internal/utils.js"; +import { isReadableStream } from "../internal/utils.js"; import { ObjectRetriever } from "../objects/index.js"; import type { AgentTaskContext, @@ -374,7 +374,7 @@ export abstract class AgentRunner< this.#chatHistory = [...stepOutput.taskStep.context.store.messages]; if (stepOutput.isLast) { const { output } = stepOutput; - if (isAsyncIterable(output)) { + if (isReadableStream(output)) { return output.pipeThrough<EngineResponse>( new TransformStream({ transform(chunk, controller) { diff --git a/packages/llamaindex/src/agent/react.ts b/packages/llamaindex/src/agent/react.ts index 866a5faa9..47bdc9c39 100644 --- a/packages/llamaindex/src/agent/react.ts +++ b/packages/llamaindex/src/agent/react.ts @@ -7,7 +7,7 @@ import type { LLM, } from "@llamaindex/core/llms"; import { extractText } from "@llamaindex/core/utils"; -import { randomUUID, ReadableStream } from "@llamaindex/env"; +import { randomUUID } from "@llamaindex/env"; import { getReACTAgentSystemHeader } from "../internal/prompt/react.js"; import { isAsyncIterable, diff --git a/packages/llamaindex/src/agent/types.ts b/packages/llamaindex/src/agent/types.ts index d1ee13aa8..40765139c 100644 --- a/packages/llamaindex/src/agent/types.ts +++ b/packages/llamaindex/src/agent/types.ts @@ -7,7 +7,6 @@ import type { MessageContent, ToolOutput, } from "@llamaindex/core/llms"; -import { ReadableStream } from "@llamaindex/env"; import type { Logger } from "../internal/logger.js"; import type { UUID } from "../types.js"; diff --git a/packages/llamaindex/src/agent/utils.ts b/packages/llamaindex/src/agent/utils.ts index ff8711007..9e6502e61 100644 --- a/packages/llamaindex/src/agent/utils.ts +++ b/packages/llamaindex/src/agent/utils.ts @@ -16,7 +16,6 @@ import type { ToolOutput, } from "@llamaindex/core/llms"; import { baseToolWithCallSchema } from "@llamaindex/core/schema"; -import { ReadableStream } from "@llamaindex/env"; import { z } from "zod"; import type { Logger } from "../internal/logger.js"; import { diff --git a/packages/llamaindex/src/internal/utils.ts b/packages/llamaindex/src/internal/utils.ts index ab144a3cf..10a06b394 100644 --- a/packages/llamaindex/src/internal/utils.ts +++ b/packages/llamaindex/src/internal/utils.ts @@ -10,6 +10,10 @@ export const isAsyncIterable = ( return obj != null && typeof obj === "object" && Symbol.asyncIterator in obj; }; +export const isReadableStream = (obj: unknown): obj is ReadableStream => { + return obj instanceof ReadableStream; +}; + export const isIterable = (obj: unknown): obj is Iterable<unknown> => { return obj != null && typeof obj === "object" && Symbol.iterator in obj; }; -- GitLab