@workglow/ai 0.2.32 → 0.2.34
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.
- package/dist/browser.js +849 -275
- package/dist/browser.js.map +9 -6
- package/dist/bun.js +849 -275
- package/dist/bun.js.map +9 -6
- package/dist/node.js +849 -275
- package/dist/node.js.map +9 -6
- package/dist/provider-utils/CloudProviderClient.d.ts +3 -9
- package/dist/provider-utils/CloudProviderClient.d.ts.map +1 -1
- package/dist/provider-utils.js +1 -10
- package/dist/provider-utils.js.map +3 -3
- package/dist/task/AiChatTask.d.ts +9 -2
- package/dist/task/AiChatTask.d.ts.map +1 -1
- package/dist/task/AiChatWithKbTask.d.ts +710 -0
- package/dist/task/AiChatWithKbTask.d.ts.map +1 -0
- package/dist/task/HierarchicalChunkerTask.d.ts.map +1 -1
- package/dist/task/KbSearchTask.d.ts +79 -0
- package/dist/task/KbSearchTask.d.ts.map +1 -0
- package/dist/task/base/responseFormat.d.ts +23 -0
- package/dist/task/base/responseFormat.d.ts.map +1 -0
- package/dist/task/index.d.ts +6 -1
- package/dist/task/index.d.ts.map +1 -1
- package/package.json +12 -12
package/dist/bun.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/job/AiJob.ts", "../src/provider/AiProviderRegistry.ts", "../src/errors/ImageGenerationErrors.ts", "../src/execution/DirectExecutionStrategy.ts", "../src/execution/QueuedExecutionStrategy.ts", "../src/task/ToolCallingUtils.ts", "../src/model/InMemoryModelRepository.ts", "../src/model/ModelRepository.ts", "../src/model/ModelSchema.ts", "../src/model/ModelRegistry.ts", "../src/provider/AiProvider.ts", "../src/provider/QueuedAiProvider.ts", "../src/task/index.ts", "../src/task/AiChatTask.ts", "../src/task/base/AiTaskSchemas.ts", "../src/task/base/StreamingAiTask.ts", "../src/task/base/AiTask.ts", "../src/task/ChatMessage.ts", "../src/task/BackgroundRemovalTask.ts", "../src/task/base/AiVisionTask.ts", "../src/task/ChunkRetrievalTask.ts", "../src/task/TextEmbeddingTask.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/DocumentUpsertTask.ts", "../src/task/DownloadModelTask.ts", "../src/task/generation/ImageEditTask.ts", "../src/task/base/AiImageOutputTask.ts", "../src/task/generation/AiImageSchemas.ts", "../src/task/FaceDetectorTask.ts", "../src/task/FaceLandmarkerTask.ts", "../src/task/generation/ImageGenerateTask.ts", "../src/task/GestureRecognizerTask.ts", "../src/task/HandLandmarkerTask.ts", "../src/task/HierarchicalChunkerTask.ts", "../src/task/HierarchyJoinTask.ts", "../src/task/KbToDocumentsTask.ts", "../src/task/ImageClassificationTask.ts", "../src/task/ImageEmbeddingTask.ts", "../src/task/ImageSegmentationTask.ts", "../src/task/ImageToTextTask.ts", "../src/task/ModelInfoTask.ts", "../src/task/ModelSearchTask.ts", "../src/task/ObjectDetectionTask.ts", "../src/task/PoseLandmarkerTask.ts", "../src/task/QueryExpanderTask.ts", "../src/task/RerankerTask.ts", "../src/task/StructuralParserTask.ts", "../src/task/StructuredGenerationTask.ts", "../src/task/TextChunkerTask.ts", "../src/task/TextClassificationTask.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/ToolCallingTask.ts", "../src/task/TopicSegmenterTask.ts", "../src/task/UnloadModelTask.ts", "../src/task/VectorQuantizeTask.ts", "../src/task/VectorSimilarityTask.ts", "../src/task/MessageConversion.ts"],
|
|
3
|
+
"sources": ["../src/job/AiJob.ts", "../src/provider/AiProviderRegistry.ts", "../src/errors/ImageGenerationErrors.ts", "../src/execution/DirectExecutionStrategy.ts", "../src/execution/QueuedExecutionStrategy.ts", "../src/task/ToolCallingUtils.ts", "../src/model/InMemoryModelRepository.ts", "../src/model/ModelRepository.ts", "../src/model/ModelSchema.ts", "../src/model/ModelRegistry.ts", "../src/provider/AiProvider.ts", "../src/provider/QueuedAiProvider.ts", "../src/task/index.ts", "../src/task/AiChatTask.ts", "../src/task/base/AiTaskSchemas.ts", "../src/task/base/responseFormat.ts", "../src/task/base/StreamingAiTask.ts", "../src/task/base/AiTask.ts", "../src/task/ChatMessage.ts", "../src/task/AiChatWithKbTask.ts", "../src/task/KbSearchTask.ts", "../src/task/BackgroundRemovalTask.ts", "../src/task/base/AiVisionTask.ts", "../src/task/ChunkRetrievalTask.ts", "../src/task/TextEmbeddingTask.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/DocumentUpsertTask.ts", "../src/task/DownloadModelTask.ts", "../src/task/generation/ImageEditTask.ts", "../src/task/base/AiImageOutputTask.ts", "../src/task/generation/AiImageSchemas.ts", "../src/task/FaceDetectorTask.ts", "../src/task/FaceLandmarkerTask.ts", "../src/task/generation/ImageGenerateTask.ts", "../src/task/GestureRecognizerTask.ts", "../src/task/HandLandmarkerTask.ts", "../src/task/HierarchicalChunkerTask.ts", "../src/task/HierarchyJoinTask.ts", "../src/task/KbToDocumentsTask.ts", "../src/task/ImageClassificationTask.ts", "../src/task/ImageEmbeddingTask.ts", "../src/task/ImageSegmentationTask.ts", "../src/task/ImageToTextTask.ts", "../src/task/ModelInfoTask.ts", "../src/task/ModelSearchTask.ts", "../src/task/ObjectDetectionTask.ts", "../src/task/PoseLandmarkerTask.ts", "../src/task/QueryExpanderTask.ts", "../src/task/RerankerTask.ts", "../src/task/StructuralParserTask.ts", "../src/task/StructuredGenerationTask.ts", "../src/task/TextChunkerTask.ts", "../src/task/TextClassificationTask.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/ToolCallingTask.ts", "../src/task/TopicSegmenterTask.ts", "../src/task/UnloadModelTask.ts", "../src/task/VectorQuantizeTask.ts", "../src/task/VectorSimilarityTask.ts", "../src/task/MessageConversion.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 RetryableJobError,\n withJobErrorDiagnostics,\n} from \"@workglow/job-queue\";\nimport { TaskInput, TaskOutput } from \"@workglow/task-graph\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport type { JsonSchema } from \"@workglow/util/schema\";\nimport type { ModelConfig } from \"../model/ModelSchema\";\nimport { getAiProviderRegistry } from \"../provider/AiProviderRegistry\";\nimport {\n ImageGenerationContentPolicyError,\n ImageGenerationProviderError,\n ProviderUnsupportedFeatureError,\n} from \"../errors/ImageGenerationErrors\";\n\n/** Default timeout for provider API calls (2 minutes). */\nconst DEFAULT_AI_TIMEOUT_MS = 120_000;\n\n/** Local inference (CPU/WASM) often needs several minutes (downloads, load, multi-turn tool follow-up). */\nconst LOCAL_INFERENCE_DEFAULT_TIMEOUT_MS = 300_000;\n\nfunction resolveAiJobTimeoutMs(aiProvider: string, explicitMs: number | undefined): number {\n if (explicitMs !== undefined) {\n return explicitMs;\n }\n if (aiProvider === \"LOCAL_LLAMACPP\" || aiProvider === \"HF_TRANSFORMERS_ONNX\") {\n return LOCAL_INFERENCE_DEFAULT_TIMEOUT_MS;\n }\n return DEFAULT_AI_TIMEOUT_MS;\n}\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 /** JSON Schema for structured output, when the task declares x-structured-output. */\n outputSchema?: JsonSchema;\n /** Timeout in milliseconds for the provider API call. Defaults to 120s. */\n timeoutMs?: number;\n /** Opaque session token for multi-turn conversation caching (KV cache for local models, prompt caching for API providers). */\n sessionId?: string;\n}\n\n/**\n * Classifies a provider error as retryable or permanent based on known patterns.\n * Returns a RetryableJobError for transient issues (rate limits, network errors,\n * server errors) and a PermanentJobError for non-recoverable issues (auth, not found).\n */\nexport function classifyProviderError(err: unknown, taskType: string, provider: string): Error {\n if (\n err instanceof PermanentJobError ||\n err instanceof RetryableJobError ||\n err instanceof AbortSignalJobError\n ) {\n return err;\n }\n\n if (\n err instanceof ProviderUnsupportedFeatureError ||\n err instanceof ImageGenerationContentPolicyError\n ) {\n return new PermanentJobError(err.message);\n }\n if (err instanceof ImageGenerationProviderError) {\n return err.retryable ? new RetryableJobError(err.message) : new PermanentJobError(err.message);\n }\n\n const message = err instanceof Error ? err.message : String(err);\n const status =\n typeof (err as any)?.status === \"number\"\n ? (err as any).status\n : typeof (err as any)?.statusCode === \"number\"\n ? (err as any).statusCode\n : (() => {\n const m = message.match(/\\b([45]\\d{2})\\b/);\n return m ? parseInt(m[1], 10) : undefined;\n })();\n\n // Check for abort/cancellation\n if (err instanceof Error && err.name === \"AbortError\") {\n return new AbortSignalJobError(\n withJobErrorDiagnostics(`Provider call aborted for ${taskType} (${provider})`, err)\n );\n }\n if (err instanceof Error && err.name === \"TimeoutError\") {\n return new AbortSignalJobError(\n withJobErrorDiagnostics(`Provider call timed out for ${taskType} (${provider})`, err)\n );\n }\n // Catch abort patterns re-thrown as plain Errors (e.g. \"Pipeline download aborted\" from HFT)\n if (\n message.includes(\"Pipeline download aborted\") ||\n message.includes(\"Operation aborted\") ||\n message.includes(\"operation was aborted\") ||\n message.includes(\"The operation was aborted\")\n ) {\n return new AbortSignalJobError(\n withJobErrorDiagnostics(\n `Provider call aborted for ${taskType} (${provider}): ${message}`,\n err\n )\n );\n }\n\n // Incomplete model cache (e.g. missing preprocessor_config.json) — let the queue retry\n // so the provider re-downloads missing files on the next attempt.\n // The \"HFT_NULL_PROCESSOR:\" prefix is produced by HFT_Pipeline.ts\n // (HFT_NULL_PROCESSOR_PREFIX constant) when an image processor fails to initialize.\n if (message.startsWith(\"HFT_NULL_PROCESSOR:\")) {\n return new RetryableJobError(withJobErrorDiagnostics(message, err));\n }\n\n // Rate limiting (429) — retryable with backoff\n if (status === 429) {\n const retryAfterMatch = message.match(/retry.after[:\\s]*(\\d+)/i);\n const retryMs = retryAfterMatch ? parseInt(retryAfterMatch[1], 10) * 1000 : 30_000;\n return new RetryableJobError(\n withJobErrorDiagnostics(`Rate limited by ${provider} for ${taskType}: ${message}`, err),\n new Date(Date.now() + retryMs)\n );\n }\n\n // Auth errors (401, 403) — permanent\n if (status === 401 || status === 403) {\n return new PermanentJobError(\n withJobErrorDiagnostics(\n `Authentication failed for ${provider} (${taskType}): ${message}`,\n err\n )\n );\n }\n\n // Not found / invalid request (400, 404) — permanent\n if (status === 400 || status === 404) {\n return new PermanentJobError(\n withJobErrorDiagnostics(`Invalid request to ${provider} for ${taskType}: ${message}`, err)\n );\n }\n\n // Server errors (500, 502, 503, 529) — retryable\n if (status && status >= 500) {\n return new RetryableJobError(\n withJobErrorDiagnostics(\n `Server error from ${provider} for ${taskType} (HTTP ${status}): ${message}`,\n err\n )\n );\n }\n\n // Network errors — retryable\n if (\n message.includes(\"ECONNREFUSED\") ||\n message.includes(\"ECONNRESET\") ||\n message.includes(\"ETIMEDOUT\") ||\n message.includes(\"fetch failed\") ||\n message.includes(\"network\") ||\n (err instanceof TypeError && message.includes(\"fetch\"))\n ) {\n return new RetryableJobError(\n withJobErrorDiagnostics(`Network error calling ${provider} for ${taskType}: ${message}`, err)\n );\n }\n\n // Timeout errors — retryable\n if (message.includes(\"timed out\") || message.includes(\"timeout\")) {\n return new RetryableJobError(\n withJobErrorDiagnostics(`Timeout calling ${provider} for ${taskType}: ${message}`, err)\n );\n }\n\n // Default: treat unknown errors as permanent to avoid infinite retries\n return new PermanentJobError(\n withJobErrorDiagnostics(`Provider ${provider} failed for ${taskType}: ${message}`, err)\n );\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 override 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 const model = input.taskInput.model;\n // Second abort check after resolving run function (covers async gap)\n if (context.signal.aborted) {\n throw new AbortSignalJobError(\"Job aborted\");\n }\n\n // Apply timeout via AbortSignal.timeout combined with the caller's signal\n const timeoutMs = resolveAiJobTimeoutMs(input.aiProvider, input.timeoutMs);\n const timeoutSignal = AbortSignal.timeout(timeoutMs);\n const combinedSignal = AbortSignal.any([context.signal, timeoutSignal]);\n\n return await fn(\n input.taskInput,\n model,\n context.updateProgress,\n combinedSignal,\n input.outputSchema,\n input.sessionId\n );\n };\n const runFnPromise = runFn();\n\n return await Promise.race([runFnPromise, abortPromise]);\n } catch (err) {\n throw classifyProviderError(err, input.taskType, input.aiProvider);\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 * On mid-stream errors, logs the failure, yields a finish event with the last\n * finish payload received (or an empty object if none was received), then\n * re-throws the classified error. Delta accumulation is the responsibility of\n * the caller (e.g. TaskRunner).\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\n // Apply timeout via AbortSignal.timeout combined with the caller's signal\n const timeoutMs = resolveAiJobTimeoutMs(input.aiProvider, input.timeoutMs);\n const timeoutSignal = AbortSignal.timeout(timeoutMs);\n const combinedSignal = AbortSignal.any([context.signal, timeoutSignal]);\n\n try {\n yield* streamFn(input.taskInput, model, combinedSignal, input.outputSchema, input.sessionId);\n } catch (err) {\n const logger = getLogger();\n logger.warn(\n `AiJob: Stream error for ${input.taskType} (${input.aiProvider}): ${err instanceof Error ? err.message : String(err)}`\n );\n throw classifyProviderError(err, input.taskType, input.aiProvider);\n }\n }\n}\n",
|
|
6
6
|
"/**\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 type { StreamEvent } from \"@workglow/task-graph\";\nimport { createServiceToken, globalServiceRegistry, WORKER_MANAGER } from \"@workglow/util/worker\";\nimport type { JsonSchema, ServiceRegistry } from \"@workglow/util/worker\";\nimport { DirectExecutionStrategy } from \"../execution/DirectExecutionStrategy\";\nimport type { IAiExecutionStrategy, AiStrategyResolver } from \"../execution/IAiExecutionStrategy\";\nimport type { ModelConfig } from \"../model/ModelSchema\";\nimport type { AiProvider } from \"./AiProvider\";\n\n/**\n * Type for the run function for the AiJob.\n * The optional `outputSchema` is provided when the task declares structured output\n * (via `x-structured-output: true`). Providers use it to request schema-conformant\n * JSON output from the model API.\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 outputSchema?: JsonSchema,\n sessionId?: string\n) => Promise<Output>;\n\n/**\n * Type for the preview run function for AiTask.executePreview().\n * Computes a fast preview from input alone -- no prior output needed.\n * No `signal` or `update_progress` -- preview execution is lightweight and synchronous-ish.\n */\nexport type AiProviderPreviewRunFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Model extends ModelConfig = ModelConfig,\n> = (input: Input, 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 * The optional `outputSchema` is provided for structured output tasks.\n *\n * Streaming primitive: this is the canonical authoring surface for provider streams.\n * Implementations MUST be `async function*` generators returning `AsyncIterable`.\n * Do not return a `ReadableStream` -- `ReadableStream` is an engine-internal primitive\n * used only at the dataflow edge for fan-out via `tee()`.\n *\n * Finish convention: yield `{ type: \"finish\", data: {} as Output }` at the end.\n * Do not accumulate deltas into the finish payload -- the `StreamingAiTask` / `TaskRunner`\n * consumer handles accumulation.\n *\n * @cancel The provided `signal` MUST be forwarded to the underlying SDK or fetch.\n * Generators MUST stop yielding promptly after `signal.aborted` becomes true -- either\n * because the underlying SDK tears down the connection, or because the generator checks\n * `signal.aborted` at loop boundaries. Use `try { ... } finally { ... }` to release any\n * resources (readers, timers) -- `finally` runs when the consumer stops iterating on abort.\n * On abort, the consumer will throw `TaskAbortedError`; do not swallow abort errors.\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 outputSchema?: JsonSchema,\n sessionId?: string\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 previewRunFnRegistry: Map<string, Map<string, AiProviderPreviewRunFn<any, any>>> = new Map();\n private providers: Map<string, AiProvider<any>> = new Map();\n private strategyResolvers: Map<string, AiStrategyResolver> = new Map();\n private defaultStrategy: IAiExecutionStrategy | undefined;\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 * Removes a previously registered provider and all of its run/stream/preview functions.\n * Used for cleanup when provider initialization fails partway through.\n * @param name - The provider name to unregister\n */\n unregisterProvider(name: string): void {\n this.providers.delete(name);\n this.strategyResolvers.delete(name);\n // Remove all run functions for this provider\n for (const [, providerMap] of this.runFnRegistry) {\n providerMap.delete(name);\n }\n for (const [, providerMap] of this.streamFnRegistry) {\n providerMap.delete(name);\n }\n for (const [, providerMap] of this.previewRunFnRegistry) {\n providerMap.delete(name);\n }\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 * Stable-sorted ids of all {@link AiProvider} instances currently registered\n * via {@link registerProvider} (typically after {@link AiProvider.register}).\n */\n getInstalledProviderIds(): string[] {\n return [...this.providers.keys()].sort();\n }\n\n /**\n * Registers a strategy resolver for a provider. The resolver receives the full\n * ModelConfig at execution time and returns the appropriate execution strategy.\n * This allows model-aware decisions (e.g., HFT WebGPU → queued, HFT WASM → direct).\n */\n registerStrategyResolver(providerName: string, resolver: AiStrategyResolver): void {\n this.strategyResolvers.set(providerName, resolver);\n }\n\n /**\n * Sets the default execution strategy used when no provider-specific resolver\n * is registered. Useful in tests to inject a strategy without registering a\n * full provider.\n */\n setDefaultStrategy(strategy: IAiExecutionStrategy): void {\n this.defaultStrategy = strategy;\n }\n\n /**\n * Resolves the execution strategy for a given model config.\n * Falls back to DirectExecutionStrategy if no resolver is registered.\n */\n getStrategy(model: ModelConfig): IAiExecutionStrategy {\n const resolver = this.strategyResolvers.get(model.provider);\n if (resolver) return resolver(model);\n if (!this.defaultStrategy) {\n this.defaultStrategy = new DirectExecutionStrategy();\n }\n return this.defaultStrategy;\n }\n\n /**\n * Creates a session on the named provider.\n * @param providerName - The provider to create a session on\n * @param model - The model configuration for the session\n * @returns An opaque session ID\n * @throws If the provider is not registered\n */\n createSession(providerName: string, model: ModelConfig): string {\n const provider = this.providers.get(providerName);\n if (!provider) {\n throw new Error(\n `No provider found for \"${providerName}\". Register the provider before creating sessions.`\n );\n }\n return provider.createSession(model);\n }\n\n /**\n * Disposes a session on the named provider. Silently ignores unknown providers.\n * @param providerName - The provider that owns the session\n * @param sessionId - The session ID to dispose\n */\n async disposeSession(providerName: string, sessionId: string): Promise<void> {\n const provider = this.providers.get(providerName);\n if (provider) {\n await provider.disposeSession(sessionId);\n }\n }\n\n /**\n * Stable-sorted provider ids that have a direct run function registered for `taskType`.\n * Use this when the UI or validation should only offer providers that can execute a task\n * (e.g. {@link ModelSearchTask}).\n */\n getProviderIdsForTask(taskType: string): string[] {\n const taskMap = this.runFnRegistry.get(taskType);\n if (!taskMap) return [];\n return [...taskMap.keys()].sort();\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 outputSchema?: JsonSchema,\n sessionId?: string\n ) => {\n const workerManager = globalServiceRegistry.get(WORKER_MANAGER);\n const result = await workerManager.callWorkerFunction<Output>(\n modelProvider,\n taskType,\n [input, model, outputSchema, sessionId],\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 outputSchema?: JsonSchema,\n sessionId?: string\n ) {\n const workerManager = globalServiceRegistry.get(WORKER_MANAGER);\n yield* workerManager.callWorkerStreamFunction<StreamEvent<Output>>(\n modelProvider,\n taskType,\n [input, model, outputSchema, sessionId],\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 preview function for a specific task type and model provider.\n * Creates a proxy that delegates preview execution to a Web Worker via WorkerManager.\n * Returns undefined (non-throwing) if the worker has no preview function for the task type.\n */\n registerAsWorkerPreviewRunFn<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n >(modelProvider: string, taskType: string) {\n const previewFn: AiProviderPreviewRunFn<Input, Output> = async (\n input: Input,\n model: ModelConfig | undefined\n ) => {\n const workerManager = globalServiceRegistry.get(WORKER_MANAGER);\n return workerManager.callWorkerPreviewFunction<Output>(modelProvider, taskType, [\n input,\n model,\n ]);\n };\n this.registerPreviewRunFn<Input, Output>(modelProvider, taskType, previewFn);\n }\n\n /**\n * Registers a preview execution function for a specific task type and model provider.\n * Called by AiTask.executePreview() to provide a fast, lightweight preview without a network call.\n */\n registerPreviewRunFn<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput>(\n modelProvider: string,\n taskType: string,\n previewRunFn: AiProviderPreviewRunFn<Input, Output>\n ) {\n if (!this.previewRunFnRegistry.has(taskType)) {\n this.previewRunFnRegistry.set(taskType, new Map());\n }\n this.previewRunFnRegistry.get(taskType)!.set(modelProvider, previewRunFn);\n }\n\n /**\n * Retrieves the preview execution function for a task type and model provider.\n * Returns undefined if no preview function is registered (fallback to default behavior).\n */\n getPreviewRunFn<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput>(\n modelProvider: string,\n taskType: string\n ): AiProviderPreviewRunFn<Input, Output> | undefined {\n const taskTypeMap = this.previewRunFnRegistry.get(taskType);\n return taskTypeMap?.get(modelProvider) as AiProviderPreviewRunFn<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 const installedProviders = this.getInstalledProviderIds();\n const providersForTask = this.getProviderIdsForTask(taskType);\n const hint =\n providersForTask.length > 0\n ? ` Providers supporting \"${taskType}\": [${providersForTask.join(\", \")}].`\n : installedProviders.length > 0\n ? ` Installed providers: [${installedProviders.join(\", \")}] (none support \"${taskType}\").`\n : \" No providers are registered. Call provider.register() before running AI tasks.\";\n throw new Error(\n `No run function found for task type \"${taskType}\" and provider \"${modelProvider}\".${hint}`\n );\n }\n return runFn;\n }\n}\n\n/**\n * Service token for the AI provider registry.\n */\nexport const AI_PROVIDER_REGISTRY = createServiceToken<AiProviderRegistry>(\"ai.provider.registry\");\n\n/**\n * Returns the AI provider registry from the given registry (defaults to global).\n * Lazy-registers a fresh `AiProviderRegistry` if the token is absent — same\n * pattern as `getLogger`. Makes scoped registries safe to use without an\n * explicit `registerAiProviderDefaults(registry)` call.\n */\nexport function getAiProviderRegistry(\n registry: ServiceRegistry = globalServiceRegistry\n): AiProviderRegistry {\n if (!registry.has(AI_PROVIDER_REGISTRY)) {\n registerAiProviderDefaults(registry);\n }\n return registry.get(AI_PROVIDER_REGISTRY);\n}\n\n/**\n * Replaces the AI provider registry on the given registry (defaults to global).\n */\nexport function setAiProviderRegistry(\n pr: AiProviderRegistry,\n registry: ServiceRegistry = globalServiceRegistry\n): void {\n registry.registerInstance(AI_PROVIDER_REGISTRY, pr);\n}\n\n/**\n * Registers the AI provider registry default factory on the given registry.\n * Called by `bootstrapWorkglow` and `createOrchestrationContext`.\n */\nexport function registerAiProviderDefaults(\n registry: ServiceRegistry = globalServiceRegistry\n): void {\n registry.registerIfAbsent(\n AI_PROVIDER_REGISTRY,\n (): AiProviderRegistry => new AiProviderRegistry(),\n true\n );\n}\n\n// Self-register on the global registry. Idempotent.\nregisterAiProviderDefaults();\n",
|
|
@@ -14,12 +14,15 @@
|
|
|
14
14
|
"/**\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 registerInputCompactor,\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/**\n * Gets the model repository from the given registry (defaults to global).\n * Lazily registers the default in-memory repository when the token isn't\n * present yet — same pattern as `getLogger`. Makes scoped registries\n * (e.g. from `createOrchestrationContext`) safe without an explicit\n * `registerModelDefaults(registry)` call.\n */\nexport function getGlobalModelRepository(\n registry: ServiceRegistry = globalServiceRegistry\n): ModelRepository {\n if (!registry.has(MODEL_REPOSITORY)) {\n registerModelDefaults(registry);\n }\n return registry.get(MODEL_REPOSITORY);\n}\n\n/**\n * Sets the model repository instance on the given registry (defaults to global).\n */\nexport function setGlobalModelRepository(\n repository: ModelRepository,\n registry: ServiceRegistry = globalServiceRegistry\n): void {\n registry.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. Resolves from the supplied registry —\n * `getGlobalModelRepository` lazy-registers defaults on it if absent, so a\n * scoped registry stays isolated from the global model repository.\n */\nasync function resolveModelFromRegistry(\n id: string,\n _format: string,\n registry: ServiceRegistry\n): Promise<ModelConfig | undefined> {\n const modelRepo = getGlobalModelRepository(registry);\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\nasync function compactModel(\n value: unknown,\n _format: string,\n registry: ServiceRegistry\n): Promise<string | undefined> {\n if (typeof value === \"object\" && value !== null && \"model_id\" in value) {\n const id = (value as Record<string, unknown>).model_id;\n if (typeof id !== \"string\") return undefined;\n const modelRepo = getGlobalModelRepository(registry);\n const model = await modelRepo.findByName(id);\n if (!model) return undefined;\n return id;\n }\n return undefined;\n}\n\n/**\n * Registers the model repository default factory and the \"model\" input resolver/compactor\n * on the given registry. Called by `bootstrapWorkglow` and `createOrchestrationContext`.\n */\nexport function registerModelDefaults(registry: ServiceRegistry = globalServiceRegistry): void {\n registry.registerIfAbsent(\n MODEL_REPOSITORY,\n (): ModelRepository => new InMemoryModelRepository(),\n true\n );\n registerInputResolver(\"model\", resolveModelFromRegistry, registry);\n registerInputCompactor(\"model\", compactModel, registry);\n}\n\n// Self-register on the global registry so module-relative imports (notably in\n// tests, which load source files alongside built copies of dependencies) see\n// the same defaults as `bootstrapWorkglow()`. Idempotent.\nregisterModelDefaults();\n",
|
|
15
15
|
"/**\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 type { WorkerServerBase as WorkerServer } from \"@workglow/util/worker\";\nimport { globalServiceRegistry, WORKER_MANAGER } from \"@workglow/util/worker\";\nimport type { ModelConfig } from \"../model/ModelSchema\";\nimport type {\n AiProviderPreviewRunFn,\n AiProviderRunFn,\n AiProviderStreamFn,\n} from \"./AiProviderRegistry\";\nimport { getAiProviderRegistry } from \"./AiProviderRegistry\";\n\n/**\n * Job queue concurrency: one limit for the primary ({@link QueuedAiProvider} hardware) queue,\n * or per-slot limits. Hugging Face Transformers ONNX uses `gpu` and `cpu` for its two queues.\n */\nexport type AiProviderQueueConcurrency = number | Record<string, number>;\nexport const DEFAULT_AI_PROVIDER_WORKER_IDLE_TIMEOUT_MS = 15 * 60 * 1000;\n\n/**\n * Resolves the primary (e.g. WebGPU) queue limit for {@link QueuedAiProvider}.\n * A numeric `concurrency` sets that queue; a record uses `gpu` (default 1).\n */\nexport function resolveAiProviderGpuQueueConcurrency(\n concurrency: AiProviderQueueConcurrency | undefined\n): number {\n if (concurrency === undefined) {\n return 1;\n }\n if (typeof concurrency === \"number\") {\n return concurrency;\n }\n return concurrency.gpu ?? 1;\n}\n\n/**\n * Options for registering an AI provider on the main thread.\n *\n * - If the provider was constructed **with** task run functions → **inline** registration\n * (direct run fns). No `worker` option.\n * - If the provider was constructed **without** tasks → **worker** registration (proxies).\n * A `worker` (instance or lazy factory) is **required**.\n */\nexport interface AiProviderRegisterOptions {\n /**\n * Web Worker for worker-backed registration. Pass a `Worker` or a factory\n * `() => Worker` to defer instantiation until the first job (lazy worker).\n */\n worker?: Worker | (() => Worker);\n /**\n * Idle timeout for factory-backed worker registrations. `0` disables idle termination.\n * Defaults to 15 minutes for AI providers when `worker` is a factory.\n */\n workerIdleTimeoutMs?: number;\n /** Job queue configuration */\n queue?: {\n /**\n * Concurrent jobs on the provider's primary queued path (e.g. GPU), default 1.\n * Use a record for multiple queues — e.g. `{ gpu: 1, cpu: 4 }` for Hugging Face\n * Transformers ONNX (`cpu` defaults to 4 in production and 1 under test when omitted).\n */\n concurrency?: AiProviderQueueConcurrency;\n /** Set to false to skip automatic queue creation. Defaults to true. */\n autoCreate?: boolean;\n };\n}\n\n/**\n * Registration context passed to {@link AiProvider.onInitialize}, including whether\n * the provider is registering inline (tasks present) or worker-backed (no tasks).\n */\nexport interface AiProviderRegisterContext extends AiProviderRegisterOptions {\n readonly isInline: boolean;\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 proxies)\n * - Registering functions on a WorkerServer (for worker-side code)\n * - Lifecycle management (initialize / dispose)\n *\n * @example\n * ```typescript\n * // Worker host (main thread) -- lightweight, no heavy task imports:\n * await new MyProvider().register({\n * worker: () => new Worker(new URL(\"./worker.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline -- caller provides the tasks (imports heavy library):\n * import { MY_TASKS } from \"./MyJobRunFns\";\n * await new MyProvider(MY_TASKS).register();\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 * Human-readable label for the provider (UI, JSON Schema `x-ui-enum-labels`, etc.).\n */\n abstract readonly displayName: string;\n\n /** Whether this provider runs models locally (on the same machine). */\n abstract readonly isLocal: boolean;\n\n /** Whether this provider can run in a browser environment. */\n abstract readonly supportsBrowser: boolean;\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 preview run functions.\n * Injected via constructor alongside `tasks`. Only needed for tasks that\n * provide lightweight previews via executePreview().\n */\n protected readonly previewTasks?: Record<string, AiProviderPreviewRunFn<any, any, TModelConfig>>;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, TModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, TModelConfig>>,\n previewTasks?: Record<string, AiProviderPreviewRunFn<any, any, TModelConfig>>\n ) {\n this.tasks = tasks;\n this.streamTasks = streamTasks;\n this.previewTasks = previewTasks;\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 preview run function for a specific task type.\n * @param taskType - The task type name (e.g., \"CountTokensTask\")\n * @returns The preview function, or undefined if not supported for this task type\n */\n getPreviewRunFn<I extends TaskInput = TaskInput, O extends TaskOutput = TaskOutput>(\n taskType: string\n ): AiProviderPreviewRunFn<I, O, TModelConfig> | undefined {\n return this.previewTasks?.[taskType] as AiProviderPreviewRunFn<I, O, TModelConfig> | undefined;\n }\n\n /**\n * Register this provider on the main thread.\n *\n * Inferred from constructor: **with** tasks → direct run functions; **without** tasks →\n * worker proxies (requires `worker` in options).\n *\n * Creates a job queue unless `queue.autoCreate` is set to false.\n *\n * @param options - Registration options (worker for worker-backed, queue config)\n */\n async register(options: AiProviderRegisterOptions = {}): Promise<void> {\n const isInline = !!this.tasks;\n const context: AiProviderRegisterContext = { ...options, isInline };\n await this.onInitialize(context);\n\n if (isInline) {\n if (!this.tasks) {\n throw new Error(\n `AiProvider \"${this.name}\": tasks must be provided via the constructor for inline registration. ` +\n `Pass the tasks record when constructing the provider, e.g. new MyProvider(MY_TASKS).`\n );\n }\n } else {\n if (!options.worker) {\n throw new Error(\n `AiProvider \"${this.name}\": worker is required when no tasks are provided (worker-backed registration). ` +\n `Pass worker: new Worker(...) or worker: () => new Worker(...).`\n );\n }\n }\n\n const registry = getAiProviderRegistry();\n\n if (!isInline && options.worker) {\n const workerManager = globalServiceRegistry.get(WORKER_MANAGER);\n if (typeof options.worker === \"function\") {\n workerManager.registerWorker(this.name, options.worker, {\n idleTimeoutMs: options.workerIdleTimeoutMs ?? DEFAULT_AI_PROVIDER_WORKER_IDLE_TIMEOUT_MS,\n });\n } else {\n workerManager.registerWorker(this.name, options.worker);\n }\n for (const taskType of this.taskTypes) {\n registry.registerAsWorkerRunFn(this.name, taskType);\n registry.registerAsWorkerStreamFn(this.name, taskType);\n registry.registerAsWorkerPreviewRunFn(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.previewTasks) {\n for (const [taskType, fn] of Object.entries(this.previewTasks)) {\n registry.registerPreviewRunFn(this.name, taskType, fn as AiProviderPreviewRunFn);\n }\n }\n\n registry.registerProvider(this);\n\n try {\n await this.afterRegister(options);\n } catch (err) {\n // Clean up the partially-registered provider so the registry isn't left\n // in an inconsistent state (e.g., functions registered but no queue).\n registry.unregisterProvider(this.name);\n throw err;\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.previewTasks) {\n for (const [taskType, fn] of Object.entries(this.previewTasks)) {\n workerServer.registerPreviewFunction(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: AiProviderRegisterContext): 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 a session for the given model configuration.\n * Returns an opaque session ID that can be passed to run/stream functions\n * to reuse provider-side resources (e.g., a loaded pipeline or KV cache).\n *\n * The base implementation returns a random UUID; provider subclasses\n * (e.g., HF Transformers, llama-cpp) override this to allocate real resources.\n */\n createSession(_model: ModelConfig): string {\n return crypto.randomUUID();\n }\n\n /**\n * Dispose of a previously created session.\n * Provider subclasses override this to release resources tied to the session.\n * The base implementation is a no-op.\n */\n async disposeSession(_sessionId: string): Promise<void> {}\n\n /**\n * Called at the end of {@link register} after registry wiring.\n * {@link QueuedAiProvider} overrides this to create the default job queue; the base\n * implementation is a no-op so worker-only provider classes stay free of queue/storage.\n */\n protected async afterRegister(_options: AiProviderRegisterOptions): Promise<void> {}\n}\n",
|
|
16
16
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { QueuedExecutionStrategy } from \"../execution/QueuedExecutionStrategy\";\nimport type { IAiExecutionStrategy } from \"../execution/IAiExecutionStrategy\";\nimport type { ModelConfig } from \"../model/ModelSchema\";\nimport { AiProvider, resolveAiProviderGpuQueueConcurrency } from \"./AiProvider\";\nimport type { AiProviderRegisterOptions } from \"./AiProvider\";\nimport { getAiProviderRegistry } from \"./AiProviderRegistry\";\n\n/**\n * AI provider base that registers a {@link QueuedExecutionStrategy} for\n * GPU-bound providers that need serialized access to hardware resources.\n *\n * Subclasses can override {@link getStrategyForModel} to make the decision\n * model-aware (e.g., HFT returns queued for WebGPU but direct for WASM).\n *\n * When `queue.autoCreate` is `false` (default: `true`), the strategy resolver\n * is still registered but the queue is not auto-created — execution will succeed\n * only if a matching queue was pre-registered in the {@link TaskQueueRegistry}.\n *\n * Web worker entrypoints should use a provider that extends {@link AiProvider} only\n * (no queue / storage), so bundles for `registerOnWorkerServer` stay lean.\n */\nexport abstract class QueuedAiProvider<\n TModelConfig extends ModelConfig = ModelConfig,\n> extends AiProvider<TModelConfig> {\n protected queuedStrategy: QueuedExecutionStrategy | undefined;\n\n protected override async afterRegister(options: AiProviderRegisterOptions): Promise<void> {\n const autoCreate = options.queue?.autoCreate !== false;\n this.queuedStrategy = new QueuedExecutionStrategy(\n `${this.name}_gpu`,\n resolveAiProviderGpuQueueConcurrency(options.queue?.concurrency),\n autoCreate\n );\n getAiProviderRegistry().registerStrategyResolver(this.name, (model) =>\n this.getStrategyForModel(model)\n );\n }\n\n /**\n * Helper to create a named {@link QueuedExecutionStrategy} using the same\n * `autoCreate` setting from the registration options.\n */\n protected createQueuedStrategy(\n queueName: string,\n concurrency: number,\n options: AiProviderRegisterOptions\n ): QueuedExecutionStrategy {\n const autoCreate = options.queue?.autoCreate !== false;\n return new QueuedExecutionStrategy(queueName, concurrency, autoCreate);\n }\n\n /**\n * Returns the execution strategy for a given model. By default, always\n * returns the queued strategy. Subclasses can override to make this\n * model-dependent (e.g., HFT checks `provider_config.device`).\n */\n protected getStrategyForModel(_model: ModelConfig): IAiExecutionStrategy {\n return this.queuedStrategy!;\n }\n}\n",
|
|
17
|
-
"/**\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 { AiChatTask } from \"./AiChatTask\";\nimport { BackgroundRemovalTask } from \"./BackgroundRemovalTask\";\nimport { ChunkRetrievalTask } from \"./ChunkRetrievalTask\";\nimport { ChunkVectorUpsertTask } from \"./ChunkVectorUpsertTask\";\nimport { ContextBuilderTask } from \"./ContextBuilderTask\";\nimport { CountTokensTask } from \"./CountTokensTask\";\nimport { DocumentEnricherTask } from \"./DocumentEnricherTask\";\nimport { DocumentUpsertTask } from \"./DocumentUpsertTask\";\nimport { DownloadModelTask } from \"./DownloadModelTask\";\nimport { ImageEditTask } from \"./generation/ImageEditTask\";\nimport { FaceDetectorTask } from \"./FaceDetectorTask\";\nimport { FaceLandmarkerTask } from \"./FaceLandmarkerTask\";\nimport { ImageGenerateTask } from \"./generation/ImageGenerateTask\";\nimport { GestureRecognizerTask } from \"./GestureRecognizerTask\";\nimport { HandLandmarkerTask } from \"./HandLandmarkerTask\";\nimport { HierarchicalChunkerTask } from \"./HierarchicalChunkerTask\";\nimport { HierarchyJoinTask } from \"./HierarchyJoinTask\";\nimport { KbToDocumentsTask } from \"./KbToDocumentsTask\";\nimport { ImageClassificationTask } from \"./ImageClassificationTask\";\nimport { ImageEmbeddingTask } from \"./ImageEmbeddingTask\";\nimport { ImageSegmentationTask } from \"./ImageSegmentationTask\";\nimport { ImageToTextTask } from \"./ImageToTextTask\";\nimport { ModelInfoTask } from \"./ModelInfoTask\";\nimport { ModelSearchTask } from \"./ModelSearchTask\";\nimport { ObjectDetectionTask } from \"./ObjectDetectionTask\";\nimport { PoseLandmarkerTask } from \"./PoseLandmarkerTask\";\nimport { QueryExpanderTask } from \"./QueryExpanderTask\";\nimport { RerankerTask } from \"./RerankerTask\";\nimport { StructuralParserTask } from \"./StructuralParserTask\";\nimport { StructuredGenerationTask } from \"./StructuredGenerationTask\";\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 { ToolCallingTask } from \"./ToolCallingTask\";\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 AiChatTask,\n BackgroundRemovalTask,\n CountTokensTask,\n ContextBuilderTask,\n DocumentEnricherTask,\n DocumentUpsertTask,\n ChunkRetrievalTask,\n ChunkVectorUpsertTask,\n DownloadModelTask,\n ImageEditTask,\n FaceDetectorTask,\n FaceLandmarkerTask,\n ImageGenerateTask,\n GestureRecognizerTask,\n HandLandmarkerTask,\n HierarchicalChunkerTask,\n HierarchyJoinTask,\n KbToDocumentsTask,\n ImageClassificationTask,\n ImageEmbeddingTask,\n ImageSegmentationTask,\n ImageToTextTask,\n ModelInfoTask,\n ModelSearchTask,\n ObjectDetectionTask,\n PoseLandmarkerTask,\n QueryExpanderTask,\n RerankerTask,\n StructuralParserTask,\n StructuredGenerationTask,\n TextChunkerTask,\n TextClassificationTask,\n TextEmbeddingTask,\n TextFillMaskTask,\n TextGenerationTask,\n TextLanguageDetectionTask,\n TextNamedEntityRecognitionTask,\n TextQuestionAnswerTask,\n TextRewriterTask,\n TextSummaryTask,\n TextTranslationTask,\n ToolCallingTask,\n TopicSegmenterTask,\n UnloadModelTask,\n VectorQuantizeTask,\n VectorSimilarityTask,\n ];\n tasks.map(TaskRegistry.registerTask);\n return tasks;\n};\n\nexport * from \"./AiChatTask\";\nexport * from \"./ChatMessage\";\nexport * from \"./BackgroundRemovalTask\";\nexport * from \"./base/AiImageOutputTask\";\nexport * from \"./base/AiTask\";\nexport * from \"./base/AiTaskSchemas\";\nexport * from \"./base/StreamingAiTask\";\nexport * from \"./ChunkRetrievalTask\";\nexport * from \"./ChunkVectorUpsertTask\";\nexport * from \"./ContextBuilderTask\";\nexport * from \"./CountTokensTask\";\nexport * from \"./DocumentEnricherTask\";\nexport * from \"./DocumentUpsertTask\";\nexport * from \"./DownloadModelTask\";\nexport * from \"./generation/ImageEditTask\";\nexport * from \"./FaceDetectorTask\";\nexport * from \"./FaceLandmarkerTask\";\nexport * from \"./generation/ImageGenerateTask\";\nexport * from \"./GestureRecognizerTask\";\nexport * from \"./HandLandmarkerTask\";\nexport * from \"./HierarchicalChunkerTask\";\nexport * from \"./HierarchyJoinTask\";\nexport * from \"./KbToDocumentsTask\";\nexport * from \"./ImageClassificationTask\";\nexport * from \"./ImageEmbeddingTask\";\nexport * from \"./ImageSegmentationTask\";\nexport * from \"./ImageToTextTask\";\nexport * from \"./MessageConversion\";\nexport * from \"./ModelInfoTask\";\nexport * from \"./ModelSearchTask\";\nexport * from \"./ObjectDetectionTask\";\nexport * from \"./PoseLandmarkerTask\";\nexport * from \"./QueryExpanderTask\";\nexport * from \"./RerankerTask\";\nexport * from \"./StructuralParserTask\";\nexport * from \"./StructuredGenerationTask\";\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 \"./ToolCallingTask\";\nexport * from \"./ToolCallingUtils\";\nexport * from \"./TopicSegmenterTask\";\nexport * from \"./UnloadModelTask\";\nexport * from \"./VectorQuantizeTask\";\nexport * from \"./VectorSimilarityTask\";\n",
|
|
18
|
-
"/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { IExecuteContext, StreamEvent } from \"@workglow/task-graph\";\nimport { TaskConfigSchema } from \"@workglow/task-graph\";\nimport type { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport type { AiJobInput } from \"../job/AiJob\";\nimport type { ModelConfig } from \"../model/ModelSchema\";\nimport { getAiProviderRegistry } from \"../provider/AiProviderRegistry\";\nimport { TypeModel } from \"./base/AiTaskSchemas\";\nimport { StreamingAiTask } from \"./base/StreamingAiTask\";\nimport type { ChatMessage, ContentBlock } from \"./ChatMessage\";\nimport { ChatMessageSchema, ContentBlockSchema } from \"./ChatMessage\";\nimport type { IHumanRequest } from \"@workglow/util\";\nimport { resolveHumanConnector } from \"@workglow/util\";\n\n// ========================================================================\n// Schemas\n// ========================================================================\n\nconst modelSchema = TypeModel(\"model:AiChatTask\");\n\n/**\n * Connector elicit schema. The connector side renders a plain text field\n * for this — chat UIs let the user type a message, not author a JSON\n * ContentBlock array. AiChatTask wraps the string into\n * `[{ type: \"text\", text }]` before appending to the conversation.\n *\n * `content` is intentionally optional: submitting an empty message ends\n * the conversation (the chat loop treats empty content as \"done\"). A\n * consumer that wants to send structured content blocks directly (e.g.,\n * an image) can still bypass the elicit form and call `connector.send`\n * with `content: { content: ContentBlock[] }` — the task accepts both shapes.\n */\nconst chatConnectorContentSchema = {\n type: \"object\",\n properties: {\n content: {\n type: \"string\",\n title: \"Message\",\n description: \"Your reply (leave blank to end the conversation)\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const AiChatInputSchema = {\n type: \"object\",\n properties: {\n model: modelSchema,\n prompt: {\n oneOf: [\n { type: \"string\", title: \"Prompt\", description: \"The initial user message\" },\n {\n type: \"array\",\n title: \"Prompt\",\n description: \"The initial user message as structured content blocks\",\n items: ContentBlockSchema,\n },\n ],\n title: \"Prompt\",\n description: \"The first user message to start the conversation\",\n },\n messages: {\n type: \"array\",\n title: \"Messages\",\n description:\n \"Conversation history (managed internally by the chat loop; not a user-facing input)\",\n items: ChatMessageSchema,\n \"x-ui-hidden\": true,\n },\n systemPrompt: {\n type: \"string\",\n title: \"System Prompt\",\n description: \"Optional system instructions for the model\",\n },\n maxTokens: {\n type: \"number\",\n title: \"Max Tokens\",\n description: \"Per-turn token limit\",\n minimum: 1,\n \"x-ui-group\": \"Configuration\",\n },\n temperature: {\n type: \"number\",\n title: \"Temperature\",\n description: \"Sampling temperature\",\n minimum: 0,\n maximum: 2,\n \"x-ui-group\": \"Configuration\",\n },\n maxIterations: {\n type: \"number\",\n title: \"Max Iterations\",\n description: \"Safety cap on conversation turns\",\n minimum: 1,\n default: 100,\n \"x-ui-group\": \"Configuration\",\n },\n },\n required: [\"model\", \"prompt\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const AiChatOutputSchema = {\n type: \"object\",\n properties: {\n text: {\n type: \"string\",\n title: \"Text\",\n description: \"Last assistant response\",\n \"x-stream\": \"append\",\n },\n messages: {\n type: \"array\",\n title: \"Messages\",\n description: \"Full conversation history\",\n items: ChatMessageSchema,\n \"x-stream\": \"object\",\n },\n iterations: {\n type: \"number\",\n title: \"Iterations\",\n description: \"Number of completed turns\",\n },\n },\n required: [\"text\", \"messages\", \"iterations\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\n// ========================================================================\n// Runtime types\n// ========================================================================\n\nexport type AiChatTaskInput = Omit<FromSchema<typeof AiChatInputSchema>, \"messages\"> & {\n readonly messages?: ReadonlyArray<ChatMessage>;\n};\n\nexport type AiChatTaskOutput = FromSchema<typeof AiChatOutputSchema>;\n\n/** Provider-facing input: same structural type as AiChatTaskInput, named separately for intent. */\nexport type AiChatProviderInput = AiChatTaskInput;\n\nexport interface AiChatProviderOutput {\n readonly text: string;\n [key: string]: unknown;\n}\n\n// ========================================================================\n// Task class\n// ========================================================================\n\nexport class AiChatTask extends StreamingAiTask<AiChatTaskInput, AiChatTaskOutput> {\n public static override type = \"AiChatTask\";\n protected static override readonly streamingPhaseLabel = \"Replying\";\n public static override category = \"AI Chat\";\n public static override title = \"AI Chat\";\n public static override description =\n \"Multi-turn chat with a language model, using a human connector to collect user input between turns.\";\n public static override cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n },\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n }\n\n public static override inputSchema(): DataPortSchema {\n return AiChatInputSchema as DataPortSchema;\n }\n\n public static override outputSchema(): DataPortSchema {\n return AiChatOutputSchema as DataPortSchema;\n }\n\n private _sessionId: string | undefined;\n\n protected override async getJobInput(\n input: AiChatTaskInput\n ): Promise<AiJobInput<AiChatTaskInput>> {\n const model = input.model as ModelConfig;\n if (!this._sessionId) {\n this._sessionId = getAiProviderRegistry().createSession(model.provider, model);\n }\n return {\n taskType: \"AiChatTask\",\n aiProvider: model.provider,\n taskInput: input as AiChatTaskInput & { model: ModelConfig },\n sessionId: this._sessionId,\n };\n }\n\n override async *executeStream(\n input: AiChatTaskInput,\n context: IExecuteContext\n ): AsyncIterable<StreamEvent<AiChatTaskOutput>> {\n // Reset session so re-running the task starts a fresh conversation.\n this._sessionId = undefined;\n\n const model = input.model as ModelConfig;\n if (!model || typeof model !== \"object\") {\n throw new Error(\"AiChatTask: model was not resolved to ModelConfig\");\n }\n const connector = resolveHumanConnector(context);\n\n // Build initial history.\n const history: ChatMessage[] = [];\n if (input.systemPrompt) {\n history.push({ role: \"system\", content: [{ type: \"text\", text: input.systemPrompt }] });\n }\n const firstUserBlocks: ReadonlyArray<ContentBlock> =\n typeof input.prompt === \"string\"\n ? [{ type: \"text\", text: input.prompt }]\n : (input.prompt as ReadonlyArray<ContentBlock>);\n history.push({ role: \"user\", content: firstUserBlocks });\n\n // Call getJobInput once before the loop to initialize _sessionId.\n const workingInput: AiChatTaskInput = { ...input, messages: history };\n await this.getJobInput(workingInput);\n const strategy = getAiProviderRegistry().getStrategy(model);\n const maxIterations = input.maxIterations ?? 100;\n\n // Register session disposal so it's cleaned up at end of the resource scope.\n if (context.resourceScope && this._sessionId) {\n const sessionId = this._sessionId;\n context.resourceScope.register(`ai:session:${sessionId}`, async () => {\n await getAiProviderRegistry().disposeSession(model.provider, sessionId);\n });\n }\n\n // Emit the initial messages as an object-delta. TaskRunner accumulates\n // array object-deltas by appending items (upsert-by-id when an `id`\n // field is present; plain append otherwise). ChatMessage has no id,\n // so we yield *deltas* — just the messages added since the last yield —\n // rather than full snapshots, or the accumulator would duplicate every\n // existing message on each emission.\n yield {\n type: \"object-delta\",\n port: \"messages\",\n objectDelta: [...history],\n } as StreamEvent<AiChatTaskOutput>;\n\n let iterations = 0;\n let lastAssistantText = \"\";\n for (let turn = 0; turn < maxIterations; turn++) {\n // Fresh job input per turn with current history snapshot.\n const perTurnInput: AiChatTaskInput = { ...input, messages: [...history] };\n const turnJobInput = await this.getJobInput(perTurnInput);\n\n let assistantText = \"\";\n for await (const event of strategy.executeStream(\n turnJobInput as any,\n context,\n this.runConfig.runnerId\n )) {\n if (event.type === \"text-delta\") {\n assistantText += (event as any).textDelta;\n yield {\n ...event,\n port: (event as any).port ?? \"text\",\n } as StreamEvent<AiChatTaskOutput>;\n } else if (event.type === \"finish\") {\n // swallow — we emit our own finish at the end\n } else {\n yield event as StreamEvent<AiChatTaskOutput>;\n }\n }\n\n iterations++;\n lastAssistantText = assistantText;\n const assistantMsg: ChatMessage = {\n role: \"assistant\",\n content: [{ type: \"text\", text: assistantText }],\n };\n history.push(assistantMsg);\n yield {\n type: \"object-delta\",\n port: \"messages\",\n objectDelta: [assistantMsg],\n } as StreamEvent<AiChatTaskOutput>;\n\n // Ask the human for the next turn.\n const request: IHumanRequest = {\n requestId: crypto.randomUUID(),\n targetHumanId: \"default\",\n kind: \"elicit\",\n message: \"\",\n contentSchema: chatConnectorContentSchema,\n contentData: undefined,\n expectsResponse: true,\n mode: \"multi-turn\",\n metadata: { iteration: turn, taskId: this.id },\n };\n\n const response = await connector.send(request, context.signal);\n if (response.action === \"cancel\" || response.action === \"decline\") break;\n\n // The elicit schema asks for a plain string; accept either shape so\n // programmatic callers can also send raw ContentBlock[] (e.g. images).\n // `response.done` is a form-completion flag (the submit happened), not\n // a conversation signal — do NOT treat it as end-of-chat. The signal\n // that the user wants to end the conversation is empty content.\n const raw = response.content?.content;\n let userContent: ContentBlock[];\n if (typeof raw === \"string\") {\n const text = raw.trim();\n userContent = text.length > 0 ? [{ type: \"text\", text: raw }] : [];\n } else if (Array.isArray(raw)) {\n userContent = raw as ContentBlock[];\n } else {\n userContent = [];\n }\n if (userContent.length === 0) break;\n\n const userMsg: ChatMessage = { role: \"user\", content: userContent };\n history.push(userMsg);\n yield {\n type: \"object-delta\",\n port: \"messages\",\n objectDelta: [userMsg],\n } as StreamEvent<AiChatTaskOutput>;\n }\n\n yield {\n type: \"finish\",\n data: {\n text: lastAssistantText,\n messages: [...history] as AiChatTaskOutput[\"messages\"],\n iterations,\n } satisfies AiChatTaskOutput,\n } as StreamEvent<AiChatTaskOutput>;\n }\n\n override async execute(\n input: AiChatTaskInput,\n context: IExecuteContext\n ): Promise<AiChatTaskOutput | undefined> {\n let result: AiChatTaskOutput | undefined;\n for await (const event of this.executeStream(input, context)) {\n if (event.type === \"finish\") {\n result = (event as { type: \"finish\"; data: AiChatTaskOutput }).data;\n }\n }\n return result;\n }\n}\n",
|
|
17
|
+
"/**\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 { AiChatTask } from \"./AiChatTask\";\nimport { AiChatWithKbTask } from \"./AiChatWithKbTask\";\nimport { BackgroundRemovalTask } from \"./BackgroundRemovalTask\";\nimport { ChunkRetrievalTask } from \"./ChunkRetrievalTask\";\nimport { ChunkVectorUpsertTask } from \"./ChunkVectorUpsertTask\";\nimport { ContextBuilderTask } from \"./ContextBuilderTask\";\nimport { CountTokensTask } from \"./CountTokensTask\";\nimport { DocumentEnricherTask } from \"./DocumentEnricherTask\";\nimport { DocumentUpsertTask } from \"./DocumentUpsertTask\";\nimport { DownloadModelTask } from \"./DownloadModelTask\";\nimport { ImageEditTask } from \"./generation/ImageEditTask\";\nimport { FaceDetectorTask } from \"./FaceDetectorTask\";\nimport { FaceLandmarkerTask } from \"./FaceLandmarkerTask\";\nimport { ImageGenerateTask } from \"./generation/ImageGenerateTask\";\nimport { GestureRecognizerTask } from \"./GestureRecognizerTask\";\nimport { HandLandmarkerTask } from \"./HandLandmarkerTask\";\nimport { HierarchicalChunkerTask } from \"./HierarchicalChunkerTask\";\nimport { HierarchyJoinTask } from \"./HierarchyJoinTask\";\nimport { KbSearchTask } from \"./KbSearchTask\";\nimport { KbToDocumentsTask } from \"./KbToDocumentsTask\";\nimport { ImageClassificationTask } from \"./ImageClassificationTask\";\nimport { ImageEmbeddingTask } from \"./ImageEmbeddingTask\";\nimport { ImageSegmentationTask } from \"./ImageSegmentationTask\";\nimport { ImageToTextTask } from \"./ImageToTextTask\";\nimport { ModelInfoTask } from \"./ModelInfoTask\";\nimport { ModelSearchTask } from \"./ModelSearchTask\";\nimport { ObjectDetectionTask } from \"./ObjectDetectionTask\";\nimport { PoseLandmarkerTask } from \"./PoseLandmarkerTask\";\nimport { QueryExpanderTask } from \"./QueryExpanderTask\";\nimport { RerankerTask } from \"./RerankerTask\";\nimport { StructuralParserTask } from \"./StructuralParserTask\";\nimport { StructuredGenerationTask } from \"./StructuredGenerationTask\";\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 { ToolCallingTask } from \"./ToolCallingTask\";\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 AiChatTask,\n AiChatWithKbTask,\n BackgroundRemovalTask,\n CountTokensTask,\n ContextBuilderTask,\n DocumentEnricherTask,\n DocumentUpsertTask,\n ChunkRetrievalTask,\n ChunkVectorUpsertTask,\n DownloadModelTask,\n ImageEditTask,\n FaceDetectorTask,\n FaceLandmarkerTask,\n ImageGenerateTask,\n GestureRecognizerTask,\n HandLandmarkerTask,\n HierarchicalChunkerTask,\n HierarchyJoinTask,\n KbSearchTask,\n KbToDocumentsTask,\n ImageClassificationTask,\n ImageEmbeddingTask,\n ImageSegmentationTask,\n ImageToTextTask,\n ModelInfoTask,\n ModelSearchTask,\n ObjectDetectionTask,\n PoseLandmarkerTask,\n QueryExpanderTask,\n RerankerTask,\n StructuralParserTask,\n StructuredGenerationTask,\n TextChunkerTask,\n TextClassificationTask,\n TextEmbeddingTask,\n TextFillMaskTask,\n TextGenerationTask,\n TextLanguageDetectionTask,\n TextNamedEntityRecognitionTask,\n TextQuestionAnswerTask,\n TextRewriterTask,\n TextSummaryTask,\n TextTranslationTask,\n ToolCallingTask,\n TopicSegmenterTask,\n UnloadModelTask,\n VectorQuantizeTask,\n VectorSimilarityTask,\n ];\n tasks.map(TaskRegistry.registerTask);\n return tasks;\n};\n\nexport * from \"./AiChatTask\";\nexport * from \"./AiChatWithKbTask\";\nexport * from \"./ChatMessage\";\nexport * from \"./BackgroundRemovalTask\";\nexport * from \"./base/AiImageOutputTask\";\nexport * from \"./base/AiTask\";\nexport * from \"./base/AiTaskSchemas\";\nexport * from \"./base/responseFormat\";\nexport * from \"./base/StreamingAiTask\";\nexport * from \"./ChunkRetrievalTask\";\nexport * from \"./ChunkVectorUpsertTask\";\nexport * from \"./ContextBuilderTask\";\nexport * from \"./CountTokensTask\";\nexport * from \"./DocumentEnricherTask\";\nexport * from \"./DocumentUpsertTask\";\nexport * from \"./DownloadModelTask\";\nexport * from \"./generation/ImageEditTask\";\nexport * from \"./FaceDetectorTask\";\nexport * from \"./FaceLandmarkerTask\";\nexport * from \"./generation/ImageGenerateTask\";\nexport * from \"./GestureRecognizerTask\";\nexport * from \"./HandLandmarkerTask\";\nexport * from \"./HierarchicalChunkerTask\";\nexport * from \"./HierarchyJoinTask\";\nexport * from \"./KbSearchTask\";\nexport * from \"./KbToDocumentsTask\";\nexport * from \"./ImageClassificationTask\";\nexport * from \"./ImageEmbeddingTask\";\nexport * from \"./ImageSegmentationTask\";\nexport * from \"./ImageToTextTask\";\nexport * from \"./MessageConversion\";\nexport * from \"./ModelInfoTask\";\nexport * from \"./ModelSearchTask\";\nexport * from \"./ObjectDetectionTask\";\nexport * from \"./PoseLandmarkerTask\";\nexport * from \"./QueryExpanderTask\";\nexport * from \"./RerankerTask\";\nexport * from \"./StructuralParserTask\";\nexport * from \"./StructuredGenerationTask\";\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 \"./ToolCallingTask\";\nexport * from \"./ToolCallingUtils\";\nexport * from \"./TopicSegmenterTask\";\nexport * from \"./UnloadModelTask\";\nexport * from \"./VectorQuantizeTask\";\nexport * from \"./VectorSimilarityTask\";\n",
|
|
18
|
+
"/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { IExecuteContext, StreamEvent } from \"@workglow/task-graph\";\nimport { TaskConfigSchema } from \"@workglow/task-graph\";\nimport type { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport type { AiJobInput } from \"../job/AiJob\";\nimport type { ModelConfig } from \"../model/ModelSchema\";\nimport { getAiProviderRegistry } from \"../provider/AiProviderRegistry\";\nimport { TypeModel } from \"./base/AiTaskSchemas\";\nimport { buildResponseFormatAddendum } from \"./base/responseFormat\";\nimport { StreamingAiTask } from \"./base/StreamingAiTask\";\nimport type { ChatMessage, ContentBlock } from \"./ChatMessage\";\nimport { ChatMessageSchema, ContentBlockSchema } from \"./ChatMessage\";\nimport type { IHumanRequest } from \"@workglow/util\";\nimport { resolveHumanConnector } from \"@workglow/util\";\n\n// ========================================================================\n// Schemas\n// ========================================================================\n\nconst modelSchema = TypeModel(\"model:AiChatTask\");\n\n/**\n * Connector elicit schema. The connector side renders a plain text field\n * for this — chat UIs let the user type a message, not author a JSON\n * ContentBlock array. AiChatTask wraps the string into\n * `[{ type: \"text\", text }]` before appending to the conversation.\n *\n * `content` is intentionally optional: submitting an empty message ends\n * the conversation (the chat loop treats empty content as \"done\"). A\n * consumer that wants to send structured content blocks directly (e.g.,\n * an image) can still bypass the elicit form and call `connector.send`\n * with `content: { content: ContentBlock[] }` — the task accepts both shapes.\n */\nconst chatConnectorContentSchema = {\n type: \"object\",\n properties: {\n content: {\n type: \"string\",\n title: \"Message\",\n description: \"Your reply (leave blank to end the conversation)\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const AiChatInputSchema = {\n type: \"object\",\n properties: {\n model: modelSchema,\n prompt: {\n oneOf: [\n { type: \"string\", title: \"Prompt\", description: \"The initial user message\" },\n {\n type: \"array\",\n title: \"Prompt\",\n description: \"The initial user message as structured content blocks\",\n items: ContentBlockSchema,\n },\n ],\n title: \"Prompt\",\n description: \"The first user message to start the conversation\",\n },\n messages: {\n type: \"array\",\n title: \"Messages\",\n description:\n \"Conversation history (managed internally by the chat loop; not a user-facing input)\",\n items: ChatMessageSchema,\n \"x-ui-hidden\": true,\n },\n systemPrompt: {\n type: \"string\",\n title: \"System Prompt\",\n description: \"Optional system instructions for the model\",\n },\n maxTokens: {\n type: \"number\",\n title: \"Max Tokens\",\n description: \"Per-turn token limit\",\n minimum: 1,\n \"x-ui-group\": \"Configuration\",\n },\n temperature: {\n type: \"number\",\n title: \"Temperature\",\n description: \"Sampling temperature\",\n minimum: 0,\n maximum: 2,\n \"x-ui-group\": \"Configuration\",\n },\n maxIterations: {\n type: \"number\",\n title: \"Max Iterations\",\n description: \"Safety cap on conversation turns\",\n minimum: 1,\n default: 100,\n \"x-ui-group\": \"Configuration\",\n },\n responseFormat: {\n type: \"string\",\n enum: [\"text\", \"markdown\"],\n default: \"text\",\n title: \"Response format\",\n description:\n \"How the model is instructed to format replies. 'text' = plain text. \" +\n \"'markdown' = GitHub-flavored Markdown.\",\n \"x-ui-group\": \"Configuration\",\n },\n },\n required: [\"model\", \"prompt\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const AiChatOutputSchema = {\n type: \"object\",\n properties: {\n text: {\n type: \"string\",\n title: \"Text\",\n // `x-stream: append` concatenates every `text-delta` from every turn,\n // so the accumulated value is the full transcript across turns — not\n // just the last assistant response. Consumers that need the most\n // recent assistant message should read it off the `messages` port\n // instead.\n description: \"Full streamed transcript across all assistant turns\",\n \"x-stream\": \"append\",\n },\n messages: {\n type: \"array\",\n title: \"Messages\",\n description: \"Full conversation history\",\n items: ChatMessageSchema,\n \"x-stream\": \"object\",\n },\n iterations: {\n type: \"number\",\n title: \"Iterations\",\n description: \"Number of completed turns\",\n },\n },\n required: [\"text\", \"messages\", \"iterations\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\n// ========================================================================\n// Runtime types\n// ========================================================================\n\nexport type AiChatTaskInput = Omit<FromSchema<typeof AiChatInputSchema>, \"messages\"> & {\n readonly messages?: ReadonlyArray<ChatMessage>;\n};\n\nexport type AiChatTaskOutput = FromSchema<typeof AiChatOutputSchema>;\n\n/** Provider-facing input: same structural type as AiChatTaskInput, named separately for intent. */\nexport type AiChatProviderInput = AiChatTaskInput;\n\nexport interface AiChatProviderOutput {\n readonly text: string;\n [key: string]: unknown;\n}\n\n// ========================================================================\n// Task class\n// ========================================================================\n\nexport class AiChatTask extends StreamingAiTask<AiChatTaskInput, AiChatTaskOutput> {\n public static override type = \"AiChatTask\";\n protected static override readonly streamingPhaseLabel = \"Replying\";\n public static override category = \"AI Chat\";\n public static override title = \"AI Chat\";\n public static override description =\n \"Multi-turn chat with a language model, using a human connector to collect user input between turns.\";\n public static override cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n },\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n }\n\n public static override inputSchema(): DataPortSchema {\n return AiChatInputSchema as DataPortSchema;\n }\n\n public static override outputSchema(): DataPortSchema {\n return AiChatOutputSchema as DataPortSchema;\n }\n\n private _sessionId: string | undefined;\n\n protected override async getJobInput(\n input: AiChatTaskInput\n ): Promise<AiJobInput<AiChatTaskInput>> {\n const model = input.model as ModelConfig;\n if (!this._sessionId) {\n this._sessionId = getAiProviderRegistry().createSession(model.provider, model);\n }\n return {\n taskType: \"AiChatTask\",\n aiProvider: model.provider,\n taskInput: input as AiChatTaskInput & { model: ModelConfig },\n sessionId: this._sessionId,\n };\n }\n\n override async *executeStream(\n input: AiChatTaskInput,\n context: IExecuteContext\n ): AsyncIterable<StreamEvent<AiChatTaskOutput>> {\n // Reset session so re-running the task starts a fresh conversation.\n this._sessionId = undefined;\n\n const model = input.model as ModelConfig;\n if (!model || typeof model !== \"object\") {\n throw new Error(\"AiChatTask: model was not resolved to ModelConfig\");\n }\n const connector = resolveHumanConnector(context);\n\n // Build initial history.\n const history: ChatMessage[] = [];\n const addendum = buildResponseFormatAddendum(input.responseFormat);\n const composedSystemPrompt = [input.systemPrompt ?? \"\", addendum]\n .filter((s) => s.length > 0)\n .join(\"\\n\\n\");\n if (composedSystemPrompt.length > 0) {\n history.push({\n role: \"system\",\n content: [{ type: \"text\", text: composedSystemPrompt }],\n });\n }\n const firstUserBlocks: ReadonlyArray<ContentBlock> =\n typeof input.prompt === \"string\"\n ? [{ type: \"text\", text: input.prompt }]\n : (input.prompt as ReadonlyArray<ContentBlock>);\n history.push({ role: \"user\", content: firstUserBlocks });\n\n // Call getJobInput once before the loop to initialize _sessionId.\n const workingInput: AiChatTaskInput = { ...input, messages: history };\n await this.getJobInput(workingInput);\n const strategy = getAiProviderRegistry().getStrategy(model);\n const maxIterations = input.maxIterations ?? 100;\n\n // Register session disposal so it's cleaned up at end of the resource scope.\n if (context.resourceScope && this._sessionId) {\n const sessionId = this._sessionId;\n context.resourceScope.register(`ai:session:${sessionId}`, async () => {\n await getAiProviderRegistry().disposeSession(model.provider, sessionId);\n });\n }\n\n // Incremented after each completed assistant turn — emitted via\n // `finish.data.iterations` at the end so the output schema's required\n // `iterations` field is populated. (The streaming accumulator merges\n // `finish.data` over accumulated stream values; no `x-stream`\n // declaration applies to a one-shot scalar like this.)\n let completedTurns = 0;\n\n // Emit the initial messages as an object-delta. TaskRunner accumulates\n // array object-deltas by appending items (upsert-by-id when an `id`\n // field is present; plain append otherwise). ChatMessage has no id,\n // so we yield *deltas* — just the messages added since the last yield —\n // rather than full snapshots, or the accumulator would duplicate every\n // existing message on each emission.\n yield {\n type: \"object-delta\",\n port: \"messages\",\n objectDelta: [...history],\n } as StreamEvent<AiChatTaskOutput>;\n\n for (let turn = 0; turn < maxIterations; turn++) {\n // Fresh job input per turn with current history snapshot.\n const perTurnInput: AiChatTaskInput = { ...input, messages: [...history] };\n const turnJobInput = await this.getJobInput(perTurnInput);\n\n let assistantText = \"\";\n for await (const event of strategy.executeStream(\n turnJobInput as any,\n context,\n this.runConfig.runnerId\n )) {\n if (event.type === \"text-delta\") {\n assistantText += (event as any).textDelta;\n yield {\n ...event,\n port: (event as any).port ?? \"text\",\n } as StreamEvent<AiChatTaskOutput>;\n } else if (event.type === \"finish\") {\n // swallow — we emit our own finish at the end\n } else {\n yield event as StreamEvent<AiChatTaskOutput>;\n }\n }\n\n const assistantMsg: ChatMessage = {\n role: \"assistant\",\n content: [{ type: \"text\", text: assistantText }],\n };\n history.push(assistantMsg);\n completedTurns = turn + 1;\n yield {\n type: \"object-delta\",\n port: \"messages\",\n objectDelta: [assistantMsg],\n } as StreamEvent<AiChatTaskOutput>;\n\n // Ask the human for the next turn.\n const request: IHumanRequest = {\n requestId: crypto.randomUUID(),\n targetHumanId: \"default\",\n kind: \"elicit\",\n message: \"\",\n contentSchema: chatConnectorContentSchema,\n contentData: undefined,\n expectsResponse: true,\n mode: \"multi-turn\",\n metadata: { iteration: turn, taskId: this.id },\n };\n\n const response = await connector.send(request, context.signal);\n if (response.action === \"cancel\" || response.action === \"decline\") break;\n\n // The elicit schema asks for a plain string; accept either shape so\n // programmatic callers can also send raw ContentBlock[] (e.g. images).\n // `response.done` is a form-completion flag (the submit happened), not\n // a conversation signal — do NOT treat it as end-of-chat. The signal\n // that the user wants to end the conversation is empty content.\n const raw = response.content?.content;\n let userContent: ContentBlock[];\n if (typeof raw === \"string\") {\n const text = raw.trim();\n userContent = text.length > 0 ? [{ type: \"text\", text: raw }] : [];\n } else if (Array.isArray(raw)) {\n userContent = raw as ContentBlock[];\n } else {\n userContent = [];\n }\n if (userContent.length === 0) break;\n\n const userMsg: ChatMessage = { role: \"user\", content: userContent };\n history.push(userMsg);\n yield {\n type: \"object-delta\",\n port: \"messages\",\n objectDelta: [userMsg],\n } as StreamEvent<AiChatTaskOutput>;\n }\n\n // `text` and `messages` ride the x-stream merge into the final output.\n // `iterations` has no x-stream, so we deliver it in `finish.data` for\n // the StreamProcessor to merge over the accumulated ports.\n yield {\n type: \"finish\",\n data: { iterations: completedTurns } as Partial<AiChatTaskOutput>,\n } as StreamEvent<AiChatTaskOutput>;\n }\n}\n",
|
|
19
19
|
"/**\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/schema\";\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\n/**\n * A landmark point with x, y, z coordinates.\n */\nexport const 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 format: \"point:3d:relative\",\n additionalProperties: false,\n} as const satisfies JsonSchema;\n\n/**\n * A landmark point with x, y, z coordinates and visibility/presence scores.\n */\nexport const TypePoseLandmark = {\n ...TypeLandmark,\n properties: {\n ...TypeLandmark.properties,\n visibility: {\n type: \"number\",\n title: \"Visibility\",\n description: \"Likelihood of the landmark being visible within the image\",\n },\n presence: {\n type: \"number\",\n title: \"Presence\",\n description: \"Likelihood of the landmark being present in the image\",\n },\n },\n} as const satisfies JsonSchema;\n\nexport type ImageSource = ImageBitmap | OffscreenCanvas | VideoFrame;\n\n/**\n * Image input schema — hydrated to `ImageValue` at task entry by the image\n * input resolver. Used by vision tasks; see `ImageValueSchema()` in\n * `@workglow/util/media` for the equivalent factory used by image-filter tasks\n * (the factory accepts a multi-type form including `string` for raw data: URI\n * inputs).\n */\nexport const TypeImageInput = {\n type: \"object\",\n properties: {},\n title: \"Image\",\n description:\n \"Image as data: URI, Blob, ImageBitmap, or ImageValue — hydrated to ImageValue at task entry\",\n format: \"image\",\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",
|
|
20
|
+
"/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @description Helpers for composing response-format prompt addenda used by\n * chat-style AI tasks (e.g. AiChatTask, AiChatWithKbTask).\n */\n\nexport type ResponseFormat = \"text\" | \"markdown\";\n\n/**\n * Returns a system-prompt addendum instructing the model how to format its\n * reply. Returns an empty string for plain text or when no format is\n * specified, so callers can unconditionally concatenate the result.\n */\nexport function buildResponseFormatAddendum(format: ResponseFormat | undefined): string {\n if (format === \"markdown\") {\n return [\n \"Format your reply as GitHub-flavored Markdown:\",\n \"- Use headings, bullet lists, numbered lists, tables, and fenced code blocks where they help readability.\",\n \"- Use **bold** and *italic* sparingly for emphasis.\",\n \"- Keep paragraphs short.\",\n ].join(\"\\n\");\n }\n return \"\";\n}\n\n/**\n * Directive for inline citation style when KB context is provided to the\n * model. Instructs the model to use Markdown links instead of numeric\n * footnotes so citations render naturally inside streamed Markdown.\n */\nexport const KB_INLINE_CITATION_DIRECTIVE = [\n \"When you reference information from the context above, cite it inline as a\",\n \"Markdown link: write the natural anchor text in brackets followed by the\",\n \"URL in parentheses, e.g. `[the dashboard](https://workglow.com/help/dashboard)`.\",\n \"Do not use numeric `[1]`-style citations. If a context entry has no URL,\",\n \"describe it in prose without a link.\",\n].join(\"\\n\");\n",
|
|
20
21
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @description Base class for AI tasks that support streaming output.\n * Extends AiTask with executeStream() that yields StreamEvents from the provider.\n */\n\nimport { getStreamingPorts, TaskConfigurationError } from \"@workglow/task-graph\";\nimport type { TaskConfig, IExecuteContext, StreamEvent, TaskOutput } from \"@workglow/task-graph\";\n\nimport { AiTask } from \"./AiTask\";\nimport type { AiTaskInput } from \"./AiTask\";\nimport { getAiProviderRegistry } from \"../../provider/AiProviderRegistry\";\nimport type { ModelConfig } from \"../../model/ModelSchema\";\n\n/**\n * A base class for streaming AI tasks.\n * Extends AiTask to provide streaming output via executeStream().\n *\n * Subclasses set `streamMode` to control streaming behavior:\n * - 'append': each chunk is a delta (e.g., a new token). Default for text generation.\n * - 'object': each chunk is a progressively more complete partial object.\n * - 'replace': each chunk is a revised full snapshot of the output.\n *\n * The standard execute() method is preserved as a fallback that internally\n * consumes the stream to completion (so non-streaming callers get the same result).\n *\n * Port annotation: providers yield raw events without a `port` field.\n * This class wraps text-delta events with the correct port from the task's\n * output schema before they reach the TaskRunner.\n *\n * @cancel The `context.signal` is forwarded to the resolved execution strategy\n * (direct or queued), which in turn forwards it to the provider stream function.\n * When the signal fires, the underlying provider SDK tears down its connection\n * and the inner `for await` exits; this generator then returns or throws\n * promptly. Partial accumulated text / object state may still remain in task\n * or runner state after abort (the runner does not clear `runOutputData`) and\n * MUST be treated as invalid unless the final run status is `COMPLETED`.\n * Subclasses overriding `executeStream()` MUST preserve this contract: forward\n * `context.signal`, and either return or throw promptly after abort.\n */\nexport class StreamingAiTask<\n Input extends AiTaskInput = AiTaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig<Input> = TaskConfig<Input>,\n> extends AiTask<Input, Output, Config> {\n public static override type: string = \"StreamingAiTask\";\n\n /**\n * Phase label emitted before the underlying provider stream begins\n * producing data events. Override in subclasses for task-specific\n * pre-stream phases (e.g. \"Uploading\" for tasks that prepare large\n * inputs).\n */\n protected static readonly preparingPhaseLabel: string = \"Preparing\";\n\n /**\n * Phase label emitted on the first data event from the underlying\n * provider stream (text-delta / object-delta / snapshot). Override in\n * subclasses to reflect what the task is producing — \"Generating\",\n * \"Summarizing\", \"Translating\", \"Rendering\", etc.\n */\n protected static readonly streamingPhaseLabel: string = \"Streaming\";\n\n /**\n * Streaming execution: resolves the provider strategy and yields StreamEvents from it.\n * Routes through the same strategy as execute() (queued vs direct) so GPU\n * serialization is respected even for streaming tasks.\n *\n * Wraps port-less text-delta and object-delta events from providers with\n * the port determined by the task's output schema `x-stream` annotations.\n */\n async *executeStream(input: Input, context: IExecuteContext): AsyncIterable<StreamEvent<Output>> {\n const model = input.model as ModelConfig;\n if (!model || typeof model !== \"object\") {\n throw new TaskConfigurationError(\n \"StreamingAiTask: Model was not resolved to ModelConfig - this indicates a bug in the resolution system\"\n );\n }\n const jobInput = await this.getJobInput(input);\n const strategy = getAiProviderRegistry().getStrategy(model);\n\n // Resolve the streaming port(s) from the output schema for wrapping.\n // Falls back to the first property in the output schema rather than\n // hardcoding \"text\", so non-text streaming tasks work correctly.\n const outSchema = this.outputSchema();\n const ports = getStreamingPorts(outSchema);\n let defaultPort = \"text\";\n if (ports.length > 0) {\n defaultPort = ports[0].port;\n } else {\n if (typeof outSchema === \"object\" && outSchema.properties) {\n const firstProp = Object.keys(outSchema.properties)[0];\n if (firstProp) defaultPort = firstProp;\n }\n }\n\n const ctor = this.constructor as typeof StreamingAiTask;\n const preparingLabel = ctor.preparingPhaseLabel;\n const streamingLabel = ctor.streamingPhaseLabel;\n\n // Default pre-stream phase: covers strategy resolution, queueing,\n // GPU acquisition, provider API connect time.\n yield { type: \"phase\", message: preparingLabel, progress: undefined } as StreamEvent<Output>;\n\n let firstDataSeen = false;\n for await (const event of strategy.executeStream(jobInput, context, this.runConfig.runnerId)) {\n if (\n !firstDataSeen &&\n (event.type === \"text-delta\" || event.type === \"object-delta\" || event.type === \"snapshot\")\n ) {\n firstDataSeen = true;\n yield {\n type: \"phase\",\n message: streamingLabel,\n progress: undefined,\n } as StreamEvent<Output>;\n }\n\n if (event.type === \"text-delta\") {\n yield { ...event, port: event.port ?? defaultPort } as StreamEvent<Output>;\n } else if (event.type === \"object-delta\") {\n yield { ...event, port: event.port ?? defaultPort } as StreamEvent<Output>;\n } else {\n yield event as StreamEvent<Output>;\n }\n }\n }\n}\n",
|
|
21
22
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @description Base class for AI tasks that delegate execution to a\n * provider-registered strategy (direct or queued).\n */\n\nimport { Job } from \"@workglow/job-queue\";\nimport type {\n IExecuteContext,\n IExecutePreviewContext,\n TaskConfig,\n TaskEntitlement,\n TaskEntitlements,\n TaskOutput,\n} from \"@workglow/task-graph\";\nimport {\n Entitlements,\n Task,\n TaskConfigSchema,\n TaskConfigurationError,\n TaskInput,\n hasStructuredOutput,\n} from \"@workglow/task-graph\";\nimport type { ServiceRegistry } from \"@workglow/util\";\nimport type { DataPortSchema, JsonSchema } from \"@workglow/util/schema\";\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\nconst aiTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport interface AiTaskInput extends TaskInput {\n model: string | ModelConfig;\n}\n\n/**\n * A base class for AI related tasks that use an execution strategy\n * (direct or queued) determined by the provider at registration time.\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 AiTaskInput = AiTaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig<Input> = TaskConfig<Input>,\n> extends Task<Input, Output, Config> {\n public static override type: string = \"AiTask\";\n public static override hasDynamicEntitlements: boolean = true;\n\n public static override entitlements(): TaskEntitlements {\n return {\n entitlements: [{ id: Entitlements.AI_INFERENCE, reason: \"Runs AI model inference\" }],\n };\n }\n\n public override entitlements(): TaskEntitlements {\n const base: TaskEntitlement[] = [\n { id: Entitlements.AI_INFERENCE, reason: \"Runs AI model inference\" },\n ];\n // Prefer runInputData.model (runtime) over defaults.model (construction-time)\n const runModel = this.runInputData?.model;\n const modelId =\n typeof runModel === \"string\"\n ? runModel\n : typeof this.defaults.model === \"string\"\n ? this.defaults.model\n : undefined;\n if (modelId) {\n base.push({\n id: Entitlements.AI_MODEL,\n reason: `Uses model ${modelId}`,\n resources: [modelId],\n });\n }\n return { entitlements: base };\n }\n\n public static override configSchema(): DataPortSchema {\n return aiTaskConfigSchema;\n }\n\n // ========================================================================\n // Execution\n // ========================================================================\n\n override async execute(\n input: Input,\n executeContext: IExecuteContext\n ): Promise<Output | undefined> {\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 jobInput = await this.getJobInput(input);\n const strategy = getAiProviderRegistry().getStrategy(model);\n\n const output = await strategy.execute(jobInput, executeContext, this.runConfig.runnerId);\n\n // Register a disposer so the caller can unload the model when done.\n if (executeContext.resourceScope) {\n const registry = getAiProviderRegistry();\n const provider = registry.getProvider(model.provider);\n const unloadFn = provider?.getRunFn(\"UnloadModelTask\");\n if (unloadFn) {\n const modelPath = model.provider_config?.model_path ?? model.model;\n const resourceKey = `ai:${model.provider}:${modelPath}`;\n executeContext.resourceScope.register(resourceKey, async () => {\n await unloadFn({ model }, model, () => {}, AbortSignal.timeout(30_000));\n });\n }\n }\n\n return output as Output;\n }\n\n // ========================================================================\n // Job creation\n // ========================================================================\n\n /**\n * Get the input to submit to the job queue (or direct execution).\n * Transforms the task input to AiJobInput format.\n */\n protected async getJobInput(input: Input): Promise<AiJobInput<Input>> {\n const model = input.model as ModelConfig;\n\n const runtype = (this.constructor as any).runtype ?? (this.constructor as any).type;\n\n const jobInput: AiJobInput<Input> = {\n taskType: runtype,\n aiProvider: model.provider,\n taskInput: input as Input & { model: ModelConfig },\n };\n\n const taskTimeoutMs = (this.config as TaskConfig).timeout;\n if (typeof taskTimeoutMs === \"number\" && taskTimeoutMs > 0) {\n jobInput.timeoutMs = taskTimeoutMs;\n }\n\n // Attach structured output schema if the task declares it.\n const inputOutputSchema = input.outputSchema as DataPortSchema;\n if (\n inputOutputSchema &&\n typeof inputOutputSchema === \"object\" &&\n !Array.isArray(inputOutputSchema) &&\n typeof inputOutputSchema.type === \"string\"\n ) {\n jobInput.outputSchema = inputOutputSchema;\n } else {\n const taskOutputSchema = this.outputSchema();\n if (hasStructuredOutput(taskOutputSchema)) {\n jobInput.outputSchema = taskOutputSchema;\n }\n }\n\n const sessionId = (input as any).sessionId as string | undefined;\n if (sessionId) {\n jobInput.sessionId = sessionId;\n }\n\n return jobInput;\n }\n\n /**\n * Creates a new Job instance for direct execution (without a queue).\n */\n async createJob(input: Input, queueName?: string): 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(\"AiTask: Unable to determine queue for AI provider\");\n }\n const job = new AiJob<AiJobInput<Input>, Output>({\n queueName: resolvedQueueName,\n jobRunId: this.runConfig.runnerId,\n input: jobInput,\n });\n return job;\n }\n\n /**\n * Gets the default queue name based on the model's provider.\n */\n protected async getDefaultQueueName(input: Input): Promise<string | undefined> {\n const model = input.model as ModelConfig;\n return model?.provider;\n }\n\n // ========================================================================\n // Preview execution\n // ========================================================================\n\n /**\n * Delegates to a provider-registered preview run function if one exists,\n * otherwise falls back to the default Task.executePreview().\n */\n override async executePreview(\n input: Input,\n context: IExecutePreviewContext\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 previewFn = getAiProviderRegistry().getPreviewRunFn<Input, Output>(\n model.provider,\n taskType\n );\n if (previewFn) {\n return previewFn(input, model);\n }\n }\n return super.executePreview(input, context);\n }\n\n // ========================================================================\n // Validation\n // ========================================================================\n\n /**\n * Validates that model inputs are valid ModelConfig objects.\n */\n public override 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 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 const tasks = (model as ModelConfig).tasks;\n if (Array.isArray(tasks) && tasks.length > 0 && !tasks.includes(this.type)) {\n const modelId = (model as ModelConfig).model_id ?? \"(inline config)\";\n throw new TaskConfigurationError(\n `AiTask: Model \"${modelId}\" for '${key}' is not compatible with task '${this.type}'. ` +\n `Model supports: [${tasks.join(\", \")}]`\n );\n }\n } else if (model !== undefined && model !== null) {\n throw new TaskConfigurationError(\n `AiTask: Invalid model for '${key}' - expected ModelConfig object but got ${typeof model}. ` +\n `Ensure the model ID was registered in the ModelRepository before running the task.`\n );\n }\n }\n\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 but got ${typeof model}. ` +\n `Ensure the model ID was registered in the ModelRepository before running the task.`\n );\n }\n }\n\n return super.validateInput(input);\n }\n\n public override async narrowInput(input: Input, registry: ServiceRegistry): Promise<Input> {\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\n // Fetch models for this task type from the repository associated with the given registry.\n // Note: we intentionally avoid using a shared cache here to prevent mixing results\n // from different ServiceRegistry / ModelRepository instances.\n const taskModels: ModelConfig[] = (await modelRepo.findModelsByTask(this.type)) ?? [];\n\n for (const [key] of modelTaskProperties) {\n const requestedModel = input[key];\n\n if (typeof requestedModel === \"string\") {\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 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",
|
|
22
23
|
"/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { DataPortSchema } from \"@workglow/util/schema\";\n\n// ========================================================================\n// Canonical ContentBlock union\n// ========================================================================\n\nexport type ContentBlockText = {\n readonly type: \"text\";\n readonly text: string;\n};\n\nexport type ContentBlockImage = {\n readonly type: \"image\";\n readonly mimeType: string;\n readonly data: string;\n};\n\nexport type ContentBlockToolUse = {\n readonly type: \"tool_use\";\n readonly id: string;\n readonly name: string;\n readonly input: Record<string, unknown>;\n};\n\n/**\n * Blocks that may appear in a `tool_result`'s `content` array. Provider payloads\n * typically use text, image, and tool_use; nested `tool_result` is not modeled\n * here so the JSON schema can be embedded in parent task schemas without a\n * recursive `$ref` (which fails to resolve when `ContentBlockSchema` is nested\n * under a larger document such as `ToolCallingInputSchema`).\n */\nexport type ContentBlockInToolResultBody =\n | ContentBlockText\n | ContentBlockImage\n | ContentBlockToolUse;\n\nexport type ContentBlockToolResult = {\n readonly type: \"tool_result\";\n readonly tool_use_id: string;\n readonly content: ReadonlyArray<ContentBlockInToolResultBody>;\n readonly is_error: boolean | undefined;\n};\n\nexport type ContentBlock =\n | ContentBlockText\n | ContentBlockImage\n | ContentBlockToolUse\n | ContentBlockToolResult;\n\n// ========================================================================\n// Canonical ChatMessage\n// ========================================================================\n\nexport type ChatRole = \"user\" | \"assistant\" | \"tool\" | \"system\";\n\nexport interface ChatMessage {\n readonly role: ChatRole;\n readonly content: ReadonlyArray<ContentBlock>;\n}\n\n// ========================================================================\n// JSON Schemas (runtime validation + DataPort declarations)\n// ========================================================================\n\nconst ContentBlockTextSchema = {\n type: \"object\",\n properties: {\n type: { type: \"string\", enum: [\"text\"] },\n text: { type: \"string\" },\n },\n required: [\"type\", \"text\"],\n additionalProperties: false,\n} as const;\n\nconst ContentBlockImageSchema = {\n type: \"object\",\n properties: {\n type: { type: \"string\", enum: [\"image\"] },\n mimeType: { type: \"string\" },\n data: { type: \"string\" },\n },\n required: [\"type\", \"mimeType\", \"data\"],\n additionalProperties: false,\n} as const;\n\nconst ContentBlockToolUseSchema = {\n type: \"object\",\n properties: {\n type: { type: \"string\", enum: [\"tool_use\"] },\n id: { type: \"string\" },\n name: { type: \"string\" },\n input: { type: \"object\", additionalProperties: true },\n },\n required: [\"type\", \"id\", \"name\", \"input\"],\n additionalProperties: false,\n} as const;\n\n/** `tool_result.content` — text, image, and tool_use only (no nested `tool_result`). */\nconst ContentBlockInToolResultBodySchema = {\n oneOf: [ContentBlockTextSchema, ContentBlockImageSchema, ContentBlockToolUseSchema],\n} as const;\n\nconst ContentBlockToolResultSchema = {\n type: \"object\",\n properties: {\n type: { type: \"string\", enum: [\"tool_result\"] },\n tool_use_id: { type: \"string\" },\n content: {\n type: \"array\",\n items: ContentBlockInToolResultBodySchema,\n },\n is_error: { type: \"boolean\" },\n },\n required: [\"type\", \"tool_use_id\", \"content\"],\n additionalProperties: false,\n} as const;\n\n// Not a DataPortSchema because the root is `oneOf`, not `type: \"object\"`.\n// Consumers embed it inside an object schema (see ChatMessageSchema).\nexport const ContentBlockSchema = {\n oneOf: [\n ContentBlockTextSchema,\n ContentBlockImageSchema,\n ContentBlockToolUseSchema,\n ContentBlockToolResultSchema,\n ],\n title: \"ContentBlock\",\n description: \"A single content block within a chat message\",\n} as const;\n\nexport const ChatMessageSchema = {\n type: \"object\",\n properties: {\n role: { type: \"string\", enum: [\"user\", \"assistant\", \"tool\", \"system\"] },\n content: {\n type: \"array\",\n items: ContentBlockSchema,\n },\n },\n required: [\"role\", \"content\"],\n additionalProperties: false,\n title: \"ChatMessage\",\n description: \"A single chat message with role and structured content blocks\",\n} as const satisfies DataPortSchema;\n\n// ========================================================================\n// Runtime type guards\n// ========================================================================\n\nexport function isContentBlockInToolResultBody(\n value: unknown\n): value is ContentBlockInToolResultBody {\n if (!value || typeof value !== \"object\") return false;\n const v = value as Record<string, unknown>;\n switch (v.type) {\n case \"text\":\n return typeof v.text === \"string\";\n case \"image\":\n return typeof v.mimeType === \"string\" && typeof v.data === \"string\";\n case \"tool_use\":\n return (\n typeof v.id === \"string\" &&\n typeof v.name === \"string\" &&\n v.input !== null &&\n typeof v.input === \"object\"\n );\n default:\n return false;\n }\n}\n\nexport function isContentBlock(value: unknown): value is ContentBlock {\n if (!value || typeof value !== \"object\") return false;\n const v = value as Record<string, unknown>;\n switch (v.type) {\n case \"text\":\n return typeof v.text === \"string\";\n case \"image\":\n return typeof v.mimeType === \"string\" && typeof v.data === \"string\";\n case \"tool_use\":\n return (\n typeof v.id === \"string\" &&\n typeof v.name === \"string\" &&\n v.input !== null &&\n typeof v.input === \"object\"\n );\n case \"tool_result\":\n return (\n typeof v.tool_use_id === \"string\" &&\n Array.isArray(v.content) &&\n v.content.every(isContentBlockInToolResultBody)\n );\n default:\n return false;\n }\n}\n\nexport function isChatMessage(value: unknown): value is ChatMessage {\n if (!value || typeof value !== \"object\") return false;\n const v = value as Record<string, unknown>;\n const validRole =\n v.role === \"user\" || v.role === \"assistant\" || v.role === \"tool\" || v.role === \"system\";\n return validRole && Array.isArray(v.content) && v.content.every(isContentBlock);\n}\n\n// ========================================================================\n// Convenience constructors\n// ========================================================================\n\nexport function textMessage(role: ChatRole, text: string): ChatMessage {\n return { role, content: [{ type: \"text\", text }] };\n}\n",
|
|
24
|
+
"/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ChunkSearchResult, KnowledgeBase } from \"@workglow/knowledge-base\";\nimport { getKnowledgeBase, slugifyHeading } from \"@workglow/knowledge-base\";\nimport type { IExecuteContext, StreamEvent } from \"@workglow/task-graph\";\nimport { TaskConfigSchema } from \"@workglow/task-graph\";\nimport type { IHumanRequest } from \"@workglow/util\";\nimport { resolveHumanConnector } from \"@workglow/util\";\nimport type { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport type { AiJobInput } from \"../job/AiJob\";\nimport type { ModelConfig } from \"../model/ModelSchema\";\nimport { getAiProviderRegistry } from \"../provider/AiProviderRegistry\";\nimport { TypeModel } from \"./base/AiTaskSchemas\";\nimport {\n buildResponseFormatAddendum,\n KB_INLINE_CITATION_DIRECTIVE,\n type ResponseFormat,\n} from \"./base/responseFormat\";\nimport { StreamingAiTask } from \"./base/StreamingAiTask\";\nimport type { ChatMessage, ContentBlock } from \"./ChatMessage\";\nimport { ChatMessageSchema, ContentBlockSchema } from \"./ChatMessage\";\nimport { KbSearchTask } from \"./KbSearchTask\";\n\n// ========================================================================\n// Public types\n// ========================================================================\n\nexport interface ChatChunkReference {\n readonly kbId: string;\n readonly kbLabel: string;\n readonly title: string;\n readonly url: string | undefined;\n readonly snippet: string;\n readonly score: number;\n /**\n * 1-based position of this chunk in the prompt the model sees, so the\n * model's reply citing `[N]` maps back to this entry. `0` for\n * author-supplied `noMatchReferences` (which don't correspond to any\n * prompt chunk).\n */\n readonly index: number;\n}\n\n// ========================================================================\n// Schemas\n// ========================================================================\n\nconst modelSchema = TypeModel(\"model:AiChatWithKbTask\");\n\nconst chatChunkReferenceSchema = {\n type: \"object\",\n properties: {\n kbId: { type: \"string\" },\n kbLabel: { type: \"string\" },\n title: { type: \"string\" },\n url: { type: \"string\" },\n snippet: { type: \"string\" },\n score: { type: \"number\" },\n index: { type: \"number\" },\n },\n required: [\"kbId\", \"kbLabel\", \"title\", \"snippet\", \"score\", \"index\"],\n} as const satisfies DataPortSchema;\n\n/**\n * Connector elicit schema. The connector side renders a plain text field\n * for this — chat UIs let the user type a message, not author a JSON\n * ContentBlock array. AiChatWithKbTask wraps the string into\n * `[{ type: \"text\", text }]` before appending to the conversation.\n *\n * `content` is intentionally optional: submitting an empty message ends\n * the conversation (the chat loop treats empty content as \"done\").\n */\nconst chatConnectorContentSchema = {\n type: \"object\",\n properties: {\n content: {\n type: \"string\",\n title: \"Message\",\n description: \"Your reply (leave blank to end the conversation)\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const AiChatWithKbInputSchema = {\n type: \"object\",\n properties: {\n model: modelSchema,\n prompt: {\n oneOf: [\n { type: \"string\", title: \"Prompt\", description: \"The initial user message\" },\n {\n type: \"array\",\n title: \"Prompt\",\n description: \"The initial user message as structured content blocks\",\n items: ContentBlockSchema,\n },\n ],\n title: \"Prompt\",\n description: \"The first user message to start the conversation\",\n },\n messages: {\n type: \"array\",\n title: \"Messages\",\n description:\n \"Conversation history (managed internally by the chat loop; not a user-facing input)\",\n items: ChatMessageSchema,\n \"x-ui-hidden\": true,\n },\n systemPrompt: {\n type: \"string\",\n title: \"System Prompt\",\n description: \"Optional system instructions for the model\",\n },\n maxTokens: {\n type: \"number\",\n title: \"Max Tokens\",\n description: \"Per-turn token limit\",\n minimum: 1,\n \"x-ui-group\": \"Configuration\",\n },\n temperature: {\n type: \"number\",\n title: \"Temperature\",\n description: \"Sampling temperature\",\n minimum: 0,\n maximum: 2,\n \"x-ui-group\": \"Configuration\",\n },\n maxIterations: {\n type: \"number\",\n title: \"Max Iterations\",\n description: \"Safety cap on conversation turns\",\n minimum: 1,\n default: 100,\n \"x-ui-group\": \"Configuration\",\n },\n knowledgeBaseIds: {\n type: \"array\",\n title: \"Knowledge Base IDs\",\n description: \"Knowledge bases to retrieve from on each turn\",\n items: { type: \"string\" },\n },\n topKPerKb: {\n type: \"number\",\n title: \"Top K per KB\",\n description: \"Top results per KB before threshold filtering\",\n minimum: 1,\n default: 4,\n \"x-ui-group\": \"Configuration\",\n },\n minScore: {\n type: \"number\",\n title: \"Min score\",\n description: \"Score floor for a chunk to count as a useful match\",\n minimum: 0,\n maximum: 1,\n default: 0.3,\n \"x-ui-group\": \"Configuration\",\n },\n maxReferences: {\n type: \"number\",\n title: \"Max references\",\n description: \"Cap on the chunk references emitted per turn\",\n minimum: 1,\n default: 6,\n \"x-ui-group\": \"Configuration\",\n },\n noMatchReply: {\n type: \"string\",\n title: \"No-match reply\",\n description: \"When set and zero chunks match: emit this verbatim and skip the provider\",\n \"x-ui-group\": \"Configuration\",\n },\n noMatchReferences: {\n type: \"array\",\n title: \"No-match references\",\n description: \"When set and zero chunks match: emit these verbatim on the references port\",\n items: chatChunkReferenceSchema,\n \"x-ui-group\": \"Configuration\",\n },\n responseFormat: {\n type: \"string\",\n enum: [\"text\", \"markdown\"],\n default: \"text\",\n title: \"Response format\",\n description:\n \"How the model is instructed to format replies. 'text' = plain text. \" +\n \"'markdown' = GitHub-flavored Markdown; citations are emitted as inline \" +\n \"[anchor](url) links instead of [N] numbers.\",\n \"x-ui-group\": \"Configuration\",\n },\n },\n required: [\"model\", \"prompt\", \"knowledgeBaseIds\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const AiChatWithKbOutputSchema = {\n type: \"object\",\n properties: {\n text: {\n type: \"string\",\n title: \"Text\",\n // `x-stream: append` concatenates every `text-delta` from every turn,\n // so the accumulated value is the full transcript across turns — not\n // just the last assistant response. Consumers that need the most\n // recent assistant message should read it off the `messages` port\n // instead.\n description: \"Full streamed transcript across all assistant turns\",\n \"x-stream\": \"append\",\n },\n messages: {\n type: \"array\",\n title: \"Messages\",\n description: \"Full conversation history\",\n items: ChatMessageSchema,\n \"x-stream\": \"object\",\n },\n iterations: {\n type: \"number\",\n title: \"Iterations\",\n description: \"Number of completed turns\",\n },\n references: {\n type: \"array\",\n title: \"References\",\n description:\n \"Per-chunk citation references emitted each turn (one entry per surviving chunk; not deduped)\",\n items: chatChunkReferenceSchema,\n \"x-stream\": \"object\",\n },\n },\n required: [\"text\", \"messages\", \"iterations\", \"references\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\n// ========================================================================\n// Runtime types\n// ========================================================================\n\nexport type AiChatWithKbTaskInput = Omit<\n FromSchema<typeof AiChatWithKbInputSchema>,\n \"messages\" | \"noMatchReferences\"\n> & {\n readonly messages?: ReadonlyArray<ChatMessage>;\n readonly noMatchReferences?: ReadonlyArray<ChatChunkReference>;\n};\n\nexport type AiChatWithKbTaskOutput = Omit<\n FromSchema<typeof AiChatWithKbOutputSchema>,\n \"references\"\n> & {\n readonly references: readonly ChatChunkReference[];\n};\n\n// ========================================================================\n// Task class\n// ========================================================================\n\nexport class AiChatWithKbTask extends StreamingAiTask<\n AiChatWithKbTaskInput,\n AiChatWithKbTaskOutput\n> {\n public static override type = \"AiChatWithKbTask\";\n protected static override readonly streamingPhaseLabel = \"Replying\";\n public static override category = \"AI Chat\";\n public static override title = \"AI Chat (Knowledge Base)\";\n public static override description =\n \"Multi-turn chat grounded in one or more knowledge bases. Retrieves on every user turn, injects numbered context, and emits structured per-chunk citation references.\";\n public static override cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n },\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n }\n\n public static override inputSchema(): DataPortSchema {\n return AiChatWithKbInputSchema as DataPortSchema;\n }\n\n public static override outputSchema(): DataPortSchema {\n return AiChatWithKbOutputSchema as DataPortSchema;\n }\n\n private _sessionId: string | undefined;\n\n protected override async getJobInput(\n input: AiChatWithKbTaskInput\n ): Promise<AiJobInput<AiChatWithKbTaskInput>> {\n const model = input.model as ModelConfig;\n if (!this._sessionId) {\n this._sessionId = getAiProviderRegistry().createSession(model.provider, model);\n }\n return {\n taskType: \"AiChatWithKbTask\",\n aiProvider: model.provider,\n taskInput: input as AiChatWithKbTaskInput & { model: ModelConfig },\n sessionId: this._sessionId,\n };\n }\n\n override async *executeStream(\n input: AiChatWithKbTaskInput,\n context: IExecuteContext\n ): AsyncIterable<StreamEvent<AiChatWithKbTaskOutput>> {\n // Reset session so re-running the task starts a fresh conversation.\n this._sessionId = undefined;\n\n const model = input.model as ModelConfig;\n if (!model || typeof model !== \"object\") {\n throw new Error(\"AiChatWithKbTask: model was not resolved to ModelConfig\");\n }\n const connector = resolveHumanConnector(context);\n\n // Build initial history.\n const history: ChatMessage[] = [];\n if (input.systemPrompt) {\n history.push({ role: \"system\", content: [{ type: \"text\", text: input.systemPrompt }] });\n }\n const firstUserBlocks: ReadonlyArray<ContentBlock> =\n typeof input.prompt === \"string\"\n ? [{ type: \"text\", text: input.prompt }]\n : (input.prompt as ReadonlyArray<ContentBlock>);\n history.push({ role: \"user\", content: firstUserBlocks });\n\n // Call getJobInput once before the loop to initialize _sessionId.\n const workingInput: AiChatWithKbTaskInput = { ...input, messages: history };\n await this.getJobInput(workingInput);\n const maxIterations = input.maxIterations ?? 100;\n\n // Register session disposal so it's cleaned up at end of the resource scope.\n if (context.resourceScope && this._sessionId) {\n const sessionId = this._sessionId;\n context.resourceScope.register(`ai:session:${sessionId}`, async () => {\n await getAiProviderRegistry().disposeSession(model.provider, sessionId);\n });\n }\n\n // Emit the initial messages as an object-delta.\n yield {\n type: \"object-delta\",\n port: \"messages\",\n objectDelta: [...history],\n } as StreamEvent<AiChatWithKbTaskOutput>;\n\n const topK = input.topKPerKb ?? 4;\n const minScore = input.minScore ?? 0.3;\n const maxRefs = input.maxReferences ?? 6;\n\n // Incremented after each completed assistant turn — emitted via\n // `finish.data.iterations` at the end so the output schema's required\n // `iterations` field is populated. (The streaming accumulator merges\n // `finish.data` over accumulated stream values; no `x-stream`\n // declaration applies to a one-shot scalar like this.)\n let completedTurns = 0;\n\n // Carries the most recent turn's surviving chunks forward so a short\n // follow-up (\"tell me more\", \"what about X?\") that wouldn't match the\n // KB on its own still has the prior turn's context to answer from.\n // Reset only on a turn that itself produces hits — so a fresh topic\n // shift naturally replaces the carry-forward set on the next match.\n let lastNonEmptyRefs: readonly ChatChunkReference[] = [];\n\n for (let turn = 0; turn < maxIterations; turn++) {\n const lastUserText = extractLastUserText(history);\n\n // Retrieve from all knowledge bases in parallel. Keep the kb instance\n // alongside results so we can fetch per-doc metadata for URL resolution\n // — chunks don't inherit `url`/`sourceUri` from their document at upsert\n // time (only `doc_title` is propagated by ChunkVectorUpsertTask), so\n // dedup-by-URL on the consumer side requires resolving URLs from the\n // document record after retrieval.\n let perKbResults: Array<{\n kbId: string;\n kbLabel: string;\n kb: KnowledgeBase | undefined;\n results: ChunkSearchResult[];\n }> = [];\n if (lastUserText.length > 0) {\n perKbResults = await Promise.all(\n (input.knowledgeBaseIds ?? []).map(async (kbId) => {\n const kb = getKnowledgeBase(kbId);\n if (!kb) {\n console.warn(`[AiChatWithKbTask] knowledge base \"${kbId}\" not registered`);\n return { kbId, kbLabel: kbId, kb: undefined, results: [] as ChunkSearchResult[] };\n }\n const search = context.own(new KbSearchTask());\n const out = await search.run({\n knowledgeBase: kb as KnowledgeBase,\n query: lastUserText,\n topK,\n });\n return {\n kbId,\n kbLabel: kb.title || kbId,\n kb: kb as KnowledgeBase,\n results: out.results,\n };\n })\n );\n }\n\n // Merge, threshold, sort, cap, and number the chunks.\n const allChunks = perKbResults\n .flatMap(({ kbId, kbLabel, kb, results }) =>\n results.filter((r) => r.score >= minScore).map((r) => ({ kbId, kbLabel, kb, r }))\n )\n .sort((a, b) => b.r.score - a.r.score)\n .slice(0, maxRefs);\n\n // Resolve a URL per unique (kb, doc_id) by reading the document record's\n // metadata.url (the public route written by the ingest workflow).\n // One IDB lookup per unique doc; cheap given maxRefs is small.\n //\n // We deliberately do NOT fall back to `metadata.sourceUri` here:\n // sourceUri carries the raw asset path like `/raw/<domain>/foo.mdx`,\n // which begins with `/` and would therefore pass `MarkdownLink`'s\n // path-relative gate and route through TanStack to a non-existent\n // page. For legacy chunks missing `metadata.url`, leaving the URL\n // undefined renders a source chip without a click target — safer\n // than a broken link. Re-ingest fills `metadata.url` in.\n // Keyed by `kbId:doc_id` (composite), not `doc_id` alone: a `doc_id`\n // is only unique within one KB, and retrieval ranges over many.\n // Different KBs can share the same id (e.g. UUIDs colliding, or two\n // KBs intentionally indexing the same source), so keying on\n // `doc_id` alone would let the first KB's URL leak onto chunks\n // from the second.\n const docUrlKey = (kbId: string, docId: string): string => `${kbId}:${docId}`;\n const docUrls = new Map<string, string | undefined>();\n const docFetches: Array<Promise<void>> = [];\n for (const { kbId, kb, r } of allChunks) {\n if (!kb) continue;\n const key = docUrlKey(kbId, r.doc_id);\n if (docUrls.has(key)) continue;\n docUrls.set(key, undefined);\n docFetches.push(\n kb\n .getDocument(r.doc_id)\n .then((doc) => {\n const md = (doc?.metadata ?? {}) as { url?: unknown };\n const url = typeof md.url === \"string\" ? md.url : undefined;\n docUrls.set(key, url);\n })\n .catch(() => {\n // leave the slot as undefined so the chip renders without a URL\n })\n );\n }\n await Promise.all(docFetches);\n\n const refs: ChatChunkReference[] = allChunks.map((entry, i) =>\n buildChunkReference({\n index: i + 1,\n kbId: entry.kbId,\n kbLabel: entry.kbLabel,\n result: entry.r,\n url: docUrls.get(docUrlKey(entry.kbId, entry.r.doc_id)),\n })\n );\n\n // Follow-up carry-forward: when this turn produced no hits but a\n // previous turn did, treat the prior refs as the effective context\n // instead of firing the no-match path. Short follow-ups like \"tell\n // me more\" or \"and on mobile?\" would otherwise drop the user out of\n // the conversation thread.\n const effectiveRefs: readonly ChatChunkReference[] =\n refs.length > 0 ? refs : lastNonEmptyRefs;\n if (refs.length > 0) {\n lastNonEmptyRefs = refs;\n }\n\n const emitted: ChatChunkReference[] =\n effectiveRefs.length > 0\n ? [...effectiveRefs]\n : ((input.noMatchReferences as ChatChunkReference[] | undefined) ?? []);\n\n yield {\n type: \"object-delta\",\n port: \"references\",\n objectDelta: emitted,\n } as StreamEvent<AiChatWithKbTaskOutput>;\n\n let assistantText = \"\";\n if (effectiveRefs.length === 0 && input.noMatchReply) {\n yield {\n type: \"text-delta\",\n port: \"text\",\n textDelta: input.noMatchReply,\n } as StreamEvent<AiChatWithKbTaskOutput>;\n assistantText = input.noMatchReply;\n } else {\n // Build a per-turn system prompt that includes the retrieved context.\n const addendum = buildResponseFormatAddendum(input.responseFormat);\n const directive = input.responseFormat === \"markdown\" ? KB_INLINE_CITATION_DIRECTIVE : \"\";\n const userSystemPrompt = input.systemPrompt ?? \"\";\n const turnSystemPrompt = [\n userSystemPrompt,\n addendum,\n directive,\n \"--- Context ---\",\n formatChunksForPrompt(effectiveRefs, input.responseFormat),\n ]\n .filter((s) => s.length > 0)\n .join(\"\\n\\n\");\n const perTurnInput: AiChatWithKbTaskInput = {\n ...input,\n messages: [\n { role: \"system\", content: [{ type: \"text\", text: turnSystemPrompt }] },\n ...history.filter((m) => m.role !== \"system\"),\n ],\n systemPrompt: turnSystemPrompt,\n };\n const turnJobInput = await this.getJobInput(perTurnInput);\n const strategy = getAiProviderRegistry().getStrategy(model);\n\n for await (const event of strategy.executeStream(\n turnJobInput as any,\n context,\n this.runConfig.runnerId\n )) {\n if (event.type === \"text-delta\") {\n assistantText += (event as any).textDelta;\n yield {\n ...event,\n port: (event as any).port ?? \"text\",\n } as StreamEvent<AiChatWithKbTaskOutput>;\n } else if (event.type === \"finish\") {\n // swallow — we emit our own finish at the end\n } else {\n yield event as StreamEvent<AiChatWithKbTaskOutput>;\n }\n }\n }\n\n const assistantMsg: ChatMessage = {\n role: \"assistant\",\n content: [{ type: \"text\", text: assistantText }],\n };\n history.push(assistantMsg);\n completedTurns = turn + 1;\n yield {\n type: \"object-delta\",\n port: \"messages\",\n objectDelta: [assistantMsg],\n } as StreamEvent<AiChatWithKbTaskOutput>;\n\n // Ask the human for the next turn.\n const request: IHumanRequest = {\n requestId: crypto.randomUUID(),\n targetHumanId: \"default\",\n kind: \"elicit\",\n message: \"\",\n contentSchema: chatConnectorContentSchema,\n contentData: undefined,\n expectsResponse: true,\n mode: \"multi-turn\",\n metadata: { iteration: turn, taskId: this.id },\n };\n\n const response = await connector.send(request, context.signal);\n if (response.action === \"cancel\" || response.action === \"decline\") break;\n\n const raw = response.content?.content;\n let userContent: ContentBlock[];\n if (typeof raw === \"string\") {\n const text = raw.trim();\n userContent = text.length > 0 ? [{ type: \"text\", text: raw }] : [];\n } else if (Array.isArray(raw)) {\n userContent = raw as ContentBlock[];\n } else {\n userContent = [];\n }\n if (userContent.length === 0) break;\n\n const userMsg: ChatMessage = { role: \"user\", content: userContent };\n history.push(userMsg);\n yield {\n type: \"object-delta\",\n port: \"messages\",\n objectDelta: [userMsg],\n } as StreamEvent<AiChatWithKbTaskOutput>;\n }\n\n // `text`, `messages`, and `references` ride the x-stream merge into the\n // final output. `iterations` has no x-stream, so we deliver it in\n // `finish.data` for the StreamProcessor to merge over the accumulated\n // ports.\n yield {\n type: \"finish\",\n data: { iterations: completedTurns } as Partial<AiChatWithKbTaskOutput>,\n } as StreamEvent<AiChatWithKbTaskOutput>;\n }\n}\n\n// ========================================================================\n// Helpers (module-level, no shared mutable state)\n// ========================================================================\n\nfunction extractLastUserText(messages: readonly ChatMessage[]): string {\n for (let i = messages.length - 1; i >= 0; i--) {\n const m = messages[i];\n if (!m || m.role !== \"user\") continue;\n const text = m.content\n .map((b) => (b.type === \"text\" ? (b as { type: \"text\"; text: string }).text : \"\"))\n .join(\" \")\n .trim();\n if (text.length > 0) return text;\n }\n return \"\";\n}\n\ninterface BuildChunkRefArgs {\n index: number;\n kbId: string;\n kbLabel: string;\n result: ChunkSearchResult;\n /**\n * URL resolved from the document record's metadata (preferred over any URL\n * on the chunk metadata, which is typically absent — `ChunkVectorUpsertTask`\n * propagates only `doc_title` from doc to chunk).\n */\n url: string | undefined;\n}\n\nfunction buildChunkReference(args: BuildChunkRefArgs): ChatChunkReference {\n const md = (args.result.metadata ?? {}) as {\n doc_title?: string;\n title?: string;\n text?: string;\n url?: string;\n sectionTitles?: readonly string[];\n };\n const title = md.doc_title ?? md.title ?? args.result.doc_id ?? \"Untitled\";\n // No `md.sourceUri` fallback — sourceUri is the raw `/raw/<domain>/...`\n // path on legacy chunks. Letting it through would produce a clickable\n // chip routing to a non-existent page. Leaving the URL undefined\n // renders a chip without a click target instead.\n const baseUrl = args.url ?? md.url ?? undefined;\n // Append a `#anchor` for the chunk's deepest section so the link scrolls\n // directly to the relevant heading on the rendered page. The MDX rehype\n // pipeline must emit the same slug as an `id=` on each heading or this\n // won't scroll — they share `slugifyHeading` from @workglow/knowledge-base\n // for that reason.\n const url = withSectionAnchor(baseUrl, md.sectionTitles);\n const text = md.text ?? \"\";\n const snippet = text.length > 150 ? text.slice(0, 150).trim() + \"…\" : text;\n return {\n index: args.index,\n kbId: args.kbId,\n kbLabel: args.kbLabel,\n title,\n url,\n snippet,\n score: args.result.score,\n };\n}\n\nfunction withSectionAnchor(\n url: string | undefined,\n sectionTitles: readonly string[] | undefined\n): string | undefined {\n if (!url) return url;\n // Don't double-fragment: if the URL already has a `#…`, leave it alone.\n if (url.includes(\"#\")) return url;\n if (!sectionTitles || sectionTitles.length === 0) return url;\n const deepest = sectionTitles[sectionTitles.length - 1];\n if (typeof deepest !== \"string\") return url;\n const slug = slugifyHeading(deepest);\n if (slug.length === 0) return url;\n return `${url}#${slug}`;\n}\n\nfunction formatChunksForPrompt(\n refs: readonly ChatChunkReference[],\n responseFormat: ResponseFormat | undefined\n): string {\n return refs\n .map((r) => {\n const head = `[${r.index}] [${r.kbLabel}] (${r.title})`;\n if (responseFormat === \"markdown\" && r.url) {\n return `${head} <${r.url}>\\n ${r.snippet}`;\n }\n return `${head} ${r.snippet}`;\n })\n .join(\"\\n\\n\");\n}\n",
|
|
25
|
+
"/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ChunkSearchResult, KnowledgeBase } from \"@workglow/knowledge-base\";\nimport { TypeKnowledgeBase } from \"@workglow/knowledge-base\";\nimport { CreateWorkflow, IExecuteContext, Task, Workflow } from \"@workglow/task-graph\";\nimport type { TaskConfig } from \"@workglow/task-graph\";\nimport type { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n knowledgeBase: TypeKnowledgeBase({\n title: \"Knowledge Base\",\n description: \"The knowledge base instance to search in\",\n }),\n query: {\n type: \"string\",\n title: \"Query\",\n description: \"Search query (the KB's onSearch handles embedding internally)\",\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 },\n required: [\"knowledgeBase\", \"query\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n results: {\n type: \"array\",\n items: {\n type: \"object\",\n title: \"Chunk Search Result\",\n description: \"A single chunk match with score and metadata\",\n },\n title: \"Results\",\n description: \"Matching chunks in score-desc order\",\n },\n count: {\n type: \"number\",\n title: \"Count\",\n description: \"Number of results returned\",\n },\n },\n required: [\"results\", \"count\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type KbSearchTaskInput = FromSchema<typeof inputSchema>;\nexport type KbSearchTaskOutput = {\n readonly results: ChunkSearchResult[];\n readonly count: number;\n};\nexport type KbSearchTaskConfig = TaskConfig<KbSearchTaskInput>;\n\n/**\n * Observable wrapper around `kb.search(text, opts)` — the KB's `onSearch`\n * callback handles embedding and any custom retrieval logic. Distinct from\n * `ChunkRetrievalTask`, which embeds via an explicit model and calls\n * `kb.similaritySearch(vector)` (bypassing `onSearch`).\n */\nexport class KbSearchTask extends Task<KbSearchTaskInput, KbSearchTaskOutput, KbSearchTaskConfig> {\n public static override type = \"KbSearchTask\";\n public static override category = \"RAG\";\n public static override title = \"KB Search\";\n public static override description =\n \"Search a knowledge base for chunks matching a text query. Wraps the KB's `search` method (which embeds and retrieves via the KB's onSearch callback).\";\n public static override cacheable = true;\n\n public static override inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static override outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n override async execute(\n input: KbSearchTaskInput,\n _context: IExecuteContext\n ): Promise<KbSearchTaskOutput> {\n const { knowledgeBase, query, topK = 5, filter } = input;\n const kb = knowledgeBase as KnowledgeBase;\n const results = await kb.search(query, { topK, filter });\n return { results, count: results.length };\n }\n}\n\nexport const kbSearch = (input: KbSearchTaskInput, config?: KbSearchTaskConfig) => {\n return new KbSearchTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n kbSearch: CreateWorkflow<KbSearchTaskInput, KbSearchTaskOutput, KbSearchTaskConfig>;\n }\n}\n\nWorkflow.prototype.kbSearch = CreateWorkflow(KbSearchTask);\n",
|
|
23
26
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskConfig } from \"@workglow/task-graph\";\nimport { CreateWorkflow, Workflow } from \"@workglow/task-graph\";\nimport { ImageValueSchema } from \"@workglow/util/media\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { TypeImageInput, TypeModel } from \"./base/AiTaskSchemas\";\nimport { AiVisionTask } from \"./base/AiVisionTask\";\n\nconst modelSchema = TypeModel(\"model:BackgroundRemovalTask\");\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: ImageValueSchema({\n title: \"Image\",\n description: \"Image with transparent background\",\n }),\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>;\nexport type BackgroundRemovalTaskConfig = TaskConfig<BackgroundRemovalTaskInput>;\n\n/**\n * Removes backgrounds from images using computer vision models\n */\nexport class BackgroundRemovalTask extends AiVisionTask<\n BackgroundRemovalTaskInput,\n BackgroundRemovalTaskOutput,\n BackgroundRemovalTaskConfig\n> {\n public static override type = \"BackgroundRemovalTask\";\n public static override category = \"AI Vision\";\n public static override title = \"Background Removal\";\n public static override description =\n \"Removes backgrounds from images, producing images with transparent backgrounds\";\n public static override inputSchema(): DataPortSchema {\n return BackgroundRemovalInputSchema as DataPortSchema;\n }\n public static override 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?: BackgroundRemovalTaskConfig\n) => {\n return new BackgroundRemovalTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n backgroundRemoval: CreateWorkflow<\n BackgroundRemovalTaskInput,\n BackgroundRemovalTaskOutput,\n BackgroundRemovalTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.backgroundRemoval = CreateWorkflow(BackgroundRemovalTask);\n",
|
|
24
27
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskConfig, TaskOutput } from \"@workglow/task-graph\";\n\nimport { AiTask, AiTaskInput } from \"./AiTask\";\n\n/**\n * A base class for AI vision tasks.\n *\n * In the ImageValue boundary model, `input.image` is hydrated to `ImageValue`\n * (a plain POJO wrapping `ImageBitmap` on browser or `Buffer` on node) by the\n * `format: \"image\"` input resolver before the task runs. `ImageValue` is\n * structured-clone-safe, so it traverses the worker boundary without any\n * additional materialization. Provider workers normalize at their entry point.\n */\nexport class AiVisionTask<\n Input extends AiTaskInput = AiTaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig<Input> = TaskConfig<Input>,\n> extends AiTask<Input, Output, Config> {\n public static override type: string = \"AiVisionTask\";\n}\n",
|
|
25
28
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { KnowledgeBase, TypeKnowledgeBase } from \"@workglow/knowledge-base\";\nimport type { ChunkRecord } from \"@workglow/knowledge-base\";\nimport { CreateWorkflow, IExecuteContext, Task, Workflow } from \"@workglow/task-graph\";\nimport type { TaskConfig } from \"@workglow/task-graph\";\nimport {\n DataPortSchema,\n FromSchema,\n isTypedArray,\n TypedArray,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util/schema\";\nimport { TypeModel } from \"./base/AiTaskSchemas\";\nimport { TextEmbeddingTask } from \"./TextEmbeddingTask\";\nimport type { ChunkSearchResult } from \"@workglow/knowledge-base\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n knowledgeBase: TypeKnowledgeBase({\n title: \"Knowledge Base\",\n description: \"The knowledge base instance to search in\",\n }),\n query: {\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 (requires `model`) 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 method: {\n type: \"string\",\n enum: [\"similarity\", \"hybrid\"],\n title: \"Retrieval Method\",\n description:\n \"Retrieval strategy: 'similarity' (vector only) or 'hybrid' (vector + full-text).\",\n default: \"similarity\",\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 vectorWeight: {\n type: \"number\",\n title: \"Vector Weight\",\n description:\n \"For hybrid method: 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: [\"knowledgeBase\", \"query\"],\n if: {\n properties: {\n query: { type: \"string\" },\n },\n },\n then: {\n required: [\"knowledgeBase\", \"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 query: {\n oneOf: [\n { type: \"string\" },\n TypedArraySchema({\n title: \"Query Vector\",\n description: \"Pre-computed query vector\",\n }),\n ],\n title: \"Query\",\n description: \"The query used for retrieval (pass-through)\",\n },\n },\n required: [\"chunks\", \"chunk_ids\", \"metadata\", \"scores\", \"count\", \"query\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type ChunkRetrievalTaskInput = FromSchema<typeof inputSchema, TypedArraySchemaOptions>;\nexport type ChunkRetrievalTaskOutput = FromSchema<typeof outputSchema, TypedArraySchemaOptions>;\nexport type ChunkRetrievalTaskConfig = TaskConfig<ChunkRetrievalTaskInput>;\n\n/**\n * End-to-end retrieval task that combines query embedding (if needed), vector\n * search, and optional hybrid full-text search in a single step.\n */\nexport class ChunkRetrievalTask extends Task<\n ChunkRetrievalTaskInput,\n ChunkRetrievalTaskOutput,\n ChunkRetrievalTaskConfig\n> {\n public static override type = \"ChunkRetrievalTask\";\n public static override category = \"RAG\";\n public static override title = \"Chunk Retrieval\";\n public static override description =\n \"End-to-end retrieval: embed query (if string) and search the knowledge base. Supports similarity and hybrid methods.\";\n public static override cacheable = true;\n\n public static override inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static override outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n override async execute(\n input: ChunkRetrievalTaskInput,\n context: IExecuteContext\n ): Promise<ChunkRetrievalTaskOutput> {\n const {\n knowledgeBase,\n query,\n topK = 5,\n filter,\n model,\n method = \"similarity\",\n vectorWeight = 0.7,\n scoreThreshold = 0,\n returnVectors = false,\n } = input;\n\n const kb = knowledgeBase as KnowledgeBase;\n\n const queryIsString = typeof query === \"string\";\n\n if (method === \"hybrid\" && !queryIsString) {\n throw new Error(\n \"Hybrid retrieval requires a string query (it will be embedded and used for full-text search).\"\n );\n }\n if (method === \"hybrid\" && !kb.supportsHybridSearch()) {\n throw new Error(\n \"The provided knowledge base does not support hybrid search. Use method: 'similarity' or a backend with hybrid support (e.g., Postgres with pgvector).\"\n );\n }\n\n // Resolve the query to a single vector (+ original text, for hybrid mode).\n let queryVector: TypedArray;\n let queryText: string | undefined;\n\n if (queryIsString) {\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 queryText = query;\n const embeddingTask = context.own(new TextEmbeddingTask());\n const embeddingResult = await embeddingTask.run({ text: query, model });\n const vec = embeddingResult.vector;\n queryVector = Array.isArray(vec) ? vec[0] : vec;\n } else if (isTypedArray(query)) {\n queryVector = query;\n } else {\n throw new Error(\"Query must be a string or TypedArray\");\n }\n\n const searchVector =\n queryVector instanceof Float32Array ? queryVector : new Float32Array(queryVector);\n\n const results: ChunkSearchResult[] =\n method === \"hybrid\"\n ? await kb.hybridSearch(searchVector, {\n textQuery: queryText!,\n topK,\n filter,\n scoreThreshold,\n vectorWeight,\n })\n : await kb.similaritySearch(searchVector, {\n topK,\n filter,\n scoreThreshold,\n });\n\n const chunks = results.map((r) => {\n const meta = r.metadata as ChunkRecord;\n return meta.text || 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 query,\n };\n\n if (returnVectors) {\n output.vectors = results.map((r) => r.vector);\n }\n\n return output;\n }\n}\n\nexport const chunkRetrieval = (\n input: ChunkRetrievalTaskInput,\n config?: ChunkRetrievalTaskConfig\n) => {\n return new ChunkRetrievalTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n chunkRetrieval: CreateWorkflow<\n ChunkRetrievalTaskInput,\n ChunkRetrievalTaskOutput,\n ChunkRetrievalTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.chunkRetrieval = CreateWorkflow(ChunkRetrievalTask);\n",
|
|
@@ -40,7 +43,7 @@
|
|
|
40
43
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskConfig } from \"@workglow/task-graph\";\nimport { CreateWorkflow, Workflow } from \"@workglow/task-graph\";\nimport type { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\nimport type { AiImageOutput } from \"../base/AiImageOutputTask\";\nimport { AiImageOutputTask } from \"../base/AiImageOutputTask\";\nimport { TypeModel } from \"../base/AiTaskSchemas\";\nimport { AiImageOptionsProperties, AiImageOutputSchema } from \"./AiImageSchemas\";\n\nconst modelSchema = TypeModel(\"model:ImageGenerateTask\");\n\nexport const ImageGenerateInputSchema = {\n type: \"object\",\n properties: {\n model: modelSchema,\n prompt: {\n type: \"string\",\n title: \"Prompt\",\n description: \"Text describing the image to generate\",\n },\n ...AiImageOptionsProperties,\n },\n required: [\"model\", \"prompt\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport const ImageGenerateOutputSchema = AiImageOutputSchema;\n\nexport type ImageGenerateTaskInput = FromSchema<typeof ImageGenerateInputSchema>;\nexport type ImageGenerateTaskOutput = AiImageOutput;\nexport type ImageGenerateTaskConfig = TaskConfig<ImageGenerateTaskInput>;\n\nexport class ImageGenerateTask extends AiImageOutputTask<\n ImageGenerateTaskInput,\n ImageGenerateTaskConfig\n> {\n public static override type = \"ImageGenerateTask\";\n public static override category = \"AI Vision\";\n public static override title = \"Generate Image\";\n public static override description =\n \"Generates an image from a text prompt using configurable AI image-generation models.\";\n public static override cacheable = true;\n\n public static override inputSchema(): DataPortSchema {\n return ImageGenerateInputSchema as DataPortSchema;\n }\n public static override outputSchema(): DataPortSchema {\n return ImageGenerateOutputSchema as DataPortSchema;\n }\n\n public override async validateInput(input: ImageGenerateTaskInput): Promise<boolean> {\n const ok = await super.validateInput(input);\n if (!ok) return false;\n await this.validateProviderImageInput(input);\n return true;\n }\n}\n\nexport const imageGenerate = (input: ImageGenerateTaskInput, config?: ImageGenerateTaskConfig) =>\n new ImageGenerateTask(config).run(input);\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n imageGenerate: CreateWorkflow<\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n ImageGenerateTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.imageGenerate = CreateWorkflow(ImageGenerateTask);\n",
|
|
41
44
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskConfig } from \"@workglow/task-graph\";\nimport { CreateWorkflow, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { TypeImageInput, TypeLandmark, TypeModel } from \"./base/AiTaskSchemas\";\nimport { AiVisionTask } from \"./base/AiVisionTask\";\n\nconst modelSchema = TypeModel(\"model:GestureRecognizerTask\");\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 format: \"points:3d:relative\",\n },\n worldLandmarks: {\n type: \"array\",\n items: TypeLandmark,\n title: \"World Landmarks\",\n description: \"21 hand landmarks in 3D world coordinates (meters)\",\n format: \"points:3d: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>;\nexport type GestureRecognizerTaskConfig = TaskConfig<GestureRecognizerTaskInput>;\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 GestureRecognizerTaskConfig\n> {\n public static override type = \"GestureRecognizerTask\";\n public static override category = \"AI Vision\";\n public static override title = \"Gesture Recognizer\";\n public static override description =\n \"Recognizes hand gestures in images. Detects hand landmarks, identifies gestures (thumbs up, victory, etc.), and classifies handedness.\";\n public static override inputSchema(): DataPortSchema {\n return GestureRecognizerInputSchema as DataPortSchema;\n }\n public static override 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?: GestureRecognizerTaskConfig\n) => {\n return new GestureRecognizerTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n gestureRecognizer: CreateWorkflow<\n GestureRecognizerTaskInput,\n GestureRecognizerTaskOutput,\n GestureRecognizerTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.gestureRecognizer = CreateWorkflow(GestureRecognizerTask);\n",
|
|
42
45
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskConfig } from \"@workglow/task-graph\";\nimport { CreateWorkflow, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { TypeImageInput, TypeLandmark, TypeModel } from \"./base/AiTaskSchemas\";\nimport { AiVisionTask } from \"./base/AiVisionTask\";\n\nconst modelSchema = TypeModel(\"model:HandLandmarkerTask\");\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 format: \"points:3d:relative\",\n },\n worldLandmarks: {\n type: \"array\",\n items: TypeLandmark,\n title: \"World Landmarks\",\n description: \"21 hand landmarks in 3D world coordinates (meters)\",\n format: \"points:3d: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>;\nexport type HandLandmarkerTaskConfig = TaskConfig<HandLandmarkerTaskInput>;\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 HandLandmarkerTaskConfig\n> {\n public static override type = \"HandLandmarkerTask\";\n public static override category = \"AI Vision\";\n public static override title = \"Hand Landmarker\";\n public static override description =\n \"Detects hand landmarks in images. Identifies 21 hand landmarks and classifies left vs. right hands.\";\n public static override inputSchema(): DataPortSchema {\n return HandLandmarkerInputSchema as DataPortSchema;\n }\n public static override 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 = (\n input: HandLandmarkerTaskInput,\n config?: HandLandmarkerTaskConfig\n) => {\n return new HandLandmarkerTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n handLandmarker: CreateWorkflow<\n HandLandmarkerTaskInput,\n HandLandmarkerTaskOutput,\n HandLandmarkerTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.handLandmarker = CreateWorkflow(HandLandmarkerTask);\n",
|
|
43
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ChunkRecordSchema,\n DocumentRootNode,\n estimateTokens,\n getChildren,\n hasChildren,\n} from \"@workglow/knowledge-base\";\n\nimport type { ChunkRecord, DocumentNode, TokenBudget } from \"@workglow/knowledge-base\";\nimport type { TaskConfig } from \"@workglow/task-graph\";\nimport { CreateWorkflow, IExecuteContext, Task, Workflow } from \"@workglow/task-graph\";\nimport { uuid4 } from \"@workglow/util\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\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 type: \"object\",\n additionalProperties: true,\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: ChunkRecordSchema(),\n title: \"Chunks\",\n description: \"Array of chunk records\",\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 = Omit<FromSchema<typeof inputSchema>, \"documentTree\"> & {\n documentTree: DocumentRootNode;\n};\nexport type HierarchicalChunkerTaskOutput = FromSchema<typeof outputSchema>;\nexport type HierarchicalChunkerTaskConfig = TaskConfig<HierarchicalChunkerTaskInput>;\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 HierarchicalChunkerTaskConfig\n> {\n public static override type = \"HierarchicalChunkerTask\";\n public static override category = \"Document\";\n public static override title = \"Hierarchical Chunker\";\n public static override description = \"Chunk documents hierarchically respecting token budgets\";\n public static override cacheable = true;\n\n public static override inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static override outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n override 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({ defaults: { model: input.model } }));\n countFn = async (text: string): Promise<number> => {\n try {\n const result = await countTask.run({ text });\n return result.count as number;\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: ChunkRecord[] = [];\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: ChunkRecord[],\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: ChunkRecord[],\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: ChunkRecord[],\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?: HierarchicalChunkerTaskConfig\n) => {\n return new HierarchicalChunkerTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n hierarchicalChunker: CreateWorkflow<\n HierarchicalChunkerTaskInput,\n HierarchicalChunkerTaskOutput,\n HierarchicalChunkerTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.hierarchicalChunker = CreateWorkflow(HierarchicalChunkerTask);\n",
|
|
46
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ChunkRecordSchema,\n DocumentRootNode,\n estimateTokens,\n getChildren,\n hasChildren,\n NodeKind,\n} from \"@workglow/knowledge-base\";\n\nimport type { ChunkRecord, DocumentNode, SectionNode, TokenBudget } from \"@workglow/knowledge-base\";\nimport type { TaskConfig } from \"@workglow/task-graph\";\nimport { CreateWorkflow, IExecuteContext, Task, Workflow } from \"@workglow/task-graph\";\nimport { uuid4 } from \"@workglow/util\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\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 type: \"object\",\n additionalProperties: true,\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: ChunkRecordSchema(),\n title: \"Chunks\",\n description: \"Array of chunk records\",\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 = Omit<FromSchema<typeof inputSchema>, \"documentTree\"> & {\n documentTree: DocumentRootNode;\n};\nexport type HierarchicalChunkerTaskOutput = FromSchema<typeof outputSchema>;\nexport type HierarchicalChunkerTaskConfig = TaskConfig<HierarchicalChunkerTaskInput>;\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 HierarchicalChunkerTaskConfig\n> {\n public static override type = \"HierarchicalChunkerTask\";\n public static override category = \"Document\";\n public static override title = \"Hierarchical Chunker\";\n public static override description = \"Chunk documents hierarchically respecting token budgets\";\n public static override cacheable = true;\n\n public static override inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static override outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n override 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({ defaults: { model: input.model } }));\n countFn = async (text: string): Promise<number> => {\n try {\n const result = await countTask.run({ text });\n return result.count as number;\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: ChunkRecord[] = [];\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 * `headingPath` accumulates the titles of ancestor *section* nodes only\n * (the document root's title is intentionally excluded), so leaves can be\n * prefixed with a `\"Section > Subsection\"` breadcrumb. This is a well-known\n * RAG win: the embedding picks up the topical keywords from the heading\n * hierarchy, and the LLM in the answer phase doesn't have to guess what\n * the chunk is about — both effects matter most on small models, which\n * otherwise pad with plausible-sounding but unsupported claims.\n *\n * The document root title is deliberately omitted: it's already carried\n * on the document's `metadata.title` (and surfaces to the chat layer as\n * the reference label), and including it inside chunk text encourages\n * small models to synthesize fake URLs by pattern-matching the brand\n * name onto the section slug — e.g. a doc titled \"Workglow\" plus a\n * \"Secret Management\" section produced fabricated links like\n * `https://workglow.com/help/secret-management`.\n */\n private async chunkHierarchically(\n node: DocumentNode,\n nodePath: string[],\n headingPath: string[],\n doc_id: string,\n tokenBudget: TokenBudget,\n chunks: ChunkRecord[],\n countFn: (text: string) => Promise<number>\n ): Promise<void> {\n const currentPath = [...nodePath, node.nodeId];\n const currentHeadings =\n node.kind === NodeKind.SECTION &&\n typeof (node as SectionNode).title === \"string\" &&\n (node as SectionNode).title.trim().length > 0\n ? [...headingPath, (node as SectionNode).title.trim()]\n : headingPath;\n\n if (!hasChildren(node)) {\n await this.chunkText(\n node.text,\n currentPath,\n currentHeadings,\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(\n child,\n currentPath,\n currentHeadings,\n doc_id,\n tokenBudget,\n chunks,\n countFn\n );\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 * `headingPath` is prepended to each emitted chunk as a `\"A > B > C\\n\\n\"`\n * breadcrumb and its tokens are charged against the chunk budget so the\n * combined chunk (prefix + body) still fits `maxTokensPerChunk -\n * reservedTokens`. If charging the prefix would leave no room for any\n * body, the prefix is dropped for this leaf so we always make progress.\n */\n private async chunkText(\n text: string,\n nodePath: string[],\n headingPath: string[],\n doc_id: string,\n tokenBudget: TokenBudget,\n chunks: ChunkRecord[],\n leafNodeId: string,\n countFn: (text: string) => Promise<number>\n ): Promise<void> {\n // Skip header-only chunks: nothing useful to retrieve or cite.\n if (text.trim().length === 0) return;\n\n const budgetAfterReserved = tokenBudget.maxTokensPerChunk - tokenBudget.reservedTokens;\n const overlapTokens = tokenBudget.overlapTokens;\n\n if (budgetAfterReserved <= 0) {\n throw new Error(\n `Invalid token budget: reservedTokens (${tokenBudget.reservedTokens}) must be less than maxTokensPerChunk (${tokenBudget.maxTokensPerChunk})`\n );\n }\n\n const breadcrumb = headingPath.join(\" > \");\n const candidatePrefix = breadcrumb ? `${breadcrumb}\\n\\n` : \"\";\n const prefixTokens = candidatePrefix ? await countFn(candidatePrefix) : 0;\n // Drop the prefix if it would leave no room for body; never let the prefix\n // eat the whole chunk.\n const usePrefix = prefixTokens > 0 && prefixTokens < budgetAfterReserved;\n const prefix = usePrefix ? candidatePrefix : \"\";\n const effectivePrefixTokens = usePrefix ? prefixTokens : 0;\n const maxTokens = budgetAfterReserved - effectivePrefixTokens;\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: prefix + text,\n nodePath,\n depth: nodePath.length,\n leafNodeId,\n // sectionTitles is what the chat layer slugifies into a URL `#anchor`\n // so retrieved chunks can deep-link to the specific section of the\n // rendered page. Copy so callers can't mutate the chunker's\n // internal accumulator.\n sectionTitles: [...headingPath],\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: prefix + text.substring(startOffset, endOffset),\n nodePath,\n depth: nodePath.length,\n leafNodeId,\n sectionTitles: [...headingPath],\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). The document title is intentionally\n * NOT prepended here — see the rationale on `chunkHierarchically`. The\n * doc title rides along on `metadata.title` instead, which is what the\n * chat layer surfaces as the reference label.\n */\n private async chunkFlat(\n root: DocumentNode,\n doc_id: string,\n tokenBudget: TokenBudget,\n chunks: ChunkRecord[],\n countFn: (text: string) => Promise<number>\n ): Promise<void> {\n const allText = this.collectAllText(root);\n await this.chunkText(\n allText,\n [root.nodeId],\n [],\n doc_id,\n tokenBudget,\n chunks,\n root.nodeId,\n countFn\n );\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?: HierarchicalChunkerTaskConfig\n) => {\n return new HierarchicalChunkerTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n hierarchicalChunker: CreateWorkflow<\n HierarchicalChunkerTaskInput,\n HierarchicalChunkerTaskOutput,\n HierarchicalChunkerTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.hierarchicalChunker = CreateWorkflow(HierarchicalChunkerTask);\n",
|
|
44
47
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ChunkRecordArraySchema, TypeKnowledgeBase } from \"@workglow/knowledge-base\";\n\nimport type { ChunkRecord, KnowledgeBase } from \"@workglow/knowledge-base\";\nimport { CreateWorkflow, IExecuteContext, Task, Workflow } from \"@workglow/task-graph\";\nimport type { TaskConfig } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n knowledgeBase: TypeKnowledgeBase({\n title: \"Knowledge Base\",\n description: \"The knowledge base to query for hierarchy\",\n }),\n metadata: ChunkRecordArraySchema,\n // Optional pass-through ports so downstream tasks (Reranker, ContextBuilder)\n // can auto-connect chunks/chunk_ids/scores through this task.\n chunks: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Chunks\",\n description: \"Retrieved text chunks (pass-through)\",\n },\n chunk_ids: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Chunk IDs\",\n description: \"IDs of retrieved chunks (pass-through)\",\n },\n scores: {\n type: \"array\",\n items: { type: \"number\" },\n title: \"Scores\",\n description: \"Similarity scores (pass-through)\",\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: [\"knowledgeBase\", \"metadata\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n metadata: ChunkRecordArraySchema,\n chunks: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Chunks\",\n description: \"Retrieved text chunks (pass-through)\",\n },\n chunk_ids: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Chunk IDs\",\n description: \"IDs of retrieved chunks (pass-through)\",\n },\n scores: {\n type: \"array\",\n items: { type: \"number\" },\n title: \"Scores\",\n description: \"Similarity scores (pass-through)\",\n },\n count: {\n type: \"number\",\n title: \"Count\",\n description: \"Number of enriched records\",\n },\n },\n required: [\"metadata\", \"count\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type HierarchyJoinTaskInput = FromSchema<typeof inputSchema>;\nexport type HierarchyJoinTaskOutput = FromSchema<typeof outputSchema>;\nexport type HierarchyJoinTaskConfig = TaskConfig<HierarchyJoinTaskInput>;\n\n/**\n * Enrich retrieval metadata with document-hierarchy context (parent summaries,\n * section titles, ancestor entities). Consumes only the `metadata` port of an\n * upstream retrieval task; other retrieval ports (chunks, chunk_ids, scores)\n * flow around this task via the workflow DAG.\n */\nexport class HierarchyJoinTask extends Task<\n HierarchyJoinTaskInput,\n HierarchyJoinTaskOutput,\n HierarchyJoinTaskConfig\n> {\n public static override type = \"HierarchyJoinTask\";\n public static override category = \"RAG\";\n public static override title = \"Hierarchy Join\";\n public static override description = \"Enrich retrieval metadata with document hierarchy context\";\n public static override cacheable = false; // Has external dependency\n\n public static override inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static override outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n override async execute(\n input: HierarchyJoinTaskInput,\n context: IExecuteContext\n ): Promise<HierarchyJoinTaskOutput> {\n const {\n knowledgeBase,\n metadata,\n chunks,\n chunk_ids,\n scores,\n includeParentSummaries = true,\n includeEntities = true,\n } = input;\n\n const kb = knowledgeBase as KnowledgeBase;\n const enrichedMetadata: ChunkRecord[] = [];\n\n for (const originalMetadata of metadata as ChunkRecord[]) {\n if (!originalMetadata) {\n enrichedMetadata.push({} as ChunkRecord);\n continue;\n }\n\n const doc_id = originalMetadata.doc_id;\n const leafNodeId =\n originalMetadata.leafNodeId ??\n originalMetadata.nodePath?.[originalMetadata.nodePath.length - 1];\n\n if (!doc_id || !leafNodeId) {\n enrichedMetadata.push(originalMetadata);\n continue;\n }\n\n try {\n const ancestors = await kb.getAncestors(doc_id, leafNodeId);\n const enriched: ChunkRecord = { ...originalMetadata };\n\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\" && \"title\" in ancestor) {\n sectionTitles.push(ancestor.title as string);\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 if (includeEntities && ancestors.length > 0) {\n const allEntities: Array<{ text: string; type: string; score: number }> = [];\n for (const ancestor of ancestors) {\n if (ancestor.enrichment?.entities) {\n allEntities.push(...ancestor.enrichment.entities);\n }\n }\n\n const uniqueEntities = new Map<string, { text: string; type: string; score: number }>();\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 console.error(`Failed to join hierarchy for chunk ${originalMetadata.chunkId}:`, error);\n enrichedMetadata.push(originalMetadata);\n }\n }\n\n const output: HierarchyJoinTaskOutput = {\n metadata: enrichedMetadata,\n count: enrichedMetadata.length,\n };\n if (chunks !== undefined) output.chunks = chunks;\n if (chunk_ids !== undefined) output.chunk_ids = chunk_ids;\n if (scores !== undefined) output.scores = scores;\n return output;\n }\n}\n\nexport const hierarchyJoin = (input: HierarchyJoinTaskInput, config?: HierarchyJoinTaskConfig) => {\n return new HierarchyJoinTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n hierarchyJoin: CreateWorkflow<\n HierarchyJoinTaskInput,\n HierarchyJoinTaskOutput,\n HierarchyJoinTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.hierarchyJoin = CreateWorkflow(HierarchyJoinTask);\n",
|
|
45
48
|
"/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DocumentNode, KnowledgeBase, TypeKnowledgeBase } from \"@workglow/knowledge-base\";\nimport type { TaskConfig } from \"@workglow/task-graph\";\nimport { CreateWorkflow, IExecuteContext, Task, Workflow } from \"@workglow/task-graph\";\nimport type { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n knowledgeBase: TypeKnowledgeBase({\n title: \"Knowledge Base\",\n description: \"The knowledge base instance to list documents from\",\n }),\n onlyStale: {\n type: \"boolean\",\n title: \"Only Stale\",\n description: \"If true, only return documents that have no chunks (need embedding)\",\n default: true,\n },\n },\n required: [\"knowledgeBase\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n doc_id: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Document IDs\",\n description: \"Array of document IDs\",\n },\n documentTree: {\n type: \"array\",\n items: { type: \"object\", additionalProperties: true },\n title: \"Document Trees\",\n description: \"Array of document root nodes (parallel to doc_id)\",\n },\n title: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Titles\",\n description: \"Array of document titles (parallel to doc_id)\",\n },\n },\n required: [\"doc_id\", \"documentTree\", \"title\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type KbToDocumentsTaskInput = FromSchema<typeof inputSchema>;\nexport type KbToDocumentsTaskOutput = Omit<FromSchema<typeof outputSchema>, \"documentTree\"> & {\n documentTree: DocumentNode[];\n};\nexport type KbToDocumentsTaskConfig = TaskConfig<KbToDocumentsTaskInput>;\n\n/**\n * Task that lists documents from a knowledge base, optionally filtering to only\n * those that need embedding (have no chunks). Returns parallel arrays of doc IDs,\n * document trees, and titles for use in downstream embedding pipelines.\n */\nexport class KbToDocumentsTask extends Task<\n KbToDocumentsTaskInput,\n KbToDocumentsTaskOutput,\n KbToDocumentsTaskConfig\n> {\n public static override type = \"KbToDocumentsTask\";\n public static override category = \"Document\";\n public static override title = \"Knowledge Base to Documents\";\n public static override description =\n \"List documents from a knowledge base, optionally filtering to only those that need embedding\";\n public static override cacheable = false; // Depends on external state\n\n public static override inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static override outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n override async execute(\n input: KbToDocumentsTaskInput,\n context: IExecuteContext\n ): Promise<KbToDocumentsTaskOutput> {\n const { knowledgeBase, onlyStale = true } = input;\n const kb = knowledgeBase as KnowledgeBase;\n\n await context.updateProgress(1, \"Listing documents\");\n\n const allDocIds = await kb.listDocuments();\n\n const doc_id: string[] = [];\n const documentTree: DocumentNode[] = [];\n const title: string[] = [];\n\n for (const id of allDocIds) {\n if (onlyStale) {\n const chunks = await kb.getChunksForDocument(id);\n if (chunks.length > 0) {\n continue;\n }\n }\n\n const doc = await kb.getDocument(id);\n if (!doc) {\n continue;\n }\n\n doc_id.push(id);\n documentTree.push(doc.root);\n title.push(doc.metadata.title);\n }\n\n return { doc_id, documentTree, title };\n }\n}\n\nexport const kbToDocuments = (input: KbToDocumentsTaskInput, config?: KbToDocumentsTaskConfig) => {\n return new KbToDocumentsTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n kbToDocuments: CreateWorkflow<\n KbToDocumentsTaskInput,\n KbToDocumentsTaskOutput,\n KbToDocumentsTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.kbToDocuments = CreateWorkflow(KbToDocumentsTask);\n",
|
|
46
49
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskConfig } from \"@workglow/task-graph\";\nimport { CreateWorkflow, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\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>;\nexport type ImageClassificationTaskConfig = TaskConfig<ImageClassificationTaskInput>;\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 ImageClassificationTaskConfig\n> {\n public static override type = \"ImageClassificationTask\";\n public static override category = \"AI Vision\";\n public static override title = \"Image Classification\";\n public static override description =\n \"Classifies images into categories using vision models. Supports zero-shot classification when categories are provided.\";\n public static override inputSchema(): DataPortSchema {\n return ImageClassificationInputSchema as DataPortSchema;\n }\n public static override 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?: ImageClassificationTaskConfig\n) => {\n return new ImageClassificationTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n imageClassification: CreateWorkflow<\n ImageClassificationTaskInput,\n ImageClassificationTaskOutput,\n ImageClassificationTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.imageClassification = CreateWorkflow(ImageClassificationTask);\n",
|
|
@@ -70,7 +73,7 @@
|
|
|
70
73
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, GraphAsTask, Workflow } from \"@workglow/task-graph\";\nimport type { TaskConfig } from \"@workglow/task-graph\";\nimport {\n cosineSimilarity,\n DataPortSchema,\n FromSchema,\n hammingSimilarity,\n jaccardSimilarity,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util/schema\";\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>;\nexport type VectorSimilarityTaskConfig = TaskConfig<VectorSimilarityTaskInput>;\n\nexport class VectorSimilarityTask extends GraphAsTask<\n VectorSimilarityTaskInput,\n VectorSimilarityTaskOutput,\n VectorSimilarityTaskConfig\n> {\n static override readonly type = \"VectorSimilarityTask\";\n static override readonly category = \"Vector\";\n static override readonly title = \"Vector Similarity\";\n public static override description =\n \"Compares vectors using similarity functions and returns top-K ranked results\";\n static override 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 override async execute(input: VectorSimilarityTaskInput): Promise<VectorSimilarityTaskOutput> {\n return this.executePreview(input);\n }\n\n override async executePreview({\n query,\n vectors,\n method,\n topK,\n }: VectorSimilarityTaskInput): Promise<VectorSimilarityTaskOutput> {\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 = (\n input: VectorSimilarityTaskInput,\n config?: VectorSimilarityTaskConfig\n) => {\n return new VectorSimilarityTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n similarity: CreateWorkflow<\n VectorSimilarityTaskInput,\n VectorSimilarityTaskOutput,\n VectorSimilarityTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.similarity = CreateWorkflow(VectorSimilarityTask);\n",
|
|
71
74
|
"/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Shared message conversion utilities for converting provider-agnostic\n * ChatMessage arrays to provider-specific formats.\n *\n * These are pure functions safe for both main-thread and worker contexts.\n * Providers with unique requirements (Anthropic, Gemini, LlamaCpp)\n * maintain their own conversion logic.\n */\n\nimport type { ChatMessage, ContentBlock } from \"./ChatMessage\";\nimport type { ToolCallingTaskInput } from \"./ToolCallingTask\";\n\n// ========================================================================\n// Internal helpers\n// ========================================================================\n\n/**\n * Extract the messages array from a ToolCallingTaskInput.\n * Returns undefined if no messages are present.\n */\nfunction getInputMessages(input: ToolCallingTaskInput): ReadonlyArray<ChatMessage> | undefined {\n const messages = input.messages;\n if (!messages || messages.length === 0) return undefined;\n return messages;\n}\n\n// ========================================================================\n// OpenAI-compatible format (OpenAI, HF Inference)\n// ========================================================================\n\nexport interface OpenAICompatMessage {\n role: string;\n content: string | null | Array<{ type: string; [key: string]: unknown }>;\n tool_calls?: Array<{\n id: string;\n type: \"function\";\n function: { name: string; arguments: string };\n }>;\n tool_call_id?: string;\n}\n\n/**\n * Converts ToolCallingTaskInput to OpenAI-compatible message format.\n * Used by OpenAI and HuggingFace Inference providers.\n *\n * Multi-turn capable: preserves full tool call metadata across turns.\n */\nexport function toOpenAIMessages(input: ToolCallingTaskInput): OpenAICompatMessage[] {\n const messages: OpenAICompatMessage[] = [];\n\n if (input.systemPrompt) {\n messages.push({ role: \"system\", content: input.systemPrompt });\n }\n\n const inputMessages = getInputMessages(input);\n if (!inputMessages) {\n if (!Array.isArray(input.prompt)) {\n messages.push({ role: \"user\", content: input.prompt });\n } else if (input.prompt.every((item) => typeof item === \"string\")) {\n messages.push({ role: \"user\", content: (input.prompt as string[]).join(\"\\n\") });\n } else {\n const parts: Array<{ type: string; [key: string]: unknown }> = [];\n for (const item of input.prompt) {\n if (typeof item === \"string\") {\n parts.push({ type: \"text\", text: item });\n } else {\n const b = item as Record<string, unknown>;\n if (b.type === \"text\") {\n parts.push({ type: \"text\", text: b.text as string });\n } else if (b.type === \"image\") {\n parts.push({\n type: \"image_url\",\n image_url: { url: `data:${b.mimeType};base64,${b.data}` },\n });\n } else if (b.type === \"audio\") {\n const format = (b.mimeType as string).replace(/^audio\\//, \"\");\n parts.push({\n type: \"input_audio\",\n input_audio: { data: b.data as string, format },\n });\n }\n }\n }\n messages.push({ role: \"user\", content: parts });\n }\n return messages;\n }\n\n for (const msg of inputMessages) {\n if (msg.role === \"user\") {\n const parts: Array<{ type: string; [key: string]: unknown }> = [];\n for (const block of msg.content) {\n if (block.type === \"text\") {\n parts.push({ type: \"text\", text: block.text });\n } else if (block.type === \"image\") {\n parts.push({\n type: \"image_url\",\n image_url: { url: `data:${block.mimeType};base64,${block.data}` },\n });\n }\n // tool_use / tool_result not valid in a user message — skip\n }\n messages.push({ role: \"user\", content: parts });\n } else if (msg.role === \"assistant\") {\n const textParts = msg.content\n .filter((b): b is Extract<ContentBlock, { type: \"text\" }> => b.type === \"text\")\n .map((b) => b.text)\n .join(\"\");\n const toolCalls = msg.content\n .filter((b): b is Extract<ContentBlock, { type: \"tool_use\" }> => b.type === \"tool_use\")\n .map((b) => ({\n id: b.id,\n type: \"function\" as const,\n function: {\n name: b.name,\n arguments: JSON.stringify(b.input),\n },\n }));\n const entry: OpenAICompatMessage = {\n role: \"assistant\",\n content: textParts.length > 0 ? textParts : null,\n };\n if (toolCalls.length > 0) {\n entry.tool_calls = toolCalls;\n }\n messages.push(entry);\n } else if (msg.role === \"tool\") {\n for (const block of msg.content) {\n if (block.type !== \"tool_result\") continue;\n let content: string | Array<{ type: string; [key: string]: unknown }>;\n if (block.content.length === 1 && block.content[0].type === \"text\") {\n content = block.content[0].text;\n } else {\n const parts: Array<{ type: string; [key: string]: unknown }> = [];\n for (const inner of block.content) {\n if (inner.type === \"text\") {\n parts.push({ type: \"text\", text: inner.text });\n } else if (inner.type === \"image\") {\n parts.push({\n type: \"image_url\",\n image_url: { url: `data:${inner.mimeType};base64,${inner.data}` },\n });\n }\n }\n content = parts;\n }\n messages.push({ role: \"tool\", content, tool_call_id: block.tool_use_id });\n }\n }\n }\n\n return messages;\n}\n\n// ========================================================================\n// Text-flat format (Ollama, HF Transformers)\n// ========================================================================\n\nexport interface TextFlatMessage {\n role: string;\n content: string;\n}\n\n/**\n * Converts ToolCallingTaskInput to a simplified text-only message format.\n * Used by providers that don't natively support structured multi-turn\n * tool calling (Ollama, HuggingFace Transformers).\n *\n * NOTE: This format discards tool_use blocks from assistant messages.\n * The LLM will not see what tools it previously called. Multi-turn tool\n * calling will have degraded quality on these providers.\n */\nexport function toTextFlatMessages(input: ToolCallingTaskInput): TextFlatMessage[] {\n const messages: TextFlatMessage[] = [];\n\n if (input.systemPrompt) {\n messages.push({ role: \"system\", content: input.systemPrompt });\n }\n\n const inputMessages = getInputMessages(input);\n if (!inputMessages) {\n let promptContent: string;\n if (!Array.isArray(input.prompt)) {\n promptContent = input.prompt;\n } else {\n // Extract text content only; media blocks are dropped in text-flat format\n promptContent = input.prompt\n .map((item) => {\n if (typeof item === \"string\") return item;\n const b = item as Record<string, unknown>;\n return b.type === \"text\" ? (b.text as string) : \"\";\n })\n .filter((s) => s !== \"\")\n .join(\"\\n\");\n }\n messages.push({ role: \"user\", content: promptContent });\n return messages;\n }\n\n for (const msg of inputMessages) {\n if (msg.role === \"user\") {\n // Extract only text blocks; media blocks are dropped in text-flat format\n const content = msg.content\n .filter((b): b is Extract<ContentBlock, { type: \"text\" }> => b.type === \"text\")\n .map((b) => b.text)\n .join(\"\");\n messages.push({ role: \"user\", content });\n } else if (msg.role === \"assistant\") {\n const text = msg.content\n .filter((b): b is Extract<ContentBlock, { type: \"text\" }> => b.type === \"text\")\n .map((b) => b.text)\n .join(\"\");\n if (text) {\n messages.push({ role: \"assistant\", content: text });\n }\n } else if (msg.role === \"tool\") {\n for (const block of msg.content) {\n if (block.type !== \"tool_result\") continue;\n // Extract only text blocks from multi-part tool results\n const content = block.content\n .filter(\n (inner): inner is Extract<ContentBlock, { type: \"text\" }> => inner.type === \"text\"\n )\n .map((inner) => inner.text)\n .join(\"\");\n messages.push({ role: \"tool\", content });\n }\n }\n }\n\n return messages;\n}\n"
|
|
72
75
|
],
|
|
73
|
-
"mappings": "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",
|
|
74
|
-
"debugId": "
|
|
76
|
+
"mappings": "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",
|
|
77
|
+
"debugId": "79B4A8A40215A1E864756E2164756E21",
|
|
75
78
|
"names": []
|
|
76
79
|
}
|