@workglow/ai 0.0.98 → 0.0.100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,27 +1,28 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/job/AiJob.ts", "../src/provider/AiProviderRegistry.ts", "../src/model/InMemoryModelRepository.ts", "../src/model/ModelRepository.ts", "../src/model/ModelSchema.ts", "../src/model/ModelRegistry.ts", "../src/provider/AiProvider.ts", "../src/queue/createDefaultQueue.ts", "../src/task/index.ts", "../src/task/BackgroundRemovalTask.ts", "../src/task/base/AiTaskSchemas.ts", "../src/task/base/AiVisionTask.ts", "../src/task/base/AiTask.ts", "../src/task/ChunkRetrievalTask.ts", "../src/task/TextEmbeddingTask.ts", "../src/task/ChunkToVectorTask.ts", "../src/task/ChunkVectorHybridSearchTask.ts", "../src/task/ChunkVectorSearchTask.ts", "../src/task/ChunkVectorUpsertTask.ts", "../src/task/ContextBuilderTask.ts", "../src/task/DocumentEnricherTask.ts", "../src/task/TextNamedEntityRecognitionTask.ts", "../src/task/TextSummaryTask.ts", "../src/task/base/StreamingAiTask.ts", "../src/task/DownloadModelTask.ts", "../src/task/FaceDetectorTask.ts", "../src/task/FaceLandmarkerTask.ts", "../src/task/GestureRecognizerTask.ts", "../src/task/HandLandmarkerTask.ts", "../src/task/HierarchicalChunkerTask.ts", "../src/task/HierarchyJoinTask.ts", "../src/task/ImageClassificationTask.ts", "../src/task/ImageEmbeddingTask.ts", "../src/task/ImageSegmentationTask.ts", "../src/task/ImageToTextTask.ts", "../src/task/ObjectDetectionTask.ts", "../src/task/PoseLandmarkerTask.ts", "../src/task/QueryExpanderTask.ts", "../src/task/RerankerTask.ts", "../src/task/TextClassificationTask.ts", "../src/task/StructuralParserTask.ts", "../src/task/TextChunkerTask.ts", "../src/task/TextFillMaskTask.ts", "../src/task/TextGenerationTask.ts", "../src/task/TextLanguageDetectionTask.ts", "../src/task/TextQuestionAnswerTask.ts", "../src/task/TextRewriterTask.ts", "../src/task/TextTranslationTask.ts", "../src/task/TopicSegmenterTask.ts", "../src/task/UnloadModelTask.ts", "../src/task/VectorQuantizeTask.ts", "../src/task/VectorSimilarityTask.ts"],
3
+ "sources": ["../src/job/AiJob.ts", "../src/provider/AiProviderRegistry.ts", "../src/model/InMemoryModelRepository.ts", "../src/model/ModelRepository.ts", "../src/model/ModelSchema.ts", "../src/model/ModelRegistry.ts", "../src/provider/AiProvider.ts", "../src/queue/createDefaultQueue.ts", "../src/task/index.ts", "../src/task/BackgroundRemovalTask.ts", "../src/task/base/AiTaskSchemas.ts", "../src/task/base/AiVisionTask.ts", "../src/task/base/AiTask.ts", "../src/task/ChunkRetrievalTask.ts", "../src/task/TextEmbeddingTask.ts", "../src/task/ChunkToVectorTask.ts", "../src/task/ChunkVectorHybridSearchTask.ts", "../src/task/ChunkVectorSearchTask.ts", "../src/task/ChunkVectorUpsertTask.ts", "../src/task/ContextBuilderTask.ts", "../src/task/CountTokensTask.ts", "../src/task/DocumentEnricherTask.ts", "../src/task/TextNamedEntityRecognitionTask.ts", "../src/task/TextSummaryTask.ts", "../src/task/base/StreamingAiTask.ts", "../src/task/DownloadModelTask.ts", "../src/task/FaceDetectorTask.ts", "../src/task/FaceLandmarkerTask.ts", "../src/task/GestureRecognizerTask.ts", "../src/task/HandLandmarkerTask.ts", "../src/task/HierarchicalChunkerTask.ts", "../src/task/HierarchyJoinTask.ts", "../src/task/ImageClassificationTask.ts", "../src/task/ImageEmbeddingTask.ts", "../src/task/ImageSegmentationTask.ts", "../src/task/ImageToTextTask.ts", "../src/task/ObjectDetectionTask.ts", "../src/task/PoseLandmarkerTask.ts", "../src/task/QueryExpanderTask.ts", "../src/task/RerankerTask.ts", "../src/task/TextClassificationTask.ts", "../src/task/StructuralParserTask.ts", "../src/task/TextChunkerTask.ts", "../src/task/TextFillMaskTask.ts", "../src/task/TextGenerationTask.ts", "../src/task/TextLanguageDetectionTask.ts", "../src/task/TextQuestionAnswerTask.ts", "../src/task/TextRewriterTask.ts", "../src/task/TextTranslationTask.ts", "../src/task/TopicSegmenterTask.ts", "../src/task/UnloadModelTask.ts", "../src/task/VectorQuantizeTask.ts", "../src/task/VectorSimilarityTask.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AbortSignalJobError,\n IJobExecuteContext,\n Job,\n JobStatus,\n PermanentJobError,\n} from \"@workglow/job-queue\";\nimport { TaskInput, TaskOutput, type StreamEvent } from \"@workglow/task-graph\";\nimport type { ModelConfig } from \"../model/ModelSchema\";\nimport { getAiProviderRegistry } from \"../provider/AiProviderRegistry\";\n\n/**\n * Input data for the AiJob\n */\nexport interface AiJobInput<Input extends TaskInput = TaskInput> {\n taskType: string;\n aiProvider: string;\n taskInput: Input & { model: ModelConfig };\n}\n\n/**\n * Extends the base Job class to provide custom execution functionality\n * through a provided function.\n */\nexport class AiJob<\n Input extends AiJobInput<TaskInput> = AiJobInput<TaskInput>,\n Output extends TaskOutput = TaskOutput,\n> extends Job<Input, Output> {\n /**\n * Executes the job using the provided function.\n */\n async execute(input: Input, context: IJobExecuteContext): Promise<Output> {\n if (context.signal.aborted || this.status === JobStatus.ABORTING) {\n throw new AbortSignalJobError(\"Abort signal aborted before execution of job\");\n }\n\n let abortHandler: (() => void) | undefined;\n\n try {\n const abortPromise = new Promise<never>((_resolve, reject) => {\n const handler = () => {\n reject(new AbortSignalJobError(\"Abort signal seen, ending job\"));\n };\n\n context.signal.addEventListener(\"abort\", handler, { once: true });\n abortHandler = () => context.signal.removeEventListener(\"abort\", handler);\n });\n\n const runFn = async () => {\n const fn = getAiProviderRegistry().getDirectRunFn<Input[\"taskInput\"], Output>(\n input.aiProvider,\n input.taskType\n );\n if (!fn) {\n throw new PermanentJobError(\n `No run function found for task type ${input.taskType} and model provider ${input.aiProvider}`\n );\n }\n const model = input.taskInput.model;\n if (context.signal?.aborted) {\n throw new AbortSignalJobError(\"Job aborted\");\n }\n return await fn(input.taskInput, model, context.updateProgress, context.signal);\n };\n const runFnPromise = runFn();\n\n return await Promise.race([runFnPromise, abortPromise]);\n } finally {\n // Clean up the abort event listener to prevent memory leaks\n if (abortHandler) {\n abortHandler();\n }\n }\n }\n\n /**\n * Streaming execution: yields StreamEvents from the provider's stream function.\n * Falls back to non-streaming execute() if no stream function is registered.\n */\n async *executeStream(\n input: Input,\n context: IJobExecuteContext\n ): AsyncIterable<StreamEvent<Output>> {\n if (context.signal.aborted || this.status === JobStatus.ABORTING) {\n throw new AbortSignalJobError(\"Abort signal aborted before streaming execution of job\");\n }\n\n const streamFn = getAiProviderRegistry().getStreamFn<Input[\"taskInput\"], Output>(\n input.aiProvider,\n input.taskType\n );\n\n if (!streamFn) {\n const result = await this.execute(input, context);\n yield { type: \"finish\", data: result } as StreamEvent<Output>;\n return;\n }\n\n const model = input.taskInput.model;\n yield* streamFn(input.taskInput, model, context.signal);\n }\n}\n",
6
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { TaskInput, TaskOutput, type StreamEvent } from \"@workglow/task-graph\";\nimport { globalServiceRegistry, WORKER_MANAGER } from \"@workglow/util\";\nimport type { ModelConfig } from \"../model/ModelSchema\";\nimport type { AiProvider } from \"./AiProvider\";\n\n/**\n * Type for the run function for the AiJob\n */\nexport type AiProviderRunFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Model extends ModelConfig = ModelConfig,\n> = (\n input: Input,\n model: Model | undefined,\n update_progress: (progress: number, message?: string, details?: any) => void,\n signal: AbortSignal\n) => Promise<Output>;\n\n/**\n * Type for the streaming run function for the AiJob.\n * Returns an AsyncIterable of StreamEvents instead of a Promise.\n * No `update_progress` callback -- for streaming providers, the stream itself IS the progress signal.\n */\nexport type AiProviderStreamFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Model extends ModelConfig = ModelConfig,\n> = (\n input: Input,\n model: Model | undefined,\n signal: AbortSignal\n) => AsyncIterable<StreamEvent<Output>>;\n\n/**\n * Registry that manages provider-specific task execution functions and job queues.\n * Handles the registration, retrieval, and execution of task processing functions\n * for different model providers and task types.\n */\nexport class AiProviderRegistry {\n runFnRegistry: Map<string, Map<string, AiProviderRunFn<any, any>>> = new Map();\n streamFnRegistry: Map<string, Map<string, AiProviderStreamFn<any, any>>> = new Map();\n private providers: Map<string, AiProvider<any>> = new Map();\n\n /**\n * Registers an AiProvider instance for lifecycle management and introspection.\n * @param provider - The provider instance to register\n */\n registerProvider(provider: AiProvider<any>): void {\n this.providers.set(provider.name, provider);\n }\n\n /**\n * Retrieves a registered AiProvider instance by name.\n * @param name - The provider name (e.g., \"HF_TRANSFORMERS_ONNX\")\n * @returns The provider instance, or undefined if not found\n */\n getProvider(name: string): AiProvider<any> | undefined {\n return this.providers.get(name);\n }\n\n /**\n * Returns all registered AiProvider instances.\n */\n getProviders(): Map<string, AiProvider<any>> {\n return new Map(this.providers);\n }\n\n /**\n * Registers a task execution function for a specific task type and model provider\n * @param taskType - The type of task (e.g., 'text-generation', 'embedding')\n * @param modelProvider - The provider of the model (e.g., 'hf-transformers', 'tf-mediapipe', 'openai', etc)\n * @param runFn - The function that executes the task\n */\n registerRunFn<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput>(\n modelProvider: string,\n taskType: string,\n runFn: AiProviderRunFn<Input, Output>\n ) {\n if (!this.runFnRegistry.has(taskType)) {\n this.runFnRegistry.set(taskType, new Map());\n }\n this.runFnRegistry.get(taskType)!.set(modelProvider, runFn);\n }\n\n registerAsWorkerRunFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n >(modelProvider: string, taskType: string) {\n const workerFn: AiProviderRunFn<Input, Output> = async (\n input: Input,\n model: ModelConfig | undefined,\n update_progress: (progress: number, message?: string, details?: any) => void,\n signal?: AbortSignal\n ) => {\n const workerManager = globalServiceRegistry.get(WORKER_MANAGER);\n const result = await workerManager.callWorkerFunction<Output>(\n modelProvider,\n taskType,\n [input, model],\n {\n signal: signal,\n onProgress: update_progress,\n }\n );\n return result;\n };\n this.registerRunFn<Input, Output>(modelProvider, taskType, workerFn);\n }\n\n /**\n * Registers a streaming execution function for a specific task type and model provider.\n * @param modelProvider - The provider of the model (e.g., 'openai', 'anthropic', etc.)\n * @param taskType - The type of task (e.g., 'TextGenerationTask')\n * @param streamFn - The async generator function that yields StreamEvents\n */\n registerStreamFn<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput>(\n modelProvider: string,\n taskType: string,\n streamFn: AiProviderStreamFn<Input, Output>\n ) {\n if (!this.streamFnRegistry.has(taskType)) {\n this.streamFnRegistry.set(taskType, new Map());\n }\n this.streamFnRegistry.get(taskType)!.set(modelProvider, streamFn);\n }\n\n /**\n * Registers a worker-proxied streaming function for a specific task type and model provider.\n * Creates a proxy that delegates streaming to a Web Worker via WorkerManager.\n * The proxy calls `callWorkerStreamFunction()` which sends a `stream: true` call message\n * and yields `stream_chunk` messages from the worker as an AsyncIterable.\n */\n registerAsWorkerStreamFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n >(modelProvider: string, taskType: string) {\n const streamFn: AiProviderStreamFn<Input, Output> = async function* (\n input: Input,\n model: ModelConfig | undefined,\n signal: AbortSignal\n ) {\n const workerManager = globalServiceRegistry.get(WORKER_MANAGER);\n yield* workerManager.callWorkerStreamFunction<StreamEvent<Output>>(\n modelProvider,\n taskType,\n [input, model],\n { signal }\n );\n };\n this.registerStreamFn<Input, Output>(modelProvider, taskType, streamFn);\n }\n\n /**\n * Retrieves the streaming execution function for a task type and model provider.\n * Returns undefined if no streaming function is registered (fallback to non-streaming).\n */\n getStreamFn<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput>(\n modelProvider: string,\n taskType: string\n ): AiProviderStreamFn<Input, Output> | undefined {\n const taskTypeMap = this.streamFnRegistry.get(taskType);\n return taskTypeMap?.get(modelProvider) as AiProviderStreamFn<Input, Output> | undefined;\n }\n\n /**\n * Retrieves the direct execution function for a task type and model\n * Bypasses the job queue system for immediate execution\n */\n getDirectRunFn<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput>(\n modelProvider: string,\n taskType: string\n ) {\n const taskTypeMap = this.runFnRegistry.get(taskType);\n const runFn = taskTypeMap?.get(modelProvider) as AiProviderRunFn<Input, Output> | undefined;\n if (!runFn) {\n throw new Error(\n `No run function found for task type ${taskType} and model provider ${modelProvider}`\n );\n }\n return runFn;\n }\n}\n\n// Singleton instance management for the ProviderRegistry\nlet providerRegistry: AiProviderRegistry;\nexport function getAiProviderRegistry() {\n if (!providerRegistry) providerRegistry = new AiProviderRegistry();\n return providerRegistry;\n}\nexport function setAiProviderRegistry(pr: AiProviderRegistry) {\n providerRegistry = pr;\n}\n",
6
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { TaskInput, TaskOutput, type StreamEvent } from \"@workglow/task-graph\";\nimport { globalServiceRegistry, WORKER_MANAGER } from \"@workglow/util\";\nimport type { ModelConfig } from \"../model/ModelSchema\";\nimport type { AiProvider } from \"./AiProvider\";\n\n/**\n * Type for the run function for the AiJob\n */\nexport type AiProviderRunFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Model extends ModelConfig = ModelConfig,\n> = (\n input: Input,\n model: Model | undefined,\n update_progress: (progress: number, message?: string, details?: any) => void,\n signal: AbortSignal\n) => Promise<Output>;\n\n/**\n * Type for the reactive run function for AiTask.executeReactive().\n * Receives the current output alongside the input so it can return a fast preview.\n * No `signal` or `update_progress` -- reactive execution is lightweight and synchronous-ish.\n */\nexport type AiProviderReactiveRunFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Model extends ModelConfig = ModelConfig,\n> = (input: Input, output: Output, model: Model | undefined) => Promise<Output | undefined>;\n\n/**\n * Type for the streaming run function for the AiJob.\n * Returns an AsyncIterable of StreamEvents instead of a Promise.\n * No `update_progress` callback -- for streaming providers, the stream itself IS the progress signal.\n */\nexport type AiProviderStreamFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Model extends ModelConfig = ModelConfig,\n> = (\n input: Input,\n model: Model | undefined,\n signal: AbortSignal\n) => AsyncIterable<StreamEvent<Output>>;\n\n/**\n * Registry that manages provider-specific task execution functions and job queues.\n * Handles the registration, retrieval, and execution of task processing functions\n * for different model providers and task types.\n */\nexport class AiProviderRegistry {\n runFnRegistry: Map<string, Map<string, AiProviderRunFn<any, any>>> = new Map();\n streamFnRegistry: Map<string, Map<string, AiProviderStreamFn<any, any>>> = new Map();\n reactiveRunFnRegistry: Map<string, Map<string, AiProviderReactiveRunFn<any, any>>> = new Map();\n private providers: Map<string, AiProvider<any>> = new Map();\n\n /**\n * Registers an AiProvider instance for lifecycle management and introspection.\n * @param provider - The provider instance to register\n */\n registerProvider(provider: AiProvider<any>): void {\n this.providers.set(provider.name, provider);\n }\n\n /**\n * Retrieves a registered AiProvider instance by name.\n * @param name - The provider name (e.g., \"HF_TRANSFORMERS_ONNX\")\n * @returns The provider instance, or undefined if not found\n */\n getProvider(name: string): AiProvider<any> | undefined {\n return this.providers.get(name);\n }\n\n /**\n * Returns all registered AiProvider instances.\n */\n getProviders(): Map<string, AiProvider<any>> {\n return new Map(this.providers);\n }\n\n /**\n * Registers a task execution function for a specific task type and model provider\n * @param taskType - The type of task (e.g., 'text-generation', 'embedding')\n * @param modelProvider - The provider of the model (e.g., 'hf-transformers', 'tf-mediapipe', 'openai', etc)\n * @param runFn - The function that executes the task\n */\n registerRunFn<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput>(\n modelProvider: string,\n taskType: string,\n runFn: AiProviderRunFn<Input, Output>\n ) {\n if (!this.runFnRegistry.has(taskType)) {\n this.runFnRegistry.set(taskType, new Map());\n }\n this.runFnRegistry.get(taskType)!.set(modelProvider, runFn);\n }\n\n registerAsWorkerRunFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n >(modelProvider: string, taskType: string) {\n const workerFn: AiProviderRunFn<Input, Output> = async (\n input: Input,\n model: ModelConfig | undefined,\n update_progress: (progress: number, message?: string, details?: any) => void,\n signal?: AbortSignal\n ) => {\n const workerManager = globalServiceRegistry.get(WORKER_MANAGER);\n const result = await workerManager.callWorkerFunction<Output>(\n modelProvider,\n taskType,\n [input, model],\n {\n signal: signal,\n onProgress: update_progress,\n }\n );\n return result;\n };\n this.registerRunFn<Input, Output>(modelProvider, taskType, workerFn);\n }\n\n /**\n * Registers a streaming execution function for a specific task type and model provider.\n * @param modelProvider - The provider of the model (e.g., 'openai', 'anthropic', etc.)\n * @param taskType - The type of task (e.g., 'TextGenerationTask')\n * @param streamFn - The async generator function that yields StreamEvents\n */\n registerStreamFn<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput>(\n modelProvider: string,\n taskType: string,\n streamFn: AiProviderStreamFn<Input, Output>\n ) {\n if (!this.streamFnRegistry.has(taskType)) {\n this.streamFnRegistry.set(taskType, new Map());\n }\n this.streamFnRegistry.get(taskType)!.set(modelProvider, streamFn);\n }\n\n /**\n * Registers a worker-proxied streaming function for a specific task type and model provider.\n * Creates a proxy that delegates streaming to a Web Worker via WorkerManager.\n * The proxy calls `callWorkerStreamFunction()` which sends a `stream: true` call message\n * and yields `stream_chunk` messages from the worker as an AsyncIterable.\n */\n registerAsWorkerStreamFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n >(modelProvider: string, taskType: string) {\n const streamFn: AiProviderStreamFn<Input, Output> = async function* (\n input: Input,\n model: ModelConfig | undefined,\n signal: AbortSignal\n ) {\n const workerManager = globalServiceRegistry.get(WORKER_MANAGER);\n yield* workerManager.callWorkerStreamFunction<StreamEvent<Output>>(\n modelProvider,\n taskType,\n [input, model],\n { signal }\n );\n };\n this.registerStreamFn<Input, Output>(modelProvider, taskType, streamFn);\n }\n\n /**\n * Retrieves the streaming execution function for a task type and model provider.\n * Returns undefined if no streaming function is registered (fallback to non-streaming).\n */\n getStreamFn<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput>(\n modelProvider: string,\n taskType: string\n ): AiProviderStreamFn<Input, Output> | undefined {\n const taskTypeMap = this.streamFnRegistry.get(taskType);\n return taskTypeMap?.get(modelProvider) as AiProviderStreamFn<Input, Output> | undefined;\n }\n\n /**\n * Registers a worker-proxied reactive function for a specific task type and model provider.\n * Creates a proxy that delegates reactive execution to a Web Worker via WorkerManager.\n * Returns undefined (non-throwing) if the worker has no reactive function for the task type.\n */\n registerAsWorkerReactiveRunFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n >(modelProvider: string, taskType: string) {\n const reactiveFn: AiProviderReactiveRunFn<Input, Output> = async (\n input: Input,\n output: Output,\n model: ModelConfig | undefined\n ) => {\n const workerManager = globalServiceRegistry.get(WORKER_MANAGER);\n return workerManager.callWorkerReactiveFunction<Output>(modelProvider, taskType, [\n input,\n output,\n model,\n ]);\n };\n this.registerReactiveRunFn<Input, Output>(modelProvider, taskType, reactiveFn);\n }\n\n /**\n * Registers a reactive execution function for a specific task type and model provider.\n * Called by AiTask.executeReactive() to provide a fast, lightweight preview without a network call.\n */\n registerReactiveRunFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n >(\n modelProvider: string,\n taskType: string,\n reactiveRunFn: AiProviderReactiveRunFn<Input, Output>\n ) {\n if (!this.reactiveRunFnRegistry.has(taskType)) {\n this.reactiveRunFnRegistry.set(taskType, new Map());\n }\n this.reactiveRunFnRegistry.get(taskType)!.set(modelProvider, reactiveRunFn);\n }\n\n /**\n * Retrieves the reactive execution function for a task type and model provider.\n * Returns undefined if no reactive function is registered (fallback to default behavior).\n */\n getReactiveRunFn<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput>(\n modelProvider: string,\n taskType: string\n ): AiProviderReactiveRunFn<Input, Output> | undefined {\n const taskTypeMap = this.reactiveRunFnRegistry.get(taskType);\n return taskTypeMap?.get(modelProvider) as AiProviderReactiveRunFn<Input, Output> | undefined;\n }\n\n /**\n * Retrieves the direct execution function for a task type and model\n * Bypasses the job queue system for immediate execution\n */\n getDirectRunFn<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput>(\n modelProvider: string,\n taskType: string\n ) {\n const taskTypeMap = this.runFnRegistry.get(taskType);\n const runFn = taskTypeMap?.get(modelProvider) as AiProviderRunFn<Input, Output> | undefined;\n if (!runFn) {\n throw new Error(\n `No run function found for task type ${taskType} and model provider ${modelProvider}`\n );\n }\n return runFn;\n }\n}\n\n// Singleton instance management for the ProviderRegistry\nlet providerRegistry: AiProviderRegistry;\nexport function getAiProviderRegistry() {\n if (!providerRegistry) providerRegistry = new AiProviderRegistry();\n return providerRegistry;\n}\nexport function setAiProviderRegistry(pr: AiProviderRegistry) {\n providerRegistry = pr;\n}\n",
7
7
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { InMemoryTabularStorage } from \"@workglow/storage\";\nimport { ModelRepository } from \"./ModelRepository\";\nimport { ModelPrimaryKeyNames, ModelRecordSchema } from \"./ModelSchema\";\n\n/**\n * In-memory implementation of a model repository.\n * Provides storage and retrieval for models and task-to-model mappings.\n */\nexport class InMemoryModelRepository extends ModelRepository {\n constructor() {\n super(new InMemoryTabularStorage(ModelRecordSchema, ModelPrimaryKeyNames));\n }\n}\n",
8
8
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { type BaseTabularStorage } from \"@workglow/storage\";\nimport { EventEmitter, EventParameters } from \"@workglow/util\";\n\nimport { ModelPrimaryKeyNames, ModelRecord, ModelRecordSchema } from \"./ModelSchema\";\n\n/**\n * Events that can be emitted by the ModelRepository\n */\n\nexport type ModelEventListeners = {\n model_added: (model: ModelRecord) => void;\n model_removed: (model: ModelRecord) => void;\n model_updated: (model: ModelRecord) => void;\n};\n\nexport type ModelEvents = keyof ModelEventListeners;\n\nexport type ModelEventListener<Event extends ModelEvents> = ModelEventListeners[Event];\n\nexport type ModelEventParameters<Event extends ModelEvents> = EventParameters<\n ModelEventListeners,\n Event\n>;\n\n/**\n * Base class for managing AI models and their relationships with tasks.\n * Provides functionality for storing, retrieving, and managing the lifecycle of models\n * and their associations with specific tasks.\n */\nexport class ModelRepository {\n /**\n * Repository for storing and managing Model instances\n */\n protected readonly modelTabularRepository: BaseTabularStorage<\n typeof ModelRecordSchema,\n typeof ModelPrimaryKeyNames\n >;\n constructor(\n modelTabularRepository: BaseTabularStorage<\n typeof ModelRecordSchema,\n typeof ModelPrimaryKeyNames\n >\n ) {\n this.modelTabularRepository = modelTabularRepository;\n }\n\n /** Event emitter for repository events */\n protected events = new EventEmitter<ModelEventListeners>();\n\n /**\n * Sets up the database for the repository.\n * Must be called before using any other methods.\n */\n async setupDatabase(): Promise<void> {\n await this.modelTabularRepository.setupDatabase?.();\n }\n\n /**\n * Registers an event listener for the specified event\n * @param name - The event name to listen for\n * @param fn - The callback function to execute when the event occurs\n */\n on<Event extends ModelEvents>(name: Event, fn: ModelEventListener<Event>) {\n this.events.on(name, fn);\n }\n\n /**\n * Removes an event listener for the specified event\n * @param name - The event name to stop listening for\n * @param fn - The callback function to remove\n */\n off<Event extends ModelEvents>(name: Event, fn: ModelEventListener<Event>) {\n this.events.off(name, fn);\n }\n\n /**\n * Adds an event listener that will only be called once\n * @param name - The event name to listen for\n * @param fn - The callback function to execute when the event occurs\n */\n once<Event extends ModelEvents>(name: Event, fn: ModelEventListener<Event>) {\n this.events.once(name, fn);\n }\n\n /**\n * Returns when the event was emitted (promise form of once)\n * @param name - The event name to check\n * @returns a promise that resolves to the event listener parameters\n */\n waitOn<Event extends ModelEvents>(name: Event) {\n return this.events.waitOn(name);\n }\n\n /**\n * Adds a new model to the repository\n * @param model - The model instance to add\n */\n async addModel(model: ModelRecord) {\n await this.modelTabularRepository.put(model);\n this.events.emit(\"model_added\", model);\n return model;\n }\n\n /**\n * Removes a model from the repository\n * @param model_id - The model_id of the model to remove\n */\n async removeModel(model_id: string): Promise<void> {\n const model = await this.modelTabularRepository.get({ model_id });\n if (!model) {\n throw new Error(`Model with id \"${model_id}\" not found`);\n }\n await this.modelTabularRepository.delete({ model_id });\n this.events.emit(\"model_removed\", model);\n }\n\n /**\n * Finds all models associated with a specific task\n * @param task - The task identifier to search for\n * @returns Promise resolving to an array of associated models, or undefined if none found\n */\n async findModelsByTask(task: string) {\n if (typeof task != \"string\") return undefined;\n const allModels = await this.modelTabularRepository.getAll();\n if (!allModels || allModels.length === 0) return undefined;\n const models = allModels.filter((model) => model.tasks?.includes(task));\n if (models.length === 0) return undefined;\n return models;\n }\n\n /**\n * Finds all tasks associated with a specific model\n * @param model - The model identifier to search for\n * @returns Promise resolving to an array of associated tasks, or undefined if none found\n */\n async findTasksByModel(model_id: string) {\n if (typeof model_id != \"string\") return undefined;\n const modelRecord = await this.modelTabularRepository.get({ model_id });\n if (!modelRecord) return undefined;\n return modelRecord.tasks && modelRecord.tasks.length > 0 ? modelRecord.tasks : undefined;\n }\n\n /**\n * Enumerates all tasks in the repository\n * @returns Promise resolving to an array of task identifiers\n */\n async enumerateAllTasks() {\n const allModels = await this.modelTabularRepository.getAll();\n if (!allModels || allModels.length === 0) return undefined;\n const uniqueTasks = new Set<string>();\n for (const model of allModels) {\n if (model.tasks) {\n for (const task of model.tasks) {\n uniqueTasks.add(task);\n }\n }\n }\n return uniqueTasks.size > 0 ? Array.from(uniqueTasks) : undefined;\n }\n\n /**\n * Enumerates all models in the repository\n * @returns Promise resolving to an array of model instances\n */\n async enumerateAllModels(): Promise<ModelRecord[] | undefined> {\n const models = await this.modelTabularRepository.getAll();\n if (!models || models.length === 0) return undefined;\n return models;\n }\n\n /**\n * Retrieves a model by its identifier\n * @param modelId - The model_id of the model to find\n * @returns Promise resolving to the found model or undefined if not found\n */\n async findByName(model_id: string): Promise<ModelRecord | undefined> {\n if (typeof model_id != \"string\") return undefined;\n const model = await this.modelTabularRepository.get({ model_id });\n return model ?? undefined;\n }\n\n /**\n * Gets the total number of models in the repository\n * @returns Promise resolving to the number of stored models\n */\n async size(): Promise<number> {\n return await this.modelTabularRepository.size();\n }\n}\n",
9
9
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util\";\n\n/**\n * A model configuration suitable for task/job inputs.\n *\n * @remarks\n * This is intentionally less strict than {@link ModelRecord} so jobs can carry only the\n * provider configuration required to execute, without requiring access to a model repository.\n */\nexport const ModelConfigSchema = {\n type: \"object\",\n properties: {\n model_id: { type: \"string\" },\n tasks: { type: \"array\", items: { type: \"string\" }, \"x-ui-editor\": \"multiselect\" },\n title: { type: \"string\" },\n description: { type: \"string\", \"x-ui-editor\": \"textarea\" },\n provider: { type: \"string\" },\n provider_config: { type: \"object\", default: {} },\n metadata: { type: \"object\", default: {}, \"x-ui-hidden\": true },\n },\n required: [\"provider\", \"provider_config\"],\n format: \"model\",\n additionalProperties: true,\n} as const satisfies DataPortSchemaObject;\n\n/**\n * A fully-specified model record suitable for persistence in a repository.\n */\nexport const ModelRecordSchema = {\n type: \"object\",\n properties: {\n ...ModelConfigSchema.properties,\n },\n required: [\n \"model_id\",\n \"tasks\",\n \"provider\",\n \"title\",\n \"description\",\n \"provider_config\",\n \"metadata\",\n ],\n format: \"model\",\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type ModelConfig = FromSchema<typeof ModelConfigSchema>;\nexport type ModelRecord = FromSchema<typeof ModelRecordSchema>;\nexport const ModelPrimaryKeyNames = [\"model_id\"] as const;\n",
10
10
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n createServiceToken,\n globalServiceRegistry,\n registerInputResolver,\n ServiceRegistry,\n} from \"@workglow/util\";\nimport { InMemoryModelRepository } from \"./InMemoryModelRepository\";\nimport { ModelRepository } from \"./ModelRepository\";\nimport type { ModelConfig } from \"./ModelSchema\";\n\n/**\n * Service token for the global model repository\n */\nexport const MODEL_REPOSITORY = createServiceToken<ModelRepository>(\"model.repository\");\n\n// Register default factory if not already registered\nif (!globalServiceRegistry.has(MODEL_REPOSITORY)) {\n globalServiceRegistry.register(\n MODEL_REPOSITORY,\n (): ModelRepository => new InMemoryModelRepository(),\n true\n );\n}\n\n/**\n * Gets the global model repository instance\n * @returns The model repository instance\n */\nexport function getGlobalModelRepository(): ModelRepository {\n return globalServiceRegistry.get(MODEL_REPOSITORY);\n}\n\n/**\n * Sets the global model repository instance\n * @param repository The model repository instance to register\n */\nexport function setGlobalModelRepository(repository: ModelRepository): void {\n globalServiceRegistry.registerInstance(MODEL_REPOSITORY, repository);\n}\n\n/**\n * Resolves a model ID to a ModelConfig from the repository.\n * Used by the input resolver system.\n */\nasync function resolveModelFromRegistry(\n id: string,\n format: string,\n registry: ServiceRegistry\n): Promise<ModelConfig | undefined> {\n const modelRepo = registry.has(MODEL_REPOSITORY)\n ? registry.get<ModelRepository>(MODEL_REPOSITORY)\n : getGlobalModelRepository();\n\n const model = await modelRepo.findByName(id);\n if (!model) {\n throw new Error(`Model \"${id}\" not found in repository`);\n }\n return model;\n}\n\n// Register the model resolver for format: \"model\" and \"model:*\"\nregisterInputResolver(\"model\", resolveModelFromRegistry);\n",
11
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { TaskInput, TaskOutput } from \"@workglow/task-graph\";\nimport { globalServiceRegistry, WORKER_MANAGER, type WorkerServer } from \"@workglow/util\";\nimport type { ModelConfig } from \"../model/ModelSchema\";\nimport { createDefaultQueue } from \"../queue/createDefaultQueue\";\nimport {\n type AiProviderRunFn,\n type AiProviderStreamFn,\n getAiProviderRegistry,\n} from \"./AiProviderRegistry\";\n\n/**\n * Execution mode for an AI provider.\n * - \"inline\": run functions execute directly in the current thread\n * - \"worker\": run functions are proxied to a Web Worker via WorkerManager\n */\nexport type AiProviderMode = \"inline\" | \"worker\";\n\n/**\n * Options for registering an AI provider.\n */\nexport interface AiProviderRegisterOptions {\n /** Execution mode: \"inline\" (same thread) or \"worker\" (Web Worker) */\n mode: AiProviderMode;\n /** The Web Worker instance. Required when mode is \"worker\". */\n worker?: Worker;\n /** Job queue configuration */\n queue?: {\n /** Maximum number of concurrent jobs. Defaults to 1. */\n concurrency?: number;\n /** Set to false to skip automatic queue creation. Defaults to true. */\n autoCreate?: boolean;\n };\n}\n\n/**\n * Abstract base class for AI providers.\n *\n * Each provider subclass declares a `taskTypes` array listing the task type\n * names it supports. The actual run function implementations (`tasks` record)\n * are **injected via the constructor** so that heavy ML library imports remain\n * at the call site. This allows the provider class to be imported on the main\n * thread without pulling in heavy dependencies when running in worker mode.\n *\n * The base class handles:\n * - Registering run functions with the AiProviderRegistry (inline or worker mode)\n * - Creating a default job queue\n * - Registering functions on a WorkerServer (for worker-side code)\n * - Lifecycle management (initialize / dispose)\n *\n * @example\n * ```typescript\n * // Worker mode (main thread) -- lightweight, no heavy imports:\n * await new MyProvider().register({\n * mode: \"worker\",\n * worker: new Worker(new URL(\"./worker.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline mode -- caller provides the tasks (imports heavy library):\n * import { MY_TASKS } from \"./MyJobRunFns\";\n * await new MyProvider(MY_TASKS).register({ mode: \"inline\" });\n *\n * // Worker side -- caller provides the tasks:\n * import { MY_TASKS } from \"./MyJobRunFns\";\n * new MyProvider(MY_TASKS).registerOnWorkerServer(workerServer);\n * ```\n */\nexport abstract class AiProvider<TModelConfig extends ModelConfig = ModelConfig> {\n /** Unique provider identifier (e.g., \"HF_TRANSFORMERS_ONNX\") */\n abstract readonly name: string;\n\n /**\n * List of task type names this provider supports.\n * This is lightweight metadata -- no heavy library imports needed.\n */\n abstract readonly taskTypes: readonly string[];\n\n /**\n * Map of task type names to their run functions.\n * Injected via constructor. Required for inline mode and worker-server\n * registration; not needed for worker-mode registration on the main thread.\n */\n protected readonly tasks?: Record<string, AiProviderRunFn<any, any, TModelConfig>>;\n\n /**\n * Map of task type names to their streaming run functions.\n * Injected via constructor alongside `tasks`. Only needed for tasks that\n * support streaming output (e.g., text generation, summarization).\n */\n protected readonly streamTasks?: Record<string, AiProviderStreamFn<any, any, TModelConfig>>;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, TModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, TModelConfig>>\n ) {\n this.tasks = tasks;\n this.streamTasks = streamTasks;\n }\n\n /** Get all task type names this provider supports */\n get supportedTaskTypes(): readonly string[] {\n return this.taskTypes;\n }\n\n /**\n * Get the run function for a specific task type.\n * @param taskType - The task type name (e.g., \"TextEmbeddingTask\")\n * @returns The run function, or undefined if the task type is not supported or tasks not provided\n */\n getRunFn<I extends TaskInput = TaskInput, O extends TaskOutput = TaskOutput>(\n taskType: string\n ): AiProviderRunFn<I, O, TModelConfig> | undefined {\n return this.tasks?.[taskType] as AiProviderRunFn<I, O, TModelConfig> | undefined;\n }\n\n /**\n * Get the streaming function for a specific task type.\n * @param taskType - The task type name (e.g., \"TextGenerationTask\")\n * @returns The stream function, or undefined if streaming is not supported for this task type\n */\n getStreamFn<I extends TaskInput = TaskInput, O extends TaskOutput = TaskOutput>(\n taskType: string\n ): AiProviderStreamFn<I, O, TModelConfig> | undefined {\n return this.streamTasks?.[taskType] as AiProviderStreamFn<I, O, TModelConfig> | undefined;\n }\n\n /**\n * Register this provider on the main thread.\n *\n * In \"inline\" mode, registers direct run functions with the AiProviderRegistry.\n * Requires `tasks` to have been provided via the constructor.\n *\n * In \"worker\" mode, registers the worker with WorkerManager and creates proxy\n * functions that delegate to the worker. Does NOT require `tasks`.\n *\n * Both modes create a job queue unless `queue.autoCreate` is set to false.\n *\n * @param options - Registration options (mode, worker, queue config)\n */\n async register(options: AiProviderRegisterOptions = { mode: \"inline\" }): Promise<void> {\n await this.onInitialize(options);\n\n // Validate before any registration so we don't leave the registry in a partial state\n if (options.mode === \"worker\") {\n if (!options.worker) {\n throw new Error(\n `AiProvider \"${this.name}\": worker is required when mode is \"worker\". ` +\n `Pass a Web Worker instance, e.g. register({ mode: \"worker\", worker: new Worker(...) }).`\n );\n }\n } else {\n if (!this.tasks) {\n throw new Error(\n `AiProvider \"${this.name}\": tasks must be provided via the constructor for inline mode. ` +\n `Pass the tasks record when constructing the provider, e.g. new MyProvider(MY_TASKS).`\n );\n }\n }\n\n const registry = getAiProviderRegistry();\n\n if (options.mode === \"worker\" && options.worker) {\n const workerManager = globalServiceRegistry.get(WORKER_MANAGER);\n workerManager.registerWorker(this.name, options.worker);\n for (const taskType of this.taskTypes) {\n registry.registerAsWorkerRunFn(this.name, taskType);\n registry.registerAsWorkerStreamFn(this.name, taskType);\n }\n } else {\n for (const [taskType, fn] of Object.entries(this.tasks!)) {\n registry.registerRunFn(this.name, taskType, fn as AiProviderRunFn);\n }\n if (this.streamTasks) {\n for (const [taskType, fn] of Object.entries(this.streamTasks)) {\n registry.registerStreamFn(this.name, taskType, fn as AiProviderStreamFn);\n }\n }\n }\n\n registry.registerProvider(this);\n\n if (options.queue?.autoCreate !== false) {\n await this.createQueue(options.queue?.concurrency ?? 1);\n }\n }\n\n /**\n * Register this provider's run functions on a WorkerServer.\n * Call this inside a Web Worker to make the provider's functions\n * available for remote invocation from the main thread.\n *\n * Requires `tasks` to have been provided via the constructor.\n *\n * @param workerServer - The WorkerServer instance to register on\n */\n registerOnWorkerServer(workerServer: WorkerServer): void {\n if (!this.tasks) {\n throw new Error(\n `AiProvider \"${this.name}\": tasks must be provided via the constructor for worker server registration. ` +\n `Pass the tasks record when constructing the provider, e.g. new MyProvider(MY_TASKS).`\n );\n }\n for (const [taskType, fn] of Object.entries(this.tasks)) {\n workerServer.registerFunction(taskType, fn);\n }\n if (this.streamTasks) {\n for (const [taskType, fn] of Object.entries(this.streamTasks)) {\n workerServer.registerStreamFunction(taskType, fn);\n }\n }\n }\n\n /**\n * Hook for provider-specific initialization.\n * Called at the start of `register()`, before any functions are registered.\n * Override in subclasses to perform setup (e.g., configuring WASM backends).\n */\n protected async onInitialize(_options: AiProviderRegisterOptions): Promise<void> {}\n\n /**\n * Dispose of provider resources.\n * Override in subclasses to clean up (e.g., clearing pipeline caches).\n */\n async dispose(): Promise<void> {}\n\n /**\n * Create and register a default job queue for this provider.\n * Uses InMemoryQueueStorage with a ConcurrencyLimiter.\n */\n protected async createQueue(concurrency: number): Promise<void> {\n await createDefaultQueue(this.name, concurrency);\n }\n}\n",
11
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { TaskInput, TaskOutput } from \"@workglow/task-graph\";\nimport { globalServiceRegistry, WORKER_MANAGER, type WorkerServer } from \"@workglow/util\";\nimport type { ModelConfig } from \"../model/ModelSchema\";\nimport { createDefaultQueue } from \"../queue/createDefaultQueue\";\nimport {\n type AiProviderReactiveRunFn,\n type AiProviderRunFn,\n type AiProviderStreamFn,\n getAiProviderRegistry,\n} from \"./AiProviderRegistry\";\n\n/**\n * Execution mode for an AI provider.\n * - \"inline\": run functions execute directly in the current thread\n * - \"worker\": run functions are proxied to a Web Worker via WorkerManager\n */\nexport type AiProviderMode = \"inline\" | \"worker\";\n\n/**\n * Options for registering an AI provider.\n */\nexport interface AiProviderRegisterOptions {\n /** Execution mode: \"inline\" (same thread) or \"worker\" (Web Worker) */\n mode: AiProviderMode;\n /** The Web Worker instance. Required when mode is \"worker\". */\n worker?: Worker;\n /** Job queue configuration */\n queue?: {\n /** Maximum number of concurrent jobs. Defaults to 1. */\n concurrency?: number;\n /** Set to false to skip automatic queue creation. Defaults to true. */\n autoCreate?: boolean;\n };\n}\n\n/**\n * Abstract base class for AI providers.\n *\n * Each provider subclass declares a `taskTypes` array listing the task type\n * names it supports. The actual run function implementations (`tasks` record)\n * are **injected via the constructor** so that heavy ML library imports remain\n * at the call site. This allows the provider class to be imported on the main\n * thread without pulling in heavy dependencies when running in worker mode.\n *\n * The base class handles:\n * - Registering run functions with the AiProviderRegistry (inline or worker mode)\n * - Creating a default job queue\n * - Registering functions on a WorkerServer (for worker-side code)\n * - Lifecycle management (initialize / dispose)\n *\n * @example\n * ```typescript\n * // Worker mode (main thread) -- lightweight, no heavy imports:\n * await new MyProvider().register({\n * mode: \"worker\",\n * worker: new Worker(new URL(\"./worker.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline mode -- caller provides the tasks (imports heavy library):\n * import { MY_TASKS } from \"./MyJobRunFns\";\n * await new MyProvider(MY_TASKS).register({ mode: \"inline\" });\n *\n * // Worker side -- caller provides the tasks:\n * import { MY_TASKS } from \"./MyJobRunFns\";\n * new MyProvider(MY_TASKS).registerOnWorkerServer(workerServer);\n * ```\n */\nexport abstract class AiProvider<TModelConfig extends ModelConfig = ModelConfig> {\n /** Unique provider identifier (e.g., \"HF_TRANSFORMERS_ONNX\") */\n abstract readonly name: string;\n\n /**\n * List of task type names this provider supports.\n * This is lightweight metadata -- no heavy library imports needed.\n */\n abstract readonly taskTypes: readonly string[];\n\n /**\n * Map of task type names to their run functions.\n * Injected via constructor. Required for inline mode and worker-server\n * registration; not needed for worker-mode registration on the main thread.\n */\n protected readonly tasks?: Record<string, AiProviderRunFn<any, any, TModelConfig>>;\n\n /**\n * Map of task type names to their streaming run functions.\n * Injected via constructor alongside `tasks`. Only needed for tasks that\n * support streaming output (e.g., text generation, summarization).\n */\n protected readonly streamTasks?: Record<string, AiProviderStreamFn<any, any, TModelConfig>>;\n\n /**\n * Map of task type names to their reactive run functions.\n * Injected via constructor alongside `tasks`. Only needed for tasks that\n * provide lightweight reactive previews via executeReactive().\n */\n protected readonly reactiveTasks?: Record<\n string,\n AiProviderReactiveRunFn<any, any, TModelConfig>\n >;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, TModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, TModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, TModelConfig>>\n ) {\n this.tasks = tasks;\n this.streamTasks = streamTasks;\n this.reactiveTasks = reactiveTasks;\n }\n\n /** Get all task type names this provider supports */\n get supportedTaskTypes(): readonly string[] {\n return this.taskTypes;\n }\n\n /**\n * Get the run function for a specific task type.\n * @param taskType - The task type name (e.g., \"TextEmbeddingTask\")\n * @returns The run function, or undefined if the task type is not supported or tasks not provided\n */\n getRunFn<I extends TaskInput = TaskInput, O extends TaskOutput = TaskOutput>(\n taskType: string\n ): AiProviderRunFn<I, O, TModelConfig> | undefined {\n return this.tasks?.[taskType] as AiProviderRunFn<I, O, TModelConfig> | undefined;\n }\n\n /**\n * Get the streaming function for a specific task type.\n * @param taskType - The task type name (e.g., \"TextGenerationTask\")\n * @returns The stream function, or undefined if streaming is not supported for this task type\n */\n getStreamFn<I extends TaskInput = TaskInput, O extends TaskOutput = TaskOutput>(\n taskType: string\n ): AiProviderStreamFn<I, O, TModelConfig> | undefined {\n return this.streamTasks?.[taskType] as AiProviderStreamFn<I, O, TModelConfig> | undefined;\n }\n\n /**\n * Get the reactive run function for a specific task type.\n * @param taskType - The task type name (e.g., \"CountTokensTask\")\n * @returns The reactive function, or undefined if not supported for this task type\n */\n getReactiveRunFn<I extends TaskInput = TaskInput, O extends TaskOutput = TaskOutput>(\n taskType: string\n ): AiProviderReactiveRunFn<I, O, TModelConfig> | undefined {\n return this.reactiveTasks?.[taskType] as\n | AiProviderReactiveRunFn<I, O, TModelConfig>\n | undefined;\n }\n\n /**\n * Register this provider on the main thread.\n *\n * In \"inline\" mode, registers direct run functions with the AiProviderRegistry.\n * Requires `tasks` to have been provided via the constructor.\n *\n * In \"worker\" mode, registers the worker with WorkerManager and creates proxy\n * functions that delegate to the worker. Does NOT require `tasks`.\n *\n * Both modes create a job queue unless `queue.autoCreate` is set to false.\n *\n * @param options - Registration options (mode, worker, queue config)\n */\n async register(options: AiProviderRegisterOptions = { mode: \"inline\" }): Promise<void> {\n await this.onInitialize(options);\n\n // Validate before any registration so we don't leave the registry in a partial state\n if (options.mode === \"worker\") {\n if (!options.worker) {\n throw new Error(\n `AiProvider \"${this.name}\": worker is required when mode is \"worker\". ` +\n `Pass a Web Worker instance, e.g. register({ mode: \"worker\", worker: new Worker(...) }).`\n );\n }\n } else {\n if (!this.tasks) {\n throw new Error(\n `AiProvider \"${this.name}\": tasks must be provided via the constructor for inline mode. ` +\n `Pass the tasks record when constructing the provider, e.g. new MyProvider(MY_TASKS).`\n );\n }\n }\n\n const registry = getAiProviderRegistry();\n\n if (options.mode === \"worker\" && options.worker) {\n const workerManager = globalServiceRegistry.get(WORKER_MANAGER);\n workerManager.registerWorker(this.name, options.worker);\n for (const taskType of this.taskTypes) {\n registry.registerAsWorkerRunFn(this.name, taskType);\n registry.registerAsWorkerStreamFn(this.name, taskType);\n registry.registerAsWorkerReactiveRunFn(this.name, taskType);\n }\n } else {\n for (const [taskType, fn] of Object.entries(this.tasks!)) {\n registry.registerRunFn(this.name, taskType, fn as AiProviderRunFn);\n }\n if (this.streamTasks) {\n for (const [taskType, fn] of Object.entries(this.streamTasks)) {\n registry.registerStreamFn(this.name, taskType, fn as AiProviderStreamFn);\n }\n }\n }\n\n if (this.reactiveTasks) {\n for (const [taskType, fn] of Object.entries(this.reactiveTasks)) {\n registry.registerReactiveRunFn(this.name, taskType, fn as AiProviderReactiveRunFn);\n }\n }\n\n registry.registerProvider(this);\n\n if (options.queue?.autoCreate !== false) {\n await this.createQueue(options.queue?.concurrency ?? 1);\n }\n }\n\n /**\n * Register this provider's run functions on a WorkerServer.\n * Call this inside a Web Worker to make the provider's functions\n * available for remote invocation from the main thread.\n *\n * Requires `tasks` to have been provided via the constructor.\n *\n * @param workerServer - The WorkerServer instance to register on\n */\n registerOnWorkerServer(workerServer: WorkerServer): void {\n if (!this.tasks) {\n throw new Error(\n `AiProvider \"${this.name}\": tasks must be provided via the constructor for worker server registration. ` +\n `Pass the tasks record when constructing the provider, e.g. new MyProvider(MY_TASKS).`\n );\n }\n for (const [taskType, fn] of Object.entries(this.tasks)) {\n workerServer.registerFunction(taskType, fn);\n }\n if (this.streamTasks) {\n for (const [taskType, fn] of Object.entries(this.streamTasks)) {\n workerServer.registerStreamFunction(taskType, fn);\n }\n }\n if (this.reactiveTasks) {\n for (const [taskType, fn] of Object.entries(this.reactiveTasks)) {\n workerServer.registerReactiveFunction(taskType, fn);\n }\n }\n }\n\n /**\n * Hook for provider-specific initialization.\n * Called at the start of `register()`, before any functions are registered.\n * Override in subclasses to perform setup (e.g., configuring WASM backends).\n */\n protected async onInitialize(_options: AiProviderRegisterOptions): Promise<void> {}\n\n /**\n * Dispose of provider resources.\n * Override in subclasses to clean up (e.g., clearing pipeline caches).\n */\n async dispose(): Promise<void> {}\n\n /**\n * Create and register a default job queue for this provider.\n * Uses InMemoryQueueStorage with a ConcurrencyLimiter.\n */\n protected async createQueue(concurrency: number): Promise<void> {\n await createDefaultQueue(this.name, concurrency);\n }\n}\n",
12
12
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ConcurrencyLimiter, JobQueueClient, JobQueueServer } from \"@workglow/job-queue\";\nimport { InMemoryQueueStorage } from \"@workglow/storage\";\nimport { TaskInput, TaskOutput, getTaskQueueRegistry } from \"@workglow/task-graph\";\n\nimport type { AiJobInput } from \"../job/AiJob\";\nimport { AiJob } from \"../job/AiJob\";\n\n/**\n * Create and register a default job queue for an AI provider.\n * Uses InMemoryQueueStorage with a ConcurrencyLimiter.\n *\n * Extracted to a separate module to avoid circular dependencies between\n * AiProvider, AiJob, and the storage/job-queue/task-graph packages.\n *\n * @param providerName - Unique provider identifier (used as queue name)\n * @param concurrency - Maximum number of concurrent jobs\n */\nexport async function createDefaultQueue(providerName: string, concurrency: number): Promise<void> {\n const storage = new InMemoryQueueStorage<AiJobInput<TaskInput>, TaskOutput>(providerName);\n await storage.setupDatabase();\n\n const server = new JobQueueServer<AiJobInput<TaskInput>, TaskOutput>(AiJob, {\n storage,\n queueName: providerName,\n limiter: new ConcurrencyLimiter(concurrency, 100),\n });\n\n const client = new JobQueueClient<AiJobInput<TaskInput>, TaskOutput>({\n storage,\n queueName: providerName,\n });\n\n client.attach(server);\n\n getTaskQueueRegistry().registerQueue({ server, client, storage });\n await server.start();\n}\n",
13
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { TaskRegistry } from \"@workglow/task-graph\";\nimport { BackgroundRemovalTask } from \"./BackgroundRemovalTask\";\nimport { ChunkRetrievalTask } from \"./ChunkRetrievalTask\";\nimport { ChunkToVectorTask } from \"./ChunkToVectorTask\";\nimport { ChunkVectorHybridSearchTask } from \"./ChunkVectorHybridSearchTask\";\nimport { ChunkVectorSearchTask } from \"./ChunkVectorSearchTask\";\nimport { ChunkVectorUpsertTask } from \"./ChunkVectorUpsertTask\";\nimport { ContextBuilderTask } from \"./ContextBuilderTask\";\nimport { DocumentEnricherTask } from \"./DocumentEnricherTask\";\nimport { DownloadModelTask } from \"./DownloadModelTask\";\nimport { FaceDetectorTask } from \"./FaceDetectorTask\";\nimport { FaceLandmarkerTask } from \"./FaceLandmarkerTask\";\nimport { GestureRecognizerTask } from \"./GestureRecognizerTask\";\nimport { HandLandmarkerTask } from \"./HandLandmarkerTask\";\nimport { HierarchicalChunkerTask } from \"./HierarchicalChunkerTask\";\nimport { HierarchyJoinTask } from \"./HierarchyJoinTask\";\nimport { ImageClassificationTask } from \"./ImageClassificationTask\";\nimport { ImageEmbeddingTask } from \"./ImageEmbeddingTask\";\nimport { ImageSegmentationTask } from \"./ImageSegmentationTask\";\nimport { ImageToTextTask } from \"./ImageToTextTask\";\nimport { ObjectDetectionTask } from \"./ObjectDetectionTask\";\nimport { PoseLandmarkerTask } from \"./PoseLandmarkerTask\";\nimport { QueryExpanderTask } from \"./QueryExpanderTask\";\nimport { RerankerTask } from \"./RerankerTask\";\nimport { StructuralParserTask } from \"./StructuralParserTask\";\nimport { TextChunkerTask } from \"./TextChunkerTask\";\nimport { TextClassificationTask } from \"./TextClassificationTask\";\nimport { TextEmbeddingTask } from \"./TextEmbeddingTask\";\nimport { TextFillMaskTask } from \"./TextFillMaskTask\";\nimport { TextGenerationTask } from \"./TextGenerationTask\";\nimport { TextLanguageDetectionTask } from \"./TextLanguageDetectionTask\";\nimport { TextNamedEntityRecognitionTask } from \"./TextNamedEntityRecognitionTask\";\nimport { TextQuestionAnswerTask } from \"./TextQuestionAnswerTask\";\nimport { TextRewriterTask } from \"./TextRewriterTask\";\nimport { TextSummaryTask } from \"./TextSummaryTask\";\nimport { TextTranslationTask } from \"./TextTranslationTask\";\nimport { TopicSegmenterTask } from \"./TopicSegmenterTask\";\nimport { UnloadModelTask } from \"./UnloadModelTask\";\nimport { VectorQuantizeTask } from \"./VectorQuantizeTask\";\nimport { VectorSimilarityTask } from \"./VectorSimilarityTask\";\n\n// Register all AI tasks with the TaskRegistry.\n// Centralized registration ensures tasks are available for JSON deserialization\n// and prevents tree-shaking issues.\nexport const registerAiTasks = () => {\n const tasks = [\n BackgroundRemovalTask,\n ChunkToVectorTask,\n ContextBuilderTask,\n DocumentEnricherTask,\n ChunkRetrievalTask,\n ChunkVectorHybridSearchTask,\n ChunkVectorSearchTask,\n ChunkVectorUpsertTask,\n DownloadModelTask,\n FaceDetectorTask,\n FaceLandmarkerTask,\n GestureRecognizerTask,\n HandLandmarkerTask,\n HierarchicalChunkerTask,\n HierarchyJoinTask,\n ImageClassificationTask,\n ImageEmbeddingTask,\n ImageSegmentationTask,\n ImageToTextTask,\n ObjectDetectionTask,\n PoseLandmarkerTask,\n QueryExpanderTask,\n RerankerTask,\n StructuralParserTask,\n TextChunkerTask,\n TextClassificationTask,\n TextEmbeddingTask,\n TextFillMaskTask,\n TextGenerationTask,\n TextLanguageDetectionTask,\n TextNamedEntityRecognitionTask,\n TextQuestionAnswerTask,\n TextRewriterTask,\n TextSummaryTask,\n TextTranslationTask,\n TopicSegmenterTask,\n UnloadModelTask,\n VectorQuantizeTask,\n VectorSimilarityTask,\n ];\n tasks.map(TaskRegistry.registerTask);\n return tasks;\n};\n\nexport * from \"./BackgroundRemovalTask\";\nexport * from \"./base/AiTask\";\nexport * from \"./base/AiTaskSchemas\";\nexport * from \"./base/StreamingAiTask\";\nexport * from \"./ChunkRetrievalTask\";\nexport * from \"./ChunkToVectorTask\";\nexport * from \"./ChunkVectorHybridSearchTask\";\nexport * from \"./ChunkVectorSearchTask\";\nexport * from \"./ChunkVectorUpsertTask\";\nexport * from \"./ContextBuilderTask\";\nexport * from \"./DocumentEnricherTask\";\nexport * from \"./DownloadModelTask\";\nexport * from \"./FaceDetectorTask\";\nexport * from \"./FaceLandmarkerTask\";\nexport * from \"./GestureRecognizerTask\";\nexport * from \"./HandLandmarkerTask\";\nexport * from \"./HierarchicalChunkerTask\";\nexport * from \"./HierarchyJoinTask\";\nexport * from \"./ImageClassificationTask\";\nexport * from \"./ImageEmbeddingTask\";\nexport * from \"./ImageSegmentationTask\";\nexport * from \"./ImageToTextTask\";\nexport * from \"./ObjectDetectionTask\";\nexport * from \"./PoseLandmarkerTask\";\nexport * from \"./QueryExpanderTask\";\nexport * from \"./RerankerTask\";\nexport * from \"./StructuralParserTask\";\nexport * from \"./TextChunkerTask\";\nexport * from \"./TextClassificationTask\";\nexport * from \"./TextEmbeddingTask\";\nexport * from \"./TextFillMaskTask\";\nexport * from \"./TextGenerationTask\";\nexport * from \"./TextLanguageDetectionTask\";\nexport * from \"./TextNamedEntityRecognitionTask\";\nexport * from \"./TextQuestionAnswerTask\";\nexport * from \"./TextRewriterTask\";\nexport * from \"./TextSummaryTask\";\nexport * from \"./TextTranslationTask\";\nexport * from \"./TopicSegmenterTask\";\nexport * from \"./UnloadModelTask\";\nexport * from \"./VectorQuantizeTask\";\nexport * from \"./VectorSimilarityTask\";\n",
13
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { TaskRegistry } from \"@workglow/task-graph\";\nimport { BackgroundRemovalTask } from \"./BackgroundRemovalTask\";\nimport { ChunkRetrievalTask } from \"./ChunkRetrievalTask\";\nimport { ChunkToVectorTask } from \"./ChunkToVectorTask\";\nimport { ChunkVectorHybridSearchTask } from \"./ChunkVectorHybridSearchTask\";\nimport { ChunkVectorSearchTask } from \"./ChunkVectorSearchTask\";\nimport { ChunkVectorUpsertTask } from \"./ChunkVectorUpsertTask\";\nimport { ContextBuilderTask } from \"./ContextBuilderTask\";\nimport { CountTokensTask } from \"./CountTokensTask\";\nimport { DocumentEnricherTask } from \"./DocumentEnricherTask\";\nimport { DownloadModelTask } from \"./DownloadModelTask\";\nimport { FaceDetectorTask } from \"./FaceDetectorTask\";\nimport { FaceLandmarkerTask } from \"./FaceLandmarkerTask\";\nimport { GestureRecognizerTask } from \"./GestureRecognizerTask\";\nimport { HandLandmarkerTask } from \"./HandLandmarkerTask\";\nimport { HierarchicalChunkerTask } from \"./HierarchicalChunkerTask\";\nimport { HierarchyJoinTask } from \"./HierarchyJoinTask\";\nimport { ImageClassificationTask } from \"./ImageClassificationTask\";\nimport { ImageEmbeddingTask } from \"./ImageEmbeddingTask\";\nimport { ImageSegmentationTask } from \"./ImageSegmentationTask\";\nimport { ImageToTextTask } from \"./ImageToTextTask\";\nimport { ObjectDetectionTask } from \"./ObjectDetectionTask\";\nimport { PoseLandmarkerTask } from \"./PoseLandmarkerTask\";\nimport { QueryExpanderTask } from \"./QueryExpanderTask\";\nimport { RerankerTask } from \"./RerankerTask\";\nimport { StructuralParserTask } from \"./StructuralParserTask\";\nimport { TextChunkerTask } from \"./TextChunkerTask\";\nimport { TextClassificationTask } from \"./TextClassificationTask\";\nimport { TextEmbeddingTask } from \"./TextEmbeddingTask\";\nimport { TextFillMaskTask } from \"./TextFillMaskTask\";\nimport { TextGenerationTask } from \"./TextGenerationTask\";\nimport { TextLanguageDetectionTask } from \"./TextLanguageDetectionTask\";\nimport { TextNamedEntityRecognitionTask } from \"./TextNamedEntityRecognitionTask\";\nimport { TextQuestionAnswerTask } from \"./TextQuestionAnswerTask\";\nimport { TextRewriterTask } from \"./TextRewriterTask\";\nimport { TextSummaryTask } from \"./TextSummaryTask\";\nimport { TextTranslationTask } from \"./TextTranslationTask\";\nimport { TopicSegmenterTask } from \"./TopicSegmenterTask\";\nimport { UnloadModelTask } from \"./UnloadModelTask\";\nimport { VectorQuantizeTask } from \"./VectorQuantizeTask\";\nimport { VectorSimilarityTask } from \"./VectorSimilarityTask\";\n\n// Register all AI tasks with the TaskRegistry.\n// Centralized registration ensures tasks are available for JSON deserialization\n// and prevents tree-shaking issues.\nexport const registerAiTasks = () => {\n const tasks = [\n BackgroundRemovalTask,\n ChunkToVectorTask,\n CountTokensTask,\n ContextBuilderTask,\n DocumentEnricherTask,\n ChunkRetrievalTask,\n ChunkVectorHybridSearchTask,\n ChunkVectorSearchTask,\n ChunkVectorUpsertTask,\n DownloadModelTask,\n FaceDetectorTask,\n FaceLandmarkerTask,\n GestureRecognizerTask,\n HandLandmarkerTask,\n HierarchicalChunkerTask,\n HierarchyJoinTask,\n ImageClassificationTask,\n ImageEmbeddingTask,\n ImageSegmentationTask,\n ImageToTextTask,\n ObjectDetectionTask,\n PoseLandmarkerTask,\n QueryExpanderTask,\n RerankerTask,\n StructuralParserTask,\n TextChunkerTask,\n TextClassificationTask,\n TextEmbeddingTask,\n TextFillMaskTask,\n TextGenerationTask,\n TextLanguageDetectionTask,\n TextNamedEntityRecognitionTask,\n TextQuestionAnswerTask,\n TextRewriterTask,\n TextSummaryTask,\n TextTranslationTask,\n TopicSegmenterTask,\n UnloadModelTask,\n VectorQuantizeTask,\n VectorSimilarityTask,\n ];\n tasks.map(TaskRegistry.registerTask);\n return tasks;\n};\n\nexport * from \"./BackgroundRemovalTask\";\nexport * from \"./base/AiTask\";\nexport * from \"./base/AiTaskSchemas\";\nexport * from \"./base/StreamingAiTask\";\nexport * from \"./ChunkRetrievalTask\";\nexport * from \"./ChunkToVectorTask\";\nexport * from \"./ChunkVectorHybridSearchTask\";\nexport * from \"./ChunkVectorSearchTask\";\nexport * from \"./ChunkVectorUpsertTask\";\nexport * from \"./ContextBuilderTask\";\nexport * from \"./CountTokensTask\";\nexport * from \"./DocumentEnricherTask\";\nexport * from \"./DownloadModelTask\";\nexport * from \"./FaceDetectorTask\";\nexport * from \"./FaceLandmarkerTask\";\nexport * from \"./GestureRecognizerTask\";\nexport * from \"./HandLandmarkerTask\";\nexport * from \"./HierarchicalChunkerTask\";\nexport * from \"./HierarchyJoinTask\";\nexport * from \"./ImageClassificationTask\";\nexport * from \"./ImageEmbeddingTask\";\nexport * from \"./ImageSegmentationTask\";\nexport * from \"./ImageToTextTask\";\nexport * from \"./ObjectDetectionTask\";\nexport * from \"./PoseLandmarkerTask\";\nexport * from \"./QueryExpanderTask\";\nexport * from \"./RerankerTask\";\nexport * from \"./StructuralParserTask\";\nexport * from \"./TextChunkerTask\";\nexport * from \"./TextClassificationTask\";\nexport * from \"./TextEmbeddingTask\";\nexport * from \"./TextFillMaskTask\";\nexport * from \"./TextGenerationTask\";\nexport * from \"./TextLanguageDetectionTask\";\nexport * from \"./TextNamedEntityRecognitionTask\";\nexport * from \"./TextQuestionAnswerTask\";\nexport * from \"./TextRewriterTask\";\nexport * from \"./TextSummaryTask\";\nexport * from \"./TextTranslationTask\";\nexport * from \"./TopicSegmenterTask\";\nexport * from \"./UnloadModelTask\";\nexport * from \"./VectorQuantizeTask\";\nexport * from \"./VectorSimilarityTask\";\n",
14
14
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { TypeImageInput, TypeModel } from \"./base/AiTaskSchemas\";\nimport { AiVisionTask } from \"./base/AiVisionTask\";\n\nconst modelSchema = TypeModel(\"model:BackgroundRemovalTask\");\n\nconst processedImageSchema = {\n type: \"string\",\n contentEncoding: \"base64\",\n contentMediaType: \"image/png\",\n title: \"Image\",\n description: \"Base64-encoded PNG image with transparent background\",\n} as const;\n\nexport const BackgroundRemovalInputSchema = {\n type: \"object\",\n properties: {\n image: TypeImageInput,\n model: modelSchema,\n },\n required: [\"image\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const BackgroundRemovalOutputSchema = {\n type: \"object\",\n properties: {\n image: processedImageSchema,\n },\n required: [\"image\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BackgroundRemovalTaskInput = FromSchema<typeof BackgroundRemovalInputSchema>;\nexport type BackgroundRemovalTaskOutput = FromSchema<typeof BackgroundRemovalOutputSchema>;\n\n/**\n * Removes backgrounds from images using computer vision models\n */\nexport class BackgroundRemovalTask extends AiVisionTask<\n BackgroundRemovalTaskInput,\n BackgroundRemovalTaskOutput\n> {\n public static type = \"BackgroundRemovalTask\";\n public static category = \"AI Vision Model\";\n public static title = \"Background Removal\";\n public static description =\n \"Removes backgrounds from images, producing images with transparent backgrounds\";\n public static inputSchema(): DataPortSchema {\n return BackgroundRemovalInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return BackgroundRemovalOutputSchema as DataPortSchema;\n }\n}\n\n/**\n * Convenience function to run background removal tasks.\n * Creates and executes a BackgroundRemovalTask with the provided input.\n * @param input The input parameters for background removal (image and model)\n * @returns Promise resolving to the image with transparent background\n */\nexport const backgroundRemoval = (\n input: BackgroundRemovalTaskInput,\n config?: JobQueueTaskConfig\n) => {\n return new BackgroundRemovalTask({} as BackgroundRemovalTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n backgroundRemoval: CreateWorkflow<\n BackgroundRemovalTaskInput,\n BackgroundRemovalTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.backgroundRemoval = CreateWorkflow(BackgroundRemovalTask);\n",
15
15
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DataPortSchemaNonBoolean, JsonSchema } from \"@workglow/util\";\nimport { ModelConfigSchema } from \"../../model/ModelSchema\";\n\nexport const TypeLanguage = (annotations: Record<string, unknown> = {}) =>\n ({\n type: \"string\",\n title: \"Language\",\n description: \"The language to use\",\n maxLength: 2,\n minLength: 2,\n ...annotations,\n }) as const;\n\nexport type TypeModelSemantic = \"model\" | `model:${string}`;\n\nexport type TTypeModel = DataPortSchemaNonBoolean & {\n readonly type: \"string\";\n readonly format: TypeModelSemantic;\n};\n\nexport function TypeModelAsString<\n S extends TypeModelSemantic = \"model\",\n O extends Record<string, unknown> = {},\n>(semantic: S = \"model\" as S, options: O = {} as O) {\n if (semantic !== \"model\" && !semantic.startsWith(\"model:\")) {\n throw new Error(\"Invalid semantic value\");\n }\n const taskName = semantic.startsWith(\"model:\")\n ? semantic\n .slice(6)\n .replace(/Task$/, \"\")\n .replaceAll(/[A-Z]/g, (char) => \" \" + char.toLowerCase())\n .trim()\n : null;\n return {\n title: \"Model\",\n description: `The model ${taskName ? `for ${taskName} ` : \"to use\"}`,\n ...options,\n format: semantic,\n type: \"string\",\n } as const satisfies JsonSchema;\n}\n\nexport function TypeModelByDetail<\n S extends TypeModelSemantic = \"model\",\n O extends Record<string, unknown> = {},\n>(semantic: S = \"model\" as S, options: O = {} as O) {\n if (semantic !== \"model\" && !semantic.startsWith(\"model:\")) {\n throw new Error(\"Invalid semantic value\");\n }\n return {\n ...ModelConfigSchema,\n ...options,\n format: semantic,\n } as const satisfies JsonSchema;\n}\n\nexport function TypeModel<\n S extends TypeModelSemantic = \"model\",\n O extends Record<string, unknown> = {},\n>(semantic: S = \"model\" as S, options: O = {} as O) {\n return {\n oneOf: [TypeModelAsString<S, O>(semantic, options), TypeModelByDetail<S, O>(semantic, options)],\n ...options,\n format: semantic,\n } as const satisfies JsonSchema;\n}\n\nexport function TypeSingleOrArray<const T extends DataPortSchemaNonBoolean>(type: T) {\n return {\n anyOf: [type, { type: \"array\", items: type }],\n } as const satisfies JsonSchema;\n}\n\nexport type ImageSource = ImageBitmap | OffscreenCanvas | VideoFrame;\n\n/**\n * Image input schema supporting URIs and base64-encoded images in multiple formats\n */\nexport const TypeImageInput = {\n oneOf: [\n {\n type: \"string\",\n title: \"Image Data\",\n description: \"Image as data-uri\",\n format: \"image:data-uri\",\n },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n data: {\n oneOf: [\n {\n type: \"object\",\n format: \"image:ImageBitmap\",\n title: \"ImageBitmap\",\n },\n {\n type: \"object\",\n format: \"image:OffscreenCanvas\",\n title: \"OffscreenCanvas\",\n },\n {\n type: \"object\",\n format: \"image:VideoFrame\",\n title: \"VideoFrame\",\n },\n {\n type: \"object\",\n properties: {\n data: {\n type: \"array\",\n items: { type: \"number\", format: \"Uint8Clamped\" },\n format: \"Uint8ClampedArray\",\n title: \"Data\",\n description: \"Data of the image\",\n },\n width: { type: \"number\", title: \"Width\", description: \"Width of the image\" },\n height: { type: \"number\", title: \"Height\", description: \"Height of the image\" },\n channels: {\n type: \"number\",\n title: \"Channels\",\n description: \"Channels of the image\",\n },\n rawChannels: {\n type: \"number\",\n title: \"Raw Channels\",\n description: \"Raw channels of the image\",\n },\n },\n additionalProperties: false,\n required: [\"data\", \"width\", \"height\", \"channels\"],\n format: \"image:ImageBinary\",\n title: \"ImageBinary\",\n },\n ],\n },\n width: { type: \"number\", title: \"Width\", description: \"Width of the image\" },\n height: { type: \"number\", title: \"Height\", description: \"Height of the image\" },\n channels: {\n type: \"number\",\n title: \"Channels\",\n description: \"Channels of the image\",\n minimum: 1,\n maximum: 4,\n },\n },\n required: [\"data\", \"width\", \"height\", \"channels\"],\n },\n ],\n title: \"Image\",\n format: \"image\",\n description: \"Image as URL or base64-encoded data\",\n} as const satisfies JsonSchema;\n\n/**\n * Audio input schema supporting URIs and base64-encoded audio in multiple formats\n */\nexport const TypeAudioInput = {\n type: \"string\",\n title: \"Audio\",\n format: \"audio:data-uri\",\n description: \"Audio as data-uri, or Blob\",\n} as const satisfies JsonSchema;\n\n/**\n * Bounding box coordinates\n */\nexport const TypeBoundingBox = {\n type: \"object\",\n properties: {\n x: { type: \"number\", title: \"X coordinate\", description: \"Left edge of the bounding box\" },\n y: { type: \"number\", title: \"Y coordinate\", description: \"Top edge of the bounding box\" },\n width: { type: \"number\", title: \"Width\", description: \"Width of the bounding box\" },\n height: { type: \"number\", title: \"Height\", description: \"Height of the bounding box\" },\n },\n required: [\"x\", \"y\", \"width\", \"height\"],\n additionalProperties: false,\n title: \"Bounding Box\",\n description: \"Bounding box coordinates\",\n} as const satisfies JsonSchema;\n\n/**\n * Classification category with label and confidence score\n */\nexport const TypeCategory = {\n type: \"object\",\n properties: {\n label: { type: \"string\", title: \"Label\", description: \"Category label\" },\n score: {\n type: \"number\",\n title: \"Confidence Score\",\n description: \"Confidence score between 0 and 1\",\n minimum: 0,\n maximum: 1,\n },\n },\n required: [\"label\", \"score\"],\n additionalProperties: false,\n title: \"Category\",\n description: \"Classification category with label and score\",\n} as const satisfies JsonSchema;\n",
16
16
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @description This file contains the implementation of the JobQueueTask class and its derived classes.\n */\n\nimport { JobQueueTaskConfig, TaskInput, type TaskOutput } from \"@workglow/task-graph\";\nimport { convertImageDataToUseableForm, ImageDataSupport } from \"@workglow/util\";\n\nimport { AiJobInput } from \"../../job/AiJob\";\nimport type { ModelConfig } from \"../../model/ModelSchema\";\nimport { AiTask } from \"./AiTask\";\n\nexport interface AiVisionTaskSingleInput extends TaskInput {\n model: string | ModelConfig;\n}\n\n/**\n * A base class for AI related tasks that run in a job queue.\n * Extends the JobQueueTask class to provide LLM-specific functionality.\n */\nexport class AiVisionTask<\n Input extends AiVisionTaskSingleInput = AiVisionTaskSingleInput,\n Output extends TaskOutput = TaskOutput,\n Config extends JobQueueTaskConfig = JobQueueTaskConfig,\n> extends AiTask<Input, Output, Config> {\n public static type: string = \"AiVisionTask\";\n /**\n * Get the input to submit to the job queue.\n * Transforms the task input to AiJobInput format.\n * @param input - The task input\n * @returns The AiJobInput to submit to the queue\n */\n protected override async getJobInput(input: Input): Promise<AiJobInput<Input>> {\n const jobInput = await super.getJobInput(input);\n // TODO: if the queue is not memory based, we need to convert to base64 (or blob?)\n const registeredQueue = await this.resolveQueue(input);\n const queueName = registeredQueue?.server.queueName;\n\n // Image format support by model type and platform, that are transferable:\n // ┌─────────────────────────┬──────────────────────────────────────────────────────────────┬────────────────────────────────────────────┐\n // │ Model Type │ Web Support │ Node Support │\n // ├─────────────────────────┼──────────────────────────────────────────────────────────────┼────────────────────────────────────────────┤\n // │ TENSORFLOW_MEDIAPIPE │ Blob, ImageBitmap, VideoFrame, │ (none) │\n // │ │ OffscreenCanvas (no rendering ctx) │ │\n // ├─────────────────────────┼──────────────────────────────────────────────────────────────┼────────────────────────────────────────────┤\n // │ HF_TRANSFORMERS_ONNX │ Blob, OffscreenCanvas (no rendering ctx), │ Blob, Tensor, ImageBinary, │\n // │ │ ImageBinary, Tensor, DataUri │ DataUri, Sharp │\n // └─────────────────────────┴──────────────────────────────────────────────────────────────┴────────────────────────────────────────────┘\n const supports: ImageDataSupport[] = [\"Blob\"];\n if (input.image) {\n if (queueName === \"TENSORFLOW_MEDIAPIPE\" && \"ImageBitmap\" in globalThis) {\n supports.push(\"ImageBitmap\");\n } else if (queueName === \"TENSORFLOW_MEDIAPIPE\" && \"VideoFrame\" in globalThis) {\n supports.push(\"VideoFrame\");\n }\n const image = await convertImageDataToUseableForm(input.image, supports);\n // @ts-ignore\n jobInput.taskInput.image = image;\n }\n return jobInput;\n }\n}\n",
17
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @description This file contains the implementation of the JobQueueTask class and its derived classes.\n */\n\nimport { Job } from \"@workglow/job-queue\";\nimport {\n JobQueueTask,\n JobQueueTaskConfig,\n TaskConfigurationError,\n TaskInput,\n type TaskOutput,\n} from \"@workglow/task-graph\";\nimport { type JsonSchema, type ServiceRegistry } from \"@workglow/util\";\n\nimport { AiJob, AiJobInput } from \"../../job/AiJob\";\nimport { MODEL_REPOSITORY } from \"../../model/ModelRegistry\";\nimport type { ModelRepository } from \"../../model/ModelRepository\";\nimport type { ModelConfig } from \"../../model/ModelSchema\";\n\nfunction schemaFormat(schema: JsonSchema): string | undefined {\n return typeof schema === \"object\" && schema !== null && \"format\" in schema\n ? schema.format\n : undefined;\n}\n\nexport interface AiSingleTaskInput extends TaskInput {\n model: string | ModelConfig;\n}\n\n/**\n * A base class for AI related tasks that run in a job queue.\n * Extends the JobQueueTask class to provide LLM-specific functionality.\n *\n * Model resolution is handled automatically by the TaskRunner before execution.\n * By the time execute() is called, input.model is always a ModelConfig object.\n */\nexport class AiTask<\n Input extends AiSingleTaskInput = AiSingleTaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends JobQueueTaskConfig = JobQueueTaskConfig,\n> extends JobQueueTask<Input, Output, Config> {\n public static type: string = \"AiTask\";\n\n /**\n * Creates a new AiTask instance\n * @param config - Configuration object for the task\n */\n constructor(input: Partial<Input> = {}, config: Config = {} as Config) {\n const modelLabel =\n typeof input.model === \"string\"\n ? input.model\n : typeof input.model === \"object\" && input.model\n ? input.model.model_id || input.model.title || input.model.provider\n : undefined;\n config.name ||= `${new.target.type || new.target.name}${\n modelLabel ? \" with model \" + modelLabel : \"\"\n }`;\n super(input, config);\n }\n\n // ========================================================================\n // Job creation\n // ========================================================================\n\n /**\n * Get the input to submit to the job queue.\n * Transforms the task input to AiJobInput format.\n *\n * Note: By the time this is called, input.model has already been resolved\n * to a ModelConfig by the TaskRunner's input resolution system.\n *\n * @param input - The task input (with resolved model)\n * @returns The AiJobInput to submit to the queue\n */\n protected override async getJobInput(input: Input): Promise<AiJobInput<Input>> {\n // Model is guaranteed to be resolved by TaskRunner before this is called\n const model = input.model as ModelConfig;\n if (!model || typeof model !== \"object\") {\n throw new TaskConfigurationError(\n \"AiTask: Model was not resolved to ModelConfig - this indicates a bug in the resolution system\"\n );\n }\n\n const runtype = (this.constructor as any).runtype ?? (this.constructor as any).type;\n\n return {\n taskType: runtype,\n aiProvider: model.provider,\n taskInput: input as Input & { model: ModelConfig },\n };\n }\n\n /**\n * Creates a new Job instance for direct execution (without a queue).\n * @param input - The task input\n * @param queueName - The queue name (if any)\n * @returns Promise<Job> - The created job\n */\n override async createJob(\n input: Input,\n queueName?: string\n ): Promise<Job<AiJobInput<Input>, Output>> {\n const jobInput = await this.getJobInput(input);\n const resolvedQueueName = queueName ?? (await this.getDefaultQueueName(input));\n if (!resolvedQueueName) {\n throw new TaskConfigurationError(\"JobQueueTask: Unable to determine queue for AI provider\");\n }\n const job = new AiJob<AiJobInput<Input>, Output>({\n queueName: resolvedQueueName,\n jobRunId: this.config.runnerId, // could be undefined\n input: jobInput,\n });\n return job;\n }\n\n /**\n * Gets the default queue name based on the model's provider.\n * After TaskRunner resolution, input.model is a ModelConfig.\n */\n protected override async getDefaultQueueName(input: Input): Promise<string | undefined> {\n const model = input.model as ModelConfig;\n return model?.provider;\n }\n\n /**\n * Validates that model inputs are valid ModelConfig objects.\n *\n * Note: By the time this is called, string model IDs have already been\n * resolved to ModelConfig objects by the TaskRunner's input resolution system.\n *\n * @param input The input to validate\n * @returns True if the input is valid\n */\n async validateInput(input: Input): Promise<boolean> {\n const inputSchema = this.inputSchema();\n if (typeof inputSchema === \"boolean\") {\n if (inputSchema === false) {\n throw new TaskConfigurationError(`AiTask: Input schema is 'false' and accepts no inputs`);\n }\n return true;\n }\n\n // Find properties with model:TaskName format - need task compatibility check\n const modelTaskProperties = Object.entries<JsonSchema>(\n (inputSchema.properties || {}) as Record<string, JsonSchema>\n ).filter(([key, schema]) => schemaFormat(schema)?.startsWith(\"model:\"));\n\n for (const [key] of modelTaskProperties) {\n const model = input[key];\n if (typeof model === \"object\" && model !== null) {\n // Check task compatibility if tasks array is specified\n const tasks = (model as ModelConfig).tasks;\n if (Array.isArray(tasks) && tasks.length > 0 && !tasks.includes(this.type)) {\n throw new TaskConfigurationError(\n `AiTask: Model for '${key}' is not compatible with task '${this.type}'`\n );\n }\n } else if (model !== undefined && model !== null) {\n // Should be a ModelConfig object after resolution\n throw new TaskConfigurationError(\n `AiTask: Invalid model for '${key}' - expected ModelConfig object`\n );\n }\n }\n\n // Find properties with plain model format - just ensure they're objects\n const modelPlainProperties = Object.entries<JsonSchema>(\n (inputSchema.properties || {}) as Record<string, JsonSchema>\n ).filter(([key, schema]) => schemaFormat(schema) === \"model\");\n\n for (const [key] of modelPlainProperties) {\n const model = input[key];\n if (model !== undefined && model !== null && typeof model !== \"object\") {\n throw new TaskConfigurationError(\n `AiTask: Invalid model for '${key}' - expected ModelConfig object`\n );\n }\n }\n\n return super.validateInput(input);\n }\n\n // dataflows can strip some models that are incompatible with the target task\n // if all of them are stripped, then the task will fail in validateInput\n async narrowInput(input: Input, registry: ServiceRegistry): Promise<Input> {\n // TODO(str): this is very inefficient, we should cache the results, including intermediate results\n const inputSchema = this.inputSchema();\n if (typeof inputSchema === \"boolean\") {\n if (inputSchema === false) {\n throw new TaskConfigurationError(`AiTask: Input schema is 'false' and accepts no inputs`);\n }\n return input;\n }\n const modelTaskProperties = Object.entries<JsonSchema>(\n (inputSchema.properties || {}) as Record<string, JsonSchema>\n ).filter(([key, schema]) => schemaFormat(schema)?.startsWith(\"model:\"));\n if (modelTaskProperties.length > 0) {\n const modelRepo = registry.get<ModelRepository>(MODEL_REPOSITORY);\n const taskModels = await modelRepo.findModelsByTask(this.type);\n for (const [key, propSchema] of modelTaskProperties) {\n const requestedModel = input[key];\n\n if (typeof requestedModel === \"string\") {\n // Verify string model ID is compatible\n const found = taskModels?.find((m) => m.model_id === requestedModel);\n if (!found) {\n (input as any)[key] = undefined;\n }\n } else if (typeof requestedModel === \"object\" && requestedModel !== null) {\n // Verify inline config is compatible\n const model = requestedModel as ModelConfig;\n const tasks = model.tasks;\n if (Array.isArray(tasks) && tasks.length > 0 && !tasks.includes(this.type)) {\n (input as any)[key] = undefined;\n }\n }\n }\n }\n return input;\n }\n}\n",
17
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @description This file contains the implementation of the JobQueueTask class and its derived classes.\n */\n\nimport { Job } from \"@workglow/job-queue\";\nimport {\n type IExecuteReactiveContext,\n JobQueueTask,\n JobQueueTaskConfig,\n TaskConfigurationError,\n TaskInput,\n type TaskOutput,\n} from \"@workglow/task-graph\";\nimport { type JsonSchema, type ServiceRegistry } from \"@workglow/util\";\n\nimport { AiJob, AiJobInput } from \"../../job/AiJob\";\nimport { MODEL_REPOSITORY } from \"../../model/ModelRegistry\";\nimport type { ModelRepository } from \"../../model/ModelRepository\";\nimport type { ModelConfig } from \"../../model/ModelSchema\";\nimport { getAiProviderRegistry } from \"../../provider/AiProviderRegistry\";\n\nfunction schemaFormat(schema: JsonSchema): string | undefined {\n return typeof schema === \"object\" && schema !== null && \"format\" in schema\n ? schema.format\n : undefined;\n}\n\nexport interface AiSingleTaskInput extends TaskInput {\n model: string | ModelConfig;\n}\n\n/**\n * A base class for AI related tasks that run in a job queue.\n * Extends the JobQueueTask class to provide LLM-specific functionality.\n *\n * Model resolution is handled automatically by the TaskRunner before execution.\n * By the time execute() is called, input.model is always a ModelConfig object.\n */\nexport class AiTask<\n Input extends AiSingleTaskInput = AiSingleTaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends JobQueueTaskConfig = JobQueueTaskConfig,\n> extends JobQueueTask<Input, Output, Config> {\n public static type: string = \"AiTask\";\n\n /**\n * Creates a new AiTask instance\n * @param config - Configuration object for the task\n */\n constructor(input: Partial<Input> = {}, config: Config = {} as Config) {\n const modelLabel =\n typeof input.model === \"string\"\n ? input.model\n : typeof input.model === \"object\" && input.model\n ? input.model.model_id || input.model.title || input.model.provider\n : undefined;\n config.name ||= `${new.target.type || new.target.name}${\n modelLabel ? \" with model \" + modelLabel : \"\"\n }`;\n super(input, config);\n }\n\n // ========================================================================\n // Job creation\n // ========================================================================\n\n /**\n * Get the input to submit to the job queue.\n * Transforms the task input to AiJobInput format.\n *\n * Note: By the time this is called, input.model has already been resolved\n * to a ModelConfig by the TaskRunner's input resolution system.\n *\n * @param input - The task input (with resolved model)\n * @returns The AiJobInput to submit to the queue\n */\n protected override async getJobInput(input: Input): Promise<AiJobInput<Input>> {\n // Model is guaranteed to be resolved by TaskRunner before this is called\n const model = input.model as ModelConfig;\n if (!model || typeof model !== \"object\") {\n throw new TaskConfigurationError(\n \"AiTask: Model was not resolved to ModelConfig - this indicates a bug in the resolution system\"\n );\n }\n\n const runtype = (this.constructor as any).runtype ?? (this.constructor as any).type;\n\n return {\n taskType: runtype,\n aiProvider: model.provider,\n taskInput: input as Input & { model: ModelConfig },\n };\n }\n\n /**\n * Creates a new Job instance for direct execution (without a queue).\n * @param input - The task input\n * @param queueName - The queue name (if any)\n * @returns Promise<Job> - The created job\n */\n override async createJob(\n input: Input,\n queueName?: string\n ): Promise<Job<AiJobInput<Input>, Output>> {\n const jobInput = await this.getJobInput(input);\n const resolvedQueueName = queueName ?? (await this.getDefaultQueueName(input));\n if (!resolvedQueueName) {\n throw new TaskConfigurationError(\"JobQueueTask: Unable to determine queue for AI provider\");\n }\n const job = new AiJob<AiJobInput<Input>, Output>({\n queueName: resolvedQueueName,\n jobRunId: this.config.runnerId, // could be undefined\n input: jobInput,\n });\n return job;\n }\n\n /**\n * Gets the default queue name based on the model's provider.\n * After TaskRunner resolution, input.model is a ModelConfig.\n */\n protected override async getDefaultQueueName(input: Input): Promise<string | undefined> {\n const model = input.model as ModelConfig;\n return model?.provider;\n }\n\n /**\n * Delegates to a provider-registered reactive run function if one exists,\n * otherwise falls back to the default Task.executeReactive() (returns output unchanged).\n *\n * Individual task subclasses that override executeReactive() directly take full\n * precedence -- this base implementation is only reached when no subclass override exists.\n */\n override async executeReactive(\n input: Input,\n output: Output,\n context: IExecuteReactiveContext\n ): Promise<Output | undefined> {\n const model = input.model as ModelConfig | undefined;\n if (model && typeof model === \"object\" && model.provider) {\n const taskType = (this.constructor as any).runtype ?? (this.constructor as any).type;\n const reactiveFn = getAiProviderRegistry().getReactiveRunFn<Input, Output>(\n model.provider,\n taskType\n );\n if (reactiveFn) {\n return reactiveFn(input, output, model);\n }\n }\n return super.executeReactive(input, output, context);\n }\n\n /**\n * Validates that model inputs are valid ModelConfig objects.\n *\n * Note: By the time this is called, string model IDs have already been\n * resolved to ModelConfig objects by the TaskRunner's input resolution system.\n *\n * @param input The input to validate\n * @returns True if the input is valid\n */\n async validateInput(input: Input): Promise<boolean> {\n const inputSchema = this.inputSchema();\n if (typeof inputSchema === \"boolean\") {\n if (inputSchema === false) {\n throw new TaskConfigurationError(`AiTask: Input schema is 'false' and accepts no inputs`);\n }\n return true;\n }\n\n // Find properties with model:TaskName format - need task compatibility check\n const modelTaskProperties = Object.entries<JsonSchema>(\n (inputSchema.properties || {}) as Record<string, JsonSchema>\n ).filter(([key, schema]) => schemaFormat(schema)?.startsWith(\"model:\"));\n\n for (const [key] of modelTaskProperties) {\n const model = input[key];\n if (typeof model === \"object\" && model !== null) {\n // Check task compatibility if tasks array is specified\n const tasks = (model as ModelConfig).tasks;\n if (Array.isArray(tasks) && tasks.length > 0 && !tasks.includes(this.type)) {\n throw new TaskConfigurationError(\n `AiTask: Model for '${key}' is not compatible with task '${this.type}'`\n );\n }\n } else if (model !== undefined && model !== null) {\n // Should be a ModelConfig object after resolution\n throw new TaskConfigurationError(\n `AiTask: Invalid model for '${key}' - expected ModelConfig object`\n );\n }\n }\n\n // Find properties with plain model format - just ensure they're objects\n const modelPlainProperties = Object.entries<JsonSchema>(\n (inputSchema.properties || {}) as Record<string, JsonSchema>\n ).filter(([key, schema]) => schemaFormat(schema) === \"model\");\n\n for (const [key] of modelPlainProperties) {\n const model = input[key];\n if (model !== undefined && model !== null && typeof model !== \"object\") {\n throw new TaskConfigurationError(\n `AiTask: Invalid model for '${key}' - expected ModelConfig object`\n );\n }\n }\n\n return super.validateInput(input);\n }\n\n // dataflows can strip some models that are incompatible with the target task\n // if all of them are stripped, then the task will fail in validateInput\n async narrowInput(input: Input, registry: ServiceRegistry): Promise<Input> {\n // TODO(str): this is very inefficient, we should cache the results, including intermediate results\n const inputSchema = this.inputSchema();\n if (typeof inputSchema === \"boolean\") {\n if (inputSchema === false) {\n throw new TaskConfigurationError(`AiTask: Input schema is 'false' and accepts no inputs`);\n }\n return input;\n }\n const modelTaskProperties = Object.entries<JsonSchema>(\n (inputSchema.properties || {}) as Record<string, JsonSchema>\n ).filter(([key, schema]) => schemaFormat(schema)?.startsWith(\"model:\"));\n if (modelTaskProperties.length > 0) {\n const modelRepo = registry.get<ModelRepository>(MODEL_REPOSITORY);\n const taskModels = await modelRepo.findModelsByTask(this.type);\n for (const [key, propSchema] of modelTaskProperties) {\n const requestedModel = input[key];\n\n if (typeof requestedModel === \"string\") {\n // Verify string model ID is compatible\n const found = taskModels?.find((m) => m.model_id === requestedModel);\n if (!found) {\n (input as any)[key] = undefined;\n }\n } else if (typeof requestedModel === \"object\" && requestedModel !== null) {\n // Verify inline config is compatible\n const model = requestedModel as ModelConfig;\n const tasks = model.tasks;\n if (Array.isArray(tasks) && tasks.length > 0 && !tasks.includes(this.type)) {\n (input as any)[key] = undefined;\n }\n }\n }\n }\n return input;\n }\n}\n",
18
18
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DocumentChunk, DocumentChunkDataset, TypeDocumentChunkDataset } from \"@workglow/dataset\";\nimport {\n CreateWorkflow,\n IExecuteContext,\n JobQueueTaskConfig,\n Task,\n Workflow,\n} from \"@workglow/task-graph\";\nimport {\n DataPortSchema,\n FromSchema,\n isTypedArray,\n TypedArray,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util\";\nimport { TypeModel, TypeSingleOrArray } from \"./base/AiTaskSchemas\";\nimport { TextEmbeddingTask } from \"./TextEmbeddingTask\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n dataset: TypeDocumentChunkDataset({\n title: \"Document Chunk Vector Repository\",\n description: \"The document chunk vector repository instance to search in\",\n }),\n query: TypeSingleOrArray({\n oneOf: [\n { type: \"string\" },\n TypedArraySchema({\n title: \"Query Vector\",\n description: \"Pre-computed query vector\",\n }),\n ],\n title: \"Query\",\n description: \"Query string or pre-computed query vector\",\n }),\n model: TypeModel(\"model:TextEmbeddingTask\", {\n title: \"Model\",\n description:\n \"Text embedding model to use for query embedding (required when query is a string)\",\n }),\n topK: {\n type: \"number\",\n title: \"Top K\",\n description: \"Number of top results to return\",\n minimum: 1,\n default: 5,\n },\n filter: {\n type: \"object\",\n title: \"Metadata Filter\",\n description: \"Filter results by metadata fields\",\n },\n scoreThreshold: {\n type: \"number\",\n title: \"Score Threshold\",\n description: \"Minimum similarity score threshold (0-1)\",\n minimum: 0,\n maximum: 1,\n default: 0,\n },\n returnVectors: {\n type: \"boolean\",\n title: \"Return Vectors\",\n description: \"Whether to return vector embeddings in results\",\n default: false,\n },\n },\n required: [\"dataset\", \"query\"],\n if: {\n properties: {\n query: { type: \"string\" },\n },\n },\n then: {\n required: [\"dataset\", \"query\", \"model\"],\n },\n else: {},\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n chunks: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Text Chunks\",\n description: \"Retrieved text chunks\",\n },\n chunk_ids: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"IDs\",\n description: \"IDs of retrieved chunks\",\n },\n metadata: {\n type: \"array\",\n items: {\n type: \"object\",\n title: \"Metadata\",\n description: \"Metadata of retrieved chunk\",\n },\n title: \"Metadata\",\n description: \"Metadata of retrieved chunks\",\n },\n scores: {\n type: \"array\",\n items: { type: \"number\" },\n title: \"Scores\",\n description: \"Similarity scores for each result\",\n },\n vectors: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Vector\",\n description: \"Vector embedding\",\n }),\n title: \"Vectors\",\n description: \"Vector embeddings (if returnVectors is true)\",\n },\n count: {\n type: \"number\",\n title: \"Count\",\n description: \"Number of results returned\",\n },\n },\n required: [\"chunks\", \"chunk_ids\", \"metadata\", \"scores\", \"count\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type ChunkRetrievalTaskInput = FromSchema<typeof inputSchema, TypedArraySchemaOptions>;\nexport type ChunkRetrievalTaskOutput = FromSchema<typeof outputSchema, TypedArraySchemaOptions>;\n\n/**\n * End-to-end retrieval task that combines embedding generation (if needed) and vector search.\n * Simplifies the RAG pipeline by handling the full retrieval process.\n */\nexport class ChunkRetrievalTask extends Task<\n ChunkRetrievalTaskInput,\n ChunkRetrievalTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"ChunkRetrievalTask\";\n public static category = \"RAG\";\n public static title = \"Chunk Retrieval\";\n public static description = \"End-to-end retrieval: embed query and search for similar chunks\";\n public static cacheable = true;\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async execute(\n input: ChunkRetrievalTaskInput,\n context: IExecuteContext\n ): Promise<ChunkRetrievalTaskOutput> {\n const {\n dataset,\n query,\n topK = 5,\n filter,\n model,\n scoreThreshold = 0,\n returnVectors = false,\n } = input;\n\n // Repository is resolved by input resolver system before execution\n const repo = dataset as DocumentChunkDataset;\n\n // Determine query vector\n let queryVectors: TypedArray[];\n\n if (\n typeof query === \"string\" ||\n (Array.isArray(query) && query.every((q) => typeof q === \"string\"))\n ) {\n // If query is a string or array of strings, model must be provided (enforced by schema)\n if (!model) {\n throw new Error(\n \"Model is required when query is a string. Please provide a model with format 'model:TextEmbeddingTask'.\"\n );\n }\n const embeddingTask = context.own(new TextEmbeddingTask({ text: query, model }));\n const embeddingResult = await embeddingTask.run();\n queryVectors = Array.isArray(embeddingResult.vector)\n ? embeddingResult.vector\n : [embeddingResult.vector];\n } else if (isTypedArray(query) || (Array.isArray(query) && query.every(isTypedArray))) {\n // Query is already a vector\n queryVectors = Array.isArray(query) ? query : [query];\n } else {\n throw new Error(\"Query must be a string, array of strings, or TypedArray\");\n }\n\n // Convert to Float32Array for repository search (TODO: Check if repo expects Float32Array by default)\n const searchVectors = queryVectors.map((v) =>\n v instanceof Float32Array ? v : new Float32Array(v)\n );\n\n const results: Array<DocumentChunk & { score: number }> = [];\n for (const searchVector of searchVectors) {\n const res = await repo.similaritySearch(searchVector, {\n topK,\n filter,\n scoreThreshold,\n });\n results.push(...res);\n }\n\n // Extract text chunks from metadata\n // Assumes metadata has a 'text' or 'content' field\n const chunks = results.map((r) => {\n const meta = r.metadata as any;\n return meta.text || meta.content || meta.chunk || JSON.stringify(meta);\n });\n\n const output: ChunkRetrievalTaskOutput = {\n chunks,\n chunk_ids: results.map((r) => r.chunk_id),\n metadata: results.map((r) => r.metadata),\n scores: results.map((r) => r.score),\n count: results.length,\n };\n\n if (returnVectors) {\n output.vectors = results.map((r) => r.vector);\n }\n\n return output;\n }\n}\n\nexport const chunkRetrieval = (input: ChunkRetrievalTaskInput, config?: JobQueueTaskConfig) => {\n return new ChunkRetrievalTask({} as ChunkRetrievalTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n chunkRetrieval: CreateWorkflow<\n ChunkRetrievalTaskInput,\n ChunkRetrievalTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.chunkRetrieval = CreateWorkflow(ChunkRetrievalTask);\n",
19
19
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, Workflow } from \"@workglow/task-graph\";\nimport {\n DataPortSchema,\n FromSchema,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util\";\nimport { AiTask } from \"./base/AiTask\";\nimport { TypeModel, TypeSingleOrArray } from \"./base/AiTaskSchemas\";\n\nconst modelSchema = TypeModel(\"model:TextEmbeddingTask\");\n\nexport const TextEmbeddingInputSchema = {\n type: \"object\",\n properties: {\n text: TypeSingleOrArray({\n type: \"string\",\n title: \"Text\",\n description: \"The text to embed\",\n }),\n model: modelSchema,\n },\n required: [\"text\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const TextEmbeddingOutputSchema = {\n type: \"object\",\n properties: {\n vector: TypeSingleOrArray(\n TypedArraySchema({\n title: \"Vector\",\n description: \"The vector embedding of the text\",\n })\n ),\n },\n required: [\"vector\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type TextEmbeddingTaskInput = FromSchema<\n typeof TextEmbeddingInputSchema,\n TypedArraySchemaOptions\n>;\nexport type TextEmbeddingTaskOutput = FromSchema<\n typeof TextEmbeddingOutputSchema,\n TypedArraySchemaOptions\n>;\n\n/**\n * A task that generates vector embeddings for text using a specified embedding model.\n * Embeddings are numerical representations of text that capture semantic meaning,\n * useful for similarity comparisons and semantic search.\n *\n * @extends AiTask\n */\nexport class TextEmbeddingTask extends AiTask<TextEmbeddingTaskInput, TextEmbeddingTaskOutput> {\n public static type = \"TextEmbeddingTask\";\n public static category = \"AI Text Model\";\n public static title = \"Text Embedding\";\n public static description = \"Generates vector embeddings for text to capture semantic meaning\";\n public static inputSchema(): DataPortSchema {\n return TextEmbeddingInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return TextEmbeddingOutputSchema as DataPortSchema;\n }\n}\n\n/**\n * Convenience function to create and run a text embedding task.\n * @param input - Input containing text(s) and model(s) for embedding\n * @returns Promise resolving to the generated embeddings\n */\nexport const textEmbedding = async (input: TextEmbeddingTaskInput, config?: JobQueueTaskConfig) => {\n return new TextEmbeddingTask({} as TextEmbeddingTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n textEmbedding: CreateWorkflow<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.textEmbedding = CreateWorkflow(TextEmbeddingTask);\n",
20
20
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ChunkNodeSchema, type ChunkNode } from \"@workglow/dataset\";\nimport {\n CreateWorkflow,\n IExecuteContext,\n JobQueueTaskConfig,\n Task,\n Workflow,\n} from \"@workglow/task-graph\";\nimport {\n DataPortSchema,\n FromSchema,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n doc_id: {\n type: \"string\",\n title: \"Document ID\",\n description: \"The document ID\",\n },\n chunks: {\n type: \"array\",\n items: ChunkNodeSchema(),\n title: \"Chunks\",\n description: \"Array of chunk nodes\",\n },\n vectors: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Vector\",\n description: \"Vector embedding\",\n }),\n title: \"Vectors\",\n description: \"Embeddings from TextEmbeddingTask\",\n },\n },\n required: [\"chunks\", \"vectors\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n ids: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"IDs\",\n description: \"Chunk IDs for vector store\",\n },\n vectors: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Vector\",\n description: \"Vector embedding\",\n }),\n title: \"Vectors\",\n description: \"Vector embeddings\",\n },\n metadata: {\n type: \"array\",\n items: {\n type: \"object\",\n title: \"Metadata\",\n description: \"Metadata for vector store\",\n },\n title: \"Metadata\",\n description: \"Metadata for each vector\",\n },\n texts: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Texts\",\n description: \"Chunk texts (for reference)\",\n },\n },\n required: [\"ids\", \"vectors\", \"metadata\", \"texts\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type ChunkToVectorTaskInput = FromSchema<typeof inputSchema, TypedArraySchemaOptions>;\nexport type ChunkToVectorTaskOutput = FromSchema<typeof outputSchema, TypedArraySchemaOptions>;\n\n/**\n * Task to transform chunk nodes and embeddings into vector store format\n * Bridges HierarchicalChunker + TextEmbedding → VectorStoreUpsert\n */\nexport class ChunkToVectorTask extends Task<\n ChunkToVectorTaskInput,\n ChunkToVectorTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"ChunkToVectorTask\";\n public static category = \"Document\";\n public static title = \"Chunk to Vector\";\n public static description = \"Transform chunks and embeddings to vector store format\";\n public static cacheable = true;\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async execute(\n input: ChunkToVectorTaskInput,\n context: IExecuteContext\n ): Promise<ChunkToVectorTaskOutput> {\n const { chunks, vectors } = input;\n\n const chunkArray = chunks as ChunkNode[];\n\n if (!chunkArray || !vectors) {\n throw new Error(\"Both chunks and vector are required\");\n }\n\n if (chunkArray.length !== vectors.length) {\n throw new Error(`Mismatch: ${chunkArray.length} chunks but ${vectors.length} vectors`);\n }\n\n const ids: string[] = [];\n const metadata: any[] = [];\n const texts: string[] = [];\n\n for (let i = 0; i < chunkArray.length; i++) {\n const chunk = chunkArray[i];\n\n ids.push(chunk.chunkId);\n texts.push(chunk.text);\n\n metadata.push({\n doc_id: chunk.doc_id,\n chunkId: chunk.chunkId,\n leafNodeId: chunk.nodePath[chunk.nodePath.length - 1],\n depth: chunk.depth,\n text: chunk.text,\n nodePath: chunk.nodePath,\n // Include enrichment if present\n ...(chunk.enrichment || {}),\n });\n }\n\n return {\n ids,\n vectors,\n metadata,\n texts,\n };\n }\n}\n\nexport const chunkToVector = (input: ChunkToVectorTaskInput, config?: JobQueueTaskConfig) => {\n return new ChunkToVectorTask({} as ChunkToVectorTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n chunkToVector: CreateWorkflow<\n ChunkToVectorTaskInput,\n ChunkToVectorTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.chunkToVector = CreateWorkflow(ChunkToVectorTask);\n",
21
21
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DocumentChunkDataset, TypeDocumentChunkDataset } from \"@workglow/dataset\";\nimport {\n CreateWorkflow,\n IExecuteContext,\n JobQueueTaskConfig,\n Task,\n Workflow,\n} from \"@workglow/task-graph\";\nimport {\n DataPortSchema,\n FromSchema,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n dataset: TypeDocumentChunkDataset({\n title: \"Document Chunk Vector Repository\",\n description:\n \"The document chunk vector repository instance to search in (must support hybridSearch)\",\n }),\n queryVector: TypedArraySchema({\n title: \"Query Vector\",\n description: \"The query vector for semantic search\",\n }),\n queryText: {\n type: \"string\",\n title: \"Query Text\",\n description: \"The query text for full-text search\",\n },\n topK: {\n type: \"number\",\n title: \"Top K\",\n description: \"Number of top results to return\",\n minimum: 1,\n default: 10,\n },\n filter: {\n type: \"object\",\n title: \"Metadata Filter\",\n description: \"Filter results by metadata fields\",\n },\n scoreThreshold: {\n type: \"number\",\n title: \"Score Threshold\",\n description: \"Minimum combined score threshold (0-1)\",\n minimum: 0,\n maximum: 1,\n default: 0,\n },\n vectorWeight: {\n type: \"number\",\n title: \"Vector Weight\",\n description: \"Weight for vector similarity (0-1), remainder goes to text relevance\",\n minimum: 0,\n maximum: 1,\n default: 0.7,\n },\n returnVectors: {\n type: \"boolean\",\n title: \"Return Vectors\",\n description: \"Whether to return vector embeddings in results\",\n default: false,\n },\n },\n required: [\"dataset\", \"queryVector\", \"queryText\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n chunks: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Text Chunks\",\n description: \"Retrieved text chunks\",\n },\n ids: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"IDs\",\n description: \"IDs of retrieved chunks\",\n },\n metadata: {\n type: \"array\",\n items: {\n type: \"object\",\n title: \"Metadata\",\n description: \"Metadata of retrieved chunk\",\n },\n title: \"Metadata\",\n description: \"Metadata of retrieved chunks\",\n },\n scores: {\n type: \"array\",\n items: { type: \"number\" },\n title: \"Scores\",\n description: \"Combined relevance scores for each result\",\n },\n vectors: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Vector\",\n description: \"Vector embedding\",\n }),\n title: \"Vectors\",\n description: \"Vector embeddings (if returnVectors is true)\",\n },\n count: {\n type: \"number\",\n title: \"Count\",\n description: \"Number of results returned\",\n },\n },\n required: [\"chunks\", \"ids\", \"metadata\", \"scores\", \"count\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type HybridSearchTaskInput = FromSchema<typeof inputSchema, TypedArraySchemaOptions>;\nexport type HybridSearchTaskOutput = FromSchema<typeof outputSchema, TypedArraySchemaOptions>;\n\n/**\n * Task for hybrid search combining vector similarity and full-text search.\n * Requires a document chunk vector repository that supports hybridSearch (e.g., Postgres with pgvector).\n *\n * Hybrid search improves retrieval by combining:\n * - Semantic similarity (vector search) - understands meaning\n * - Keyword matching (full-text search) - finds exact terms\n */\nexport class ChunkVectorHybridSearchTask extends Task<\n HybridSearchTaskInput,\n HybridSearchTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"ChunkVectorHybridSearchTask\";\n public static category = \"RAG\";\n public static title = \"Hybrid Search\";\n public static description = \"Combined vector + full-text search for improved retrieval\";\n public static cacheable = true;\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async execute(\n input: HybridSearchTaskInput,\n context: IExecuteContext\n ): Promise<HybridSearchTaskOutput> {\n const {\n dataset,\n queryVector,\n queryText,\n topK = 10,\n filter,\n scoreThreshold = 0,\n vectorWeight = 0.7,\n returnVectors = false,\n } = input;\n\n // Repository is resolved by input resolver system before execution\n const repo = dataset as DocumentChunkDataset;\n\n // Check if repository supports hybrid search\n if (!repo.hybridSearch) {\n throw new Error(\"Dataset does not support hybrid search.\");\n }\n\n // Convert to Float32Array for repository search (repo expects Float32Array by default)\n const searchVector =\n queryVector instanceof Float32Array ? queryVector : new Float32Array(queryVector);\n\n // Perform hybrid search\n const results = await repo.hybridSearch(searchVector, {\n textQuery: queryText,\n topK,\n filter,\n scoreThreshold,\n vectorWeight,\n });\n\n // Extract text chunks from metadata\n const chunks = results.map((r) => {\n const meta = r.metadata as Record<string, string>;\n return meta.text || meta.content || meta.chunk || JSON.stringify(meta);\n });\n\n const output: HybridSearchTaskOutput = {\n chunks,\n ids: results.map((r) => r.chunk_id),\n metadata: results.map((r) => r.metadata),\n scores: results.map((r) => r.score),\n count: results.length,\n };\n\n if (returnVectors) {\n output.vectors = results.map((r) => r.vector);\n }\n\n return output;\n }\n}\n\nexport const hybridSearch = async (\n input: HybridSearchTaskInput,\n config?: JobQueueTaskConfig\n): Promise<HybridSearchTaskOutput> => {\n return new ChunkVectorHybridSearchTask({} as HybridSearchTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n hybridSearch: CreateWorkflow<HybridSearchTaskInput, HybridSearchTaskOutput, JobQueueTaskConfig>;\n }\n}\n\nWorkflow.prototype.hybridSearch = CreateWorkflow(ChunkVectorHybridSearchTask);\n",
22
22
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DocumentChunkDataset, TypeDocumentChunkDataset } from \"@workglow/dataset\";\nimport {\n CreateWorkflow,\n IExecuteContext,\n JobQueueTaskConfig,\n Task,\n Workflow,\n} from \"@workglow/task-graph\";\nimport {\n DataPortSchema,\n FromSchema,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n dataset: TypeDocumentChunkDataset({\n title: \"Vector Repository\",\n description: \"The vector repository instance to search in\",\n }),\n query: TypedArraySchema({\n title: \"Query Vector\",\n description: \"The query vector to search for similar vectors\",\n }),\n topK: {\n type: \"number\",\n title: \"Top K\",\n description: \"Number of top results to return\",\n minimum: 1,\n default: 10,\n },\n filter: {\n type: \"object\",\n title: \"Metadata Filter\",\n description: \"Filter results by metadata fields\",\n },\n scoreThreshold: {\n type: \"number\",\n title: \"Score Threshold\",\n description: \"Minimum similarity score threshold (0-1)\",\n minimum: 0,\n maximum: 1,\n default: 0,\n },\n },\n required: [\"dataset\", \"query\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n ids: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"IDs\",\n description: \"IDs of matching vectors\",\n },\n vectors: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Vector\",\n description: \"Matching vector embedding\",\n }),\n title: \"Vectors\",\n description: \"Matching vector embeddings\",\n },\n metadata: {\n type: \"array\",\n items: {\n type: \"object\",\n title: \"Metadata\",\n description: \"Metadata of matching vector\",\n },\n title: \"Metadata\",\n description: \"Metadata of matching vectors\",\n },\n scores: {\n type: \"array\",\n items: { type: \"number\" },\n title: \"Scores\",\n description: \"Similarity scores for each result\",\n },\n count: {\n type: \"number\",\n title: \"Count\",\n description: \"Number of results returned\",\n },\n },\n required: [\"ids\", \"vectors\", \"metadata\", \"scores\", \"count\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type VectorStoreSearchTaskInput = FromSchema<typeof inputSchema, TypedArraySchemaOptions>;\nexport type VectorStoreSearchTaskOutput = FromSchema<typeof outputSchema, TypedArraySchemaOptions>;\n\n/**\n * Task for searching similar vectors in a document chunk dataset.\n * Returns top-K most similar vectors with their metadata and scores.\n */\nexport class ChunkVectorSearchTask extends Task<\n VectorStoreSearchTaskInput,\n VectorStoreSearchTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"ChunkVectorSearchTask\";\n public static category = \"Vector Store\";\n public static title = \"Vector Store Search\";\n public static description = \"Search for similar vectors in a document chunk dataset\";\n public static cacheable = true;\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async execute(\n input: VectorStoreSearchTaskInput,\n context: IExecuteContext\n ): Promise<VectorStoreSearchTaskOutput> {\n const { dataset, query, topK = 10, filter, scoreThreshold = 0 } = input;\n\n const repo = dataset as DocumentChunkDataset;\n\n const results = await repo.similaritySearch(query, {\n topK,\n filter,\n scoreThreshold,\n });\n\n return {\n ids: results.map((r) => r.chunk_id),\n vectors: results.map((r) => r.vector),\n metadata: results.map((r) => r.metadata),\n scores: results.map((r) => r.score),\n count: results.length,\n };\n }\n}\n\nexport const vectorStoreSearch = (\n input: VectorStoreSearchTaskInput,\n config?: JobQueueTaskConfig\n) => {\n return new ChunkVectorSearchTask({} as VectorStoreSearchTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n vectorStoreSearch: CreateWorkflow<\n VectorStoreSearchTaskInput,\n VectorStoreSearchTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.vectorStoreSearch = CreateWorkflow(ChunkVectorSearchTask);\n",
23
23
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DocumentChunkDataset, TypeDocumentChunkDataset } from \"@workglow/dataset\";\nimport {\n CreateWorkflow,\n IExecuteContext,\n JobQueueTaskConfig,\n Task,\n Workflow,\n} from \"@workglow/task-graph\";\nimport {\n DataPortSchema,\n FromSchema,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util\";\nimport { TypeSingleOrArray } from \"./base/AiTaskSchemas\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n dataset: TypeDocumentChunkDataset({\n title: \"Document Chunk Vector Repository\",\n description: \"The document chunk vector repository instance to store vectors in\",\n }),\n doc_id: {\n type: \"string\",\n title: \"Document ID\",\n description: \"The document ID\",\n },\n vectors: TypeSingleOrArray(\n TypedArraySchema({\n title: \"Vectors\",\n description: \"The vector embeddings\",\n })\n ),\n metadata: TypeSingleOrArray({\n type: \"object\",\n title: \"Metadata\",\n description: \"Metadata associated with the vector\",\n additionalProperties: true,\n }),\n },\n required: [\"dataset\", \"doc_id\", \"vectors\", \"metadata\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n count: {\n type: \"number\",\n title: \"Count\",\n description: \"Number of vectors upserted\",\n },\n doc_id: {\n type: \"string\",\n title: \"Document ID\",\n description: \"The document ID\",\n },\n chunk_ids: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Chunk IDs\",\n description: \"Chunk IDs of upserted vectors\",\n },\n },\n required: [\"count\", \"doc_id\", \"chunk_ids\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type VectorStoreUpsertTaskInput = FromSchema<\n typeof inputSchema,\n TypedArraySchemaOptions // & TypeVectorRepositoryOptions\n>;\nexport type VectorStoreUpsertTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * Task for upserting (insert or update) vectors into a vector repository.\n * Supports both single and bulk operations.\n */\nexport class ChunkVectorUpsertTask extends Task<\n VectorStoreUpsertTaskInput,\n VectorStoreUpsertTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"ChunkVectorUpsertTask\";\n public static category = \"Vector Store\";\n public static title = \"Add to Vector Store\";\n public static description = \"Store vector embeddings with metadata in a document chunk dataset\";\n public static cacheable = false; // Has side effects\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async execute(\n input: VectorStoreUpsertTaskInput,\n context: IExecuteContext\n ): Promise<VectorStoreUpsertTaskOutput> {\n const { dataset, doc_id, vectors, metadata } = input;\n\n // Normalize inputs to arrays\n const vectorArray = Array.isArray(vectors) ? vectors : [vectors];\n const metadataArray = Array.isArray(metadata)\n ? metadata\n : Array(vectorArray.length).fill(metadata);\n\n const repo = dataset as DocumentChunkDataset;\n\n await context.updateProgress(1, \"Upserting vectors\");\n\n // Bulk upsert if multiple items\n if (vectorArray.length > 1) {\n if (vectorArray.length !== metadataArray.length) {\n throw new Error(\"Mismatch: vectors and metadata arrays must have the same length\");\n }\n const entities = vectorArray.map((vector, i) => {\n const metadataItem = metadataArray[i];\n return {\n doc_id,\n vector,\n metadata: metadataItem,\n };\n });\n const results = await repo.putBulk(entities);\n const chunk_ids = results.map((r) => r.chunk_id);\n return {\n doc_id,\n chunk_ids,\n count: chunk_ids.length,\n };\n } else if (vectorArray.length === 1) {\n // Single upsert\n const metadataItem = metadataArray[0];\n const result = await repo.put({\n doc_id,\n vector: vectorArray[0],\n metadata: metadataItem,\n });\n return {\n doc_id,\n chunk_ids: [result.chunk_id],\n count: 1,\n };\n }\n\n return {\n doc_id,\n chunk_ids: [],\n count: 0,\n };\n }\n}\n\nexport const chunkVectorUpsert = (\n input: VectorStoreUpsertTaskInput,\n config?: JobQueueTaskConfig\n) => {\n return new ChunkVectorUpsertTask({} as VectorStoreUpsertTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n chunkVectorUpsert: CreateWorkflow<\n VectorStoreUpsertTaskInput,\n VectorStoreUpsertTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.chunkVectorUpsert = CreateWorkflow(ChunkVectorUpsertTask);\n",
24
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, Task, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\n\nexport const ContextFormat = {\n SIMPLE: \"simple\",\n NUMBERED: \"numbered\",\n XML: \"xml\",\n MARKDOWN: \"markdown\",\n JSON: \"json\",\n} as const;\n\nexport type ContextFormat = (typeof ContextFormat)[keyof typeof ContextFormat];\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n chunks: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Text Chunks\",\n description: \"Retrieved text chunks to format\",\n },\n metadata: {\n type: \"array\",\n items: {\n type: \"object\",\n title: \"Metadata\",\n description: \"Metadata for each chunk\",\n },\n title: \"Metadata\",\n description: \"Metadata for each chunk (optional)\",\n },\n scores: {\n type: \"array\",\n items: { type: \"number\" },\n title: \"Scores\",\n description: \"Relevance scores for each chunk (optional)\",\n },\n format: {\n type: \"string\",\n enum: Object.values(ContextFormat),\n title: \"Format\",\n description: \"Format for the context output\",\n default: ContextFormat.SIMPLE,\n },\n maxLength: {\n type: \"number\",\n title: \"Max Length\",\n description: \"Maximum length of context in characters (0 = unlimited)\",\n minimum: 0,\n default: 0,\n },\n includeMetadata: {\n type: \"boolean\",\n title: \"Include Metadata\",\n description: \"Whether to include metadata in the context\",\n default: false,\n },\n separator: {\n type: \"string\",\n title: \"Separator\",\n description: \"Separator between chunks\",\n default: \"\\n\\n\",\n },\n },\n required: [\"chunks\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n context: {\n type: \"string\",\n title: \"Context\",\n description: \"Formatted context string for LLM\",\n },\n chunksUsed: {\n type: \"number\",\n title: \"Chunks Used\",\n description: \"Number of chunks included in context\",\n },\n totalLength: {\n type: \"number\",\n title: \"Total Length\",\n description: \"Total length of context in characters\",\n },\n },\n required: [\"context\", \"chunksUsed\", \"totalLength\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type ContextBuilderTaskInput = FromSchema<typeof inputSchema>;\nexport type ContextBuilderTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * Task for formatting retrieved chunks into context for LLM prompts.\n * Supports various formatting styles and length constraints.\n */\nexport class ContextBuilderTask extends Task<\n ContextBuilderTaskInput,\n ContextBuilderTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"ContextBuilderTask\";\n public static category = \"RAG\";\n public static title = \"Context Builder\";\n public static description = \"Format retrieved chunks into context for LLM prompts\";\n public static cacheable = true;\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async executeReactive(\n input: ContextBuilderTaskInput,\n output: ContextBuilderTaskOutput\n ): Promise<ContextBuilderTaskOutput> {\n const {\n chunks,\n metadata = [],\n scores = [],\n format = ContextFormat.SIMPLE,\n maxLength = 0,\n includeMetadata = false,\n separator = \"\\n\\n\",\n } = input;\n\n let context = \"\";\n let chunksUsed = 0;\n\n for (let i = 0; i < chunks.length; i++) {\n const chunk = chunks[i];\n const meta = metadata[i];\n const score = scores[i];\n\n let formattedChunk = this.formatChunk(chunk, meta, score, i, format, includeMetadata);\n\n // Check length constraint\n if (maxLength > 0) {\n const potentialLength = context.length + formattedChunk.length + separator.length;\n if (potentialLength > maxLength) {\n // Try to fit partial chunk if it's the first one\n if (chunksUsed === 0) {\n const available = maxLength - context.length;\n if (available > 100) {\n // Only include partial if we have reasonable space\n formattedChunk = formattedChunk.substring(0, available - 3) + \"...\";\n context += formattedChunk;\n chunksUsed++;\n }\n }\n break;\n }\n }\n\n if (chunksUsed > 0) {\n context += separator;\n }\n context += formattedChunk;\n chunksUsed++;\n }\n\n return {\n context,\n chunksUsed,\n totalLength: context.length,\n };\n }\n\n private formatChunk(\n chunk: string,\n metadata: any,\n score: number | undefined,\n index: number,\n format: ContextFormat,\n includeMetadata: boolean\n ): string {\n switch (format) {\n case ContextFormat.NUMBERED:\n return this.formatNumbered(chunk, metadata, score, index, includeMetadata);\n case ContextFormat.XML:\n return this.formatXML(chunk, metadata, score, index, includeMetadata);\n case ContextFormat.MARKDOWN:\n return this.formatMarkdown(chunk, metadata, score, index, includeMetadata);\n case ContextFormat.JSON:\n return this.formatJSON(chunk, metadata, score, index, includeMetadata);\n case ContextFormat.SIMPLE:\n default:\n return chunk;\n }\n }\n\n private formatNumbered(\n chunk: string,\n metadata: any,\n score: number | undefined,\n index: number,\n includeMetadata: boolean\n ): string {\n let result = `[${index + 1}] ${chunk}`;\n if (includeMetadata && metadata) {\n const metaStr = this.formatMetadataInline(metadata, score);\n if (metaStr) {\n result += ` ${metaStr}`;\n }\n }\n return result;\n }\n\n private formatXML(\n chunk: string,\n metadata: any,\n score: number | undefined,\n index: number,\n includeMetadata: boolean\n ): string {\n let result = `<chunk id=\"${index + 1}\">`;\n if (includeMetadata && (metadata || score !== undefined)) {\n result += \"\\n <metadata>\";\n if (score !== undefined) {\n result += `\\n <score>${score.toFixed(4)}</score>`;\n }\n if (metadata) {\n for (const [key, value] of Object.entries(metadata)) {\n result += `\\n <${key}>${this.escapeXML(String(value))}</${key}>`;\n }\n }\n result += \"\\n </metadata>\";\n result += `\\n <content>${this.escapeXML(chunk)}</content>`;\n result += \"\\n</chunk>\";\n } else {\n result += `${this.escapeXML(chunk)}</chunk>`;\n }\n return result;\n }\n\n private formatMarkdown(\n chunk: string,\n metadata: any,\n score: number | undefined,\n index: number,\n includeMetadata: boolean\n ): string {\n let result = `### Chunk ${index + 1}\\n\\n`;\n if (includeMetadata && (metadata || score !== undefined)) {\n result += \"**Metadata:**\\n\";\n if (score !== undefined) {\n result += `- Score: ${score.toFixed(4)}\\n`;\n }\n if (metadata) {\n for (const [key, value] of Object.entries(metadata)) {\n result += `- ${key}: ${value}\\n`;\n }\n }\n result += \"\\n\";\n }\n result += chunk;\n return result;\n }\n\n private formatJSON(\n chunk: string,\n metadata: any,\n score: number | undefined,\n index: number,\n includeMetadata: boolean\n ): string {\n const obj: any = {\n index: index + 1,\n content: chunk,\n };\n if (includeMetadata) {\n if (score !== undefined) {\n obj.score = score;\n }\n if (metadata) {\n obj.metadata = metadata;\n }\n }\n return JSON.stringify(obj);\n }\n\n private formatMetadataInline(metadata: any, score: number | undefined): string {\n const parts: string[] = [];\n if (score !== undefined) {\n parts.push(`score=${score.toFixed(4)}`);\n }\n if (metadata) {\n for (const [key, value] of Object.entries(metadata)) {\n parts.push(`${key}=${value}`);\n }\n }\n return parts.length > 0 ? `(${parts.join(\", \")})` : \"\";\n }\n\n private escapeXML(str: string): string {\n return str\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&apos;\");\n }\n}\n\nexport const contextBuilder = (input: ContextBuilderTaskInput, config?: JobQueueTaskConfig) => {\n return new ContextBuilderTask({} as ContextBuilderTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n contextBuilder: CreateWorkflow<\n ContextBuilderTaskInput,\n ContextBuilderTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.contextBuilder = CreateWorkflow(ContextBuilderTask);\n",
24
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { estimateTokens } from \"@workglow/dataset\";\nimport {\n CreateWorkflow,\n IExecuteReactiveContext,\n JobQueueTaskConfig,\n Task,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { CountTokensTask } from \"./CountTokensTask\";\nimport { TypeModel } from \"./base/AiTaskSchemas\";\n\nexport const ContextFormat = {\n SIMPLE: \"simple\",\n NUMBERED: \"numbered\",\n XML: \"xml\",\n MARKDOWN: \"markdown\",\n JSON: \"json\",\n} as const;\n\nexport type ContextFormat = (typeof ContextFormat)[keyof typeof ContextFormat];\n\nconst modelSchema = TypeModel(\"model\", {\n title: \"Model\",\n description: \"Model to use for token counting (optional, falls back to estimation)\",\n});\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n chunks: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Text Chunks\",\n description: \"Retrieved text chunks to format\",\n },\n metadata: {\n type: \"array\",\n items: {\n type: \"object\",\n title: \"Metadata\",\n description: \"Metadata for each chunk\",\n },\n title: \"Metadata\",\n description: \"Metadata for each chunk (optional)\",\n },\n scores: {\n type: \"array\",\n items: { type: \"number\" },\n title: \"Scores\",\n description: \"Relevance scores for each chunk (optional)\",\n },\n format: {\n type: \"string\",\n enum: Object.values(ContextFormat),\n title: \"Format\",\n description: \"Format for the context output\",\n default: ContextFormat.SIMPLE,\n },\n maxLength: {\n type: \"number\",\n title: \"Max Length\",\n description: \"Maximum length of context in characters (0 = unlimited)\",\n minimum: 0,\n default: 0,\n },\n maxTokens: {\n type: \"number\",\n title: \"Max Tokens\",\n description:\n \"Maximum number of tokens in context (0 = unlimited). Takes precedence over maxLength when set.\",\n minimum: 0,\n default: 0,\n },\n includeMetadata: {\n type: \"boolean\",\n title: \"Include Metadata\",\n description: \"Whether to include metadata in the context\",\n default: false,\n },\n separator: {\n type: \"string\",\n title: \"Separator\",\n description: \"Separator between chunks\",\n default: \"\\n\\n\",\n },\n model: modelSchema,\n },\n required: [\"chunks\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n context: {\n type: \"string\",\n title: \"Context\",\n description: \"Formatted context string for LLM\",\n },\n chunksUsed: {\n type: \"number\",\n title: \"Chunks Used\",\n description: \"Number of chunks included in context\",\n },\n totalLength: {\n type: \"number\",\n title: \"Total Length\",\n description: \"Total length of context in characters\",\n },\n totalTokens: {\n type: \"number\",\n title: \"Total Tokens\",\n description: \"Estimated token count of the context\",\n },\n },\n required: [\"context\", \"chunksUsed\", \"totalLength\", \"totalTokens\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type ContextBuilderTaskInput = FromSchema<typeof inputSchema>;\nexport type ContextBuilderTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * Task for formatting retrieved chunks into context for LLM prompts.\n * Supports various formatting styles and length/token constraints.\n *\n * Token budgeting (for `maxTokens`) uses {@link estimateTokens} to approximate\n * the token count of the generated context. This is a character-based estimate\n * rather than an exact tokenizer tied to a specific model.\n */\nexport class ContextBuilderTask extends Task<\n ContextBuilderTaskInput,\n ContextBuilderTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"ContextBuilderTask\";\n public static category = \"RAG\";\n public static title = \"Context Builder\";\n public static description = \"Format retrieved chunks into context for LLM prompts\";\n public static cacheable = true;\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async executeReactive(\n input: ContextBuilderTaskInput,\n _output: ContextBuilderTaskOutput,\n context: IExecuteReactiveContext\n ): Promise<ContextBuilderTaskOutput> {\n const {\n chunks,\n metadata = [],\n scores = [],\n format = ContextFormat.SIMPLE,\n maxLength = 0,\n maxTokens = 0,\n includeMetadata = false,\n separator = \"\\n\\n\",\n } = input;\n\n let countFn: (text: string) => Promise<number> = async (text: string) => estimateTokens(text);\n if (input.model) {\n const countTask = context.own(new CountTokensTask({ model: input.model }));\n countFn = async (text: string): Promise<number> => {\n try {\n const result = await countTask.run({ text });\n return result.count;\n } catch (_err) {\n // Fall back to local token estimation if CountTokensTask is unavailable or fails.\n return estimateTokens(text);\n }\n };\n }\n\n const useTokenBudget = maxTokens > 0;\n\n let ctx = \"\";\n let chunksUsed = 0;\n\n for (let i = 0; i < chunks.length; i++) {\n const chunk = chunks[i];\n const meta = metadata[i];\n const score = scores[i];\n\n let formattedChunk = this.formatChunk(chunk, meta, score, i, format, includeMetadata);\n const prefix = chunksUsed > 0 ? separator : \"\";\n const candidate = ctx + prefix + formattedChunk;\n\n if (useTokenBudget) {\n if ((await countFn(candidate)) > maxTokens) {\n if (chunksUsed === 0) {\n let truncated = formattedChunk;\n while (truncated.length > 10 && (await countFn(truncated)) > maxTokens) {\n truncated = truncated.substring(0, Math.floor(truncated.length * 0.9));\n }\n if (truncated.length > 10) {\n ctx = truncated.substring(0, truncated.length - 3) + \"...\";\n chunksUsed++;\n }\n }\n break;\n }\n } else if (maxLength > 0) {\n if (candidate.length > maxLength) {\n if (chunksUsed === 0) {\n const available = maxLength - ctx.length;\n if (available > 10) {\n formattedChunk = formattedChunk.substring(0, available - 3) + \"...\";\n ctx += formattedChunk;\n chunksUsed++;\n }\n }\n break;\n }\n }\n\n ctx = candidate;\n chunksUsed++;\n }\n\n const totalTokens = await countFn(ctx);\n\n return {\n context: ctx,\n chunksUsed,\n totalLength: ctx.length,\n totalTokens,\n };\n }\n\n private formatChunk(\n chunk: string,\n metadata: any,\n score: number | undefined,\n index: number,\n format: ContextFormat,\n includeMetadata: boolean\n ): string {\n switch (format) {\n case ContextFormat.NUMBERED:\n return this.formatNumbered(chunk, metadata, score, index, includeMetadata);\n case ContextFormat.XML:\n return this.formatXML(chunk, metadata, score, index, includeMetadata);\n case ContextFormat.MARKDOWN:\n return this.formatMarkdown(chunk, metadata, score, index, includeMetadata);\n case ContextFormat.JSON:\n return this.formatJSON(chunk, metadata, score, index, includeMetadata);\n case ContextFormat.SIMPLE:\n default:\n return chunk;\n }\n }\n\n private formatNumbered(\n chunk: string,\n metadata: any,\n score: number | undefined,\n index: number,\n includeMetadata: boolean\n ): string {\n let result = `[${index + 1}] ${chunk}`;\n if (includeMetadata && metadata) {\n const metaStr = this.formatMetadataInline(metadata, score);\n if (metaStr) {\n result += ` ${metaStr}`;\n }\n }\n return result;\n }\n\n private formatXML(\n chunk: string,\n metadata: any,\n score: number | undefined,\n index: number,\n includeMetadata: boolean\n ): string {\n let result = `<chunk id=\"${index + 1}\">`;\n if (includeMetadata && (metadata || score !== undefined)) {\n result += \"\\n <metadata>\";\n if (score !== undefined) {\n result += `\\n <score>${score.toFixed(4)}</score>`;\n }\n if (metadata) {\n for (const [key, value] of Object.entries(metadata)) {\n result += `\\n <${key}>${this.escapeXML(String(value))}</${key}>`;\n }\n }\n result += \"\\n </metadata>\";\n result += `\\n <content>${this.escapeXML(chunk)}</content>`;\n result += \"\\n</chunk>\";\n } else {\n result += `${this.escapeXML(chunk)}</chunk>`;\n }\n return result;\n }\n\n private formatMarkdown(\n chunk: string,\n metadata: any,\n score: number | undefined,\n index: number,\n includeMetadata: boolean\n ): string {\n let result = `### Chunk ${index + 1}\\n\\n`;\n if (includeMetadata && (metadata || score !== undefined)) {\n result += \"**Metadata:**\\n\";\n if (score !== undefined) {\n result += `- Score: ${score.toFixed(4)}\\n`;\n }\n if (metadata) {\n for (const [key, value] of Object.entries(metadata)) {\n result += `- ${key}: ${value}\\n`;\n }\n }\n result += \"\\n\";\n }\n result += chunk;\n return result;\n }\n\n private formatJSON(\n chunk: string,\n metadata: any,\n score: number | undefined,\n index: number,\n includeMetadata: boolean\n ): string {\n const obj: any = {\n index: index + 1,\n content: chunk,\n };\n if (includeMetadata) {\n if (score !== undefined) {\n obj.score = score;\n }\n if (metadata) {\n obj.metadata = metadata;\n }\n }\n return JSON.stringify(obj);\n }\n\n private formatMetadataInline(metadata: any, score: number | undefined): string {\n const parts: string[] = [];\n if (score !== undefined) {\n parts.push(`score=${score.toFixed(4)}`);\n }\n if (metadata) {\n for (const [key, value] of Object.entries(metadata)) {\n parts.push(`${key}=${value}`);\n }\n }\n return parts.length > 0 ? `(${parts.join(\", \")})` : \"\";\n }\n\n private escapeXML(str: string): string {\n return str\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&apos;\");\n }\n}\n\nexport const contextBuilder = (input: ContextBuilderTaskInput, config?: JobQueueTaskConfig) => {\n return new ContextBuilderTask({} as ContextBuilderTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n contextBuilder: CreateWorkflow<\n ContextBuilderTaskInput,\n ContextBuilderTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.contextBuilder = CreateWorkflow(ContextBuilderTask);\n",
25
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { AiTask } from \"./base/AiTask\";\nimport { TypeModel } from \"./base/AiTaskSchemas\";\n\nconst modelSchema = TypeModel(\"model\");\n\nexport const CountTokensInputSchema = {\n type: \"object\",\n properties: {\n text: {\n type: \"string\",\n title: \"Text\",\n description: \"The text to count tokens for\",\n },\n model: modelSchema,\n },\n required: [\"text\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const CountTokensOutputSchema = {\n type: \"object\",\n properties: {\n count: {\n type: \"number\",\n title: \"Token Count\",\n description: \"The number of tokens in the text\",\n },\n },\n required: [\"count\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type CountTokensTaskInput = FromSchema<typeof CountTokensInputSchema>;\nexport type CountTokensTaskOutput = FromSchema<typeof CountTokensOutputSchema>;\n\n/**\n * A task that counts the number of tokens in a text string using a specified model's tokenizer.\n * Token counts are model-specific and are useful for managing context window limits and\n * budgeting token usage in RAG pipelines.\n *\n * @extends AiTask\n */\nexport class CountTokensTask extends AiTask<CountTokensTaskInput, CountTokensTaskOutput> {\n public static type = \"CountTokensTask\";\n public static category = \"AI Text Model\";\n public static title = \"Count Tokens\";\n public static description =\n \"Counts the number of tokens in a text string using the model's tokenizer\";\n public static cacheable = true;\n public static inputSchema(): DataPortSchema {\n return CountTokensInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return CountTokensOutputSchema as DataPortSchema;\n }\n}\n\n/**\n * Convenience function to create and run a count tokens task.\n * @param input - Input containing text and model for token counting\n * @returns Promise resolving to the token count\n */\nexport const countTokens = async (input: CountTokensTaskInput, config?: JobQueueTaskConfig) => {\n return new CountTokensTask({} as CountTokensTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n countTokens: CreateWorkflow<CountTokensTaskInput, CountTokensTaskOutput, JobQueueTaskConfig>;\n }\n}\n\nWorkflow.prototype.countTokens = CreateWorkflow(CountTokensTask);\n",
25
26
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n getChildren,\n hasChildren,\n type DocumentNode,\n type Entity,\n type NodeEnrichment,\n} from \"@workglow/dataset\";\nimport {\n CreateWorkflow,\n IExecuteContext,\n JobQueueTaskConfig,\n Task,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { ModelConfig } from \"../model/ModelSchema\";\nimport { TextNamedEntityRecognitionTask } from \"./TextNamedEntityRecognitionTask\";\nimport { TextSummaryTask } from \"./TextSummaryTask\";\nimport { TypeModel } from \"./base/AiTaskSchemas\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n doc_id: {\n type: \"string\",\n title: \"Document ID\",\n description: \"The document ID\",\n },\n documentTree: {\n title: \"Document Tree\",\n description: \"The hierarchical document tree to enrich\",\n },\n generateSummaries: {\n type: \"boolean\",\n title: \"Generate Summaries\",\n description: \"Whether to generate summaries for sections\",\n default: true,\n },\n extractEntities: {\n type: \"boolean\",\n title: \"Extract Entities\",\n description: \"Whether to extract named entities\",\n default: true,\n },\n summaryModel: TypeModel(\"model:TextSummaryTask\", {\n title: \"Summary Model\",\n description: \"Model to use for summary generation (optional)\",\n }),\n summaryThreshold: {\n type: \"number\",\n title: \"Summary Threshold\",\n description: \"Minimum combined text length (node + children) to warrant generating a summary\",\n default: 500,\n },\n nerModel: TypeModel(\"model:TextNamedEntityRecognitionTask\", {\n title: \"NER Model\",\n description: \"Model to use for named entity recognition (optional)\",\n }),\n },\n required: [],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n doc_id: {\n type: \"string\",\n title: \"Document ID\",\n description: \"The document ID (passed through)\",\n },\n documentTree: {\n title: \"Document Tree\",\n description: \"The enriched document tree\",\n },\n summaryCount: {\n type: \"number\",\n title: \"Summary Count\",\n description: \"Number of summaries generated\",\n },\n entityCount: {\n type: \"number\",\n title: \"Entity Count\",\n description: \"Number of entities extracted\",\n },\n },\n required: [\"doc_id\", \"documentTree\", \"summaryCount\", \"entityCount\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type DocumentEnricherTaskInput = FromSchema<typeof inputSchema>;\nexport type DocumentEnricherTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * Task for enriching document nodes with summaries and entities\n * Uses bottom-up propagation to roll up child information to parents\n */\nexport class DocumentEnricherTask extends Task<\n DocumentEnricherTaskInput,\n DocumentEnricherTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"DocumentEnricherTask\";\n public static category = \"Document\";\n public static title = \"Document Enricher\";\n public static description = \"Enrich document nodes with summaries and entities\";\n public static cacheable = true;\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async execute(\n input: DocumentEnricherTaskInput,\n context: IExecuteContext\n ): Promise<DocumentEnricherTaskOutput> {\n const {\n doc_id,\n documentTree,\n generateSummaries = true,\n extractEntities = true,\n summaryModel: summaryModelConfig,\n summaryThreshold = 500,\n nerModel: nerModelConfig,\n } = input;\n\n const root = documentTree as DocumentNode;\n const summaryModel = summaryModelConfig ? (summaryModelConfig as ModelConfig) : undefined;\n const nerModel = nerModelConfig ? (nerModelConfig as ModelConfig) : undefined;\n let summaryCount = 0;\n let entityCount = 0;\n\n const extract =\n extractEntities && nerModel\n ? async (text: string) => {\n const result = await context\n .own(new TextNamedEntityRecognitionTask({ text, model: nerModel }))\n .run();\n return result.entities.map((e) => ({\n type: e.entity,\n text: e.word,\n score: e.score,\n }));\n }\n : undefined;\n\n // Bottom-up enrichment\n const enrichedRoot = await this.enrichNode(\n root,\n context,\n generateSummaries && summaryModel ? summaryModel : undefined,\n summaryThreshold,\n extract,\n (count) => (summaryCount += count),\n (count) => (entityCount += count)\n );\n\n return {\n doc_id: doc_id as string,\n documentTree: enrichedRoot,\n summaryCount,\n entityCount,\n };\n }\n\n /**\n * Enrich a node recursively (bottom-up)\n */\n private async enrichNode(\n node: DocumentNode,\n context: IExecuteContext,\n summaryModel: ModelConfig | undefined,\n summaryThreshold: number,\n extract: ((text: string) => Promise<Entity[]>) | undefined,\n onSummary: (count: number) => void,\n onEntity: (count: number) => void\n ): Promise<DocumentNode> {\n // If node has children, enrich them first\n let enrichedChildren: DocumentNode[] | undefined;\n if (hasChildren(node)) {\n const children = getChildren(node);\n enrichedChildren = await Promise.all(\n children.map((child) =>\n this.enrichNode(\n child,\n context,\n summaryModel,\n summaryThreshold,\n extract,\n onSummary,\n onEntity\n )\n )\n );\n }\n\n // Generate enrichment for this node\n const enrichment: NodeEnrichment = {};\n\n // Generate summary (for sections and documents)\n if (summaryModel && (node.kind === \"section\" || node.kind === \"document\")) {\n if (enrichedChildren && enrichedChildren.length > 0) {\n // Summary of children\n enrichment.summary = await this.generateSummary(\n node,\n enrichedChildren,\n context,\n summaryModel,\n summaryThreshold\n );\n } else {\n // Leaf section summary\n enrichment.summary = await this.generateLeafSummary(\n node.text,\n context,\n summaryModel,\n summaryThreshold\n );\n }\n if (enrichment.summary) {\n onSummary(1);\n }\n }\n\n // Extract entities\n if (extract) {\n enrichment.entities = await this.extractEntities(node, enrichedChildren, extract);\n if (enrichment.entities) {\n onEntity(enrichment.entities.length);\n }\n }\n\n // Create enriched node\n const enrichedNode: DocumentNode = {\n ...node,\n enrichment: Object.keys(enrichment).length > 0 ? enrichment : undefined,\n };\n\n if (enrichedChildren) {\n (enrichedNode as any).children = enrichedChildren;\n }\n\n return enrichedNode;\n }\n\n /**\n * Private method to summarize text using the TextSummaryTask\n */\n private async summarize(\n text: string,\n context: IExecuteContext,\n model: ModelConfig\n ): Promise<string> {\n // TODO: Handle truncation of text if needed, based on model configuration\n return (await context.own(new TextSummaryTask()).run({ text, model })).text;\n }\n\n /**\n * Generate summary for a node with children\n */\n private async generateSummary(\n node: DocumentNode,\n children: DocumentNode[],\n context: IExecuteContext,\n model: ModelConfig,\n threshold: number\n ): Promise<string | undefined> {\n const textParts: string[] = [];\n\n // Include the node's own text\n const nodeText = node.text?.trim();\n if (nodeText) {\n textParts.push(nodeText);\n }\n\n // Include children summaries/texts\n const childTexts = children\n .map((child) => {\n if (child.enrichment?.summary) {\n return child.enrichment.summary;\n }\n return child.text;\n })\n .join(\" \")\n .trim();\n\n if (childTexts) {\n textParts.push(childTexts);\n }\n\n const combinedText = textParts.join(\" \").trim();\n if (!combinedText) {\n return undefined;\n }\n\n // Check if summary is warranted based on threshold\n if (combinedText.length < threshold) {\n return undefined;\n }\n\n const summaryParts: string[] = [];\n\n // Summarize the node's own text first\n if (nodeText) {\n const nodeSummary = await this.summarize(nodeText, context, model);\n if (nodeSummary) {\n summaryParts.push(nodeSummary);\n }\n }\n\n // Include children summaries/texts\n if (childTexts) {\n summaryParts.push(childTexts);\n }\n\n const combinedSummaries = summaryParts.join(\" \").trim();\n if (!combinedSummaries) {\n return undefined;\n }\n\n const result = await this.summarize(combinedSummaries, context, model);\n return result;\n }\n\n /**\n * Generate summary for a leaf node\n */\n private async generateLeafSummary(\n text: string,\n context: IExecuteContext,\n model: ModelConfig,\n threshold: number\n ): Promise<string | undefined> {\n const trimmedText = text.trim();\n if (!trimmedText) {\n return undefined;\n }\n\n // Check if summary is warranted based on threshold\n if (trimmedText.length < threshold) {\n return undefined;\n }\n\n const result = await this.summarize(trimmedText, context, model);\n return result;\n }\n\n /**\n * Extract and roll up entities from node and children\n */\n private async extractEntities(\n node: DocumentNode,\n children: DocumentNode[] | undefined,\n extract: ((text: string) => Promise<Entity[]>) | undefined\n ): Promise<Entity[] | undefined> {\n const entities: Entity[] = [];\n\n // Collect from children first\n if (children) {\n for (const child of children) {\n if (child.enrichment?.entities) {\n entities.push(...child.enrichment.entities);\n }\n }\n }\n\n const text = node.text?.trim();\n if (text && extract) {\n const nodeEntities = await extract(text);\n if (nodeEntities?.length) {\n entities.push(...nodeEntities);\n }\n }\n\n // Deduplicate by text\n const unique = new Map<string, Entity>();\n for (const entity of entities) {\n const key = `${entity.text}::${entity.type}`;\n const existing = unique.get(key);\n if (!existing || entity.score > existing.score) {\n unique.set(key, entity);\n }\n }\n\n const result = Array.from(unique.values());\n return result.length > 0 ? result : undefined;\n }\n}\n\nexport const documentEnricher = (input: DocumentEnricherTaskInput, config?: JobQueueTaskConfig) => {\n return new DocumentEnricherTask({} as DocumentEnricherTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n documentEnricher: CreateWorkflow<\n DocumentEnricherTaskInput,\n DocumentEnricherTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.documentEnricher = CreateWorkflow(DocumentEnricherTask);\n",
26
27
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { AiTask } from \"./base/AiTask\";\nimport { TypeModel } from \"./base/AiTaskSchemas\";\n\nconst modelSchema = TypeModel(\"model:TextNamedEntityRecognitionTask\");\n\nexport const TextNamedEntityRecognitionInputSchema = {\n type: \"object\",\n properties: {\n text: {\n type: \"string\",\n title: \"Text\",\n description: \"The text to extract named entities from\",\n },\n blockList: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n title: \"Block List\",\n description: \"The entity types to exclude from results\",\n \"x-ui-group\": \"Configuration\",\n \"x-ui-group-open\": false,\n },\n model: modelSchema,\n },\n required: [\"text\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const TextNamedEntityRecognitionOutputSchema = {\n type: \"object\",\n properties: {\n entities: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n entity: {\n type: \"string\",\n title: \"Entity\",\n description: \"The type of the named entity\",\n },\n score: {\n type: \"number\",\n title: \"Score\",\n description: \"The confidence score for this entity\",\n },\n word: {\n type: \"string\",\n title: \"Word\",\n description: \"The extracted text of the named entity\",\n },\n },\n required: [\"entity\", \"score\", \"word\"],\n additionalProperties: false,\n },\n title: \"Entities\",\n description: \"The extracted named entities with their types, scores, and text\",\n },\n },\n required: [\"entities\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type TextNamedEntityRecognitionTaskInput = FromSchema<\n typeof TextNamedEntityRecognitionInputSchema\n>;\nexport type TextNamedEntityRecognitionTaskOutput = FromSchema<\n typeof TextNamedEntityRecognitionOutputSchema\n>;\n\n/**\n * Extracts named entities from text using language models\n */\nexport class TextNamedEntityRecognitionTask extends AiTask<\n TextNamedEntityRecognitionTaskInput,\n TextNamedEntityRecognitionTaskOutput\n> {\n public static type = \"TextNamedEntityRecognitionTask\";\n public static category = \"AI Text Model\";\n public static title = \"Named Entity Recognition\";\n public static description = \"Extracts named entities from text\";\n public static inputSchema(): DataPortSchema {\n return TextNamedEntityRecognitionInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return TextNamedEntityRecognitionOutputSchema as DataPortSchema;\n }\n}\n\n/**\n * Convenience function to run named entity recognition tasks.\n * Creates and executes a TextNamedEntityRecognitionTask with the provided input.\n * @param input The input parameters for named entity recognition (text and model)\n * @returns Promise resolving to the extracted named entities with types, scores, and text\n */\nexport const textNamedEntityRecognition = (\n input: TextNamedEntityRecognitionTaskInput,\n config?: JobQueueTaskConfig\n) => {\n return new TextNamedEntityRecognitionTask({} as TextNamedEntityRecognitionTaskInput, config).run(\n input\n );\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n textNamedEntityRecognition: CreateWorkflow<\n TextNamedEntityRecognitionTaskInput,\n TextNamedEntityRecognitionTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.textNamedEntityRecognition = CreateWorkflow(TextNamedEntityRecognitionTask);\n",
27
28
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { TypeModel } from \"./base/AiTaskSchemas\";\nimport { StreamingAiTask } from \"./base/StreamingAiTask\";\n\nconst modelSchema = TypeModel(\"model:TextSummaryTask\");\n\nexport const TextSummaryInputSchema = {\n type: \"object\",\n properties: {\n text: {\n type: \"string\",\n title: \"Text\",\n description: \"The text to summarize\",\n },\n model: modelSchema,\n },\n required: [\"text\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const TextSummaryOutputSchema = {\n type: \"object\",\n properties: {\n text: {\n type: \"string\",\n title: \"Text\",\n description: \"The summarized text\",\n \"x-stream\": \"append\",\n },\n },\n required: [\"text\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type TextSummaryTaskInput = FromSchema<typeof TextSummaryInputSchema>;\nexport type TextSummaryTaskOutput = FromSchema<typeof TextSummaryOutputSchema>;\n\n/**\n * This summarizes a piece of text\n */\n\nexport class TextSummaryTask extends StreamingAiTask<TextSummaryTaskInput, TextSummaryTaskOutput> {\n public static type = \"TextSummaryTask\";\n public static category = \"AI Text Model\";\n public static title = \"Text Summary\";\n public static description =\n \"Summarizes text into a shorter form while preserving key information\";\n public static inputSchema(): DataPortSchema {\n return TextSummaryInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return TextSummaryOutputSchema as DataPortSchema;\n }\n}\n\n/**\n * Convenience function to run text summary tasks.\n * Creates and executes a text summary task with the provided input.\n * @param input The input parameters for text summary (text and model)\n * @returns Promise resolving to the summarized text output(s)\n */\nexport const textSummary = async (input: TextSummaryTaskInput, config?: JobQueueTaskConfig) => {\n return new TextSummaryTask({} as TextSummaryTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n textSummary: CreateWorkflow<TextSummaryTaskInput, TextSummaryTaskOutput, JobQueueTaskConfig>;\n }\n}\n\nWorkflow.prototype.textSummary = CreateWorkflow(TextSummaryTask);\n",
@@ -31,7 +32,7 @@
31
32
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { TypeImageInput, TypeModel } from \"./base/AiTaskSchemas\";\nimport { AiVisionTask } from \"./base/AiVisionTask\";\n\nconst modelSchema = TypeModel(\"model:FaceLandmarkerTask\");\n\n/**\n * A landmark point with x, y, z coordinates.\n */\nconst TypeLandmark = {\n type: \"object\",\n properties: {\n x: {\n type: \"number\",\n title: \"X Coordinate\",\n description: \"X coordinate normalized to [0.0, 1.0]\",\n },\n y: {\n type: \"number\",\n title: \"Y Coordinate\",\n description: \"Y coordinate normalized to [0.0, 1.0]\",\n },\n z: {\n type: \"number\",\n title: \"Z Coordinate\",\n description: \"Z coordinate (depth)\",\n },\n },\n required: [\"x\", \"y\", \"z\"],\n additionalProperties: false,\n} as const;\n\n/**\n * A blendshape coefficient representing facial expression.\n */\nconst TypeBlendshape = {\n type: \"object\",\n properties: {\n label: {\n type: \"string\",\n title: \"Blendshape Label\",\n description: \"Name of the blendshape (e.g., 'browDownLeft', 'eyeBlinkRight', etc.)\",\n },\n score: {\n type: \"number\",\n title: \"Coefficient Value\",\n description: \"Coefficient value for this blendshape\",\n },\n },\n required: [\"label\", \"score\"],\n additionalProperties: false,\n} as const;\n\n/**\n * A 4x4 transformation matrix.\n */\nconst TypeTransformationMatrix = {\n type: \"array\",\n items: { type: \"number\" },\n minItems: 16,\n maxItems: 16,\n title: \"Transformation Matrix\",\n description: \"4x4 transformation matrix for face effects rendering\",\n} as const;\n\n/**\n * Detection result for a single face.\n */\nconst TypeFaceLandmarkerDetection = {\n type: \"object\",\n properties: {\n landmarks: {\n type: \"array\",\n items: TypeLandmark,\n title: \"Landmarks\",\n description: \"478 facial landmarks in image coordinates\",\n },\n blendshapes: {\n type: \"array\",\n items: TypeBlendshape,\n title: \"Blendshapes\",\n description: \"52 blendshape coefficients representing facial expressions\",\n },\n transformationMatrix: TypeTransformationMatrix,\n },\n required: [\"landmarks\"],\n additionalProperties: false,\n} as const;\n\nexport const FaceLandmarkerInputSchema = {\n type: \"object\",\n properties: {\n image: TypeImageInput,\n model: modelSchema,\n numFaces: {\n type: \"number\",\n minimum: 1,\n maximum: 10,\n default: 1,\n title: \"Number of Faces\",\n description: \"The maximum number of faces to detect\",\n \"x-ui-group\": \"Configuration\",\n },\n minFaceDetectionConfidence: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n default: 0.5,\n title: \"Min Face Detection Confidence\",\n description: \"Minimum confidence score for face detection\",\n \"x-ui-group\": \"Configuration\",\n },\n minFacePresenceConfidence: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n default: 0.5,\n title: \"Min Face Presence Confidence\",\n description: \"Minimum confidence score for face presence\",\n \"x-ui-group\": \"Configuration\",\n },\n minTrackingConfidence: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n default: 0.5,\n title: \"Min Tracking Confidence\",\n description: \"Minimum confidence score for face tracking\",\n \"x-ui-group\": \"Configuration\",\n },\n outputFaceBlendshapes: {\n type: \"boolean\",\n default: false,\n title: \"Output Face Blendshapes\",\n description: \"Whether to output blendshape coefficients for facial expressions\",\n \"x-ui-group\": \"Configuration\",\n },\n outputFacialTransformationMatrixes: {\n type: \"boolean\",\n default: false,\n title: \"Output Facial Transformation Matrix\",\n description: \"Whether to output transformation matrix for effects rendering\",\n \"x-ui-group\": \"Configuration\",\n },\n },\n required: [\"image\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const FaceLandmarkerOutputSchema = {\n type: \"object\",\n properties: {\n faces: {\n oneOf: [\n { type: \"array\", items: TypeFaceLandmarkerDetection },\n { type: \"array\", items: { type: \"array\", items: TypeFaceLandmarkerDetection } },\n ],\n title: \"Face Detections\",\n description: \"Detected faces with landmarks, blendshapes, and transformation matrices\",\n },\n },\n required: [\"faces\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type FaceLandmarkerTaskInput = FromSchema<typeof FaceLandmarkerInputSchema>;\nexport type FaceLandmarkerTaskOutput = FromSchema<typeof FaceLandmarkerOutputSchema>;\n\n/**\n * Detects facial landmarks and expressions in images using MediaPipe Face Landmarker.\n * Identifies 478 facial landmarks, 52 blendshape coefficients for expressions,\n * and provides transformation matrices for AR effects.\n */\nexport class FaceLandmarkerTask extends AiVisionTask<\n FaceLandmarkerTaskInput,\n FaceLandmarkerTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"FaceLandmarkerTask\";\n public static category = \"AI Vision Model\";\n public static title = \"Face Landmarker\";\n public static description =\n \"Detects facial landmarks and expressions in images. Identifies 478 facial landmarks, blendshapes for expressions, and transformation matrices for AR effects.\";\n public static inputSchema(): DataPortSchema {\n return FaceLandmarkerInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return FaceLandmarkerOutputSchema as DataPortSchema;\n }\n}\n\n/**\n * Convenience function to run face landmark detection tasks.\n * Creates and executes a FaceLandmarkerTask with the provided input.\n * @param input The input parameters for face landmark detection (image, model, and optional configuration)\n * @returns Promise resolving to the detected facial landmarks, blendshapes, and transformation matrices\n */\nexport const faceLandmarker = (input: FaceLandmarkerTaskInput, config?: JobQueueTaskConfig) => {\n return new FaceLandmarkerTask({} as FaceLandmarkerTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n faceLandmarker: CreateWorkflow<\n FaceLandmarkerTaskInput,\n FaceLandmarkerTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.faceLandmarker = CreateWorkflow(FaceLandmarkerTask);\n",
32
33
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { TypeImageInput, TypeModel } from \"./base/AiTaskSchemas\";\nimport { AiVisionTask } from \"./base/AiVisionTask\";\n\nconst modelSchema = TypeModel(\"model:GestureRecognizerTask\");\n\n/**\n * A landmark point with x, y, z coordinates.\n */\nconst TypeLandmark = {\n type: \"object\",\n properties: {\n x: {\n type: \"number\",\n title: \"X Coordinate\",\n description: \"X coordinate normalized to [0.0, 1.0]\",\n },\n y: {\n type: \"number\",\n title: \"Y Coordinate\",\n description: \"Y coordinate normalized to [0.0, 1.0]\",\n },\n z: {\n type: \"number\",\n title: \"Z Coordinate\",\n description: \"Z coordinate (depth)\",\n },\n },\n required: [\"x\", \"y\", \"z\"],\n additionalProperties: false,\n} as const;\n\n/**\n * A recognized gesture with label and confidence score.\n */\nconst TypeGesture = {\n type: \"object\",\n properties: {\n label: {\n type: \"string\",\n title: \"Gesture Label\",\n description: \"The recognized gesture (e.g., 'Thumb_Up', 'Victory', etc.)\",\n },\n score: {\n type: \"number\",\n title: \"Confidence Score\",\n description: \"Confidence score for the gesture\",\n },\n },\n required: [\"label\", \"score\"],\n additionalProperties: false,\n} as const;\n\n/**\n * Handedness classification (left or right hand).\n */\nconst TypeHandedness = {\n type: \"object\",\n properties: {\n label: {\n type: \"string\",\n title: \"Hand Label\",\n description: \"Whether the hand is 'Left' or 'Right'\",\n },\n score: {\n type: \"number\",\n title: \"Confidence Score\",\n description: \"Confidence score for the handedness classification\",\n },\n },\n required: [\"label\", \"score\"],\n additionalProperties: false,\n} as const;\n\n/**\n * Detection result for a single hand.\n */\nconst TypeHandGestureDetection = {\n type: \"object\",\n properties: {\n gestures: {\n type: \"array\",\n items: TypeGesture,\n title: \"Gestures\",\n description: \"Recognized gestures for this hand\",\n },\n handedness: {\n type: \"array\",\n items: TypeHandedness,\n title: \"Handedness\",\n description: \"Handedness classification (left/right)\",\n },\n landmarks: {\n type: \"array\",\n items: TypeLandmark,\n title: \"Landmarks\",\n description: \"21 hand landmarks in image coordinates\",\n },\n worldLandmarks: {\n type: \"array\",\n items: TypeLandmark,\n title: \"World Landmarks\",\n description: \"21 hand landmarks in 3D world coordinates (meters)\",\n },\n },\n required: [\"gestures\", \"handedness\", \"landmarks\", \"worldLandmarks\"],\n additionalProperties: false,\n} as const;\n\nexport const GestureRecognizerInputSchema = {\n type: \"object\",\n properties: {\n image: TypeImageInput,\n model: modelSchema,\n numHands: {\n type: \"number\",\n minimum: 1,\n maximum: 10,\n default: 1,\n title: \"Number of Hands\",\n description: \"The maximum number of hands to detect\",\n \"x-ui-group\": \"Configuration\",\n },\n minHandDetectionConfidence: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n default: 0.5,\n title: \"Min Hand Detection Confidence\",\n description: \"Minimum confidence score for hand detection\",\n \"x-ui-group\": \"Configuration\",\n },\n minHandPresenceConfidence: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n default: 0.5,\n title: \"Min Hand Presence Confidence\",\n description: \"Minimum confidence score for hand presence\",\n \"x-ui-group\": \"Configuration\",\n },\n minTrackingConfidence: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n default: 0.5,\n title: \"Min Tracking Confidence\",\n description: \"Minimum confidence score for hand tracking\",\n \"x-ui-group\": \"Configuration\",\n },\n },\n required: [\"image\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const GestureRecognizerOutputSchema = {\n type: \"object\",\n properties: {\n hands: {\n oneOf: [\n { type: \"array\", items: TypeHandGestureDetection },\n { type: \"array\", items: { type: \"array\", items: TypeHandGestureDetection } },\n ],\n title: \"Hand Detections\",\n description: \"Detected hands with gestures, handedness, and landmarks\",\n },\n },\n required: [\"hands\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type GestureRecognizerTaskInput = FromSchema<typeof GestureRecognizerInputSchema>;\nexport type GestureRecognizerTaskOutput = FromSchema<typeof GestureRecognizerOutputSchema>;\n\n/**\n * Recognizes hand gestures in images using MediaPipe Gesture Recognizer.\n * Detects hand landmarks, identifies gestures (like thumbs up, victory sign, etc.),\n * and classifies left vs. right hands.\n */\nexport class GestureRecognizerTask extends AiVisionTask<\n GestureRecognizerTaskInput,\n GestureRecognizerTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"GestureRecognizerTask\";\n public static category = \"AI Vision Model\";\n public static title = \"Gesture Recognizer\";\n public static description =\n \"Recognizes hand gestures in images. Detects hand landmarks, identifies gestures (thumbs up, victory, etc.), and classifies handedness.\";\n public static inputSchema(): DataPortSchema {\n return GestureRecognizerInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return GestureRecognizerOutputSchema as DataPortSchema;\n }\n}\n\n/**\n * Convenience function to run gesture recognition tasks.\n * Creates and executes a GestureRecognizerTask with the provided input.\n * @param input The input parameters for gesture recognition (image, model, and optional configuration)\n * @returns Promise resolving to the detected gestures with landmarks and handedness\n */\nexport const gestureRecognizer = (\n input: GestureRecognizerTaskInput,\n config?: JobQueueTaskConfig\n) => {\n return new GestureRecognizerTask({} as GestureRecognizerTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n gestureRecognizer: CreateWorkflow<\n GestureRecognizerTaskInput,\n GestureRecognizerTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.gestureRecognizer = CreateWorkflow(GestureRecognizerTask);\n",
33
34
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { TypeImageInput, TypeModel } from \"./base/AiTaskSchemas\";\nimport { AiVisionTask } from \"./base/AiVisionTask\";\n\nconst modelSchema = TypeModel(\"model:HandLandmarkerTask\");\n\n/**\n * A landmark point with x, y, z coordinates.\n */\nconst TypeLandmark = {\n type: \"object\",\n properties: {\n x: {\n type: \"number\",\n title: \"X Coordinate\",\n description: \"X coordinate normalized to [0.0, 1.0]\",\n },\n y: {\n type: \"number\",\n title: \"Y Coordinate\",\n description: \"Y coordinate normalized to [0.0, 1.0]\",\n },\n z: {\n type: \"number\",\n title: \"Z Coordinate\",\n description: \"Z coordinate (depth)\",\n },\n },\n required: [\"x\", \"y\", \"z\"],\n additionalProperties: false,\n} as const;\n\n/**\n * Handedness classification (left or right hand).\n */\nconst TypeHandedness = {\n type: \"object\",\n properties: {\n label: {\n type: \"string\",\n title: \"Hand Label\",\n description: \"Whether the hand is 'Left' or 'Right'\",\n },\n score: {\n type: \"number\",\n title: \"Confidence Score\",\n description: \"Confidence score for the handedness classification\",\n },\n },\n required: [\"label\", \"score\"],\n additionalProperties: false,\n} as const;\n\n/**\n * Detection result for a single hand.\n */\nconst TypeHandDetection = {\n type: \"object\",\n properties: {\n handedness: {\n type: \"array\",\n items: TypeHandedness,\n title: \"Handedness\",\n description: \"Handedness classification (left/right)\",\n },\n landmarks: {\n type: \"array\",\n items: TypeLandmark,\n title: \"Landmarks\",\n description: \"21 hand landmarks in image coordinates\",\n },\n worldLandmarks: {\n type: \"array\",\n items: TypeLandmark,\n title: \"World Landmarks\",\n description: \"21 hand landmarks in 3D world coordinates (meters)\",\n },\n },\n required: [\"handedness\", \"landmarks\", \"worldLandmarks\"],\n additionalProperties: false,\n} as const;\n\nexport const HandLandmarkerInputSchema = {\n type: \"object\",\n properties: {\n image: TypeImageInput,\n model: modelSchema,\n numHands: {\n type: \"number\",\n minimum: 1,\n maximum: 10,\n default: 1,\n title: \"Number of Hands\",\n description: \"The maximum number of hands to detect\",\n \"x-ui-group\": \"Configuration\",\n },\n minHandDetectionConfidence: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n default: 0.5,\n title: \"Min Hand Detection Confidence\",\n description: \"Minimum confidence score for hand detection\",\n \"x-ui-group\": \"Configuration\",\n },\n minHandPresenceConfidence: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n default: 0.5,\n title: \"Min Hand Presence Confidence\",\n description: \"Minimum confidence score for hand presence\",\n \"x-ui-group\": \"Configuration\",\n },\n minTrackingConfidence: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n default: 0.5,\n title: \"Min Tracking Confidence\",\n description: \"Minimum confidence score for hand tracking\",\n \"x-ui-group\": \"Configuration\",\n },\n },\n required: [\"image\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const HandLandmarkerOutputSchema = {\n type: \"object\",\n properties: {\n hands: {\n oneOf: [\n { type: \"array\", items: TypeHandDetection },\n { type: \"array\", items: { type: \"array\", items: TypeHandDetection } },\n ],\n title: \"Hand Detections\",\n description: \"Detected hands with handedness and landmarks\",\n },\n },\n required: [\"hands\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type HandLandmarkerTaskInput = FromSchema<typeof HandLandmarkerInputSchema>;\nexport type HandLandmarkerTaskOutput = FromSchema<typeof HandLandmarkerOutputSchema>;\n\n/**\n * Detects hand landmarks in images using MediaPipe Hand Landmarker.\n * Identifies 21 hand landmarks and classifies left vs. right hands.\n */\nexport class HandLandmarkerTask extends AiVisionTask<\n HandLandmarkerTaskInput,\n HandLandmarkerTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"HandLandmarkerTask\";\n public static category = \"AI Vision Model\";\n public static title = \"Hand Landmarker\";\n public static description =\n \"Detects hand landmarks in images. Identifies 21 hand landmarks and classifies left vs. right hands.\";\n public static inputSchema(): DataPortSchema {\n return HandLandmarkerInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return HandLandmarkerOutputSchema as DataPortSchema;\n }\n}\n\n/**\n * Convenience function to run hand landmark detection tasks.\n * Creates and executes a HandLandmarkerTask with the provided input.\n * @param input The input parameters for hand landmark detection (image, model, and optional configuration)\n * @returns Promise resolving to the detected hand landmarks and handedness\n */\nexport const handLandmarker = (input: HandLandmarkerTaskInput, config?: JobQueueTaskConfig) => {\n return new HandLandmarkerTask({} as HandLandmarkerTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n handLandmarker: CreateWorkflow<\n HandLandmarkerTaskInput,\n HandLandmarkerTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.handLandmarker = CreateWorkflow(HandLandmarkerTask);\n",
34
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ChunkNodeSchema,\n estimateTokens,\n getChildren,\n hasChildren,\n type ChunkNode,\n type DocumentNode,\n type TokenBudget,\n} from \"@workglow/dataset\";\nimport {\n CreateWorkflow,\n IExecuteContext,\n JobQueueTaskConfig,\n Task,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema, uuid4 } from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n doc_id: {\n type: \"string\",\n title: \"Document ID\",\n description: \"The ID of the document\",\n },\n documentTree: {\n title: \"Document Tree\",\n description: \"The hierarchical document tree to chunk\",\n },\n maxTokens: {\n type: \"number\",\n title: \"Max Tokens\",\n description: \"Maximum tokens per chunk\",\n minimum: 50,\n default: 512,\n },\n overlap: {\n type: \"number\",\n title: \"Overlap\",\n description: \"Overlap in tokens between chunks\",\n minimum: 0,\n default: 50,\n },\n reservedTokens: {\n type: \"number\",\n title: \"Reserved Tokens\",\n description: \"Reserved tokens for metadata/wrappers\",\n minimum: 0,\n default: 10,\n },\n strategy: {\n type: \"string\",\n enum: [\"hierarchical\", \"flat\", \"sentence\"],\n title: \"Chunking Strategy\",\n description: \"Strategy for chunking\",\n default: \"hierarchical\",\n },\n },\n required: [],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n doc_id: {\n type: \"string\",\n title: \"Document ID\",\n description: \"The document ID (passed through)\",\n },\n chunks: {\n type: \"array\",\n items: ChunkNodeSchema(),\n title: \"Chunks\",\n description: \"Array of chunk nodes\",\n },\n text: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Texts\",\n description: \"Chunk texts (for TextEmbeddingTask)\",\n },\n count: {\n type: \"number\",\n title: \"Count\",\n description: \"Number of chunks generated\",\n },\n },\n required: [\"doc_id\", \"chunks\", \"text\", \"count\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type HierarchicalChunkerTaskInput = FromSchema<typeof inputSchema>;\nexport type HierarchicalChunkerTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * Task for hierarchical chunking that respects token budgets and document structure\n */\nexport class HierarchicalChunkerTask extends Task<\n HierarchicalChunkerTaskInput,\n HierarchicalChunkerTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"HierarchicalChunkerTask\";\n public static category = \"Document\";\n public static title = \"Hierarchical Chunker\";\n public static description = \"Chunk documents hierarchically respecting token budgets\";\n public static cacheable = true;\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async execute(\n input: HierarchicalChunkerTaskInput,\n context: IExecuteContext\n ): Promise<HierarchicalChunkerTaskOutput> {\n const {\n doc_id,\n documentTree,\n maxTokens = 512,\n overlap = 50,\n reservedTokens = 10,\n strategy = \"hierarchical\",\n } = input;\n\n if (!doc_id) {\n throw new Error(\"doc_id is required\");\n }\n if (!documentTree) {\n throw new Error(\"documentTree is required\");\n }\n\n const root = documentTree as DocumentNode;\n const tokenBudget: TokenBudget = {\n maxTokensPerChunk: maxTokens,\n overlapTokens: overlap,\n reservedTokens,\n };\n\n const chunks: ChunkNode[] = [];\n\n if (strategy === \"hierarchical\") {\n await this.chunkHierarchically(root, [], doc_id, tokenBudget, chunks);\n } else {\n // Flat chunking: treat entire document as flat text\n await this.chunkFlat(root, doc_id, tokenBudget, chunks);\n }\n return {\n doc_id,\n chunks,\n text: chunks.map((c) => c.text),\n count: chunks.length,\n };\n }\n\n /**\n * Hierarchical chunking that respects document structure\n */\n private async chunkHierarchically(\n node: DocumentNode,\n nodePath: string[],\n doc_id: string,\n tokenBudget: TokenBudget,\n chunks: ChunkNode[]\n ): Promise<void> {\n const currentPath = [...nodePath, node.nodeId];\n\n // If node has no children, it's a leaf - chunk its text\n if (!hasChildren(node)) {\n await this.chunkText(node.text, currentPath, doc_id, tokenBudget, chunks, node.nodeId);\n return;\n }\n\n // For nodes with children, recursively chunk children\n const children = getChildren(node);\n for (const child of children) {\n await this.chunkHierarchically(child, currentPath, doc_id, tokenBudget, chunks);\n }\n }\n\n /**\n * Chunk a single text string\n */\n private async chunkText(\n text: string,\n nodePath: string[],\n doc_id: string,\n tokenBudget: TokenBudget,\n chunks: ChunkNode[],\n leafNodeId: string\n ): Promise<void> {\n const maxChars = (tokenBudget.maxTokensPerChunk - tokenBudget.reservedTokens) * 4;\n const overlapChars = tokenBudget.overlapTokens * 4;\n\n if (estimateTokens(text) <= tokenBudget.maxTokensPerChunk - tokenBudget.reservedTokens) {\n // Text fits in one chunk\n const chunkId = uuid4();\n chunks.push({\n chunkId,\n doc_id,\n text,\n nodePath,\n depth: nodePath.length,\n });\n return;\n }\n\n // Split into multiple chunks with overlap\n let chunkOrdinal = 0;\n let startOffset = 0;\n\n while (startOffset < text.length) {\n const endOffset = Math.min(startOffset + maxChars, text.length);\n const chunkText = text.substring(startOffset, endOffset);\n\n const chunkId = uuid4();\n\n chunks.push({\n chunkId,\n doc_id,\n text: chunkText,\n nodePath,\n depth: nodePath.length,\n });\n\n chunkOrdinal++;\n startOffset += maxChars - overlapChars;\n\n // Prevent infinite loop\n if (overlapChars >= maxChars) {\n startOffset = endOffset;\n }\n }\n }\n\n /**\n * Flat chunking (ignores hierarchy)\n */\n private async chunkFlat(\n root: DocumentNode,\n doc_id: string,\n tokenBudget: TokenBudget,\n chunks: ChunkNode[]\n ): Promise<void> {\n // Collect all text from the tree\n const allText = this.collectAllText(root);\n await this.chunkText(allText, [root.nodeId], doc_id, tokenBudget, chunks, root.nodeId);\n }\n\n /**\n * Collect all text from a node and its descendants\n */\n private collectAllText(node: DocumentNode): string {\n const texts: string[] = [];\n\n const traverse = (n: DocumentNode) => {\n if (!hasChildren(n)) {\n texts.push(n.text);\n } else {\n for (const child of getChildren(n)) {\n traverse(child);\n }\n }\n };\n\n traverse(node);\n return texts.join(\"\\n\\n\");\n }\n}\n\nexport const hierarchicalChunker = (\n input: HierarchicalChunkerTaskInput,\n config?: JobQueueTaskConfig\n) => {\n return new HierarchicalChunkerTask({} as HierarchicalChunkerTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n hierarchicalChunker: CreateWorkflow<\n HierarchicalChunkerTaskInput,\n HierarchicalChunkerTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.hierarchicalChunker = CreateWorkflow(HierarchicalChunkerTask);\n",
35
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ChunkNodeSchema,\n estimateTokens,\n getChildren,\n hasChildren,\n type ChunkNode,\n type DocumentNode,\n type TokenBudget,\n} from \"@workglow/dataset\";\nimport {\n CreateWorkflow,\n IExecuteContext,\n JobQueueTaskConfig,\n Task,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema, uuid4 } from \"@workglow/util\";\nimport { CountTokensTask } from \"./CountTokensTask\";\nimport { TypeModel } from \"./base/AiTaskSchemas\";\n\nconst modelSchema = TypeModel(\"model\", {\n title: \"Model\",\n description: \"Model to use for token counting\",\n});\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n doc_id: {\n type: \"string\",\n title: \"Document ID\",\n description: \"The ID of the document\",\n },\n documentTree: {\n title: \"Document Tree\",\n description: \"The hierarchical document tree to chunk\",\n },\n maxTokens: {\n type: \"number\",\n title: \"Max Tokens\",\n description: \"Maximum tokens per chunk\",\n minimum: 50,\n default: 512,\n },\n overlap: {\n type: \"number\",\n title: \"Overlap\",\n description: \"Overlap in tokens between chunks\",\n minimum: 0,\n default: 50,\n },\n reservedTokens: {\n type: \"number\",\n title: \"Reserved Tokens\",\n description: \"Reserved tokens for metadata/wrappers\",\n minimum: 0,\n default: 10,\n },\n strategy: {\n type: \"string\",\n enum: [\"hierarchical\", \"flat\", \"sentence\"],\n title: \"Chunking Strategy\",\n description: \"Strategy for chunking\",\n default: \"hierarchical\",\n },\n model: modelSchema,\n },\n required: [\"doc_id\", \"documentTree\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n doc_id: {\n type: \"string\",\n title: \"Document ID\",\n description: \"The document ID (passed through)\",\n },\n chunks: {\n type: \"array\",\n items: ChunkNodeSchema(),\n title: \"Chunks\",\n description: \"Array of chunk nodes\",\n },\n text: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Texts\",\n description: \"Chunk texts (for TextEmbeddingTask)\",\n },\n count: {\n type: \"number\",\n title: \"Count\",\n description: \"Number of chunks generated\",\n },\n },\n required: [\"doc_id\", \"chunks\", \"text\", \"count\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type HierarchicalChunkerTaskInput = FromSchema<typeof inputSchema>;\nexport type HierarchicalChunkerTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * Task for hierarchical chunking that respects token budgets and document structure.\n * Pass a `model` in the input to use {@link CountTokensTask} for accurate token\n * counting; when omitted, the task falls back to the character-based estimate\n * provided by {@link estimateTokens}.\n */\nexport class HierarchicalChunkerTask extends Task<\n HierarchicalChunkerTaskInput,\n HierarchicalChunkerTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"HierarchicalChunkerTask\";\n public static category = \"Document\";\n public static title = \"Hierarchical Chunker\";\n public static description = \"Chunk documents hierarchically respecting token budgets\";\n public static cacheable = true;\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async execute(\n input: HierarchicalChunkerTaskInput,\n context: IExecuteContext\n ): Promise<HierarchicalChunkerTaskOutput> {\n const {\n doc_id,\n documentTree,\n maxTokens = 512,\n overlap = 50,\n reservedTokens = 10,\n strategy = \"hierarchical\",\n } = input;\n\n if (!doc_id) {\n throw new Error(\"doc_id is required\");\n }\n if (!documentTree) {\n throw new Error(\"documentTree is required\");\n }\n\n const root = documentTree as DocumentNode;\n const tokenBudget: TokenBudget = {\n maxTokensPerChunk: maxTokens,\n overlapTokens: overlap,\n reservedTokens,\n };\n\n let countFn: (text: string) => Promise<number> = async (text: string) => estimateTokens(text);\n if (input.model) {\n const countTask = context.own(new CountTokensTask({ model: input.model }));\n countFn = async (text: string): Promise<number> => {\n try {\n const result = await countTask.run({ text });\n return result.count;\n } catch (_err) {\n // Fall back to local token estimation if CountTokensTask is unavailable or fails.\n return estimateTokens(text);\n }\n };\n }\n\n const chunks: ChunkNode[] = [];\n\n if (strategy === \"hierarchical\") {\n await this.chunkHierarchically(root, [], doc_id, tokenBudget, chunks, countFn);\n } else {\n await this.chunkFlat(root, doc_id, tokenBudget, chunks, countFn);\n }\n return {\n doc_id,\n chunks,\n text: chunks.map((c) => c.text),\n count: chunks.length,\n };\n }\n\n /**\n * Hierarchical chunking that respects document structure\n */\n private async chunkHierarchically(\n node: DocumentNode,\n nodePath: string[],\n doc_id: string,\n tokenBudget: TokenBudget,\n chunks: ChunkNode[],\n countFn: (text: string) => Promise<number>\n ): Promise<void> {\n const currentPath = [...nodePath, node.nodeId];\n\n if (!hasChildren(node)) {\n await this.chunkText(\n node.text,\n currentPath,\n doc_id,\n tokenBudget,\n chunks,\n node.nodeId,\n countFn\n );\n return;\n }\n\n const children = getChildren(node);\n for (const child of children) {\n await this.chunkHierarchically(child, currentPath, doc_id, tokenBudget, chunks, countFn);\n }\n }\n\n /**\n * Chunk a single text string, using countFn for token counting.\n * countFn always returns a number -- it falls back to estimation internally\n * when no real tokenizer is available.\n */\n private async chunkText(\n text: string,\n nodePath: string[],\n doc_id: string,\n tokenBudget: TokenBudget,\n chunks: ChunkNode[],\n leafNodeId: string,\n countFn: (text: string) => Promise<number>\n ): Promise<void> {\n const maxTokens = tokenBudget.maxTokensPerChunk - tokenBudget.reservedTokens;\n const overlapTokens = tokenBudget.overlapTokens;\n\n if (maxTokens <= 0) {\n throw new Error(\n `Invalid token budget: reservedTokens (${tokenBudget.reservedTokens}) must be less than maxTokensPerChunk (${tokenBudget.maxTokensPerChunk})`\n );\n }\n if (overlapTokens >= maxTokens) {\n throw new Error(\n `Invalid token budget: overlapTokens (${overlapTokens}) must be less than effective maxTokens (${maxTokens})`\n );\n }\n\n const count = await countFn(text);\n if (count <= maxTokens) {\n chunks.push({\n chunkId: uuid4(),\n doc_id,\n text,\n nodePath,\n depth: nodePath.length,\n });\n return;\n }\n\n // Binary search for the character boundary that corresponds to targetTokens.\n // countFn handles the estimation fallback, so we always use it.\n // Uses ceil-biased midpoint so that when hi = lo + 1, mid = hi is always checked,\n // preventing the boundary from stalling at startChar on the last character of text.\n const findCharBoundary = async (startChar: number, targetTokens: number): Promise<number> => {\n let lo = startChar;\n let hi = Math.min(startChar + targetTokens * 6, text.length); // generous upper bound\n while (lo < hi) {\n const mid = Math.ceil((lo + hi) / 2);\n const count = await countFn(text.substring(startChar, mid));\n if (count <= targetTokens) {\n lo = mid;\n } else {\n hi = mid - 1;\n }\n }\n return lo;\n };\n\n let startOffset = 0;\n\n while (startOffset < text.length) {\n const boundary = await findCharBoundary(startOffset, maxTokens);\n // Ensure endOffset always advances past startOffset to prevent an infinite loop.\n // In the extreme edge case where even one character exceeds maxTokens, we\n // include that character anyway (the chunk may be slightly oversize).\n const endOffset = Math.max(Math.min(boundary, text.length), startOffset + 1);\n\n chunks.push({\n chunkId: uuid4(),\n doc_id,\n text: text.substring(startOffset, endOffset),\n nodePath,\n depth: nodePath.length,\n });\n\n if (endOffset >= text.length) break;\n\n const nextStart = await findCharBoundary(startOffset, maxTokens - overlapTokens);\n // Ensure we always make forward progress to prevent an infinite loop.\n startOffset = nextStart > startOffset ? nextStart : endOffset;\n }\n }\n\n /**\n * Flat chunking (ignores hierarchy)\n */\n private async chunkFlat(\n root: DocumentNode,\n doc_id: string,\n tokenBudget: TokenBudget,\n chunks: ChunkNode[],\n countFn: (text: string) => Promise<number>\n ): Promise<void> {\n const allText = this.collectAllText(root);\n await this.chunkText(allText, [root.nodeId], doc_id, tokenBudget, chunks, root.nodeId, countFn);\n }\n\n /**\n * Collect all text from a node and its descendants\n */\n private collectAllText(node: DocumentNode): string {\n const texts: string[] = [];\n\n const traverse = (n: DocumentNode) => {\n if (!hasChildren(n)) {\n texts.push(n.text);\n } else {\n for (const child of getChildren(n)) {\n traverse(child);\n }\n }\n };\n\n traverse(node);\n return texts.join(\"\\n\\n\");\n }\n}\n\nexport const hierarchicalChunker = (\n input: HierarchicalChunkerTaskInput,\n config?: JobQueueTaskConfig\n) => {\n return new HierarchicalChunkerTask({} as HierarchicalChunkerTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n hierarchicalChunker: CreateWorkflow<\n HierarchicalChunkerTaskInput,\n HierarchicalChunkerTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.hierarchicalChunker = CreateWorkflow(HierarchicalChunkerTask);\n",
35
36
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ChunkMetadataArraySchema,\n EnrichedChunkMetadataArraySchema,\n TypeDocumentDataset,\n type ChunkMetadata,\n type DocumentDataset,\n} from \"@workglow/dataset\";\nimport {\n CreateWorkflow,\n IExecuteContext,\n JobQueueTaskConfig,\n Task,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n documents: TypeDocumentDataset({\n title: \"Documents\",\n description: \"The documents dataset to query for hierarchy\",\n }),\n chunks: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Chunks\",\n description: \"Retrieved text chunks\",\n },\n chunk_ids: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Chunk IDs\",\n description: \"IDs of retrieved chunks\",\n },\n metadata: ChunkMetadataArraySchema,\n scores: {\n type: \"array\",\n items: { type: \"number\" },\n title: \"Scores\",\n description: \"Similarity scores for each result\",\n },\n includeParentSummaries: {\n type: \"boolean\",\n title: \"Include Parent Summaries\",\n description: \"Whether to include summaries from parent nodes\",\n default: true,\n },\n includeEntities: {\n type: \"boolean\",\n title: \"Include Entities\",\n description: \"Whether to include entities from the node hierarchy\",\n default: true,\n },\n },\n required: [\"documents\", \"chunks\", \"chunk_ids\", \"metadata\", \"scores\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n chunks: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Chunks\",\n description: \"Retrieved text chunks\",\n },\n chunk_ids: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Chunk IDs\",\n description: \"IDs of retrieved chunks\",\n },\n metadata: EnrichedChunkMetadataArraySchema,\n scores: {\n type: \"array\",\n items: { type: \"number\" },\n title: \"Scores\",\n description: \"Similarity scores\",\n },\n count: {\n type: \"number\",\n title: \"Count\",\n description: \"Number of results\",\n },\n },\n required: [\"chunks\", \"chunk_ids\", \"metadata\", \"scores\", \"count\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type HierarchyJoinTaskInput = FromSchema<typeof inputSchema>;\nexport type HierarchyJoinTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * Task for enriching search results with hierarchy information\n * Joins chunk IDs back to document repository to get parent summaries and entities\n */\nexport class HierarchyJoinTask extends Task<\n HierarchyJoinTaskInput,\n HierarchyJoinTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"HierarchyJoinTask\";\n public static category = \"RAG\";\n public static title = \"Hierarchy Join\";\n public static description = \"Enrich search results with document hierarchy context\";\n public static cacheable = false; // Has external dependency\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async execute(\n input: HierarchyJoinTaskInput,\n context: IExecuteContext\n ): Promise<HierarchyJoinTaskOutput> {\n const {\n documents,\n chunks,\n chunk_ids,\n metadata,\n scores,\n includeParentSummaries = true,\n includeEntities = true,\n } = input;\n\n const repo = documents as DocumentDataset;\n const enrichedMetadata: any[] = [];\n\n for (let i = 0; i < chunk_ids.length; i++) {\n const chunkId = chunk_ids[i];\n const originalMetadata: ChunkMetadata | undefined = metadata[i];\n\n if (!originalMetadata) {\n // Skip if metadata is missing\n enrichedMetadata.push({} as ChunkMetadata);\n continue;\n }\n\n // Extract doc_id and nodeId from metadata\n const doc_id = originalMetadata.doc_id;\n const leafNodeId = originalMetadata.leafNodeId;\n\n if (!doc_id || !leafNodeId) {\n // Can't enrich without IDs\n enrichedMetadata.push(originalMetadata);\n continue;\n }\n\n try {\n // Get ancestors from document repository\n const ancestors = await repo.getAncestors(doc_id, leafNodeId);\n\n const enriched: any = { ...originalMetadata };\n\n // Add parent summaries\n if (includeParentSummaries && ancestors.length > 0) {\n const parentSummaries: string[] = [];\n const sectionTitles: string[] = [];\n\n for (const ancestor of ancestors) {\n if (ancestor.enrichment?.summary) {\n parentSummaries.push(ancestor.enrichment.summary);\n }\n if (ancestor.kind === \"section\" && (ancestor as any).title) {\n sectionTitles.push((ancestor as any).title);\n }\n }\n\n if (parentSummaries.length > 0) {\n enriched.parentSummaries = parentSummaries;\n }\n if (sectionTitles.length > 0) {\n enriched.sectionTitles = sectionTitles;\n }\n }\n\n // Add entities (rolled up from ancestors)\n if (includeEntities && ancestors.length > 0) {\n const allEntities: any[] = [];\n\n for (const ancestor of ancestors) {\n if (ancestor.enrichment?.entities) {\n allEntities.push(...ancestor.enrichment.entities);\n }\n }\n\n // Deduplicate entities\n const uniqueEntities = new Map<string, any>();\n for (const entity of allEntities) {\n const existing = uniqueEntities.get(entity.text);\n if (!existing || entity.score > existing.score) {\n uniqueEntities.set(entity.text, entity);\n }\n }\n\n if (uniqueEntities.size > 0) {\n enriched.entities = Array.from(uniqueEntities.values());\n }\n }\n\n enrichedMetadata.push(enriched);\n } catch (error) {\n // If join fails, keep original metadata\n console.error(`Failed to join hierarchy for chunk ${chunkId}:`, error);\n enrichedMetadata.push(originalMetadata);\n }\n }\n\n return {\n chunks,\n chunk_ids,\n metadata: enrichedMetadata,\n scores,\n count: chunks.length,\n };\n }\n}\n\nexport const hierarchyJoin = (input: HierarchyJoinTaskInput, config?: JobQueueTaskConfig) => {\n return new HierarchyJoinTask({} as HierarchyJoinTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n hierarchyJoin: CreateWorkflow<\n HierarchyJoinTaskInput,\n HierarchyJoinTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.hierarchyJoin = CreateWorkflow(HierarchyJoinTask);\n",
36
37
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { TypeCategory, TypeImageInput, TypeModel } from \"./base/AiTaskSchemas\";\nimport { AiVisionTask } from \"./base/AiVisionTask\";\n\nconst modelSchema = TypeModel(\"model:ImageClassificationTask\");\n\nexport const ImageClassificationInputSchema = {\n type: \"object\",\n properties: {\n image: TypeImageInput,\n model: modelSchema,\n categories: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n title: \"Categories\",\n description:\n \"List of candidate categories (optional, if provided uses zero-shot classification)\",\n \"x-ui-group\": \"Configuration\",\n },\n maxCategories: {\n type: \"number\",\n minimum: 1,\n maximum: 1000,\n default: 5,\n title: \"Max Categories\",\n description: \"The maximum number of categories to return\",\n \"x-ui-group\": \"Configuration\",\n },\n },\n required: [\"image\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const ImageClassificationOutputSchema = {\n type: \"object\",\n properties: {\n categories: {\n oneOf: [\n { type: \"array\", items: TypeCategory },\n { type: \"array\", items: { type: \"array\", items: TypeCategory } },\n ],\n title: \"Categories\",\n description: \"The classification categories with their scores\",\n },\n },\n required: [\"categories\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type ImageClassificationTaskInput = FromSchema<typeof ImageClassificationInputSchema>;\nexport type ImageClassificationTaskOutput = FromSchema<typeof ImageClassificationOutputSchema>;\n\n/**\n * Classifies images into categories using vision models.\n * Automatically selects between regular and zero-shot classification based on whether categories are provided.\n */\nexport class ImageClassificationTask extends AiVisionTask<\n ImageClassificationTaskInput,\n ImageClassificationTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"ImageClassificationTask\";\n public static category = \"AI Vision Model\";\n public static title = \"Image Classification\";\n public static description =\n \"Classifies images into categories using vision models. Supports zero-shot classification when categories are provided.\";\n public static inputSchema(): DataPortSchema {\n return ImageClassificationInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return ImageClassificationOutputSchema as DataPortSchema;\n }\n}\n\n/**\n * Convenience function to run image classification tasks.\n * Creates and executes an ImageClassificationTask with the provided input.\n * @param input The input parameters for image classification (image, model, and optional categories)\n * @returns Promise resolving to the classification categories with scores\n */\nexport const imageClassification = (\n input: ImageClassificationTaskInput,\n config?: JobQueueTaskConfig\n) => {\n return new ImageClassificationTask({} as ImageClassificationTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n imageClassification: CreateWorkflow<\n ImageClassificationTaskInput,\n ImageClassificationTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.imageClassification = CreateWorkflow(ImageClassificationTask);\n",
37
38
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, Workflow } from \"@workglow/task-graph\";\nimport {\n DataPortSchema,\n FromSchema,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util\";\nimport { TypeImageInput, TypeModel } from \"./base/AiTaskSchemas\";\nimport { AiVisionTask } from \"./base/AiVisionTask\";\n\nconst modelSchema = TypeModel(\"model:ImageEmbeddingTask\");\n\nconst embeddingSchema = TypedArraySchema({\n title: \"Embedding\",\n description: \"The image embedding vector\",\n});\n\nexport const ImageEmbeddingInputSchema = {\n type: \"object\",\n properties: {\n image: TypeImageInput,\n model: modelSchema,\n },\n required: [\"image\", \"model\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const ImageEmbeddingOutputSchema = {\n type: \"object\",\n properties: {\n vector: embeddingSchema,\n },\n required: [\"vector\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type ImageEmbeddingTaskInput = FromSchema<\n typeof ImageEmbeddingInputSchema,\n TypedArraySchemaOptions\n>;\nexport type ImageEmbeddingTaskOutput = FromSchema<\n typeof ImageEmbeddingOutputSchema,\n TypedArraySchemaOptions\n>;\n\n/**\n * Generates embeddings from images using vision models\n */\nexport class ImageEmbeddingTask extends AiVisionTask<\n ImageEmbeddingTaskInput,\n ImageEmbeddingTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"ImageEmbeddingTask\";\n public static category = \"AI Vision Model\";\n public static title = \"Image Embedding\";\n public static description = \"Generates embeddings from images using vision models\";\n public static inputSchema(): DataPortSchema {\n return ImageEmbeddingInputSchema as DataPortSchema;\n }\n public static outputSchema(): DataPortSchema {\n return ImageEmbeddingOutputSchema as DataPortSchema;\n }\n}\n\n/**\n * Convenience function to run image embedding tasks.\n * Creates and executes an ImageEmbeddingTask with the provided input.\n * @param input The input parameters for image embedding (image and model)\n * @returns Promise resolving to the image embedding vector\n */\nexport const imageEmbedding = (input: ImageEmbeddingTaskInput, config?: JobQueueTaskConfig) => {\n return new ImageEmbeddingTask({} as ImageEmbeddingTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n imageEmbedding: CreateWorkflow<\n ImageEmbeddingTaskInput,\n ImageEmbeddingTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.imageEmbedding = CreateWorkflow(ImageEmbeddingTask);\n",
@@ -55,7 +56,7 @@
55
56
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, JobQueueTaskConfig, Task, Workflow } from \"@workglow/task-graph\";\nimport {\n DataPortSchema,\n FromSchema,\n normalizeNumberArray,\n TensorType,\n TypedArray,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n vector: {\n anyOf: [\n TypedArraySchema({\n title: \"Vector\",\n description: \"The vector to quantize\",\n }),\n {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Vector\",\n description: \"Vector to quantize\",\n }),\n },\n ],\n title: \"Input Vector(s)\",\n description: \"Vector or array of vectors to quantize\",\n },\n targetType: {\n type: \"string\",\n enum: Object.values(TensorType),\n title: \"Target Type\",\n description: \"Target quantization type\",\n default: TensorType.INT8,\n },\n normalize: {\n type: \"boolean\",\n title: \"Normalize\",\n description: \"Normalize vector before quantization\",\n default: true,\n },\n },\n required: [\"vector\", \"targetType\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n vector: {\n anyOf: [\n TypedArraySchema({\n title: \"Quantized Vector\",\n description: \"The quantized vector\",\n }),\n {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Quantized Vector\",\n description: \"Quantized vector\",\n }),\n },\n ],\n title: \"Output Vector(s)\",\n description: \"Quantized vector or array of vectors\",\n },\n originalType: {\n type: \"string\",\n enum: Object.values(TensorType),\n title: \"Original Type\",\n description: \"Original vector type\",\n },\n targetType: {\n type: \"string\",\n enum: Object.values(TensorType),\n title: \"Target Type\",\n description: \"Target quantization type\",\n },\n },\n required: [\"vector\", \"originalType\", \"targetType\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type VectorQuantizeTaskInput = FromSchema<typeof inputSchema, TypedArraySchemaOptions>;\nexport type VectorQuantizeTaskOutput = FromSchema<typeof outputSchema, TypedArraySchemaOptions>;\n\n/**\n * Task for quantizing vectors to reduce storage and improve performance.\n * Supports various quantization types including binary, int8, uint8, int16, uint16.\n */\nexport class VectorQuantizeTask extends Task<\n VectorQuantizeTaskInput,\n VectorQuantizeTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"VectorQuantizeTask\";\n public static category = \"Vector\";\n public static title = \"Quantize\";\n public static description = \"Quantize vectors to reduce storage and improve performance\";\n public static cacheable = true;\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async executeReactive(input: VectorQuantizeTaskInput): Promise<VectorQuantizeTaskOutput> {\n const { vector, targetType, normalize = true } = input;\n const isArray = Array.isArray(vector);\n const vectors = isArray ? vector : [vector];\n const originalType = this.getVectorType(vectors[0]);\n\n const quantized = vectors.map((v) => this.vectorQuantize(v, targetType, normalize));\n\n return {\n vector: isArray ? quantized : quantized[0],\n originalType,\n targetType,\n };\n }\n\n private getVectorType(vector: TypedArray): TensorType {\n if (vector instanceof Float16Array) return TensorType.FLOAT16;\n if (vector instanceof Float32Array) return TensorType.FLOAT32;\n if (vector instanceof Float64Array) return TensorType.FLOAT64;\n if (vector instanceof Int8Array) return TensorType.INT8;\n if (vector instanceof Uint8Array) return TensorType.UINT8;\n if (vector instanceof Int16Array) return TensorType.INT16;\n if (vector instanceof Uint16Array) return TensorType.UINT16;\n throw new Error(`Unknown vector type: ${typeof vector}`);\n }\n\n private vectorQuantize(\n vector: TypedArray,\n targetType: TensorType,\n normalize: boolean\n ): TypedArray {\n let values = Array.from(vector) as number[];\n\n // Normalize if requested\n if (normalize) {\n values = normalizeNumberArray(values, false);\n }\n\n switch (targetType) {\n case TensorType.FLOAT16:\n return new Float16Array(values);\n\n case TensorType.FLOAT32:\n return new Float32Array(values);\n\n case TensorType.FLOAT64:\n return new Float64Array(values);\n\n case TensorType.INT8:\n return this.quantizeToInt8(values);\n\n case TensorType.UINT8:\n return this.quantizeToUint8(values);\n\n case TensorType.INT16:\n return this.quantizeToInt16(values);\n\n case TensorType.UINT16:\n return this.quantizeToUint16(values);\n\n default:\n return new Float32Array(values);\n }\n }\n\n /**\n * Find min and max values in a single pass for better performance\n */\n private findMinMax(values: number[]): { min: number; max: number } {\n if (values.length === 0) {\n return { min: 0, max: 1 };\n }\n\n let min = values[0];\n let max = values[0];\n\n for (let i = 1; i < values.length; i++) {\n const val = values[i];\n if (val < min) min = val;\n if (val > max) max = val;\n }\n\n return { min, max };\n }\n\n private quantizeToInt8(values: number[]): Int8Array {\n // Assume values are in [-1, 1] range after normalization\n // Scale to [-127, 127] to avoid overflow at -128\n return new Int8Array(values.map((v) => Math.round(Math.max(-1, Math.min(1, v)) * 127)));\n }\n\n private quantizeToUint8(values: number[]): Uint8Array {\n // Find min/max for scaling in a single pass\n const { min, max } = this.findMinMax(values);\n const range = max - min || 1;\n\n // Scale to [0, 255]\n return new Uint8Array(values.map((v) => Math.round(((v - min) / range) * 255)));\n }\n\n private quantizeToInt16(values: number[]): Int16Array {\n // Assume values are in [-1, 1] range after normalization\n // Scale to [-32767, 32767]\n return new Int16Array(values.map((v) => Math.round(Math.max(-1, Math.min(1, v)) * 32767)));\n }\n\n private quantizeToUint16(values: number[]): Uint16Array {\n // Find min/max for scaling in a single pass\n const { min, max } = this.findMinMax(values);\n const range = max - min || 1;\n\n // Scale to [0, 65535]\n return new Uint16Array(values.map((v) => Math.round(((v - min) / range) * 65535)));\n }\n}\n\nexport const vectorQuantize = (input: VectorQuantizeTaskInput, config?: JobQueueTaskConfig) => {\n return new VectorQuantizeTask({} as VectorQuantizeTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n vectorQuantize: CreateWorkflow<\n VectorQuantizeTaskInput,\n VectorQuantizeTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.vectorQuantize = CreateWorkflow(VectorQuantizeTask);\n",
56
57
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, GraphAsTask, JobQueueTaskConfig, Workflow } from \"@workglow/task-graph\";\nimport {\n cosineSimilarity,\n DataPortSchema,\n FromSchema,\n hammingSimilarity,\n jaccardSimilarity,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util\";\n\nexport const SimilarityFn = {\n COSINE: \"cosine\",\n JACCARD: \"jaccard\",\n HAMMING: \"hamming\",\n} as const;\n\nconst similarityFunctions = {\n cosine: cosineSimilarity,\n jaccard: jaccardSimilarity,\n hamming: hammingSimilarity,\n} as const;\n\nexport type SimilarityFn = (typeof SimilarityFn)[keyof typeof SimilarityFn];\n\nconst SimilarityInputSchema = {\n type: \"object\",\n properties: {\n query: TypedArraySchema({\n title: \"Query\",\n description: \"Query vector to compare against\",\n }),\n vectors: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Input\",\n description: \"Array of vectors to compare against the query\",\n }),\n },\n topK: {\n type: \"number\",\n title: \"Top K\",\n description: \"Number of top results to return\",\n minimum: 1,\n default: 10,\n },\n method: {\n type: \"string\",\n enum: Object.values(SimilarityFn),\n title: \"Similarity 𝑓\",\n description: \"Similarity function to use for comparisons\",\n default: SimilarityFn.COSINE,\n },\n },\n required: [\"query\", \"vectors\", \"method\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst SimilarityOutputSchema = {\n type: \"object\",\n properties: {\n output: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Output\",\n description: \"Ranked output vectors\",\n }),\n },\n score: {\n type: \"array\",\n items: {\n type: \"number\",\n title: \"Score\",\n description: \"Similarity scores for each output vector\",\n },\n },\n },\n required: [\"output\", \"score\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type VectorSimilarityTaskInput = FromSchema<\n typeof SimilarityInputSchema,\n TypedArraySchemaOptions\n>;\nexport type VectorSimilarityTaskOutput = FromSchema<\n typeof SimilarityOutputSchema,\n TypedArraySchemaOptions\n>;\n\nexport class VectorSimilarityTask extends GraphAsTask<\n VectorSimilarityTaskInput,\n VectorSimilarityTaskOutput,\n JobQueueTaskConfig\n> {\n static readonly type = \"VectorSimilarityTask\";\n static readonly category = \"Analysis\";\n static readonly title = \"Vector Similarity\";\n public static description =\n \"Compares vectors using similarity functions and returns top-K ranked results\";\n static readonly cacheable = true;\n\n public static override inputSchema(): DataPortSchema {\n return SimilarityInputSchema as DataPortSchema;\n }\n public static override outputSchema(): DataPortSchema {\n return SimilarityOutputSchema as DataPortSchema;\n }\n\n async executeReactive({ query, vectors, method, topK }: VectorSimilarityTaskInput) {\n let similarities = [];\n const fnName = method as keyof typeof similarityFunctions;\n const fn = similarityFunctions[fnName];\n\n for (const embedding of vectors) {\n similarities.push({\n similarity: fn(embedding, query),\n embedding,\n });\n }\n similarities = similarities.sort((a, b) => b.similarity - a.similarity).slice(0, topK);\n\n const outputs = similarities.map((s) => s.embedding);\n const scores = similarities.map((s) => s.similarity);\n return {\n output: outputs,\n score: scores,\n };\n }\n}\n\nexport const similarity = (input: VectorSimilarityTaskInput, config?: JobQueueTaskConfig) => {\n return new VectorSimilarityTask({} as VectorSimilarityTaskInput, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n similarity: CreateWorkflow<\n VectorSimilarityTaskInput,\n VectorSimilarityTaskOutput,\n JobQueueTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.similarity = CreateWorkflow(VectorSimilarityTask);\n"
57
58
  ],
58
- "mappings": "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",
59
- "debugId": "4D4CED03E4D94BCE64756E2164756E21",
59
+ "mappings": "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",
60
+ "debugId": "27B14E49C5DECD7164756E2164756E21",
60
61
  "names": []
61
62
  }