@workglow/openai 0.3.39 → 0.3.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/ai/common/OpenAI_CacheCheckpoint.ts", "../src/ai/common/OpenAI_Client.ts", "../src/ai/registerOpenAiInline.browser.ts", "../src/ai/common/OpenAI_CapabilitySets.ts", "../src/ai/common/OpenAI_CountTokens.browser.ts", "../src/ai/common/OpenAI_ImageEdit.ts", "../src/ai/common/OpenAI_ImageGenerate.ts", "../src/ai/common/OpenAI_Constants.ts", "../src/ai/common/OpenAI_ModelInfo.ts", "../src/ai/common/OpenAI_ModelSearch.ts", "../src/ai/common/OpenAI_StructuredGeneration.ts", "../src/ai/common/OpenAI_ResponsesWarnings.ts", "../src/ai/common/OpenAI_TextEmbedding.ts", "../src/ai/common/OpenAI_TextGeneration.ts", "../src/ai/common/OpenAI_TextRewriter.ts", "../src/ai/common/OpenAI_TextSummary.ts", "../src/ai/common/OpenAI_ToolCalling.ts", "../src/ai/common/OpenAI_JobRunFns.browser.ts", "../src/ai/OpenAiQueuedProvider.ts", "../src/ai/common/OpenAI_Capabilities.ts", "../src/ai/registerOpenAiWorker.browser.ts", "../src/ai/OpenAiProvider.ts"],
3
+ "sources": ["../src/ai/common/OpenAI_CacheCheckpoint.ts", "../src/ai/common/OpenAI_Client.ts", "../src/ai/common/OpenAI_EffortPolicy.ts", "../src/ai/registerOpenAiInline.browser.ts", "../src/ai/common/OpenAI_CapabilitySets.ts", "../src/ai/common/OpenAI_CountTokens.browser.ts", "../src/ai/common/OpenAI_ImageEdit.ts", "../src/ai/common/OpenAI_ImageGenerate.ts", "../src/ai/common/OpenAI_Constants.ts", "../src/ai/common/OpenAI_ModelInfo.ts", "../src/ai/common/OpenAI_ModelSearch.ts", "../src/ai/common/OpenAI_StructuredGeneration.ts", "../src/ai/common/OpenAI_ResponsesWarnings.ts", "../src/ai/common/OpenAI_TextEmbedding.ts", "../src/ai/common/OpenAI_TextGeneration.ts", "../src/ai/common/OpenAI_TextRewriter.ts", "../src/ai/common/OpenAI_TextSummary.ts", "../src/ai/common/OpenAI_ToolCalling.ts", "../src/ai/common/OpenAI_JobRunFns.browser.ts", "../src/ai/OpenAiQueuedProvider.ts", "../src/ai/common/OpenAI_Capabilities.ts", "../src/ai/registerOpenAiWorker.browser.ts", "../src/ai/OpenAiProvider.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n AiSessionContext,\n CacheCheckpointTaskInput,\n CacheCheckpointTaskOutput,\n ChatMessage,\n ToolDefinition,\n} from \"@workglow/ai\";\nimport {\n buildResponsesInput,\n buildResponsesTools,\n mapOpenAIResponsesUsage,\n} from \"@workglow/ai/provider-utils\";\nimport { promptToTailMessages, toOpenAIMessages } from \"@workglow/ai/worker\";\nimport { finalizeResponsesRequest, getClient, getModelName } from \"./OpenAI_Client\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\n/**\n * Merges a checkpoint prefix into the unified generation input: the prefix's\n * messages come first, the caller's tail follows (its `messages`, or its\n * `prompt` lifted into a user message — the shared message builders only fall\n * back to `prompt` when the message list is empty), the prefix system prompt\n * applies when the call carries none (an explicit `\"\"` falls through too —\n * suppressing the warmed instructions would diverge the replayed prefix), and\n * the effective `tools` are the caller's when it declares any, else the\n * prefix's — tools precede the conversation in the serialized request, so a\n * tools-warmed prefix consumed without them never shares the warm-up's cached\n * prefix. Returns undefined when the session has no prefix so plain calls\n * take the unmodified path.\n *\n * OpenAI's prompt caching is automatic and keyed on the request's literal\n * token prefix, so replaying identical prefix content is both the correctness\n * path and the cache-hit path — no per-request cache annotations exist.\n */\nexport function mergeOpenAICheckpointPrefix(\n session: AiSessionContext | undefined,\n input: {\n readonly messages?: readonly unknown[] | undefined;\n readonly systemPrompt?: string | undefined;\n readonly prompt?: unknown;\n readonly tools?: readonly ToolDefinition[] | undefined;\n }\n):\n | {\n messages: readonly ChatMessage[];\n systemPrompt: string | undefined;\n tools: readonly ToolDefinition[] | undefined;\n }\n | undefined {\n const prefix = session?.prefix;\n if (!prefix) return undefined;\n const tail: readonly ChatMessage[] =\n Array.isArray(input.messages) && input.messages.length > 0\n ? (input.messages as readonly ChatMessage[])\n : promptToTailMessages(input.prompt);\n return {\n messages: [...(prefix.messages ?? []), ...tail],\n systemPrompt: input.systemPrompt || prefix.systemPrompt,\n tools: input.tools && input.tools.length > 0 ? input.tools : prefix.tools,\n };\n}\n\n/**\n * Warm-up run-fn for `[\"cache.checkpoint\"]` on OpenAI. Sends the prefix once\n * (minimal `max_output_tokens` — the Responses API floor is 16) so the\n * server-side automatic prompt cache is populated before consumers arrive.\n *\n * The warm-up is advisory: OpenAI caches long prompt prefixes on its own and\n * may evict at any time, so consumption never depends on this call having\n * succeeded — consumers always replay the full prefix content.\n * {@link finalizeResponsesRequest} derives the `prompt_cache_key` from the\n * request's model + instructions + tools, so this warm-up and every consumer\n * replaying the same prefix converge on the same key without coordination.\n */\nexport const OpenAI_CacheCheckpoint_Stream: AiProviderRunFn<\n CacheCheckpointTaskInput,\n CacheCheckpointTaskOutput,\n OpenAiModelConfig\n> = async (_input, model, signal, emit, _outputSchema, session) => {\n const prefix = session?.prefix ?? {};\n const client = await getClient(model);\n\n // The \".\" prompt is a throwaway user turn used only when the prefix has no\n // messages of its own (toOpenAIMessages ignores it otherwise); the cached\n // value is the system/tools region ahead of it.\n const messages = toOpenAIMessages({\n messages: prefix.messages ?? [],\n systemPrompt: prefix.systemPrompt,\n prompt: \".\",\n tools: [],\n } as never);\n const { input: responsesInput, instructions } = buildResponsesInput({ messages });\n\n const params: Record<string, unknown> = {\n model: getModelName(model),\n input: responsesInput,\n max_output_tokens: 16,\n };\n if (instructions !== undefined) params.instructions = instructions;\n if (prefix.tools && prefix.tools.length > 0) {\n params.tools = buildResponsesTools(prefix.tools);\n }\n finalizeResponsesRequest(model, params);\n\n const response = await (client.responses.create as (p: unknown, o: unknown) => Promise<unknown>)(\n params,\n { signal }\n );\n const usage = mapOpenAIResponsesUsage((response as { usage?: unknown } | undefined)?.usage);\n emit({\n type: \"finish\",\n data: { checkpoint: session?.sessionId ?? \"\" },\n ...(usage ? { usage } : {}),\n });\n};\n",
6
6
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isModelEffort, type ModelEffort } from \"@workglow/ai\";\nimport { isBrowserLike, resolveApiKey, validateProviderBaseUrl } from \"@workglow/ai/provider-utils\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\n/** Maps coarse {@link ModelEffort} to OpenAI Responses `reasoning.effort`. */\nconst EFFORT_TO_OPENAI: Record<ModelEffort, string> = {\n none: \"none\",\n low: \"low\",\n medium: \"medium\",\n high: \"high\",\n extra: \"xhigh\",\n ultra: \"max\",\n};\n\n/**\n * Hostnames (or hostname suffixes) accepted for OpenAI `base_url` without\n * the explicit `trustedBaseUrl` opt-out. Includes Azure OpenAI tenants.\n */\nexport const OPENAI_ALLOWED_HOSTS: readonly string[] = [\"api.openai.com\", \".openai.azure.com\"];\n\ntype OpenAIClientClass = new (config: any) => any;\n\nlet _loadPromise: Promise<OpenAIClientClass> | undefined;\n\n// NOTE: we do not want to de-dup this in the provider-utils, vite wants direct import with string literals.\nexport async function loadOpenAISDK(): Promise<OpenAIClientClass> {\n _loadPromise ??= import(/* @vite-ignore */ \"openai\")\n\n .then((mod) => mod.default as OpenAIClientClass)\n .catch(() => {\n _loadPromise = undefined;\n throw new Error(\"openai is required for OpenAI tasks. Install it with: bun add openai\");\n });\n return _loadPromise;\n}\n\ninterface ResolvedProviderConfig {\n readonly credential_key?: string;\n readonly api_key?: string;\n readonly model_name?: string;\n readonly base_url?: string;\n readonly organization?: string;\n readonly prompt_cache_key?: string;\n readonly reasoning?: { readonly effort?: string; readonly mode?: string };\n /**\n * When `true`, accept the `base_url` even if its hostname is not in\n * {@link OPENAI_ALLOWED_HOSTS}. Use only for known-good custom enterprise\n * gateways. The URL still has to parse and use a safe scheme.\n */\n readonly trustedBaseUrl?: boolean;\n}\n\nlet _testClient: unknown;\n\n/**\n * Override the client returned by {@link getClient} so runtime tests can\n * capture the requests the OpenAI run-fns build without a live SDK, API key,\n * or network call. Pass `undefined` to restore normal SDK-backed creation.\n * This lives in the runtime module (not a `vi.mock` of `openai`) so it works\n * identically whether the provider resolves to `src` or the bundled `dist`,\n * and is immune to duplicate SDK copies across the workspace defeating\n * module-level mocks.\n */\nfunction setOpenAIClientForTests(client: unknown): void {\n _testClient = client;\n}\n\n/**\n * @internal Symbols exported only for use by `@workglow/test`. Not part of the\n * stable public API. Surfaced on the `ai-runtime` barrel (via `export *`) and\n * merged into the `/ai` barrel's `_testOnly`.\n */\nexport const _testOnly = {\n setOpenAIClientForTests,\n} as const;\n\nexport async function getClient(model: OpenAiModelConfig | undefined) {\n if (_testClient) return _testClient as InstanceType<OpenAIClientClass>;\n const OpenAI = await loadOpenAISDK();\n const config = model?.provider_config as ResolvedProviderConfig | undefined;\n const apiKey = resolveApiKey({\n config,\n envVar: \"OPENAI_API_KEY\",\n providerLabel: \"OpenAI\",\n });\n // Throw before SDK construction on a rejected base_url so the API key is\n // never sent to an unvalidated host.\n const baseURL = validateProviderBaseUrl(config?.base_url, {\n vendor: \"openai\",\n allowHosts: OPENAI_ALLOWED_HOSTS,\n trustedBaseUrl: config?.trustedBaseUrl,\n providerLabel: \"OpenAI\",\n });\n try {\n return new OpenAI({\n apiKey,\n baseURL,\n organization: config?.organization || undefined,\n dangerouslyAllowBrowser: isBrowserLike(),\n });\n } catch (err) {\n throw new Error(\n `Failed to create OpenAI client: ${err instanceof Error ? err.message : \"unknown error\"}`\n );\n }\n}\n\nexport function getModelName(model: OpenAiModelConfig | undefined): string {\n const name = model?.provider_config?.model_name;\n if (!name) {\n throw new Error(\"Missing model name in provider_config.model_name.\");\n }\n return name;\n}\n\n/**\n * Resolves the `reasoning` object for reasoning-capable models (GPT-5.6\n * sol/terra/luna and the o-series). Native `provider_config.reasoning` wins;\n * otherwise map `model.effort`. Returns `undefined` when neither is set.\n */\nexport function getReasoningConfig(\n model: OpenAiModelConfig | undefined\n): { effort?: string; mode?: string } | undefined {\n const reasoning = (model?.provider_config as ResolvedProviderConfig | undefined)?.reasoning;\n if (reasoning && (reasoning.effort !== undefined || reasoning.mode !== undefined)) {\n return reasoning;\n }\n if (isModelEffort(model?.effort)) {\n return { effort: EFFORT_TO_OPENAI[model.effort] };\n }\n return undefined;\n}\n\n/** Deterministic 32-bit FNV-1a hash → 8-char hex. Worker-safe (no crypto import). */\nfunction fnv1aHex(input: string): string {\n let hash = 0x811c9dc5;\n for (let i = 0; i < input.length; i++) {\n hash ^= input.charCodeAt(i);\n hash = Math.imul(hash, 0x01000193);\n }\n return (hash >>> 0).toString(16).padStart(8, \"0\");\n}\n\n/**\n * Resolves the Responses `prompt_cache_key`. Uses an explicit\n * `provider_config.prompt_cache_key` override when set, otherwise derives a\n * stable key from the request's cache-relevant prefix (model + system\n * instructions + tools) so requests sharing that prefix converge on one key and\n * hit the cache. GPT-5.6 bills cache writes, so a stable key (not a random one)\n * is the cost-correct default.\n */\nexport function resolvePromptCacheKey(\n model: OpenAiModelConfig | undefined,\n params: { model?: unknown; instructions?: unknown; tools?: unknown }\n): string {\n const override = (model?.provider_config as ResolvedProviderConfig | undefined)?.prompt_cache_key;\n if (override) return override;\n const material = JSON.stringify([\n params.model ?? \"\",\n params.instructions ?? \"\",\n params.tools ?? null,\n ]);\n return `wg-${fnv1aHex(material)}`;\n}\n\n/**\n * Applies the per-request Responses fields common to every OpenAI text run-fn:\n * the model's `reasoning` config and a stable `prompt_cache_key`. Mutates and\n * returns `params` so callers can inline it into the create call. Call this\n * last, after model/instructions/tools/temperature are populated, so the cache\n * key sees the full prefix and the reasoning default can see the temperature.\n *\n * When the caller pinned a `temperature` but expressed no reasoning preference,\n * reasoning is forced off. The two are not independently selectable on the\n * reasoning families: `gpt-5.6-luna` answers `temperature` alone with\n * `400 Unsupported parameter: 'temperature' is not supported with this model`,\n * yet accepts `{reasoning: {effort: \"none\"}, temperature: 0}`. A caller asking\n * for a specific temperature is asking for controlled sampling, so honouring\n * that request — rather than failing it — is the useful reading. An explicit\n * `reasoning` in the model config always wins.\n */\nexport function finalizeResponsesRequest(\n model: OpenAiModelConfig | undefined,\n params: Record<string, unknown>\n): Record<string, unknown> {\n const reasoning = getReasoningConfig(model);\n if (reasoning !== undefined) params.reasoning = reasoning;\n else if (params.temperature !== undefined) params.reasoning = { effort: \"none\" };\n params.prompt_cache_key = resolvePromptCacheKey(model, params);\n return params;\n}\n",
7
+ "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MODEL_EFFORTS, type ModelConfig, type ModelEffortPolicy } from \"@workglow/ai\";\n\nconst ALL = { supported: MODEL_EFFORTS, default: undefined } as const satisfies ModelEffortPolicy;\nconst REASONING = {\n supported: MODEL_EFFORTS,\n default: \"medium\",\n} as const satisfies ModelEffortPolicy;\nconst NONE = { supported: [], default: undefined } as const satisfies ModelEffortPolicy;\n\nfunction modelName(model: ModelConfig): string {\n return String(\n (model.provider_config as { model_name?: string } | undefined)?.model_name ?? \"\"\n ).trim();\n}\n\nexport function openaiEffortPolicy(model: ModelConfig): ModelEffortPolicy {\n const id = modelName(model);\n if (!id) return ALL;\n if (/^text-embedding/i.test(id) || /^gpt-image/i.test(id) || /^dall-e/i.test(id)) return NONE;\n if (/^gpt-5/i.test(id) || /^o[134]/i.test(id)) return REASONING;\n return NONE;\n}\n",
7
8
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRegisterOptions } from \"@workglow/ai\";\nimport { registerProviderInline } from \"@workglow/ai/provider-utils\";\nimport { OPENAI_PREVIEW_TASKS, OPENAI_RUN_FNS } from \"./common/OpenAI_JobRunFns.browser\";\nimport { OpenAiQueuedProvider } from \"./OpenAiQueuedProvider\";\n\nexport async function registerOpenAiInline(options?: AiProviderRegisterOptions): Promise<void> {\n await registerProviderInline(\n new OpenAiQueuedProvider(OPENAI_RUN_FNS, OPENAI_PREVIEW_TASKS),\n \"OpenAI\",\n options\n );\n}\n",
8
9
  "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability } from \"@workglow/ai/worker\";\n\n/**\n * Single source of truth for OpenAI's capability sets.\n *\n * Both `OPENAI_RUN_FNS` (the worker-side registration list) and\n * `workerRunFnSpecs()` (the main-thread proxy declaration) derive their\n * `serves` arrays from these named exports. SDK-free so the main thread\n * can import without paying the OpenAI client cost.\n *\n * To add a new capability set: declare a new `as const` constant here,\n * then reference it from both `OPENAI_RUN_FNS` and `OPENAI_RUN_FN_SPECS`.\n */\nexport const OPENAI_TEXT_GENERATION = [\"text.generation\"] as const satisfies Capability[];\nexport const OPENAI_TOOL_USE = [\"text.generation\", \"tool-use\"] as const satisfies Capability[];\nexport const OPENAI_JSON_MODE = [\"text.generation\", \"json-mode\"] as const satisfies Capability[];\nexport const OPENAI_TEXT_REWRITER = [\"text.rewriter\"] as const satisfies Capability[];\nexport const OPENAI_TEXT_SUMMARY = [\"text.summary\"] as const satisfies Capability[];\nexport const OPENAI_TEXT_EMBEDDING = [\"text.embedding\"] as const satisfies Capability[];\nexport const OPENAI_IMAGE_GENERATION = [\"image.generation\"] as const satisfies Capability[];\nexport const OPENAI_IMAGE_EDITING = [\"image.editing\"] as const satisfies Capability[];\nexport const OPENAI_COUNT_TOKENS = [\"model.count-tokens\"] as const satisfies Capability[];\nexport const OPENAI_MODEL_SEARCH = [\"model.search\"] as const satisfies Capability[];\nexport const OPENAI_MODEL_INFO = [\"model.info\"] as const satisfies Capability[];\nexport const OPENAI_CACHE_CHECKPOINT = [\"cache.checkpoint\"] as const satisfies Capability[];\n\n/** Aggregated list — for `workerRunFnSpecs()` derivation. Order MUST match `OPENAI_RUN_FNS`. */\nexport const OPENAI_CAPABILITY_SETS = [\n OPENAI_TEXT_GENERATION,\n OPENAI_TOOL_USE,\n OPENAI_JSON_MODE,\n OPENAI_TEXT_REWRITER,\n OPENAI_TEXT_SUMMARY,\n OPENAI_TEXT_EMBEDDING,\n OPENAI_IMAGE_GENERATION,\n OPENAI_IMAGE_EDITING,\n OPENAI_COUNT_TOKENS,\n OPENAI_MODEL_SEARCH,\n OPENAI_MODEL_INFO,\n OPENAI_CACHE_CHECKPOINT,\n] as const;\n",
9
10
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderPreviewRunFn,\n AiProviderRunFn,\n CountTokensTaskInput,\n CountTokensTaskOutput,\n} from \"@workglow/ai\";\nimport type { Tiktoken, TiktokenModel } from \"js-tiktoken\";\nimport { getModelName } from \"./OpenAI_Client\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\nlet _tiktoken: typeof import(\"js-tiktoken\") | undefined;\n\nasync function loadTiktoken() {\n if (!_tiktoken) {\n try {\n _tiktoken = await import(\"js-tiktoken\");\n } catch {\n throw new Error(\n \"js-tiktoken is required for OpenAI token counting in the browser. Install it with: bun add js-tiktoken\"\n );\n }\n }\n return _tiktoken;\n}\n\nconst _encoderCache = new Map<string, Tiktoken>();\n\nasync function getEncoder(modelName: string) {\n const tiktoken = await loadTiktoken();\n if (!_encoderCache.has(modelName)) {\n try {\n _encoderCache.set(modelName, tiktoken.encodingForModel(modelName as TiktokenModel));\n } catch {\n const fallback = \"cl100k_base\";\n if (!_encoderCache.has(fallback)) {\n _encoderCache.set(fallback, tiktoken.getEncoding(fallback));\n }\n _encoderCache.set(modelName, _encoderCache.get(fallback)!);\n }\n }\n return _encoderCache.get(modelName)!;\n}\n\nasync function countTokens(\n input: CountTokensTaskInput,\n model: OpenAiModelConfig | undefined\n): Promise<CountTokensTaskOutput> {\n const enc = await getEncoder(getModelName(model));\n const tokens = enc.encode(input.text);\n return { count: tokens.length };\n}\n\n/**\n * One-shot run-fn for `[\"model.count-tokens\"]` in the browser.\n * Emits a single `finish` event carrying the token count.\n */\nexport const OpenAI_CountTokens_Stream: AiProviderRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n OpenAiModelConfig\n> = async (input, model, _signal, emit) => {\n const result = await countTokens(input, model);\n emit({ type: \"finish\", data: result });\n};\n\n/** Lightweight preview path used by `AiTask.executePreview()`. */\nexport const OpenAI_CountTokens_Preview: AiProviderPreviewRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n OpenAiModelConfig\n> = async (input, model) => {\n return countTokens(input, model);\n};\n",
@@ -11,7 +12,7 @@
11
12
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { ImageValue } from \"@workglow/util/media\";\n\nimport { dataUriToImageValue, modelIdForError } from \"@workglow/ai/provider-utils\";\nimport { getClient, getModelName } from \"./OpenAI_Client\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\n/** Maps the normalized aspect ratio to gpt-image-2 / DALL-E supported sizes. */\nfunction aspectRatioToSize(\n aspectRatio: string | undefined\n): \"1024x1024\" | \"1024x1536\" | \"1536x1024\" {\n switch (aspectRatio) {\n case \"16:9\":\n case \"4:3\":\n return \"1536x1024\";\n case \"9:16\":\n case \"3:4\":\n return \"1024x1536\";\n case \"1:1\":\n default:\n return \"1024x1024\";\n }\n}\n\nasync function decodeB64Png(b64: string): Promise<ImageValue> {\n return dataUriToImageValue(`data:image/png;base64,${b64}`);\n}\n\n/**\n * Streaming run-fn for `[\"image.generation\"]`. GPT-image models support\n * native streaming via `stream: true` + `partial_images: 3` and emit a\n * `snapshot` event per partial frame plus a final snapshot. DALL-E models\n * do not support streaming so this falls back to a single non-streaming\n * call and emits one snapshot before finish.\n */\nexport const OpenAI_ImageGenerate_Stream: AiProviderRunFn<\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n OpenAiModelConfig\n> = async (input, model, signal, emit) => {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const size = aspectRatioToSize(input.aspectRatio);\n\n // DALL-E 2 and DALL-E 3 do not support streaming — fall back to non-streaming.\n if (modelName.startsWith(\"dall-e\")) {\n try {\n const resp = await (\n client.images.generate as unknown as (\n body: Record<string, unknown>,\n options: { signal: AbortSignal }\n ) => Promise<{ data?: Array<{ b64_json?: string }> }>\n )(\n {\n model: modelName,\n prompt: input.prompt,\n size,\n quality: input.quality,\n n: 1,\n response_format: \"b64_json\",\n ...(input.providerOptions ?? {}),\n },\n { signal }\n );\n const b64 = resp.data?.[0]?.b64_json;\n if (!b64) {\n throw new ImageGenerationProviderError(\n modelIdForError(model, \"openai\"),\n \"Empty response (no b64_json)\"\n );\n }\n const image = await decodeB64Png(b64);\n emit({ type: \"snapshot\", data: { image } } as Parameters<typeof emit>[0]);\n emit({ type: \"finish\", data: {} as ImageGenerateTaskOutput });\n return;\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n ) {\n throw err;\n }\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/safety|policy|moderation/i.test(msg)) {\n throw new ImageGenerationContentPolicyError(modelIdForError(model, \"openai\"), msg);\n }\n throw new ImageGenerationProviderError(modelIdForError(model, \"openai\"), msg, {\n cause: err as Error,\n });\n }\n }\n\n // GPT image models support streaming.\n try {\n const stream = await client.images.generate(\n {\n model: modelName,\n prompt: input.prompt,\n size,\n quality: input.quality as \"low\" | \"medium\" | \"high\" | \"auto\" | undefined,\n n: 1,\n stream: true,\n partial_images: 3,\n ...(input.providerOptions ?? {}),\n },\n { signal }\n );\n\n for await (const event of stream) {\n if (signal.aborted) return;\n const b64 = event.b64_json;\n if (!b64) continue;\n const image = await decodeB64Png(b64);\n emit({ type: \"snapshot\", data: { image } } as Parameters<typeof emit>[0]);\n }\n emit({ type: \"finish\", data: {} as ImageGenerateTaskOutput });\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n ) {\n throw err;\n }\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/safety|policy|moderation/i.test(msg)) {\n throw new ImageGenerationContentPolicyError(modelIdForError(model, \"openai\"), msg);\n }\n throw new ImageGenerationProviderError(modelIdForError(model, \"openai\"), msg, {\n cause: err as Error,\n });\n }\n};\n",
12
13
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const OPENAI = \"OPENAI\";\n",
13
14
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, ModelInfoTaskInput, ModelInfoTaskOutput } from \"@workglow/ai\";\nimport { getClient } from \"./OpenAI_Client\";\nimport { OPENAI } from \"./OpenAI_Constants\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\n/** Known OpenAI embedding model dimensions. */\nconst OPENAI_EMBEDDING_DIMENSIONS: Record<string, { native_dimensions: number; mrl: boolean }> = {\n \"text-embedding-3-small\": { native_dimensions: 1536, mrl: true },\n \"text-embedding-3-large\": { native_dimensions: 3072, mrl: true },\n \"text-embedding-ada-002\": { native_dimensions: 1536, mrl: false },\n};\n\nfunction modelNameOf(model: OpenAiModelConfig | undefined): string {\n const name = model?.provider_config?.model_name;\n if (!name) {\n throw new Error(\"Missing model name in provider_config.model_name.\");\n }\n return name;\n}\n\nfunction isNotFoundError(err: unknown): boolean {\n if (!err || typeof err !== \"object\") return false;\n const status = (err as { status?: unknown }).status;\n const code = (err as { code?: unknown }).code;\n const statusCode = (err as { statusCode?: unknown }).statusCode;\n return status === 404 || statusCode === 404 || code === \"model_not_found\";\n}\n\n/**\n * Confirm the model id exists on OpenAI via `models.retrieve`. Throws naming\n * the provider and id when the API reports the model missing; other errors\n * propagate (auth/network).\n */\nasync function assertOpenAiModelExists(\n model: OpenAiModelConfig | undefined,\n signal: AbortSignal | undefined\n): Promise<string> {\n const modelName = modelNameOf(model);\n const client = await getClient(model);\n try {\n await client.models.retrieve(modelName, signal ? { signal } : undefined);\n } catch (err) {\n if (isNotFoundError(err)) {\n throw new Error(\n `${OPENAI} model \"${modelName}\" was not found (provider API returned not found)`\n );\n }\n throw err;\n }\n return modelName;\n}\n\nfunction remoteInfoBase(input: ModelInfoTaskInput): ModelInfoTaskOutput {\n return {\n model: input.model,\n is_local: false,\n is_remote: true,\n supports_browser: true,\n supports_node: true,\n is_cached: false,\n is_loaded: false,\n file_sizes: null,\n };\n}\n\n/**\n * One-shot run-fn for `[\"model.info\"]`. Verifies the model exists via\n * OpenAI's `models.retrieve`, then emits a remote info record. When\n * `detail` is `\"dimensions\"`, attaches known embedding dimensions after\n * the existence check.\n */\nexport const OpenAI_ModelInfo_Stream: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n OpenAiModelConfig\n> = async (input, model, signal, emit) => {\n const modelName = await assertOpenAiModelExists(model, signal);\n const base = remoteInfoBase(input);\n\n if (input.detail === \"dimensions\") {\n const pc = model?.provider_config as Record<string, unknown>;\n let native_dimensions =\n typeof pc?.native_dimensions === \"number\" ? pc.native_dimensions : undefined;\n let mrl = typeof pc?.mrl === \"boolean\" ? pc.mrl : undefined;\n\n if (native_dimensions === undefined) {\n const known = OPENAI_EMBEDDING_DIMENSIONS[modelName];\n if (known) {\n native_dimensions = known.native_dimensions;\n mrl = mrl ?? known.mrl;\n }\n }\n\n emit({\n type: \"finish\",\n data: {\n ...base,\n ...(native_dimensions !== undefined ? { native_dimensions } : {}),\n ...(mrl !== undefined ? { mrl } : {}),\n },\n });\n return;\n }\n\n emit({ type: \"finish\", data: base });\n};\n",
14
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ModelSearchResultItem,\n ModelSearchTaskInput,\n ModelSearchTaskOutput,\n} from \"@workglow/ai\";\nimport { filterLabeledModelsByQuery } from \"@workglow/ai/provider-utils\";\nimport { getClient } from \"./OpenAI_Client\";\nimport { OPENAI } from \"./OpenAI_Constants\";\n\ninterface OpenAiModelListItem {\n readonly label: string;\n readonly value: string;\n readonly description?: string;\n}\n\nconst OPENAI_FALLBACK: Array<{ label: string; value: string }> = [\n { label: \"gpt-image-2\", value: \"gpt-image-2\" },\n { label: \"dall-e-3\", value: \"dall-e-3\" },\n { label: \"gpt-5.6\", value: \"gpt-5.6\" },\n { label: \"gpt-5.6-sol\", value: \"gpt-5.6-sol\" },\n { label: \"gpt-5.6-terra\", value: \"gpt-5.6-terra\" },\n { label: \"gpt-5.6-luna\", value: \"gpt-5.6-luna\" },\n { label: \"gpt-5.5\", value: \"gpt-5.5\" },\n { label: \"gpt-5.4-mini\", value: \"gpt-5.4-mini\" },\n { label: \"gpt-5.4-nano\", value: \"gpt-5.4-nano\" },\n { label: \"gpt-5\", value: \"gpt-5\" },\n { label: \"gpt-5-mini\", value: \"gpt-5-mini\" },\n { label: \"gpt-4o-mini\", value: \"gpt-4o-mini\" },\n { label: \"gpt-4-turbo\", value: \"gpt-4-turbo\" },\n { label: \"o3\", value: \"o3\" },\n { label: \"o3-mini\", value: \"o3-mini\" },\n { label: \"o1\", value: \"o1\" },\n { label: \"o1-mini\", value: \"o1-mini\" },\n];\n\nconst OPENAI_IMAGE_MODELS: Array<{ value: string; capabilities: string[] }> = [\n { value: \"gpt-image-2\", capabilities: [\"image.generation\", \"image.editing\"] },\n { value: \"dall-e-3\", capabilities: [\"image.generation\"] },\n];\n\nasync function listOpenAiModels(credentialKey: string): Promise<OpenAiModelListItem[]> {\n const client = await getClient({\n provider: OPENAI,\n provider_config: { model_name: \"\", credential_key: credentialKey },\n });\n const models: OpenAiModelListItem[] = [];\n for await (const m of client.models.list()) {\n models.push({ label: m.id, value: m.id, description: m.owned_by });\n }\n models.sort((a, b) => {\n const aGpt = a.value.startsWith(\"gpt\") || a.value.startsWith(\"o1\") ? 0 : 1;\n const bGpt = b.value.startsWith(\"gpt\") || b.value.startsWith(\"o1\") ? 0 : 1;\n if (aGpt !== bGpt) return aGpt - bGpt;\n return a.value.localeCompare(b.value);\n });\n return models;\n}\n\nfunction mapModelList(models: OpenAiModelListItem[]): ModelSearchResultItem[] {\n return models.map((m) => {\n const imageEntry = OPENAI_IMAGE_MODELS.find((i) => i.value === m.value);\n return {\n id: m.value,\n label: m.label,\n description: m.description ?? \"\",\n record: {\n model_id: m.value,\n provider: OPENAI,\n title: m.value,\n description: \"\",\n capabilities: imageEntry?.capabilities ?? [],\n provider_config: { model_name: m.value },\n metadata: {},\n },\n raw: m,\n };\n });\n}\n\n/**\n * One-shot run-fn for `[\"model.search\"]`. Emits a\n * single `finish` event with the search results. When no credential key is\n * provided, falls back to a curated static list of well-known OpenAI models.\n */\nexport const OpenAI_ModelSearch_Stream: AiProviderRunFn<\n ModelSearchTaskInput,\n ModelSearchTaskOutput\n> = async (input, _model, _signal, emit) => {\n let models: OpenAiModelListItem[];\n if (!input.credential_key) {\n models = OPENAI_FALLBACK;\n } else {\n models = await listOpenAiModels(input.credential_key);\n }\n models = filterLabeledModelsByQuery(models, input.query);\n emit({ type: \"finish\", data: { results: mapModelList(models) } });\n};\n",
15
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ModelSearchResultItem,\n ModelSearchTaskInput,\n ModelSearchTaskOutput,\n} from \"@workglow/ai\";\nimport { filterLabeledModelsByQuery } from \"@workglow/ai/provider-utils\";\nimport { stampEffortOptions } from \"@workglow/ai/worker\";\nimport { getClient } from \"./OpenAI_Client\";\nimport { OPENAI } from \"./OpenAI_Constants\";\nimport { openaiEffortPolicy } from \"./OpenAI_EffortPolicy\";\n\ninterface OpenAiModelListItem {\n readonly label: string;\n readonly value: string;\n readonly description?: string;\n}\n\nconst OPENAI_FALLBACK: Array<{ label: string; value: string }> = [\n { label: \"gpt-image-2\", value: \"gpt-image-2\" },\n { label: \"dall-e-3\", value: \"dall-e-3\" },\n { label: \"gpt-5.6\", value: \"gpt-5.6\" },\n { label: \"gpt-5.6-sol\", value: \"gpt-5.6-sol\" },\n { label: \"gpt-5.6-terra\", value: \"gpt-5.6-terra\" },\n { label: \"gpt-5.6-luna\", value: \"gpt-5.6-luna\" },\n { label: \"gpt-5.5\", value: \"gpt-5.5\" },\n { label: \"gpt-5.4-mini\", value: \"gpt-5.4-mini\" },\n { label: \"gpt-5.4-nano\", value: \"gpt-5.4-nano\" },\n { label: \"gpt-5\", value: \"gpt-5\" },\n { label: \"gpt-5-mini\", value: \"gpt-5-mini\" },\n { label: \"gpt-4o-mini\", value: \"gpt-4o-mini\" },\n { label: \"gpt-4-turbo\", value: \"gpt-4-turbo\" },\n { label: \"o3\", value: \"o3\" },\n { label: \"o3-mini\", value: \"o3-mini\" },\n { label: \"o1\", value: \"o1\" },\n { label: \"o1-mini\", value: \"o1-mini\" },\n];\n\nconst OPENAI_IMAGE_MODELS: Array<{ value: string; capabilities: string[] }> = [\n { value: \"gpt-image-2\", capabilities: [\"image.generation\", \"image.editing\"] },\n { value: \"dall-e-3\", capabilities: [\"image.generation\"] },\n];\n\nasync function listOpenAiModels(credentialKey: string): Promise<OpenAiModelListItem[]> {\n const client = await getClient({\n provider: OPENAI,\n provider_config: { model_name: \"\", credential_key: credentialKey },\n });\n const models: OpenAiModelListItem[] = [];\n for await (const m of client.models.list()) {\n models.push({ label: m.id, value: m.id, description: m.owned_by });\n }\n models.sort((a, b) => {\n const aGpt = a.value.startsWith(\"gpt\") || a.value.startsWith(\"o1\") ? 0 : 1;\n const bGpt = b.value.startsWith(\"gpt\") || b.value.startsWith(\"o1\") ? 0 : 1;\n if (aGpt !== bGpt) return aGpt - bGpt;\n return a.value.localeCompare(b.value);\n });\n return models;\n}\n\nfunction mapModelList(models: OpenAiModelListItem[]): ModelSearchResultItem[] {\n return models.map((m) => {\n const imageEntry = OPENAI_IMAGE_MODELS.find((i) => i.value === m.value);\n return {\n id: m.value,\n label: m.label,\n description: m.description ?? \"\",\n record: stampEffortOptions(\n {\n model_id: m.value,\n provider: OPENAI,\n title: m.value,\n description: \"\",\n capabilities: imageEntry?.capabilities ?? [],\n provider_config: { model_name: m.value },\n metadata: {},\n },\n openaiEffortPolicy({ provider: OPENAI, provider_config: { model_name: m.value } })\n ),\n raw: m,\n };\n });\n}\n\n/**\n * One-shot run-fn for `[\"model.search\"]`. Emits a\n * single `finish` event with the search results. When no credential key is\n * provided, falls back to a curated static list of well-known OpenAI models.\n */\nexport const OpenAI_ModelSearch_Stream: AiProviderRunFn<\n ModelSearchTaskInput,\n ModelSearchTaskOutput\n> = async (input, _model, _signal, emit) => {\n let models: OpenAiModelListItem[];\n if (!input.credential_key) {\n models = OPENAI_FALLBACK;\n } else {\n models = await listOpenAiModels(input.credential_key);\n }\n models = filterLabeledModelsByQuery(models, input.query);\n emit({ type: \"finish\", data: { results: mapModelList(models) } });\n};\n",
15
16
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n Usage,\n} from \"@workglow/ai\";\nimport {\n createEstimatedOutputUsageReporter,\n firstNonStrictReason,\n isStrictCompatibleSchema,\n mapOpenAIResponsesUsage,\n} from \"@workglow/ai/provider-utils\";\nimport { createPartialJsonStream } from \"@workglow/util/worker\";\nimport { finalizeResponsesRequest, getClient, getModelName } from \"./OpenAI_Client\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\nimport { warnStrictDowngradedOnce } from \"./OpenAI_ResponsesWarnings\";\n\nexport { isStrictCompatibleSchema };\n\n/**\n * Streaming run-fn for `[\"text.generation\", \"json-mode\"]`. Emits\n * `object-delta` events with progressively-completed partial JSON snapshots\n * on the `object` port, ending with a `finish` event carrying the parsed\n * final object.\n */\nexport const OpenAI_StructuredGeneration_Stream: AiProviderRunFn<\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n OpenAiModelConfig\n> = async (input, model, signal, emit, outputSchema) => {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const schema = input.outputSchema ?? outputSchema;\n\n const strict = isStrictCompatibleSchema(schema);\n if (!strict) {\n // Downshifted to strict:false; the request still succeeds but the\n // provider-side strict guarantee is off. Consumer re-validates.\n const reason = firstNonStrictReason(schema) ?? \"unknown reason\";\n warnStrictDowngradedOnce(modelName, reason);\n }\n\n const params: Record<string, unknown> = {\n model: modelName,\n input: input.prompt,\n text: {\n format: {\n type: \"json_schema\",\n name: \"structured_output\",\n schema: schema,\n strict,\n },\n },\n };\n if (input.maxTokens !== undefined) params.max_output_tokens = input.maxTokens;\n if (input.temperature !== undefined) params.temperature = input.temperature;\n finalizeResponsesRequest(model, params);\n\n // Responses only attaches billed usage to the terminal lifecycle event, so\n // without a provisional estimate the CLI row stays on a static \"Preparing\"\n // for the whole TTFB wait. Emit ↑ before the request so it appears during\n // connect; finish.usage below still carries the provider total.\n const provisionalUsage = createEstimatedOutputUsageReporter(emit);\n provisionalUsage.onPrompt(typeof input.prompt === \"string\" ? input.prompt : \"\");\n\n const stream = await client.responses.create(\n { ...params, stream: true } as Parameters<typeof client.responses.create>[0],\n { signal }\n );\n\n const json = createPartialJsonStream();\n let refusal = \"\";\n let usage: Usage | undefined;\n for await (const event of stream as AsyncIterable<{\n type?: string;\n delta?: string;\n response?: { usage?: unknown };\n }>) {\n if (\n event.type === \"response.completed\" ||\n event.type === \"response.incomplete\" ||\n event.type === \"response.failed\"\n ) {\n usage = mapOpenAIResponsesUsage(event.response?.usage) ?? usage;\n } else if (event.type === \"response.output_text.delta\") {\n const delta = event.delta ?? \"\";\n if (delta) {\n provisionalUsage.onText(delta);\n const partial = json.push(delta);\n if (partial !== undefined) {\n emit({ type: \"object-delta\", port: \"object\", objectDelta: partial });\n }\n }\n } else if (event.type === \"response.refusal.delta\") {\n refusal += event.delta ?? \"\";\n }\n }\n provisionalUsage.flush();\n\n if (refusal) {\n // Surface the refusal as a first-class event; the consumer completes with\n // the reserved `refusal` field instead of retrying against empty JSON.\n emit({ type: \"refusal\", refusal });\n }\n\n emit({\n type: \"finish\",\n data: { object: json.finishObject() } as StructuredGenerationTaskOutput,\n usage,\n });\n};\n",
16
17
  "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getLogger } from \"@workglow/util/worker\";\n\n/**\n * Per-(model, param) dedupe key set for penalty-drop warnings. The Responses\n * API silently ignores `frequency_penalty` / `presence_penalty`; a caller who\n * used them pre-0.3.26 needs to see it once per model per process, not on\n * every request.\n */\nconst warnedPenaltyDrops = new Set<string>();\n\nexport function warnPenaltyDroppedOnce(\n model: string,\n param: \"frequencyPenalty\" | \"presencePenalty\"\n): void {\n const key = `${model}::${param}`;\n if (warnedPenaltyDrops.has(key)) return;\n warnedPenaltyDrops.add(key);\n getLogger().warn(\n `OpenAI Responses API does not accept ${param}; the value has been dropped ` +\n `for model \"${model}\". To use ${param}, pin @workglow/openai@0.3.25 or ` +\n `route the request to a non-OpenAI provider.`\n );\n}\n\n/**\n * Per-model dedupe key set for strict-downshift warnings. Structured generation\n * requests fall back from `strict: true` to `isStrictCompatibleSchema(schema)`\n * when the schema uses shapes strict rejects (anyOf, $ref, missing\n * additionalProperties:false, etc.); callers who relied on strict need to see\n * the downshift once per model per process.\n */\nconst warnedStrictDownshifts = new Set<string>();\n\nexport function warnStrictDowngradedOnce(model: string, reason: string): void {\n if (warnedStrictDownshifts.has(model)) return;\n warnedStrictDownshifts.add(model);\n getLogger().warn(\n `OpenAI structured generation for model \"${model}\" downshifted from ` +\n `strict:true to strict:false because the schema is not strict-compatible ` +\n `(${reason}). The response is validated by the consumer, but the ` +\n `provider-side strict guarantee is not applied. To keep strict, ` +\n `restructure the schema; to pin the previous behavior, use ` +\n `@workglow/openai@0.3.25.`\n );\n}\n\n/** @internal test helper — clear both dedupe sets. */\nexport function _resetOpenAIResponsesWarnings(): void {\n warnedPenaltyDrops.clear();\n warnedStrictDownshifts.clear();\n}\n",
17
18
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n} from \"@workglow/ai\";\nimport { toUsageCount, usageOrUndefined } from \"@workglow/ai/provider-utils\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport { getClient, getModelName } from \"./OpenAI_Client\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\n/**\n * One-shot run-fn for `[\"text.embedding\"]`. Calls the OpenAI\n * embeddings endpoint and emits a single `finish` event carrying the vector\n * (or array of vectors when `input.text` is an array).\n */\nexport const OpenAI_TextEmbedding_Stream: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n OpenAiModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timerLabel = `openai:TextEmbedding:${getModelName(model)}`;\n logger.time(timerLabel, { model: getModelName(model) });\n try {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.embeddings.create(\n {\n model: modelName,\n input: input.text,\n },\n { signal }\n );\n\n const result: TextEmbeddingTaskOutput = Array.isArray(input.text)\n ? ({\n vector: response.data.map(\n (item: { embedding: number[] }) => new Float32Array(item.embedding)\n ),\n } as unknown as TextEmbeddingTaskOutput)\n : ({ vector: new Float32Array(response.data[0].embedding) } as TextEmbeddingTaskOutput);\n\n // Embeddings bill only the prompt side; the endpoint reports no completion,\n // cache or reasoning counters, so those stay unreported rather than zeroed.\n const rawUsage = (response as { usage?: { prompt_tokens?: unknown; total_tokens?: unknown } })\n .usage;\n const usage = usageOrUndefined({\n input: toUsageCount(rawUsage?.prompt_tokens),\n output: undefined,\n cached: undefined,\n cacheWrite: undefined,\n reasoning: undefined,\n total: toUsageCount(rawUsage?.total_tokens),\n extra: undefined,\n });\n\n emit({ type: \"finish\", data: result, usage });\n } finally {\n logger.timeEnd(timerLabel, { model: getModelName(model) });\n }\n};\n",
@@ -20,12 +21,12 @@
20
21
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, TextSummaryTaskInput, TextSummaryTaskOutput } from \"@workglow/ai\";\nimport {\n accumulateOpenAIResponsesStream,\n createEstimatedOutputUsageReporter,\n promptTextForResponsesUsageEstimate,\n} from \"@workglow/ai/provider-utils\";\nimport { finalizeResponsesRequest, getClient, getModelName } from \"./OpenAI_Client\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\n/**\n * Streaming run-fn for `[\"text.summary\"]`. Emits `text-delta` events on\n * the `text` port and a final empty `finish` event.\n */\nexport const OpenAI_TextSummary_Stream: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n OpenAiModelConfig\n> = async (input, model, signal, emit) => {\n const client = await getClient(model);\n\n const params: Record<string, unknown> = {\n model: getModelName(model),\n instructions: \"Summarize the following text concisely.\",\n input: input.text,\n };\n finalizeResponsesRequest(model, params);\n\n const promptText = promptTextForResponsesUsageEstimate(params);\n createEstimatedOutputUsageReporter(emit).onPrompt(promptText);\n\n const stream = await client.responses.create(\n { ...params, stream: true } as Parameters<typeof client.responses.create>[0],\n { signal }\n );\n\n const usage = await accumulateOpenAIResponsesStream(stream as AsyncIterable<unknown>, emit, {\n promptText,\n });\n emit({ type: \"finish\", data: {} as TextSummaryTaskOutput, usage });\n};\n",
21
22
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n ToolCalls,\n} from \"@workglow/ai\";\nimport {\n accumulateOpenAIResponsesStream,\n buildResponsesInput,\n buildResponsesTools,\n createEstimatedOutputUsageReporter,\n mapResponsesToolChoice,\n promptTextForResponsesUsageEstimate,\n} from \"@workglow/ai/provider-utils\";\nimport { filterValidToolCalls, toOpenAIMessages } from \"@workglow/ai/worker\";\nimport { mergeOpenAICheckpointPrefix } from \"./OpenAI_CacheCheckpoint\";\nimport { finalizeResponsesRequest, getClient, getModelName } from \"./OpenAI_Client\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\n/**\n * Streaming run-fn for `[\"text.generation\", \"tool-use\"]`. Calls the OpenAI\n * Responses endpoint with `stream: true` and forwards delta events via\n * {@link accumulateOpenAIResponsesStream}, which emits `text-delta` and tool-call\n * `object-delta` events plus a final empty `finish`.\n *\n * Defence-in-depth: each tool-call `object-delta` is filtered against the\n * effective tool declarations (the caller's tools, or the checkpoint prefix's\n * on fallback) so a hallucinated function name never reaches the consumer.\n */\nexport const OpenAI_ToolCalling_Stream: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n OpenAiModelConfig\n> = async (input, model, signal, emit, _outputSchema, sessionContext) => {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n // Checkpoint consumption: replay the prefix content ahead of the tail so the\n // request's literal prefix matches the warm-up and hits the automatic\n // server-side prompt cache. The effective tool declarations come from the\n // merge too — the caller's tools win, and an empty list falls back to the\n // prefix's so the warmed tool segment (and its prompt_cache_key) is shared.\n const merged = mergeOpenAICheckpointPrefix(sessionContext, input);\n const toolDefinitions = merged?.tools ?? input.tools;\n const tools = buildResponsesTools(toolDefinitions);\n const { input: responsesInput, instructions } = buildResponsesInput({\n messages: toOpenAIMessages(\n merged\n ? ({\n ...input,\n messages: merged.messages,\n systemPrompt: merged.systemPrompt,\n prompt: \"\",\n } as ToolCallingTaskInput)\n : input\n ),\n });\n const toolChoice = mapResponsesToolChoice(input.toolChoice);\n\n const params: Record<string, unknown> = {\n model: modelName,\n input: responsesInput,\n tools,\n tool_choice: toolChoice,\n };\n if (instructions !== undefined) params.instructions = instructions;\n if (input.maxTokens !== undefined) params.max_output_tokens = input.maxTokens;\n if (input.temperature !== undefined) params.temperature = input.temperature;\n finalizeResponsesRequest(model, params);\n\n const promptText = promptTextForResponsesUsageEstimate(params);\n createEstimatedOutputUsageReporter(emit).onPrompt(promptText);\n\n const stream = await client.responses.create(\n { ...params, stream: true } as Parameters<typeof client.responses.create>[0],\n { signal }\n );\n\n const usage = await accumulateOpenAIResponsesStream<ToolCallingTaskOutput>(\n stream as AsyncIterable<unknown>,\n (event) => {\n if (event.type === \"object-delta\" && event.port === \"toolCalls\") {\n const validated = filterValidToolCalls(event.objectDelta as ToolCalls, toolDefinitions);\n if (validated.length > 0) {\n emit({ type: \"object-delta\", port: \"toolCalls\", objectDelta: validated });\n }\n return;\n }\n emit(event);\n },\n { promptText }\n );\n emit({ type: \"finish\", data: { text: \"\", toolCalls: [] } as ToolCallingTaskOutput, usage });\n};\n",
22
23
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderPreviewRunFn, AiProviderRunFnRegistration } from \"@workglow/ai\";\nimport {\n OPENAI_CACHE_CHECKPOINT,\n OPENAI_COUNT_TOKENS,\n OPENAI_IMAGE_EDITING,\n OPENAI_IMAGE_GENERATION,\n OPENAI_JSON_MODE,\n OPENAI_MODEL_INFO,\n OPENAI_MODEL_SEARCH,\n OPENAI_TEXT_EMBEDDING,\n OPENAI_TEXT_GENERATION,\n OPENAI_TEXT_REWRITER,\n OPENAI_TEXT_SUMMARY,\n OPENAI_TOOL_USE,\n} from \"./OpenAI_CapabilitySets\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\nexport { getClient, getModelName, loadOpenAISDK } from \"./OpenAI_Client\";\n\nimport { OpenAI_CacheCheckpoint_Stream } from \"./OpenAI_CacheCheckpoint\";\nimport {\n OpenAI_CountTokens_Preview,\n OpenAI_CountTokens_Stream,\n} from \"./OpenAI_CountTokens.browser\";\nimport { OpenAI_ImageEdit_Stream } from \"./OpenAI_ImageEdit\";\nimport { OpenAI_ImageGenerate_Stream } from \"./OpenAI_ImageGenerate\";\nimport { OpenAI_ModelInfo_Stream } from \"./OpenAI_ModelInfo\";\nimport { OpenAI_ModelSearch_Stream } from \"./OpenAI_ModelSearch\";\nimport { OpenAI_StructuredGeneration_Stream } from \"./OpenAI_StructuredGeneration\";\nimport { OpenAI_TextEmbedding_Stream } from \"./OpenAI_TextEmbedding\";\nimport { OpenAI_TextGeneration_Stream } from \"./OpenAI_TextGeneration\";\nimport { OpenAI_TextRewriter_Stream } from \"./OpenAI_TextRewriter\";\nimport { OpenAI_TextSummary_Stream } from \"./OpenAI_TextSummary\";\nimport { OpenAI_ToolCalling_Stream } from \"./OpenAI_ToolCalling\";\n\n/**\n * Browser build of {@link OPENAI_RUN_FNS}. Identical to the node build\n * except for the count-tokens import (uses `js-tiktoken` rather than the\n * WASM `tiktoken` package).\n */\nexport const OPENAI_RUN_FNS: readonly AiProviderRunFnRegistration<any, any, OpenAiModelConfig>[] = [\n { serves: OPENAI_TEXT_GENERATION, runFn: OpenAI_TextGeneration_Stream },\n { serves: OPENAI_TOOL_USE, runFn: OpenAI_ToolCalling_Stream },\n { serves: OPENAI_JSON_MODE, runFn: OpenAI_StructuredGeneration_Stream },\n { serves: OPENAI_TEXT_REWRITER, runFn: OpenAI_TextRewriter_Stream },\n { serves: OPENAI_TEXT_SUMMARY, runFn: OpenAI_TextSummary_Stream },\n { serves: OPENAI_TEXT_EMBEDDING, runFn: OpenAI_TextEmbedding_Stream },\n { serves: OPENAI_IMAGE_GENERATION, runFn: OpenAI_ImageGenerate_Stream },\n { serves: OPENAI_IMAGE_EDITING, runFn: OpenAI_ImageEdit_Stream },\n { serves: OPENAI_COUNT_TOKENS, runFn: OpenAI_CountTokens_Stream },\n { serves: OPENAI_MODEL_SEARCH, runFn: OpenAI_ModelSearch_Stream },\n { serves: OPENAI_MODEL_INFO, runFn: OpenAI_ModelInfo_Stream },\n { serves: OPENAI_CACHE_CHECKPOINT, runFn: OpenAI_CacheCheckpoint_Stream },\n];\n\nexport const OPENAI_PREVIEW_TASKS: Record<\n string,\n AiProviderPreviewRunFn<any, any, OpenAiModelConfig>\n> = {\n CountTokensTask: OpenAI_CountTokens_Preview,\n};\n",
23
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability, ModelRecord } from \"@workglow/ai\";\nimport { AiProvider } from \"@workglow/ai\";\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport { inferOpenAiCapabilities, openAiWorkerRunFnSpecs } from \"./common/OpenAI_Capabilities\";\nimport { OPENAI } from \"./common/OpenAI_Constants\";\nimport type { OpenAiModelConfig } from \"./common/OpenAI_ModelSchema\";\n\n/**\n * Main-thread registration shell for OpenAI. Used both for inline mode\n * (constructed with the run-fn registrations array) and worker-backed mode\n * (constructed empty so the base class registers worker proxies). No queue\n * is created — OpenAI uses {@link DirectExecutionStrategy}.\n */\nexport class OpenAiQueuedProvider extends createCloudProviderClass<OpenAiModelConfig>(AiProvider, {\n name: OPENAI,\n displayName: \"OpenAI\",\n}) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferOpenAiCapabilities(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return openAiWorkerRunFnSpecs();\n }\n}\n",
24
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability, ModelEffortPolicy, ModelRecord } from \"@workglow/ai\";\nimport { AiProvider } from \"@workglow/ai\";\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport { inferOpenAiCapabilities, openAiWorkerRunFnSpecs } from \"./common/OpenAI_Capabilities\";\nimport { OPENAI } from \"./common/OpenAI_Constants\";\nimport { openaiEffortPolicy } from \"./common/OpenAI_EffortPolicy\";\nimport type { OpenAiModelConfig } from \"./common/OpenAI_ModelSchema\";\n\n/**\n * Main-thread registration shell for OpenAI. Used both for inline mode\n * (constructed with the run-fn registrations array) and worker-backed mode\n * (constructed empty so the base class registers worker proxies). No queue\n * is created — OpenAI uses {@link DirectExecutionStrategy}.\n */\nexport class OpenAiQueuedProvider extends createCloudProviderClass<OpenAiModelConfig>(AiProvider, {\n name: OPENAI,\n displayName: \"OpenAI\",\n}) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferOpenAiCapabilities(model);\n }\n\n override effortPolicy(model: OpenAiModelConfig): ModelEffortPolicy | undefined {\n return openaiEffortPolicy(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return openAiWorkerRunFnSpecs();\n }\n}\n",
24
25
  "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability, ModelRecord } from \"@workglow/ai/worker\";\nimport { OPENAI_CAPABILITY_SETS } from \"./OpenAI_CapabilitySets\";\n\n/**\n * Closed list of capability-set specs the OpenAI provider serves. Derived\n * from {@link OPENAI_CAPABILITY_SETS}. Used by the main-thread provider\n * shells when registering worker-mode proxies so the dispatcher can route\n * requests to the worker proxy.\n */\nexport const OPENAI_RUN_FN_SPECS = OPENAI_CAPABILITY_SETS.map((serves) => ({ serves }));\n\nexport function openAiWorkerRunFnSpecs(): readonly { readonly serves: readonly Capability[] }[] {\n return OPENAI_RUN_FN_SPECS;\n}\n\n/**\n * Shape used by the model-name regexes — `model_id` is required, the rest\n * is loosely-typed metadata only used to opportunistically widen the\n * inferred capability set.\n */\ntype CapabilityHints = Pick<ModelRecord, \"model_id\" | \"provider_config\" | \"capabilities\">;\n\n/**\n * Heuristic capability inference for an OpenAI {@link ModelRecord}. Pattern-\n * matches the canonical OpenAI model id strings (and the `provider_config.\n * model_name` if present) to a closed set of {@link Capability}s. Falls back\n * to the model's stored `capabilities` array (or a baseline of search +\n * info) when no pattern matches.\n *\n * Main-thread method only — workers do not run capability inference.\n */\nexport function inferOpenAiCapabilities(model: CapabilityHints): readonly Capability[] {\n const id = String(\n model.model_id ??\n (model.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"\"\n );\n\n // Embedding models — text-embedding-3-{small,large}, text-embedding-ada-002.\n if (/^text-embedding/i.test(id)) {\n return [\"text.embedding\", \"model.count-tokens\", \"model.info\", \"model.search\"];\n }\n\n // Image models — DALL-E and gpt-image families.\n if (/^dall-e/i.test(id)) {\n // DALL-E 2/3 do NOT support edit consistently — gpt-image-* does. Cover\n // generation only here; the gpt-image branch below adds editing.\n return [\"image.generation\", \"model.info\", \"model.search\"];\n }\n if (/^gpt-image/i.test(id)) {\n return [\"image.generation\", \"image.editing\", \"model.info\", \"model.search\"];\n }\n\n // Chat / reasoning models — gpt-3.5/4/4o/5/...; o-series reasoning models (o1, o3, o4, future).\n // GPT-4o, gpt-4-vision-*, gpt-4-turbo, and all o-series additionally accept image inputs.\n if (/^gpt-/i.test(id) || /^o\\d/i.test(id)) {\n const caps: Capability[] = [\n \"text.generation\",\n \"text.rewriter\",\n \"text.summary\",\n \"tool-use\",\n \"json-mode\",\n \"cache.checkpoint\",\n \"model.count-tokens\",\n \"model.info\",\n \"model.search\",\n ];\n const supportsVision =\n /gpt-4o|gpt-4\\.1|gpt-5|gpt-4-vision|gpt-4-turbo/i.test(id) || /^o\\d/i.test(id);\n if (supportsVision) {\n caps.push(\"vision-input\");\n }\n return caps;\n }\n\n // Unknown model — fall back to whatever the record declared, or just\n // expose the meta-ops so the model can still be searched / inspected.\n const declared = (model.capabilities as readonly Capability[] | undefined) ?? [];\n if (declared.length > 0) return declared;\n return [\"model.search\", \"model.info\"];\n}\n",
25
26
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { registerProviderWorker } from \"@workglow/ai/provider-utils\";\nimport { OPENAI_PREVIEW_TASKS, OPENAI_RUN_FNS } from \"./common/OpenAI_JobRunFns.browser\";\nimport { OpenAiProvider } from \"./OpenAiProvider\";\n\nexport async function registerOpenAiWorker(): Promise<void> {\n await registerProviderWorker(\n (ws) => new OpenAiProvider(OPENAI_RUN_FNS, OPENAI_PREVIEW_TASKS).registerOnWorkerServer(ws),\n \"OpenAI\"\n );\n}\n",
26
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport type { Capability, ModelRecord } from \"@workglow/ai/worker\";\nimport { AiProvider } from \"@workglow/ai/worker\";\nimport { inferOpenAiCapabilities, openAiWorkerRunFnSpecs } from \"./common/OpenAI_Capabilities\";\nimport { OPENAI } from \"./common/OpenAI_Constants\";\nimport type { OpenAiModelConfig } from \"./common/OpenAI_ModelSchema\";\n\n/**\n * Worker-server registration for OpenAI cloud models. Imports `AiProvider`\n * from `@workglow/ai/worker` so the SDK is only loaded in the worker.\n *\n * The class extends the {@link createCloudProviderClass} mixin (which\n * supplies `name` / `displayName` / `isLocal` / `supportsBrowser`) and adds\n * the OpenAI-specific {@link AiProvider.inferCapabilities} and\n * {@link AiProvider.workerRunFnSpecs} overrides.\n */\nexport class OpenAiProvider extends createCloudProviderClass<OpenAiModelConfig>(AiProvider, {\n name: OPENAI,\n displayName: \"OpenAI\",\n}) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferOpenAiCapabilities(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return openAiWorkerRunFnSpecs();\n }\n}\n"
27
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport type { Capability, ModelEffortPolicy, ModelRecord } from \"@workglow/ai/worker\";\nimport { AiProvider } from \"@workglow/ai/worker\";\nimport { inferOpenAiCapabilities, openAiWorkerRunFnSpecs } from \"./common/OpenAI_Capabilities\";\nimport { OPENAI } from \"./common/OpenAI_Constants\";\nimport { openaiEffortPolicy } from \"./common/OpenAI_EffortPolicy\";\nimport type { OpenAiModelConfig } from \"./common/OpenAI_ModelSchema\";\n\n/**\n * Worker-server registration for OpenAI cloud models. Imports `AiProvider`\n * from `@workglow/ai/worker` so the SDK is only loaded in the worker.\n *\n * The class extends the {@link createCloudProviderClass} mixin (which\n * supplies `name` / `displayName` / `isLocal` / `supportsBrowser`) and adds\n * the OpenAI-specific {@link AiProvider.inferCapabilities} and\n * {@link AiProvider.workerRunFnSpecs} overrides.\n */\nexport class OpenAiProvider extends createCloudProviderClass<OpenAiModelConfig>(AiProvider, {\n name: OPENAI,\n displayName: \"OpenAI\",\n}) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferOpenAiCapabilities(model);\n }\n\n override effortPolicy(model: OpenAiModelConfig): ModelEffortPolicy | undefined {\n return openaiEffortPolicy(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return openAiWorkerRunFnSpecs();\n }\n}\n"
27
28
  ],
28
- "mappings": "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",
29
- "debugId": "2797153093DFC5B564756E2164756E21",
29
+ "mappings": "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",
30
+ "debugId": "3DB65C234B51633E64756E2164756E21",
30
31
  "names": []
31
32
  }
@@ -156,6 +156,28 @@ var OpenAI_CacheCheckpoint_Stream = async (_input, model, signal, emit, _outputS
156
156
  });
157
157
  };
158
158
 
159
+ // src/ai/common/OpenAI_EffortPolicy.ts
160
+ import { MODEL_EFFORTS } from "@workglow/ai";
161
+ var ALL = { supported: MODEL_EFFORTS, default: undefined };
162
+ var REASONING = {
163
+ supported: MODEL_EFFORTS,
164
+ default: "medium"
165
+ };
166
+ var NONE = { supported: [], default: undefined };
167
+ function modelName(model) {
168
+ return String(model.provider_config?.model_name ?? "").trim();
169
+ }
170
+ function openaiEffortPolicy(model) {
171
+ const id = modelName(model);
172
+ if (!id)
173
+ return ALL;
174
+ if (/^text-embedding/i.test(id) || /^gpt-image/i.test(id) || /^dall-e/i.test(id))
175
+ return NONE;
176
+ if (/^gpt-5/i.test(id) || /^o[134]/i.test(id))
177
+ return REASONING;
178
+ return NONE;
179
+ }
180
+
159
181
  // src/ai/registerOpenAiInline.ts
160
182
  import { registerProviderInline } from "@workglow/ai/provider-utils";
161
183
 
@@ -170,10 +192,10 @@ function registerOpenAiImageValidator() {
170
192
  AiImageOutputTask.registerProviderImageValidator(OPENAI, (taskType, input, model) => {
171
193
  if (taskType !== "ImageEditTask")
172
194
  return;
173
- const modelName = model.provider_config?.model_name ?? "";
195
+ const modelName2 = model.provider_config?.model_name ?? "";
174
196
  const additional = input["additionalImages"];
175
- if (modelName.startsWith("dall-e-2") && Array.isArray(additional) && additional.length > 0) {
176
- throw new ProviderUnsupportedFeatureError("additionalImages", model.model_id ?? modelName, "DALL-E 2 only supports single-image edits");
197
+ if (modelName2.startsWith("dall-e-2") && Array.isArray(additional) && additional.length > 0) {
198
+ throw new ProviderUnsupportedFeatureError("additionalImages", model.model_id ?? modelName2, "DALL-E 2 only supports single-image edits");
177
199
  }
178
200
  });
179
201
  }
@@ -219,20 +241,20 @@ async function loadTiktoken() {
219
241
  return _tiktoken;
220
242
  }
221
243
  var _encoderCache = new Map;
222
- async function getEncoder(modelName) {
244
+ async function getEncoder(modelName2) {
223
245
  const tiktoken = await loadTiktoken();
224
- if (!_encoderCache.has(modelName)) {
246
+ if (!_encoderCache.has(modelName2)) {
225
247
  try {
226
- _encoderCache.set(modelName, tiktoken.encoding_for_model(modelName));
248
+ _encoderCache.set(modelName2, tiktoken.encoding_for_model(modelName2));
227
249
  } catch {
228
250
  const fallback = "cl100k_base";
229
251
  if (!_encoderCache.has(fallback)) {
230
252
  _encoderCache.set(fallback, tiktoken.get_encoding(fallback));
231
253
  }
232
- _encoderCache.set(modelName, _encoderCache.get(fallback));
254
+ _encoderCache.set(modelName2, _encoderCache.get(fallback));
233
255
  }
234
256
  }
235
- return _encoderCache.get(modelName);
257
+ return _encoderCache.get(modelName2);
236
258
  }
237
259
  async function countTokens(input, model) {
238
260
  const enc = await getEncoder(getModelName(model));
@@ -280,12 +302,12 @@ async function decodeB64Png(b64) {
280
302
  return dataUriToImageValue(`data:image/png;base64,${b64}`);
281
303
  }
282
304
  async function buildEditPayload(input, model) {
283
- const modelName = getModelName(model);
305
+ const modelName2 = getModelName(model);
284
306
  const primary = await gpuImageToOpenAiFile(input.image, "image.png");
285
307
  const additionalFiles = input.additionalImages && input.additionalImages.length > 0 ? await Promise.all(input.additionalImages.map((g, i) => gpuImageToOpenAiFile(g, `image-${i + 1}.png`))) : [];
286
308
  const imageField = additionalFiles.length === 0 ? primary : [primary, ...additionalFiles];
287
309
  const payload = {
288
- model: modelName,
310
+ model: modelName2,
289
311
  prompt: input.prompt,
290
312
  image: imageField,
291
313
  size: aspectRatioToSize(input.aspectRatio),
@@ -348,12 +370,12 @@ async function decodeB64Png2(b64) {
348
370
  }
349
371
  var OpenAI_ImageGenerate_Stream = async (input, model, signal, emit) => {
350
372
  const client = await getClient(model);
351
- const modelName = getModelName(model);
373
+ const modelName2 = getModelName(model);
352
374
  const size = aspectRatioToSize2(input.aspectRatio);
353
- if (modelName.startsWith("dall-e")) {
375
+ if (modelName2.startsWith("dall-e")) {
354
376
  try {
355
377
  const resp = await client.images.generate({
356
- model: modelName,
378
+ model: modelName2,
357
379
  prompt: input.prompt,
358
380
  size,
359
381
  quality: input.quality,
@@ -384,7 +406,7 @@ var OpenAI_ImageGenerate_Stream = async (input, model, signal, emit) => {
384
406
  }
385
407
  try {
386
408
  const stream = await client.images.generate({
387
- model: modelName,
409
+ model: modelName2,
388
410
  prompt: input.prompt,
389
411
  size,
390
412
  quality: input.quality,
@@ -439,17 +461,17 @@ function isNotFoundError(err) {
439
461
  return status === 404 || statusCode === 404 || code === "model_not_found";
440
462
  }
441
463
  async function assertOpenAiModelExists(model, signal) {
442
- const modelName = modelNameOf(model);
464
+ const modelName2 = modelNameOf(model);
443
465
  const client = await getClient(model);
444
466
  try {
445
- await client.models.retrieve(modelName, signal ? { signal } : undefined);
467
+ await client.models.retrieve(modelName2, signal ? { signal } : undefined);
446
468
  } catch (err) {
447
469
  if (isNotFoundError(err)) {
448
- throw new Error(`${OPENAI} model "${modelName}" was not found (provider API returned not found)`);
470
+ throw new Error(`${OPENAI} model "${modelName2}" was not found (provider API returned not found)`);
449
471
  }
450
472
  throw err;
451
473
  }
452
- return modelName;
474
+ return modelName2;
453
475
  }
454
476
  function remoteInfoBase(input) {
455
477
  return {
@@ -464,14 +486,14 @@ function remoteInfoBase(input) {
464
486
  };
465
487
  }
466
488
  var OpenAI_ModelInfo_Stream = async (input, model, signal, emit) => {
467
- const modelName = await assertOpenAiModelExists(model, signal);
489
+ const modelName2 = await assertOpenAiModelExists(model, signal);
468
490
  const base = remoteInfoBase(input);
469
491
  if (input.detail === "dimensions") {
470
492
  const pc = model?.provider_config;
471
493
  let native_dimensions = typeof pc?.native_dimensions === "number" ? pc.native_dimensions : undefined;
472
494
  let mrl = typeof pc?.mrl === "boolean" ? pc.mrl : undefined;
473
495
  if (native_dimensions === undefined) {
474
- const known = OPENAI_EMBEDDING_DIMENSIONS[modelName];
496
+ const known = OPENAI_EMBEDDING_DIMENSIONS[modelName2];
475
497
  if (known) {
476
498
  native_dimensions = known.native_dimensions;
477
499
  mrl = mrl ?? known.mrl;
@@ -492,6 +514,7 @@ var OpenAI_ModelInfo_Stream = async (input, model, signal, emit) => {
492
514
 
493
515
  // src/ai/common/OpenAI_ModelSearch.ts
494
516
  import { filterLabeledModelsByQuery } from "@workglow/ai/provider-utils";
517
+ import { stampEffortOptions } from "@workglow/ai/worker";
495
518
  var OPENAI_FALLBACK = [
496
519
  { label: "gpt-image-2", value: "gpt-image-2" },
497
520
  { label: "dall-e-3", value: "dall-e-3" },
@@ -540,7 +563,7 @@ function mapModelList(models) {
540
563
  id: m.value,
541
564
  label: m.label,
542
565
  description: m.description ?? "",
543
- record: {
566
+ record: stampEffortOptions({
544
567
  model_id: m.value,
545
568
  provider: OPENAI,
546
569
  title: m.value,
@@ -548,7 +571,7 @@ function mapModelList(models) {
548
571
  capabilities: imageEntry?.capabilities ?? [],
549
572
  provider_config: { model_name: m.value },
550
573
  metadata: {}
551
- },
574
+ }, openaiEffortPolicy({ provider: OPENAI, provider_config: { model_name: m.value } })),
552
575
  raw: m
553
576
  };
554
577
  });
@@ -598,15 +621,15 @@ function _resetOpenAIResponsesWarnings() {
598
621
  // src/ai/common/OpenAI_StructuredGeneration.ts
599
622
  var OpenAI_StructuredGeneration_Stream = async (input, model, signal, emit, outputSchema) => {
600
623
  const client = await getClient(model);
601
- const modelName = getModelName(model);
624
+ const modelName2 = getModelName(model);
602
625
  const schema = input.outputSchema ?? outputSchema;
603
626
  const strict = isStrictCompatibleSchema(schema);
604
627
  if (!strict) {
605
628
  const reason = firstNonStrictReason(schema) ?? "unknown reason";
606
- warnStrictDowngradedOnce(modelName, reason);
629
+ warnStrictDowngradedOnce(modelName2, reason);
607
630
  }
608
631
  const params = {
609
- model: modelName,
632
+ model: modelName2,
610
633
  input: input.prompt,
611
634
  text: {
612
635
  format: {
@@ -664,9 +687,9 @@ var OpenAI_TextEmbedding_Stream = async (input, model, signal, emit) => {
664
687
  logger.time(timerLabel, { model: getModelName(model) });
665
688
  try {
666
689
  const client = await getClient(model);
667
- const modelName = getModelName(model);
690
+ const modelName2 = getModelName(model);
668
691
  const response = await client.embeddings.create({
669
- model: modelName,
692
+ model: modelName2,
670
693
  input: input.text
671
694
  }, { signal });
672
695
  const result = Array.isArray(input.text) ? {
@@ -723,12 +746,12 @@ function buildResponsesParams(input, model) {
723
746
  params.temperature = input.temperature;
724
747
  if (input.topP !== undefined)
725
748
  params.top_p = input.topP;
726
- const modelName = getModelName(model);
749
+ const modelName2 = getModelName(model);
727
750
  if (input.frequencyPenalty !== undefined) {
728
- warnPenaltyDroppedOnce(modelName, "frequencyPenalty");
751
+ warnPenaltyDroppedOnce(modelName2, "frequencyPenalty");
729
752
  }
730
753
  if (input.presencePenalty !== undefined) {
731
- warnPenaltyDroppedOnce(modelName, "presencePenalty");
754
+ warnPenaltyDroppedOnce(modelName2, "presencePenalty");
732
755
  }
733
756
  return params;
734
757
  }
@@ -816,7 +839,7 @@ import {
816
839
  import { filterValidToolCalls, toOpenAIMessages as toOpenAIMessages3 } from "@workglow/ai/worker";
817
840
  var OpenAI_ToolCalling_Stream = async (input, model, signal, emit, _outputSchema, sessionContext) => {
818
841
  const client = await getClient(model);
819
- const modelName = getModelName(model);
842
+ const modelName2 = getModelName(model);
820
843
  const merged = mergeOpenAICheckpointPrefix(sessionContext, input);
821
844
  const toolDefinitions = merged?.tools ?? input.tools;
822
845
  const tools = buildResponsesTools3(toolDefinitions);
@@ -830,7 +853,7 @@ var OpenAI_ToolCalling_Stream = async (input, model, signal, emit, _outputSchema
830
853
  });
831
854
  const toolChoice = mapResponsesToolChoice(input.toolChoice);
832
855
  const params = {
833
- model: modelName,
856
+ model: modelName2,
834
857
  input: responsesInput,
835
858
  tools,
836
859
  tool_choice: toolChoice
@@ -929,6 +952,9 @@ class OpenAiQueuedProvider extends createCloudProviderClass(AiProvider, {
929
952
  inferCapabilities(model) {
930
953
  return inferOpenAiCapabilities(model);
931
954
  }
955
+ effortPolicy(model) {
956
+ return openaiEffortPolicy(model);
957
+ }
932
958
  workerRunFnSpecs() {
933
959
  return openAiWorkerRunFnSpecs();
934
960
  }
@@ -953,6 +979,9 @@ class OpenAiProvider extends createCloudProviderClass2(AiProvider2, {
953
979
  inferCapabilities(model) {
954
980
  return inferOpenAiCapabilities(model);
955
981
  }
982
+ effortPolicy(model) {
983
+ return openaiEffortPolicy(model);
984
+ }
956
985
  workerRunFnSpecs() {
957
986
  return openAiWorkerRunFnSpecs();
958
987
  }
@@ -966,6 +995,7 @@ export {
966
995
  resolvePromptCacheKey,
967
996
  registerOpenAiWorker,
968
997
  registerOpenAiInline,
998
+ openaiEffortPolicy,
969
999
  mergeOpenAICheckpointPrefix,
970
1000
  loadOpenAISDK,
971
1001
  getReasoningConfig,
@@ -977,4 +1007,4 @@ export {
977
1007
  OPENAI_ALLOWED_HOSTS
978
1008
  };
979
1009
 
980
- //# debugId=76D4D07BFEAF6C7464756E2164756E21
1010
+ //# debugId=1479E8BDF4FEBDAD64756E2164756E21