@workglow/task-graph 0.3.1 → 0.3.2

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/node.js.map CHANGED
@@ -23,11 +23,11 @@
23
23
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n EntitlementGrant,\n EntitlementId,\n TaskEntitlement,\n TaskEntitlements,\n} from \"./TaskEntitlements\";\nimport { entitlementCovers, grantCoversResources } from \"./TaskEntitlements\";\n\n// ========================================================================\n// Policy Types\n// ========================================================================\n\n/**\n * A rule matching entitlements by ID and optional resource patterns.\n * Used for deny and ask rules. Same shape as EntitlementGrant.\n */\nexport interface EntitlementRule {\n readonly id: EntitlementId;\n /** Resource patterns (glob-style). When undefined, matches broadly. */\n readonly resources?: readonly string[];\n}\n\n/**\n * A unified entitlement policy combining deny, grant, and ask rules.\n *\n * Evaluation order: Deny → Grant → Ask → Default(deny).\n * - Deny rules override everything — if matched, the entitlement is denied.\n * - Grant rules auto-allow without prompting.\n * - Ask rules trigger a resolver to prompt the user.\n * - If no rule matches, the entitlement is denied.\n */\nexport interface EntitlementPolicy {\n /** Hard denials — checked first, override grants */\n readonly deny: readonly EntitlementRule[];\n /** Grants — auto-allowed without prompting */\n readonly grant: readonly EntitlementGrant[];\n /** Ask rules — require user approval via a resolver */\n readonly ask: readonly EntitlementRule[];\n}\n\n/**\n * The result of evaluating a single entitlement against a policy.\n */\nexport type EntitlementVerdict = \"granted\" | \"denied\" | \"ask\";\n\n/**\n * Per-entitlement result from policy evaluation.\n */\nexport interface EntitlementCheckResult {\n readonly verdict: EntitlementVerdict;\n readonly entitlement: TaskEntitlement;\n /** The rule that produced this verdict (for debugging/UI). Undefined when default-denied. */\n readonly matchedRule?: EntitlementRule;\n}\n\n/** An empty policy that denies everything (no grants, no denies, no asks). */\nexport const EMPTY_POLICY: EntitlementPolicy = Object.freeze({\n deny: Object.freeze([]),\n grant: Object.freeze([]),\n ask: Object.freeze([]),\n});\n\n// ========================================================================\n// Policy Evaluation\n// ========================================================================\n\n/**\n * Check if a rule covers a required entitlement.\n * Uses the same hierarchy and resource matching as grants:\n * - Rule ID must cover the entitlement ID (via `entitlementCovers`)\n * - Rule resources must cover the entitlement resources (via `grantCoversResources`)\n */\nfunction ruleCovers(rule: EntitlementRule, required: TaskEntitlement): boolean {\n if (!entitlementCovers(rule.id, required.id)) return false;\n return grantCoversResources(rule as EntitlementGrant, required);\n}\n\n/**\n * Evaluates a policy against a set of required entitlements.\n *\n * For each required entitlement (skipping optional ones):\n * 1. If any deny rule matches → `\"denied\"`\n * 2. If any grant rule matches → `\"granted\"`\n * 3. If any ask rule matches → `\"ask\"`\n * 4. Otherwise → `\"denied\"` (default deny)\n *\n * This is a pure function with no side effects.\n */\nexport function evaluatePolicy(\n policy: EntitlementPolicy,\n required: TaskEntitlements\n): readonly EntitlementCheckResult[] {\n const results: EntitlementCheckResult[] = [];\n\n for (const entitlement of required.entitlements) {\n if (entitlement.optional) continue;\n\n // 1. Check deny rules first\n const denyMatch = policy.deny.find((rule) => ruleCovers(rule, entitlement));\n if (denyMatch) {\n results.push({ verdict: \"denied\", entitlement, matchedRule: denyMatch });\n continue;\n }\n\n // 2. Check grant rules\n const grantMatch = policy.grant.find((rule) => ruleCovers(rule, entitlement));\n if (grantMatch) {\n results.push({ verdict: \"granted\", entitlement, matchedRule: grantMatch });\n continue;\n }\n\n // 3. Check ask rules\n const askMatch = policy.ask.find((rule) => ruleCovers(rule, entitlement));\n if (askMatch) {\n results.push({ verdict: \"ask\", entitlement, matchedRule: askMatch });\n continue;\n }\n\n // 4. Default deny\n results.push({ verdict: \"denied\", entitlement });\n }\n\n return results;\n}\n\n/**\n * Pure single-entitlement check. Convenience wrapper around `evaluatePolicy`\n * for callers that want the `can(action, resource)` style verdict in one call.\n *\n * Returns the per-entitlement check result with `verdict` (`\"granted\"`, `\"denied\"`,\n * or `\"ask\"`) and the `matchedRule` that produced it. No side effects — no\n * resolver is invoked even for `\"ask\"` verdicts; the caller decides how to\n * handle that.\n */\nexport function can(\n policy: EntitlementPolicy,\n id: EntitlementId,\n resources?: readonly string[]\n): EntitlementCheckResult {\n const required: TaskEntitlement = resources !== undefined ? { id, resources } : { id };\n // evaluatePolicy skips optional entitlements; we always pass a non-optional one.\n const [result] = evaluatePolicy(policy, { entitlements: [required] });\n return result;\n}\n",
24
24
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createServiceToken } from \"@workglow/util\";\nimport type { TaskEntitlement } from \"./TaskEntitlements\";\nimport type { TaskIdType } from \"./TaskTypes\";\n\n// ========================================================================\n// Resolver Types\n// ========================================================================\n\n/**\n * A request to the resolver for a user decision on an entitlement.\n */\nexport interface EntitlementAskRequest {\n /** The entitlement that needs a decision */\n readonly entitlement: TaskEntitlement;\n /** The task type requesting the entitlement */\n readonly taskType: string;\n /** The task instance ID requesting the entitlement */\n readonly taskId: TaskIdType;\n}\n\n/**\n * A user's answer to an entitlement ask.\n */\nexport type EntitlementAnswer = \"grant\" | \"deny\";\n\n// ========================================================================\n// Resolver Interface\n// ========================================================================\n\n/**\n * Pluggable interface for handling \"ask\" entitlement verdicts.\n *\n * The resolver is responsible for:\n * - Checking if a saved answer exists (`lookup`)\n * - Prompting the user for a decision (`prompt`)\n * - Persisting the user's answer for future lookups (`save`)\n *\n * Implementations vary by environment:\n * - Builder app: shows a dialog, persists answers per-project\n * - CLI: prints to terminal, saves in config\n * - Tests: use PERMISSIVE_RESOLVER or DENY_ALL_RESOLVER\n */\nexport interface IEntitlementResolver {\n /** Check if there's a saved answer for this ask. Returns undefined if not saved. */\n lookup(request: EntitlementAskRequest): EntitlementAnswer | undefined;\n /** Prompt the user and return their answer. May block on UI. */\n prompt(request: EntitlementAskRequest): Promise<EntitlementAnswer>;\n /** Save a user's answer for future lookups. */\n save(request: EntitlementAskRequest, answer: EntitlementAnswer): void;\n}\n\n// ========================================================================\n// Built-in Resolvers\n// ========================================================================\n\n/** Grants all asks without prompting. Useful for tests and permissive environments. */\nexport const PERMISSIVE_RESOLVER: IEntitlementResolver = {\n lookup: () => \"grant\",\n prompt: async () => \"grant\",\n save: () => {},\n};\n\n/** Denies all asks without prompting. Useful for locked-down environments. */\nexport const DENY_ALL_RESOLVER: IEntitlementResolver = {\n lookup: () => \"deny\",\n prompt: async () => \"deny\",\n save: () => {},\n};\n\n// ========================================================================\n// Service Token\n// ========================================================================\n\n/** Service token for registering an entitlement resolver in the ServiceRegistry */\nexport const ENTITLEMENT_RESOLVER = createServiceToken<IEntitlementResolver>(\n \"workglow.entitlementResolver\"\n);\n",
25
25
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { DataPortSchema, JsonSchema } from \"@workglow/util/schema\";\n\n/**\n * Stream mode determines how a task's streaming output is interpreted:\n * - `none`: No streaming (default). `execute()` returns `Promise<Output>`.\n * - `append`: Each chunk is a delta (e.g., a new token).\n * - `replace`: Each chunk is a corrected/revised snapshot of the complete output so far.\n * - `object`: Each chunk is a progressively more complete partial object snapshot.\n * - `mixed`: Multiple ports use different stream modes (e.g., append + object).\n *\n * Declared per-port via the `x-stream` schema extension property.\n * Absent `x-stream` = `\"none\"`.\n */\nexport type StreamMode = \"none\" | \"append\" | \"replace\" | \"object\" | \"mixed\";\n\n/**\n * Append mode: delta chunk (consumer accumulates).\n * `port` identifies which output port this delta belongs to.\n */\nexport type StreamTextDelta = {\n type: \"text-delta\";\n port: string;\n textDelta: string;\n};\n\n/**\n * Object delta for structured/object streaming.\n * `port` identifies which output port this delta belongs to.\n *\n * - **Non-array** (e.g. structured generation): each `objectDelta` is a\n * progressively more complete partial object snapshot. Consumers should\n * replace (not merge) their state with the latest delta.\n * - **Array** (e.g. tool calls): each `objectDelta` is a single-element\n * array containing one item to upsert by `id` into the accumulated array.\n */\nexport type StreamObjectDelta = {\n type: \"object-delta\";\n port: string;\n objectDelta: Record<string, unknown> | unknown[];\n};\n\n/**\n * Replace mode: full snapshot chunk (replaces previous state).\n */\nexport type StreamSnapshot<Output = Record<string, any>> = {\n type: \"snapshot\";\n data: Output;\n};\n\n/**\n * Signals that the stream has finished. In append mode, the runner\n * accumulates text-delta chunks into the append port (determined by\n * the output schema's `x-stream: \"append\"` annotation); `data` may\n * carry additional fields (merged into the final output).\n * In replace mode, `data` contains the final output.\n */\nexport type StreamFinish<Output = Record<string, any>> = {\n type: \"finish\";\n data: Output;\n};\n\n/**\n * Signals that the stream encountered an error.\n */\nexport type StreamError = {\n type: \"error\";\n error: Error;\n};\n\n/**\n * Phase / status event yielded by a streaming source to signal a named\n * phase transition (e.g. \"Preparing\", \"Generating\", \"Tool: search\").\n *\n * Carries an optional `progress` percentage for phases where progress\n * is measurable (e.g. \"Loading model\" with fractional percent), or\n * absent for indeterminate phases.\n *\n * Phase events are metadata, not data:\n * - They are emitted on `stream_chunk` for observability.\n * - They are NOT accumulated into dataflow edges.\n * - They are NOT included in the `finish` payload.\n * - The TaskRunner translates each phase event into a single\n * `progress` event with the phase's `progress` and `message`.\n * - They do NOT flip the task status to STREAMING; only data events\n * (`text-delta` / `object-delta` / `snapshot`) do.\n */\nexport type StreamPhase = {\n type: \"phase\";\n message: string;\n progress: number | undefined;\n};\n\n/**\n * Discriminated union of all stream event types.\n * Used as the element type for `AsyncIterable<StreamEvent>` streams\n * flowing through the DAG.\n */\nexport type StreamEvent<Output = Record<string, any>> =\n | StreamTextDelta\n | StreamObjectDelta\n | StreamSnapshot<Output>\n | StreamFinish<Output>\n | StreamError\n | StreamPhase;\n\n// ========================================================================\n// Port-level stream helpers\n// ========================================================================\n\n/**\n * Reads the `x-stream` value from a specific port property in a DataPortSchema.\n * Returns `\"none\"` when the property or the `x-stream` annotation is absent.\n *\n * @param schema - The task's input or output DataPortSchema\n * @param portId - The property name (port ID) to inspect\n * @returns The StreamMode declared on that port\n */\nexport function getPortStreamMode(schema: DataPortSchema | JsonSchema, portId: string): StreamMode {\n if (typeof schema === \"boolean\") return \"none\";\n const prop = (schema.properties as Record<string, any>)?.[portId];\n if (!prop || typeof prop === \"boolean\") return \"none\";\n const xStream = prop[\"x-stream\"];\n if (xStream === \"append\" || xStream === \"replace\" || xStream === \"object\") return xStream;\n return \"none\";\n}\n\n/**\n * Returns all ports that declare an `x-stream` annotation, along with their mode.\n *\n * @param schema - The task's output (or input) DataPortSchema\n * @returns Array of `{ port, mode }` for every annotated port\n */\nexport function getStreamingPorts(\n schema: DataPortSchema\n): Array<{ port: string; mode: StreamMode }> {\n if (typeof schema === \"boolean\") return [];\n const props = schema.properties;\n if (!props) return [];\n\n const result: Array<{ port: string; mode: StreamMode }> = [];\n for (const [name, prop] of Object.entries(props)) {\n if (!prop || typeof prop === \"boolean\") continue;\n const xStream = (prop as any)[\"x-stream\"];\n if (xStream === \"append\" || xStream === \"replace\" || xStream === \"object\") {\n result.push({ port: name, mode: xStream });\n }\n }\n return result;\n}\n\n/**\n * Returns the dominant output stream mode for a task by inspecting its output schema.\n * Returns `\"mixed\"` when ports use different modes (e.g., append + object).\n * Returns `\"none\"` if no output port declares streaming.\n */\nexport function getOutputStreamMode(outputSchema: DataPortSchema): StreamMode {\n const ports = getStreamingPorts(outputSchema);\n if (ports.length === 0) return \"none\";\n\n const mode = ports[0].mode;\n for (let i = 1; i < ports.length; i++) {\n if (ports[i].mode !== mode) {\n return \"mixed\";\n }\n }\n return mode;\n}\n\n/**\n * Determines whether a task supports streaming by checking if any output port\n * has an `x-stream` annotation AND the task implements `executeStream()`.\n *\n * @param task - The task to inspect (must have `outputSchema()` and optionally `executeStream`)\n * @returns true if the task can produce streaming output\n */\nexport function isTaskStreamable(task: {\n outputSchema(): DataPortSchema;\n executeStream?: (...args: any[]) => any;\n}): boolean {\n if (typeof task.executeStream !== \"function\") return false;\n return getOutputStreamMode(task.outputSchema()) !== \"none\";\n}\n\n/**\n * Returns the port ID (property name) of the first output port that declares\n * `x-stream: \"append\"`, or `undefined` if no such port exists.\n *\n * @param schema - The task's output DataPortSchema\n * @returns The port name with append streaming, or undefined\n */\nexport function getAppendPortId(schema: DataPortSchema): string | undefined {\n if (typeof schema === \"boolean\") return undefined;\n const props = schema.properties;\n if (!props) return undefined;\n\n for (const [name, prop] of Object.entries(props)) {\n if (!prop || typeof prop === \"boolean\") continue;\n if ((prop as any)[\"x-stream\"] === \"append\") return name;\n }\n return undefined;\n}\n\n/**\n * Determines whether a dataflow edge needs to accumulate stream events\n * into a materialized value for the target port.\n *\n * Accumulation is needed when:\n * - The source output port declares streaming (`x-stream` is set)\n * - AND the target input port does NOT accept the same stream mode\n *\n * @param sourceSchema - Output schema of the source task\n * @param sourcePort - Port ID on the source task\n * @param targetSchema - Input schema of the target task\n * @param targetPort - Port ID on the target task\n * @returns true if the edge should accumulate; false if stream can pass through\n */\nexport function edgeNeedsAccumulation(\n sourceSchema: DataPortSchema,\n sourcePort: string,\n targetSchema: DataPortSchema,\n targetPort: string\n): boolean {\n const sourceMode = getPortStreamMode(sourceSchema, sourcePort);\n if (sourceMode === \"none\") return false;\n const targetMode = getPortStreamMode(targetSchema, targetPort);\n return sourceMode !== targetMode;\n}\n\n/**\n * Returns the port ID (property name) of the first output port that declares\n * `x-stream: \"object\"`, or `undefined` if no such port exists.\n *\n * @param schema - The task's output DataPortSchema\n * @returns The port name with object streaming, or undefined\n */\nexport function getObjectPortId(schema: DataPortSchema): string | undefined {\n if (typeof schema === \"boolean\") return undefined;\n const props = schema.properties;\n if (!props) return undefined;\n\n for (const [name, prop] of Object.entries(props)) {\n if (!prop || typeof prop === \"boolean\") continue;\n if ((prop as any)[\"x-stream\"] === \"object\") return name;\n }\n return undefined;\n}\n\n/**\n * Returns a map of port names to their JSON Schemas for every output port\n * that declares `\"x-structured-output\": true`.\n *\n * @param schema - The task's output DataPortSchema\n * @returns Map of port-name → JSON Schema for structured output ports\n */\nexport function getStructuredOutputSchemas(schema: DataPortSchema): Map<string, JsonSchema> {\n const result = new Map<string, JsonSchema>();\n if (typeof schema === \"boolean\") return result;\n const props = schema.properties;\n if (!props) return result;\n\n for (const [name, prop] of Object.entries(props)) {\n if (!prop || typeof prop === \"boolean\") continue;\n if ((prop as any)[\"x-structured-output\"] === true) {\n result.set(name, prop as JsonSchema);\n }\n }\n return result;\n}\n\n/**\n * Returns true if the schema has any output port with `\"x-structured-output\": true`.\n */\nexport function hasStructuredOutput(schema: DataPortSchema): boolean {\n return getStructuredOutputSchemas(schema).size > 0;\n}\n",
26
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ServiceRegistry } from \"@workglow/util\";\nimport { deepEqual, EventEmitter, getLogger, uuid4 } from \"@workglow/util\";\nimport type { DataPortSchema, SchemaNode } from \"@workglow/util/schema\";\nimport { compileSchema } from \"@workglow/util/schema\";\nimport { type CachePolicy, DEFAULT_CACHE_POLICY } from \"../cache/CachePolicy\";\nimport { DATAFLOW_ALL_PORTS } from \"../task-graph/Dataflow\";\nimport { TaskGraph } from \"../task-graph/TaskGraph\";\nimport type { IExecuteContext, IExecutePreviewContext, IRunConfig, ITask } from \"./ITask\";\nimport { EMPTY_ENTITLEMENTS, type TaskEntitlements } from \"./TaskEntitlements\";\nimport {\n TaskAbortedError,\n TaskConfigurationError,\n TaskError,\n TaskInvalidInputError,\n TaskSerializationError,\n} from \"./TaskError\";\nimport type {\n TaskEventListener,\n TaskEventListeners,\n TaskEventParameters,\n TaskEvents,\n} from \"./TaskEvents\";\nimport type { JsonTaskItem, TaskGraphItemJson, TaskGraphJsonOptions } from \"./TaskJSON\";\nimport { TaskRunner } from \"./TaskRunner\";\nimport type { TaskConfig, TaskIdType, TaskInput, TaskOutput, TaskTypeName } from \"./TaskTypes\";\nimport { TaskConfigSchema, TaskStatus } from \"./TaskTypes\";\n\n/**\n * Base class for all tasks that implements the ITask interface.\n * This abstract class provides common functionality for both simple and compound tasks.\n *\n * The Task class is responsible for:\n * 1. Defining what a task is (inputs, outputs, configuration)\n * 2. Providing the execution logic (via execute and executePreview)\n * 3. Delegating the running logic to a TaskRunner\n */\nexport class Task<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig = TaskConfig,\n> implements ITask<Input, Output, Config> {\n // ========================================================================\n // Static properties - should be overridden by subclasses\n // ========================================================================\n\n /**\n * The type identifier for this task class\n */\n public static type: TaskTypeName = \"Task\";\n\n /**\n * The category this task belongs to\n */\n public static category: string = \"Hidden\";\n\n /**\n * The title of this task\n */\n public static title: string = \"\";\n\n /**\n * The description of this task\n */\n public static description: string = \"\";\n\n /**\n * Whether this task has side effects\n */\n public static cacheable: boolean = true;\n\n /**\n * Version number for this task class, used to bust the output cache when the task's\n * implementation changes. Increment when a change would produce different outputs for\n * the same inputs. Combined with ancestor versions via getCacheVersion().\n * Subclasses should override this when their execute() logic changes in a\n * backwards-incompatible way (different output for same input).\n */\n public static version: number = 1;\n\n /**\n * Default cache policy for this task class. Used by `getCachePolicy()` when the\n * task does not override the method. Subclasses with side effects should set\n * `{ kind: \"none\" }`; tasks producing non-deterministic-but-expensive outputs\n * (e.g., image generation without a seed) should set `{ kind: \"private\" }`.\n */\n public static cachePolicy: CachePolicy = { kind: \"deterministic\" };\n\n /**\n * Whether this task has dynamic input/output schemas that can change at runtime.\n * Tasks with dynamic schemas should override instance methods for inputSchema() and/or outputSchema()\n * and emit 'schemaChange' events when their schemas change.\n */\n public static hasDynamicSchemas: boolean = false;\n\n /**\n * When true, dynamically added input ports (via the universal \"Add Input\" handle in the builder)\n * are mirrored as output ports of the same name and type. Set this on pass-through tasks that\n * forward their additional inputs to their outputs unchanged.\n */\n public static passthroughInputsToOutputs: boolean = false;\n\n /**\n * When true, this task can be saved as a custom task with a preset configuration.\n * Tasks that have meaningful user-facing config options beyond the base fields should set this.\n */\n public static customizable: boolean = false;\n\n /**\n * When true, this task defines the graph's output. The graph runner will\n * collect results only from tasks with this flag when they exist among the\n * leaf nodes; otherwise it falls back to collecting from all leaves.\n */\n public static isGraphOutput: boolean = false;\n\n /**\n * When true, this task does no real work — it only forwards inputs to outputs\n * (e.g. `InputTask`, `OutputTask`). Such tasks are excluded from graph-level\n * progress averaging because they jump from 0% to 100% and would dilute the bar.\n */\n public static isPassthrough: boolean = false;\n\n /**\n * Whether this task has dynamic entitlements that can change at runtime.\n * Tasks with dynamic entitlements should override the instance entitlements() method\n * and emit 'entitlementChange' events when their entitlements change.\n */\n public static hasDynamicEntitlements: boolean = false;\n\n /**\n * Tracks task types that have already received the legacy `cacheable = false` deprecation\n * warning, so the warning fires only once per task type across the process lifetime.\n */\n private static __cacheableDeprecationWarned = new Set<string>();\n\n /**\n * Entitlements required by this task class.\n * Subclasses override to declare their permission requirements.\n */\n public static entitlements(): TaskEntitlements {\n return EMPTY_ENTITLEMENTS;\n }\n\n /**\n * Input schema for this task\n */\n public static inputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n }\n\n /**\n * Output schema for this task\n */\n public static outputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n }\n\n /**\n * Config schema for this task. Subclasses that add config properties MUST override this\n * and spread TaskConfigSchema[\"properties\"] into their own properties object.\n */\n public static configSchema(): DataPortSchema {\n return TaskConfigSchema;\n }\n\n // ========================================================================\n // Task Execution Methods - Core logic provided by subclasses\n // ========================================================================\n\n /**\n * The actual task execution logic for subclasses to override\n *\n * @param input The input to the task\n * @param config The configuration for the task\n * @throws TaskError if the task fails\n * @returns The output of the task or undefined if no changes\n */\n public async execute(_input: Input, context: IExecuteContext): Promise<Output | undefined> {\n if (context.signal?.aborted) {\n throw new TaskAbortedError(\"Task aborted\");\n }\n return undefined;\n }\n\n /**\n * Default implementation of executePreview that does nothing.\n * Subclasses should override this to provide actual preview functionality.\n *\n * This is generally for UI updating, and should be lightweight.\n * @param input The input to the task\n * @returns The preview output, or undefined for \"no preview update\"\n */\n public async executePreview(\n _input: Input,\n _context: IExecutePreviewContext\n ): Promise<Output | undefined> {\n return undefined;\n }\n\n // ========================================================================\n // TaskRunner delegation - Executes and manages the task\n // ========================================================================\n\n /**\n * The TaskGraph that owns this task, set by {@link TaskGraph#addTask}.\n * Used by {@link TaskRunner#runPreviewStream} to locate upstream tasks\n * and subscribe to their streaming events.\n */\n public parentGraph?: TaskGraph;\n\n /**\n * Task runner for handling the task execution\n */\n protected _runner: TaskRunner<Input, Output, Config> | undefined;\n\n /**\n * Gets the task runner instance\n * Creates a new one if it doesn't exist\n */\n public get runner(): TaskRunner<Input, Output, Config> {\n if (!this._runner) {\n this._runner = new TaskRunner<Input, Output, Config>(this);\n }\n return this._runner;\n }\n\n /**\n * Runs the task and returns the output\n * Delegates to the task runner\n *\n * @param overrides Optional input overrides\n * @param runConfig Optional per-call run configuration (merged with task's runConfig)\n * @throws TaskError if the task fails\n * @returns The task output\n */\n async run(overrides: Partial<Input> = {}, runConfig: Partial<IRunConfig> = {}): Promise<Output> {\n return this.runner.run(overrides, { ...this.runConfig, ...runConfig });\n }\n\n /**\n * Runs the task in preview mode\n * Delegates to the task runner\n *\n * @param overrides Optional input overrides\n * @returns The task output\n */\n public async runPreview(overrides: Partial<Input> = {}): Promise<Output> {\n return this.runner.runPreview(overrides);\n }\n\n /**\n * Aborts task execution\n * Delegates to the task runner\n */\n public abort(): void {\n this.runner.abort();\n }\n\n /**\n * Disables task execution\n * Delegates to the task runner\n */\n public async disable(): Promise<void> {\n await this.runner.disable();\n }\n\n // ========================================================================\n // Static to Instance conversion methods\n // ========================================================================\n\n /**\n * Gets input schema for this task\n */\n public inputSchema(): DataPortSchema {\n return (this.constructor as typeof Task).inputSchema();\n }\n\n /**\n * Gets output schema for this task\n */\n public outputSchema(): DataPortSchema {\n return (this.constructor as typeof Task).outputSchema();\n }\n\n /**\n * Gets config schema for this task\n */\n public configSchema(): DataPortSchema {\n return (this.constructor as typeof Task).configSchema();\n }\n\n /**\n * Gets entitlements for this task instance.\n * For tasks with dynamic entitlements, override this to compute based on config/state.\n */\n public entitlements(): TaskEntitlements {\n return (this.constructor as typeof Task).entitlements();\n }\n\n /**\n * Emits an entitlementChange event when the task's required entitlements change.\n * Call this from tasks with dynamic entitlements when their configuration changes\n * in a way that affects their entitlements.\n */\n protected emitEntitlementChange(entitlements?: TaskEntitlements): void {\n const final = entitlements ?? this.entitlements();\n this.emit(\"entitlementChange\", final);\n }\n\n public get type(): TaskTypeName {\n return (this.constructor as typeof Task).type;\n }\n\n public get category(): string {\n return (this.constructor as typeof Task).category;\n }\n\n public get title(): string {\n return this.config?.title ?? (this.constructor as typeof Task).title;\n }\n\n public get description(): string {\n return this.config?.description ?? (this.constructor as typeof Task).description;\n }\n\n /**\n * Whether this task instance is currently cacheable. Reads `runConfig.cacheable`\n * and `config.cacheable` first (per-instance overrides for back-compat), then\n * derives from `getCachePolicy(runInputData)`.\n *\n * Note: for tasks that override `getCachePolicy(inputs)` with input-dependent\n * logic (e.g., `AiImageOutputTask` returns `private` when seed is absent), the\n * value of `task.cacheable` can change as `runInputData` changes. Prefer calling\n * `getCachePolicy(inputs)` directly when you have explicit inputs.\n */\n public get cacheable(): boolean {\n if (this.runConfig?.cacheable !== undefined) return this.runConfig.cacheable;\n if (this.config?.cacheable !== undefined) return this.config.cacheable;\n return this.getCachePolicy((this.runInputData ?? {}) as unknown as Input).kind !== \"none\";\n }\n\n /**\n * Returns a dot-separated string of version numbers collected from each class in the\n * prototype chain (leaf first) that declares its own `version` static property.\n * Every class that owns a `version` contributes one segment, including the base Task\n * class. Returns \"1\" when called directly on a Task instance with no subclassing\n * (Task.version === 1 is the sole contributor).\n *\n * Use this as the cache-key version component: when any ancestor's version changes,\n * the combined string changes and the cached output is invalidated.\n */\n public getCacheVersion(): string {\n const versions: number[] = [];\n let ctor: unknown = this.constructor;\n while (ctor && ctor !== Function.prototype) {\n if (\n Object.prototype.hasOwnProperty.call(ctor, \"version\") &&\n typeof (ctor as { version?: unknown }).version === \"number\"\n ) {\n versions.push((ctor as { version: number }).version);\n }\n ctor = Object.getPrototypeOf(ctor as object);\n }\n if (versions.length === 0) versions.push(1);\n return versions.join(\".\");\n }\n\n /**\n * Returns the effective cache policy for this task given its inputs. Default\n * implementation honors the legacy `cacheable=false` static (maps to\n * `{ kind: \"none\" }`) for back-compat with a one-time deprecation warning,\n * otherwise returns the class's static `cachePolicy`. Override for dynamic\n * decisions (e.g., AiImageOutputTask returns `private` when seed is absent).\n */\n public getCachePolicy(_inputs: Input): CachePolicy {\n const ctor = this.constructor as typeof Task;\n const hasLegacyOverride =\n Object.prototype.hasOwnProperty.call(ctor, \"cacheable\") && (ctor as any).cacheable === false;\n const hasPolicyOverride = Object.prototype.hasOwnProperty.call(ctor, \"cachePolicy\");\n\n if (hasLegacyOverride && !hasPolicyOverride) {\n if (!Task.__cacheableDeprecationWarned.has(ctor.type)) {\n Task.__cacheableDeprecationWarned.add(ctor.type);\n getLogger().warn(\n `Task \"${ctor.type}\": static \\`cacheable = false\\` is deprecated. ` +\n `Use \\`static cachePolicy: CachePolicy = { kind: \"none\" }\\` instead.`\n );\n }\n return { kind: \"none\" };\n }\n if (this.runConfig?.cacheable === false || this.config?.cacheable === false)\n return { kind: \"none\" }; // per-instance shim, no warning\n return ctor.cachePolicy ?? DEFAULT_CACHE_POLICY;\n }\n\n // ========================================================================\n // Instance properties using @template types\n // ========================================================================\n\n /**\n * Default input values for this task.\n * If no overrides at run time, then this would be equal to the input.\n * resetInputData() will reset inputs to these defaults.\n */\n defaults: Record<string, any>;\n\n /**\n * The input to the task at the time of the task run.\n * This takes defaults from construction time and overrides from run time.\n * It is the input that created the output.\n */\n runInputData: Record<string, any> = {};\n\n /**\n * The output of the task at the time of the task run.\n * This is the result of the task execution.\n */\n runOutputData: Record<string, any> = {};\n\n // ========================================================================\n // Task state properties\n // ========================================================================\n\n /**\n * The configuration of the task\n */\n config: Config;\n\n /**\n * Frozen snapshot of config at construction time, used by toJSON and\n * as the resolution source for re-runs (so fresh lookups use original IDs).\n */\n readonly originalConfig: Readonly<Record<string, unknown>> | undefined;\n\n /**\n * Task id from config (read-only).\n */\n public get id(): unknown {\n return this.config.id;\n }\n\n /**\n * Runtime configuration (not serialized with the task).\n * Set via the constructor's third argument or mutated by the graph runner.\n */\n runConfig: Partial<IRunConfig> = {};\n\n /**\n * Current status of the task\n */\n status: TaskStatus = TaskStatus.PENDING;\n\n /**\n * Current progress, 0..100 for measured progress, `undefined` for\n * indeterminate. Initialized to 0 (not started).\n */\n progress: number | undefined = 0;\n\n /**\n * When the task was created\n */\n createdAt: Date = new Date();\n\n /**\n * When the task started execution\n */\n startedAt?: Date;\n\n /**\n * When the task completed execution\n */\n completedAt?: Date;\n\n /**\n * Error that occurred during task execution, if any\n */\n error?: TaskError;\n\n /**\n * Event emitter for task lifecycle events\n */\n public get events(): EventEmitter<TaskEventListeners> {\n if (!this._events) {\n this._events = new EventEmitter<TaskEventListeners>();\n }\n return this._events;\n }\n protected _events: EventEmitter<TaskEventListeners> | undefined;\n\n /**\n * Creates a new task instance\n *\n * @param config Configuration for the task (includes defaults for input values)\n * @param runConfig Runtime configuration for the task\n */\n constructor(config: NoInfer<Partial<Config>> = {}, runConfig: NoInfer<Partial<IRunConfig>> = {}) {\n // Extract caller-provided defaults from config\n const { defaults: callerDefaultInputs, ...restConfig } = config as Partial<Config> & {\n defaults?: Partial<Input>;\n };\n\n // Initialize input defaults\n const inputDefaults = this.getDefaultInputsFromStaticInputDefinitions();\n const mergedDefaults = Object.assign(inputDefaults, callerDefaultInputs ?? {});\n // Strip symbol properties (like [$JSONSchema]) before storing defaults\n this.defaults = this.stripSymbols(mergedDefaults) as Record<string, any>;\n this.resetInputData();\n\n // Setup configuration defaults (title comes from static class property as fallback)\n const title = (this.constructor as typeof Task).title || undefined;\n const baseConfig = Object.assign(\n {\n ...(title ? { title } : {}),\n },\n restConfig\n ) as Config;\n if (baseConfig.id === undefined) {\n (baseConfig as Record<string, unknown>).id = uuid4();\n }\n this.config = this.validateAndApplyConfigDefaults(baseConfig);\n try {\n this.originalConfig = Object.freeze(structuredClone(this.config) as Record<string, unknown>);\n } catch {\n // Config contains non-cloneable values (e.g. functions).\n // canSerializeConfig() should return false for such tasks.\n this.originalConfig = undefined;\n }\n\n // Store runtime configuration\n this.runConfig = runConfig;\n\n // Reject input schemas that declare a `__cv` port: this name is reserved by\n // CacheCoordinator.buildKey for the cache version sentinel. Allowing a task\n // to declare it would silently shadow cache versioning and cause cache\n // collisions across versions. `inputSchema()` can legally return a boolean\n // (see addInput/setInput handling); skip the check in that case.\n const inputSchema = (this.constructor as typeof Task).inputSchema();\n if (\n inputSchema &&\n typeof inputSchema !== \"boolean\" &&\n inputSchema.properties &&\n Object.prototype.hasOwnProperty.call(inputSchema.properties, \"__cv\")\n ) {\n throw new TaskConfigurationError(\n `Task \"${(this.constructor as typeof Task).type}\": input port name '__cv' is reserved ` +\n `for cache versioning. Rename the port to avoid collision with the cache key sentinel.`\n );\n }\n }\n\n // ========================================================================\n // Input/Output handling\n // ========================================================================\n\n /**\n * Gets default input values from input schema\n */\n getDefaultInputsFromStaticInputDefinitions(): Partial<Input> {\n const schema = this.inputSchema();\n if (typeof schema === \"boolean\") {\n return {};\n }\n try {\n const compiledSchema = this.getInputSchemaNode();\n const defaultData = compiledSchema.getData(undefined, {\n addOptionalProps: true,\n removeInvalidData: false,\n useTypeDefaults: false,\n });\n return (defaultData || {}) as Partial<Input>;\n } catch (error) {\n console.warn(\n `Failed to compile input schema for ${this.type}, falling back to manual extraction:`,\n error\n );\n // Fallback to manual extraction if compilation fails\n return Object.entries(schema.properties || {}).reduce<Record<string, any>>(\n (acc, [id, prop]) => {\n const defaultValue = (prop as any).default;\n if (defaultValue !== undefined) {\n acc[id] = defaultValue;\n }\n return acc;\n },\n {}\n ) as Partial<Input>;\n }\n }\n\n /**\n * Resets input data to defaults\n */\n public resetInputData(): void {\n this.runInputData = this.smartClone(this.defaults) as Record<string, any>;\n }\n\n /**\n * Smart clone that deep-clones plain objects and arrays while preserving\n * class instances (objects with non-Object prototype) by reference.\n * Detects and throws an error on circular references.\n *\n * This is necessary because:\n * - structuredClone cannot clone class instances (methods are lost)\n * - JSON.parse/stringify loses methods and fails on circular references\n * - Class instances like repositories should be passed by reference\n *\n * This breaks the idea of everything being json serializable, but it allows\n * more efficient use cases. Do be careful with this though! Use sparingly.\n *\n * @param obj The object to clone\n * @param visited Set of objects in the current cloning path (for circular reference detection)\n * @returns A cloned object with class instances preserved by reference\n */\n private smartClone(obj: any, visited: WeakSet<object> = new WeakSet()): any {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n // Primitives (string, number, boolean, symbol, bigint) are returned as-is\n if (typeof obj !== \"object\") {\n return obj;\n }\n\n // Check for circular references\n if (visited.has(obj)) {\n throw new TaskConfigurationError(\n \"Circular reference detected in input data. \" +\n \"Cannot clone objects with circular references.\"\n );\n }\n\n // Clone TypedArrays (Float32Array, Int8Array, etc.) to avoid shared-mutation\n // between defaults and runInputData, while preserving DataView by reference.\n if (ArrayBuffer.isView(obj)) {\n // Preserve DataView instances by reference (constructor signature differs)\n if (typeof DataView !== \"undefined\" && obj instanceof DataView) {\n return obj;\n }\n // For TypedArrays, create a new instance with the same data\n const typedArray = obj as any;\n return new (typedArray.constructor as any)(typedArray);\n }\n\n // Preserve class instances (objects with non-Object/non-Array prototype)\n // This includes repository instances, custom classes, etc.\n if (!Array.isArray(obj)) {\n const proto = Object.getPrototypeOf(obj);\n if (proto !== Object.prototype && proto !== null) {\n return obj; // Pass by reference\n }\n }\n\n // Add object to visited set before recursing\n visited.add(obj);\n\n try {\n // Deep clone arrays, preserving class instances within\n if (Array.isArray(obj)) {\n return obj.map((item) => this.smartClone(item, visited));\n }\n\n // Deep clone plain objects\n const result: Record<string, any> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = this.smartClone(obj[key], visited);\n }\n }\n return result;\n } finally {\n // Remove from visited set after processing to allow the same object\n // in different branches (non-circular references)\n visited.delete(obj);\n }\n }\n\n /**\n * Sets the default input values for the task\n *\n * @param defaults The default input values to set\n */\n public setDefaults(defaults: Partial<Input>): void {\n // Strip symbol properties (like [$JSONSchema]) before storing defaults\n this.defaults = this.stripSymbols(defaults) as Partial<Input>;\n }\n\n /**\n * Sets input values for the task\n *\n * @param input Input values to set\n */\n public setInput(input: Partial<Input>): void {\n const schema = this.inputSchema();\n if (typeof schema === \"boolean\") {\n if (schema === true) {\n for (const [inputId, value] of Object.entries(input)) {\n if (value !== undefined) {\n this.runInputData[inputId] = value;\n }\n }\n }\n return;\n }\n const properties = schema.properties || {};\n\n // Copy explicitly defined properties\n for (const [inputId, prop] of Object.entries(properties)) {\n if (input[inputId] !== undefined) {\n this.runInputData[inputId] = input[inputId];\n } else if (\n this.runInputData[inputId] === undefined &&\n (prop as { default?: unknown }).default !== undefined\n ) {\n this.runInputData[inputId] = prop.default;\n }\n }\n\n // If additionalProperties is true, also copy any additional input properties\n if (schema.additionalProperties) {\n for (const [inputId, value] of Object.entries(input)) {\n if (!(inputId in properties)) {\n this.runInputData[inputId] = value;\n }\n }\n }\n }\n\n /**\n * Adds/merges input data during graph execution.\n * Unlike {@link setInput}, this method:\n * - Detects changes using deep equality\n * - Accumulates array values (appends rather than replaces)\n * - Handles DATAFLOW_ALL_PORTS for pass-through\n * - Handles additionalProperties for dynamic schemas\n *\n * @param overrides The input data to merge\n * @returns true if any input data was changed, false otherwise\n */\n public addInput(overrides: Partial<Input> | undefined): boolean {\n if (!overrides) return false;\n\n let changed = false;\n const inputSchema = this.inputSchema();\n\n if (typeof inputSchema === \"boolean\") {\n if (inputSchema === false) {\n return false;\n }\n // Schema is `true` - accept any input\n for (const [key, value] of Object.entries(overrides)) {\n if (!deepEqual(this.runInputData[key], value)) {\n this.runInputData[key] = value;\n changed = true;\n }\n }\n return changed;\n }\n\n const properties = inputSchema.properties || {};\n\n for (const [inputId, prop] of Object.entries(properties)) {\n if (inputId === DATAFLOW_ALL_PORTS) {\n this.runInputData = { ...this.runInputData, ...overrides };\n changed = true;\n } else {\n if (overrides[inputId] === undefined) continue;\n const isArray =\n (prop as any)?.type === \"array\" ||\n ((prop as any)?.type === \"any\" &&\n (Array.isArray(overrides[inputId]) || Array.isArray(this.runInputData[inputId])));\n\n if (isArray) {\n const existingItems = Array.isArray(this.runInputData[inputId])\n ? this.runInputData[inputId]\n : this.runInputData[inputId] !== undefined\n ? [this.runInputData[inputId]]\n : [];\n const newitems = [...existingItems];\n\n const overrideItem = overrides[inputId];\n if (Array.isArray(overrideItem)) {\n newitems.push(...overrideItem);\n } else {\n newitems.push(overrideItem);\n }\n this.runInputData[inputId] = newitems;\n changed = true;\n } else {\n if (!deepEqual(this.runInputData[inputId], overrides[inputId])) {\n this.runInputData[inputId] = overrides[inputId];\n changed = true;\n }\n }\n }\n }\n\n // If additionalProperties is true, also accept any additional input properties\n if (inputSchema.additionalProperties) {\n for (const [inputId, value] of Object.entries(overrides)) {\n if (!(inputId in properties)) {\n if (!deepEqual(this.runInputData[inputId], value)) {\n this.runInputData[inputId] = value;\n changed = true;\n }\n }\n }\n }\n\n return changed;\n }\n\n /**\n * Stub for narrowing input. Override in subclasses for custom logic.\n * @param input The input to narrow\n * @param _registry Optional service registry for lookups\n * @returns The (possibly narrowed) input\n */\n public async narrowInput(\n input: Partial<Input>,\n _registry: ServiceRegistry\n ): Promise<Partial<Input>> {\n return input;\n }\n\n // ========================================================================\n // Event handling methods\n // ========================================================================\n\n /**\n * Subscribes to an event\n */\n public subscribe<Event extends TaskEvents>(\n name: Event,\n fn: TaskEventListener<Event>\n ): () => void {\n return this.events.subscribe(name, fn);\n }\n\n /**\n * Registers an event listener\n */\n public on<Event extends TaskEvents>(name: Event, fn: TaskEventListener<Event>): void {\n this.events.on(name, fn);\n }\n\n /**\n * Removes an event listener\n */\n public off<Event extends TaskEvents>(name: Event, fn: TaskEventListener<Event>): void {\n this.events.off(name, fn);\n }\n\n /**\n * Registers a one-time event listener\n */\n public once<Event extends TaskEvents>(name: Event, fn: TaskEventListener<Event>): void {\n this.events.once(name, fn);\n }\n\n /**\n * Returns a promise that resolves when the specified event is emitted\n */\n public waitOn<Event extends TaskEvents>(name: Event): Promise<TaskEventParameters<Event>> {\n return this.events.waitOn(name) as Promise<TaskEventParameters<Event>>;\n }\n\n /**\n * Emits an event\n */\n public emit<Event extends TaskEvents>(name: Event, ...args: TaskEventParameters<Event>): void {\n // Route through `events` so the emitter exists: `this._events?.emit` dropped progress when\n // nothing had accessed `task.events` yet (e.g. parent MapTask before CLI wired listeners).\n this.events.emit(name, ...args);\n }\n\n /**\n * Emits a schemaChange event when the task's input or output schema changes.\n * This should be called by tasks with dynamic schemas when their configuration\n * changes in a way that affects their schemas.\n *\n * @param inputSchema - The new input schema (optional, will use current schema if not provided)\n * @param outputSchema - The new output schema (optional, will use current schema if not provided)\n */\n protected emitSchemaChange(inputSchema?: DataPortSchema, outputSchema?: DataPortSchema): void {\n const finalInputSchema = inputSchema ?? this.inputSchema();\n const finalOutputSchema = outputSchema ?? this.outputSchema();\n this.emit(\"schemaChange\", finalInputSchema, finalOutputSchema);\n }\n\n // ========================================================================\n // Input validation methods\n // ========================================================================\n\n /**\n * Gets the compiled config schema node, or undefined if no configSchema is defined.\n *\n * The compiled schema is cached directly on the concrete class object (not in a shared\n * inherited Map) so that each subclass always uses its own configSchema() result.\n * A shared Map keyed only by type name can be poisoned if a different class computes\n * and caches the schema first — e.g., due to cross-package static-method resolution\n * inconsistencies in bundled outputs.\n */\n private static getConfigSchemaNode(): SchemaNode | undefined {\n const schema = this.configSchema();\n if (!schema) return undefined;\n // Use Object.hasOwn so each class gets its own entry rather than inheriting\n // from a parent class that already cached under the same key.\n if (!Object.hasOwn(this, \"__compiledConfigSchema\")) {\n try {\n const schemaNode =\n typeof schema === \"boolean\"\n ? compileSchema(schema ? {} : { not: {} })\n : compileSchema(schema);\n Object.defineProperty(this, \"__compiledConfigSchema\", {\n value: schemaNode,\n writable: true,\n configurable: true,\n enumerable: false,\n });\n } catch (error) {\n console.warn(`Failed to compile config schema for ${this.type}:`, error);\n return undefined;\n }\n }\n return (this as any).__compiledConfigSchema as SchemaNode;\n }\n\n /**\n * Validates config against configSchema.\n * Returns config as-is; throws on validation errors.\n * Returns config as-is if no configSchema is defined.\n */\n private validateAndApplyConfigDefaults(config: Config): Config {\n const ctor = this.constructor as typeof Task;\n const schemaNode = ctor.getConfigSchemaNode();\n if (!schemaNode) return config;\n\n const result = schemaNode.validate(config);\n if (!result.valid) {\n const errorMessages = result.errors.map((e) => {\n const path = e.data?.pointer || \"\";\n return `${e.message}${path ? ` (${path})` : \"\"}`;\n });\n throw new TaskConfigurationError(\n `[${ctor.name}] Configuration Error: ${errorMessages.join(\", \")}`\n );\n }\n\n return config;\n }\n\n protected static generateInputSchemaNode(schema: DataPortSchema) {\n if (typeof schema === \"boolean\") {\n if (schema === false) {\n return compileSchema({ not: {} });\n }\n return compileSchema({});\n }\n return compileSchema(schema);\n }\n\n /**\n * Gets the compiled input schema, cached per class (not in a shared inherited Map).\n * Uses Object.hasOwn so each subclass stores its own compiled schema and never\n * picks up a stale entry cached by a different class with the same type name.\n */\n protected static getInputSchemaNode(): SchemaNode {\n if (!Object.hasOwn(this, \"__compiledInputSchema\")) {\n const dataPortSchema = this.inputSchema();\n const schemaNode = this.generateInputSchemaNode(dataPortSchema);\n try {\n Object.defineProperty(this, \"__compiledInputSchema\", {\n value: schemaNode,\n writable: true,\n configurable: true,\n enumerable: false,\n });\n } catch (error) {\n // If compilation fails, fall back to accepting any object structure\n // This is a safety net for schemas that json-schema-library can't compile\n console.warn(\n `Failed to compile input schema for ${this.type}, falling back to permissive validation:`,\n error\n );\n Object.defineProperty(this, \"__compiledInputSchema\", {\n value: compileSchema({}),\n writable: true,\n configurable: true,\n enumerable: false,\n });\n }\n }\n return (this as any).__compiledInputSchema as SchemaNode;\n }\n\n protected getInputSchemaNode(): SchemaNode {\n return (this.constructor as typeof Task).getInputSchemaNode();\n }\n\n /**\n * Validates an input data object against the task's input schema\n */\n public async validateInput(input: Input): Promise<boolean> {\n if (typeof input !== \"object\" || input === null) {\n throw new TaskInvalidInputError(\"Input must be an object\");\n }\n const ctor = this.constructor as typeof Task;\n let schemaNode: SchemaNode;\n if (ctor.hasDynamicSchemas) {\n // Dynamic-schema tasks use instance inputSchema() (e.g. config.inputSchema), not the static fallback.\n // The cached getInputSchemaNode uses static inputSchema() which would reject valid instance-specific inputs.\n const instanceSchema = this.inputSchema();\n schemaNode = ctor.generateInputSchemaNode(instanceSchema);\n } else {\n schemaNode = this.getInputSchemaNode();\n }\n const result = schemaNode.validate(input);\n\n if (!result.valid) {\n const errorMessages = result.errors.map((e) => {\n const path = e.data.pointer || \"\";\n return `${e.message}${path ? ` (${path})` : \"\"}`;\n });\n const err = new TaskInvalidInputError(\n `Task \"${this.type}\" (${this.id}): Input ${JSON.stringify(Object.keys(input))} does not match schema: ${errorMessages.join(\", \")}`\n );\n err.taskType = this.type;\n err.taskId = this.id;\n throw err;\n }\n\n return true;\n }\n\n // ========================================================================\n // Serialization methods\n // ========================================================================\n\n /**\n * Strips symbol properties from an object to make it serializable\n * @param obj The object to strip symbols from\n * @returns A new object without symbol properties\n */\n private stripSymbols(obj: any): any {\n if (obj === null || obj === undefined) {\n return obj;\n }\n // Preserve TypedArrays (Float32Array, Int8Array, etc.)\n if (ArrayBuffer.isView(obj)) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map((item) => this.stripSymbols(item));\n }\n if (typeof obj === \"object\") {\n const proto = Object.getPrototypeOf(obj);\n if (proto !== Object.prototype && proto !== null) {\n return obj;\n }\n\n const result: Record<string, any> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = this.stripSymbols(obj[key]);\n }\n }\n return result;\n }\n return obj;\n }\n\n /**\n * Returns whether the task's config can be serialized to JSON.\n * Override in subclasses that store non-serializable values (functions) in config.\n * Called by toJSON — if false, toJSON throws TaskSerializationError.\n */\n public canSerializeConfig(): boolean {\n return true;\n }\n\n /**\n * Serializes the task and its subtasks into a format that can be stored\n * @param _options Options controlling serialization (used by subclasses)\n * @returns The serialized task and subtasks\n */\n public toJSON(_options?: TaskGraphJsonOptions): TaskGraphItemJson {\n const ctor = this.constructor as typeof Task;\n\n if (!this.canSerializeConfig() || !this.originalConfig) {\n throw new TaskSerializationError(this.type);\n }\n\n // Build config by extracting only serializable properties defined in the configSchema.\n // We filter through the schema to avoid accidentally including non-serializable\n // values (e.g. functions like WhileTask.condition) or internal-only properties\n // that were never part of the serialized output and that consuming applications\n // don't expect (e.g. `queue` from task-specific configs).\n const schema = ctor.configSchema();\n const schemaProperties =\n typeof schema !== \"boolean\" && schema?.properties\n ? (schema.properties as Record<string, Record<string, unknown>>)\n : {};\n\n const config: Record<string, unknown> = {};\n for (const [key, propSchema] of Object.entries(schemaProperties)) {\n if (key === \"id\") continue;\n // Skip internal properties marked as hidden (e.g. queue, compoundMerge)\n // except inputSchema/outputSchema/extras which are needed for task reconstruction\n if (\n propSchema?.[\"x-ui-hidden\"] === true &&\n key !== \"inputSchema\" &&\n key !== \"outputSchema\" &&\n key !== \"extras\"\n ) {\n continue;\n }\n const value = (this.originalConfig as Record<string, unknown>)[key];\n if (value === undefined) continue;\n // Skip non-serializable values (functions, symbols, etc.)\n if (typeof value === \"function\" || typeof value === \"symbol\") continue;\n config[key] = value;\n }\n\n // Omit title/description when they match the static class defaults\n if (config.title === ctor.title) delete config.title;\n if (config.description === ctor.description) delete config.description;\n\n // Omit empty extras\n const extras = config.extras as Record<string, unknown> | undefined;\n if (!extras || Object.keys(extras).length === 0) delete config.extras;\n\n const base: TaskGraphItemJson = {\n id: this.id,\n type: this.type,\n defaults: this.defaults,\n };\n if (Object.keys(config).length > 0) {\n base.config = config;\n }\n\n return this.stripSymbols(base) as TaskGraphItemJson;\n }\n\n /**\n * Converts the task to a JSON format suitable for dependency tracking\n * @param options Options controlling serialization (used by subclasses)\n * @returns The task and subtasks in JSON thats easier for humans to read\n */\n public toDependencyJSON(options?: TaskGraphJsonOptions): JsonTaskItem {\n const json = this.toJSON(options);\n return json;\n }\n\n // ========================================================================\n // Internal graph methods\n // ========================================================================\n\n /**\n * Checks if the task has children. Useful to gate to use of the internal subGraph\n * as this will return without creating a new graph if graph is non-existent .\n *\n * @returns True if the task has children, otherwise false\n */\n public hasChildren(): boolean {\n return (\n this._subGraph !== undefined &&\n this._subGraph !== null &&\n this._subGraph.getTasks().length > 0\n );\n }\n\n private _taskAddedListener: (taskId: TaskIdType) => void = () => {\n this.emit(\"regenerate\");\n };\n\n /**\n * The internal task graph containing subtasks\n *\n * In the base case, these may just be incidental tasks that are not part of the task graph\n * but are used to manage the task's state as part of task execution. Therefore, the graph\n * is not used by the default runner.\n */\n protected _subGraph: TaskGraph | undefined = undefined;\n\n /**\n * Sets the subtask graph for the compound task\n * @param subGraph The subtask graph to set\n */\n set subGraph(subGraph: TaskGraph) {\n if (this._subGraph) {\n this._subGraph.off(\"task_added\", this._taskAddedListener);\n }\n this._subGraph = subGraph;\n this._subGraph.on(\"task_added\", this._taskAddedListener);\n }\n\n /**\n * The internal task graph containing subtasks\n *\n * In the base case, these may just be incidental tasks that are not part of the task graph\n * but are used to manage the task's state as part of task execution. Therefore, the graph\n * is not used by the default runner.\n *\n * Creates a new graph if one doesn't exist.\n *\n * @returns The task graph\n */\n get subGraph(): TaskGraph {\n if (!this._subGraph) {\n this._subGraph = new TaskGraph();\n this._subGraph.on(\"task_added\", this._taskAddedListener);\n }\n return this._subGraph;\n }\n\n /**\n * Regenerates the task graph, which is internal state to execute() with config.own()\n *\n * This is a destructive operation that removes all dataflows and tasks from the graph.\n * It is used to reset the graph to a clean state.\n *\n * GraphAsTask and others override this and do not call super\n */\n public regenerateGraph(): void {\n if (this.hasChildren()) {\n for (const dataflow of this.subGraph.getDataflows()) {\n this.subGraph.removeDataflow(dataflow);\n }\n for (const child of this.subGraph.getTasks()) {\n this.subGraph.removeTask(child.id);\n }\n }\n this.events.emit(\"regenerate\");\n }\n}\n",
27
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n getLogger,\n getTelemetryProvider,\n globalServiceRegistry,\n ResourceScope,\n ServiceRegistry,\n SpanStatusCode,\n} from \"@workglow/util\";\nimport type { CacheRegistry } from \"../cache\";\nimport { CACHE_REGISTRY, DefaultCacheRegistry, RunPrivateCacheRepo } from \"../cache\";\nimport { TASK_OUTPUT_REPOSITORY, TaskOutputRepository } from \"../storage/TaskOutputRepository\";\nimport type { Taskish } from \"../task-graph/Conversions\";\nimport { ensureTask } from \"../task-graph/Conversions\";\nimport { CacheCoordinator } from \"./CacheCoordinator\";\nimport { resolveSchemaInputs, schemaHasFormatAnnotations } from \"./InputResolver\";\nimport type { IRunConfig, ITask } from \"./ITask\";\nimport { ITaskRunner } from \"./ITaskRunner\";\nimport { StreamProcessor } from \"./StreamProcessor\";\nimport type { StreamEvent } from \"./StreamTypes\";\nimport { getOutputStreamMode, isTaskStreamable } from \"./StreamTypes\";\nimport { Task } from \"./Task\";\nimport {\n TaskAbortedError,\n TaskConfigurationError,\n TaskError,\n TaskFailedError,\n TaskInvalidInputError,\n TaskTimeoutError,\n} from \"./TaskError\";\nimport { TaskRunContext } from \"./TaskRunContext\";\nimport { TaskConfig, TaskInput, TaskOutput, TaskStatus } from \"./TaskTypes\";\n\n/**\n * Type guard that checks whether a value is an ITask-like object with a mutable `runConfig`.\n */\nfunction hasRunConfig(i: unknown): i is { runConfig: Partial<IRunConfig> } {\n return i !== null && typeof i === \"object\" && \"runConfig\" in (i as object);\n}\n\n/**\n * Responsible for running tasks\n * Manages the execution lifecycle of individual tasks\n */\nexport class TaskRunner<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig = TaskConfig,\n> implements ITaskRunner<Input, Output, Config> {\n /**\n * Whether the task is currently running\n */\n protected running = false;\n protected previewRunning = false;\n\n /**\n * The task to run\n */\n public readonly task: ITask<Input, Output, Config>;\n\n /**\n * Per-run state. Set by handleStart, cleared by handleComplete / handleError /\n * handleAbort / handleDisable. The only mutable per-run state on the facade —\n * exists so the public abort() and disable() methods (which take no arguments)\n * have something to act on.\n */\n protected currentCtx?: TaskRunContext;\n\n /**\n * The output cache for the task\n * @deprecated Use `cacheRegistry` instead. Kept for back-compat with callers\n * that pass `outputCache: repo` through IRunConfig.\n */\n protected outputCache?: TaskOutputRepository;\n\n /**\n * Per-run cache registry resolved in handleStart. Replaces the legacy\n * single-repo `outputCache` field as the primary cache routing mechanism.\n * Set from CACHE_REGISTRY in the ServiceRegistry, or synthesised from the\n * legacy `config.outputCache` repo shim.\n */\n protected cacheRegistry?: CacheRegistry;\n\n /**\n * Cache coordinator for the task (key normalization, lookup, save).\n */\n protected readonly cacheCoordinator: CacheCoordinator<Input, Output>;\n\n /**\n * Stream processor for the task (handles executeStream() event loop).\n */\n protected readonly streamProcessor: StreamProcessor<Input, Output>;\n\n /**\n * The service registry for the task\n */\n protected registry: ServiceRegistry = globalServiceRegistry;\n\n /**\n * Resource scope for this task run\n */\n protected resourceScope?: ResourceScope;\n\n /**\n * True when `this.resourceScope` was auto-created by `run()` (caller did not\n * pass one in `config`). The flag is used by `own()` so that an auto-owned\n * scope is not stamped into a child task's long-lived `runConfig` — that\n * stamp would survive past the parent run's `finally`-block disposal and\n * leave the child holding a reference to a disposed scope.\n */\n protected ownsResourceScope = false;\n\n /**\n * Input streams for pass-through streaming tasks.\n * Set by the graph runner before executing a streaming task that has\n * upstream streaming edges. Keyed by input port name.\n */\n public inputStreams?: Map<string, ReadableStream<StreamEvent>>;\n\n /**\n * Stable identifier for the current graph run. Set from IRunConfig.runId by\n * handleStart; threaded into IExecuteContext so tasks can correlate their\n * work to the enclosing run.\n */\n protected runId?: string;\n\n /**\n * Tracks task types that have already received the \"private policy without\n * runId\" downgrade warning, so the warning fires only once per task type\n * across the process lifetime. Mirrors {@link Task.__cacheableDeprecationWarned}.\n */\n private static __privateWithoutRunIdWarned = new Set<string>();\n\n /**\n * Constructor for TaskRunner\n * @param task The task to run\n */\n constructor(task: ITask<Input, Output, Config>) {\n this.task = task;\n this.own = this.own.bind(this);\n this.handleProgress = this.handleProgress.bind(this);\n this.cacheCoordinator = new CacheCoordinator(task);\n this.streamProcessor = new StreamProcessor(task);\n }\n\n // ========================================================================\n // Public methods\n // ========================================================================\n\n /**\n * Runs the task and returns the output\n * @param overrides Optional input overrides\n * @param config Optional configuration overrides\n * @returns The task output\n */\n async run(overrides: Partial<Input> = {}, config: IRunConfig = {}): Promise<Output> {\n // Reject concurrent run() on the same TaskRunner. Mirrors\n // TaskGraphRunner.handleStart's \"Graph is already running\" check.\n // Raised before any `this.*` mutation so the in-flight run is undisturbed.\n if (this.task.status === TaskStatus.PROCESSING) {\n throw new TaskConfigurationError(\n `Task \"${this.task.type}\" is already running. Concurrent run() calls on the same TaskRunner are not supported.`\n );\n }\n\n const ownsScope = config.resourceScope === undefined;\n const effectiveConfig: IRunConfig = ownsScope\n ? { ...config, resourceScope: new ResourceScope({ strategy: config.disposeStrategy }) }\n : config;\n this.ownsResourceScope = ownsScope;\n\n try {\n await this.handleStart(effectiveConfig);\n const ctx = this.currentCtx!;\n\n const proto = Object.getPrototypeOf(this.task);\n if (\n proto.execute === Task.prototype.execute &&\n typeof proto.executeStream !== \"function\" &&\n proto.executePreview !== Task.prototype.executePreview\n ) {\n throw new TaskConfigurationError(\n `Task \"${this.task.type}\" implements only executePreview() and cannot be run via run(). ` +\n `After the run/runPreview split, run() requires execute() (or executeStream()). ` +\n `See docs/technical/02-dual-mode-execution.md.`\n );\n }\n\n try {\n this.task.setInput(overrides);\n\n await this.resolveSchemas();\n\n const inputs: Input = this.task.runInputData as Input;\n const isValid = await this.task.validateInput(inputs);\n if (!isValid) {\n throw new TaskInvalidInputError(\"Invalid input data\");\n }\n\n if (ctx.abortController.signal.aborted) {\n await this.handleAbort();\n throw new TaskAbortedError(\"Promise for task created and aborted before run\");\n }\n\n const isStreamable = isTaskStreamable(this.task);\n\n // Warn if schema declares streaming but executeStream is not implemented\n if (!isStreamable && typeof this.task.executeStream !== \"function\") {\n const streamMode = getOutputStreamMode(this.task.outputSchema());\n if (streamMode !== \"none\") {\n getLogger().warn(\n `Task \"${this.task.type}\" declares streaming output (x-stream: \"${streamMode}\") ` +\n `but does not implement executeStream(). Falling back to non-streaming execute().`\n );\n }\n }\n\n let policy = this.task.getCachePolicy(inputs);\n\n // Standalone TaskRunner cannot namespace private cache writes without a\n // runId — TaskGraphRunner owns the wrap. If a standalone caller routes\n // to the private slot with no runId, downgrade to `kind: \"none\"` so the\n // task does not write directly into the shared private repo (which\n // would collide across callers). Warn once per task type so the\n // configuration mistake surfaces without flooding the log.\n if (\n policy.kind === \"private\" &&\n !this.runId &&\n this.cacheRegistry?.private !== undefined &&\n !(this.cacheRegistry.private instanceof RunPrivateCacheRepo)\n ) {\n const taskType = this.task.type;\n if (!TaskRunner.__privateWithoutRunIdWarned.has(taskType)) {\n TaskRunner.__privateWithoutRunIdWarned.add(taskType);\n getLogger().warn(\n `TaskRunner: task \"${taskType}\" has a private cache policy but no runId was ` +\n `provided. Private cache writes are skipped for this run — use TaskGraphRunner ` +\n `with runId for run-namespaced private caching, or provide an already namespaced ` +\n `private cache repo in CACHE_REGISTRY.`\n );\n }\n policy = { kind: \"none\" };\n }\n\n this.currentCtx?.telemetrySpan?.setAttributes({\n \"workglow.task.cache_policy\": policy.kind,\n });\n\n const keyInputs = await this.cacheCoordinator.buildKeyForPolicy(\n inputs,\n this.cacheRegistry,\n policy\n );\n let outputs = await this.cacheCoordinator.lookupByPolicy(\n keyInputs,\n this.cacheRegistry,\n policy,\n isStreamable,\n ctx\n );\n\n if (outputs === undefined) {\n outputs = isStreamable\n ? await this.streamProcessor.run(inputs, ctx, {\n registry: this.registry,\n resourceScope: this.resourceScope,\n inputStreams: this.inputStreams,\n onProgress: this.handleProgress.bind(this),\n own: this.own,\n })\n : await this.executeTask(inputs, ctx);\n\n await this.cacheCoordinator.saveByPolicy(\n keyInputs,\n outputs as Output,\n this.cacheRegistry,\n policy\n );\n this.task.runOutputData = outputs ?? ({} as Output);\n }\n\n await this.handleComplete();\n\n return this.task.runOutputData as Output;\n } catch (err: any) {\n await this.handleError(err);\n // If a timeout triggered the abort, throw the TaskTimeoutError instead\n // of the generic TaskAbortedError that the task's execute() may have thrown.\n throw this.task.error instanceof TaskTimeoutError ? this.task.error : err;\n }\n } finally {\n if (ownsScope) {\n await effectiveConfig.resourceScope!.runComplete();\n this.resourceScope = undefined;\n }\n this.ownsResourceScope = false;\n }\n }\n\n /**\n * Runs the task in preview mode\n * @param overrides Optional input overrides\n * @returns The task output\n */\n public async runPreview(overrides: Partial<Input> = {}): Promise<Output> {\n if (this.task.status === TaskStatus.PROCESSING) {\n return this.task.runOutputData as Output;\n }\n\n this.task.setInput(overrides);\n\n await this.resolveSchemas();\n\n await this.handleStartPreview();\n\n // Build a transient context for preview overrides — preview doesn't share the\n // full lifecycle but executeTaskPreview's signature requires a ctx.\n const ctx = new TaskRunContext();\n\n try {\n const inputs: Input = this.task.runInputData as Input;\n const isValid = await this.task.validateInput(inputs);\n if (!isValid) {\n throw new TaskInvalidInputError(\"Invalid input data\");\n }\n\n const resultPreview = await this.executeTaskPreview(inputs, ctx);\n if (resultPreview !== undefined) {\n this.task.runOutputData = resultPreview;\n }\n\n await this.handleCompletePreview();\n } catch (err: any) {\n getLogger().debug(\"runPreview failed\", { taskId: this.task.config?.id, error: err });\n await this.handleErrorPreview();\n } finally {\n ctx.dispose();\n return this.task.runOutputData as Output;\n }\n }\n\n /**\n * Async iterator producing preview outputs as upstream tasks stream\n * snapshots. Yields once immediately with the current preview state, then\n * yields again whenever upstream snapshots have arrived since the last\n * yield, until all relevant upstream streams complete (or the consumer\n * breaks out of the loop).\n *\n * Backpressure is single-buffered and last-write-wins: snapshots arriving\n * while a runPreview() iteration is in flight all overwrite runInputData,\n * and the next iteration sees only the latest value. Consumers that need\n * to observe every intermediate snapshot must pace the producer (e.g.,\n * wait for each yield to be processed before emitting the next). This\n * matches live-preview UI semantics — show the latest, drop stale frames.\n *\n * Reuses runPreview() under the hood. Errors during a single iteration\n * are caught and skipped — the iterator never throws to the consumer\n * mid-loop.\n *\n * Watches direct upstream tasks only. Indirect (grandparent) snapshots\n * propagate through chained preview re-runs as upstream parents' values\n * update.\n */\n public async *runPreviewStream(overrides: Partial<Input> = {}): AsyncIterable<Output> {\n // 1. Identify direct upstream tasks and their connecting dataflows.\n // runPreviewStream calls task.runPreview() directly (not the graph\n // runner's runPreview), so it does not benefit from the graph-runner's\n // copyInputFromEdgesToNode pull. We propagate snapshot values into the\n // target task's runInputData ourselves, mirroring that pull but driven\n // by upstream stream events.\n const graph = this.task.parentGraph;\n type DataflowInfo = { upstream: ITask; sourcePort: string; targetPort: string };\n const dataflowInfos: DataflowInfo[] = [];\n if (graph) {\n for (const df of graph.getSourceDataflows(this.task.id)) {\n const upstream = graph.getTask(df.sourceTaskId);\n if (upstream) {\n dataflowInfos.push({\n upstream,\n sourcePort: df.sourceTaskPortId,\n targetPort: df.targetTaskPortId,\n });\n }\n }\n }\n\n // 2. Track upstreams that may still emit snapshots (pending, processing, or streaming).\n // An upstream is \"done\" once its stream ends or it reaches a terminal state.\n const upstreamTasks = new Set(dataflowInfos.map((d) => d.upstream));\n const pendingUpstreams = new Set<ITask>(\n [...upstreamTasks].filter(\n (u) =>\n u.status === TaskStatus.STREAMING ||\n u.status === TaskStatus.PENDING ||\n u.status === TaskStatus.PROCESSING\n )\n );\n\n // 3. Set up dirty/wake machinery.\n let dirty = true;\n let wakeResolve: (() => void) | undefined;\n const wakeNext = (): Promise<void> =>\n new Promise<void>((resolve) => {\n wakeResolve = resolve;\n });\n const wake = () => {\n const r = wakeResolve;\n wakeResolve = undefined;\n if (r) r();\n };\n\n // 4. Subscribe to all upstream tasks that could stream.\n const cleanupFns: Array<() => void> = [];\n for (const upstream of pendingUpstreams) {\n const myDataflows = dataflowInfos.filter((d) => d.upstream === upstream);\n\n const onChunk = (event: StreamEvent) => {\n if (event.type !== \"snapshot\") return;\n const snapshotData = (event as { data?: Record<string, unknown> }).data;\n if (snapshotData) {\n for (const { sourcePort, targetPort } of myDataflows) {\n const value = sourcePort === \"*\" ? snapshotData : snapshotData[sourcePort];\n if (value !== undefined) {\n (this.task.runInputData as Record<string, unknown>)[targetPort] = value;\n }\n }\n }\n dirty = true;\n wake();\n };\n const onEnd = () => {\n pendingUpstreams.delete(upstream);\n wake();\n };\n const onStatus = (status: TaskStatus) => {\n // If upstream completes without streaming, remove it from pending.\n if (\n status === TaskStatus.COMPLETED ||\n status === TaskStatus.FAILED ||\n status === TaskStatus.DISABLED\n ) {\n pendingUpstreams.delete(upstream);\n wake();\n }\n };\n upstream.on(\"stream_chunk\", onChunk);\n upstream.on(\"stream_end\", onEnd);\n upstream.on(\"status\", onStatus);\n cleanupFns.push(() => {\n upstream.off(\"stream_chunk\", onChunk);\n upstream.off(\"stream_end\", onEnd);\n upstream.off(\"status\", onStatus);\n });\n }\n\n // 4b. Re-check upstream status after subscribing. If any reached a terminal\n // state in the gap between step 2 (status read) and step 4 (listener\n // attach), prune them now — listeners attached in step 4 won't fire\n // retroactively for events that already happened. The first iteration\n // of the loop still yields a preview from whatever runInputData\n // currently holds.\n for (const upstream of [...pendingUpstreams]) {\n if (\n upstream.status === TaskStatus.COMPLETED ||\n upstream.status === TaskStatus.FAILED ||\n upstream.status === TaskStatus.DISABLED\n ) {\n pendingUpstreams.delete(upstream);\n }\n }\n\n // 5. Iterator loop.\n try {\n while (true) {\n if (dirty) {\n dirty = false;\n try {\n const out = await this.runPreview(overrides);\n yield out;\n } catch (err) {\n getLogger().debug(\"runPreviewStream iteration failed\", {\n taskId: this.task.config?.id,\n error: err,\n });\n }\n continue;\n }\n if (pendingUpstreams.size === 0) return;\n await wakeNext();\n }\n } finally {\n for (const off of cleanupFns) off();\n }\n }\n\n /**\n * Aborts task execution\n */\n public abort(): void {\n this.currentCtx?.abortController.abort();\n }\n\n // ========================================================================\n // Protected methods\n // ========================================================================\n\n protected own<T extends Taskish<any, any>>(i: T): T {\n const task = ensureTask(i, { isOwned: true });\n this.task.subGraph.addTask(task);\n // Propagate parent registry and abort signal to owned ITask instances so\n // that calling task.run() on the returned value inherits this execution context.\n if (hasRunConfig(i)) {\n // Only propagate `resourceScope` if the caller owns its lifecycle. Stamping\n // an auto-created scope into a long-lived `runConfig` leaks a reference\n // past the parent run's `finally`-block disposal — the next `task.run()`\n // on the owned instance would then see a disposed scope, skip auto-create,\n // and silently drop disposers on its cleared Map. With caller-passed\n // scopes the caller controls disposal, so the propagation is safe and\n // preserves resource-sharing across owned-task runs.\n const stamp: Partial<IRunConfig> = {\n registry: this.registry,\n signal: this.currentCtx?.abortController.signal,\n };\n if (!this.ownsResourceScope) {\n stamp.resourceScope = this.resourceScope;\n }\n Object.assign(i.runConfig, stamp);\n }\n // Notify listeners that the entitlement landscape may have changed.\n // For GraphAsTask this is also handled by the subGraph subscription, but\n // non-GraphAsTask tasks with dynamic entitlements (e.g. AiTask) need it too.\n if ((this.task.constructor as typeof Task).hasDynamicEntitlements) {\n this.task.emit(\"entitlementChange\", this.task.entitlements());\n }\n return i;\n }\n\n /**\n * Protected method to execute a task by delegating back to the task itself.\n */\n protected async executeTask(input: Input, ctx: TaskRunContext): Promise<Output | undefined> {\n const result = await this.task.execute(input, {\n signal: ctx.abortController.signal,\n updateProgress: this.handleProgress.bind(this),\n own: this.own,\n registry: this.registry,\n resourceScope: this.resourceScope,\n runId: this.runId,\n });\n return result;\n }\n\n /**\n * Protected method for preview execution delegation\n */\n protected async executeTaskPreview(\n input: Input,\n _ctx: TaskRunContext\n ): Promise<Output | undefined> {\n return this.task.executePreview?.(input, { own: this.own });\n }\n\n // ========================================================================\n // Protected Handlers\n // ========================================================================\n\n /**\n * Resolves config and input schema annotations (e.g. mcp-server references)\n * by mutating task.config and task.runInputData. Always resolves config from\n * originalConfig so re-runs use the original string IDs, not previously resolved\n * objects. Shared between run() and runPreview() to avoid duplication.\n */\n private async resolveSchemas(): Promise<void> {\n const configSchema = (this.task.constructor as typeof Task).configSchema();\n if (schemaHasFormatAnnotations(configSchema)) {\n const source = (this.task as unknown as Task).originalConfig ?? this.task.config;\n const resolved = await resolveSchemaInputs(\n { ...source } as Record<string, unknown>,\n configSchema,\n { registry: this.registry }\n );\n Object.assign(this.task.config, resolved);\n }\n\n // Resolve schema-annotated inputs (models, repositories) before validation.\n // Dynamic-schema tasks (InputTask, GraphAsTask, …) store the effective schema on\n // the instance; the static schema has no format annotations and would skip hydration.\n const ctor = this.task.constructor as typeof Task;\n const schema = ctor.hasDynamicSchemas ? this.task.inputSchema() : ctor.inputSchema();\n this.task.runInputData = (await resolveSchemaInputs(\n this.task.runInputData as Record<string, unknown>,\n schema,\n { registry: this.registry }\n )) as Input;\n }\n\n /**\n * Handles task start. Concurrent-run rejection happens in {@link run} before\n * any state mutation; by the time `handleStart` runs, the task status is\n * guaranteed to be non-PROCESSING.\n */\n protected async handleStart(config: IRunConfig = {}): Promise<void> {\n this.running = true;\n\n this.task.startedAt = new Date();\n this.task.progress = 0;\n this.task.status = TaskStatus.PROCESSING;\n\n // Build per-run context (handles abortController + parentSignal wiring)\n const ctx = new TaskRunContext(config.signal);\n this.currentCtx = ctx;\n\n ctx.abortController.signal.addEventListener(\"abort\", () => {\n this.handleAbort();\n });\n\n // Apply registry override first so that cache resolution below uses the\n // correct per-run ServiceRegistry rather than the stale instance field.\n if (config.registry) {\n this.registry = config.registry;\n }\n\n // Propagate run identifier for use in IExecuteContext.\n this.runId = config.runId;\n\n // Cache resolution: prefer CacheRegistry (via ServiceRegistry); honour legacy\n // config.outputCache as a back-compat shim that maps to the deterministic slot.\n const legacy = config.outputCache ?? this.task.runConfig?.outputCache;\n if (legacy === false) {\n this.cacheRegistry = undefined;\n this.outputCache = undefined;\n } else if (legacy instanceof TaskOutputRepository) {\n // Legacy repo passed directly → treat as the deterministic slot.\n this.cacheRegistry = new DefaultCacheRegistry({ deterministic: legacy });\n this.outputCache = legacy;\n } else if (legacy === true) {\n // Legacy boolean true → pull from TASK_OUTPUT_REPOSITORY in the global registry.\n const instance = globalServiceRegistry.has(TASK_OUTPUT_REPOSITORY)\n ? globalServiceRegistry.get(TASK_OUTPUT_REPOSITORY)\n : undefined;\n this.outputCache = instance;\n this.cacheRegistry = instance\n ? new DefaultCacheRegistry({ deterministic: instance })\n : undefined;\n } else {\n // No legacy override → look up CACHE_REGISTRY from the per-run ServiceRegistry.\n this.outputCache = undefined;\n this.cacheRegistry = this.registry.has(CACHE_REGISTRY)\n ? this.registry.get(CACHE_REGISTRY)\n : undefined;\n }\n\n // shouldAccumulate defaults to true (backward-compatible for standalone runs)\n ctx.shouldAccumulate = config.shouldAccumulate !== false;\n\n if (config.updateProgress) {\n this.updateProgress = config.updateProgress;\n }\n\n if (config.resourceScope) {\n this.resourceScope = config.resourceScope;\n }\n\n // Notify the disposal strategy that a new run is starting. Inactivity\n // strategies use this hook to clear any pending idle timers that were\n // armed at the previous `runComplete`, closing the race window where a\n // timer could fire mid-run and dispose a resource we are about to use.\n if (this.resourceScope) {\n await this.resourceScope.runStart();\n }\n\n // Early-out if parent signal was already aborted (TaskRunContext constructor\n // already aborted ctx.abortController in that case)\n if (ctx.abortController.signal.aborted) return;\n\n // Start timeout timer if configured (timeout is a design-time config property)\n const timeout = (this.task.config as Record<string, unknown>).timeout as number | undefined;\n if (timeout !== undefined && timeout > 0) {\n ctx.pendingTimeoutError = new TaskTimeoutError(timeout);\n ctx.timeoutTimer = setTimeout(() => {\n this.abort();\n }, timeout);\n }\n\n // Start telemetry span\n const telemetry = getTelemetryProvider();\n if (telemetry.isEnabled) {\n ctx.telemetrySpan = telemetry.startSpan(\"workglow.task.run\", {\n attributes: {\n \"workglow.task.type\": this.task.type,\n \"workglow.task.id\": String(this.task.config.id),\n \"workglow.task.title\": this.task.title || undefined,\n },\n });\n }\n\n this.task.emit(\"start\");\n this.task.emit(\"status\", this.task.status);\n }\n private updateProgress = async (\n _task: ITask,\n _progress: number | undefined,\n _message?: string,\n ..._args: any[]\n ) => {};\n\n protected async handleStartPreview(): Promise<void> {\n this.previewRunning = true;\n }\n\n /**\n * Clears the timeout timer if one is active.\n */\n protected clearTimeoutTimer(): void {\n const ctx = this.currentCtx;\n if (ctx?.timeoutTimer !== undefined) {\n clearTimeout(ctx.timeoutTimer);\n ctx.timeoutTimer = undefined;\n }\n }\n\n /**\n * Handles task abort\n */\n protected async handleAbort(): Promise<void> {\n if (this.task.status === TaskStatus.ABORTING) return;\n this.clearTimeoutTimer();\n const ctx = this.currentCtx;\n this.task.status = TaskStatus.ABORTING;\n await this.handleProgress(100);\n // Use the pending timeout error if the abort was triggered by a timeout\n this.task.error = ctx?.pendingTimeoutError ?? new TaskAbortedError();\n\n if (ctx?.telemetrySpan) {\n ctx.telemetrySpan.setStatus(SpanStatusCode.ERROR, \"aborted\");\n ctx.telemetrySpan.addEvent(\"workglow.task.aborted\", {\n \"workglow.task.error\": this.task.error.message,\n });\n ctx.telemetrySpan.end();\n }\n\n // Call optional cleanup method for resource release\n if (typeof this.task.cleanup === \"function\") {\n try {\n await this.task.cleanup();\n } catch {\n // Cleanup errors are swallowed — abort must not throw from cleanup\n }\n }\n\n ctx?.dispose();\n this.currentCtx = undefined;\n\n this.task.emit(\"abort\", this.task.error);\n this.task.emit(\"status\", this.task.status);\n }\n\n protected async handleAbortPreview(): Promise<void> {\n this.previewRunning = false;\n }\n\n /**\n * Handles task completion\n */\n protected async handleComplete(): Promise<void> {\n if (this.task.status === TaskStatus.COMPLETED) return;\n this.clearTimeoutTimer();\n const ctx = this.currentCtx;\n\n this.task.completedAt = new Date();\n this.task.status = TaskStatus.COMPLETED;\n await this.handleProgress(100);\n\n if (ctx?.telemetrySpan) {\n ctx.telemetrySpan.setStatus(SpanStatusCode.OK);\n ctx.telemetrySpan.end();\n }\n\n ctx?.dispose();\n this.currentCtx = undefined;\n\n this.task.emit(\"complete\");\n this.task.emit(\"status\", this.task.status);\n }\n\n protected async handleCompletePreview(): Promise<void> {\n this.previewRunning = false;\n }\n\n protected async handleDisable(ctx: TaskRunContext | undefined): Promise<void> {\n if (this.task.status === TaskStatus.DISABLED) return;\n this.task.status = TaskStatus.DISABLED;\n await this.handleProgress(100);\n this.task.completedAt = new Date();\n ctx?.dispose();\n // Don't clobber a newer run's ctx if disable() was queued from a stale state.\n if (this.currentCtx === ctx) this.currentCtx = undefined;\n this.task.emit(\"disabled\");\n this.task.emit(\"status\", this.task.status);\n }\n\n public async disable(): Promise<void> {\n await this.handleDisable(this.currentCtx);\n }\n\n /**\n * Handles task error\n * @param err Error that occurred\n */\n protected async handleError(err: Error): Promise<void> {\n if (err instanceof TaskAbortedError) return this.handleAbort();\n if (this.task.status === TaskStatus.FAILED) return;\n this.clearTimeoutTimer();\n const ctx = this.currentCtx;\n if (this.task.hasChildren()) {\n this.task.subGraph!.abort();\n }\n\n this.task.completedAt = new Date();\n if (err instanceof TaskError) {\n this.task.error = err;\n } else {\n this.task.error = new TaskFailedError(\n `Task \"${this.task.type}\" (${this.task.id}): ${err?.message || \"Task failed\"}`\n );\n }\n // Attach task context to all TaskError instances for programmatic access\n if (this.task.error instanceof TaskError) {\n this.task.error.taskType ??= this.task.type;\n this.task.error.taskId ??= this.task.id;\n }\n this.task.status = TaskStatus.FAILED;\n await this.handleProgress(100);\n\n if (ctx?.telemetrySpan) {\n ctx.telemetrySpan.setStatus(SpanStatusCode.ERROR, this.task.error.message);\n ctx.telemetrySpan.setAttributes({ \"workglow.task.error\": this.task.error.message });\n ctx.telemetrySpan.end();\n }\n\n ctx?.dispose();\n this.currentCtx = undefined;\n\n this.task.emit(\"error\", this.task.error);\n this.task.emit(\"status\", this.task.status);\n }\n\n protected async handleErrorPreview(): Promise<void> {\n this.previewRunning = false;\n }\n\n /**\n * Handles task progress update\n * @param progress Progress value (0-100), or `undefined` for indeterminate\n * @param args Additional arguments\n */\n protected async handleProgress(\n progress: number | undefined,\n message?: string,\n ...args: any[]\n ): Promise<void> {\n this.task.progress = progress;\n // Emit before graph-level work (e.g. pushOutputFromNodeToEdges) so listeners are not stalled.\n this.task.emit(\"progress\", progress, message, ...args);\n await this.updateProgress(this.task, progress, message, ...args);\n }\n}\n",
26
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ServiceRegistry } from \"@workglow/util\";\nimport { deepEqual, EventEmitter, uuid4 } from \"@workglow/util\";\nimport type { DataPortSchema, SchemaNode } from \"@workglow/util/schema\";\nimport { compileSchema } from \"@workglow/util/schema\";\nimport { type CachePolicy, DEFAULT_CACHE_POLICY } from \"../cache/CachePolicy\";\nimport { DATAFLOW_ALL_PORTS } from \"../task-graph/Dataflow\";\nimport { TaskGraph } from \"../task-graph/TaskGraph\";\nimport type { IExecuteContext, IExecutePreviewContext, IRunConfig, ITask } from \"./ITask\";\nimport { EMPTY_ENTITLEMENTS, type TaskEntitlements } from \"./TaskEntitlements\";\nimport {\n TaskAbortedError,\n TaskConfigurationError,\n TaskError,\n TaskInvalidInputError,\n TaskSerializationError,\n} from \"./TaskError\";\nimport type {\n TaskEventListener,\n TaskEventListeners,\n TaskEventParameters,\n TaskEvents,\n} from \"./TaskEvents\";\nimport type { JsonTaskItem, TaskGraphItemJson, TaskGraphJsonOptions } from \"./TaskJSON\";\nimport { TaskRunner } from \"./TaskRunner\";\nimport type { TaskConfig, TaskIdType, TaskInput, TaskOutput, TaskTypeName } from \"./TaskTypes\";\nimport { TaskConfigSchema, TaskStatus } from \"./TaskTypes\";\n\n/**\n * Base class for all tasks that implements the ITask interface.\n * This abstract class provides common functionality for both simple and compound tasks.\n *\n * The Task class is responsible for:\n * 1. Defining what a task is (inputs, outputs, configuration)\n * 2. Providing the execution logic (via execute and executePreview)\n * 3. Delegating the running logic to a TaskRunner\n */\nexport class Task<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig = TaskConfig,\n> implements ITask<Input, Output, Config> {\n // ========================================================================\n // Static properties - should be overridden by subclasses\n // ========================================================================\n\n /**\n * The type identifier for this task class\n */\n public static type: TaskTypeName = \"Task\";\n\n /**\n * The category this task belongs to\n */\n public static category: string = \"Hidden\";\n\n /**\n * The title of this task\n */\n public static title: string = \"\";\n\n /**\n * The description of this task\n */\n public static description: string = \"\";\n\n /**\n * Whether this task has side effects\n */\n public static cacheable: boolean = true;\n\n /**\n * Version number for this task class, used to bust the output cache when the task's\n * implementation changes. Increment when a change would produce different outputs for\n * the same inputs. Combined with ancestor versions via getCacheVersion().\n * Subclasses should override this when their execute() logic changes in a\n * backwards-incompatible way (different output for same input).\n */\n public static version: number = 1;\n\n /**\n * Default cache policy for this task class. Used by `getCachePolicy()` when the\n * task does not override the method. Subclasses with side effects should set\n * `{ kind: \"none\" }`; tasks producing non-deterministic-but-expensive outputs\n * (e.g., image generation without a seed) should set `{ kind: \"private\" }`.\n */\n public static cachePolicy: CachePolicy = { kind: \"deterministic\" };\n\n /**\n * Whether this task has dynamic input/output schemas that can change at runtime.\n * Tasks with dynamic schemas should override instance methods for inputSchema() and/or outputSchema()\n * and emit 'schemaChange' events when their schemas change.\n */\n public static hasDynamicSchemas: boolean = false;\n\n /**\n * When true, dynamically added input ports (via the universal \"Add Input\" handle in the builder)\n * are mirrored as output ports of the same name and type. Set this on pass-through tasks that\n * forward their additional inputs to their outputs unchanged.\n */\n public static passthroughInputsToOutputs: boolean = false;\n\n /**\n * When true, this task can be saved as a custom task with a preset configuration.\n * Tasks that have meaningful user-facing config options beyond the base fields should set this.\n */\n public static customizable: boolean = false;\n\n /**\n * When true, this task defines the graph's output. The graph runner will\n * collect results only from tasks with this flag when they exist among the\n * leaf nodes; otherwise it falls back to collecting from all leaves.\n */\n public static isGraphOutput: boolean = false;\n\n /**\n * When true, this task does no real work — it only forwards inputs to outputs\n * (e.g. `InputTask`, `OutputTask`). Such tasks are excluded from graph-level\n * progress averaging because they jump from 0% to 100% and would dilute the bar.\n */\n public static isPassthrough: boolean = false;\n\n /**\n * Whether this task has dynamic entitlements that can change at runtime.\n * Tasks with dynamic entitlements should override the instance entitlements() method\n * and emit 'entitlementChange' events when their entitlements change.\n */\n public static hasDynamicEntitlements: boolean = false;\n\n /**\n * Entitlements required by this task class.\n * Subclasses override to declare their permission requirements.\n */\n public static entitlements(): TaskEntitlements {\n return EMPTY_ENTITLEMENTS;\n }\n\n /**\n * Input schema for this task\n */\n public static inputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n }\n\n /**\n * Output schema for this task\n */\n public static outputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n }\n\n /**\n * Config schema for this task. Subclasses that add config properties MUST override this\n * and spread TaskConfigSchema[\"properties\"] into their own properties object.\n */\n public static configSchema(): DataPortSchema {\n return TaskConfigSchema;\n }\n\n // ========================================================================\n // Task Execution Methods - Core logic provided by subclasses\n // ========================================================================\n\n /**\n * The actual task execution logic for subclasses to override\n *\n * @param input The input to the task\n * @param config The configuration for the task\n * @throws TaskError if the task fails\n * @returns The output of the task or undefined if no changes\n */\n public async execute(_input: Input, context: IExecuteContext): Promise<Output | undefined> {\n if (context.signal?.aborted) {\n throw new TaskAbortedError(\"Task aborted\");\n }\n return undefined;\n }\n\n /**\n * Default implementation of executePreview that does nothing.\n * Subclasses should override this to provide actual preview functionality.\n *\n * This is generally for UI updating, and should be lightweight.\n * @param input The input to the task\n * @returns The preview output, or undefined for \"no preview update\"\n */\n public async executePreview(\n _input: Input,\n _context: IExecutePreviewContext\n ): Promise<Output | undefined> {\n return undefined;\n }\n\n // ========================================================================\n // TaskRunner delegation - Executes and manages the task\n // ========================================================================\n\n /**\n * The TaskGraph that owns this task, set by {@link TaskGraph#addTask}.\n * Used by {@link TaskRunner#runPreviewStream} to locate upstream tasks\n * and subscribe to their streaming events.\n */\n public parentGraph?: TaskGraph;\n\n /**\n * Task runner for handling the task execution\n */\n protected _runner: TaskRunner<Input, Output, Config> | undefined;\n\n /**\n * Gets the task runner instance\n * Creates a new one if it doesn't exist\n */\n public get runner(): TaskRunner<Input, Output, Config> {\n if (!this._runner) {\n this._runner = new TaskRunner<Input, Output, Config>(this);\n }\n return this._runner;\n }\n\n /**\n * Runs the task and returns the output\n * Delegates to the task runner\n *\n * @param overrides Optional input overrides\n * @param runConfig Optional per-call run configuration (merged with task's runConfig)\n * @throws TaskError if the task fails\n * @returns The task output\n */\n async run(overrides: Partial<Input> = {}, runConfig: Partial<IRunConfig> = {}): Promise<Output> {\n return this.runner.run(overrides, { ...this.runConfig, ...runConfig });\n }\n\n /**\n * Runs the task in preview mode\n * Delegates to the task runner\n *\n * @param overrides Optional input overrides\n * @returns The task output\n */\n public async runPreview(overrides: Partial<Input> = {}): Promise<Output> {\n return this.runner.runPreview(overrides);\n }\n\n /**\n * Aborts task execution\n * Delegates to the task runner\n */\n public abort(): void {\n this.runner.abort();\n }\n\n /**\n * Disables task execution\n * Delegates to the task runner\n */\n public async disable(): Promise<void> {\n await this.runner.disable();\n }\n\n // ========================================================================\n // Static to Instance conversion methods\n // ========================================================================\n\n /**\n * Gets input schema for this task\n */\n public inputSchema(): DataPortSchema {\n return (this.constructor as typeof Task).inputSchema();\n }\n\n /**\n * Gets output schema for this task\n */\n public outputSchema(): DataPortSchema {\n return (this.constructor as typeof Task).outputSchema();\n }\n\n /**\n * Gets config schema for this task\n */\n public configSchema(): DataPortSchema {\n return (this.constructor as typeof Task).configSchema();\n }\n\n /**\n * Gets entitlements for this task instance.\n * For tasks with dynamic entitlements, override this to compute based on config/state.\n */\n public entitlements(): TaskEntitlements {\n return (this.constructor as typeof Task).entitlements();\n }\n\n /**\n * Emits an entitlementChange event when the task's required entitlements change.\n * Call this from tasks with dynamic entitlements when their configuration changes\n * in a way that affects their entitlements.\n */\n protected emitEntitlementChange(entitlements?: TaskEntitlements): void {\n const final = entitlements ?? this.entitlements();\n this.emit(\"entitlementChange\", final);\n }\n\n public get type(): TaskTypeName {\n return (this.constructor as typeof Task).type;\n }\n\n public get category(): string {\n return (this.constructor as typeof Task).category;\n }\n\n public get title(): string {\n return this.config?.title ?? (this.constructor as typeof Task).title;\n }\n\n public get description(): string {\n return this.config?.description ?? (this.constructor as typeof Task).description;\n }\n\n /**\n * Whether this task instance is currently cacheable. Reads `runConfig.cacheable`\n * and `config.cacheable` first (per-instance overrides for back-compat), then\n * derives from `getCachePolicy(runInputData)`.\n *\n * Note: for tasks that override `getCachePolicy(inputs)` with input-dependent\n * logic (e.g., `AiImageOutputTask` returns `private` when seed is absent), the\n * value of `task.cacheable` can change as `runInputData` changes. Prefer calling\n * `getCachePolicy(inputs)` directly when you have explicit inputs.\n */\n public get cacheable(): boolean {\n if (this.runConfig?.cacheable !== undefined) return this.runConfig.cacheable;\n if (this.config?.cacheable !== undefined) return this.config.cacheable;\n return this.getCachePolicy((this.runInputData ?? {}) as unknown as Input).kind !== \"none\";\n }\n\n /**\n * Returns a dot-separated string of version numbers collected from each class in the\n * prototype chain (leaf first) that declares its own `version` static property.\n * Every class that owns a `version` contributes one segment, including the base Task\n * class. Returns \"1\" when called directly on a Task instance with no subclassing\n * (Task.version === 1 is the sole contributor).\n *\n * Use this as the cache-key version component: when any ancestor's version changes,\n * the combined string changes and the cached output is invalidated.\n */\n public getCacheVersion(): string {\n const versions: number[] = [];\n let ctor: unknown = this.constructor;\n while (ctor && ctor !== Function.prototype) {\n if (\n Object.prototype.hasOwnProperty.call(ctor, \"version\") &&\n typeof (ctor as { version?: unknown }).version === \"number\"\n ) {\n versions.push((ctor as { version: number }).version);\n }\n ctor = Object.getPrototypeOf(ctor as object);\n }\n if (versions.length === 0) versions.push(1);\n return versions.join(\".\");\n }\n\n /**\n * Returns the effective cache policy for this task given its inputs.\n *\n * Resolution order:\n * 1. Per-instance `runConfig.cacheable === false` or `config.cacheable === false`\n * → `{ kind: \"none\" }` (callsite opt-out wins).\n * 2. Class-static `cacheable === false` (declared on the subclass) →\n * `{ kind: \"none\" }`. The coarse on/off flag remains supported alongside\n * the canonical `cachePolicy`; setting it on the class is equivalent\n * to declaring `static cachePolicy: CachePolicy = { kind: \"none\" }`.\n * 3. Class-static `cachePolicy` if declared.\n * 4. {@link DEFAULT_CACHE_POLICY}.\n *\n * Override for dynamic decisions (e.g., AiImageOutputTask returns `private`\n * when seed is absent).\n */\n public getCachePolicy(_inputs: Input): CachePolicy {\n const ctor = this.constructor as typeof Task;\n if (this.runConfig?.cacheable === false || this.config?.cacheable === false)\n return { kind: \"none\" };\n if (\n Object.prototype.hasOwnProperty.call(ctor, \"cacheable\") &&\n (ctor as { cacheable?: unknown }).cacheable === false &&\n !Object.prototype.hasOwnProperty.call(ctor, \"cachePolicy\")\n ) {\n return { kind: \"none\" };\n }\n return ctor.cachePolicy ?? DEFAULT_CACHE_POLICY;\n }\n\n // ========================================================================\n // Instance properties using @template types\n // ========================================================================\n\n /**\n * Default input values for this task.\n * If no overrides at run time, then this would be equal to the input.\n * resetInputData() will reset inputs to these defaults.\n */\n defaults: Record<string, any>;\n\n /**\n * The input to the task at the time of the task run.\n * This takes defaults from construction time and overrides from run time.\n * It is the input that created the output.\n */\n runInputData: Record<string, any> = {};\n\n /**\n * The output of the task at the time of the task run.\n * This is the result of the task execution.\n */\n runOutputData: Record<string, any> = {};\n\n // ========================================================================\n // Task state properties\n // ========================================================================\n\n /**\n * The configuration of the task\n */\n config: Config;\n\n /**\n * Frozen snapshot of config at construction time, used by toJSON and\n * as the resolution source for re-runs (so fresh lookups use original IDs).\n */\n readonly originalConfig: Readonly<Record<string, unknown>> | undefined;\n\n /**\n * Task id from config (read-only).\n */\n public get id(): unknown {\n return this.config.id;\n }\n\n /**\n * Runtime configuration (not serialized with the task).\n * Set via the constructor's third argument or mutated by the graph runner.\n */\n runConfig: Partial<IRunConfig> = {};\n\n /**\n * Current status of the task\n */\n status: TaskStatus = TaskStatus.PENDING;\n\n /**\n * Current progress, 0..100 for measured progress, `undefined` for\n * indeterminate. Initialized to 0 (not started).\n */\n progress: number | undefined = 0;\n\n /**\n * When the task was created\n */\n createdAt: Date = new Date();\n\n /**\n * When the task started execution\n */\n startedAt?: Date;\n\n /**\n * When the task completed execution\n */\n completedAt?: Date;\n\n /**\n * Error that occurred during task execution, if any\n */\n error?: TaskError;\n\n /**\n * Event emitter for task lifecycle events\n */\n public get events(): EventEmitter<TaskEventListeners> {\n if (!this._events) {\n this._events = new EventEmitter<TaskEventListeners>();\n }\n return this._events;\n }\n protected _events: EventEmitter<TaskEventListeners> | undefined;\n\n /**\n * Creates a new task instance\n *\n * @param config Configuration for the task (includes defaults for input values)\n * @param runConfig Runtime configuration for the task\n */\n constructor(config: NoInfer<Partial<Config>> = {}, runConfig: NoInfer<Partial<IRunConfig>> = {}) {\n // Extract caller-provided defaults from config\n const { defaults: callerDefaultInputs, ...restConfig } = config as Partial<Config> & {\n defaults?: Partial<Input>;\n };\n\n // Initialize input defaults\n const inputDefaults = this.getDefaultInputsFromStaticInputDefinitions();\n const mergedDefaults = Object.assign(inputDefaults, callerDefaultInputs ?? {});\n // Strip symbol properties (like [$JSONSchema]) before storing defaults\n this.defaults = this.stripSymbols(mergedDefaults) as Record<string, any>;\n this.resetInputData();\n\n // Setup configuration defaults (title comes from static class property as fallback)\n const title = (this.constructor as typeof Task).title || undefined;\n const baseConfig = Object.assign(\n {\n ...(title ? { title } : {}),\n },\n restConfig\n ) as Config;\n if (baseConfig.id === undefined) {\n (baseConfig as Record<string, unknown>).id = uuid4();\n }\n this.config = this.validateAndApplyConfigDefaults(baseConfig);\n try {\n this.originalConfig = Object.freeze(structuredClone(this.config) as Record<string, unknown>);\n } catch {\n // Config contains non-cloneable values (e.g. functions).\n // canSerializeConfig() should return false for such tasks.\n this.originalConfig = undefined;\n }\n\n // Store runtime configuration\n this.runConfig = runConfig;\n\n // Reject input schemas that declare a `__cv` port: this name is reserved by\n // CacheCoordinator.buildKey for the cache version sentinel. Allowing a task\n // to declare it would silently shadow cache versioning and cause cache\n // collisions across versions. `inputSchema()` can legally return a boolean\n // (see addInput/setInput handling); skip the check in that case.\n const inputSchema = (this.constructor as typeof Task).inputSchema();\n if (\n inputSchema &&\n typeof inputSchema !== \"boolean\" &&\n inputSchema.properties &&\n Object.prototype.hasOwnProperty.call(inputSchema.properties, \"__cv\")\n ) {\n throw new TaskConfigurationError(\n `Task \"${(this.constructor as typeof Task).type}\": input port name '__cv' is reserved ` +\n `for cache versioning. Rename the port to avoid collision with the cache key sentinel.`\n );\n }\n }\n\n // ========================================================================\n // Input/Output handling\n // ========================================================================\n\n /**\n * Gets default input values from input schema\n */\n getDefaultInputsFromStaticInputDefinitions(): Partial<Input> {\n const schema = this.inputSchema();\n if (typeof schema === \"boolean\") {\n return {};\n }\n try {\n const compiledSchema = this.getInputSchemaNode();\n const defaultData = compiledSchema.getData(undefined, {\n addOptionalProps: true,\n removeInvalidData: false,\n useTypeDefaults: false,\n });\n return (defaultData || {}) as Partial<Input>;\n } catch (error) {\n console.warn(\n `Failed to compile input schema for ${this.type}, falling back to manual extraction:`,\n error\n );\n // Fallback to manual extraction if compilation fails\n return Object.entries(schema.properties || {}).reduce<Record<string, any>>(\n (acc, [id, prop]) => {\n const defaultValue = (prop as any).default;\n if (defaultValue !== undefined) {\n acc[id] = defaultValue;\n }\n return acc;\n },\n {}\n ) as Partial<Input>;\n }\n }\n\n /**\n * Resets input data to defaults\n */\n public resetInputData(): void {\n this.runInputData = this.smartClone(this.defaults) as Record<string, any>;\n }\n\n /**\n * Smart clone that deep-clones plain objects and arrays while preserving\n * class instances (objects with non-Object prototype) by reference.\n * Detects and throws an error on circular references.\n *\n * This is necessary because:\n * - structuredClone cannot clone class instances (methods are lost)\n * - JSON.parse/stringify loses methods and fails on circular references\n * - Class instances like repositories should be passed by reference\n *\n * This breaks the idea of everything being json serializable, but it allows\n * more efficient use cases. Do be careful with this though! Use sparingly.\n *\n * @param obj The object to clone\n * @param visited Set of objects in the current cloning path (for circular reference detection)\n * @returns A cloned object with class instances preserved by reference\n */\n private smartClone(obj: any, visited: WeakSet<object> = new WeakSet()): any {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n // Primitives (string, number, boolean, symbol, bigint) are returned as-is\n if (typeof obj !== \"object\") {\n return obj;\n }\n\n // Check for circular references\n if (visited.has(obj)) {\n throw new TaskConfigurationError(\n \"Circular reference detected in input data. \" +\n \"Cannot clone objects with circular references.\"\n );\n }\n\n // Clone TypedArrays (Float32Array, Int8Array, etc.) to avoid shared-mutation\n // between defaults and runInputData, while preserving DataView by reference.\n if (ArrayBuffer.isView(obj)) {\n // Preserve DataView instances by reference (constructor signature differs)\n if (typeof DataView !== \"undefined\" && obj instanceof DataView) {\n return obj;\n }\n // For TypedArrays, create a new instance with the same data\n const typedArray = obj as any;\n return new (typedArray.constructor as any)(typedArray);\n }\n\n // Preserve class instances (objects with non-Object/non-Array prototype)\n // This includes repository instances, custom classes, etc.\n if (!Array.isArray(obj)) {\n const proto = Object.getPrototypeOf(obj);\n if (proto !== Object.prototype && proto !== null) {\n return obj; // Pass by reference\n }\n }\n\n // Add object to visited set before recursing\n visited.add(obj);\n\n try {\n // Deep clone arrays, preserving class instances within\n if (Array.isArray(obj)) {\n return obj.map((item) => this.smartClone(item, visited));\n }\n\n // Deep clone plain objects\n const result: Record<string, any> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = this.smartClone(obj[key], visited);\n }\n }\n return result;\n } finally {\n // Remove from visited set after processing to allow the same object\n // in different branches (non-circular references)\n visited.delete(obj);\n }\n }\n\n /**\n * Sets the default input values for the task\n *\n * @param defaults The default input values to set\n */\n public setDefaults(defaults: Partial<Input>): void {\n // Strip symbol properties (like [$JSONSchema]) before storing defaults\n this.defaults = this.stripSymbols(defaults) as Partial<Input>;\n }\n\n /**\n * Sets input values for the task\n *\n * @param input Input values to set\n */\n public setInput(input: Partial<Input>): void {\n const schema = this.inputSchema();\n if (typeof schema === \"boolean\") {\n if (schema === true) {\n for (const [inputId, value] of Object.entries(input)) {\n if (value !== undefined) {\n this.runInputData[inputId] = value;\n }\n }\n }\n return;\n }\n const properties = schema.properties || {};\n\n // Copy explicitly defined properties\n for (const [inputId, prop] of Object.entries(properties)) {\n if (input[inputId] !== undefined) {\n this.runInputData[inputId] = input[inputId];\n } else if (\n this.runInputData[inputId] === undefined &&\n (prop as { default?: unknown }).default !== undefined\n ) {\n this.runInputData[inputId] = prop.default;\n }\n }\n\n // If additionalProperties is true, also copy any additional input properties\n if (schema.additionalProperties) {\n for (const [inputId, value] of Object.entries(input)) {\n if (!(inputId in properties)) {\n this.runInputData[inputId] = value;\n }\n }\n }\n }\n\n /**\n * Adds/merges input data during graph execution.\n * Unlike {@link setInput}, this method:\n * - Detects changes using deep equality\n * - Accumulates array values (appends rather than replaces)\n * - Handles DATAFLOW_ALL_PORTS for pass-through\n * - Handles additionalProperties for dynamic schemas\n *\n * @param overrides The input data to merge\n * @returns true if any input data was changed, false otherwise\n */\n public addInput(overrides: Partial<Input> | undefined): boolean {\n if (!overrides) return false;\n\n let changed = false;\n const inputSchema = this.inputSchema();\n\n if (typeof inputSchema === \"boolean\") {\n if (inputSchema === false) {\n return false;\n }\n // Schema is `true` - accept any input\n for (const [key, value] of Object.entries(overrides)) {\n if (!deepEqual(this.runInputData[key], value)) {\n this.runInputData[key] = value;\n changed = true;\n }\n }\n return changed;\n }\n\n const properties = inputSchema.properties || {};\n\n for (const [inputId, prop] of Object.entries(properties)) {\n if (inputId === DATAFLOW_ALL_PORTS) {\n this.runInputData = { ...this.runInputData, ...overrides };\n changed = true;\n } else {\n if (overrides[inputId] === undefined) continue;\n const isArray =\n (prop as any)?.type === \"array\" ||\n ((prop as any)?.type === \"any\" &&\n (Array.isArray(overrides[inputId]) || Array.isArray(this.runInputData[inputId])));\n\n if (isArray) {\n const existingItems = Array.isArray(this.runInputData[inputId])\n ? this.runInputData[inputId]\n : this.runInputData[inputId] !== undefined\n ? [this.runInputData[inputId]]\n : [];\n const newitems = [...existingItems];\n\n const overrideItem = overrides[inputId];\n if (Array.isArray(overrideItem)) {\n newitems.push(...overrideItem);\n } else {\n newitems.push(overrideItem);\n }\n this.runInputData[inputId] = newitems;\n changed = true;\n } else {\n if (!deepEqual(this.runInputData[inputId], overrides[inputId])) {\n this.runInputData[inputId] = overrides[inputId];\n changed = true;\n }\n }\n }\n }\n\n // If additionalProperties is true, also accept any additional input properties\n if (inputSchema.additionalProperties) {\n for (const [inputId, value] of Object.entries(overrides)) {\n if (!(inputId in properties)) {\n if (!deepEqual(this.runInputData[inputId], value)) {\n this.runInputData[inputId] = value;\n changed = true;\n }\n }\n }\n }\n\n return changed;\n }\n\n /**\n * Stub for narrowing input. Override in subclasses for custom logic.\n * @param input The input to narrow\n * @param _registry Optional service registry for lookups\n * @returns The (possibly narrowed) input\n */\n public async narrowInput(\n input: Partial<Input>,\n _registry: ServiceRegistry\n ): Promise<Partial<Input>> {\n return input;\n }\n\n // ========================================================================\n // Event handling methods\n // ========================================================================\n\n /**\n * Subscribes to an event\n */\n public subscribe<Event extends TaskEvents>(\n name: Event,\n fn: TaskEventListener<Event>\n ): () => void {\n return this.events.subscribe(name, fn);\n }\n\n /**\n * Registers an event listener\n */\n public on<Event extends TaskEvents>(name: Event, fn: TaskEventListener<Event>): void {\n this.events.on(name, fn);\n }\n\n /**\n * Removes an event listener\n */\n public off<Event extends TaskEvents>(name: Event, fn: TaskEventListener<Event>): void {\n this.events.off(name, fn);\n }\n\n /**\n * Registers a one-time event listener\n */\n public once<Event extends TaskEvents>(name: Event, fn: TaskEventListener<Event>): void {\n this.events.once(name, fn);\n }\n\n /**\n * Returns a promise that resolves when the specified event is emitted\n */\n public waitOn<Event extends TaskEvents>(name: Event): Promise<TaskEventParameters<Event>> {\n return this.events.waitOn(name) as Promise<TaskEventParameters<Event>>;\n }\n\n /**\n * Emits an event\n */\n public emit<Event extends TaskEvents>(name: Event, ...args: TaskEventParameters<Event>): void {\n // Route through `events` so the emitter exists: `this._events?.emit` dropped progress when\n // nothing had accessed `task.events` yet (e.g. parent MapTask before CLI wired listeners).\n this.events.emit(name, ...args);\n }\n\n /**\n * Emits a schemaChange event when the task's input or output schema changes.\n * This should be called by tasks with dynamic schemas when their configuration\n * changes in a way that affects their schemas.\n *\n * @param inputSchema - The new input schema (optional, will use current schema if not provided)\n * @param outputSchema - The new output schema (optional, will use current schema if not provided)\n */\n protected emitSchemaChange(inputSchema?: DataPortSchema, outputSchema?: DataPortSchema): void {\n const finalInputSchema = inputSchema ?? this.inputSchema();\n const finalOutputSchema = outputSchema ?? this.outputSchema();\n this.emit(\"schemaChange\", finalInputSchema, finalOutputSchema);\n }\n\n // ========================================================================\n // Input validation methods\n // ========================================================================\n\n /**\n * Gets the compiled config schema node, or undefined if no configSchema is defined.\n *\n * The compiled schema is cached directly on the concrete class object (not in a shared\n * inherited Map) so that each subclass always uses its own configSchema() result.\n * A shared Map keyed only by type name can be poisoned if a different class computes\n * and caches the schema first — e.g., due to cross-package static-method resolution\n * inconsistencies in bundled outputs.\n */\n private static getConfigSchemaNode(): SchemaNode | undefined {\n const schema = this.configSchema();\n if (!schema) return undefined;\n // Use Object.hasOwn so each class gets its own entry rather than inheriting\n // from a parent class that already cached under the same key.\n if (!Object.hasOwn(this, \"__compiledConfigSchema\")) {\n try {\n const schemaNode =\n typeof schema === \"boolean\"\n ? compileSchema(schema ? {} : { not: {} })\n : compileSchema(schema);\n Object.defineProperty(this, \"__compiledConfigSchema\", {\n value: schemaNode,\n writable: true,\n configurable: true,\n enumerable: false,\n });\n } catch (error) {\n console.warn(`Failed to compile config schema for ${this.type}:`, error);\n return undefined;\n }\n }\n return (this as any).__compiledConfigSchema as SchemaNode;\n }\n\n /**\n * Validates config against configSchema.\n * Returns config as-is; throws on validation errors.\n * Returns config as-is if no configSchema is defined.\n */\n private validateAndApplyConfigDefaults(config: Config): Config {\n const ctor = this.constructor as typeof Task;\n const schemaNode = ctor.getConfigSchemaNode();\n if (!schemaNode) return config;\n\n const result = schemaNode.validate(config);\n if (!result.valid) {\n const errorMessages = result.errors.map((e) => {\n const path = e.data?.pointer || \"\";\n return `${e.message}${path ? ` (${path})` : \"\"}`;\n });\n throw new TaskConfigurationError(\n `[${ctor.name}] Configuration Error: ${errorMessages.join(\", \")}`\n );\n }\n\n return config;\n }\n\n protected static generateInputSchemaNode(schema: DataPortSchema) {\n if (typeof schema === \"boolean\") {\n if (schema === false) {\n return compileSchema({ not: {} });\n }\n return compileSchema({});\n }\n return compileSchema(schema);\n }\n\n /**\n * Gets the compiled input schema, cached per class (not in a shared inherited Map).\n * Uses Object.hasOwn so each subclass stores its own compiled schema and never\n * picks up a stale entry cached by a different class with the same type name.\n */\n protected static getInputSchemaNode(): SchemaNode {\n if (!Object.hasOwn(this, \"__compiledInputSchema\")) {\n const dataPortSchema = this.inputSchema();\n const schemaNode = this.generateInputSchemaNode(dataPortSchema);\n try {\n Object.defineProperty(this, \"__compiledInputSchema\", {\n value: schemaNode,\n writable: true,\n configurable: true,\n enumerable: false,\n });\n } catch (error) {\n // If compilation fails, fall back to accepting any object structure\n // This is a safety net for schemas that json-schema-library can't compile\n console.warn(\n `Failed to compile input schema for ${this.type}, falling back to permissive validation:`,\n error\n );\n Object.defineProperty(this, \"__compiledInputSchema\", {\n value: compileSchema({}),\n writable: true,\n configurable: true,\n enumerable: false,\n });\n }\n }\n return (this as any).__compiledInputSchema as SchemaNode;\n }\n\n protected getInputSchemaNode(): SchemaNode {\n return (this.constructor as typeof Task).getInputSchemaNode();\n }\n\n /**\n * Validates an input data object against the task's input schema\n */\n public async validateInput(input: Input): Promise<boolean> {\n if (typeof input !== \"object\" || input === null) {\n throw new TaskInvalidInputError(\"Input must be an object\");\n }\n const ctor = this.constructor as typeof Task;\n let schemaNode: SchemaNode;\n if (ctor.hasDynamicSchemas) {\n // Dynamic-schema tasks use instance inputSchema() (e.g. config.inputSchema), not the static fallback.\n // The cached getInputSchemaNode uses static inputSchema() which would reject valid instance-specific inputs.\n const instanceSchema = this.inputSchema();\n schemaNode = ctor.generateInputSchemaNode(instanceSchema);\n } else {\n schemaNode = this.getInputSchemaNode();\n }\n const result = schemaNode.validate(input);\n\n if (!result.valid) {\n const errorMessages = result.errors.map((e) => {\n const path = e.data.pointer || \"\";\n return `${e.message}${path ? ` (${path})` : \"\"}`;\n });\n const err = new TaskInvalidInputError(\n `Task \"${this.type}\" (${this.id}): Input ${JSON.stringify(Object.keys(input))} does not match schema: ${errorMessages.join(\", \")}`\n );\n err.taskType = this.type;\n err.taskId = this.id;\n throw err;\n }\n\n return true;\n }\n\n // ========================================================================\n // Serialization methods\n // ========================================================================\n\n /**\n * Strips symbol properties from an object to make it serializable\n * @param obj The object to strip symbols from\n * @returns A new object without symbol properties\n */\n private stripSymbols(obj: any): any {\n if (obj === null || obj === undefined) {\n return obj;\n }\n // Preserve TypedArrays (Float32Array, Int8Array, etc.)\n if (ArrayBuffer.isView(obj)) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map((item) => this.stripSymbols(item));\n }\n if (typeof obj === \"object\") {\n const proto = Object.getPrototypeOf(obj);\n if (proto !== Object.prototype && proto !== null) {\n return obj;\n }\n\n const result: Record<string, any> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = this.stripSymbols(obj[key]);\n }\n }\n return result;\n }\n return obj;\n }\n\n /**\n * Returns whether the task's config can be serialized to JSON.\n * Override in subclasses that store non-serializable values (functions) in config.\n * Called by toJSON — if false, toJSON throws TaskSerializationError.\n */\n public canSerializeConfig(): boolean {\n return true;\n }\n\n /**\n * Serializes the task and its subtasks into a format that can be stored\n * @param _options Options controlling serialization (used by subclasses)\n * @returns The serialized task and subtasks\n */\n public toJSON(_options?: TaskGraphJsonOptions): TaskGraphItemJson {\n const ctor = this.constructor as typeof Task;\n\n if (!this.canSerializeConfig() || !this.originalConfig) {\n throw new TaskSerializationError(this.type);\n }\n\n // Build config by extracting only serializable properties defined in the configSchema.\n // We filter through the schema to avoid accidentally including non-serializable\n // values (e.g. functions like WhileTask.condition) or internal-only properties\n // that were never part of the serialized output and that consuming applications\n // don't expect (e.g. `queue` from task-specific configs).\n const schema = ctor.configSchema();\n const schemaProperties =\n typeof schema !== \"boolean\" && schema?.properties\n ? (schema.properties as Record<string, Record<string, unknown>>)\n : {};\n\n const config: Record<string, unknown> = {};\n for (const [key, propSchema] of Object.entries(schemaProperties)) {\n if (key === \"id\") continue;\n // Skip internal properties marked as hidden (e.g. queue, compoundMerge)\n // except inputSchema/outputSchema/extras which are needed for task reconstruction\n if (\n propSchema?.[\"x-ui-hidden\"] === true &&\n key !== \"inputSchema\" &&\n key !== \"outputSchema\" &&\n key !== \"extras\"\n ) {\n continue;\n }\n const value = (this.originalConfig as Record<string, unknown>)[key];\n if (value === undefined) continue;\n // Skip non-serializable values (functions, symbols, etc.)\n if (typeof value === \"function\" || typeof value === \"symbol\") continue;\n config[key] = value;\n }\n\n // Omit title/description when they match the static class defaults\n if (config.title === ctor.title) delete config.title;\n if (config.description === ctor.description) delete config.description;\n\n // Omit empty extras\n const extras = config.extras as Record<string, unknown> | undefined;\n if (!extras || Object.keys(extras).length === 0) delete config.extras;\n\n const base: TaskGraphItemJson = {\n id: this.id,\n type: this.type,\n defaults: this.defaults,\n };\n if (Object.keys(config).length > 0) {\n base.config = config;\n }\n\n return this.stripSymbols(base) as TaskGraphItemJson;\n }\n\n /**\n * Converts the task to a JSON format suitable for dependency tracking\n * @param options Options controlling serialization (used by subclasses)\n * @returns The task and subtasks in JSON thats easier for humans to read\n */\n public toDependencyJSON(options?: TaskGraphJsonOptions): JsonTaskItem {\n const json = this.toJSON(options);\n return json;\n }\n\n // ========================================================================\n // Internal graph methods\n // ========================================================================\n\n /**\n * Checks if the task has children. Useful to gate to use of the internal subGraph\n * as this will return without creating a new graph if graph is non-existent .\n *\n * @returns True if the task has children, otherwise false\n */\n public hasChildren(): boolean {\n return (\n this._subGraph !== undefined &&\n this._subGraph !== null &&\n this._subGraph.getTasks().length > 0\n );\n }\n\n private _taskAddedListener: (taskId: TaskIdType) => void = () => {\n this.emit(\"regenerate\");\n };\n\n /**\n * The internal task graph containing subtasks\n *\n * In the base case, these may just be incidental tasks that are not part of the task graph\n * but are used to manage the task's state as part of task execution. Therefore, the graph\n * is not used by the default runner.\n */\n protected _subGraph: TaskGraph | undefined = undefined;\n\n /**\n * Sets the subtask graph for the compound task\n * @param subGraph The subtask graph to set\n */\n set subGraph(subGraph: TaskGraph) {\n if (this._subGraph) {\n this._subGraph.off(\"task_added\", this._taskAddedListener);\n }\n this._subGraph = subGraph;\n this._subGraph.on(\"task_added\", this._taskAddedListener);\n }\n\n /**\n * The internal task graph containing subtasks\n *\n * In the base case, these may just be incidental tasks that are not part of the task graph\n * but are used to manage the task's state as part of task execution. Therefore, the graph\n * is not used by the default runner.\n *\n * Creates a new graph if one doesn't exist.\n *\n * @returns The task graph\n */\n get subGraph(): TaskGraph {\n if (!this._subGraph) {\n this._subGraph = new TaskGraph();\n this._subGraph.on(\"task_added\", this._taskAddedListener);\n }\n return this._subGraph;\n }\n\n /**\n * Regenerates the task graph, which is internal state to execute() with config.own()\n *\n * This is a destructive operation that removes all dataflows and tasks from the graph.\n * It is used to reset the graph to a clean state.\n *\n * GraphAsTask and others override this and do not call super\n */\n public regenerateGraph(): void {\n if (this.hasChildren()) {\n for (const dataflow of this.subGraph.getDataflows()) {\n this.subGraph.removeDataflow(dataflow);\n }\n for (const child of this.subGraph.getTasks()) {\n this.subGraph.removeTask(child.id);\n }\n }\n this.events.emit(\"regenerate\");\n }\n}\n\n/**\n * Test helper: clear the H7 dedup Set so each test case can re-trigger the\n * one-time legacy-`cacheable` deprecation warning. Lives in production code\n * (not a __tests__ file) so it's reachable from outside the package's test\n * harness; the leading double-underscore signals \"do not rely on this in\n * application code\".\n */\nexport function __resetCacheableDeprecationWarnings(): void {\n (\n Task as unknown as { __cacheableDeprecationWarned: Set<string> }\n ).__cacheableDeprecationWarned.clear();\n}\n",
27
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n getLogger,\n getTelemetryProvider,\n globalServiceRegistry,\n ResourceScope,\n ServiceRegistry,\n SpanStatusCode,\n} from \"@workglow/util\";\nimport type { CacheRegistry } from \"../cache\";\nimport { CACHE_REGISTRY, DefaultCacheRegistry, RunPrivateCacheRepo } from \"../cache\";\nimport { TASK_OUTPUT_REPOSITORY, TaskOutputRepository } from \"../storage/TaskOutputRepository\";\nimport type { Taskish } from \"../task-graph/Conversions\";\nimport { ensureTask } from \"../task-graph/Conversions\";\nimport { CacheCoordinator } from \"./CacheCoordinator\";\nimport { resolveSchemaInputs, schemaHasFormatAnnotations } from \"./InputResolver\";\nimport type { IRunConfig, ITask } from \"./ITask\";\nimport { ITaskRunner } from \"./ITaskRunner\";\nimport { StreamProcessor } from \"./StreamProcessor\";\nimport type { StreamEvent } from \"./StreamTypes\";\nimport { getOutputStreamMode, isTaskStreamable } from \"./StreamTypes\";\nimport { Task } from \"./Task\";\nimport {\n TaskAbortedError,\n TaskConfigurationError,\n TaskError,\n TaskFailedError,\n TaskInvalidInputError,\n TaskTimeoutError,\n} from \"./TaskError\";\nimport { TaskRunContext } from \"./TaskRunContext\";\nimport { TaskConfig, TaskInput, TaskOutput, TaskStatus } from \"./TaskTypes\";\n\n/**\n * Type guard that checks whether a value is an ITask-like object with a mutable `runConfig`.\n */\nfunction hasRunConfig(i: unknown): i is { runConfig: Partial<IRunConfig> } {\n return i !== null && typeof i === \"object\" && \"runConfig\" in (i as object);\n}\n\n/**\n * Responsible for running tasks\n * Manages the execution lifecycle of individual tasks\n */\nexport class TaskRunner<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig = TaskConfig,\n> implements ITaskRunner<Input, Output, Config> {\n /**\n * Whether the task is currently running\n */\n protected running = false;\n protected previewRunning = false;\n\n /**\n * The task to run\n */\n public readonly task: ITask<Input, Output, Config>;\n\n /**\n * Per-run state. Set by handleStart, cleared by handleComplete / handleError /\n * handleAbort / handleDisable. The only mutable per-run state on the facade —\n * exists so the public abort() and disable() methods (which take no arguments)\n * have something to act on.\n */\n protected currentCtx?: TaskRunContext;\n\n /**\n * Output cache repository resolved per-run. Set when the caller passes\n * `outputCache: repo | true` through IRunConfig; the {@link cacheRegistry}\n * deterministic slot is synthesized from it. When `outputCache` is absent\n * and a CACHE_REGISTRY is registered, that is used instead.\n */\n protected outputCache?: TaskOutputRepository;\n\n /**\n * Per-run cache registry resolved in handleStart. Replaces the legacy\n * single-repo `outputCache` field as the primary cache routing mechanism.\n * Set from CACHE_REGISTRY in the ServiceRegistry, or synthesised from the\n * legacy `config.outputCache` repo shim.\n */\n protected cacheRegistry?: CacheRegistry;\n\n /**\n * Cache coordinator for the task (key normalization, lookup, save).\n */\n protected readonly cacheCoordinator: CacheCoordinator<Input, Output>;\n\n /**\n * Stream processor for the task (handles executeStream() event loop).\n */\n protected readonly streamProcessor: StreamProcessor<Input, Output>;\n\n /**\n * The service registry for the task\n */\n protected registry: ServiceRegistry = globalServiceRegistry;\n\n /**\n * Resource scope for this task run\n */\n protected resourceScope?: ResourceScope;\n\n /**\n * True when `this.resourceScope` was auto-created by `run()` (caller did not\n * pass one in `config`). The flag is used by `own()` so that an auto-owned\n * scope is not stamped into a child task's long-lived `runConfig` — that\n * stamp would survive past the parent run's `finally`-block disposal and\n * leave the child holding a reference to a disposed scope.\n */\n protected ownsResourceScope = false;\n\n /**\n * Input streams for pass-through streaming tasks.\n * Set by the graph runner before executing a streaming task that has\n * upstream streaming edges. Keyed by input port name.\n */\n public inputStreams?: Map<string, ReadableStream<StreamEvent>>;\n\n /**\n * Stable identifier for the current graph run. Set from IRunConfig.runId by\n * handleStart; threaded into IExecuteContext so tasks can correlate their\n * work to the enclosing run.\n */\n protected runId?: string;\n\n /**\n * Tracks task types that have already received the \"private policy without\n * runId\" downgrade warning, so the warning fires only once per task type\n * across the process lifetime. Mirrors {@link Task.__cacheableDeprecationWarned}.\n */\n private static __privateWithoutRunIdWarned = new Set<string>();\n\n /**\n * Constructor for TaskRunner\n * @param task The task to run\n */\n constructor(task: ITask<Input, Output, Config>) {\n this.task = task;\n this.own = this.own.bind(this);\n this.handleProgress = this.handleProgress.bind(this);\n this.cacheCoordinator = new CacheCoordinator(task);\n this.streamProcessor = new StreamProcessor(task);\n }\n\n // ========================================================================\n // Public methods\n // ========================================================================\n\n /**\n * Runs the task and returns the output\n * @param overrides Optional input overrides\n * @param config Optional configuration overrides\n * @returns The task output\n */\n async run(overrides: Partial<Input> = {}, config: IRunConfig = {}): Promise<Output> {\n // Reject concurrent run() on the same TaskRunner. Mirrors\n // TaskGraphRunner.handleStart's \"Graph is already running\" check.\n // Raised before any `this.*` mutation so the in-flight run is undisturbed.\n if (this.task.status === TaskStatus.PROCESSING) {\n throw new TaskConfigurationError(\n `Task \"${this.task.type}\" is already running. Concurrent run() calls on the same TaskRunner are not supported.`\n );\n }\n\n const ownsScope = config.resourceScope === undefined;\n const effectiveConfig: IRunConfig = ownsScope\n ? { ...config, resourceScope: new ResourceScope({ strategy: config.disposeStrategy }) }\n : config;\n this.ownsResourceScope = ownsScope;\n\n // ctx is threaded through locals from here; nothing inside run() re-reads\n // this.currentCtx (which can be nulled by handleAbort firing on the abort\n // listener during an interleaved abort). Declared outside the try so the\n // finally block can run scope cleanup even if handleStart itself throws.\n let ctx: TaskRunContext | undefined;\n try {\n ctx = await this.handleStart(effectiveConfig);\n\n const proto = Object.getPrototypeOf(this.task);\n if (\n proto.execute === Task.prototype.execute &&\n typeof proto.executeStream !== \"function\" &&\n proto.executePreview !== Task.prototype.executePreview\n ) {\n throw new TaskConfigurationError(\n `Task \"${this.task.type}\" implements only executePreview() and cannot be run via run(). ` +\n `After the run/runPreview split, run() requires execute() (or executeStream()). ` +\n `See docs/technical/02-dual-mode-execution.md.`\n );\n }\n\n try {\n this.task.setInput(overrides);\n\n await this.resolveSchemas();\n\n const inputs: Input = this.task.runInputData as Input;\n const isValid = await this.task.validateInput(inputs);\n if (!isValid) {\n throw new TaskInvalidInputError(\"Invalid input data\");\n }\n\n if (ctx.abortController.signal.aborted) {\n await this.handleAbort(ctx);\n throw new TaskAbortedError(\"Promise for task created and aborted before run\");\n }\n\n const isStreamable = isTaskStreamable(this.task);\n\n // Warn if schema declares streaming but executeStream is not implemented\n if (!isStreamable && typeof this.task.executeStream !== \"function\") {\n const streamMode = getOutputStreamMode(this.task.outputSchema());\n if (streamMode !== \"none\") {\n getLogger().warn(\n `Task \"${this.task.type}\" declares streaming output (x-stream: \"${streamMode}\") ` +\n `but does not implement executeStream(). Falling back to non-streaming execute().`\n );\n }\n }\n\n let policy = this.task.getCachePolicy(inputs);\n\n // Standalone TaskRunner cannot namespace private cache writes without a\n // runId — TaskGraphRunner owns the wrap. If a standalone caller routes\n // to the private slot with no runId, downgrade to `kind: \"none\"` so the\n // task does not write directly into the shared private repo (which\n // would collide across callers). Warn once per task type so the\n // configuration mistake surfaces without flooding the log.\n if (\n policy.kind === \"private\" &&\n !this.runId &&\n this.cacheRegistry?.private !== undefined &&\n !(this.cacheRegistry.private instanceof RunPrivateCacheRepo)\n ) {\n const taskType = this.task.type;\n if (!TaskRunner.__privateWithoutRunIdWarned.has(taskType)) {\n TaskRunner.__privateWithoutRunIdWarned.add(taskType);\n getLogger().warn(\n `TaskRunner: task \"${taskType}\" has a private cache policy but no runId was ` +\n `provided. Private cache writes are skipped for this run — use TaskGraphRunner ` +\n `with runId for run-namespaced private caching, or provide an already namespaced ` +\n `private cache repo in CACHE_REGISTRY.`\n );\n }\n policy = { kind: \"none\" };\n }\n\n ctx.telemetrySpan?.setAttributes({\n \"workglow.task.cache_policy\": policy.kind,\n });\n\n const keyInputs = await this.cacheCoordinator.buildKeyForPolicy(\n inputs,\n this.cacheRegistry,\n policy\n );\n let outputs = await this.cacheCoordinator.lookupByPolicy(\n keyInputs,\n this.cacheRegistry,\n policy,\n isStreamable,\n ctx\n );\n\n if (outputs === undefined) {\n outputs = isStreamable\n ? await this.streamProcessor.run(inputs, ctx, {\n registry: this.registry,\n resourceScope: this.resourceScope,\n inputStreams: this.inputStreams,\n onProgress: this.handleProgress.bind(this),\n own: this.own,\n })\n : await this.executeTask(inputs, ctx);\n\n await this.cacheCoordinator.saveByPolicy(\n keyInputs,\n outputs as Output,\n this.cacheRegistry,\n policy\n );\n this.task.runOutputData = outputs ?? ({} as Output);\n }\n\n await this.handleComplete(ctx);\n\n return this.task.runOutputData as Output;\n } catch (err: any) {\n await this.handleError(err, ctx);\n // If a timeout triggered the abort, throw the TaskTimeoutError instead\n // of the generic TaskAbortedError that the task's execute() may have thrown.\n throw this.task.error instanceof TaskTimeoutError ? this.task.error : err;\n }\n } catch (err: any) {\n // Reachable when handleStart() throws before assigning `ctx` (e.g.,\n // resourceScope.runStart or telemetry init blows up). Without this,\n // task.status would be stuck at PROCESSING with currentCtx still set\n // and no error/event ever emitted.\n if (ctx === undefined) {\n const partial = this.currentCtx;\n if (partial) {\n await this.handleError(err, partial);\n } else {\n this.task.status = TaskStatus.FAILED;\n this.task.error =\n err instanceof TaskError\n ? err\n : new TaskFailedError(\n `Task \"${this.task.type}\" (${this.task.id}): ${err?.message || \"Task failed\"}`\n );\n if (this.task.error instanceof TaskError) {\n this.task.error.taskType ??= this.task.type;\n this.task.error.taskId ??= this.task.id;\n }\n this.task.emit(\"error\", this.task.error);\n this.task.emit(\"status\", this.task.status);\n }\n this.running = false;\n }\n throw err;\n } finally {\n if (ownsScope) {\n await effectiveConfig.resourceScope!.runComplete();\n this.resourceScope = undefined;\n }\n this.ownsResourceScope = false;\n }\n }\n\n /**\n * Runs the task in preview mode\n * @param overrides Optional input overrides\n * @returns The task output\n */\n public async runPreview(overrides: Partial<Input> = {}): Promise<Output> {\n if (this.task.status === TaskStatus.PROCESSING) {\n return this.task.runOutputData as Output;\n }\n\n this.task.setInput(overrides);\n\n await this.resolveSchemas();\n\n await this.handleStartPreview();\n\n // Build a transient context for preview overrides — preview doesn't share the\n // full lifecycle but executeTaskPreview's signature requires a ctx.\n const ctx = new TaskRunContext();\n\n try {\n const inputs: Input = this.task.runInputData as Input;\n const isValid = await this.task.validateInput(inputs);\n if (!isValid) {\n throw new TaskInvalidInputError(\"Invalid input data\");\n }\n\n const resultPreview = await this.executeTaskPreview(inputs, ctx);\n if (resultPreview !== undefined) {\n this.task.runOutputData = resultPreview;\n }\n\n await this.handleCompletePreview();\n } catch (err: any) {\n getLogger().debug(\"runPreview failed\", { taskId: this.task.config?.id, error: err });\n await this.handleErrorPreview();\n } finally {\n ctx.dispose();\n return this.task.runOutputData as Output;\n }\n }\n\n /**\n * Async iterator producing preview outputs as upstream tasks stream\n * snapshots. Yields once immediately with the current preview state, then\n * yields again whenever upstream snapshots have arrived since the last\n * yield, until all relevant upstream streams complete (or the consumer\n * breaks out of the loop).\n *\n * Backpressure is single-buffered and last-write-wins: snapshots arriving\n * while a runPreview() iteration is in flight all overwrite runInputData,\n * and the next iteration sees only the latest value. Consumers that need\n * to observe every intermediate snapshot must pace the producer (e.g.,\n * wait for each yield to be processed before emitting the next). This\n * matches live-preview UI semantics — show the latest, drop stale frames.\n *\n * Reuses runPreview() under the hood. Errors during a single iteration\n * are caught and skipped — the iterator never throws to the consumer\n * mid-loop.\n *\n * Watches direct upstream tasks only. Indirect (grandparent) snapshots\n * propagate through chained preview re-runs as upstream parents' values\n * update.\n */\n public async *runPreviewStream(overrides: Partial<Input> = {}): AsyncIterable<Output> {\n // 1. Identify direct upstream tasks and their connecting dataflows.\n // runPreviewStream calls task.runPreview() directly (not the graph\n // runner's runPreview), so it does not benefit from the graph-runner's\n // copyInputFromEdgesToNode pull. We propagate snapshot values into the\n // target task's runInputData ourselves, mirroring that pull but driven\n // by upstream stream events.\n const graph = this.task.parentGraph;\n type DataflowInfo = { upstream: ITask; sourcePort: string; targetPort: string };\n const dataflowInfos: DataflowInfo[] = [];\n if (graph) {\n for (const df of graph.getSourceDataflows(this.task.id)) {\n const upstream = graph.getTask(df.sourceTaskId);\n if (upstream) {\n dataflowInfos.push({\n upstream,\n sourcePort: df.sourceTaskPortId,\n targetPort: df.targetTaskPortId,\n });\n }\n }\n }\n\n // 2. Track upstreams that may still emit snapshots (pending, processing, or streaming).\n // An upstream is \"done\" once its stream ends or it reaches a terminal state.\n const upstreamTasks = new Set(dataflowInfos.map((d) => d.upstream));\n const pendingUpstreams = new Set<ITask>(\n [...upstreamTasks].filter(\n (u) =>\n u.status === TaskStatus.STREAMING ||\n u.status === TaskStatus.PENDING ||\n u.status === TaskStatus.PROCESSING\n )\n );\n\n // 3. Set up dirty/wake machinery.\n let dirty = true;\n let wakeResolve: (() => void) | undefined;\n const wakeNext = (): Promise<void> =>\n new Promise<void>((resolve) => {\n wakeResolve = resolve;\n });\n const wake = () => {\n const r = wakeResolve;\n wakeResolve = undefined;\n if (r) r();\n };\n\n // 4. Subscribe to all upstream tasks that could stream.\n const cleanupFns: Array<() => void> = [];\n for (const upstream of pendingUpstreams) {\n const myDataflows = dataflowInfos.filter((d) => d.upstream === upstream);\n\n const onChunk = (event: StreamEvent) => {\n if (event.type !== \"snapshot\") return;\n const snapshotData = (event as { data?: Record<string, unknown> }).data;\n if (snapshotData) {\n for (const { sourcePort, targetPort } of myDataflows) {\n const value = sourcePort === \"*\" ? snapshotData : snapshotData[sourcePort];\n if (value !== undefined) {\n (this.task.runInputData as Record<string, unknown>)[targetPort] = value;\n }\n }\n }\n dirty = true;\n wake();\n };\n const onEnd = () => {\n pendingUpstreams.delete(upstream);\n wake();\n };\n const onStatus = (status: TaskStatus) => {\n // If upstream completes without streaming, remove it from pending.\n if (\n status === TaskStatus.COMPLETED ||\n status === TaskStatus.FAILED ||\n status === TaskStatus.DISABLED\n ) {\n pendingUpstreams.delete(upstream);\n wake();\n }\n };\n upstream.on(\"stream_chunk\", onChunk);\n upstream.on(\"stream_end\", onEnd);\n upstream.on(\"status\", onStatus);\n cleanupFns.push(() => {\n upstream.off(\"stream_chunk\", onChunk);\n upstream.off(\"stream_end\", onEnd);\n upstream.off(\"status\", onStatus);\n });\n }\n\n // 4b. Re-check upstream status after subscribing. If any reached a terminal\n // state in the gap between step 2 (status read) and step 4 (listener\n // attach), prune them now — listeners attached in step 4 won't fire\n // retroactively for events that already happened. The first iteration\n // of the loop still yields a preview from whatever runInputData\n // currently holds.\n for (const upstream of [...pendingUpstreams]) {\n if (\n upstream.status === TaskStatus.COMPLETED ||\n upstream.status === TaskStatus.FAILED ||\n upstream.status === TaskStatus.DISABLED\n ) {\n pendingUpstreams.delete(upstream);\n }\n }\n\n // 5. Iterator loop.\n try {\n while (true) {\n if (dirty) {\n dirty = false;\n try {\n const out = await this.runPreview(overrides);\n yield out;\n } catch (err) {\n getLogger().debug(\"runPreviewStream iteration failed\", {\n taskId: this.task.config?.id,\n error: err,\n });\n }\n continue;\n }\n if (pendingUpstreams.size === 0) return;\n await wakeNext();\n }\n } finally {\n for (const off of cleanupFns) off();\n }\n }\n\n /**\n * Aborts task execution\n */\n public abort(): void {\n this.currentCtx?.abortController.abort();\n }\n\n // ========================================================================\n // Protected methods\n // ========================================================================\n\n protected own<T extends Taskish<any, any>>(i: T): T {\n const task = ensureTask(i, { isOwned: true });\n this.task.subGraph.addTask(task);\n // Propagate parent registry and abort signal to owned ITask instances so\n // that calling task.run() on the returned value inherits this execution context.\n if (hasRunConfig(i)) {\n // Only propagate `resourceScope` if the caller owns its lifecycle. Stamping\n // an auto-created scope into a long-lived `runConfig` leaks a reference\n // past the parent run's `finally`-block disposal — the next `task.run()`\n // on the owned instance would then see a disposed scope, skip auto-create,\n // and silently drop disposers on its cleared Map. With caller-passed\n // scopes the caller controls disposal, so the propagation is safe and\n // preserves resource-sharing across owned-task runs.\n const stamp: Partial<IRunConfig> = {\n registry: this.registry,\n signal: this.currentCtx?.abortController.signal,\n };\n if (!this.ownsResourceScope) {\n stamp.resourceScope = this.resourceScope;\n }\n Object.assign(i.runConfig, stamp);\n }\n // Notify listeners that the entitlement landscape may have changed.\n // For GraphAsTask this is also handled by the subGraph subscription, but\n // non-GraphAsTask tasks with dynamic entitlements (e.g. AiTask) need it too.\n if ((this.task.constructor as typeof Task).hasDynamicEntitlements) {\n this.task.emit(\"entitlementChange\", this.task.entitlements());\n }\n return i;\n }\n\n /**\n * Protected method to execute a task by delegating back to the task itself.\n */\n protected async executeTask(input: Input, ctx: TaskRunContext): Promise<Output | undefined> {\n const result = await this.task.execute(input, {\n signal: ctx.abortController.signal,\n updateProgress: this.handleProgress.bind(this),\n own: this.own,\n registry: this.registry,\n resourceScope: this.resourceScope,\n runId: this.runId,\n });\n return result;\n }\n\n /**\n * Protected method for preview execution delegation\n */\n protected async executeTaskPreview(\n input: Input,\n _ctx: TaskRunContext\n ): Promise<Output | undefined> {\n return this.task.executePreview?.(input, { own: this.own });\n }\n\n // ========================================================================\n // Protected Handlers\n // ========================================================================\n\n /**\n * Resolves config and input schema annotations (e.g. mcp-server references)\n * by mutating task.config and task.runInputData. Always resolves config from\n * originalConfig so re-runs use the original string IDs, not previously resolved\n * objects. Shared between run() and runPreview() to avoid duplication.\n */\n private async resolveSchemas(): Promise<void> {\n const configSchema = (this.task.constructor as typeof Task).configSchema();\n if (schemaHasFormatAnnotations(configSchema)) {\n const source = (this.task as unknown as Task).originalConfig ?? this.task.config;\n const resolved = await resolveSchemaInputs(\n { ...source } as Record<string, unknown>,\n configSchema,\n { registry: this.registry }\n );\n Object.assign(this.task.config, resolved);\n }\n\n // Resolve schema-annotated inputs (models, repositories) before validation.\n // Dynamic-schema tasks (InputTask, GraphAsTask, …) store the effective schema on\n // the instance; the static schema has no format annotations and would skip hydration.\n const ctor = this.task.constructor as typeof Task;\n const schema = ctor.hasDynamicSchemas ? this.task.inputSchema() : ctor.inputSchema();\n this.task.runInputData = (await resolveSchemaInputs(\n this.task.runInputData as Record<string, unknown>,\n schema,\n { registry: this.registry }\n )) as Input;\n }\n\n /**\n * Handles task start. Concurrent-run rejection happens in {@link run} before\n * any state mutation; by the time `handleStart` runs, the task status is\n * guaranteed to be non-PROCESSING.\n *\n * Returns the per-run {@link TaskRunContext} so `run()` can thread it\n * through locals instead of re-reading `this.currentCtx` across awaits.\n * The instance field `this.currentCtx` is still set as the *external*\n * pointer used by no-arg public methods (`abort()`, `disable()`); internal\n * flow should use the returned ctx exclusively.\n */\n protected async handleStart(config: IRunConfig = {}): Promise<TaskRunContext> {\n this.running = true;\n\n this.task.startedAt = new Date();\n this.task.progress = 0;\n this.task.status = TaskStatus.PROCESSING;\n\n // Build per-run context (handles abortController + parentSignal wiring)\n const ctx = new TaskRunContext(config.signal);\n this.currentCtx = ctx;\n\n // Listener captures the local `ctx`, not `this.currentCtx`. If a later run\n // replaces the instance field before this listener fires, handleAbort still\n // operates on the ctx the listener was attached to.\n ctx.abortController.signal.addEventListener(\"abort\", () => {\n void this.handleAbort(ctx);\n });\n\n // Apply registry override first so that cache resolution below uses the\n // correct per-run ServiceRegistry rather than the stale instance field.\n if (config.registry) {\n this.registry = config.registry;\n }\n\n // Propagate run identifier for use in IExecuteContext.\n this.runId = config.runId;\n\n // Cache resolution: prefer CacheRegistry (via ServiceRegistry); honour legacy\n // config.outputCache as a back-compat shim that maps to the deterministic slot.\n const legacy = config.outputCache ?? this.task.runConfig?.outputCache;\n if (legacy === false) {\n this.cacheRegistry = undefined;\n this.outputCache = undefined;\n } else if (legacy instanceof TaskOutputRepository) {\n // Legacy repo passed directly → treat as the deterministic slot.\n this.cacheRegistry = new DefaultCacheRegistry({ deterministic: legacy });\n this.outputCache = legacy;\n } else if (legacy === true) {\n // Legacy boolean true → pull from TASK_OUTPUT_REPOSITORY in the global registry.\n const instance = globalServiceRegistry.has(TASK_OUTPUT_REPOSITORY)\n ? globalServiceRegistry.get(TASK_OUTPUT_REPOSITORY)\n : undefined;\n this.outputCache = instance;\n this.cacheRegistry = instance\n ? new DefaultCacheRegistry({ deterministic: instance })\n : undefined;\n } else {\n // No legacy override → look up CACHE_REGISTRY from the per-run ServiceRegistry.\n this.outputCache = undefined;\n this.cacheRegistry = this.registry.has(CACHE_REGISTRY)\n ? this.registry.get(CACHE_REGISTRY)\n : undefined;\n }\n\n // shouldAccumulate defaults to true (backward-compatible for standalone runs)\n ctx.shouldAccumulate = config.shouldAccumulate !== false;\n\n if (config.updateProgress) {\n this.updateProgress = config.updateProgress;\n }\n\n if (config.resourceScope) {\n this.resourceScope = config.resourceScope;\n }\n\n // Notify the disposal strategy that a new run is starting. Inactivity\n // strategies use this hook to clear any pending idle timers that were\n // armed at the previous `runComplete`, closing the race window where a\n // timer could fire mid-run and dispose a resource we are about to use.\n if (this.resourceScope) {\n await this.resourceScope.runStart();\n }\n\n // Early-out if parent signal was already aborted (TaskRunContext constructor\n // already aborted ctx.abortController in that case)\n if (ctx.abortController.signal.aborted) return ctx;\n\n // Start timeout timer if configured (timeout is a design-time config property).\n // Fire on the captured ctx's controller rather than this.abort() so a timeout\n // armed for *this* run can't accidentally abort a later run if scope-teardown\n // racing leaves the timer alive past terminal-handler.\n const timeout = (this.task.config as Record<string, unknown>).timeout as number | undefined;\n if (timeout !== undefined && timeout > 0) {\n ctx.pendingTimeoutError = new TaskTimeoutError(timeout);\n ctx.timeoutTimer = setTimeout(() => {\n ctx.abortController.abort();\n }, timeout);\n }\n\n // Start telemetry span\n const telemetry = getTelemetryProvider();\n if (telemetry.isEnabled) {\n ctx.telemetrySpan = telemetry.startSpan(\"workglow.task.run\", {\n attributes: {\n \"workglow.task.type\": this.task.type,\n \"workglow.task.id\": String(this.task.config.id),\n \"workglow.task.title\": this.task.title || undefined,\n },\n });\n }\n\n this.task.emit(\"start\");\n this.task.emit(\"status\", this.task.status);\n return ctx;\n }\n private updateProgress = async (\n _task: ITask,\n _progress: number | undefined,\n _message?: string,\n ..._args: any[]\n ) => {};\n\n protected async handleStartPreview(): Promise<void> {\n this.previewRunning = true;\n }\n\n /**\n * Clears the timeout timer on the given ctx if one is active.\n */\n protected clearTimeoutTimer(ctx: TaskRunContext): void {\n if (ctx.timeoutTimer !== undefined) {\n clearTimeout(ctx.timeoutTimer);\n ctx.timeoutTimer = undefined;\n }\n }\n\n /**\n * Handles task abort.\n *\n * Idempotent per-ctx via {@link TaskRunContext.terminated}: the abort\n * listener fires synchronously inside `controller.abort()` and may race\n * with the run flow's own catch-block; both paths can land here. The\n * `terminated` flag (set before any await) lets the second arrival fall\n * through, while `task.status` is too brittle to gate on because adjacent\n * runs on the same task can mutate it.\n */\n protected async handleAbort(ctx: TaskRunContext): Promise<void> {\n if (ctx.terminated) return;\n ctx.terminated = true;\n this.clearTimeoutTimer(ctx);\n this.task.status = TaskStatus.ABORTING;\n await this.handleProgress(100);\n // Use the pending timeout error if the abort was triggered by a timeout\n this.task.error = ctx.pendingTimeoutError ?? new TaskAbortedError();\n\n if (ctx.telemetrySpan) {\n ctx.telemetrySpan.setStatus(SpanStatusCode.ERROR, \"aborted\");\n ctx.telemetrySpan.addEvent(\"workglow.task.aborted\", {\n \"workglow.task.error\": this.task.error.message,\n });\n ctx.telemetrySpan.end();\n }\n\n // Call optional cleanup method for resource release\n if (typeof this.task.cleanup === \"function\") {\n try {\n await this.task.cleanup();\n } catch {\n // Cleanup errors are swallowed — abort must not throw from cleanup\n }\n }\n\n ctx.dispose();\n // CAS-style clear: only release the instance pointer if it still points at\n // *this* ctx. Prevents a stale terminal handler from clobbering a newer\n // run's currentCtx.\n if (this.currentCtx === ctx) this.currentCtx = undefined;\n\n this.task.emit(\"abort\", this.task.error);\n this.task.emit(\"status\", this.task.status);\n }\n\n protected async handleAbortPreview(): Promise<void> {\n this.previewRunning = false;\n }\n\n /**\n * Handles task completion.\n *\n * Idempotent per-ctx — see {@link handleAbort} for the rationale on using\n * `ctx.terminated` instead of `task.status` as the guard.\n */\n protected async handleComplete(ctx: TaskRunContext): Promise<void> {\n if (ctx.terminated) return;\n ctx.terminated = true;\n this.clearTimeoutTimer(ctx);\n\n this.task.completedAt = new Date();\n this.task.status = TaskStatus.COMPLETED;\n await this.handleProgress(100);\n\n if (ctx.telemetrySpan) {\n ctx.telemetrySpan.setStatus(SpanStatusCode.OK);\n ctx.telemetrySpan.end();\n }\n\n ctx.dispose();\n if (this.currentCtx === ctx) this.currentCtx = undefined;\n\n this.task.emit(\"complete\");\n this.task.emit(\"status\", this.task.status);\n }\n\n protected async handleCompletePreview(): Promise<void> {\n this.previewRunning = false;\n }\n\n protected async handleDisable(ctx: TaskRunContext | undefined): Promise<void> {\n // Idempotent per-ctx where one exists; falls back to status-based guard\n // for the no-active-run case (public disable() called with no current ctx).\n if (ctx?.terminated || this.task.status === TaskStatus.DISABLED) return;\n if (ctx) ctx.terminated = true;\n this.task.status = TaskStatus.DISABLED;\n await this.handleProgress(100);\n this.task.completedAt = new Date();\n ctx?.dispose();\n // Don't clobber a newer run's ctx if disable() was queued from a stale state.\n if (this.currentCtx === ctx) this.currentCtx = undefined;\n this.task.emit(\"disabled\");\n this.task.emit(\"status\", this.task.status);\n }\n\n public async disable(): Promise<void> {\n await this.handleDisable(this.currentCtx);\n }\n\n /**\n * Handles task error.\n *\n * If the underlying error is an abort, delegate to {@link handleAbort} —\n * which is idempotent per-ctx, so a parallel abort-listener path is safe.\n */\n protected async handleError(err: Error, ctx: TaskRunContext): Promise<void> {\n if (err instanceof TaskAbortedError) return this.handleAbort(ctx);\n if (ctx.terminated) return;\n ctx.terminated = true;\n this.clearTimeoutTimer(ctx);\n if (this.task.hasChildren()) {\n this.task.subGraph!.abort();\n }\n\n this.task.completedAt = new Date();\n if (err instanceof TaskError) {\n this.task.error = err;\n } else {\n this.task.error = new TaskFailedError(\n `Task \"${this.task.type}\" (${this.task.id}): ${err?.message || \"Task failed\"}`\n );\n }\n // Attach task context to all TaskError instances for programmatic access\n if (this.task.error instanceof TaskError) {\n this.task.error.taskType ??= this.task.type;\n this.task.error.taskId ??= this.task.id;\n }\n this.task.status = TaskStatus.FAILED;\n await this.handleProgress(100);\n\n if (ctx.telemetrySpan) {\n ctx.telemetrySpan.setStatus(SpanStatusCode.ERROR, this.task.error.message);\n ctx.telemetrySpan.setAttributes({ \"workglow.task.error\": this.task.error.message });\n ctx.telemetrySpan.end();\n }\n\n ctx.dispose();\n if (this.currentCtx === ctx) this.currentCtx = undefined;\n\n this.task.emit(\"error\", this.task.error);\n this.task.emit(\"status\", this.task.status);\n }\n\n protected async handleErrorPreview(): Promise<void> {\n this.previewRunning = false;\n }\n\n /**\n * Handles task progress update\n * @param progress Progress value (0-100), or `undefined` for indeterminate\n * @param args Additional arguments\n */\n protected async handleProgress(\n progress: number | undefined,\n message?: string,\n ...args: any[]\n ): Promise<void> {\n this.task.progress = progress;\n // Emit before graph-level work (e.g. pushOutputFromNodeToEdges) so listeners are not stalled.\n this.task.emit(\"progress\", progress, message, ...args);\n await this.updateProgress(this.task, progress, message, ...args);\n }\n}\n",
28
28
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getPortCodec } from \"@workglow/util\";\nimport { type CachePolicy, isPolicyCached, isPolicyPrivate } from \"../cache/CachePolicy\";\nimport type { CacheRegistry } from \"../cache/CacheRegistry\";\nimport type { TaskOutputRepository } from \"../storage/TaskOutputRepository\";\nimport type { ITask } from \"./ITask\";\nimport type { StreamEvent } from \"./StreamTypes\";\nimport { Task } from \"./Task\";\nimport type { TaskRunContext } from \"./TaskRunContext\";\nimport type { TaskInput, TaskOutput } from \"./TaskTypes\";\n\ninterface SchemaProperties {\n properties?: Record<string, { format?: string }>;\n}\n\n/**\n * @internal\n * Cache key normalization, lookup, save, and cache-hit stream-event emission\n * for streamable tasks. The three previously module-private helpers\n * (serializeOutputPorts, deserializeOutputPorts, normalizeInputsForCacheKey)\n * are private statics here.\n *\n * outputCache is passed as a method argument (not stored as a class field)\n * because the facade resolves it per-run in handleStart and may differ\n * between runs.\n */\nexport class CacheCoordinator<Input extends TaskInput, Output extends TaskOutput> {\n constructor(private readonly task: ITask<Input, Output, any>) {}\n\n /**\n * Serializes format-annotated input properties (via their port codecs) so the\n * resulting object is a stable, serialization-equivalent representation\n * suitable for use as a cache key. Properties without a format annotation are\n * passed through unchanged. No-op when no cache is configured.\n *\n * The reserved sentinel field `__cv` (cache version) is injected into the\n * normalized object before fingerprinting so that bumping a task's `static\n * version` automatically invalidates its cached outputs. Tasks must never\n * declare an input port named `__cv`.\n */\n async buildKey(inputs: Input, outputCache: TaskOutputRepository | undefined): Promise<Input> {\n if (!outputCache) return inputs;\n const inputSchema = (this.task.constructor as typeof Task).inputSchema();\n const normalized = await CacheCoordinator.normalizeInputsForCacheKey(\n inputs as Record<string, unknown>,\n inputSchema as unknown as SchemaProperties\n );\n (normalized as Record<string, unknown>).__cv = this.task.getCacheVersion();\n return normalized as Input;\n }\n\n /**\n * Looks up a cached output. On a hit for a streaming task, also emits the\n * synthetic stream_start / stream_chunk(finish) / stream_end events so\n * downstream consumers see the same event shape as a fresh run.\n *\n * Returns the deserialized output if found, undefined otherwise.\n */\n async lookup(\n keyInputs: Input,\n outputCache: TaskOutputRepository | undefined,\n isStreamable: boolean,\n ctx: TaskRunContext\n ): Promise<Output | undefined> {\n if (!outputCache || !this.task.cacheable) return undefined;\n\n const cached = await outputCache.getOutput(this.task.type, keyInputs);\n if (cached === undefined) return undefined;\n\n const outputSchema = (this.task.constructor as typeof Task).outputSchema();\n const outputs = (await CacheCoordinator.deserializeOutputPorts(\n cached as Record<string, unknown>,\n outputSchema as unknown as SchemaProperties\n )) as Output;\n\n ctx.telemetrySpan?.addEvent(\"workglow.task.cache_hit\");\n\n if (isStreamable) {\n this.task.runOutputData = outputs;\n this.task.emit(\"stream_start\");\n this.task.emit(\"stream_chunk\", { type: \"finish\", data: outputs } as StreamEvent);\n this.task.emit(\"stream_end\", outputs);\n } else {\n this.task.runOutputData = outputs;\n }\n\n return outputs;\n }\n\n /**\n * Serializes and saves output. No-op when no cache is configured or task is\n * not cacheable.\n */\n async save(\n keyInputs: Input,\n output: Output,\n outputCache: TaskOutputRepository | undefined\n ): Promise<void> {\n if (!outputCache || !this.task.cacheable || output === undefined) return;\n const outputSchema = (this.task.constructor as typeof Task).outputSchema();\n const wireOutputs = await CacheCoordinator.serializeOutputPorts(\n output as Record<string, unknown>,\n outputSchema as unknown as SchemaProperties\n );\n await outputCache.saveOutput(this.task.type, keyInputs, wireOutputs as Output);\n }\n\n // ========================================================================\n // Policy-aware routing methods\n // ========================================================================\n\n /**\n * Resolve the repository slot to use given a registry and policy. Returns\n * `undefined` if the registry is missing, the policy is `kind: \"none\"`, or\n * the relevant slot is unregistered. All callers treat `undefined` as \"skip\n * caching\" — no errors, no warnings.\n */\n private repoFor(\n registry: CacheRegistry | undefined,\n policy: CachePolicy\n ): TaskOutputRepository | undefined {\n if (!registry || !isPolicyCached(policy)) return undefined;\n return isPolicyPrivate(policy) ? registry.private : registry.deterministic;\n }\n\n public async buildKeyForPolicy(\n inputs: Input,\n registry: CacheRegistry | undefined,\n policy: CachePolicy\n ): Promise<Input> {\n return this.buildKey(inputs, this.repoFor(registry, policy));\n }\n\n public async lookupByPolicy(\n keyInputs: Input,\n registry: CacheRegistry | undefined,\n policy: CachePolicy,\n isStreamable: boolean,\n ctx: TaskRunContext\n ): Promise<Output | undefined> {\n return this.lookup(keyInputs, this.repoFor(registry, policy), isStreamable, ctx);\n }\n\n public async saveByPolicy(\n keyInputs: Input,\n output: Output,\n registry: CacheRegistry | undefined,\n policy: CachePolicy\n ): Promise<void> {\n return this.save(keyInputs, output, this.repoFor(registry, policy));\n }\n\n // ========================================================================\n // Private static helpers (lifted from current module-private functions in\n // TaskRunner.ts)\n // ========================================================================\n\n private static async serializeOutputPorts(\n output: Record<string, unknown>,\n schema: SchemaProperties\n ): Promise<Record<string, unknown>> {\n if (!schema?.properties) return output;\n const out: Record<string, unknown> = { ...output };\n for (const [key, prop] of Object.entries(schema.properties)) {\n const codec = prop.format ? getPortCodec(prop.format) : undefined;\n if (codec && out[key] !== undefined) {\n out[key] = await codec.serialize(out[key]);\n }\n }\n return out;\n }\n\n private static async deserializeOutputPorts(\n output: Record<string, unknown>,\n schema: SchemaProperties\n ): Promise<Record<string, unknown>> {\n if (!schema?.properties) return output;\n const out: Record<string, unknown> = { ...output };\n for (const [key, prop] of Object.entries(schema.properties)) {\n const codec = prop.format ? getPortCodec(prop.format) : undefined;\n if (codec && out[key] !== undefined) {\n out[key] = await codec.deserialize(out[key]);\n }\n }\n return out;\n }\n\n private static async normalizeInputsForCacheKey(\n inputs: Record<string, unknown>,\n schema: SchemaProperties\n ): Promise<Record<string, unknown>> {\n if (!schema?.properties) return inputs;\n const out: Record<string, unknown> = { ...inputs };\n for (const [key, prop] of Object.entries(schema.properties)) {\n const codec = prop.format ? getPortCodec(prop.format) : undefined;\n if (codec && out[key] !== undefined) {\n out[key] = await codec.serialize(out[key]);\n }\n }\n return out;\n }\n}\n",
29
29
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ResourceScope, ServiceRegistry } from \"@workglow/util\";\nimport type { Taskish } from \"../task-graph/Conversions\";\nimport type { ITask } from \"./ITask\";\nimport type { StreamEvent, StreamMode } from \"./StreamTypes\";\nimport { getOutputStreamMode, getStreamingPorts } from \"./StreamTypes\";\nimport { TaskAbortedError, TaskError } from \"./TaskError\";\nimport type { TaskRunContext } from \"./TaskRunContext\";\nimport type { TaskInput, TaskOutput } from \"./TaskTypes\";\nimport { TaskStatus } from \"./TaskTypes\";\n\n/**\n * Per-call run-state inputs shared by StreamProcessor.run. Bundles facade\n * state pulled at call time (registry, resourceScope, inputStreams) and\n * facade methods bound to the facade instance (onProgress, own).\n *\n * @internal\n */\nexport interface StreamProcessorDeps {\n readonly registry: ServiceRegistry;\n readonly resourceScope: ResourceScope | undefined;\n readonly inputStreams: Map<string, ReadableStream<StreamEvent>> | undefined;\n readonly onProgress: (\n progress: number | undefined,\n message?: string,\n ...args: any[]\n ) => Promise<void>;\n readonly own: <T extends Taskish<any, any>>(i: T) => T;\n}\n\n/**\n * @internal\n * Streaming event loop. Consumes a task's executeStream() output, manages\n * text/object delta accumulators, mode switching (append/object/replace),\n * and finish-event enrichment. Honors ctx.shouldAccumulate and\n * ctx.abortController.signal.\n */\nexport class StreamProcessor<Input extends TaskInput, Output extends TaskOutput> {\n constructor(private readonly task: ITask<Input, Output, any>) {}\n\n async run(\n input: Input,\n ctx: TaskRunContext,\n deps: StreamProcessorDeps\n ): Promise<Output | undefined> {\n const streamMode: StreamMode = getOutputStreamMode(this.task.outputSchema());\n if (streamMode === \"append\") {\n const ports = getStreamingPorts(this.task.outputSchema());\n if (ports.length === 0) {\n throw new TaskError(\n `Task ${this.task.type} declares append streaming but no output port has x-stream: \"append\"`\n );\n }\n }\n if (streamMode === \"object\") {\n const ports = getStreamingPorts(this.task.outputSchema());\n if (ports.length === 0) {\n throw new TaskError(\n `Task ${this.task.type} declares object streaming but no output port has x-stream: \"object\"`\n );\n }\n }\n\n const accumulated = ctx.shouldAccumulate ? new Map<string, string>() : undefined;\n const accumulatedObjects = ctx.shouldAccumulate\n ? new Map<string, Record<string, unknown> | unknown[]>()\n : undefined;\n let streamingStarted = false;\n let finalOutput: Output | undefined;\n\n this.task.emit(\"stream_start\");\n\n const stream = this.task.executeStream!(input, {\n signal: ctx.abortController.signal,\n updateProgress: deps.onProgress,\n own: deps.own,\n registry: deps.registry,\n resourceScope: deps.resourceScope,\n inputStreams: deps.inputStreams,\n });\n\n for await (const event of stream) {\n // For snapshot events, update runOutputData BEFORE emitting stream_chunk\n // so listeners see the latest snapshot when they handle the event.\n if (event.type === \"snapshot\") {\n this.task.runOutputData = event.data as Output;\n }\n\n switch (event.type) {\n case \"phase\": {\n // Phase events are metadata: emit for observability, translate to a\n // progress event with optional progress + message, do NOT mutate\n // accumulators or runOutputData, do NOT flip status to STREAMING.\n this.task.emit(\"stream_chunk\", event as StreamEvent);\n await deps.onProgress(event.progress, event.message);\n break;\n }\n case \"text-delta\": {\n if (!streamingStarted) {\n streamingStarted = true;\n this.task.status = TaskStatus.STREAMING;\n this.task.emit(\"status\", this.task.status);\n }\n if (accumulated) {\n accumulated.set(event.port, (accumulated.get(event.port) ?? \"\") + event.textDelta);\n }\n this.task.emit(\"stream_chunk\", event as StreamEvent);\n break;\n }\n case \"object-delta\": {\n if (!streamingStarted) {\n streamingStarted = true;\n this.task.status = TaskStatus.STREAMING;\n this.task.emit(\"status\", this.task.status);\n }\n if (accumulatedObjects) {\n const existing = accumulatedObjects.get(event.port);\n if (Array.isArray(event.objectDelta)) {\n // Array delta: upsert items by `id` into accumulated array\n const arr: unknown[] = Array.isArray(existing) ? [...existing] : [];\n for (const item of event.objectDelta) {\n const itemObj = item as Record<string, unknown>;\n if (itemObj && typeof itemObj === \"object\" && \"id\" in itemObj) {\n const idx = arr.findIndex(\n (e) => (e as Record<string, unknown>).id === itemObj.id\n );\n if (idx >= 0) arr[idx] = item;\n else arr.push(item);\n } else {\n arr.push(item);\n }\n }\n accumulatedObjects.set(event.port, arr);\n } else {\n // Non-array (e.g. structured generation): replace semantics\n accumulatedObjects.set(event.port, event.objectDelta);\n }\n }\n // Update runOutputData with accumulated state so listeners see growing state\n this.task.runOutputData = {\n ...this.task.runOutputData,\n [event.port]: accumulatedObjects?.get(event.port) ?? event.objectDelta,\n } as Output;\n this.task.emit(\"stream_chunk\", event as StreamEvent);\n break;\n }\n case \"snapshot\": {\n if (!streamingStarted) {\n streamingStarted = true;\n this.task.status = TaskStatus.STREAMING;\n this.task.emit(\"status\", this.task.status);\n }\n this.task.emit(\"stream_chunk\", event as StreamEvent);\n break;\n }\n case \"finish\": {\n if (accumulated || accumulatedObjects) {\n // Emit an enriched finish event: merge accumulated deltas into\n // the finish payload so downstream dataflows get complete port data\n // without needing to re-accumulate themselves.\n const merged: Record<string, unknown> = { ...(event.data || {}) };\n if (accumulated) {\n for (const [port, text] of accumulated) {\n if (text.length > 0) merged[port] = text;\n }\n }\n if (accumulatedObjects) {\n for (const [port, obj] of accumulatedObjects) {\n merged[port] = obj;\n }\n }\n // For replace-mode streams, finish carries data: {} by convention.\n // Fall back to the last snapshot (runOutputData) so the final output\n // is not silently cleared when the finish payload is empty.\n if (streamMode === \"replace\" && Object.keys(merged).length === 0) {\n const lastSnapshot = this.task.runOutputData;\n if (lastSnapshot && Object.keys(lastSnapshot).length > 0) {\n finalOutput = lastSnapshot as Output;\n this.task.emit(\"stream_chunk\", {\n type: \"finish\",\n data: lastSnapshot,\n } as StreamEvent);\n break;\n }\n }\n finalOutput = merged as unknown as Output;\n this.task.emit(\"stream_chunk\", { type: \"finish\", data: merged } as StreamEvent);\n } else {\n // No accumulation. For replace-mode streams the provider's finish\n // event carries `data: {}` by convention — the snapshots already\n // delivered the value, so the finish payload is intentionally\n // empty. Fall back to `runOutputData` (set on every snapshot above)\n // so we don't clobber the last snapshot with an empty object. This\n // mirrors the same fallback in the accumulation branch.\n const finishData = (event.data ?? {}) as Record<string, unknown>;\n if (streamMode === \"replace\" && Object.keys(finishData).length === 0) {\n const lastSnapshot = this.task.runOutputData;\n if (lastSnapshot && Object.keys(lastSnapshot).length > 0) {\n finalOutput = lastSnapshot as Output;\n this.task.emit(\"stream_chunk\", {\n type: \"finish\",\n data: lastSnapshot,\n } as StreamEvent);\n break;\n }\n }\n finalOutput = event.data as Output;\n this.task.emit(\"stream_chunk\", event as StreamEvent);\n }\n break;\n }\n case \"error\": {\n throw event.error;\n }\n }\n }\n\n // Check if the task was aborted during streaming\n if (ctx.abortController.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted during streaming\");\n }\n\n if (finalOutput !== undefined) {\n this.task.runOutputData = finalOutput;\n }\n\n this.task.emit(\"stream_end\", this.task.runOutputData as Output);\n\n return this.task.runOutputData as Output;\n }\n}\n",
30
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ISpan } from \"@workglow/util\";\nimport type { TaskTimeoutError } from \"./TaskError\";\n\n/**\n * @internal\n * Per-run mutable state for a single TaskRunner.run() / runPreview() invocation.\n * Built by TaskRunner.handleStart, discarded by handleComplete / handleError / handleAbort.\n *\n * Long-lived state (task, registry, resourceScope, outputCache default, accumulateLeafOutputs)\n * stays on the facade. TaskRunContext only holds state created at run start and torn down\n * at run end.\n */\nexport class TaskRunContext {\n readonly abortController: AbortController;\n\n shouldAccumulate: boolean = true;\n telemetrySpan?: ISpan;\n timeoutTimer?: ReturnType<typeof setTimeout>;\n pendingTimeoutError?: TaskTimeoutError;\n\n // Removes the parentSignal abort listener; set in the constructor when\n // parentSignal is provided. Idempotent dispose().\n private parentSignalCleanup?: () => void;\n\n constructor(parentSignal?: AbortSignal) {\n this.abortController = new AbortController();\n if (parentSignal) {\n // Listen first, then check — addEventListener on an already-aborted signal\n // does not fire, so checking .aborted after ensures we never miss an abort.\n const onParentAbort = () => this.abortController.abort();\n parentSignal.addEventListener(\"abort\", onParentAbort, { once: true });\n this.parentSignalCleanup = () => parentSignal.removeEventListener(\"abort\", onParentAbort);\n if (parentSignal.aborted) {\n this.parentSignalCleanup();\n this.parentSignalCleanup = undefined;\n this.abortController.abort();\n }\n }\n }\n\n /**\n * Releases external listeners (parentSignal abort handler). Idempotent.\n * Called by terminal handlers (handleComplete / handleError / handleAbort)\n * so a parent abort fired after this run completes does not re-trigger our\n * abort path and emit a duplicate terminal event.\n */\n dispose(): void {\n this.parentSignalCleanup?.();\n this.parentSignalCleanup = undefined;\n }\n}\n",
30
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ISpan } from \"@workglow/util\";\nimport type { TaskTimeoutError } from \"./TaskError\";\n\n/**\n * @internal\n * Per-run mutable state for a single TaskRunner.run() / runPreview() invocation.\n * Built by TaskRunner.handleStart, discarded by handleComplete / handleError / handleAbort.\n *\n * Long-lived state (task, registry, resourceScope, outputCache default, accumulateLeafOutputs)\n * stays on the facade. TaskRunContext only holds state created at run start and torn down\n * at run end.\n */\nexport class TaskRunContext {\n readonly abortController: AbortController;\n\n shouldAccumulate: boolean = true;\n telemetrySpan?: ISpan;\n timeoutTimer?: ReturnType<typeof setTimeout>;\n pendingTimeoutError?: TaskTimeoutError;\n\n /**\n * Set by the first terminal handler (handleAbort / handleComplete / handleError /\n * handleDisable) that runs for this ctx. Lets handlers be idempotent per-ctx\n * without leaning on `task.status`, which is externally observable and can be\n * mutated by adjacent runs.\n */\n terminated: boolean = false;\n\n // Removes the parentSignal abort listener; set in the constructor when\n // parentSignal is provided. Idempotent dispose().\n private parentSignalCleanup?: () => void;\n\n constructor(parentSignal?: AbortSignal) {\n this.abortController = new AbortController();\n if (parentSignal) {\n // Listen first, then check — addEventListener on an already-aborted signal\n // does not fire, so checking .aborted after ensures we never miss an abort.\n const onParentAbort = () => this.abortController.abort();\n parentSignal.addEventListener(\"abort\", onParentAbort, { once: true });\n this.parentSignalCleanup = () => parentSignal.removeEventListener(\"abort\", onParentAbort);\n if (parentSignal.aborted) {\n this.parentSignalCleanup();\n this.parentSignalCleanup = undefined;\n this.abortController.abort();\n }\n }\n }\n\n /**\n * Releases external listeners (parentSignal abort handler). Idempotent.\n * Called by terminal handlers (handleComplete / handleError / handleAbort)\n * so a parent abort fired after this run completes does not re-trigger our\n * abort path and emit a duplicate terminal event.\n */\n dispose(): void {\n this.parentSignalCleanup?.();\n this.parentSignalCleanup = undefined;\n }\n}\n",
31
31
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getLogger } from \"@workglow/util\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { previewSource } from \"@workglow/util/media\";\nimport type { ITask } from \"../task/ITask\";\nimport type { TaskInput, TaskOutput } from \"../task/TaskTypes\";\nimport { TaskStatus } from \"../task/TaskTypes\";\nimport { DATAFLOW_ALL_PORTS, DATAFLOW_ERROR_PORT } from \"./Dataflow\";\nimport type { TaskGraph } from \"./TaskGraph\";\nimport type { TaskGraphRunner } from \"./TaskGraphRunner\";\n\n/**\n * @internal\n * Reads inputs from incoming dataflows, writes outputs/errors to outgoing dataflows.\n * Owns dataflow transforms and error-port routing.\n *\n * Methods take the task they operate on. None take a RunContext — the caller\n * (TaskGraphRunner.runTask or RunScheduler.runLoop) is responsible for routing\n * any errors that bubble out of these methods into ctx.failedTaskErrors.\n *\n * Holds a back-reference to the facade so it can read facade-owned long-lived\n * state (`registry`, `previewRunning`) and route through the facade's\n * `runScheduler` for status push and disabled cascade.\n */\nexport class EdgeMaterializer {\n constructor(\n private readonly graph: TaskGraph,\n private readonly runner: TaskGraphRunner\n ) {}\n\n /**\n * Filters graph-level input to only include properties that are not connected via dataflows for a given task\n * @param task The task to filter input for\n * @param input The graph-level input\n * @returns Filtered input containing only unconnected properties\n */\n public filterInputForTask(task: ITask, input: TaskInput): TaskInput {\n // Get all inputs that are connected to this task via dataflows\n const sourceDataflows = this.graph.getSourceDataflows(task.id);\n const connectedInputs = new Set(sourceDataflows.map((df) => df.targetTaskPortId));\n\n // If DATAFLOW_ALL_PORTS (\"*\") is in the set, all inputs are connected\n const allPortsConnected = connectedInputs.has(DATAFLOW_ALL_PORTS);\n\n // Filter out connected inputs from the graph input\n const filteredInput: TaskInput = {};\n for (const [key, value] of Object.entries(input)) {\n // Skip this input if it's explicitly connected OR if all ports are connected\n if (!connectedInputs.has(key) && !allPortsConnected) {\n filteredInput[key] = value;\n }\n }\n\n return filteredInput;\n }\n\n /**\n * Copies input data from edges to a task\n * @param task The task to copy input data to\n */\n public copyInputFromEdgesToNode(task: ITask) {\n const dataflows = this.graph.getSourceDataflows(task.id);\n // Sort by dataflow id for deterministic input merging regardless of insertion order\n dataflows.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));\n for (const dataflow of dataflows) {\n // Use getCurrentValue() to pick up latestSnapshot when the edge is\n // mid-stream (i.e. value is undefined but latestSnapshot is populated).\n // We re-implement getPortData()'s wrapping with the live value.\n const live = dataflow.getCurrentValue();\n const port = dataflow.targetTaskPortId;\n let portData: TaskOutput;\n if (port === DATAFLOW_ALL_PORTS) {\n portData = live as TaskOutput;\n } else if (port === DATAFLOW_ERROR_PORT) {\n portData = { [DATAFLOW_ERROR_PORT]: dataflow.error } as unknown as TaskOutput;\n } else {\n portData = { [port]: live } as TaskOutput;\n }\n this.runner.addInputData(task, portData);\n }\n }\n\n /**\n * Pushes the output of a task to its target tasks\n * @param node The task that produced the output\n * @param results The output of the task\n */\n public async pushOutputFromNodeToEdges(node: ITask, results: TaskOutput) {\n const dataflows = this.graph.getTargetDataflows(node.id);\n\n // Preview-mode chain-head downscale: apply `previewSource` to any\n // image-shaped output before it's pushed downstream. This relocates the\n // per-task `executePreview` invocation of `previewSource` to the engine,\n // where it fires once per chain head and is idempotent on already-small\n // images (returns the input unchanged when within budget).\n // Bracket access — previewRunning stays protected on the facade.\n if (this.runner[\"previewRunning\"] && Object.keys(results).length > 0) {\n for (const port of Object.keys(results)) {\n const value = (results as Record<string, unknown>)[port];\n if (EdgeMaterializer.isImageValueShape(value)) {\n (results as Record<string, unknown>)[port] = await previewSource(value as ImageValue);\n }\n }\n }\n\n for (const dataflow of dataflows) {\n // Edges with an active stream have their final value materialised by the\n // downstream task's awaitStreamInputs (which uses Dataflow.awaitStreamValue\n // to read the raw snapshot/finish data and then applies transforms).\n // Setting port data here would be overwritten by the finish event, and\n // applying transforms again on this path would double-apply\n // non-idempotent transforms, so skip the whole post-materialisation step.\n if (dataflow.stream !== undefined) continue;\n // Bracket access — registry stays protected on the facade.\n const registry = this.runner[\"registry\"];\n const compatibility = dataflow.semanticallyCompatible(this.graph, dataflow, registry);\n if (compatibility === \"static\") {\n dataflow.setPortData(results);\n await dataflow.applyTransforms(registry);\n } else if (compatibility === \"runtime\") {\n const task = this.graph.getTask(dataflow.targetTaskId)!;\n const narrowed = await task.narrowInput({ ...results }, registry);\n dataflow.setPortData(narrowed);\n await dataflow.applyTransforms(registry);\n } else {\n // Warn only when we had data to push; empty results (e.g. progress mid-run) are expected\n const resultsKeys = Object.keys(results);\n if (resultsKeys.length > 0) {\n getLogger().warn(\"pushOutputFromNodeToEdge not compatible, not setting port data\", {\n dataflowId: dataflow.id,\n compatibility,\n resultsKeys,\n });\n }\n }\n }\n }\n\n /**\n * Pushes the error of a task to its target edges\n * @param node The task that produced the error\n */\n public pushErrorFromNodeToEdges(node: ITask): void {\n if (!node?.config?.id) return;\n this.graph.getTargetDataflows(node.id).forEach((dataflow) => {\n dataflow.error = node.error;\n });\n }\n\n /**\n * Returns true if the task has any outgoing dataflow edges that use the\n * error output port (`[error]`). These edges indicate that the task's\n * errors should be routed to downstream handler tasks instead of failing\n * the entire graph.\n */\n public hasErrorOutputEdges(task: ITask): boolean {\n const dataflows = this.graph.getTargetDataflows(task.id);\n return dataflows.some((df) => df.sourceTaskPortId === DATAFLOW_ERROR_PORT);\n }\n\n /**\n * Routes a failed task's error through its error-port dataflow edges.\n *\n * For each outgoing dataflow:\n * - Error-port edges (`[error]`) receive the error data and get COMPLETED status\n * - Non-error-port edges get DISABLED status (the task didn't produce normal output)\n *\n * After setting edge statuses, propagateDisabledStatus() cascades DISABLED\n * through any downstream tasks that only had non-error inputs from this task.\n */\n public pushErrorOutputToEdges(task: ITask): void {\n const taskError = task.error;\n const errorData = {\n error: taskError?.message ?? \"Unknown error\",\n errorType: (taskError?.constructor as { type?: string })?.type ?? \"TaskError\",\n };\n\n const dataflows = this.graph.getTargetDataflows(task.id);\n for (const df of dataflows) {\n if (df.sourceTaskPortId === DATAFLOW_ERROR_PORT) {\n // Route error data to the error-port edge\n df.value = errorData;\n df.setStatus(TaskStatus.COMPLETED);\n } else {\n // Normal output edges are disabled — this task didn't produce output\n df.setStatus(TaskStatus.DISABLED);\n }\n }\n\n // Cascade disabled status to downstream tasks whose ALL inputs are now disabled.\n // Bracket access — runScheduler and currentCtx stay protected on the facade.\n this.runner[\"runScheduler\"].propagateDisabledStatus(this.runner[\"currentCtx\"]);\n }\n\n /**\n * Resets a task. Takes an explicit `graph` because `resetGraph` recurses\n * into `node.subGraph` for nested tasks and the EdgeMaterializer's own\n * `this.graph` reference is bound to the top-level graph only.\n *\n * @param graph The task graph that owns the task being reset\n * @param task The task to reset\n * @param runId The run ID\n */\n public resetTask(graph: TaskGraph, task: ITask, runId: string) {\n task.status = TaskStatus.PENDING;\n task.resetInputData();\n task.runOutputData = {};\n task.error = undefined;\n task.progress = 0;\n task.runConfig = { ...task.runConfig, runnerId: runId };\n // Bracket access — runScheduler and currentCtx stay protected on the facade.\n this.runner[\"runScheduler\"].pushStatusFromNodeToEdges(\n task,\n this.runner[\"currentCtx\"],\n undefined,\n graph\n );\n // Inline the error-edge reset using the per-call graph (this.pushErrorFromNodeToEdges\n // would use this.graph, which is wrong for recursive subgraph resets).\n if (task?.config?.id) {\n graph.getTargetDataflows(task.id).forEach((dataflow) => {\n dataflow.error = task.error;\n });\n }\n task.emit(\"reset\");\n task.emit(\"status\", task.status);\n }\n\n /**\n * Duck-typed predicate for an `ImageValue`-shaped output, used by the engine\n * to decide whether to apply `previewSource` during `runPreview`. Unlike\n * `isImageValue` from `@workglow/util/media`, this predicate does not check\n * `instanceof ImageBitmap` / `Buffer.isBuffer`, so it remains correct across\n * realm boundaries (e.g. bundle copies in test harnesses) where those identity\n * checks can spuriously fail.\n */\n private static isImageValueShape(\n v: unknown\n ): v is { width: number; height: number; previewScale: number } {\n if (v === null || typeof v !== \"object\") return false;\n const o = v as Record<string, unknown>;\n return (\n typeof o.width === \"number\" &&\n typeof o.height === \"number\" &&\n typeof o.previewScale === \"number\"\n );\n }\n}\n",
32
32
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ISpan } from \"@workglow/util\";\nimport { uuid4 } from \"@workglow/util\";\nimport type { IEntitlementEnforcer } from \"../task/EntitlementEnforcer\";\nimport type { TaskError, TaskGraphTimeoutError } from \"../task/TaskError\";\nimport type { TaskOutput } from \"../task/TaskTypes\";\n\n/**\n * @internal\n * Per-run mutable state for a single TaskGraphRunner.runGraph() invocation.\n * Built by TaskGraphRunner.handleStart(), discarded by handleComplete/Error/Abort.\n *\n * All long-lived state (graph, schedulers, registry, resourceScope, outputCache,\n * accumulateLeafOutputs) stays on the facade. RunContext only holds state that is\n * created at the start of a run and torn down when the run terminates.\n */\nexport class RunContext {\n readonly runId: string;\n readonly abortController: AbortController;\n readonly inProgressTasks: Map<unknown, Promise<TaskOutput>> = new Map();\n readonly inProgressFunctions: Map<unknown, Promise<void>> = new Map();\n readonly failedTaskErrors: Map<unknown, TaskError> = new Map();\n\n telemetrySpan?: ISpan;\n graphTimeoutTimer?: ReturnType<typeof setTimeout>;\n pendingGraphTimeoutError?: TaskGraphTimeoutError;\n activeEnforcer?: IEntitlementEnforcer;\n\n // Removes the parentSignal abort listener, if one was registered. Set in the\n // constructor when parentSignal is provided; called from dispose().\n private parentSignalCleanup?: () => void;\n\n constructor(parentSignal?: AbortSignal) {\n this.runId = uuid4();\n this.abortController = new AbortController();\n if (parentSignal) {\n // Listen first, then check — addEventListener on an already-aborted signal\n // does not fire, so checking .aborted after ensures we never miss an abort.\n // Pattern preserved from commit 4e50c99e.\n const onParentAbort = () => this.abortController.abort();\n parentSignal.addEventListener(\"abort\", onParentAbort, { once: true });\n this.parentSignalCleanup = () => parentSignal.removeEventListener(\"abort\", onParentAbort);\n if (parentSignal.aborted) {\n this.parentSignalCleanup();\n this.parentSignalCleanup = undefined;\n this.abortController.abort();\n }\n }\n }\n\n /**\n * Releases external listeners (parentSignal abort handler). Idempotent.\n * Called by terminal handlers (handleComplete/Error/Abort) so a parent abort\n * fired after this run completes does not re-trigger our abort path and emit\n * a duplicate terminal event.\n */\n dispose(): void {\n this.parentSignalCleanup?.();\n this.parentSignalCleanup = undefined;\n }\n}\n",
33
33
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getLogger } from \"@workglow/util\";\nimport { ConditionalTask } from \"../task/ConditionalTask\";\nimport type { ITask } from \"../task/ITask\";\nimport { TaskError, TaskGraphTimeoutError } from \"../task/TaskError\";\nimport type { TaskInput, TaskOutput } from \"../task/TaskTypes\";\nimport { TaskStatus } from \"../task/TaskTypes\";\nimport type { EdgeMaterializer } from \"./EdgeMaterializer\";\nimport type { RunContext } from \"./RunContext\";\nimport type { TaskGraph, TaskGraphRunConfig } from \"./TaskGraph\";\nimport type { GraphResultArray, GraphSingleTaskResult, TaskGraphRunner } from \"./TaskGraphRunner\";\nimport { taskPrototypeHasOwnExecute } from \"./TaskGraphRunner\";\nimport type { ITaskGraphScheduler } from \"./TaskGraphScheduler\";\n\n/**\n * @internal\n * Run-loop coordinator. Drives task selection via processScheduler,\n * arms graph-level timeout, propagates disabled cascade, aggregates progress,\n * and pushes status to outgoing edges.\n *\n * Stateless across runs — all per-run state arrives via `ctx`.\n *\n * Holds a back-reference to the facade so runLoop can call facade.runTask().\n * This keeps runTask as the single per-task choreography point that wires\n * EdgeMaterializer + StreamPump + the integration with TaskRunner.\n */\nexport class RunScheduler {\n constructor(\n private readonly graph: TaskGraph,\n private readonly processScheduler: ITaskGraphScheduler,\n private readonly facade: TaskGraphRunner\n ) {}\n\n /**\n * Pushes the status of a task to its target edges\n * @param node The task that produced the status\n *\n * For ConditionalTask, this method handles selective dataflow status:\n * - Active branch dataflows get COMPLETED status\n * - Inactive branch dataflows get DISABLED status\n */\n pushStatusFromNodeToEdges(\n node: ITask,\n ctx: RunContext | undefined,\n status?: TaskStatus,\n graph: TaskGraph = this.graph\n ): void {\n if (!node?.config?.id) return;\n\n const dataflows = graph.getTargetDataflows(node.id);\n const effectiveStatus = status ?? node.status;\n\n // Check if this is a ConditionalTask with selective branching\n if (node instanceof ConditionalTask && effectiveStatus === TaskStatus.COMPLETED) {\n // Build a map of output port -> branch ID for lookup\n const branches = node.config.branches ?? [];\n const portToBranch = new Map<string, string>();\n for (const branch of branches) {\n portToBranch.set(branch.outputPort, branch.id);\n }\n\n const activeBranches = node.getActiveBranches();\n\n for (const dataflow of dataflows) {\n // Preserve FAILED edges (e.g. transform chain failure) rather than\n // overwriting with the source task's completion status.\n if (dataflow.status === TaskStatus.FAILED) continue;\n const branchId = portToBranch.get(dataflow.sourceTaskPortId);\n if (branchId !== undefined) {\n // This dataflow is from a branch port\n if (activeBranches.has(branchId)) {\n // Branch is active - dataflow gets completed status\n dataflow.setStatus(TaskStatus.COMPLETED);\n } else {\n // Branch is inactive - dataflow gets disabled status\n dataflow.setStatus(TaskStatus.DISABLED);\n }\n } else {\n // Not a branch port (e.g., _activeBranches metadata) - use normal status\n dataflow.setStatus(effectiveStatus);\n }\n }\n\n // Cascade disabled status to downstream tasks\n this.propagateDisabledStatus(ctx, graph);\n return;\n }\n\n // Default behavior for non-conditional tasks\n dataflows.forEach((dataflow) => {\n // Preserve FAILED edges (e.g. transform chain failure) rather than\n // overwriting with the source task's completion status.\n if (dataflow.status === TaskStatus.FAILED) return;\n dataflow.setStatus(effectiveStatus);\n });\n }\n\n /**\n * Propagates DISABLED status through the graph.\n *\n * When a task's ALL incoming dataflows are DISABLED, that task becomes unreachable\n * and should also be disabled. This cascades through the graph until no more\n * tasks can be disabled.\n *\n * This is used by ConditionalTask to disable downstream tasks on inactive branches.\n *\n * `_ctx` is accepted for symmetry with other RunScheduler methods (which thread\n * per-run state through the RunContext) and to leave room for future per-run\n * scheduling state without a signature change. Currently unused — the cascade\n * operates on graph-level task status alone.\n */\n propagateDisabledStatus(_ctx: RunContext | undefined, graph: TaskGraph = this.graph): void {\n let changed = true;\n\n // Keep iterating until no more changes (fixed-point iteration)\n while (changed) {\n changed = false;\n\n for (const task of graph.getTasks()) {\n // Only consider tasks that are still pending\n if (task.status !== TaskStatus.PENDING) {\n continue;\n }\n\n const incomingDataflows = graph.getSourceDataflows(task.id);\n\n // Skip tasks with no incoming dataflows (root tasks)\n if (incomingDataflows.length === 0) {\n continue;\n }\n\n // Check if ALL incoming dataflows are DISABLED\n const allDisabled = incomingDataflows.every((df) => df.status === TaskStatus.DISABLED);\n\n if (allDisabled) {\n // This task is unreachable - disable it synchronously\n // Set status directly to avoid async issues\n task.status = TaskStatus.DISABLED;\n task.progress = 100;\n task.completedAt = new Date();\n task.emit(\"disabled\");\n task.emit(\"status\", task.status);\n\n // Propagate disabled status to its outgoing dataflows\n graph.getTargetDataflows(task.id).forEach((dataflow) => {\n dataflow.setStatus(TaskStatus.DISABLED);\n });\n\n // Mark as completed in scheduler so it doesn't wait for this task\n this.processScheduler.onTaskCompleted(task.id);\n\n changed = true;\n }\n }\n }\n }\n\n /**\n * Handles progress updates for the task graph by averaging `progress` across tasks whose class\n * declares its own `execute` (see {@link taskPrototypeHasOwnExecute}). Other nodes are ignored.\n */\n async handleProgress(\n ctx: RunContext,\n task: ITask,\n progress: number | undefined,\n message?: string,\n ...args: any[]\n ): Promise<void> {\n const contributors = this.graph.getTasks().filter(taskPrototypeHasOwnExecute);\n if (contributors.length > 1) {\n const determinate = contributors.filter((t) => t.progress !== undefined);\n if (determinate.length === 0) {\n progress = undefined;\n } else {\n const sum = determinate.reduce((acc, t) => acc + t.progress!, 0);\n progress = Math.round(sum / determinate.length);\n }\n } else if (contributors.length === 1) {\n const [only] = contributors;\n progress = only.progress;\n }\n this.pushStatusFromNodeToEdges(task, ctx);\n // Emit aggregate progress before awaiting output push so UIs (and task `emit(\"progress\")` in\n // TaskRunner) are not blocked when pushOutput/narrowInput is slow or stalls mid-run.\n this.graph.emit(\"graph_progress\", progress, message, args);\n // Only push output for mid-run progress ticks while the task is actively executing.\n // Terminal-state handlers (complete, abort, error, disable) set task.status to their\n // terminal value before calling handleProgress(100), so the output push is skipped here —\n // the graph runner's own post-run pushOutputFromNodeToEdges handles the completed case.\n const isActive = task.status === TaskStatus.PROCESSING || task.status === TaskStatus.STREAMING;\n if (isActive && task.runOutputData && Object.keys(task.runOutputData).length > 0) {\n // Bracket access keeps `edgeMaterializer` protected on the facade — only `runScheduler` was widened to public.\n await this.facade[\"edgeMaterializer\"].pushOutputFromNodeToEdges(task, task.runOutputData);\n }\n }\n\n /**\n * Arms the graph-level timeout. The timer fires `pendingGraphTimeoutError`\n * and aborts the run when elapsed. No-op when `timeoutMs <= 0`.\n *\n * @remarks Treats `timeoutMs <= 0` as \"no timeout\" (silent no-op), not as\n * \"fire immediately\". Callers that want immediate cancellation should call\n * `ctx.abortController.abort()` directly.\n */\n armGraphTimeout(timeoutMs: number, ctx: RunContext): void {\n if (timeoutMs <= 0) return;\n ctx.pendingGraphTimeoutError = undefined;\n ctx.graphTimeoutTimer = setTimeout(() => {\n ctx.pendingGraphTimeoutError = new TaskGraphTimeoutError(timeoutMs);\n ctx.abortController.abort();\n }, timeoutMs);\n }\n\n /**\n * Clears the graph-level timeout timer if active.\n */\n clearGraphTimeout(ctx: RunContext): void {\n if (ctx.graphTimeoutTimer !== undefined) {\n clearTimeout(ctx.graphTimeoutTimer);\n ctx.graphTimeoutTimer = undefined;\n }\n }\n\n /**\n * Inner for-await loop body of {@link TaskGraphRunner.runGraph}. Drives the\n * processScheduler, dispatches tasks via `facade.runTask`, routes errors,\n * and pushes status/error to outgoing edges. Returns the per-leaf results\n * (terminal-state precedence is the facade's responsibility).\n */\n async runLoop<O extends TaskOutput>(\n input: TaskInput,\n config: TaskGraphRunConfig | undefined,\n ctx: RunContext,\n edgeMat: EdgeMaterializer\n ): Promise<GraphResultArray<O>> {\n const results: GraphResultArray<O> = [];\n\n try {\n // TODO: A different graph runner may chunk tasks that are in parallel\n // rather them all currently available\n for await (const task of this.processScheduler.tasks()) {\n if (ctx.abortController.signal.aborted) {\n break;\n }\n\n if (ctx.failedTaskErrors.size > 0) {\n break;\n }\n\n const isRootTask = this.graph.getSourceDataflows(task.id).length === 0;\n\n const runAsync = async () => {\n let errorRouted = false;\n try {\n // Root tasks (no incoming dataflows) receive the graph run input so e.g.\n // InputTask can seed the graph. Downstream tasks rely only on dataflow\n // edges plus task defaults — unless matchAllEmptyInputs is true, in which case\n // we filter the input to only include properties that are not connected via dataflows.\n const taskInput = isRootTask\n ? input\n : config?.matchAllEmptyInputs\n ? edgeMat.filterInputForTask(task, input)\n : {};\n\n // Bracket access — runTask stays protected on purpose; this is the back-ref entry point.\n const taskPromise = this.facade[\"runTask\"](task, taskInput);\n ctx.inProgressTasks.set(task.id, taskPromise);\n const taskResult = await taskPromise;\n\n if (this.graph.getTargetDataflows(task.id).length === 0) {\n // we save the results of all the leaves\n results.push(taskResult as GraphSingleTaskResult<O>);\n }\n } catch (error) {\n if (edgeMat.hasErrorOutputEdges(task)) {\n // Route the error through error-port dataflows instead of failing the graph.\n // pushErrorOutputToEdges sets edge statuses directly (COMPLETED for error\n // edges, DISABLED for normal edges), so we skip the normal status push.\n errorRouted = true;\n edgeMat.pushErrorOutputToEdges(task);\n } else {\n ctx.failedTaskErrors.set(task.id, error as TaskError);\n }\n } finally {\n // IMPORTANT: Push status to edges BEFORE notifying scheduler\n // This ensures dataflow statuses (including DISABLED) are set\n // before the scheduler checks which tasks are ready.\n // Skip normal status push when error routing already set edge statuses.\n if (!errorRouted) {\n this.pushStatusFromNodeToEdges(task, ctx);\n edgeMat.pushErrorFromNodeToEdges(task);\n }\n this.processScheduler.onTaskCompleted(task.id);\n }\n };\n\n // Start task execution without awaiting\n // so we can have many tasks running in parallel\n // but keep track of them to make sure they get awaited\n // otherwise, things will finish after this promise is resolved\n ctx.inProgressFunctions.set(Symbol(task.id as string), runAsync());\n }\n } catch (err) {\n getLogger().error(\"Error running graph\", { error: err });\n }\n\n // Wait for all tasks to complete since we did not await runAsync()/this.runTaskWithProvenance()\n await Promise.allSettled(Array.from(ctx.inProgressTasks.values()));\n // Clean up stragglers to avoid unhandled promise rejections\n await Promise.allSettled(Array.from(ctx.inProgressFunctions.values()));\n\n return results;\n }\n}\n",
@@ -67,7 +67,7 @@
67
67
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { GraphAsTaskRunner } from \"./GraphAsTaskRunner\";\nimport type { TaskRunContext } from \"./TaskRunContext\";\nimport type { TaskInput, TaskOutput } from \"./TaskTypes\";\nimport type { WhileTask, WhileTaskConfig } from \"./WhileTask\";\n\n/**\n * Runner for WhileTask that delegates to the task's execute() method\n * instead of directly running the subgraph once (which is what\n * GraphAsTaskRunner does by default).\n *\n * This follows the same pattern as IteratorTaskRunner.\n */\nexport class WhileTaskRunner<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends WhileTaskConfig<Input, Output> = WhileTaskConfig<Input, Output>,\n> extends GraphAsTaskRunner<Input, Output, Config> {\n declare task: WhileTask<Input, Output, Config>;\n\n /**\n * Override executeTask to call the task's execute() method which\n * contains the while-loop logic, rather than the default\n * GraphAsTaskRunner behavior of running the subgraph once.\n */\n protected override async executeTask(\n input: Input,\n ctx: TaskRunContext\n ): Promise<Output | undefined> {\n const result = await this.task.execute(input, {\n signal: ctx.abortController.signal,\n updateProgress: this.handleProgress.bind(this),\n own: this.own,\n registry: this.registry,\n });\n\n return result;\n }\n\n /**\n * For WhileTask, preview runs use the task's preview hook only.\n */\n public override async executeTaskPreview(\n input: Input,\n _ctx: TaskRunContext\n ): Promise<Output | undefined> {\n return this.task.executePreview?.(input, { own: this.own });\n }\n}\n",
68
68
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { DataPortSchema } from \"@workglow/util/schema\";\nimport { Workflow } from \"../task-graph/Workflow\";\nimport { CreateEndLoopWorkflow, CreateLoopWorkflow } from \"../task-graph/WorkflowFactories\";\nimport { evaluateCondition, getNestedValue } from \"./ConditionUtils\";\nimport { GraphAsTask, GraphAsTaskConfig, graphAsTaskConfigSchema } from \"./GraphAsTask\";\nimport type { IExecuteContext, IRunConfig } from \"./ITask\";\nimport { resolveIterationBound, type IterationBound } from \"./IteratorTask\";\nimport type { StreamEvent, StreamFinish } from \"./StreamTypes\";\nimport { TaskConfigurationError, TaskFailedError } from \"./TaskError\";\nimport type { TaskInput, TaskOutput, TaskTypeName } from \"./TaskTypes\";\nimport { WhileTaskRunner } from \"./WhileTaskRunner\";\n\n/**\n * WhileTask context schema - only has index since count is unknown ahead of time.\n * Properties are marked with \"x-ui-iteration\": true so the builder\n * knows to hide them from parent-level display.\n */\nexport const WHILE_CONTEXT_SCHEMA: DataPortSchema = {\n type: \"object\",\n properties: {\n _iterationIndex: {\n type: \"integer\",\n minimum: 0,\n title: \"Iteration Number\",\n description: \"Current iteration number (0-based)\",\n \"x-ui-iteration\": true,\n },\n },\n};\n\n/**\n * Condition function type for WhileTask.\n * Receives the current output and iteration count, returns whether to continue looping.\n *\n * @param output - The output from the last iteration\n * @param iteration - The current iteration number (0-based)\n * @returns true to continue looping, false to stop\n */\nexport type WhileConditionFn<Output> = (output: Output, iteration: number) => boolean;\n\nexport const whileTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...graphAsTaskConfigSchema[\"properties\"],\n condition: {},\n maxIterations: {\n oneOf: [\n { type: \"integer\", minimum: 1 },\n { type: \"string\", const: \"unbounded\" },\n ],\n },\n chainIterations: { type: \"boolean\" },\n conditionField: { type: \"string\" },\n conditionOperator: { type: \"string\" },\n conditionValue: { type: \"string\" },\n iterationInputConfig: { type: \"object\", additionalProperties: true },\n },\n required: [\"maxIterations\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\n/**\n * Configuration for WhileTask.\n */\nexport type WhileTaskConfig<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n> = GraphAsTaskConfig<Input> & {\n /**\n * Condition function that determines whether to continue looping.\n * Called after each iteration with the current output and iteration count.\n * Returns true to continue, false to stop.\n */\n readonly condition?: WhileConditionFn<Output>;\n\n /**\n * Upper bound on the number of iterations. Required — pass `\"unbounded\"` to\n * explicitly opt out of the safety ceiling, or a positive integer to cap.\n * Prevents infinite loops when the condition function can't disqualify\n * unbounded runaway input.\n */\n readonly maxIterations: IterationBound;\n\n /**\n * Whether to pass the output of each iteration as input to the next.\n * When true, output from iteration N becomes input to iteration N+1.\n * @default true\n */\n readonly chainIterations?: boolean;\n\n /** Output field to evaluate for the loop condition. */\n readonly conditionField?: string;\n\n /** Comparison operator for the loop condition. */\n readonly conditionOperator?: string;\n\n /** Value to compare against for the loop condition. */\n readonly conditionValue?: string;\n\n /** Per-property iteration input configuration (scalar/array/flexible). */\n readonly iterationInputConfig?: Record<string, { mode: string; baseSchema?: unknown }>;\n};\n\n/**\n * WhileTask loops until a condition function returns false.\n *\n * This task is useful for:\n * - Iterative refinement processes\n * - Polling until a condition is met\n * - Convergence algorithms\n * - Retry logic with conditions\n *\n * ## Features\n *\n * - Loops until condition returns false\n * - Configurable maximum iterations (safety limit)\n * - Passes output from each iteration to the next\n * - Access to iteration count in condition function\n *\n * ## Usage\n *\n * ```typescript\n * // Refine until quality threshold\n * workflow\n * .while({\n * condition: (output, iteration) => output.quality < 0.9 && iteration < 10,\n * maxIterations: 20\n * })\n * .refineResult()\n * .evaluateQuality()\n * .endWhile()\n *\n * // Retry until success\n * workflow\n * .while({\n * condition: (output) => !output.success,\n * maxIterations: 5\n * })\n * .attemptOperation()\n * .endWhile()\n * ```\n *\n * @template Input - The input type for the while task\n * @template Output - The output type for the while task\n * @template Config - The configuration type\n */\nexport class WhileTask<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends WhileTaskConfig<Input, Output> = WhileTaskConfig<Input, Output>,\n> extends GraphAsTask<Input, Output, Config> {\n public static override type: TaskTypeName = \"WhileTask\";\n public static override category: string = \"Flow Control\";\n public static override title: string = \"While Loop\";\n public static override description: string = \"Loops until a condition function returns false\";\n\n /** This task has dynamic schemas based on the inner workflow */\n public static override hasDynamicSchemas: boolean = true;\n\n public static override configSchema(): DataPortSchema {\n return whileTaskConfigSchema;\n }\n\n constructor(config: Partial<Config> = {}, runConfig: Partial<IRunConfig> = {}) {\n if ((config as Partial<WhileTaskConfig<Input, Output>>).maxIterations === undefined) {\n throw new TaskConfigurationError(\n `${(new.target as typeof WhileTask).type ?? \"WhileTask\"}: maxIterations is required. ` +\n `Pass a positive integer to cap iteration, or \"unbounded\" to opt out explicitly.`\n );\n }\n super(config, runConfig);\n }\n\n /**\n * Returns the schema for iteration-context inputs that will be\n * injected into the subgraph InputTask at runtime.\n *\n * WhileTask only provides _iterationIndex since the total count\n * is unknown ahead of time.\n */\n public static getIterationContextSchema(): DataPortSchema {\n return WHILE_CONTEXT_SCHEMA;\n }\n\n /**\n * Current iteration count during execution.\n */\n protected _currentIteration: number = 0;\n\n public override canSerializeConfig(): boolean {\n return typeof this.config.condition !== \"function\";\n }\n\n // ========================================================================\n // TaskRunner Override\n // ========================================================================\n\n declare _runner: WhileTaskRunner<Input, Output, Config>;\n\n override get runner(): WhileTaskRunner<Input, Output, Config> {\n if (!this._runner) {\n this._runner = new WhileTaskRunner<Input, Output, Config>(this);\n }\n return this._runner;\n }\n\n // ========================================================================\n // Configuration Accessors\n // ========================================================================\n\n /**\n * Gets the condition function.\n */\n public get condition(): WhileConditionFn<Output> | undefined {\n return this.config.condition;\n }\n\n /**\n * Gets the maximum iterations limit, resolved to a numeric cap. The raw\n * `config.maxIterations` accepts `\"unbounded\"` as an explicit opt-out — that\n * sentinel resolves to `Number.POSITIVE_INFINITY` here so the loop logic can\n * compare against it directly.\n */\n public get maxIterations(): number {\n return resolveIterationBound(this.config.maxIterations);\n }\n\n /**\n * Whether to chain iteration outputs to inputs.\n */\n public get chainIterations(): boolean {\n return this.config.chainIterations ?? true;\n }\n\n /**\n * Gets the current iteration count.\n */\n public get currentIteration(): number {\n return this._currentIteration;\n }\n\n // ========================================================================\n // Execution\n // ========================================================================\n\n /**\n * Execute the while loop.\n */\n /**\n * Builds a condition function from the serialized condition fields in config.\n */\n private buildConditionFromConfig(): WhileConditionFn<Output> | undefined {\n const { conditionOperator, conditionField, conditionValue } = this.config;\n\n if (!conditionOperator) {\n return undefined;\n }\n\n return (output: Output) => {\n const fieldValue = conditionField\n ? getNestedValue(output as Record<string, unknown>, conditionField)\n : output;\n return evaluateCondition(fieldValue, conditionOperator as any, conditionValue ?? \"\");\n };\n }\n\n /**\n * Analyzes the iterationInputConfig from whileConfig to decompose\n * array inputs into per-iteration scalar values.\n *\n * Returns null if no iterationInputConfig is present (normal while behavior).\n */\n private analyzeArrayInputs(input: Input): {\n arrayPorts: string[];\n scalarPorts: string[];\n iteratedValues: Record<string, unknown[]>;\n iterationCount: number;\n } | null {\n if (!this.config.iterationInputConfig) {\n return null;\n }\n\n const inputData = input as Record<string, unknown>;\n const config = this.config.iterationInputConfig!;\n\n const arrayPorts: string[] = [];\n const scalarPorts: string[] = [];\n const iteratedValues: Record<string, unknown[]> = {};\n const arrayLengths: number[] = [];\n\n for (const [key, propConfig] of Object.entries(config)) {\n const value = inputData[key];\n\n if (propConfig.mode === \"array\") {\n if (!Array.isArray(value)) {\n // Skip non-array values for array-mode ports\n scalarPorts.push(key);\n continue;\n }\n iteratedValues[key] = value;\n arrayPorts.push(key);\n arrayLengths.push(value.length);\n } else {\n scalarPorts.push(key);\n }\n }\n\n // Also include any input keys not in the config as scalars\n for (const key of Object.keys(inputData)) {\n if (!config[key] && !key.startsWith(\"_iteration\")) {\n scalarPorts.push(key);\n }\n }\n\n if (arrayPorts.length === 0) {\n return null;\n }\n\n // All array ports must have the same length (zip semantics)\n const uniqueLengths = new Set(arrayLengths);\n if (uniqueLengths.size > 1) {\n const lengthInfo = arrayPorts\n .map((port, index) => `${port}=${arrayLengths[index]}`)\n .join(\", \");\n throw new TaskConfigurationError(\n `${this.type}: All iterated array inputs must have the same length. ` +\n `Found different lengths: ${lengthInfo}`\n );\n }\n\n return {\n arrayPorts,\n scalarPorts,\n iteratedValues,\n iterationCount: arrayLengths[0] ?? 0,\n };\n }\n\n /**\n * Builds per-iteration input by picking the i-th element from each array port\n * and passing scalar ports through unchanged.\n */\n private buildIterationInput(\n input: Input,\n analysis: {\n arrayPorts: string[];\n scalarPorts: string[];\n iteratedValues: Record<string, unknown[]>;\n },\n index: number\n ): Input {\n const inputData = input as Record<string, unknown>;\n const iterInput: Record<string, unknown> = {};\n\n for (const key of analysis.arrayPorts) {\n iterInput[key] = analysis.iteratedValues[key][index];\n }\n\n for (const key of analysis.scalarPorts) {\n if (key in inputData) {\n iterInput[key] = inputData[key];\n }\n }\n\n return iterInput as Input;\n }\n\n public override async execute(\n input: Input,\n context: IExecuteContext\n ): Promise<Output | undefined> {\n if (!this.hasChildren()) {\n throw new TaskConfigurationError(`${this.type}: No subgraph set for while loop`);\n }\n\n // Use provided condition or auto-build from serialized whileConfig\n const condition = this.condition ?? this.buildConditionFromConfig();\n\n if (!condition) {\n throw new TaskConfigurationError(`${this.type}: No condition function provided`);\n }\n\n // Check for array decomposition via iterationInputConfig\n const arrayAnalysis = this.analyzeArrayInputs(input);\n\n this._currentIteration = 0;\n let currentInput: Input = { ...input };\n let currentOutput: Output = {} as Output;\n\n // Determine effective max iterations (respect array length if decomposing)\n const effectiveMax = arrayAnalysis\n ? Math.min(this.maxIterations, arrayAnalysis.iterationCount)\n : this.maxIterations;\n\n /**\n * Blend the inner subgraph's aggregate `graph_progress` with the outer iteration\n * count so nested streaming tasks visibly advance the progress bar between iteration\n * boundaries. See {@link IteratorTaskRunner.executeSubgraphIteration} for the\n * equivalent pattern in `MapTask`. Capped at 99 because the loop may exit early\n * (condition can return false before hitting `effectiveMax`), mirroring the\n * boundary emit below.\n */\n const onInnerGraphProgress = (\n innerProgress: number | undefined,\n innerMessage?: string\n ): void => {\n if (innerProgress === undefined) return;\n const blended = Math.min(\n Math.round(((this._currentIteration + innerProgress / 100) / effectiveMax) * 100),\n 99\n );\n const message = innerMessage\n ? `Iteration ${this._currentIteration + 1}/${effectiveMax}: ${innerMessage}`\n : `Iteration ${this._currentIteration + 1}/${effectiveMax}`;\n void context.updateProgress(blended, message);\n };\n const unsubscribeInnerProgress = this.subGraph.subscribe(\n \"graph_progress\",\n onInnerGraphProgress\n );\n\n try {\n // Execute iterations until condition returns false or max iterations reached\n while (this._currentIteration < effectiveMax) {\n if (context.signal?.aborted) {\n break;\n }\n\n // Build the input for this iteration\n let iterationInput: Input;\n if (arrayAnalysis) {\n // Decompose array inputs into per-iteration scalars\n iterationInput = {\n ...this.buildIterationInput(currentInput, arrayAnalysis, this._currentIteration),\n _iterationIndex: this._currentIteration,\n } as Input;\n } else {\n iterationInput = {\n ...currentInput,\n _iterationIndex: this._currentIteration,\n } as Input;\n }\n\n // Run the subgraph (it resets itself on each run)\n const results = await this.subGraph.run<Output>(iterationInput, {\n parentSignal: context.signal,\n });\n\n // Merge results\n currentOutput = this.subGraph.mergeExecuteOutputsToRunOutput(\n results,\n this.compoundMerge\n ) as Output;\n\n // Check condition — wrap in try/catch so a throwing condition doesn't\n // leave the task in an inconsistent state without progress cleanup.\n let shouldContinue: boolean;\n try {\n shouldContinue = condition(currentOutput, this._currentIteration);\n } catch (err) {\n // Rethrow TaskFailedError instances unchanged so their type, message,\n // and stack are preserved for the caller.\n if (err instanceof TaskFailedError) {\n throw err;\n }\n const message = `${this.type}: Condition function threw at iteration ${this._currentIteration}: ${\n err instanceof Error ? err.message : String(err)\n }`;\n const wrappedError = new TaskFailedError(message);\n if (err instanceof Error && err.stack) {\n if (wrappedError.stack) {\n wrappedError.stack += `\\nCaused by original error:\\n${err.stack}`;\n } else {\n wrappedError.stack = err.stack;\n }\n }\n throw wrappedError;\n }\n if (!shouldContinue) {\n break;\n }\n\n // Chain output to input for next iteration if enabled\n if (this.chainIterations) {\n currentInput = { ...currentInput, ...currentOutput } as Input;\n }\n\n this._currentIteration++;\n\n // Boundary emit — coarse signal that iteration N/effectiveMax completed. Capped\n // at 99 since the loop may exit early; the task runner will emit 100 on completion.\n const progress = Math.min(Math.round((this._currentIteration / effectiveMax) * 100), 99);\n await context.updateProgress(\n progress,\n `Completed ${this._currentIteration}/${effectiveMax} iterations`\n );\n }\n } finally {\n unsubscribeInnerProgress();\n }\n\n return currentOutput;\n }\n\n /**\n * Streaming execution for WhileTask: runs all iterations except the last\n * normally (materializing), then streams the final iteration's events.\n * This provides streaming output for the final result while still\n * supporting iteration chaining.\n */\n public override async *executeStream(\n input: Input,\n context: IExecuteContext\n ): AsyncIterable<StreamEvent<Output>> {\n if (!this.hasChildren()) {\n throw new TaskConfigurationError(`${this.type}: No subgraph set for while loop`);\n }\n\n const condition = this.condition ?? this.buildConditionFromConfig();\n if (!condition) {\n throw new TaskConfigurationError(`${this.type}: No condition function provided`);\n }\n\n const arrayAnalysis = this.analyzeArrayInputs(input);\n this._currentIteration = 0;\n let currentInput: Input = { ...input };\n let currentOutput: Output = {} as Output;\n\n const effectiveMax = arrayAnalysis\n ? Math.min(this.maxIterations, arrayAnalysis.iterationCount)\n : this.maxIterations;\n\n // Blend inner subgraph progress with outer iteration count; see execute() above.\n const onInnerGraphProgress = (\n innerProgress: number | undefined,\n innerMessage?: string\n ): void => {\n if (innerProgress === undefined) return;\n const blended = Math.min(\n Math.round(((this._currentIteration + innerProgress / 100) / effectiveMax) * 100),\n 99\n );\n const message = innerMessage\n ? `Iteration ${this._currentIteration + 1}/${effectiveMax}: ${innerMessage}`\n : `Iteration ${this._currentIteration + 1}/${effectiveMax}`;\n void context.updateProgress(blended, message);\n };\n const unsubscribeInnerProgress = this.subGraph.subscribe(\n \"graph_progress\",\n onInnerGraphProgress\n );\n\n try {\n while (this._currentIteration < effectiveMax) {\n if (context.signal?.aborted) break;\n\n let iterationInput: Input;\n if (arrayAnalysis) {\n iterationInput = {\n ...this.buildIterationInput(currentInput, arrayAnalysis, this._currentIteration),\n _iterationIndex: this._currentIteration,\n } as Input;\n } else {\n iterationInput = {\n ...currentInput,\n _iterationIndex: this._currentIteration,\n } as Input;\n }\n\n // Check if the NEXT iteration would be the potential last: we always\n // run non-streaming first, then decide after the condition check.\n const results = await this.subGraph.run<Output>(iterationInput, {\n parentSignal: context.signal,\n });\n\n currentOutput = this.subGraph.mergeExecuteOutputsToRunOutput(\n results,\n this.compoundMerge\n ) as Output;\n\n let shouldContinue: boolean;\n try {\n shouldContinue = condition(currentOutput, this._currentIteration);\n } catch (err) {\n throw new TaskFailedError(\n `${this.type}: Condition function threw at iteration ${this._currentIteration}: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n if (!shouldContinue) {\n // This was the final iteration -- but we already ran it non-streaming.\n // Emit the finish event with the collected output.\n break;\n }\n\n if (this.chainIterations) {\n currentInput = { ...currentInput, ...currentOutput } as Input;\n }\n\n this._currentIteration++;\n\n const progress = Math.min(Math.round((this._currentIteration / effectiveMax) * 100), 99);\n await context.updateProgress(\n progress,\n `Completed ${this._currentIteration}/${effectiveMax} iterations`\n );\n }\n } finally {\n unsubscribeInnerProgress();\n }\n\n yield { type: \"finish\", data: currentOutput } as StreamFinish<Output>;\n }\n\n // ========================================================================\n // Schema Methods\n // ========================================================================\n\n /**\n * Instance method to get the iteration context schema.\n * Can be overridden by subclasses to customize iteration context.\n */\n public getIterationContextSchema(): DataPortSchema {\n return (this.constructor as typeof WhileTask).getIterationContextSchema();\n }\n\n /**\n * When chainIterations is true, the output schema from the previous\n * iteration becomes part of the input schema for the next iteration.\n * These chained properties should be marked with \"x-ui-iteration\": true.\n *\n * @returns Schema with chained output properties marked for iteration, or undefined if not chaining\n */\n public getChainedOutputSchema(): DataPortSchema | undefined {\n if (!this.chainIterations) return undefined;\n\n const outputSchema = this.outputSchema();\n if (typeof outputSchema === \"boolean\") return undefined;\n\n // Clone and mark all properties with x-ui-iteration\n const properties: Record<string, DataPortSchema> = {};\n if (outputSchema.properties && typeof outputSchema.properties === \"object\") {\n for (const [key, schema] of Object.entries(outputSchema.properties)) {\n // Skip the _iterations meta field\n if (key === \"_iterations\") continue;\n if (typeof schema === \"object\" && schema !== null) {\n properties[key] = { ...schema, \"x-ui-iteration\": true } as DataPortSchema;\n }\n }\n }\n\n if (Object.keys(properties).length === 0) return undefined;\n\n return { type: \"object\", properties } as DataPortSchema;\n }\n\n /**\n * Instance input schema override.\n * When iterationInputConfig is present, wraps array-mode ports in array schemas\n * so that the dataflow compatibility check accepts array values.\n */\n public override inputSchema(): DataPortSchema {\n if (!this.hasChildren()) {\n return (this.constructor as typeof WhileTask).inputSchema();\n }\n\n // Get the base schema from the subgraph (GraphAsTask behavior)\n const baseSchema = super.inputSchema();\n if (typeof baseSchema === \"boolean\") return baseSchema;\n\n if (!this.config.iterationInputConfig) {\n return baseSchema;\n }\n\n // Wrap array-mode ports in anyOf (scalar | array) schemas.\n // Using anyOf instead of plain type:\"array\" to avoid addInput's array-merge behavior\n // which would prepend an undefined element when runInputData starts empty.\n const properties = { ...(baseSchema.properties || {}) } as Record<string, DataPortSchema>;\n for (const [key, propConfig] of Object.entries(this.config.iterationInputConfig)) {\n if (propConfig.mode === \"array\" && properties[key]) {\n const scalarSchema = properties[key] as DataPortSchema;\n properties[key] = {\n anyOf: [scalarSchema, { type: \"array\", items: scalarSchema }],\n } as unknown as DataPortSchema;\n }\n }\n\n return {\n ...baseSchema,\n properties,\n } as DataPortSchema;\n }\n\n /**\n * Static input schema for WhileTask.\n */\n public static override inputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const satisfies DataPortSchema;\n }\n\n /**\n * Static output schema for WhileTask.\n */\n public static override outputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {\n _iterations: {\n type: \"number\",\n title: \"Iterations\",\n description: \"Number of iterations executed\",\n },\n },\n additionalProperties: true,\n } as const satisfies DataPortSchema;\n }\n\n /**\n * Instance output schema - returns final iteration output schema.\n */\n public override outputSchema(): DataPortSchema {\n if (!this.hasChildren()) {\n return (this.constructor as typeof WhileTask).outputSchema();\n }\n\n // Get ending nodes from subgraph\n const tasks = this.subGraph.getTasks();\n const endingNodes = tasks.filter(\n (task) => this.subGraph.getTargetDataflows(task.id).length === 0\n );\n\n if (endingNodes.length === 0) {\n return (this.constructor as typeof WhileTask).outputSchema();\n }\n\n const properties: Record<string, unknown> = {\n _iterations: {\n type: \"number\",\n title: \"Iterations\",\n description: \"Number of iterations executed\",\n },\n };\n\n // Merge output schemas from ending nodes\n for (const task of endingNodes) {\n const taskOutputSchema = task.outputSchema();\n if (typeof taskOutputSchema === \"boolean\") continue;\n\n const taskProperties = taskOutputSchema.properties || {};\n for (const [key, schema] of Object.entries(taskProperties)) {\n if (!properties[key]) {\n properties[key] = schema;\n }\n }\n }\n\n return {\n type: \"object\",\n properties,\n additionalProperties: false,\n } as DataPortSchema;\n }\n}\n\n// ============================================================================\n// Workflow Prototype Extensions\n// ============================================================================\n\ndeclare module \"../task-graph/Workflow\" {\n interface Workflow {\n /**\n * Starts a while loop that continues until a condition is false.\n * Use .endWhile() to close the loop and return to the parent workflow.\n *\n * @param config - Configuration for the while loop (must include condition)\n * @returns A Workflow in loop builder mode for defining the loop body\n *\n * @example\n * ```typescript\n * workflow\n * .while({\n * condition: (output, iteration) => output.quality < 0.9,\n * maxIterations: 10\n * })\n * .refineResult()\n * .endWhile()\n * ```\n */\n while: CreateLoopWorkflow<TaskInput, TaskOutput, WhileTaskConfig<TaskInput, any>>;\n\n /**\n * Ends the while loop and returns to the parent workflow.\n * Only callable on workflows in loop builder mode.\n *\n * @returns The parent workflow\n */\n endWhile(): Workflow;\n }\n}\n\nWorkflow.prototype.while = CreateLoopWorkflow(WhileTask);\nWorkflow.prototype.endWhile = CreateEndLoopWorkflow(\"endWhile\");\n",
69
69
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n *\n * Shared iteration schema helpers used by IteratorTask/WhileTask and the builder.\n * Re-exports context schemas and adds pure schema functions that operate on DataPortSchema.\n */\n\nimport type { DataPortSchema, PropertySchema } from \"@workglow/util/schema\";\n\nimport type { ExecutionMode, IterationInputMode, IterationPropertyConfig } from \"./IteratorTask\";\nimport {\n createArraySchema,\n createFlexibleSchema,\n extractBaseSchema,\n ITERATOR_CONTEXT_SCHEMA,\n} from \"./IteratorTask\";\nimport { WHILE_CONTEXT_SCHEMA } from \"./WhileTask\";\n\nexport {\n createArraySchema,\n createFlexibleSchema,\n extractBaseSchema,\n ITERATOR_CONTEXT_SCHEMA,\n WHILE_CONTEXT_SCHEMA,\n type ExecutionMode,\n type IterationInputMode,\n type IterationPropertyConfig,\n};\n\n/** Config for buildIterationInputSchema: mode and optional baseSchema (defaults to extracted from inner). */\nexport type IterationInputConfig = Record<\n string,\n { mode: IterationInputMode; baseSchema?: PropertySchema }\n>;\n\n/**\n * Determines if a schema is a flexible type (T | T[]).\n */\nexport function isFlexibleSchema(schema: DataPortSchema): boolean {\n if (typeof schema === \"boolean\") return false;\n\n const variants =\n (schema as Record<string, unknown>).oneOf ?? (schema as Record<string, unknown>).anyOf;\n const arr = Array.isArray(variants) ? (variants as DataPortSchema[]) : undefined;\n if (!arr || arr.length !== 2) return false;\n\n let hasScalar = false;\n let hasArray = false;\n\n for (const variant of arr) {\n if (typeof variant !== \"object\") continue;\n const v = variant as Record<string, unknown>;\n if (v.type === \"array\" || \"items\" in v) {\n hasArray = true;\n } else {\n hasScalar = true;\n }\n }\n\n return hasScalar && hasArray;\n}\n\n/**\n * Determines if a schema is strictly an array type.\n */\nexport function isStrictArraySchema(schema: DataPortSchema): boolean {\n if (typeof schema === \"boolean\") return false;\n const s = schema as Record<string, unknown>;\n return s.type === \"array\" && !isFlexibleSchema(schema);\n}\n\n/**\n * Gets the input mode for a schema property.\n */\nexport function getInputModeFromSchema(schema: DataPortSchema): IterationInputMode {\n if (isFlexibleSchema(schema)) return \"flexible\";\n if (isStrictArraySchema(schema)) return \"array\";\n return \"scalar\";\n}\n\n/**\n * Get the appropriate iteration context schema for a given task type.\n */\nexport function getIterationContextSchemaForType(taskType: string): DataPortSchema | undefined {\n if (taskType === \"MapTask\" || taskType === \"ReduceTask\") {\n return ITERATOR_CONTEXT_SCHEMA;\n }\n if (taskType === \"WhileTask\") {\n return WHILE_CONTEXT_SCHEMA;\n }\n return undefined;\n}\n\n/**\n * Merge iteration context schema into an existing InputNode schema.\n */\nexport function addIterationContextToSchema(\n existingSchema: DataPortSchema | undefined,\n parentTaskType: string\n): DataPortSchema {\n const contextSchema = getIterationContextSchemaForType(parentTaskType);\n if (!contextSchema) {\n return existingSchema ?? { type: \"object\", properties: {} };\n }\n\n const baseProperties =\n existingSchema &&\n typeof existingSchema !== \"boolean\" &&\n (existingSchema as Record<string, unknown>).properties &&\n typeof (existingSchema as Record<string, unknown>).properties !== \"boolean\"\n ? ((existingSchema as Record<string, unknown>).properties as Record<string, DataPortSchema>)\n : {};\n\n const contextProperties =\n typeof contextSchema !== \"boolean\" &&\n (contextSchema as Record<string, unknown>).properties &&\n typeof (contextSchema as Record<string, unknown>).properties !== \"boolean\"\n ? ((contextSchema as Record<string, unknown>).properties as Record<string, DataPortSchema>)\n : {};\n\n return {\n type: \"object\",\n properties: {\n ...baseProperties,\n ...contextProperties,\n },\n };\n}\n\n/**\n * Check if a schema property is an iteration-injected input.\n */\nexport function isIterationProperty(schema: PropertySchema): boolean {\n if (!schema || typeof schema === \"boolean\") return false;\n return (schema as Record<string, unknown>)[\"x-ui-iteration\"] === true;\n}\n\n/**\n * Filter out iteration properties from a schema (for parent display).\n */\nexport function filterIterationProperties(schema?: DataPortSchema): DataPortSchema | undefined {\n if (!schema || typeof schema === \"boolean\") return schema;\n const props = (schema as Record<string, unknown>).properties;\n if (!props || typeof props === \"boolean\") return schema;\n\n const filteredProps: Record<string, DataPortSchema> = {};\n for (const [key, propSchema] of Object.entries(props as Record<string, DataPortSchema>)) {\n if (!isIterationProperty(propSchema)) {\n filteredProps[key] = propSchema;\n }\n }\n\n if (Object.keys(filteredProps).length === 0) {\n return { type: \"object\", properties: {} };\n }\n\n return { ...schema, properties: filteredProps } as DataPortSchema;\n}\n\n/**\n * Extract only iteration properties from a schema.\n */\nexport function extractIterationProperties(schema?: DataPortSchema): DataPortSchema | undefined {\n if (!schema || typeof schema === \"boolean\") return undefined;\n const props = (schema as Record<string, unknown>).properties;\n if (!props || typeof props === \"boolean\") return undefined;\n\n const iterProps: Record<string, DataPortSchema> = {};\n for (const [key, propSchema] of Object.entries(props as Record<string, DataPortSchema>)) {\n if (isIterationProperty(propSchema)) {\n iterProps[key] = propSchema;\n }\n }\n\n if (Object.keys(iterProps).length === 0) return undefined;\n\n return { type: \"object\", properties: iterProps };\n}\n\n/**\n * Remove iteration properties from a schema (alias for filterIterationProperties).\n */\nexport function removeIterationProperties(schema?: DataPortSchema): DataPortSchema | undefined {\n return filterIterationProperties(schema);\n}\n\n/**\n * Merge chained output properties into input schema; marks output properties with \"x-ui-iteration\": true.\n */\nexport function mergeChainedOutputToInput(\n inputSchema: DataPortSchema | undefined,\n outputSchema: DataPortSchema | undefined\n): DataPortSchema {\n const baseSchema = filterIterationProperties(inputSchema) ?? {\n type: \"object\" as const,\n properties: {},\n };\n\n if (!outputSchema || typeof outputSchema === \"boolean\") {\n return baseSchema;\n }\n const outProps = (outputSchema as Record<string, unknown>).properties;\n if (!outProps || typeof outProps === \"boolean\") {\n return baseSchema;\n }\n\n const baseProps =\n typeof baseSchema !== \"boolean\" &&\n (baseSchema as Record<string, unknown>).properties &&\n typeof (baseSchema as Record<string, unknown>).properties !== \"boolean\"\n ? ((baseSchema as Record<string, unknown>).properties as Record<string, DataPortSchema>)\n : {};\n\n const mergedProperties: Record<string, DataPortSchema> = { ...baseProps };\n\n for (const [key, propSchema] of Object.entries(outProps as Record<string, DataPortSchema>)) {\n if (typeof propSchema === \"object\" && propSchema !== null) {\n mergedProperties[key] = { ...propSchema, \"x-ui-iteration\": true } as DataPortSchema;\n }\n }\n\n return {\n type: \"object\",\n properties: mergedProperties,\n };\n}\n\n/**\n * Builds the iteration input schema from the inner schema and optional iteration input configuration.\n */\nexport function buildIterationInputSchema(\n innerSchema: DataPortSchema | undefined,\n config?: IterationInputConfig\n): DataPortSchema {\n if (!innerSchema || typeof innerSchema === \"boolean\") {\n return { type: \"object\", properties: {} };\n }\n\n const innerProps = (innerSchema as Record<string, unknown>).properties;\n if (!innerProps || typeof innerProps === \"boolean\") {\n return { type: \"object\", properties: {} };\n }\n\n const properties: Record<string, PropertySchema> = {};\n const propsRecord = innerProps as Record<string, PropertySchema>;\n\n for (const [key, propSchema] of Object.entries(propsRecord)) {\n if (typeof propSchema === \"boolean\") continue;\n\n if ((propSchema as Record<string, unknown>)[\"x-ui-iteration\"]) {\n continue;\n }\n\n const originalProps = propSchema as Record<string, unknown>;\n const metadata: Record<string, unknown> = {};\n for (const metaKey of Object.keys(originalProps)) {\n if (metaKey === \"title\" || metaKey === \"description\" || metaKey.startsWith(\"x-\")) {\n metadata[metaKey] = originalProps[metaKey];\n }\n }\n\n const baseSchema = extractBaseSchema(propSchema);\n const propConfig = config?.[key];\n const mode = propConfig?.mode ?? \"flexible\";\n const base = propConfig?.baseSchema ?? baseSchema;\n\n let wrappedSchema: PropertySchema;\n switch (mode) {\n case \"array\":\n wrappedSchema = createArraySchema(base);\n break;\n case \"scalar\":\n wrappedSchema = base;\n break;\n case \"flexible\":\n default:\n wrappedSchema = createFlexibleSchema(base);\n break;\n }\n\n // Apply preserved metadata onto the wrapped schema\n if (Object.keys(metadata).length > 0 && typeof wrappedSchema === \"object\") {\n properties[key] = { ...metadata, ...wrappedSchema } as PropertySchema;\n } else {\n properties[key] = wrappedSchema;\n }\n }\n\n return {\n type: \"object\",\n properties,\n };\n}\n\n/**\n * Find array-typed ports from an input schema.\n */\nexport function findArrayPorts(schema: DataPortSchema | undefined): string[] {\n if (!schema || typeof schema === \"boolean\") return [];\n const props = (schema as Record<string, unknown>).properties;\n if (!props || typeof props === \"boolean\") return [];\n\n const arrayPorts: string[] = [];\n const propsRecord = props as Record<string, DataPortSchema>;\n\n for (const [key, propSchema] of Object.entries(propsRecord)) {\n if (typeof propSchema === \"boolean\") continue;\n if ((propSchema as Record<string, unknown>).type === \"array\") {\n arrayPorts.push(key);\n }\n }\n\n return arrayPorts;\n}\n\n/**\n * Wrap a schema's properties in arrays for iteration output.\n */\nexport function wrapSchemaInArray(schema: DataPortSchema | undefined): DataPortSchema | undefined {\n if (!schema || typeof schema === \"boolean\") return schema;\n const props = (schema as Record<string, unknown>).properties;\n if (!props || typeof props === \"boolean\") return schema;\n\n const propsRecord = props as Record<string, DataPortSchema>;\n const wrappedProperties: Record<string, DataPortSchema> = {};\n\n for (const [key, propSchema] of Object.entries(propsRecord)) {\n wrappedProperties[key] = {\n type: \"array\",\n items: propSchema,\n } as DataPortSchema;\n }\n\n return {\n type: \"object\",\n properties: wrappedProperties,\n };\n}\n",
70
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { IQueueStorage } from \"@workglow/job-queue\";\nimport {\n InMemoryQueueStorage,\n Job,\n JobConstructorParam,\n JobQueueClient,\n JobQueueServer,\n JobQueueServerOptions,\n} from \"@workglow/job-queue\";\nimport { createServiceToken, globalServiceRegistry } from \"@workglow/util\";\nimport type { RegisteredQueue } from \"./TaskQueueRegistry\";\nimport type { TaskConfig, TaskInput, TaskOutput } from \"./TaskTypes\";\n\nexport type JobClassConstructor<Input extends TaskInput, Output extends TaskOutput> = new (\n params: JobConstructorParam<Input, Output>\n) => Job<Input, Output>;\n\n/**\n * Options for creating a job queue via the factory\n */\nexport interface JobQueueFactoryOptions<Input, Output> {\n readonly storage?: IQueueStorage<Input, Output>;\n readonly limiter?: JobQueueServerOptions<Input, Output>[\"limiter\"];\n readonly workerCount?: number;\n readonly pollIntervalMs?: number;\n readonly deleteAfterCompletionMs?: number;\n readonly deleteAfterFailureMs?: number;\n readonly deleteAfterDisabledMs?: number;\n readonly cleanupIntervalMs?: number;\n readonly stopTimeoutMs?: number;\n}\n\nexport interface JobQueueFactoryParams<Input extends TaskInput, Output extends TaskOutput> {\n readonly queueName: string;\n readonly jobClass: JobClassConstructor<Input, Output>;\n readonly input?: Input;\n readonly config?: TaskConfig;\n readonly task?: unknown;\n readonly options?: JobQueueFactoryOptions<Input, Output>;\n}\n\nexport type JobQueueFactory = <Input extends TaskInput, Output extends TaskOutput>(\n params: JobQueueFactoryParams<Input, Output>\n) => Promise<RegisteredQueue<Input, Output>> | RegisteredQueue<Input, Output>;\n\nexport const JOB_QUEUE_FACTORY = createServiceToken<JobQueueFactory>(\"taskgraph.jobQueueFactory\");\n\nconst defaultJobQueueFactory: JobQueueFactory = async <\n Input extends TaskInput,\n Output extends TaskOutput,\n>({\n queueName,\n jobClass,\n options,\n}: JobQueueFactoryParams<Input, Output>): Promise<RegisteredQueue<Input, Output>> => {\n const storage =\n (options?.storage as IQueueStorage<Input, Output>) ??\n new InMemoryQueueStorage<Input, Output>(queueName);\n await storage.migrate();\n\n const server = new JobQueueServer<Input, Output>(jobClass as JobClassConstructor<any, any>, {\n storage,\n queueName,\n limiter: options?.limiter,\n workerCount: options?.workerCount,\n pollIntervalMs: options?.pollIntervalMs,\n deleteAfterCompletionMs: options?.deleteAfterCompletionMs,\n deleteAfterFailureMs: options?.deleteAfterFailureMs,\n deleteAfterDisabledMs: options?.deleteAfterDisabledMs,\n cleanupIntervalMs: options?.cleanupIntervalMs,\n stopTimeoutMs: options?.stopTimeoutMs,\n });\n\n const client = new JobQueueClient<Input, Output>({\n storage,\n queueName,\n });\n\n // Attach client to server for same-process optimization\n client.attach(server);\n\n return { server, client, storage };\n};\n\nexport function registerJobQueueFactory(factory: JobQueueFactory): void {\n globalServiceRegistry.registerInstance(JOB_QUEUE_FACTORY, factory);\n}\n\n/**\n * Creates a job queue factory from server options\n */\nexport function createJobQueueFactoryWithOptions(\n defaultOptions: Partial<JobQueueFactoryOptions<unknown, unknown>> = {}\n): JobQueueFactory {\n return async <Input extends TaskInput, Output extends TaskOutput>({\n queueName,\n jobClass,\n options,\n }: JobQueueFactoryParams<Input, Output>): Promise<RegisteredQueue<Input, Output>> => {\n const mergedOptions = {\n ...defaultOptions,\n ...(options ?? {}),\n } as JobQueueFactoryOptions<Input, Output>;\n\n const storage =\n (mergedOptions.storage as IQueueStorage<Input, Output>) ??\n new InMemoryQueueStorage<Input, Output>(queueName);\n await storage.migrate();\n\n const server = new JobQueueServer<Input, Output>(jobClass as JobClassConstructor<any, any>, {\n storage,\n queueName,\n limiter: mergedOptions.limiter,\n workerCount: mergedOptions.workerCount,\n pollIntervalMs: mergedOptions.pollIntervalMs,\n deleteAfterCompletionMs: mergedOptions.deleteAfterCompletionMs,\n deleteAfterFailureMs: mergedOptions.deleteAfterFailureMs,\n deleteAfterDisabledMs: mergedOptions.deleteAfterDisabledMs,\n cleanupIntervalMs: mergedOptions.cleanupIntervalMs,\n stopTimeoutMs: mergedOptions.stopTimeoutMs,\n });\n\n const client = new JobQueueClient<Input, Output>({\n storage,\n queueName,\n });\n\n // Attach client to server for same-process optimization\n client.attach(server);\n\n return { server, client, storage };\n };\n}\n\nexport function getJobQueueFactory(): JobQueueFactory {\n if (!globalServiceRegistry.has(JOB_QUEUE_FACTORY)) {\n registerJobQueueFactory(defaultJobQueueFactory);\n }\n return globalServiceRegistry.get(JOB_QUEUE_FACTORY);\n}\n\nif (!globalServiceRegistry.has(JOB_QUEUE_FACTORY)) {\n registerJobQueueFactory(defaultJobQueueFactory);\n}\n",
70
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { IQueueStorage } from \"@workglow/job-queue\";\nimport {\n InMemoryQueueStorage,\n Job,\n JobConstructorParam,\n JobQueueClient,\n JobQueueServer,\n JobQueueServerOptions,\n wrapQueueStorage,\n} from \"@workglow/job-queue\";\nimport { createServiceToken, globalServiceRegistry } from \"@workglow/util\";\nimport type { RegisteredQueue } from \"./TaskQueueRegistry\";\nimport type { TaskConfig, TaskInput, TaskOutput } from \"./TaskTypes\";\n\nexport type JobClassConstructor<Input extends TaskInput, Output extends TaskOutput> = new (\n params: JobConstructorParam<Input, Output>\n) => Job<Input, Output>;\n\n/**\n * Options for creating a job queue via the factory\n */\nexport interface JobQueueFactoryOptions<Input, Output> {\n readonly storage?: IQueueStorage<Input, Output>;\n readonly limiter?: JobQueueServerOptions<Input, Output>[\"limiter\"];\n readonly workerCount?: number;\n readonly pollIntervalMs?: number;\n readonly deleteAfterCompletionMs?: number;\n readonly deleteAfterFailureMs?: number;\n readonly deleteAfterDisabledMs?: number;\n readonly cleanupIntervalMs?: number;\n readonly stopTimeoutMs?: number;\n}\n\nexport interface JobQueueFactoryParams<Input extends TaskInput, Output extends TaskOutput> {\n readonly queueName: string;\n readonly jobClass: JobClassConstructor<Input, Output>;\n readonly input?: Input;\n readonly config?: TaskConfig;\n readonly task?: unknown;\n readonly options?: JobQueueFactoryOptions<Input, Output>;\n}\n\nexport type JobQueueFactory = <Input extends TaskInput, Output extends TaskOutput>(\n params: JobQueueFactoryParams<Input, Output>\n) => Promise<RegisteredQueue<Input, Output>> | RegisteredQueue<Input, Output>;\n\nexport const JOB_QUEUE_FACTORY = createServiceToken<JobQueueFactory>(\"taskgraph.jobQueueFactory\");\n\nconst defaultJobQueueFactory: JobQueueFactory = async <\n Input extends TaskInput,\n Output extends TaskOutput,\n>({\n queueName,\n jobClass,\n options,\n}: JobQueueFactoryParams<Input, Output>): Promise<RegisteredQueue<Input, Output>> => {\n const storage =\n (options?.storage as IQueueStorage<Input, Output>) ??\n new InMemoryQueueStorage<Input, Output>(queueName);\n await storage.migrate();\n const { messageQueue, jobStore } = wrapQueueStorage(storage);\n\n const server = new JobQueueServer<Input, Output>(jobClass as JobClassConstructor<any, any>, {\n messageQueue,\n jobStore,\n queueName,\n limiter: options?.limiter,\n workerCount: options?.workerCount,\n pollIntervalMs: options?.pollIntervalMs,\n deleteAfterCompletionMs: options?.deleteAfterCompletionMs,\n deleteAfterFailureMs: options?.deleteAfterFailureMs,\n deleteAfterDisabledMs: options?.deleteAfterDisabledMs,\n cleanupIntervalMs: options?.cleanupIntervalMs,\n stopTimeoutMs: options?.stopTimeoutMs,\n });\n\n const client = new JobQueueClient<Input, Output>({\n messageQueue,\n jobStore,\n queueName,\n });\n\n // Attach client to server for same-process optimization\n client.attach(server);\n\n return { server, client, storage };\n};\n\nexport function registerJobQueueFactory(factory: JobQueueFactory): void {\n globalServiceRegistry.registerInstance(JOB_QUEUE_FACTORY, factory);\n}\n\n/**\n * Creates a job queue factory from server options\n */\nexport function createJobQueueFactoryWithOptions(\n defaultOptions: Partial<JobQueueFactoryOptions<unknown, unknown>> = {}\n): JobQueueFactory {\n return async <Input extends TaskInput, Output extends TaskOutput>({\n queueName,\n jobClass,\n options,\n }: JobQueueFactoryParams<Input, Output>): Promise<RegisteredQueue<Input, Output>> => {\n const mergedOptions = {\n ...defaultOptions,\n ...(options ?? {}),\n } as JobQueueFactoryOptions<Input, Output>;\n\n const storage =\n (mergedOptions.storage as IQueueStorage<Input, Output>) ??\n new InMemoryQueueStorage<Input, Output>(queueName);\n await storage.migrate();\n const { messageQueue, jobStore } = wrapQueueStorage(storage);\n\n const server = new JobQueueServer<Input, Output>(jobClass as JobClassConstructor<any, any>, {\n messageQueue,\n jobStore,\n queueName,\n limiter: mergedOptions.limiter,\n workerCount: mergedOptions.workerCount,\n pollIntervalMs: mergedOptions.pollIntervalMs,\n deleteAfterCompletionMs: mergedOptions.deleteAfterCompletionMs,\n deleteAfterFailureMs: mergedOptions.deleteAfterFailureMs,\n deleteAfterDisabledMs: mergedOptions.deleteAfterDisabledMs,\n cleanupIntervalMs: mergedOptions.cleanupIntervalMs,\n stopTimeoutMs: mergedOptions.stopTimeoutMs,\n });\n\n const client = new JobQueueClient<Input, Output>({\n messageQueue,\n jobStore,\n queueName,\n });\n\n // Attach client to server for same-process optimization\n client.attach(server);\n\n return { server, client, storage };\n };\n}\n\nexport function getJobQueueFactory(): JobQueueFactory {\n if (!globalServiceRegistry.has(JOB_QUEUE_FACTORY)) {\n registerJobQueueFactory(defaultJobQueueFactory);\n }\n return globalServiceRegistry.get(JOB_QUEUE_FACTORY);\n}\n\nif (!globalServiceRegistry.has(JOB_QUEUE_FACTORY)) {\n registerJobQueueFactory(defaultJobQueueFactory);\n}\n",
71
71
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { DataPortSchema } from \"@workglow/util/schema\";\nimport { PROPERTY_ARRAY } from \"../task-graph/TaskGraphRunner\";\nimport { Workflow } from \"../task-graph/Workflow\";\nimport { CreateEndLoopWorkflow, CreateLoopWorkflow } from \"../task-graph/WorkflowFactories\";\nimport type { IRunConfig } from \"./ITask\";\nimport { IteratorTask, IteratorTaskConfig, iteratorTaskConfigSchema } from \"./IteratorTask\";\nimport type { TaskInput, TaskOutput, TaskTypeName } from \"./TaskTypes\";\nexport const mapTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...iteratorTaskConfigSchema[\"properties\"],\n preserveOrder: { type: \"boolean\" },\n flatten: { type: \"boolean\" },\n discardResults: { type: \"boolean\" },\n },\n required: iteratorTaskConfigSchema.required,\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\n/**\n * Configuration for MapTask.\n */\nexport type MapTaskConfig<Input extends TaskInput = TaskInput> = IteratorTaskConfig<Input> & {\n /**\n * Whether to preserve the order of results matching the input order.\n * When false, results may be in completion order.\n * @default true\n */\n readonly preserveOrder?: boolean;\n\n /**\n * Whether to flatten array results from each iteration.\n * When true, if each iteration returns an array, they are concatenated.\n * @default false\n */\n readonly flatten?: boolean;\n\n /**\n * When true, iteration results are discarded rather than collected into\n * per-property arrays. Used by the `.forEach()` workflow combinator for\n * side-effect-only loops where the caller does not need the return value.\n * @default false\n */\n readonly discardResults?: boolean;\n};\n\n/**\n * MapTask transforms one or more array inputs by running a workflow for each index.\n */\nexport class MapTask<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends MapTaskConfig<Input> = MapTaskConfig<Input>,\n> extends IteratorTask<Input, Output, Config> {\n public static override type: TaskTypeName = \"MapTask\";\n public static override category: string = \"Flow Control\";\n public static override title: string = \"Map\";\n public static override description: string =\n \"Transforms array inputs by running a workflow per item\";\n\n public static override configSchema(): DataPortSchema {\n return mapTaskConfigSchema;\n }\n\n /**\n * MapTask always uses PROPERTY_ARRAY merge strategy to collect results.\n */\n public static override readonly compoundMerge = PROPERTY_ARRAY;\n\n /**\n * Static input schema for MapTask.\n */\n public static override inputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const satisfies DataPortSchema;\n }\n\n /**\n * Static output schema for MapTask.\n */\n public static override outputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const satisfies DataPortSchema;\n }\n\n /**\n * Whether to preserve order of results.\n */\n public get preserveOrder(): boolean {\n return this.config.preserveOrder ?? true;\n }\n\n /**\n * Whether to flatten nested array results.\n */\n public get flatten(): boolean {\n return this.config.flatten ?? false;\n }\n\n /**\n * Whether to drop iteration outputs rather than collect them. Used by\n * `.forEach()` for side-effect iteration.\n */\n public get discardResults(): boolean {\n return this.config.discardResults ?? false;\n }\n\n public override preserveIterationOrder(): boolean {\n return this.preserveOrder;\n }\n\n /**\n * Returns the empty result for MapTask.\n */\n public override getEmptyResult(): Output {\n const schema = this.outputSchema();\n if (typeof schema === \"boolean\") {\n return {} as Output;\n }\n\n const result: Record<string, unknown[]> = {};\n for (const key of Object.keys(schema.properties || {})) {\n result[key] = [];\n }\n\n return result as Output;\n }\n\n /**\n * Output schema for MapTask.\n * Wraps inner workflow output properties in arrays.\n */\n public override outputSchema(): DataPortSchema {\n if (!this.hasChildren()) {\n return (this.constructor as typeof MapTask).outputSchema();\n }\n\n return this.getWrappedOutputSchema();\n }\n\n /**\n * Collects and optionally flattens results from all iterations. When\n * `discardResults` is set (via `.forEach()`), returns the empty result\n * without touching the per-iteration outputs.\n */\n public override collectResults(results: TaskOutput[]): Output {\n if (this.discardResults) {\n return this.getEmptyResult();\n }\n\n const collected = super.collectResults(results);\n\n if (!this.flatten || typeof collected !== \"object\" || collected === null) {\n return collected;\n }\n\n const flattened: Record<string, unknown[]> = {};\n for (const [key, value] of Object.entries(collected)) {\n if (Array.isArray(value)) {\n flattened[key] = value.flat();\n } else {\n flattened[key] = value as unknown[];\n }\n }\n\n return flattened as Output;\n }\n}\n\n/**\n * ForEachTask is a `MapTask` variant that discards iteration results by default.\n * Used via the `.forEach()` workflow combinator for side-effect-only loops.\n */\nexport class ForEachTask<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends MapTaskConfig<Input> = MapTaskConfig<Input>,\n> extends MapTask<Input, Output, Config> {\n public static override type: TaskTypeName = \"ForEachTask\";\n public static override title: string = \"For Each\";\n public static override description: string =\n \"Runs a workflow per array item for side effects; discards collected results\";\n\n constructor(config: Partial<Config> = {}, runConfig: Partial<IRunConfig> = {}) {\n super({ discardResults: true, ...config } as Partial<Config>, runConfig);\n }\n}\n\n// ============================================================================\n// Workflow Prototype Extensions\n// ============================================================================\n\ndeclare module \"../task-graph/Workflow\" {\n interface Workflow {\n /**\n * Starts a map loop that transforms each element in array input ports.\n * Use .endMap() to close the loop and return to the parent workflow.\n */\n map: CreateLoopWorkflow<TaskInput, TaskOutput, MapTaskConfig<TaskInput>>;\n\n /**\n * Ends the map loop and returns to the parent workflow.\n */\n endMap(): Workflow;\n\n /**\n * Starts a forEach loop — iterates array input ports for side effects and\n * discards collected results. Use .endForEach() to close the loop and\n * return to the parent workflow. `maxIterations` is still required.\n */\n forEach: CreateLoopWorkflow<TaskInput, TaskOutput, MapTaskConfig<TaskInput>>;\n\n /**\n * Ends the forEach loop and returns to the parent workflow.\n */\n endForEach(): Workflow;\n }\n}\n\nWorkflow.prototype.map = CreateLoopWorkflow(MapTask);\nWorkflow.prototype.endMap = CreateEndLoopWorkflow(\"endMap\");\nWorkflow.prototype.forEach = CreateLoopWorkflow(ForEachTask);\nWorkflow.prototype.endForEach = CreateEndLoopWorkflow(\"endForEach\");\n",
72
72
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { DataPortSchema } from \"@workglow/util/schema\";\nimport { Workflow } from \"../task-graph/Workflow\";\nimport { CreateEndLoopWorkflow, CreateLoopWorkflow } from \"../task-graph/WorkflowFactories\";\nimport type { IRunConfig } from \"./ITask\";\nimport {\n IterationAnalysisResult,\n IteratorTask,\n IteratorTaskConfig,\n iteratorTaskConfigSchema,\n} from \"./IteratorTask\";\nimport type { TaskInput, TaskOutput, TaskTypeName } from \"./TaskTypes\";\n\nexport const reduceTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...iteratorTaskConfigSchema[\"properties\"],\n initialValue: {},\n },\n required: iteratorTaskConfigSchema.required,\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\n/**\n * Configuration for ReduceTask.\n */\nexport type ReduceTaskConfig<\n Input extends TaskInput = TaskInput,\n Accumulator = unknown,\n> = IteratorTaskConfig<Input> & {\n /**\n * The initial value for the accumulator.\n */\n readonly initialValue?: Accumulator;\n};\n\n/**\n * ReduceTask processes iterated inputs sequentially with an accumulator.\n */\nexport class ReduceTask<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends ReduceTaskConfig<Input, Output> = ReduceTaskConfig<Input, Output>,\n> extends IteratorTask<Input, Output, Config> {\n public static override type: TaskTypeName = \"ReduceTask\";\n public static override category: string = \"Flow Control\";\n public static override title: string = \"Reduce\";\n public static override description: string =\n \"Processes iterated inputs sequentially with an accumulator (fold)\";\n\n public static override configSchema(): DataPortSchema {\n return reduceTaskConfigSchema;\n }\n\n constructor(config: Partial<Config> = {}, runConfig: Partial<IRunConfig> = {}) {\n // Reduce is always sequential\n const reduceConfig = {\n ...config,\n concurrencyLimit: 1,\n batchSize: 1,\n };\n super(reduceConfig as Partial<Config>, runConfig);\n }\n\n /**\n * Gets the initial accumulator value.\n */\n public get initialValue(): Output {\n return (this.config.initialValue ?? {}) as Output;\n }\n\n public override isReduceTask(): boolean {\n return true;\n }\n\n public override getInitialAccumulator(): Output {\n const value = this.initialValue;\n if (Array.isArray(value)) {\n return [...value] as unknown as Output;\n }\n if (value && typeof value === \"object\") {\n return { ...(value as Record<string, unknown>) } as Output;\n }\n return value;\n }\n\n public override buildIterationRunInput(\n analysis: IterationAnalysisResult,\n index: number,\n iterationCount: number,\n extraInput: Record<string, unknown> = {}\n ): Record<string, unknown> {\n return super.buildIterationRunInput(analysis, index, iterationCount, {\n accumulator: extraInput.accumulator,\n });\n }\n\n public override getEmptyResult(): Output {\n return this.getInitialAccumulator();\n }\n\n /**\n * Static input schema for ReduceTask.\n */\n public static override inputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const satisfies DataPortSchema;\n }\n\n /**\n * Static output schema for ReduceTask.\n */\n public static override outputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const satisfies DataPortSchema;\n }\n\n /**\n * Instance output schema - returns the reduced output schema from ending nodes.\n */\n public override outputSchema(): DataPortSchema {\n if (!this.hasChildren()) {\n return (this.constructor as typeof ReduceTask).outputSchema();\n }\n\n const endingNodes = this.subGraph\n .getTasks()\n .filter((task) => this.subGraph.getTargetDataflows(task.id).length === 0);\n\n if (endingNodes.length === 0) {\n return (this.constructor as typeof ReduceTask).outputSchema();\n }\n\n const properties: Record<string, unknown> = {};\n\n for (const task of endingNodes) {\n const taskOutputSchema = task.outputSchema();\n if (typeof taskOutputSchema === \"boolean\") continue;\n\n for (const [key, schema] of Object.entries(taskOutputSchema.properties || {})) {\n if (!properties[key]) {\n properties[key] = schema;\n }\n }\n }\n\n return {\n type: \"object\",\n properties,\n additionalProperties: false,\n } as DataPortSchema;\n }\n}\n\n// ============================================================================\n// Workflow Prototype Extensions\n// ============================================================================\n\ndeclare module \"../task-graph/Workflow\" {\n interface Workflow {\n /**\n * Starts a reduce loop that processes iterated inputs with an accumulator.\n * Use .endReduce() to close the loop and return to the parent workflow.\n */\n reduce: CreateLoopWorkflow<TaskInput, TaskOutput, ReduceTaskConfig<TaskInput, any>>;\n\n /**\n * Ends the reduce loop and returns to the parent workflow.\n */\n endReduce(): Workflow;\n }\n}\n\nqueueMicrotask(() => {\n Workflow.prototype.reduce = CreateLoopWorkflow(ReduceTask);\n Workflow.prototype.endReduce = CreateEndLoopWorkflow(\"endReduce\");\n});\n",
73
73
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n createServiceToken,\n getLogger,\n globalServiceRegistry,\n registerInputCompactor,\n registerInputResolver,\n ServiceRegistry,\n} from \"@workglow/util\";\nimport { validateSchema } from \"@workglow/util/schema\";\nimport type { ITaskConstructor } from \"./ITask\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyTaskConstructor = ITaskConstructor<any, any, any>;\n\n/**\n * Map storing all registered task constructors.\n * Keys are task type identifiers and values are their corresponding constructor functions.\n */\nconst taskConstructors = new Map<string, AnyTaskConstructor>();\n\n/**\n * Registers a task constructor with the registry.\n * This allows the task type to be instantiated dynamically based on its type identifier.\n * Re-registering the exact same class is idempotent and does nothing.\n *\n * @param baseClass - The constructor function for the task to register\n * @throws Error if a different constructor is already registered for the same task type.\n * Call {@link unregisterTask} first to replace an existing registration.\n */\nfunction registerTask(baseClass: AnyTaskConstructor): void {\n const existing = taskConstructors.get(baseClass.type);\n if (existing) {\n if (existing === baseClass) return; // same class, idempotent\n throw new Error(\n `Task type \"${baseClass.type}\" is already registered. Unregister it first to replace.`\n );\n }\n taskConstructors.set(baseClass.type, baseClass);\n\n // Validate schemas at registration time (soft — warn only, don't throw)\n const schemas = [\n { name: \"inputSchema\", schema: baseClass.inputSchema() },\n { name: \"outputSchema\", schema: baseClass.outputSchema() },\n ] as const;\n\n for (const { name, schema } of schemas) {\n const result = validateSchema(schema);\n if (!result.valid) {\n const messages = result.errors.map((e) => `${e.path}: ${e.message}`).join(\"; \");\n getLogger().warn(`Task \"${baseClass.type}\" has invalid ${name}: ${messages}`, {\n taskType: baseClass.type,\n schemaName: name,\n errors: result.errors,\n });\n }\n }\n}\n\n/**\n * Removes a task constructor from the registry.\n * Must be called before re-registering a task type with a different constructor.\n *\n * @param type - The task type identifier to remove\n * @returns true if the task type was found and removed, false otherwise\n */\nfunction unregisterTask(type: string): boolean {\n return taskConstructors.delete(type);\n}\n\n/**\n * TaskRegistry provides a centralized registry for task types.\n * It enables dynamic task instantiation and management across the application.\n */\nexport const TaskRegistry = {\n /**\n * Map containing all registered task constructors\n */\n all: taskConstructors,\n\n /**\n * Function to register new task types\n */\n registerTask,\n\n /**\n * Function to remove a registered task type\n */\n unregisterTask,\n};\n\n// ========================================================================\n// DI-based access\n// ========================================================================\n\n/**\n * Service token for the task constructor registry.\n * Maps task type names to their constructor functions.\n */\nexport const TASK_CONSTRUCTORS =\n createServiceToken<Map<string, AnyTaskConstructor>>(\"task.constructors\");\n\n/**\n * Gets the global task constructors map.\n * @returns The registered task constructors map\n */\nexport function getGlobalTaskConstructors(): Map<string, AnyTaskConstructor> {\n return globalServiceRegistry.get(TASK_CONSTRUCTORS);\n}\n\n/**\n * Sets the global task constructors map, replacing the default TaskRegistry-backed factory.\n * @param map The task constructors map to register\n */\nexport function setGlobalTaskConstructors(map: Map<string, AnyTaskConstructor>): void {\n globalServiceRegistry.registerInstance(TASK_CONSTRUCTORS, map);\n}\n\n/**\n * Gets the task constructors map from the given registry,\n * falling back to the global TaskRegistry.\n */\nexport function getTaskConstructors(registry?: ServiceRegistry): Map<string, AnyTaskConstructor> {\n if (!registry) return TaskRegistry.all;\n return registry.has(TASK_CONSTRUCTORS) ? registry.get(TASK_CONSTRUCTORS) : TaskRegistry.all;\n}\n\n// ========================================================================\n// Tasks resolver\n// ========================================================================\n\n/**\n * Resolves a task type name to a tool definition object via the task constructor registry.\n *\n * Used by the input resolver system for `format: \"tasks\"` properties.\n * Converts lightweight string IDs (stored by the property editor) into full\n * tool definition objects at runtime.\n *\n * @param id - Task type name registered in TaskRegistry\n * @param format - The format string (unused)\n * @param registry - Service registry for context-specific lookups\n * @returns Tool definition object, or undefined if the task type is not found\n */\nfunction resolveTaskFromRegistry(\n id: string,\n _format: string,\n registry: ServiceRegistry\n):\n | {\n name: string;\n description: string;\n inputSchema: unknown;\n outputSchema: unknown;\n configSchema?: unknown;\n }\n | undefined {\n const constructors = getTaskConstructors(registry);\n const ctor = constructors.get(id);\n if (!ctor) return undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const ctorAny = ctor as any;\n const configSchema =\n typeof ctorAny.configSchema === \"function\" ? ctorAny.configSchema() : undefined;\n return {\n name: ctor.type,\n description: (ctor as { description?: string }).description ?? \"\",\n inputSchema: ctor.inputSchema(),\n outputSchema: ctor.outputSchema(),\n ...(configSchema ? { configSchema } : {}),\n };\n}\n\nfunction compactTask(\n value: unknown,\n _format: string,\n registry: ServiceRegistry\n): string | undefined {\n if (typeof value === \"object\" && value !== null && \"name\" in value) {\n const name = (value as Record<string, unknown>).name;\n if (typeof name !== \"string\") return undefined;\n const constructors = getTaskConstructors(registry);\n const ctor = constructors.get(name);\n return ctor ? name : undefined;\n }\n return undefined;\n}\n\n/**\n * Registers the task constructor map default factory and the \"tasks\" input resolver/compactor\n * on the given registry. Called by `bootstrapWorkglow` and `createOrchestrationContext`.\n */\nexport function registerTaskDefaults(registry: ServiceRegistry = globalServiceRegistry): void {\n registry.registerIfAbsent(\n TASK_CONSTRUCTORS,\n (): Map<string, AnyTaskConstructor> => TaskRegistry.all,\n true\n );\n registerInputResolver(\"tasks\", resolveTaskFromRegistry, registry);\n registerInputCompactor(\"tasks\", compactTask, registry);\n}\n\n// Self-register on the global registry. Idempotent.\nregisterTaskDefaults();\n",
@@ -79,7 +79,7 @@
79
79
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { BaseTabularStorage } from \"@workglow/storage\";\nimport { makeFingerprint } from \"@workglow/util\";\nimport { compress, decompress } from \"@workglow/util/compress\";\nimport { DataPortSchemaObject } from \"@workglow/util/schema\";\nimport { TaskInput, TaskOutput } from \"../task/TaskTypes\";\nimport { TaskOutputRepository } from \"./TaskOutputRepository\";\n\nexport type TaskOutputPrimaryKey = {\n key: string;\n taskType: string;\n};\n\nexport const TaskOutputSchema = {\n type: \"object\",\n properties: {\n key: { type: \"string\" },\n taskType: { type: \"string\" },\n value: { type: \"string\", contentEncoding: \"blob\" },\n createdAt: { type: \"string\", format: \"date-time\" },\n },\n additionalProperties: false,\n} satisfies DataPortSchemaObject;\n\nexport const TaskOutputPrimaryKeyNames = [\"key\", \"taskType\"] as const;\n\nexport type TaskOutputRepositoryStorage = BaseTabularStorage<\n typeof TaskOutputSchema,\n typeof TaskOutputPrimaryKeyNames\n>;\n\nexport type TaskOutputRepositoryOptions = {\n tabularRepository: TaskOutputRepositoryStorage;\n outputCompression?: boolean;\n};\n\n/**\n * Abstract class for managing task outputs in a repository\n * Provides methods for saving, retrieving, and clearing task outputs\n */\nexport class TaskOutputTabularRepository extends TaskOutputRepository {\n /**\n * The tabular repository for the task outputs\n */\n tabularRepository: TaskOutputRepositoryStorage;\n\n /**\n * Constructor for the TaskOutputTabularRepository\n * @param options The options for the repository\n */\n constructor({ tabularRepository, outputCompression = true }: TaskOutputRepositoryOptions) {\n super({ outputCompression });\n this.tabularRepository = tabularRepository;\n this.outputCompression = outputCompression;\n }\n\n public isDurable(): boolean {\n const backing = this.tabularRepository as unknown as { isDurable?: () => boolean };\n return backing.isDurable?.() ?? true;\n }\n\n /**\n * Sets up the database for the repository.\n * Must be called before using any other methods.\n */\n async setupDatabase(): Promise<void> {\n await this.tabularRepository.setupDatabase?.();\n }\n\n public async keyFromInputs(inputs: TaskInput): Promise<string> {\n return await makeFingerprint(inputs);\n }\n\n /**\n * Saves a task output to the repository\n * @param taskType The type of task to save the output for\n * @param inputs The input parameters for the task\n * @param output The task output to save\n */\n async saveOutput(\n taskType: string,\n inputs: TaskInput,\n output: TaskOutput,\n createdAt = new Date() // for testing purposes\n ): Promise<void> {\n const key = await this.keyFromInputs(inputs);\n const value = JSON.stringify(output);\n if (this.outputCompression) {\n const compressedValue = await compress(value);\n await this.tabularRepository.put({\n taskType,\n key,\n // contentEncoding: \"blob\" allows Uint8Array despite schema type being \"string\"\n value: compressedValue as unknown as string,\n createdAt: createdAt.toISOString(),\n });\n } else {\n const valueBuffer = Buffer.from(value);\n await this.tabularRepository.put({\n taskType,\n key,\n // contentEncoding: \"blob\" allows Buffer/Uint8Array despite schema type being \"string\"\n value: valueBuffer as unknown as string,\n createdAt: createdAt.toISOString(),\n });\n }\n this.emit(\"output_saved\", taskType);\n }\n\n /**\n * Retrieves a task output from the repository\n * @param taskType The type of task to retrieve the output for\n * @param inputs The input parameters for the task\n * @returns The retrieved task output, or undefined if not found\n */\n async getOutput(taskType: string, inputs: TaskInput): Promise<TaskOutput | undefined> {\n const key = await this.keyFromInputs(inputs);\n const output = await this.tabularRepository.get({ key, taskType });\n this.emit(\"output_retrieved\", taskType);\n if (output?.value) {\n if (this.outputCompression) {\n // Coerce JSON-serialized binary (from filesystem JSON store) back to Uint8Array\n const raw: unknown = output.value as unknown;\n const bytes: Uint8Array =\n raw instanceof Uint8Array\n ? raw\n : Array.isArray(raw)\n ? new Uint8Array(raw as number[])\n : raw && typeof raw === \"object\"\n ? new Uint8Array(\n Object.keys(raw as Record<string, number>)\n .filter((k) => /^\\d+$/.test(k))\n .sort((a, b) => Number(a) - Number(b))\n .map((k) => (raw as Record<string, number>)[k])\n )\n : new Uint8Array();\n const decompressedValue = await decompress(bytes);\n const value = JSON.parse(decompressedValue) as TaskOutput;\n return value as TaskOutput;\n } else {\n const stringValue = output.value.toString();\n const value = JSON.parse(stringValue) as TaskOutput;\n return value as TaskOutput;\n }\n } else {\n return undefined;\n }\n }\n\n /**\n * Clears all task outputs from the repository\n * @emits output_cleared when the operation completes\n */\n async clear(): Promise<void> {\n await this.tabularRepository.deleteAll();\n this.emit(\"output_cleared\");\n }\n\n /**\n * Returns the number of task outputs stored in the repository\n * @returns The count of stored task outputs\n */\n async size(): Promise<number> {\n return await this.tabularRepository.size();\n }\n\n /**\n * Clear all task outputs from the repository that are older than the given date\n * @param olderThanInMs The time in milliseconds to clear task outputs older than\n */\n async clearOlderThan(olderThanInMs: number): Promise<void> {\n const date = new Date(Date.now() - olderThanInMs).toISOString();\n await this.tabularRepository.deleteSearch({ createdAt: { value: date, operator: \"<\" } });\n this.emit(\"output_pruned\");\n }\n\n /**\n * Deletes all entries whose `taskType` starts with the given prefix.\n * Used by {@link RunPrivateCacheRepo.clearRun} to remove all entries for a specific runId.\n *\n * @param prefix - The prefix to match against `taskType` (e.g. `__run:my-run::`)\n */\n override async deleteByTaskTypePrefix(prefix: string): Promise<void> {\n for await (const row of this.tabularRepository.records()) {\n if (typeof row.taskType === \"string\" && row.taskType.startsWith(prefix)) {\n await this.tabularRepository.delete({ key: row.key, taskType: row.taskType });\n }\n }\n }\n\n /**\n * Deletes entries whose `taskType` starts with the given prefix AND whose\n * `createdAt` is older than `olderThanInMs` milliseconds ago.\n *\n * Used by {@link CacheJanitor} to prune stale run-private entries left behind\n * by runs that crashed and were never restarted.\n *\n * @param prefix - The taskType prefix to match (e.g. `__run:`)\n * @param olderThanInMs - Age threshold in milliseconds; rows older than this are deleted\n */\n override async clearOlderThanWithTaskTypePrefix(\n prefix: string,\n olderThanInMs: number\n ): Promise<void> {\n const cutoff = Date.now() - olderThanInMs;\n for await (const row of this.tabularRepository.records()) {\n if (typeof row.taskType === \"string\" && row.taskType.startsWith(prefix)) {\n const ts = typeof row.createdAt === \"string\" ? new Date(row.createdAt).getTime() : NaN;\n if (!isNaN(ts) && ts < cutoff) {\n await this.tabularRepository.delete({ key: row.key, taskType: row.taskType });\n }\n }\n }\n }\n\n /**\n * Counts entries whose `taskType` starts with the given prefix.\n * Used by {@link RunPrivateCacheRepo.size} so the wrapper's count reflects\n * only its own namespaced view.\n *\n * @param prefix - The taskType prefix to match (e.g. `__run:my-run::`)\n */\n override async sizeByTaskTypePrefix(prefix: string): Promise<number> {\n let count = 0;\n for await (const row of this.tabularRepository.records()) {\n if (typeof row.taskType === \"string\" && row.taskType.startsWith(prefix)) {\n count++;\n }\n }\n return count;\n }\n}\n",
80
80
  "/**\n * @copyright\n * Copyright 2026 Steven Roussey\n * All Rights Reserved\n */\nexport { _resetPortCodecsForTests, getPortCodec, registerPortCodec } from \"@workglow/util\";\nexport type { PortCodec } from \"@workglow/util\";\n"
81
81
  ],
82
- "mappings": "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",
83
- "debugId": "38F6A77066820AB764756E2164756E21",
82
+ "mappings": "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",
83
+ "debugId": "E8891351CB2EEFF564756E2164756E21",
84
84
  "names": []
85
85
  }