From 08a763c6ce1c1e724f6ed383eed4f6ebc30047af Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 28 Dec 2025 23:40:13 +0000 Subject: [PATCH 1/5] Initial plan From 63cc8fbb7a92e0cb084f069e76ac73ca293f0ff3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 28 Dec 2025 23:47:04 +0000 Subject: [PATCH 2/5] Rename FileLoaderTask to FileLoaderServerTask to fix export ambiguity Co-authored-by: sroussey <127349+sroussey@users.noreply.github.com> --- .../tasks/src/task/FileLoaderTask.server.ts | 12 ++-- .../test/task/FileLoaderTask.server.test.ts | 58 +++++++++---------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/packages/tasks/src/task/FileLoaderTask.server.ts b/packages/tasks/src/task/FileLoaderTask.server.ts index 83ee8b58..d1c24e36 100644 --- a/packages/tasks/src/task/FileLoaderTask.server.ts +++ b/packages/tasks/src/task/FileLoaderTask.server.ts @@ -15,7 +15,7 @@ import { import { readFile } from "node:fs/promises"; import { - FileLoaderTask as BaseFileLoaderTask, + FileLoaderTask, FileLoaderTaskInput, FileLoaderTaskOutput, } from "./FileLoaderTask"; @@ -27,7 +27,7 @@ import { * * For cross-platform document loading (including browser), use FileLoaderTask with URLs. */ -export class FileLoaderTask extends BaseFileLoaderTask { +export class FileLoaderServerTask extends FileLoaderTask { async execute( input: FileLoaderTaskInput, context: IExecuteContext @@ -211,10 +211,10 @@ export class FileLoaderTask extends BaseFileLoaderTask { } // override the base registration -TaskRegistry.registerTask(FileLoaderTask); +TaskRegistry.registerTask(FileLoaderServerTask); -export const fileLoader = (input: FileLoaderTaskInput, config?: JobQueueTaskConfig) => { - return new FileLoaderTask(input, config).run(); +export const fileLoaderServer = (input: FileLoaderTaskInput, config?: JobQueueTaskConfig) => { + return new FileLoaderServerTask(input, config).run(); }; declare module "@workglow/task-graph" { @@ -223,4 +223,4 @@ declare module "@workglow/task-graph" { } } -Workflow.prototype.fileLoaderServer = CreateWorkflow(FileLoaderTask); +Workflow.prototype.fileLoaderServer = CreateWorkflow(FileLoaderServerTask); diff --git a/packages/test/src/test/task/FileLoaderTask.server.test.ts b/packages/test/src/test/task/FileLoaderTask.server.test.ts index 2bf35111..ef10185e 100644 --- a/packages/test/src/test/task/FileLoaderTask.server.test.ts +++ b/packages/test/src/test/task/FileLoaderTask.server.test.ts @@ -5,13 +5,13 @@ */ // Import directly from source to avoid ambiguous export issue -import { FileLoaderTask } from "@workglow/tasks"; +import { FileLoaderServerTask } from "@workglow/tasks"; import { existsSync, mkdirSync, rmSync, writeFileSync } from "fs"; import { tmpdir } from "os"; import { join } from "path"; import { afterEach, beforeEach, describe, expect, test } from "vitest"; -describe("FileLoaderTask (server - local files)", () => { +describe("FileLoaderServerTask (server - local files)", () => { let testDir: string; beforeEach(() => { @@ -34,7 +34,7 @@ describe("FileLoaderTask (server - local files)", () => { const filePath = join(testDir, "test.txt"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "text" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "text" }); const result = await task.run(); expect(result.text).toBe(content); @@ -51,7 +51,7 @@ describe("FileLoaderTask (server - local files)", () => { const filePath = join(testDir, "test.txt"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "text" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "text" }); const result = await task.run(); expect(result.text).toBe(content); @@ -63,7 +63,7 @@ describe("FileLoaderTask (server - local files)", () => { const filePath = join(testDir, "test.md"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.text).toBe(content); @@ -76,7 +76,7 @@ describe("FileLoaderTask (server - local files)", () => { const filePath = join(testDir, "test.json"); writeFileSync(filePath, JSON.stringify(jsonData), "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.json).toEqual(jsonData); @@ -89,7 +89,7 @@ describe("FileLoaderTask (server - local files)", () => { const filePath = join(testDir, "invalid.json"); writeFileSync(filePath, invalidJson, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "json" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "json" }); await expect(task.run()).rejects.toThrow(/Failed to parse JSON|JSON Parse error/); }); @@ -102,7 +102,7 @@ Bob,35,Paris`; const filePath = join(testDir, "test.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.metadata.format).toBe("csv"); @@ -121,7 +121,7 @@ Bob,35,Paris`; const filePath = join(testDir, "products.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}` }); + const task = new FileLoaderServerTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.csv).toHaveLength(2); @@ -142,7 +142,7 @@ Bob,35,Paris`; const filePath = join(testDir, "test.html"); writeFileSync(filePath, htmlContent, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.text).toBe(htmlContent); @@ -155,7 +155,7 @@ Bob,35,Paris`; const filePath = join(testDir, "test.htm"); writeFileSync(filePath, htmlContent, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.metadata.format).toBe("html"); @@ -168,7 +168,7 @@ Bob,35,Paris`; const filePath = join(testDir, "test.png"); writeFileSync(filePath, imageData); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.image).toContain("data:image/png;base64,"); @@ -194,7 +194,7 @@ Bob,35,Paris`; const filePath = join(testDir, `test.${ext}`); writeFileSync(filePath, imageData); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.metadata.format).toBe("image"); @@ -210,7 +210,7 @@ Bob,35,Paris`; const filePath = join(testDir, "test.pdf"); writeFileSync(filePath, pdfData); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.pdf).toContain("data:application/pdf;base64,"); @@ -225,7 +225,7 @@ Bob,35,Paris`; writeFileSync(filePath, textContent, "utf-8"); // Even though file extension is .json, force it as text - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "text" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "text" }); const result = await task.run(); expect(result.metadata.format).toBe("text"); @@ -237,7 +237,7 @@ Bob,35,Paris`; const filePath = join(testDir, "empty.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}` }); + const task = new FileLoaderServerTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.csv).toEqual([]); @@ -248,7 +248,7 @@ Bob,35,Paris`; const filePath = join(testDir, "TEST.JSON"); writeFileSync(filePath, JSON.stringify(jsonData), "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.metadata.format).toBe("json"); @@ -260,7 +260,7 @@ Bob,35,Paris`; const filePath = join(testDir, "file.xyz"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.metadata.format).toBe("text"); @@ -275,7 +275,7 @@ Bob,35,`; const filePath = join(testDir, "sparse.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}` }); + const task = new FileLoaderServerTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.csv).toHaveLength(3); @@ -289,7 +289,7 @@ Bob,35,`; const filePath = join(testDir, "file.txt"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "text" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "text" }); const result = await task.run(); expect(result.metadata).toHaveProperty("url", filePath); @@ -313,7 +313,7 @@ Bob,35,`; const filePath = join(testDir, "complex.json"); writeFileSync(filePath, JSON.stringify(jsonData), "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}` }); + const task = new FileLoaderServerTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.json).toEqual(jsonData); @@ -331,7 +331,7 @@ Bob,35,`; const filePath = join(specialDir, "file-name.txt"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}` }); + const task = new FileLoaderServerTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.text).toBe(content); @@ -347,7 +347,7 @@ Bob,35,`; const filePath = join(testDir, "large.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}` }); + const task = new FileLoaderServerTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.csv).toHaveLength(rows); @@ -365,7 +365,7 @@ Bob,35,`; const filePath = join(testDir, "binary.png"); writeFileSync(filePath, binaryData); - const task = new FileLoaderTask({ url: `file://${filePath}` }); + const task = new FileLoaderServerTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.image).toContain("data:image/png;base64,"); @@ -380,7 +380,7 @@ Bob,35,`; const filePath = join(testDir, "progress.txt"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}` }); + const task = new FileLoaderServerTask({ url: `file://${filePath}` }); // Mock the task runner's updateProgress by accessing the task's progress property // Note: Progress updates happen internally via context.updateProgress @@ -397,7 +397,7 @@ Bob,35,`; writeFileSync(filePath, content, "utf-8"); const abortController = new AbortController(); - const task = new FileLoaderTask({ url: `file://${filePath}` }); + const task = new FileLoaderServerTask({ url: `file://${filePath}` }); // Abort immediately abortController.abort(); @@ -412,7 +412,7 @@ Bob,35,`; const filePath = join(testDir, "windows.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}` }); + const task = new FileLoaderServerTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.csv).toHaveLength(2); @@ -425,7 +425,7 @@ Bob,35,`; const filePath = join(testDir, "mixed.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}` }); + const task = new FileLoaderServerTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.csv).toHaveLength(2); @@ -436,7 +436,7 @@ Bob,35,`; const filePath = join(testDir, "test.markdown"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.metadata.format).toBe("markdown"); From 2cc0a008040605605930e8ade28f0c4516adb6db Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 28 Dec 2025 23:49:20 +0000 Subject: [PATCH 3/5] Re-export FileLoaderTask types from server module for convenience Co-authored-by: sroussey <127349+sroussey@users.noreply.github.com> --- packages/tasks/src/task/FileLoaderTask.server.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/tasks/src/task/FileLoaderTask.server.ts b/packages/tasks/src/task/FileLoaderTask.server.ts index d1c24e36..502031c0 100644 --- a/packages/tasks/src/task/FileLoaderTask.server.ts +++ b/packages/tasks/src/task/FileLoaderTask.server.ts @@ -20,6 +20,9 @@ import { FileLoaderTaskOutput, } from "./FileLoaderTask"; +// Re-export types for convenience +export type { FileLoaderTaskInput, FileLoaderTaskOutput }; + /** * Server-only task for loading documents from the filesystem. * Uses Node.js/Bun file APIs directly for better performance. From c0cc2d5017bc1a444da8f9e4208ff11fcb706582 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 28 Dec 2025 23:51:11 +0000 Subject: [PATCH 4/5] Add clarifying comment about task registry override behavior Co-authored-by: sroussey <127349+sroussey@users.noreply.github.com> --- packages/tasks/src/task/FileLoaderTask.server.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/tasks/src/task/FileLoaderTask.server.ts b/packages/tasks/src/task/FileLoaderTask.server.ts index 502031c0..bbdeb8c4 100644 --- a/packages/tasks/src/task/FileLoaderTask.server.ts +++ b/packages/tasks/src/task/FileLoaderTask.server.ts @@ -213,7 +213,10 @@ export class FileLoaderServerTask extends FileLoaderTask { } } -// override the base registration +// Override the base registration with the server implementation. +// Both FileLoaderTask and FileLoaderServerTask share the same static type "FileLoaderTask", +// so this registration replaces the base class in the TaskRegistry for server environments. +// This allows seamless environment-specific behavior without code changes. TaskRegistry.registerTask(FileLoaderServerTask); export const fileLoaderServer = (input: FileLoaderTaskInput, config?: JobQueueTaskConfig) => { From 82980667c05cb814f02809bd13b8cc4bba02ab12 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 28 Dec 2025 23:56:24 +0000 Subject: [PATCH 5/5] Fix export ambiguity by importing from source files in tests Co-authored-by: sroussey <127349+sroussey@users.noreply.github.com> --- .../tasks/src/task/FileLoaderTask.server.ts | 20 +++---- .../test/task/FileLoaderTask.server.test.ts | 58 +++++++++---------- .../test/src/test/task/FileLoaderTask.test.ts | 2 +- 3 files changed, 37 insertions(+), 43 deletions(-) diff --git a/packages/tasks/src/task/FileLoaderTask.server.ts b/packages/tasks/src/task/FileLoaderTask.server.ts index bbdeb8c4..83ee8b58 100644 --- a/packages/tasks/src/task/FileLoaderTask.server.ts +++ b/packages/tasks/src/task/FileLoaderTask.server.ts @@ -15,14 +15,11 @@ import { import { readFile } from "node:fs/promises"; import { - FileLoaderTask, + FileLoaderTask as BaseFileLoaderTask, FileLoaderTaskInput, FileLoaderTaskOutput, } from "./FileLoaderTask"; -// Re-export types for convenience -export type { FileLoaderTaskInput, FileLoaderTaskOutput }; - /** * Server-only task for loading documents from the filesystem. * Uses Node.js/Bun file APIs directly for better performance. @@ -30,7 +27,7 @@ export type { FileLoaderTaskInput, FileLoaderTaskOutput }; * * For cross-platform document loading (including browser), use FileLoaderTask with URLs. */ -export class FileLoaderServerTask extends FileLoaderTask { +export class FileLoaderTask extends BaseFileLoaderTask { async execute( input: FileLoaderTaskInput, context: IExecuteContext @@ -213,14 +210,11 @@ export class FileLoaderServerTask extends FileLoaderTask { } } -// Override the base registration with the server implementation. -// Both FileLoaderTask and FileLoaderServerTask share the same static type "FileLoaderTask", -// so this registration replaces the base class in the TaskRegistry for server environments. -// This allows seamless environment-specific behavior without code changes. -TaskRegistry.registerTask(FileLoaderServerTask); +// override the base registration +TaskRegistry.registerTask(FileLoaderTask); -export const fileLoaderServer = (input: FileLoaderTaskInput, config?: JobQueueTaskConfig) => { - return new FileLoaderServerTask(input, config).run(); +export const fileLoader = (input: FileLoaderTaskInput, config?: JobQueueTaskConfig) => { + return new FileLoaderTask(input, config).run(); }; declare module "@workglow/task-graph" { @@ -229,4 +223,4 @@ declare module "@workglow/task-graph" { } } -Workflow.prototype.fileLoaderServer = CreateWorkflow(FileLoaderServerTask); +Workflow.prototype.fileLoaderServer = CreateWorkflow(FileLoaderTask); diff --git a/packages/test/src/test/task/FileLoaderTask.server.test.ts b/packages/test/src/test/task/FileLoaderTask.server.test.ts index ef10185e..5f04846f 100644 --- a/packages/test/src/test/task/FileLoaderTask.server.test.ts +++ b/packages/test/src/test/task/FileLoaderTask.server.test.ts @@ -5,13 +5,13 @@ */ // Import directly from source to avoid ambiguous export issue -import { FileLoaderServerTask } from "@workglow/tasks"; +import { FileLoaderTask } from "@workglow/tasks/src/task/FileLoaderTask.server"; import { existsSync, mkdirSync, rmSync, writeFileSync } from "fs"; import { tmpdir } from "os"; import { join } from "path"; import { afterEach, beforeEach, describe, expect, test } from "vitest"; -describe("FileLoaderServerTask (server - local files)", () => { +describe("FileLoaderTask (server - local files)", () => { let testDir: string; beforeEach(() => { @@ -34,7 +34,7 @@ describe("FileLoaderServerTask (server - local files)", () => { const filePath = join(testDir, "test.txt"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "text" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "text" }); const result = await task.run(); expect(result.text).toBe(content); @@ -51,7 +51,7 @@ describe("FileLoaderServerTask (server - local files)", () => { const filePath = join(testDir, "test.txt"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "text" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "text" }); const result = await task.run(); expect(result.text).toBe(content); @@ -63,7 +63,7 @@ describe("FileLoaderServerTask (server - local files)", () => { const filePath = join(testDir, "test.md"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.text).toBe(content); @@ -76,7 +76,7 @@ describe("FileLoaderServerTask (server - local files)", () => { const filePath = join(testDir, "test.json"); writeFileSync(filePath, JSON.stringify(jsonData), "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.json).toEqual(jsonData); @@ -89,7 +89,7 @@ describe("FileLoaderServerTask (server - local files)", () => { const filePath = join(testDir, "invalid.json"); writeFileSync(filePath, invalidJson, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "json" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "json" }); await expect(task.run()).rejects.toThrow(/Failed to parse JSON|JSON Parse error/); }); @@ -102,7 +102,7 @@ Bob,35,Paris`; const filePath = join(testDir, "test.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.metadata.format).toBe("csv"); @@ -121,7 +121,7 @@ Bob,35,Paris`; const filePath = join(testDir, "products.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}` }); + const task = new FileLoaderTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.csv).toHaveLength(2); @@ -142,7 +142,7 @@ Bob,35,Paris`; const filePath = join(testDir, "test.html"); writeFileSync(filePath, htmlContent, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.text).toBe(htmlContent); @@ -155,7 +155,7 @@ Bob,35,Paris`; const filePath = join(testDir, "test.htm"); writeFileSync(filePath, htmlContent, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.metadata.format).toBe("html"); @@ -168,7 +168,7 @@ Bob,35,Paris`; const filePath = join(testDir, "test.png"); writeFileSync(filePath, imageData); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.image).toContain("data:image/png;base64,"); @@ -194,7 +194,7 @@ Bob,35,Paris`; const filePath = join(testDir, `test.${ext}`); writeFileSync(filePath, imageData); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.metadata.format).toBe("image"); @@ -210,7 +210,7 @@ Bob,35,Paris`; const filePath = join(testDir, "test.pdf"); writeFileSync(filePath, pdfData); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.pdf).toContain("data:application/pdf;base64,"); @@ -225,7 +225,7 @@ Bob,35,Paris`; writeFileSync(filePath, textContent, "utf-8"); // Even though file extension is .json, force it as text - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "text" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "text" }); const result = await task.run(); expect(result.metadata.format).toBe("text"); @@ -237,7 +237,7 @@ Bob,35,Paris`; const filePath = join(testDir, "empty.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}` }); + const task = new FileLoaderTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.csv).toEqual([]); @@ -248,7 +248,7 @@ Bob,35,Paris`; const filePath = join(testDir, "TEST.JSON"); writeFileSync(filePath, JSON.stringify(jsonData), "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.metadata.format).toBe("json"); @@ -260,7 +260,7 @@ Bob,35,Paris`; const filePath = join(testDir, "file.xyz"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.metadata.format).toBe("text"); @@ -275,7 +275,7 @@ Bob,35,`; const filePath = join(testDir, "sparse.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}` }); + const task = new FileLoaderTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.csv).toHaveLength(3); @@ -289,7 +289,7 @@ Bob,35,`; const filePath = join(testDir, "file.txt"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "text" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "text" }); const result = await task.run(); expect(result.metadata).toHaveProperty("url", filePath); @@ -313,7 +313,7 @@ Bob,35,`; const filePath = join(testDir, "complex.json"); writeFileSync(filePath, JSON.stringify(jsonData), "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}` }); + const task = new FileLoaderTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.json).toEqual(jsonData); @@ -331,7 +331,7 @@ Bob,35,`; const filePath = join(specialDir, "file-name.txt"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}` }); + const task = new FileLoaderTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.text).toBe(content); @@ -347,7 +347,7 @@ Bob,35,`; const filePath = join(testDir, "large.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}` }); + const task = new FileLoaderTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.csv).toHaveLength(rows); @@ -365,7 +365,7 @@ Bob,35,`; const filePath = join(testDir, "binary.png"); writeFileSync(filePath, binaryData); - const task = new FileLoaderServerTask({ url: `file://${filePath}` }); + const task = new FileLoaderTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.image).toContain("data:image/png;base64,"); @@ -380,7 +380,7 @@ Bob,35,`; const filePath = join(testDir, "progress.txt"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}` }); + const task = new FileLoaderTask({ url: `file://${filePath}` }); // Mock the task runner's updateProgress by accessing the task's progress property // Note: Progress updates happen internally via context.updateProgress @@ -397,7 +397,7 @@ Bob,35,`; writeFileSync(filePath, content, "utf-8"); const abortController = new AbortController(); - const task = new FileLoaderServerTask({ url: `file://${filePath}` }); + const task = new FileLoaderTask({ url: `file://${filePath}` }); // Abort immediately abortController.abort(); @@ -412,7 +412,7 @@ Bob,35,`; const filePath = join(testDir, "windows.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}` }); + const task = new FileLoaderTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.csv).toHaveLength(2); @@ -425,7 +425,7 @@ Bob,35,`; const filePath = join(testDir, "mixed.csv"); writeFileSync(filePath, csvContent, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}` }); + const task = new FileLoaderTask({ url: `file://${filePath}` }); const result = await task.run(); expect(result.csv).toHaveLength(2); @@ -436,7 +436,7 @@ Bob,35,`; const filePath = join(testDir, "test.markdown"); writeFileSync(filePath, content, "utf-8"); - const task = new FileLoaderServerTask({ url: `file://${filePath}`, format: "auto" }); + const task = new FileLoaderTask({ url: `file://${filePath}`, format: "auto" }); const result = await task.run(); expect(result.metadata.format).toBe("markdown"); diff --git a/packages/test/src/test/task/FileLoaderTask.test.ts b/packages/test/src/test/task/FileLoaderTask.test.ts index 756ccb57..89525d67 100644 --- a/packages/test/src/test/task/FileLoaderTask.test.ts +++ b/packages/test/src/test/task/FileLoaderTask.test.ts @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { FileLoaderTask, FileLoaderTaskInput, FileLoaderTaskOutput } from "@workglow/tasks"; +import { FileLoaderTask, FileLoaderTaskInput, FileLoaderTaskOutput } from "@workglow/tasks/src/task/FileLoaderTask"; import { afterAll, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; const mock = vi.fn;