@elizaos/plugin-openai 2.0.0-alpha.6 → 2.0.0-alpha.7

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.
@@ -7,18 +7,18 @@
7
7
  "import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nfunction getEnvValue(key: string): string | undefined {\n if (typeof process === \"undefined\" || !process.env) {\n return undefined;\n }\n const value = process.env[key];\n return value === undefined ? undefined : String(value);\n}\n\nexport function getSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue?: string\n): string | undefined {\n const value = runtime.getSetting(key);\n if (value !== undefined && value !== null) {\n return String(value);\n }\n return getEnvValue(key) ?? defaultValue;\n}\nexport function getRequiredSetting(\n runtime: IAgentRuntime,\n key: string,\n errorMessage?: string\n): string {\n const value = getSetting(runtime, key);\n if (value === undefined || value.trim() === \"\") {\n throw new Error(errorMessage ?? `Required setting '${key}' is not configured`);\n }\n return value;\n}\n\nexport function getNumericSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue: number\n): number {\n const value = getSetting(runtime, key);\n if (value === undefined) {\n return defaultValue;\n }\n const parsed = Number.parseInt(value, 10);\n if (!Number.isFinite(parsed)) {\n throw new Error(`Setting '${key}' must be a valid integer, got: ${value}`);\n }\n return parsed;\n}\n\nexport function getBooleanSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue: boolean\n): boolean {\n const value = getSetting(runtime, key);\n if (value === undefined) {\n return defaultValue;\n }\n const normalized = value.toLowerCase();\n return normalized === \"true\" || normalized === \"1\" || normalized === \"yes\";\n}\n\nexport function isBrowser(): boolean {\n return (\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as { document?: Document }).document !== \"undefined\"\n );\n}\n\nexport function isProxyMode(runtime: IAgentRuntime): boolean {\n return isBrowser() && !!getSetting(runtime, \"OPENAI_BROWSER_BASE_URL\");\n}\n\nexport function getApiKey(runtime: IAgentRuntime): string | undefined {\n return getSetting(runtime, \"OPENAI_API_KEY\");\n}\n\nexport function getEmbeddingApiKey(runtime: IAgentRuntime): string | undefined {\n const embeddingApiKey = getSetting(runtime, \"OPENAI_EMBEDDING_API_KEY\");\n if (embeddingApiKey) {\n logger.debug(\"[OpenAI] Using specific embedding API key\");\n return embeddingApiKey;\n }\n logger.debug(\"[OpenAI] Falling back to general API key for embeddings\");\n return getApiKey(runtime);\n}\n\nexport function getAuthHeader(\n runtime: IAgentRuntime,\n forEmbedding = false\n): Record<string, string> {\n // By default this plugin does NOT send auth headers in the browser. This is safer because\n // frontend builds would otherwise expose secrets. For local demos, you can explicitly\n // opt-in to sending the Authorization header by setting OPENAI_ALLOW_BROWSER_API_KEY=true.\n if (isBrowser() && !getBooleanSetting(runtime, \"OPENAI_ALLOW_BROWSER_API_KEY\", false)) {\n return {};\n }\n const key = forEmbedding ? getEmbeddingApiKey(runtime) : getApiKey(runtime);\n return key ? { Authorization: `Bearer ${key}` } : {};\n}\n\nexport function getBaseURL(runtime: IAgentRuntime): string {\n const browserURL = getSetting(runtime, \"OPENAI_BROWSER_BASE_URL\");\n const baseURL =\n isBrowser() && browserURL\n ? browserURL\n : (getSetting(runtime, \"OPENAI_BASE_URL\") ?? \"https://api.openai.com/v1\");\n logger.debug(`[OpenAI] Base URL: ${baseURL}`);\n return baseURL;\n}\n\nexport function getEmbeddingBaseURL(runtime: IAgentRuntime): string {\n const embeddingURL = isBrowser()\n ? (getSetting(runtime, \"OPENAI_BROWSER_EMBEDDING_URL\") ??\n getSetting(runtime, \"OPENAI_BROWSER_BASE_URL\"))\n : getSetting(runtime, \"OPENAI_EMBEDDING_URL\");\n\n if (embeddingURL) {\n logger.debug(`[OpenAI] Using embedding base URL: ${embeddingURL}`);\n return embeddingURL;\n }\n\n logger.debug(\"[OpenAI] Falling back to general base URL for embeddings\");\n return getBaseURL(runtime);\n}\n\nexport function getSmallModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENAI_SMALL_MODEL\") ?? getSetting(runtime, \"SMALL_MODEL\") ?? \"gpt-5-mini\"\n );\n}\n\nexport function getLargeModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_LARGE_MODEL\") ?? getSetting(runtime, \"LARGE_MODEL\") ?? \"gpt-5\";\n}\n\nexport function getEmbeddingModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_EMBEDDING_MODEL\") ?? \"text-embedding-3-small\";\n}\n\nexport function getImageDescriptionModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_IMAGE_DESCRIPTION_MODEL\") ?? \"gpt-5-mini\";\n}\n\nexport function getTranscriptionModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_TRANSCRIPTION_MODEL\") ?? \"gpt-5-mini-transcribe\";\n}\n\nexport function getTTSModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_TTS_MODEL\") ?? \"tts-1\";\n}\n\nexport function getTTSVoice(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_TTS_VOICE\") ?? \"nova\";\n}\n\nexport function getTTSInstructions(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_TTS_INSTRUCTIONS\") ?? \"\";\n}\n\nexport function getImageModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_IMAGE_MODEL\") ?? \"dall-e-3\";\n}\n\nexport function getExperimentalTelemetry(runtime: IAgentRuntime): boolean {\n return getBooleanSetting(runtime, \"OPENAI_EXPERIMENTAL_TELEMETRY\", false);\n}\n\nexport function getEmbeddingDimensions(runtime: IAgentRuntime): number {\n return getNumericSetting(runtime, \"OPENAI_EMBEDDING_DIMENSIONS\", 1536);\n}\n\nexport function getImageDescriptionMaxTokens(runtime: IAgentRuntime): number {\n return getNumericSetting(runtime, \"OPENAI_IMAGE_DESCRIPTION_MAX_TOKENS\", 8192);\n}\n\nexport function getResearchModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_RESEARCH_MODEL\") ?? \"o3-deep-research\";\n}\n\nexport function getResearchTimeout(runtime: IAgentRuntime): number {\n return getNumericSetting(runtime, \"OPENAI_RESEARCH_TIMEOUT\", 3600000);\n}\n",
8
8
  "import type {\n TextToSpeechParams as CoreTextToSpeechParams,\n TranscriptionParams as CoreTranscriptionParams,\n IAgentRuntime,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport type {\n TextToSpeechParams as LocalTextToSpeechParams,\n TranscriptionParams as LocalTranscriptionParams,\n OpenAITranscriptionResponse,\n TTSOutputFormat,\n TTSVoice,\n} from \"../types\";\nimport { detectAudioMimeType, getFilenameForMimeType } from \"../utils/audio\";\nimport {\n getAuthHeader,\n getBaseURL,\n getTranscriptionModel,\n getTTSInstructions,\n getTTSModel,\n getTTSVoice,\n} from \"../utils/config\";\n\ntype AudioInput = Blob | File | Buffer;\ntype TranscriptionInput = AudioInput | LocalTranscriptionParams | CoreTranscriptionParams | string;\ntype TTSInput = string | LocalTextToSpeechParams | CoreTextToSpeechParams;\n\nfunction isBlobOrFile(value: unknown): value is Blob | File {\n return value instanceof Blob || value instanceof File;\n}\n\nfunction isBuffer(value: unknown): value is Buffer {\n return Buffer.isBuffer(value);\n}\n\nfunction isLocalTranscriptionParams(value: unknown): value is LocalTranscriptionParams {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"audio\" in value &&\n (isBlobOrFile((value as LocalTranscriptionParams).audio) ||\n isBuffer((value as LocalTranscriptionParams).audio))\n );\n}\n\nfunction isCoreTranscriptionParams(value: unknown): value is CoreTranscriptionParams {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"audioUrl\" in value &&\n typeof (value as CoreTranscriptionParams).audioUrl === \"string\"\n );\n}\n\nasync function fetchAudioFromUrl(url: string): Promise<Blob> {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch audio from URL: ${response.status}`);\n }\n return response.blob();\n}\nexport async function handleTranscription(\n runtime: IAgentRuntime,\n input: TranscriptionInput\n): Promise<string> {\n let modelName = getTranscriptionModel(runtime);\n let blob: Blob;\n let extraParams: Partial<LocalTranscriptionParams> = {};\n\n if (typeof input === \"string\") {\n logger.debug(`[OpenAI] Fetching audio from URL: ${input}`);\n blob = await fetchAudioFromUrl(input);\n } else if (isBlobOrFile(input)) {\n blob = input;\n } else if (isBuffer(input)) {\n const mimeType = detectAudioMimeType(input);\n logger.debug(`[OpenAI] Auto-detected audio MIME type: ${mimeType}`);\n blob = new Blob([new Uint8Array(input)], { type: mimeType });\n } else if (isLocalTranscriptionParams(input)) {\n extraParams = input;\n if (input.model) {\n modelName = input.model;\n }\n if (isBuffer(input.audio)) {\n const mimeType = input.mimeType ?? detectAudioMimeType(input.audio);\n logger.debug(`[OpenAI] Using MIME type: ${mimeType}`);\n blob = new Blob([new Uint8Array(input.audio)], { type: mimeType });\n } else {\n blob = input.audio;\n }\n } else if (isCoreTranscriptionParams(input)) {\n logger.debug(`[OpenAI] Fetching audio from URL: ${input.audioUrl}`);\n blob = await fetchAudioFromUrl(input.audioUrl);\n extraParams = { prompt: input.prompt };\n } else {\n throw new Error(\n \"TRANSCRIPTION expects Blob, File, Buffer, URL string, or TranscriptionParams object\"\n );\n }\n\n logger.debug(`[OpenAI] Using TRANSCRIPTION model: ${modelName}`);\n\n const mimeType = (blob as File).type || \"audio/webm\";\n const filename =\n (blob as File).name ||\n getFilenameForMimeType(\n mimeType.startsWith(\"audio/\")\n ? (mimeType as ReturnType<typeof detectAudioMimeType>)\n : \"audio/webm\"\n );\n\n const formData = new FormData();\n formData.append(\"file\", blob, filename);\n formData.append(\"model\", modelName);\n\n if (extraParams.language) {\n formData.append(\"language\", extraParams.language);\n }\n if (extraParams.responseFormat) {\n formData.append(\"response_format\", extraParams.responseFormat);\n }\n if (extraParams.prompt) {\n formData.append(\"prompt\", extraParams.prompt);\n }\n if (extraParams.temperature !== undefined) {\n formData.append(\"temperature\", String(extraParams.temperature));\n }\n if (extraParams.timestampGranularities) {\n for (const granularity of extraParams.timestampGranularities) {\n formData.append(\"timestamp_granularities[]\", granularity);\n }\n }\n\n const baseURL = getBaseURL(runtime);\n const response = await fetch(`${baseURL}/audio/transcriptions`, {\n method: \"POST\",\n headers: getAuthHeader(runtime),\n body: formData,\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI transcription failed: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAITranscriptionResponse;\n return data.text;\n}\n\nexport async function handleTextToSpeech(\n runtime: IAgentRuntime,\n input: TTSInput\n): Promise<ArrayBuffer> {\n let text: string;\n let voice: string | undefined;\n let format: TTSOutputFormat = \"mp3\";\n let model: string | undefined;\n let instructions: string | undefined;\n\n if (typeof input === \"string\") {\n text = input;\n voice = undefined;\n } else {\n text = input.text;\n voice = input.voice;\n if (\"format\" in input && input.format) {\n format = input.format;\n }\n if (\"model\" in input && input.model) {\n model = input.model;\n }\n if (\"instructions\" in input && input.instructions) {\n instructions = input.instructions;\n }\n }\n\n model = model ?? getTTSModel(runtime);\n voice = voice ?? getTTSVoice(runtime);\n instructions = instructions ?? getTTSInstructions(runtime);\n\n logger.debug(`[OpenAI] Using TEXT_TO_SPEECH model: ${model}`);\n\n if (!text || text.trim().length === 0) {\n throw new Error(\"TEXT_TO_SPEECH requires non-empty text\");\n }\n\n if (text.length > 4096) {\n throw new Error(\"TEXT_TO_SPEECH text exceeds 4096 character limit\");\n }\n\n const validVoices: TTSVoice[] = [\"alloy\", \"echo\", \"fable\", \"onyx\", \"nova\", \"shimmer\"];\n if (voice && !validVoices.includes(voice as TTSVoice)) {\n throw new Error(`Invalid voice: ${voice}. Must be one of: ${validVoices.join(\", \")}`);\n }\n\n const baseURL = getBaseURL(runtime);\n\n const requestBody: Record<string, string> = {\n model,\n voice: voice as TTSVoice,\n input: text,\n response_format: format,\n };\n\n if (instructions && instructions.length > 0) {\n requestBody.instructions = instructions;\n }\n\n const response = await fetch(`${baseURL}/audio/speech`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime),\n \"Content-Type\": \"application/json\",\n ...(format === \"mp3\" ? { Accept: \"audio/mpeg\" } : {}),\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(`OpenAI TTS failed: ${response.status} ${response.statusText} - ${errorText}`);\n }\n\n return response.arrayBuffer();\n}\n",
9
9
  "import { logger } from \"@elizaos/core\";\n\nconst MAGIC_BYTES = {\n WAV: {\n HEADER: [0x52, 0x49, 0x46, 0x46] as const, // \"RIFF\"\n IDENTIFIER: [0x57, 0x41, 0x56, 0x45] as const, // \"WAVE\"\n },\n MP3_ID3: [0x49, 0x44, 0x33] as const, // \"ID3\"\n OGG: [0x4f, 0x67, 0x67, 0x53] as const, // \"OggS\"\n FLAC: [0x66, 0x4c, 0x61, 0x43] as const, // \"fLaC\"\n FTYP: [0x66, 0x74, 0x79, 0x70] as const, // \"ftyp\" at offset 4 for mp4/m4a\n WEBM_EBML: [0x1a, 0x45, 0xdf, 0xa3] as const, // EBML header\n} as const;\n\nconst MIN_DETECTION_BUFFER_SIZE = 12;\n\nexport type AudioMimeType =\n | \"audio/wav\"\n | \"audio/mpeg\"\n | \"audio/ogg\"\n | \"audio/flac\"\n | \"audio/mp4\"\n | \"audio/webm\"\n | \"application/octet-stream\";\n\nfunction matchBytes(buffer: Buffer, offset: number, expected: readonly number[]): boolean {\n for (let i = 0; i < expected.length; i++) {\n const expectedByte = expected[i];\n if (expectedByte === undefined || buffer[offset + i] !== expectedByte) {\n return false;\n }\n }\n return true;\n}\n\nexport function detectAudioMimeType(buffer: Buffer): AudioMimeType {\n if (buffer.length < MIN_DETECTION_BUFFER_SIZE) {\n return \"application/octet-stream\";\n }\n\n // WAV: \"RIFF\" + size + \"WAVE\"\n if (\n matchBytes(buffer, 0, MAGIC_BYTES.WAV.HEADER) &&\n matchBytes(buffer, 8, MAGIC_BYTES.WAV.IDENTIFIER)\n ) {\n return \"audio/wav\";\n }\n\n // MP3: ID3 tag or MPEG frame sync\n const firstByte = buffer[0];\n const secondByte = buffer[1];\n if (\n matchBytes(buffer, 0, MAGIC_BYTES.MP3_ID3) ||\n (firstByte === 0xff && secondByte !== undefined && (secondByte & 0xe0) === 0xe0)\n ) {\n return \"audio/mpeg\";\n }\n\n // OGG: \"OggS\"\n if (matchBytes(buffer, 0, MAGIC_BYTES.OGG)) {\n return \"audio/ogg\";\n }\n\n // FLAC: \"fLaC\"\n if (matchBytes(buffer, 0, MAGIC_BYTES.FLAC)) {\n return \"audio/flac\";\n }\n\n // M4A/MP4: \"ftyp\" at offset 4\n if (matchBytes(buffer, 4, MAGIC_BYTES.FTYP)) {\n return \"audio/mp4\";\n }\n\n // WebM: EBML header\n if (matchBytes(buffer, 0, MAGIC_BYTES.WEBM_EBML)) {\n return \"audio/webm\";\n }\n\n logger.warn(\"Could not detect audio format from buffer, using generic binary type\");\n return \"application/octet-stream\";\n}\n\nexport function getExtensionForMimeType(mimeType: AudioMimeType): string {\n switch (mimeType) {\n case \"audio/wav\":\n return \"wav\";\n case \"audio/mpeg\":\n return \"mp3\";\n case \"audio/ogg\":\n return \"ogg\";\n case \"audio/flac\":\n return \"flac\";\n case \"audio/mp4\":\n return \"m4a\";\n case \"audio/webm\":\n return \"webm\";\n case \"application/octet-stream\":\n return \"bin\";\n }\n}\n\nexport function getFilenameForMimeType(mimeType: AudioMimeType): string {\n const ext = getExtensionForMimeType(mimeType);\n return `recording.${ext}`;\n}\n\nexport function validateAudioFormat(buffer: Buffer): AudioMimeType {\n const mimeType = detectAudioMimeType(buffer);\n if (mimeType === \"application/octet-stream\") {\n throw new Error(\n \"Unable to detect audio format. Supported formats: WAV, MP3, OGG, FLAC, M4A, WebM\"\n );\n }\n return mimeType;\n}\n",
10
- "import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { logger, ModelType, VECTOR_DIMS } from \"@elizaos/core\";\n\n// Safe default that matches @elizaos/core's MAX_EMBEDDING_TOKENS (8 000).\n// Defined locally so the plugin doesn't break against core versions older\n// than 2.0.0-alpha.4 where the symbol wasn't exported yet.\nconst MAX_EMBEDDING_TOKENS = 8_000;\nimport type { OpenAIEmbeddingResponse } from \"../types\";\nimport {\n getAuthHeader,\n getEmbeddingBaseURL,\n getEmbeddingDimensions,\n getEmbeddingModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\ntype VectorDimension = (typeof VECTOR_DIMS)[keyof typeof VECTOR_DIMS];\n\nfunction validateDimension(dimension: number): VectorDimension {\n const validDimensions = Object.values(VECTOR_DIMS) as number[];\n if (!validDimensions.includes(dimension)) {\n throw new Error(\n `Invalid embedding dimension: ${dimension}. Must be one of: ${validDimensions.join(\", \")}`\n );\n }\n return dimension as VectorDimension;\n}\n\nfunction extractText(params: TextEmbeddingParams | string | null): string | null {\n if (params === null) {\n return null;\n }\n if (typeof params === \"string\") {\n return params;\n }\n if (typeof params === \"object\" && typeof params.text === \"string\") {\n return params.text;\n }\n throw new Error(\"Invalid embedding params: expected string, { text: string }, or null\");\n}\n\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n const embeddingModel = getEmbeddingModel(runtime);\n const embeddingDimension = validateDimension(getEmbeddingDimensions(runtime));\n\n const text = extractText(params);\n if (text === null) {\n logger.debug(\"[OpenAI] Creating test embedding for initialization\");\n const testVector = new Array(embeddingDimension).fill(0);\n testVector[0] = 0.1;\n return testVector;\n }\n\n let trimmedText = text.trim();\n if (trimmedText.length === 0) {\n throw new Error(\"Cannot generate embedding for empty text\");\n }\n\n // Truncate to stay within embedding model token limits.\n // OpenAI embedding models support up to 8191 tokens per input;\n // MAX_EMBEDDING_TOKENS (8 000) provides a safe buffer.\n const maxChars = MAX_EMBEDDING_TOKENS * 4; // ~4 chars per token\n if (trimmedText.length > maxChars) {\n logger.warn(\n `[OpenAI] Embedding input too long (~${Math.ceil(trimmedText.length / 4)} tokens), truncating to ~${MAX_EMBEDDING_TOKENS} tokens`\n );\n trimmedText = trimmedText.slice(0, maxChars);\n }\n\n const baseURL = getEmbeddingBaseURL(runtime);\n const url = `${baseURL}/embeddings`;\n\n logger.debug(`[OpenAI] Generating embedding with model: ${embeddingModel}`);\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime, true),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n model: embeddingModel,\n input: trimmedText,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI embedding API error: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAIEmbeddingResponse;\n\n const firstResult = data?.data?.[0];\n if (!firstResult || !firstResult.embedding) {\n throw new Error(\"OpenAI API returned invalid embedding response structure\");\n }\n\n const embedding = firstResult.embedding;\n\n if (embedding.length !== embeddingDimension) {\n throw new Error(\n `Embedding dimension mismatch: got ${embedding.length}, expected ${embeddingDimension}. ` +\n `Check OPENAI_EMBEDDING_DIMENSIONS setting.`\n );\n }\n\n if (data.usage) {\n emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, trimmedText, {\n promptTokens: data.usage.prompt_tokens,\n completionTokens: 0,\n totalTokens: data.usage.total_tokens,\n });\n }\n\n logger.debug(`[OpenAI] Generated embedding with ${embedding.length} dimensions`);\n return embedding;\n}\n",
11
- "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { EventType } from \"@elizaos/core\";\nimport type { TokenUsage } from \"../types\";\n\nconst MAX_PROMPT_LENGTH = 200;\n\ninterface ModelUsageEventPayload {\n runtime: IAgentRuntime;\n source: \"openai\";\n provider: \"openai\";\n type: ModelTypeName;\n prompt: string;\n tokens: {\n prompt: number;\n completion: number;\n total: number;\n cached?: number;\n };\n}\n\ninterface AISDKUsage {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n}\n\ninterface OpenAIAPIUsage {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n cachedPromptTokens?: number;\n promptTokensDetails?: {\n cachedTokens?: number;\n };\n}\n\ntype ModelUsage = TokenUsage | AISDKUsage | OpenAIAPIUsage;\n\nfunction truncatePrompt(prompt: string): string {\n if (prompt.length <= MAX_PROMPT_LENGTH) {\n return prompt;\n }\n return `${prompt.slice(0, MAX_PROMPT_LENGTH)}…`;\n}\n\nfunction normalizeUsage(usage: ModelUsage): TokenUsage {\n if (\"promptTokens\" in usage) {\n const promptTokensDetails =\n \"promptTokensDetails\" in usage ? usage.promptTokensDetails : undefined;\n const cachedPromptTokens =\n usage.cachedPromptTokens ?? promptTokensDetails?.cachedTokens;\n return {\n promptTokens: usage.promptTokens ?? 0,\n completionTokens: usage.completionTokens ?? 0,\n totalTokens: usage.totalTokens ?? (usage.promptTokens ?? 0) + (usage.completionTokens ?? 0),\n cachedPromptTokens,\n };\n }\n if (\"inputTokens\" in usage || \"outputTokens\" in usage) {\n const input = (usage as AISDKUsage).inputTokens ?? 0;\n const output = (usage as AISDKUsage).outputTokens ?? 0;\n const total = (usage as AISDKUsage).totalTokens ?? input + output;\n return {\n promptTokens: input,\n completionTokens: output,\n totalTokens: total,\n cachedPromptTokens: (usage as AISDKUsage).cachedInputTokens,\n };\n }\n return {\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n };\n}\n\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n prompt: string,\n usage: ModelUsage\n): void {\n const normalized = normalizeUsage(usage);\n\n const payload: ModelUsageEventPayload = {\n runtime,\n source: \"openai\",\n provider: \"openai\",\n type,\n prompt: truncatePrompt(prompt),\n tokens: {\n prompt: normalized.promptTokens,\n completion: normalized.completionTokens,\n total: normalized.totalTokens,\n ...(normalized.cachedPromptTokens !== undefined\n ? { cached: normalized.cachedPromptTokens }\n : {}),\n },\n };\n\n runtime.emitEvent(EventType.MODEL_USED, payload);\n}\n",
10
+ "import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { logger, ModelType, VECTOR_DIMS } from \"@elizaos/core\";\n\n// Safe default that matches @elizaos/core's MAX_EMBEDDING_TOKENS (8 000).\n// Defined locally so the plugin doesn't break against core versions older\n// than 2.0.0-alpha.4 where the symbol wasn't exported yet.\nconst MAX_EMBEDDING_TOKENS = 8_000;\n\nimport type { OpenAIEmbeddingResponse } from \"../types\";\nimport {\n getAuthHeader,\n getEmbeddingBaseURL,\n getEmbeddingDimensions,\n getEmbeddingModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\ntype VectorDimension = (typeof VECTOR_DIMS)[keyof typeof VECTOR_DIMS];\n\nfunction validateDimension(dimension: number): VectorDimension {\n const validDimensions = Object.values(VECTOR_DIMS) as number[];\n if (!validDimensions.includes(dimension)) {\n throw new Error(\n `Invalid embedding dimension: ${dimension}. Must be one of: ${validDimensions.join(\", \")}`\n );\n }\n return dimension as VectorDimension;\n}\n\nfunction extractText(params: TextEmbeddingParams | string | null): string | null {\n if (params === null) {\n return null;\n }\n if (typeof params === \"string\") {\n return params;\n }\n if (typeof params === \"object\" && typeof params.text === \"string\") {\n return params.text;\n }\n throw new Error(\"Invalid embedding params: expected string, { text: string }, or null\");\n}\n\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n const embeddingModel = getEmbeddingModel(runtime);\n const embeddingDimension = validateDimension(getEmbeddingDimensions(runtime));\n\n const text = extractText(params);\n if (text === null) {\n logger.debug(\"[OpenAI] Creating test embedding for initialization\");\n const testVector = new Array(embeddingDimension).fill(0);\n testVector[0] = 0.1;\n return testVector;\n }\n\n let trimmedText = text.trim();\n if (trimmedText.length === 0) {\n throw new Error(\"Cannot generate embedding for empty text\");\n }\n\n // Truncate to stay within embedding model token limits.\n // OpenAI embedding models support up to 8191 tokens per input;\n // MAX_EMBEDDING_TOKENS (8 000) provides a safe buffer.\n const maxChars = MAX_EMBEDDING_TOKENS * 4; // ~4 chars per token\n if (trimmedText.length > maxChars) {\n logger.warn(\n `[OpenAI] Embedding input too long (~${Math.ceil(trimmedText.length / 4)} tokens), truncating to ~${MAX_EMBEDDING_TOKENS} tokens`\n );\n trimmedText = trimmedText.slice(0, maxChars);\n }\n\n const baseURL = getEmbeddingBaseURL(runtime);\n const url = `${baseURL}/embeddings`;\n\n logger.debug(`[OpenAI] Generating embedding with model: ${embeddingModel}`);\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime, true),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n model: embeddingModel,\n input: trimmedText,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI embedding API error: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAIEmbeddingResponse;\n\n const firstResult = data?.data?.[0];\n if (!firstResult || !firstResult.embedding) {\n throw new Error(\"OpenAI API returned invalid embedding response structure\");\n }\n\n const embedding = firstResult.embedding;\n\n if (embedding.length !== embeddingDimension) {\n throw new Error(\n `Embedding dimension mismatch: got ${embedding.length}, expected ${embeddingDimension}. ` +\n `Check OPENAI_EMBEDDING_DIMENSIONS setting.`\n );\n }\n\n if (data.usage) {\n emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, trimmedText, {\n promptTokens: data.usage.prompt_tokens,\n completionTokens: 0,\n totalTokens: data.usage.total_tokens,\n });\n }\n\n logger.debug(`[OpenAI] Generated embedding with ${embedding.length} dimensions`);\n return embedding;\n}\n",
11
+ "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { EventType } from \"@elizaos/core\";\nimport type { TokenUsage } from \"../types\";\n\nconst MAX_PROMPT_LENGTH = 200;\n\ninterface ModelUsageEventPayload {\n runtime: IAgentRuntime;\n source: \"openai\";\n provider: \"openai\";\n type: ModelTypeName;\n prompt: string;\n tokens: {\n prompt: number;\n completion: number;\n total: number;\n cached?: number;\n };\n}\n\ninterface AISDKUsage {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n}\n\ninterface OpenAIAPIUsage {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n cachedPromptTokens?: number;\n promptTokensDetails?: {\n cachedTokens?: number;\n };\n}\n\ntype ModelUsage = TokenUsage | AISDKUsage | OpenAIAPIUsage;\n\nfunction truncatePrompt(prompt: string): string {\n if (prompt.length <= MAX_PROMPT_LENGTH) {\n return prompt;\n }\n return `${prompt.slice(0, MAX_PROMPT_LENGTH)}…`;\n}\n\nfunction normalizeUsage(usage: ModelUsage): TokenUsage {\n if (\"promptTokens\" in usage) {\n const promptTokensDetails =\n \"promptTokensDetails\" in usage ? usage.promptTokensDetails : undefined;\n const cachedPromptTokens = usage.cachedPromptTokens ?? promptTokensDetails?.cachedTokens;\n return {\n promptTokens: usage.promptTokens ?? 0,\n completionTokens: usage.completionTokens ?? 0,\n totalTokens: usage.totalTokens ?? (usage.promptTokens ?? 0) + (usage.completionTokens ?? 0),\n cachedPromptTokens,\n };\n }\n if (\"inputTokens\" in usage || \"outputTokens\" in usage) {\n const input = (usage as AISDKUsage).inputTokens ?? 0;\n const output = (usage as AISDKUsage).outputTokens ?? 0;\n const total = (usage as AISDKUsage).totalTokens ?? input + output;\n return {\n promptTokens: input,\n completionTokens: output,\n totalTokens: total,\n cachedPromptTokens: (usage as AISDKUsage).cachedInputTokens,\n };\n }\n return {\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n };\n}\n\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n prompt: string,\n usage: ModelUsage\n): void {\n const normalized = normalizeUsage(usage);\n\n const payload: ModelUsageEventPayload = {\n runtime,\n source: \"openai\",\n provider: \"openai\",\n type,\n prompt: truncatePrompt(prompt),\n tokens: {\n prompt: normalized.promptTokens,\n completion: normalized.completionTokens,\n total: normalized.totalTokens,\n ...(normalized.cachedPromptTokens !== undefined\n ? { cached: normalized.cachedPromptTokens }\n : {}),\n },\n };\n\n runtime.emitEvent(EventType.MODEL_USED, payload);\n}\n",
12
12
  "import type { IAgentRuntime, ImageDescriptionParams, ImageGenerationParams } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport type {\n ImageDescriptionResult,\n ImageGenerationResult,\n ImageQuality,\n ImageSize,\n ImageStyle,\n OpenAIChatCompletionResponse,\n OpenAIImageGenerationResponse,\n} from \"../types\";\nimport {\n getAuthHeader,\n getBaseURL,\n getImageDescriptionMaxTokens,\n getImageDescriptionModel,\n getImageModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\ninterface ExtendedImageGenerationParams extends ImageGenerationParams {\n quality?: ImageQuality;\n style?: ImageStyle;\n}\n\nconst DEFAULT_IMAGE_DESCRIPTION_PROMPT =\n \"Please analyze this image and provide a title and detailed description.\";\n\nexport async function handleImageGeneration(\n runtime: IAgentRuntime,\n params: ImageGenerationParams\n): Promise<ImageGenerationResult[]> {\n const modelName = getImageModel(runtime);\n const count = params.count ?? 1;\n const size: ImageSize = (params.size as ImageSize) ?? \"1024x1024\";\n const extendedParams = params as ExtendedImageGenerationParams;\n\n logger.debug(`[OpenAI] Using IMAGE model: ${modelName}`);\n\n if (!params.prompt || params.prompt.trim().length === 0) {\n throw new Error(\"IMAGE generation requires a non-empty prompt\");\n }\n\n if (count < 1 || count > 10) {\n throw new Error(\"IMAGE count must be between 1 and 10\");\n }\n\n const baseURL = getBaseURL(runtime);\n\n const requestBody: Record<string, string | number> = {\n model: modelName,\n prompt: params.prompt,\n n: count,\n size,\n };\n\n if (extendedParams.quality) {\n requestBody.quality = extendedParams.quality;\n }\n if (extendedParams.style) {\n requestBody.style = extendedParams.style;\n }\n\n const response = await fetch(`${baseURL}/images/generations`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI image generation failed: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAIImageGenerationResponse;\n\n if (!data.data || data.data.length === 0) {\n throw new Error(\"OpenAI API returned no images\");\n }\n\n return data.data.map((item) => ({\n url: item.url,\n revisedPrompt: item.revised_prompt,\n }));\n}\n\nfunction parseTitleFromResponse(content: string): string {\n const titleMatch = content.match(/title[:\\s]+(.+?)(?:\\n|$)/i);\n return titleMatch?.[1]?.trim() ?? \"Image Analysis\";\n}\n\nfunction parseDescriptionFromResponse(content: string): string {\n return content.replace(/title[:\\s]+(.+?)(?:\\n|$)/i, \"\").trim();\n}\n\nexport async function handleImageDescription(\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string\n): Promise<ImageDescriptionResult> {\n const modelName = getImageDescriptionModel(runtime);\n const maxTokens = getImageDescriptionMaxTokens(runtime);\n\n logger.debug(`[OpenAI] Using IMAGE_DESCRIPTION model: ${modelName}`);\n\n let imageUrl: string;\n let promptText: string;\n\n if (typeof params === \"string\") {\n imageUrl = params;\n promptText = DEFAULT_IMAGE_DESCRIPTION_PROMPT;\n } else {\n imageUrl = params.imageUrl;\n promptText = params.prompt ?? DEFAULT_IMAGE_DESCRIPTION_PROMPT;\n }\n\n if (!imageUrl || imageUrl.trim().length === 0) {\n throw new Error(\"IMAGE_DESCRIPTION requires a valid image URL\");\n }\n\n const baseURL = getBaseURL(runtime);\n\n const requestBody = {\n model: modelName,\n messages: [\n {\n role: \"user\",\n content: [\n { type: \"text\", text: promptText },\n { type: \"image_url\", image_url: { url: imageUrl } },\n ],\n },\n ],\n max_tokens: maxTokens,\n };\n\n const response = await fetch(`${baseURL}/chat/completions`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI image description failed: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAIChatCompletionResponse;\n\n if (data.usage) {\n emitModelUsageEvent(\n runtime,\n ModelType.IMAGE_DESCRIPTION,\n typeof params === \"string\" ? params : (params.prompt ?? \"\"),\n {\n promptTokens: data.usage.prompt_tokens,\n completionTokens: data.usage.completion_tokens,\n totalTokens: data.usage.total_tokens,\n }\n );\n }\n\n const firstChoice = data.choices?.[0];\n const content = firstChoice?.message?.content;\n\n if (!content) {\n throw new Error(\"OpenAI API returned empty image description\");\n }\n\n return {\n title: parseTitleFromResponse(content),\n description: parseDescriptionFromResponse(content),\n };\n}\n",
13
13
  "import type {\n IAgentRuntime,\n JsonValue,\n ModelTypeName,\n ObjectGenerationParams,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateObject, type LanguageModel } from \"ai\";\nimport { createOpenAIClient } from \"../providers\";\nimport { getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\nimport { getJsonRepairFunction } from \"../utils/json\";\n\ntype ModelNameGetter = (runtime: IAgentRuntime) => string;\ntype ChatModelFactory = { chat: (modelName: string) => LanguageModel };\n\nasync function generateObjectByModelType(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams,\n modelType: ModelTypeName,\n getModelFn: ModelNameGetter\n): Promise<Record<string, JsonValue>> {\n const openai = createOpenAIClient(runtime) as ChatModelFactory;\n const modelName = getModelFn(runtime);\n\n logger.debug(`[OpenAI] Using ${modelType} model: ${modelName}`);\n\n if (!params.prompt || params.prompt.trim().length === 0) {\n throw new Error(\"Object generation requires a non-empty prompt\");\n }\n\n if (params.schema) {\n logger.debug(\n \"[OpenAI] Schema provided but using no-schema mode. \" +\n \"Structure is determined by prompt instructions.\"\n );\n }\n\n const model = openai.chat(modelName);\n const { object, usage } = await generateObject({\n model,\n output: \"no-schema\",\n prompt: params.prompt,\n experimental_repairText: getJsonRepairFunction(),\n });\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, params.prompt, usage);\n }\n\n if (typeof object !== \"object\" || object === null) {\n throw new Error(`Object generation returned ${typeof object}, expected object`);\n }\n\n return object as Record<string, JsonValue>;\n}\n\nexport async function handleObjectSmall(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n return generateObjectByModelType(runtime, params, ModelType.OBJECT_SMALL, getSmallModel);\n}\n\nexport async function handleObjectLarge(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n return generateObjectByModelType(runtime, params, ModelType.OBJECT_LARGE, getLargeModel);\n}\n",
14
14
  "import { createOpenAI, type OpenAIProvider } from \"@ai-sdk/openai\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport { getApiKey, getBaseURL, isProxyMode } from \"../utils/config\";\n\nconst PROXY_API_KEY = \"sk-proxy\";\n\nexport function createOpenAIClient(runtime: IAgentRuntime): OpenAIProvider {\n const baseURL = getBaseURL(runtime);\n const apiKey = getApiKey(runtime);\n\n if (!apiKey && isProxyMode(runtime)) {\n return createOpenAI({\n apiKey: PROXY_API_KEY,\n baseURL,\n });\n }\n\n if (!apiKey) {\n throw new Error(\n \"OPENAI_API_KEY is required. Set it in your environment variables or runtime settings.\"\n );\n }\n\n return createOpenAI({\n apiKey,\n baseURL,\n });\n}\n",
15
15
  "import { logger } from \"@elizaos/core\";\nimport { JSONParseError } from \"ai\";\n\ninterface JsonRepairParams {\n text: string;\n error: Error;\n}\n\ntype JsonRepairFunction = (params: JsonRepairParams) => Promise<string | null>;\n\nconst JSON_CLEANUP_PATTERNS = {\n MARKDOWN_JSON: /```json\\n|\\n```|```/g,\n WHITESPACE: /^\\s+|\\s+$/g,\n} as const;\n\nexport function getJsonRepairFunction(): JsonRepairFunction {\n return async ({ text, error }: JsonRepairParams): Promise<string | null> => {\n if (!(error instanceof JSONParseError)) {\n return null;\n }\n try {\n const cleanedText = text.replace(JSON_CLEANUP_PATTERNS.MARKDOWN_JSON, \"\");\n JSON.parse(cleanedText);\n logger.debug(\"[JSON Repair] Successfully repaired JSON by removing markdown wrappers\");\n return cleanedText;\n } catch {\n logger.warn(\"[JSON Repair] Unable to repair JSON text\");\n return null;\n }\n };\n}\n\nexport function parseJsonWithRepair<T>(text: string): T {\n try {\n return JSON.parse(text) as T;\n } catch (firstError) {\n const cleanedText = text.replace(JSON_CLEANUP_PATTERNS.MARKDOWN_JSON, \"\");\n try {\n return JSON.parse(cleanedText) as T;\n } catch {\n const message = firstError instanceof Error ? firstError.message : String(firstError);\n throw new Error(`Failed to parse JSON: ${message}`);\n }\n }\n}\n\nexport function safeStringify(value: unknown, indent = 0): string {\n const seen = new WeakSet();\n\n const replacer = (_key: string, val: unknown): unknown => {\n if (typeof val === \"object\" && val !== null) {\n if (seen.has(val)) {\n return \"[Circular]\";\n }\n seen.add(val);\n }\n\n // Handle special types\n if (typeof val === \"bigint\") {\n return val.toString();\n }\n\n if (val instanceof Error) {\n return {\n name: val.name,\n message: val.message,\n stack: val.stack,\n };\n }\n\n if (val instanceof Date) {\n return val.toISOString();\n }\n\n if (val instanceof Map) {\n return Object.fromEntries(val);\n }\n\n if (val instanceof Set) {\n return Array.from(val);\n }\n\n return val;\n };\n\n return JSON.stringify(value, replacer, indent);\n}\n",
16
16
  "/**\n * Deep Research model handler\n *\n * Provides deep research capabilities using OpenAI's o3-deep-research and o4-mini-deep-research models.\n * These models can find, analyze, and synthesize hundreds of sources to create comprehensive reports.\n *\n * @see https://platform.openai.com/docs/guides/deep-research\n */\n\nimport type {\n IAgentRuntime,\n JsonValue,\n ResearchAnnotation,\n ResearchCodeInterpreterCall,\n ResearchFileSearchCall,\n ResearchMcpToolCall,\n ResearchMessageOutput,\n ResearchOutputItem,\n ResearchParams,\n ResearchResult,\n ResearchTool,\n ResearchWebSearchCall,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport { getApiKey, getBaseURL, getResearchModel, getResearchTimeout } from \"../utils/config\";\n\n// ============================================================================\n// Types for OpenAI Responses API\n// ============================================================================\n\n/**\n * Tool configuration for the Responses API\n */\ninterface ResponsesApiTool {\n type: \"web_search_preview\" | \"file_search\" | \"code_interpreter\" | \"mcp\";\n vector_store_ids?: string[];\n container?: { type: \"auto\" };\n server_label?: string;\n server_url?: string;\n require_approval?: \"never\";\n}\n\n/**\n * Raw response from the OpenAI Responses API\n */\ninterface ResponsesApiResponse {\n id: string;\n object: string;\n status?: \"queued\" | \"in_progress\" | \"completed\" | \"failed\";\n output?: ResponsesApiOutputItem[];\n output_text?: string;\n error?: {\n message: string;\n code: string;\n };\n}\n\n/**\n * Raw output item from the Responses API\n */\ninterface ResponsesApiOutputItem {\n id?: string;\n type: string;\n status?: string;\n action?: {\n type: string;\n query?: string;\n url?: string;\n };\n query?: string;\n results?: Array<{\n file_id: string;\n file_name: string;\n score: number;\n }>;\n code?: string;\n output?: string;\n server_label?: string;\n tool_name?: string;\n arguments?: Record<string, unknown>;\n result?: unknown;\n content?: Array<{\n type: string;\n text: string;\n annotations?: Array<{\n url: string;\n title: string;\n start_index: number;\n end_index: number;\n }>;\n }>;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Converts ResearchTool params to Responses API tool format\n */\nfunction convertToolToApi(tool: ResearchTool): ResponsesApiTool {\n switch (tool.type) {\n case \"web_search_preview\":\n return { type: \"web_search_preview\" };\n case \"file_search\":\n return {\n type: \"file_search\",\n vector_store_ids: tool.vectorStoreIds,\n };\n case \"code_interpreter\":\n return {\n type: \"code_interpreter\",\n container: tool.container ?? { type: \"auto\" },\n };\n case \"mcp\":\n return {\n type: \"mcp\",\n server_label: tool.serverLabel,\n server_url: tool.serverUrl,\n require_approval: tool.requireApproval ?? \"never\",\n };\n default:\n throw new Error(`Unknown research tool type: ${(tool as ResearchTool).type}`);\n }\n}\n\n/**\n * Converts raw API output items to typed ResearchOutputItem\n */\nfunction convertOutputItem(item: ResponsesApiOutputItem): ResearchOutputItem | null {\n switch (item.type) {\n case \"web_search_call\":\n return {\n id: item.id ?? \"\",\n type: \"web_search_call\",\n status: (item.status as \"completed\" | \"failed\") ?? \"completed\",\n action: {\n type: (item.action?.type as \"search\" | \"open_page\" | \"find_in_page\") ?? \"search\",\n query: item.action?.query,\n url: item.action?.url,\n },\n } satisfies ResearchWebSearchCall;\n\n case \"file_search_call\":\n return {\n id: item.id ?? \"\",\n type: \"file_search_call\",\n status: (item.status as \"completed\" | \"failed\") ?? \"completed\",\n query: item.query ?? \"\",\n results: item.results?.map((r) => ({\n fileId: r.file_id,\n fileName: r.file_name,\n score: r.score,\n })),\n } satisfies ResearchFileSearchCall;\n\n case \"code_interpreter_call\":\n return {\n id: item.id ?? \"\",\n type: \"code_interpreter_call\",\n status: (item.status as \"completed\" | \"failed\") ?? \"completed\",\n code: item.code ?? \"\",\n output: item.output,\n } satisfies ResearchCodeInterpreterCall;\n\n case \"mcp_tool_call\":\n return {\n id: item.id ?? \"\",\n type: \"mcp_tool_call\",\n status: (item.status as \"completed\" | \"failed\") ?? \"completed\",\n serverLabel: item.server_label ?? \"\",\n toolName: item.tool_name ?? \"\",\n arguments: (item.arguments ?? {}) as Record<string, JsonValue>,\n result: item.result as JsonValue,\n } satisfies ResearchMcpToolCall;\n\n case \"message\":\n return {\n type: \"message\",\n content:\n item.content?.map((c) => ({\n type: \"output_text\" as const,\n text: c.text,\n annotations:\n c.annotations?.map((a) => ({\n url: a.url,\n title: a.title,\n startIndex: a.start_index,\n endIndex: a.end_index,\n })) ?? [],\n })) ?? [],\n } satisfies ResearchMessageOutput;\n\n default:\n // Unknown output type, skip\n return null;\n }\n}\n\n/**\n * Extracts text and annotations from the response\n */\nfunction extractTextAndAnnotations(response: ResponsesApiResponse): {\n text: string;\n annotations: ResearchAnnotation[];\n} {\n // Try output_text first (convenience field)\n if (response.output_text) {\n // Find annotations from message output items\n const annotations: ResearchAnnotation[] = [];\n if (response.output) {\n for (const item of response.output) {\n if (item.type === \"message\" && item.content) {\n for (const content of item.content) {\n if (content.annotations) {\n for (const ann of content.annotations) {\n annotations.push({\n url: ann.url,\n title: ann.title,\n startIndex: ann.start_index,\n endIndex: ann.end_index,\n });\n }\n }\n }\n }\n }\n }\n return { text: response.output_text, annotations };\n }\n\n // Fall back to extracting from message output items\n let text = \"\";\n const annotations: ResearchAnnotation[] = [];\n\n if (response.output) {\n for (const item of response.output) {\n if (item.type === \"message\" && item.content) {\n for (const content of item.content) {\n text += content.text;\n if (content.annotations) {\n for (const ann of content.annotations) {\n annotations.push({\n url: ann.url,\n title: ann.title,\n startIndex: ann.start_index,\n endIndex: ann.end_index,\n });\n }\n }\n }\n }\n }\n }\n\n return { text, annotations };\n}\n\n// ============================================================================\n// Main Handler\n// ============================================================================\n\n/**\n * Handles RESEARCH model requests using OpenAI's deep research models.\n *\n * Deep research models can take tens of minutes to complete tasks.\n * Use background mode for long-running tasks.\n *\n * @param runtime - The agent runtime\n * @param params - Research parameters\n * @returns Research result with text, annotations, and output items\n *\n * @example\n * ```typescript\n * const result = await handleResearch(runtime, {\n * input: \"Research the economic impact of AI on global labor markets\",\n * tools: [\n * { type: \"web_search_preview\" },\n * { type: \"code_interpreter\", container: { type: \"auto\" } }\n * ],\n * background: true,\n * });\n * console.log(result.text);\n * ```\n */\nexport async function handleResearch(\n runtime: IAgentRuntime,\n params: ResearchParams\n): Promise<ResearchResult> {\n const apiKey = getApiKey(runtime);\n if (!apiKey) {\n throw new Error(\n \"OPENAI_API_KEY is required for deep research. Set it in your environment variables or runtime settings.\"\n );\n }\n\n const baseURL = getBaseURL(runtime);\n const modelName = params.model ?? getResearchModel(runtime);\n const timeout = getResearchTimeout(runtime);\n\n logger.debug(`[OpenAI] Starting deep research with model: ${modelName}`);\n logger.debug(`[OpenAI] Research input: ${params.input.substring(0, 100)}...`);\n\n // Validate that at least one data source tool is provided\n const dataSourceTools = params.tools?.filter(\n (t) => t.type === \"web_search_preview\" || t.type === \"file_search\" || t.type === \"mcp\"\n );\n\n if (!dataSourceTools || dataSourceTools.length === 0) {\n // Default to web search if no tools specified\n logger.debug(\"[OpenAI] No data source tools specified, defaulting to web_search_preview\");\n params.tools = [{ type: \"web_search_preview\" }, ...(params.tools ?? [])];\n }\n\n // Build the request body for the Responses API\n const requestBody: Record<string, unknown> = {\n model: modelName,\n input: params.input,\n };\n\n if (params.instructions) {\n requestBody.instructions = params.instructions;\n }\n\n if (params.background !== undefined) {\n requestBody.background = params.background;\n }\n\n if (params.tools && params.tools.length > 0) {\n requestBody.tools = params.tools.map(convertToolToApi);\n }\n\n if (params.maxToolCalls !== undefined) {\n requestBody.max_tool_calls = params.maxToolCalls;\n }\n\n if (params.reasoningSummary) {\n requestBody.reasoning = { summary: params.reasoningSummary };\n }\n\n logger.debug(`[OpenAI] Research request body: ${JSON.stringify(requestBody, null, 2)}`);\n\n // Make the API request\n const response = await fetch(`${baseURL}/responses`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(requestBody),\n signal: AbortSignal.timeout(timeout),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n logger.error(`[OpenAI] Research request failed: ${response.status} ${errorText}`);\n throw new Error(`Deep research request failed: ${response.status} ${response.statusText}`);\n }\n\n const data = (await response.json()) as ResponsesApiResponse;\n\n if (data.error) {\n logger.error(`[OpenAI] Research API error: ${data.error.message}`);\n throw new Error(`Deep research error: ${data.error.message}`);\n }\n\n logger.debug(`[OpenAI] Research response received. Status: ${data.status ?? \"completed\"}`);\n\n // Extract text and annotations\n const { text, annotations } = extractTextAndAnnotations(data);\n\n // Convert output items\n const outputItems: ResearchOutputItem[] = [];\n if (data.output) {\n for (const item of data.output) {\n const converted = convertOutputItem(item);\n if (converted) {\n outputItems.push(converted);\n }\n }\n }\n\n const result: ResearchResult = {\n id: data.id,\n text,\n annotations,\n outputItems,\n status: data.status,\n };\n\n logger.info(\n `[OpenAI] Research completed. Text length: ${text.length}, Annotations: ${annotations.length}, Output items: ${outputItems.length}`\n );\n\n return result;\n}\n",
17
- "/**\n * Text generation model handlers\n *\n * Provides text generation using OpenAI's language models.\n */\n\nimport type { GenerateTextParams, IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText, type LanguageModelUsage, streamText } from \"ai\";\nimport { createOpenAIClient } from \"../providers\";\nimport type { TextStreamResult, TokenUsage } from \"../types\";\nimport { getExperimentalTelemetry, getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Function to get model name from runtime\n */\ntype ModelNameGetter = (runtime: IAgentRuntime) => string;\n\ntype PromptCacheRetention = \"in_memory\" | \"24h\";\n\ninterface OpenAIPromptCacheOptions {\n promptCacheKey?: string;\n promptCacheRetention?: PromptCacheRetention;\n}\n\ninterface GenerateTextParamsWithOpenAIOptions extends GenerateTextParams {\n providerOptions?: {\n openai?: OpenAIPromptCacheOptions;\n };\n}\n\ninterface LanguageModelUsageWithCache extends LanguageModelUsage {\n cachedInputTokens?: number;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Converts AI SDK usage to our token usage format\n */\nfunction convertUsage(usage: LanguageModelUsage | undefined): TokenUsage | undefined {\n if (!usage) {\n return undefined;\n }\n\n // The AI SDK uses inputTokens/outputTokens\n const promptTokens = usage.inputTokens ?? 0;\n const completionTokens = usage.outputTokens ?? 0;\n const usageWithCache = usage as LanguageModelUsageWithCache;\n\n return {\n promptTokens,\n completionTokens,\n totalTokens: promptTokens + completionTokens,\n cachedPromptTokens: usageWithCache.cachedInputTokens,\n };\n}\n\nfunction resolvePromptCacheOptions(params: GenerateTextParams): OpenAIPromptCacheOptions {\n const withOpenAIOptions = params as GenerateTextParamsWithOpenAIOptions;\n return {\n promptCacheKey: withOpenAIOptions.providerOptions?.openai?.promptCacheKey,\n promptCacheRetention:\n withOpenAIOptions.providerOptions?.openai?.promptCacheRetention,\n };\n}\n\n// ============================================================================\n// Core Generation Function\n// ============================================================================\n\n/**\n * Generates text using the specified model type.\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @param modelType - The type of model (TEXT_SMALL or TEXT_LARGE)\n * @param getModelFn - Function to get the model name\n * @returns Generated text or stream result\n */\nasync function generateTextByModelType(\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n modelType: ModelTypeName,\n getModelFn: ModelNameGetter\n): Promise<string | TextStreamResult> {\n const openai = createOpenAIClient(runtime);\n const modelName = getModelFn(runtime);\n\n logger.debug(`[OpenAI] Using ${modelType} model: ${modelName}`);\n const promptCacheOptions = resolvePromptCacheOptions(params);\n\n // Get system prompt from character if available\n const systemPrompt = runtime.character.system ?? undefined;\n\n // Use chat() instead of languageModel() to use the Chat Completions API\n // which has better compatibility than the Responses API\n // gpt-5 and gpt-5-mini (reasoning models) don't support temperature,\n // frequencyPenalty, presencePenalty, or stop parameters - use defaults only\n const model = openai.chat(modelName);\n const generateParams = {\n model,\n prompt: params.prompt,\n system: systemPrompt,\n maxOutputTokens: params.maxTokens ?? 8192,\n experimental_telemetry: { isEnabled: getExperimentalTelemetry(runtime) },\n ...(promptCacheOptions.promptCacheKey ||\n promptCacheOptions.promptCacheRetention\n ? {\n providerOptions: {\n openai: {\n ...(promptCacheOptions.promptCacheKey\n ? { promptCacheKey: promptCacheOptions.promptCacheKey }\n : {}),\n ...(promptCacheOptions.promptCacheRetention\n ? { promptCacheRetention: promptCacheOptions.promptCacheRetention }\n : {}),\n },\n },\n }\n : {}),\n };\n\n // Handle streaming mode\n if (params.stream) {\n const result = streamText(generateParams);\n\n return {\n textStream: result.textStream,\n text: Promise.resolve(result.text),\n usage: Promise.resolve(result.usage).then(convertUsage),\n finishReason: Promise.resolve(result.finishReason).then((r) => r as string | undefined),\n };\n }\n\n // Non-streaming mode\n const { text, usage } = await generateText(generateParams);\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, params.prompt, usage);\n }\n\n return text;\n}\n\n// ============================================================================\n// Public Handlers\n// ============================================================================\n\n/**\n * Handles TEXT_SMALL model requests.\n *\n * Uses the configured small model (default: gpt-5-mini).\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @returns Generated text or stream result\n */\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextByModelType(runtime, params, ModelType.TEXT_SMALL, getSmallModel);\n}\n\n/**\n * Handles TEXT_LARGE model requests.\n *\n * Uses the configured large model (default: gpt-5).\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @returns Generated text or stream result\n */\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextByModelType(runtime, params, ModelType.TEXT_LARGE, getLargeModel);\n}\n",
17
+ "/**\n * Text generation model handlers\n *\n * Provides text generation using OpenAI's language models.\n */\n\nimport type { GenerateTextParams, IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText, type LanguageModelUsage, streamText } from \"ai\";\nimport { createOpenAIClient } from \"../providers\";\nimport type { TextStreamResult, TokenUsage } from \"../types\";\nimport { getExperimentalTelemetry, getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Function to get model name from runtime\n */\ntype ModelNameGetter = (runtime: IAgentRuntime) => string;\n\ntype PromptCacheRetention = \"in_memory\" | \"24h\";\n\ninterface OpenAIPromptCacheOptions {\n promptCacheKey?: string;\n promptCacheRetention?: PromptCacheRetention;\n}\n\ninterface GenerateTextParamsWithOpenAIOptions extends GenerateTextParams {\n providerOptions?: {\n openai?: OpenAIPromptCacheOptions;\n };\n}\n\ninterface LanguageModelUsageWithCache extends LanguageModelUsage {\n cachedInputTokens?: number;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Converts AI SDK usage to our token usage format\n */\nfunction convertUsage(usage: LanguageModelUsage | undefined): TokenUsage | undefined {\n if (!usage) {\n return undefined;\n }\n\n // The AI SDK uses inputTokens/outputTokens\n const promptTokens = usage.inputTokens ?? 0;\n const completionTokens = usage.outputTokens ?? 0;\n const usageWithCache = usage as LanguageModelUsageWithCache;\n\n return {\n promptTokens,\n completionTokens,\n totalTokens: promptTokens + completionTokens,\n cachedPromptTokens: usageWithCache.cachedInputTokens,\n };\n}\n\nfunction resolvePromptCacheOptions(params: GenerateTextParams): OpenAIPromptCacheOptions {\n const withOpenAIOptions = params as GenerateTextParamsWithOpenAIOptions;\n return {\n promptCacheKey: withOpenAIOptions.providerOptions?.openai?.promptCacheKey,\n promptCacheRetention: withOpenAIOptions.providerOptions?.openai?.promptCacheRetention,\n };\n}\n\n// ============================================================================\n// Core Generation Function\n// ============================================================================\n\n/**\n * Generates text using the specified model type.\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @param modelType - The type of model (TEXT_SMALL or TEXT_LARGE)\n * @param getModelFn - Function to get the model name\n * @returns Generated text or stream result\n */\nasync function generateTextByModelType(\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n modelType: ModelTypeName,\n getModelFn: ModelNameGetter\n): Promise<string | TextStreamResult> {\n const openai = createOpenAIClient(runtime);\n const modelName = getModelFn(runtime);\n\n logger.debug(`[OpenAI] Using ${modelType} model: ${modelName}`);\n const promptCacheOptions = resolvePromptCacheOptions(params);\n\n // Get system prompt from character if available\n const systemPrompt = runtime.character.system ?? undefined;\n\n // Use chat() instead of languageModel() to use the Chat Completions API\n // which has better compatibility than the Responses API\n // gpt-5 and gpt-5-mini (reasoning models) don't support temperature,\n // frequencyPenalty, presencePenalty, or stop parameters - use defaults only\n const model = openai.chat(modelName);\n const generateParams = {\n model,\n prompt: params.prompt,\n system: systemPrompt,\n maxOutputTokens: params.maxTokens ?? 8192,\n experimental_telemetry: { isEnabled: getExperimentalTelemetry(runtime) },\n ...(promptCacheOptions.promptCacheKey || promptCacheOptions.promptCacheRetention\n ? {\n providerOptions: {\n openai: {\n ...(promptCacheOptions.promptCacheKey\n ? { promptCacheKey: promptCacheOptions.promptCacheKey }\n : {}),\n ...(promptCacheOptions.promptCacheRetention\n ? { promptCacheRetention: promptCacheOptions.promptCacheRetention }\n : {}),\n },\n },\n }\n : {}),\n };\n\n // Handle streaming mode\n if (params.stream) {\n const result = streamText(generateParams);\n\n return {\n textStream: result.textStream,\n text: Promise.resolve(result.text),\n usage: Promise.resolve(result.usage).then(convertUsage),\n finishReason: Promise.resolve(result.finishReason).then((r) => r as string | undefined),\n };\n }\n\n // Non-streaming mode\n const { text, usage } = await generateText(generateParams);\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, params.prompt, usage);\n }\n\n return text;\n}\n\n// ============================================================================\n// Public Handlers\n// ============================================================================\n\n/**\n * Handles TEXT_SMALL model requests.\n *\n * Uses the configured small model (default: gpt-5-mini).\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @returns Generated text or stream result\n */\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextByModelType(runtime, params, ModelType.TEXT_SMALL, getSmallModel);\n}\n\n/**\n * Handles TEXT_LARGE model requests.\n *\n * Uses the configured large model (default: gpt-5).\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @returns Generated text or stream result\n */\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextByModelType(runtime, params, ModelType.TEXT_LARGE, getLargeModel);\n}\n",
18
18
  "import type { DetokenizeTextParams, IAgentRuntime, TokenizeTextParams } from \"@elizaos/core\";\nimport { ModelType } from \"@elizaos/core\";\nimport { detokenizeText, tokenizeText } from \"../utils/tokenization\";\n\nexport async function handleTokenizerEncode(\n runtime: IAgentRuntime,\n params: TokenizeTextParams\n): Promise<number[]> {\n if (!params.prompt) {\n throw new Error(\"Tokenization requires a non-empty prompt\");\n }\n const modelType = params.modelType ?? ModelType.TEXT_LARGE;\n return tokenizeText(runtime, modelType, params.prompt);\n}\n\nexport async function handleTokenizerDecode(\n runtime: IAgentRuntime,\n params: DetokenizeTextParams\n): Promise<string> {\n if (!params.tokens || !Array.isArray(params.tokens)) {\n throw new Error(\"Detokenization requires a valid tokens array\");\n }\n if (params.tokens.length === 0) {\n return \"\";\n }\n for (let i = 0; i < params.tokens.length; i++) {\n const token = params.tokens[i];\n if (typeof token !== \"number\" || !Number.isFinite(token)) {\n throw new Error(`Invalid token at index ${i}: expected number`);\n }\n }\n const modelType = params.modelType ?? ModelType.TEXT_LARGE;\n return detokenizeText(runtime, modelType, params.tokens);\n}\n",
19
19
  "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { ModelType } from \"@elizaos/core\";\nimport {\n encodingForModel,\n getEncoding,\n type Tiktoken,\n type TiktokenEncoding,\n type TiktokenModel,\n} from \"js-tiktoken\";\nimport { getLargeModel, getSmallModel } from \"./config\";\n\ntype SupportedEncoding = \"cl100k_base\" | \"o200k_base\";\n\nfunction resolveTokenizerEncoding(modelName: string): Tiktoken {\n const normalized = modelName.toLowerCase();\n const fallbackEncoding: SupportedEncoding = normalized.includes(\"4o\")\n ? \"o200k_base\"\n : \"cl100k_base\";\n try {\n return encodingForModel(modelName as TiktokenModel);\n } catch {\n return getEncoding(fallbackEncoding as TiktokenEncoding);\n }\n}\n\nfunction getModelName(runtime: IAgentRuntime, modelType: ModelTypeName): string {\n if (modelType === ModelType.TEXT_SMALL) {\n return getSmallModel(runtime);\n }\n return getLargeModel(runtime);\n}\n\nexport function tokenizeText(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n text: string\n): number[] {\n const modelName = getModelName(runtime, modelType);\n const encoder = resolveTokenizerEncoding(modelName);\n return encoder.encode(text);\n}\n\nexport function detokenizeText(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n tokens: number[]\n): string {\n const modelName = getModelName(runtime, modelType);\n const encoder = resolveTokenizerEncoding(modelName);\n return encoder.decode(tokens);\n}\n\nexport function countTokens(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n text: string\n): number {\n const tokens = tokenizeText(runtime, modelType, text);\n return tokens.length;\n}\n\nexport function truncateToTokenLimit(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n text: string,\n maxTokens: number\n): string {\n const tokens = tokenizeText(runtime, modelType, text);\n if (tokens.length <= maxTokens) {\n return text;\n }\n const truncatedTokens = tokens.slice(0, maxTokens);\n return detokenizeText(runtime, modelType, truncatedTokens);\n}\n"
20
20
  ],
21
- "mappings": "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",
21
+ "mappings": "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",
22
22
  "debugId": "01A431D38E4333C464756E2164756E21",
23
23
  "names": []
24
24
  }
@@ -7,18 +7,18 @@
7
7
  "import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nfunction getEnvValue(key: string): string | undefined {\n if (typeof process === \"undefined\" || !process.env) {\n return undefined;\n }\n const value = process.env[key];\n return value === undefined ? undefined : String(value);\n}\n\nexport function getSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue?: string\n): string | undefined {\n const value = runtime.getSetting(key);\n if (value !== undefined && value !== null) {\n return String(value);\n }\n return getEnvValue(key) ?? defaultValue;\n}\nexport function getRequiredSetting(\n runtime: IAgentRuntime,\n key: string,\n errorMessage?: string\n): string {\n const value = getSetting(runtime, key);\n if (value === undefined || value.trim() === \"\") {\n throw new Error(errorMessage ?? `Required setting '${key}' is not configured`);\n }\n return value;\n}\n\nexport function getNumericSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue: number\n): number {\n const value = getSetting(runtime, key);\n if (value === undefined) {\n return defaultValue;\n }\n const parsed = Number.parseInt(value, 10);\n if (!Number.isFinite(parsed)) {\n throw new Error(`Setting '${key}' must be a valid integer, got: ${value}`);\n }\n return parsed;\n}\n\nexport function getBooleanSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue: boolean\n): boolean {\n const value = getSetting(runtime, key);\n if (value === undefined) {\n return defaultValue;\n }\n const normalized = value.toLowerCase();\n return normalized === \"true\" || normalized === \"1\" || normalized === \"yes\";\n}\n\nexport function isBrowser(): boolean {\n return (\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as { document?: Document }).document !== \"undefined\"\n );\n}\n\nexport function isProxyMode(runtime: IAgentRuntime): boolean {\n return isBrowser() && !!getSetting(runtime, \"OPENAI_BROWSER_BASE_URL\");\n}\n\nexport function getApiKey(runtime: IAgentRuntime): string | undefined {\n return getSetting(runtime, \"OPENAI_API_KEY\");\n}\n\nexport function getEmbeddingApiKey(runtime: IAgentRuntime): string | undefined {\n const embeddingApiKey = getSetting(runtime, \"OPENAI_EMBEDDING_API_KEY\");\n if (embeddingApiKey) {\n logger.debug(\"[OpenAI] Using specific embedding API key\");\n return embeddingApiKey;\n }\n logger.debug(\"[OpenAI] Falling back to general API key for embeddings\");\n return getApiKey(runtime);\n}\n\nexport function getAuthHeader(\n runtime: IAgentRuntime,\n forEmbedding = false\n): Record<string, string> {\n // By default this plugin does NOT send auth headers in the browser. This is safer because\n // frontend builds would otherwise expose secrets. For local demos, you can explicitly\n // opt-in to sending the Authorization header by setting OPENAI_ALLOW_BROWSER_API_KEY=true.\n if (isBrowser() && !getBooleanSetting(runtime, \"OPENAI_ALLOW_BROWSER_API_KEY\", false)) {\n return {};\n }\n const key = forEmbedding ? getEmbeddingApiKey(runtime) : getApiKey(runtime);\n return key ? { Authorization: `Bearer ${key}` } : {};\n}\n\nexport function getBaseURL(runtime: IAgentRuntime): string {\n const browserURL = getSetting(runtime, \"OPENAI_BROWSER_BASE_URL\");\n const baseURL =\n isBrowser() && browserURL\n ? browserURL\n : (getSetting(runtime, \"OPENAI_BASE_URL\") ?? \"https://api.openai.com/v1\");\n logger.debug(`[OpenAI] Base URL: ${baseURL}`);\n return baseURL;\n}\n\nexport function getEmbeddingBaseURL(runtime: IAgentRuntime): string {\n const embeddingURL = isBrowser()\n ? (getSetting(runtime, \"OPENAI_BROWSER_EMBEDDING_URL\") ??\n getSetting(runtime, \"OPENAI_BROWSER_BASE_URL\"))\n : getSetting(runtime, \"OPENAI_EMBEDDING_URL\");\n\n if (embeddingURL) {\n logger.debug(`[OpenAI] Using embedding base URL: ${embeddingURL}`);\n return embeddingURL;\n }\n\n logger.debug(\"[OpenAI] Falling back to general base URL for embeddings\");\n return getBaseURL(runtime);\n}\n\nexport function getSmallModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENAI_SMALL_MODEL\") ?? getSetting(runtime, \"SMALL_MODEL\") ?? \"gpt-5-mini\"\n );\n}\n\nexport function getLargeModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_LARGE_MODEL\") ?? getSetting(runtime, \"LARGE_MODEL\") ?? \"gpt-5\";\n}\n\nexport function getEmbeddingModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_EMBEDDING_MODEL\") ?? \"text-embedding-3-small\";\n}\n\nexport function getImageDescriptionModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_IMAGE_DESCRIPTION_MODEL\") ?? \"gpt-5-mini\";\n}\n\nexport function getTranscriptionModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_TRANSCRIPTION_MODEL\") ?? \"gpt-5-mini-transcribe\";\n}\n\nexport function getTTSModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_TTS_MODEL\") ?? \"tts-1\";\n}\n\nexport function getTTSVoice(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_TTS_VOICE\") ?? \"nova\";\n}\n\nexport function getTTSInstructions(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_TTS_INSTRUCTIONS\") ?? \"\";\n}\n\nexport function getImageModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_IMAGE_MODEL\") ?? \"dall-e-3\";\n}\n\nexport function getExperimentalTelemetry(runtime: IAgentRuntime): boolean {\n return getBooleanSetting(runtime, \"OPENAI_EXPERIMENTAL_TELEMETRY\", false);\n}\n\nexport function getEmbeddingDimensions(runtime: IAgentRuntime): number {\n return getNumericSetting(runtime, \"OPENAI_EMBEDDING_DIMENSIONS\", 1536);\n}\n\nexport function getImageDescriptionMaxTokens(runtime: IAgentRuntime): number {\n return getNumericSetting(runtime, \"OPENAI_IMAGE_DESCRIPTION_MAX_TOKENS\", 8192);\n}\n\nexport function getResearchModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_RESEARCH_MODEL\") ?? \"o3-deep-research\";\n}\n\nexport function getResearchTimeout(runtime: IAgentRuntime): number {\n return getNumericSetting(runtime, \"OPENAI_RESEARCH_TIMEOUT\", 3600000);\n}\n",
8
8
  "import type {\n TextToSpeechParams as CoreTextToSpeechParams,\n TranscriptionParams as CoreTranscriptionParams,\n IAgentRuntime,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport type {\n TextToSpeechParams as LocalTextToSpeechParams,\n TranscriptionParams as LocalTranscriptionParams,\n OpenAITranscriptionResponse,\n TTSOutputFormat,\n TTSVoice,\n} from \"../types\";\nimport { detectAudioMimeType, getFilenameForMimeType } from \"../utils/audio\";\nimport {\n getAuthHeader,\n getBaseURL,\n getTranscriptionModel,\n getTTSInstructions,\n getTTSModel,\n getTTSVoice,\n} from \"../utils/config\";\n\ntype AudioInput = Blob | File | Buffer;\ntype TranscriptionInput = AudioInput | LocalTranscriptionParams | CoreTranscriptionParams | string;\ntype TTSInput = string | LocalTextToSpeechParams | CoreTextToSpeechParams;\n\nfunction isBlobOrFile(value: unknown): value is Blob | File {\n return value instanceof Blob || value instanceof File;\n}\n\nfunction isBuffer(value: unknown): value is Buffer {\n return Buffer.isBuffer(value);\n}\n\nfunction isLocalTranscriptionParams(value: unknown): value is LocalTranscriptionParams {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"audio\" in value &&\n (isBlobOrFile((value as LocalTranscriptionParams).audio) ||\n isBuffer((value as LocalTranscriptionParams).audio))\n );\n}\n\nfunction isCoreTranscriptionParams(value: unknown): value is CoreTranscriptionParams {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"audioUrl\" in value &&\n typeof (value as CoreTranscriptionParams).audioUrl === \"string\"\n );\n}\n\nasync function fetchAudioFromUrl(url: string): Promise<Blob> {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch audio from URL: ${response.status}`);\n }\n return response.blob();\n}\nexport async function handleTranscription(\n runtime: IAgentRuntime,\n input: TranscriptionInput\n): Promise<string> {\n let modelName = getTranscriptionModel(runtime);\n let blob: Blob;\n let extraParams: Partial<LocalTranscriptionParams> = {};\n\n if (typeof input === \"string\") {\n logger.debug(`[OpenAI] Fetching audio from URL: ${input}`);\n blob = await fetchAudioFromUrl(input);\n } else if (isBlobOrFile(input)) {\n blob = input;\n } else if (isBuffer(input)) {\n const mimeType = detectAudioMimeType(input);\n logger.debug(`[OpenAI] Auto-detected audio MIME type: ${mimeType}`);\n blob = new Blob([new Uint8Array(input)], { type: mimeType });\n } else if (isLocalTranscriptionParams(input)) {\n extraParams = input;\n if (input.model) {\n modelName = input.model;\n }\n if (isBuffer(input.audio)) {\n const mimeType = input.mimeType ?? detectAudioMimeType(input.audio);\n logger.debug(`[OpenAI] Using MIME type: ${mimeType}`);\n blob = new Blob([new Uint8Array(input.audio)], { type: mimeType });\n } else {\n blob = input.audio;\n }\n } else if (isCoreTranscriptionParams(input)) {\n logger.debug(`[OpenAI] Fetching audio from URL: ${input.audioUrl}`);\n blob = await fetchAudioFromUrl(input.audioUrl);\n extraParams = { prompt: input.prompt };\n } else {\n throw new Error(\n \"TRANSCRIPTION expects Blob, File, Buffer, URL string, or TranscriptionParams object\"\n );\n }\n\n logger.debug(`[OpenAI] Using TRANSCRIPTION model: ${modelName}`);\n\n const mimeType = (blob as File).type || \"audio/webm\";\n const filename =\n (blob as File).name ||\n getFilenameForMimeType(\n mimeType.startsWith(\"audio/\")\n ? (mimeType as ReturnType<typeof detectAudioMimeType>)\n : \"audio/webm\"\n );\n\n const formData = new FormData();\n formData.append(\"file\", blob, filename);\n formData.append(\"model\", modelName);\n\n if (extraParams.language) {\n formData.append(\"language\", extraParams.language);\n }\n if (extraParams.responseFormat) {\n formData.append(\"response_format\", extraParams.responseFormat);\n }\n if (extraParams.prompt) {\n formData.append(\"prompt\", extraParams.prompt);\n }\n if (extraParams.temperature !== undefined) {\n formData.append(\"temperature\", String(extraParams.temperature));\n }\n if (extraParams.timestampGranularities) {\n for (const granularity of extraParams.timestampGranularities) {\n formData.append(\"timestamp_granularities[]\", granularity);\n }\n }\n\n const baseURL = getBaseURL(runtime);\n const response = await fetch(`${baseURL}/audio/transcriptions`, {\n method: \"POST\",\n headers: getAuthHeader(runtime),\n body: formData,\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI transcription failed: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAITranscriptionResponse;\n return data.text;\n}\n\nexport async function handleTextToSpeech(\n runtime: IAgentRuntime,\n input: TTSInput\n): Promise<ArrayBuffer> {\n let text: string;\n let voice: string | undefined;\n let format: TTSOutputFormat = \"mp3\";\n let model: string | undefined;\n let instructions: string | undefined;\n\n if (typeof input === \"string\") {\n text = input;\n voice = undefined;\n } else {\n text = input.text;\n voice = input.voice;\n if (\"format\" in input && input.format) {\n format = input.format;\n }\n if (\"model\" in input && input.model) {\n model = input.model;\n }\n if (\"instructions\" in input && input.instructions) {\n instructions = input.instructions;\n }\n }\n\n model = model ?? getTTSModel(runtime);\n voice = voice ?? getTTSVoice(runtime);\n instructions = instructions ?? getTTSInstructions(runtime);\n\n logger.debug(`[OpenAI] Using TEXT_TO_SPEECH model: ${model}`);\n\n if (!text || text.trim().length === 0) {\n throw new Error(\"TEXT_TO_SPEECH requires non-empty text\");\n }\n\n if (text.length > 4096) {\n throw new Error(\"TEXT_TO_SPEECH text exceeds 4096 character limit\");\n }\n\n const validVoices: TTSVoice[] = [\"alloy\", \"echo\", \"fable\", \"onyx\", \"nova\", \"shimmer\"];\n if (voice && !validVoices.includes(voice as TTSVoice)) {\n throw new Error(`Invalid voice: ${voice}. Must be one of: ${validVoices.join(\", \")}`);\n }\n\n const baseURL = getBaseURL(runtime);\n\n const requestBody: Record<string, string> = {\n model,\n voice: voice as TTSVoice,\n input: text,\n response_format: format,\n };\n\n if (instructions && instructions.length > 0) {\n requestBody.instructions = instructions;\n }\n\n const response = await fetch(`${baseURL}/audio/speech`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime),\n \"Content-Type\": \"application/json\",\n ...(format === \"mp3\" ? { Accept: \"audio/mpeg\" } : {}),\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(`OpenAI TTS failed: ${response.status} ${response.statusText} - ${errorText}`);\n }\n\n return response.arrayBuffer();\n}\n",
9
9
  "import { logger } from \"@elizaos/core\";\n\nconst MAGIC_BYTES = {\n WAV: {\n HEADER: [0x52, 0x49, 0x46, 0x46] as const, // \"RIFF\"\n IDENTIFIER: [0x57, 0x41, 0x56, 0x45] as const, // \"WAVE\"\n },\n MP3_ID3: [0x49, 0x44, 0x33] as const, // \"ID3\"\n OGG: [0x4f, 0x67, 0x67, 0x53] as const, // \"OggS\"\n FLAC: [0x66, 0x4c, 0x61, 0x43] as const, // \"fLaC\"\n FTYP: [0x66, 0x74, 0x79, 0x70] as const, // \"ftyp\" at offset 4 for mp4/m4a\n WEBM_EBML: [0x1a, 0x45, 0xdf, 0xa3] as const, // EBML header\n} as const;\n\nconst MIN_DETECTION_BUFFER_SIZE = 12;\n\nexport type AudioMimeType =\n | \"audio/wav\"\n | \"audio/mpeg\"\n | \"audio/ogg\"\n | \"audio/flac\"\n | \"audio/mp4\"\n | \"audio/webm\"\n | \"application/octet-stream\";\n\nfunction matchBytes(buffer: Buffer, offset: number, expected: readonly number[]): boolean {\n for (let i = 0; i < expected.length; i++) {\n const expectedByte = expected[i];\n if (expectedByte === undefined || buffer[offset + i] !== expectedByte) {\n return false;\n }\n }\n return true;\n}\n\nexport function detectAudioMimeType(buffer: Buffer): AudioMimeType {\n if (buffer.length < MIN_DETECTION_BUFFER_SIZE) {\n return \"application/octet-stream\";\n }\n\n // WAV: \"RIFF\" + size + \"WAVE\"\n if (\n matchBytes(buffer, 0, MAGIC_BYTES.WAV.HEADER) &&\n matchBytes(buffer, 8, MAGIC_BYTES.WAV.IDENTIFIER)\n ) {\n return \"audio/wav\";\n }\n\n // MP3: ID3 tag or MPEG frame sync\n const firstByte = buffer[0];\n const secondByte = buffer[1];\n if (\n matchBytes(buffer, 0, MAGIC_BYTES.MP3_ID3) ||\n (firstByte === 0xff && secondByte !== undefined && (secondByte & 0xe0) === 0xe0)\n ) {\n return \"audio/mpeg\";\n }\n\n // OGG: \"OggS\"\n if (matchBytes(buffer, 0, MAGIC_BYTES.OGG)) {\n return \"audio/ogg\";\n }\n\n // FLAC: \"fLaC\"\n if (matchBytes(buffer, 0, MAGIC_BYTES.FLAC)) {\n return \"audio/flac\";\n }\n\n // M4A/MP4: \"ftyp\" at offset 4\n if (matchBytes(buffer, 4, MAGIC_BYTES.FTYP)) {\n return \"audio/mp4\";\n }\n\n // WebM: EBML header\n if (matchBytes(buffer, 0, MAGIC_BYTES.WEBM_EBML)) {\n return \"audio/webm\";\n }\n\n logger.warn(\"Could not detect audio format from buffer, using generic binary type\");\n return \"application/octet-stream\";\n}\n\nexport function getExtensionForMimeType(mimeType: AudioMimeType): string {\n switch (mimeType) {\n case \"audio/wav\":\n return \"wav\";\n case \"audio/mpeg\":\n return \"mp3\";\n case \"audio/ogg\":\n return \"ogg\";\n case \"audio/flac\":\n return \"flac\";\n case \"audio/mp4\":\n return \"m4a\";\n case \"audio/webm\":\n return \"webm\";\n case \"application/octet-stream\":\n return \"bin\";\n }\n}\n\nexport function getFilenameForMimeType(mimeType: AudioMimeType): string {\n const ext = getExtensionForMimeType(mimeType);\n return `recording.${ext}`;\n}\n\nexport function validateAudioFormat(buffer: Buffer): AudioMimeType {\n const mimeType = detectAudioMimeType(buffer);\n if (mimeType === \"application/octet-stream\") {\n throw new Error(\n \"Unable to detect audio format. Supported formats: WAV, MP3, OGG, FLAC, M4A, WebM\"\n );\n }\n return mimeType;\n}\n",
10
- "import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { logger, ModelType, VECTOR_DIMS } from \"@elizaos/core\";\n\n// Safe default that matches @elizaos/core's MAX_EMBEDDING_TOKENS (8 000).\n// Defined locally so the plugin doesn't break against core versions older\n// than 2.0.0-alpha.4 where the symbol wasn't exported yet.\nconst MAX_EMBEDDING_TOKENS = 8_000;\nimport type { OpenAIEmbeddingResponse } from \"../types\";\nimport {\n getAuthHeader,\n getEmbeddingBaseURL,\n getEmbeddingDimensions,\n getEmbeddingModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\ntype VectorDimension = (typeof VECTOR_DIMS)[keyof typeof VECTOR_DIMS];\n\nfunction validateDimension(dimension: number): VectorDimension {\n const validDimensions = Object.values(VECTOR_DIMS) as number[];\n if (!validDimensions.includes(dimension)) {\n throw new Error(\n `Invalid embedding dimension: ${dimension}. Must be one of: ${validDimensions.join(\", \")}`\n );\n }\n return dimension as VectorDimension;\n}\n\nfunction extractText(params: TextEmbeddingParams | string | null): string | null {\n if (params === null) {\n return null;\n }\n if (typeof params === \"string\") {\n return params;\n }\n if (typeof params === \"object\" && typeof params.text === \"string\") {\n return params.text;\n }\n throw new Error(\"Invalid embedding params: expected string, { text: string }, or null\");\n}\n\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n const embeddingModel = getEmbeddingModel(runtime);\n const embeddingDimension = validateDimension(getEmbeddingDimensions(runtime));\n\n const text = extractText(params);\n if (text === null) {\n logger.debug(\"[OpenAI] Creating test embedding for initialization\");\n const testVector = new Array(embeddingDimension).fill(0);\n testVector[0] = 0.1;\n return testVector;\n }\n\n let trimmedText = text.trim();\n if (trimmedText.length === 0) {\n throw new Error(\"Cannot generate embedding for empty text\");\n }\n\n // Truncate to stay within embedding model token limits.\n // OpenAI embedding models support up to 8191 tokens per input;\n // MAX_EMBEDDING_TOKENS (8 000) provides a safe buffer.\n const maxChars = MAX_EMBEDDING_TOKENS * 4; // ~4 chars per token\n if (trimmedText.length > maxChars) {\n logger.warn(\n `[OpenAI] Embedding input too long (~${Math.ceil(trimmedText.length / 4)} tokens), truncating to ~${MAX_EMBEDDING_TOKENS} tokens`\n );\n trimmedText = trimmedText.slice(0, maxChars);\n }\n\n const baseURL = getEmbeddingBaseURL(runtime);\n const url = `${baseURL}/embeddings`;\n\n logger.debug(`[OpenAI] Generating embedding with model: ${embeddingModel}`);\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime, true),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n model: embeddingModel,\n input: trimmedText,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI embedding API error: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAIEmbeddingResponse;\n\n const firstResult = data?.data?.[0];\n if (!firstResult || !firstResult.embedding) {\n throw new Error(\"OpenAI API returned invalid embedding response structure\");\n }\n\n const embedding = firstResult.embedding;\n\n if (embedding.length !== embeddingDimension) {\n throw new Error(\n `Embedding dimension mismatch: got ${embedding.length}, expected ${embeddingDimension}. ` +\n `Check OPENAI_EMBEDDING_DIMENSIONS setting.`\n );\n }\n\n if (data.usage) {\n emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, trimmedText, {\n promptTokens: data.usage.prompt_tokens,\n completionTokens: 0,\n totalTokens: data.usage.total_tokens,\n });\n }\n\n logger.debug(`[OpenAI] Generated embedding with ${embedding.length} dimensions`);\n return embedding;\n}\n",
11
- "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { EventType } from \"@elizaos/core\";\nimport type { TokenUsage } from \"../types\";\n\nconst MAX_PROMPT_LENGTH = 200;\n\ninterface ModelUsageEventPayload {\n runtime: IAgentRuntime;\n source: \"openai\";\n provider: \"openai\";\n type: ModelTypeName;\n prompt: string;\n tokens: {\n prompt: number;\n completion: number;\n total: number;\n cached?: number;\n };\n}\n\ninterface AISDKUsage {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n}\n\ninterface OpenAIAPIUsage {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n cachedPromptTokens?: number;\n promptTokensDetails?: {\n cachedTokens?: number;\n };\n}\n\ntype ModelUsage = TokenUsage | AISDKUsage | OpenAIAPIUsage;\n\nfunction truncatePrompt(prompt: string): string {\n if (prompt.length <= MAX_PROMPT_LENGTH) {\n return prompt;\n }\n return `${prompt.slice(0, MAX_PROMPT_LENGTH)}…`;\n}\n\nfunction normalizeUsage(usage: ModelUsage): TokenUsage {\n if (\"promptTokens\" in usage) {\n const promptTokensDetails =\n \"promptTokensDetails\" in usage ? usage.promptTokensDetails : undefined;\n const cachedPromptTokens =\n usage.cachedPromptTokens ?? promptTokensDetails?.cachedTokens;\n return {\n promptTokens: usage.promptTokens ?? 0,\n completionTokens: usage.completionTokens ?? 0,\n totalTokens: usage.totalTokens ?? (usage.promptTokens ?? 0) + (usage.completionTokens ?? 0),\n cachedPromptTokens,\n };\n }\n if (\"inputTokens\" in usage || \"outputTokens\" in usage) {\n const input = (usage as AISDKUsage).inputTokens ?? 0;\n const output = (usage as AISDKUsage).outputTokens ?? 0;\n const total = (usage as AISDKUsage).totalTokens ?? input + output;\n return {\n promptTokens: input,\n completionTokens: output,\n totalTokens: total,\n cachedPromptTokens: (usage as AISDKUsage).cachedInputTokens,\n };\n }\n return {\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n };\n}\n\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n prompt: string,\n usage: ModelUsage\n): void {\n const normalized = normalizeUsage(usage);\n\n const payload: ModelUsageEventPayload = {\n runtime,\n source: \"openai\",\n provider: \"openai\",\n type,\n prompt: truncatePrompt(prompt),\n tokens: {\n prompt: normalized.promptTokens,\n completion: normalized.completionTokens,\n total: normalized.totalTokens,\n ...(normalized.cachedPromptTokens !== undefined\n ? { cached: normalized.cachedPromptTokens }\n : {}),\n },\n };\n\n runtime.emitEvent(EventType.MODEL_USED, payload);\n}\n",
10
+ "import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { logger, ModelType, VECTOR_DIMS } from \"@elizaos/core\";\n\n// Safe default that matches @elizaos/core's MAX_EMBEDDING_TOKENS (8 000).\n// Defined locally so the plugin doesn't break against core versions older\n// than 2.0.0-alpha.4 where the symbol wasn't exported yet.\nconst MAX_EMBEDDING_TOKENS = 8_000;\n\nimport type { OpenAIEmbeddingResponse } from \"../types\";\nimport {\n getAuthHeader,\n getEmbeddingBaseURL,\n getEmbeddingDimensions,\n getEmbeddingModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\ntype VectorDimension = (typeof VECTOR_DIMS)[keyof typeof VECTOR_DIMS];\n\nfunction validateDimension(dimension: number): VectorDimension {\n const validDimensions = Object.values(VECTOR_DIMS) as number[];\n if (!validDimensions.includes(dimension)) {\n throw new Error(\n `Invalid embedding dimension: ${dimension}. Must be one of: ${validDimensions.join(\", \")}`\n );\n }\n return dimension as VectorDimension;\n}\n\nfunction extractText(params: TextEmbeddingParams | string | null): string | null {\n if (params === null) {\n return null;\n }\n if (typeof params === \"string\") {\n return params;\n }\n if (typeof params === \"object\" && typeof params.text === \"string\") {\n return params.text;\n }\n throw new Error(\"Invalid embedding params: expected string, { text: string }, or null\");\n}\n\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n const embeddingModel = getEmbeddingModel(runtime);\n const embeddingDimension = validateDimension(getEmbeddingDimensions(runtime));\n\n const text = extractText(params);\n if (text === null) {\n logger.debug(\"[OpenAI] Creating test embedding for initialization\");\n const testVector = new Array(embeddingDimension).fill(0);\n testVector[0] = 0.1;\n return testVector;\n }\n\n let trimmedText = text.trim();\n if (trimmedText.length === 0) {\n throw new Error(\"Cannot generate embedding for empty text\");\n }\n\n // Truncate to stay within embedding model token limits.\n // OpenAI embedding models support up to 8191 tokens per input;\n // MAX_EMBEDDING_TOKENS (8 000) provides a safe buffer.\n const maxChars = MAX_EMBEDDING_TOKENS * 4; // ~4 chars per token\n if (trimmedText.length > maxChars) {\n logger.warn(\n `[OpenAI] Embedding input too long (~${Math.ceil(trimmedText.length / 4)} tokens), truncating to ~${MAX_EMBEDDING_TOKENS} tokens`\n );\n trimmedText = trimmedText.slice(0, maxChars);\n }\n\n const baseURL = getEmbeddingBaseURL(runtime);\n const url = `${baseURL}/embeddings`;\n\n logger.debug(`[OpenAI] Generating embedding with model: ${embeddingModel}`);\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime, true),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n model: embeddingModel,\n input: trimmedText,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI embedding API error: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAIEmbeddingResponse;\n\n const firstResult = data?.data?.[0];\n if (!firstResult || !firstResult.embedding) {\n throw new Error(\"OpenAI API returned invalid embedding response structure\");\n }\n\n const embedding = firstResult.embedding;\n\n if (embedding.length !== embeddingDimension) {\n throw new Error(\n `Embedding dimension mismatch: got ${embedding.length}, expected ${embeddingDimension}. ` +\n `Check OPENAI_EMBEDDING_DIMENSIONS setting.`\n );\n }\n\n if (data.usage) {\n emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, trimmedText, {\n promptTokens: data.usage.prompt_tokens,\n completionTokens: 0,\n totalTokens: data.usage.total_tokens,\n });\n }\n\n logger.debug(`[OpenAI] Generated embedding with ${embedding.length} dimensions`);\n return embedding;\n}\n",
11
+ "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { EventType } from \"@elizaos/core\";\nimport type { TokenUsage } from \"../types\";\n\nconst MAX_PROMPT_LENGTH = 200;\n\ninterface ModelUsageEventPayload {\n runtime: IAgentRuntime;\n source: \"openai\";\n provider: \"openai\";\n type: ModelTypeName;\n prompt: string;\n tokens: {\n prompt: number;\n completion: number;\n total: number;\n cached?: number;\n };\n}\n\ninterface AISDKUsage {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n}\n\ninterface OpenAIAPIUsage {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n cachedPromptTokens?: number;\n promptTokensDetails?: {\n cachedTokens?: number;\n };\n}\n\ntype ModelUsage = TokenUsage | AISDKUsage | OpenAIAPIUsage;\n\nfunction truncatePrompt(prompt: string): string {\n if (prompt.length <= MAX_PROMPT_LENGTH) {\n return prompt;\n }\n return `${prompt.slice(0, MAX_PROMPT_LENGTH)}…`;\n}\n\nfunction normalizeUsage(usage: ModelUsage): TokenUsage {\n if (\"promptTokens\" in usage) {\n const promptTokensDetails =\n \"promptTokensDetails\" in usage ? usage.promptTokensDetails : undefined;\n const cachedPromptTokens = usage.cachedPromptTokens ?? promptTokensDetails?.cachedTokens;\n return {\n promptTokens: usage.promptTokens ?? 0,\n completionTokens: usage.completionTokens ?? 0,\n totalTokens: usage.totalTokens ?? (usage.promptTokens ?? 0) + (usage.completionTokens ?? 0),\n cachedPromptTokens,\n };\n }\n if (\"inputTokens\" in usage || \"outputTokens\" in usage) {\n const input = (usage as AISDKUsage).inputTokens ?? 0;\n const output = (usage as AISDKUsage).outputTokens ?? 0;\n const total = (usage as AISDKUsage).totalTokens ?? input + output;\n return {\n promptTokens: input,\n completionTokens: output,\n totalTokens: total,\n cachedPromptTokens: (usage as AISDKUsage).cachedInputTokens,\n };\n }\n return {\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n };\n}\n\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n prompt: string,\n usage: ModelUsage\n): void {\n const normalized = normalizeUsage(usage);\n\n const payload: ModelUsageEventPayload = {\n runtime,\n source: \"openai\",\n provider: \"openai\",\n type,\n prompt: truncatePrompt(prompt),\n tokens: {\n prompt: normalized.promptTokens,\n completion: normalized.completionTokens,\n total: normalized.totalTokens,\n ...(normalized.cachedPromptTokens !== undefined\n ? { cached: normalized.cachedPromptTokens }\n : {}),\n },\n };\n\n runtime.emitEvent(EventType.MODEL_USED, payload);\n}\n",
12
12
  "import type { IAgentRuntime, ImageDescriptionParams, ImageGenerationParams } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport type {\n ImageDescriptionResult,\n ImageGenerationResult,\n ImageQuality,\n ImageSize,\n ImageStyle,\n OpenAIChatCompletionResponse,\n OpenAIImageGenerationResponse,\n} from \"../types\";\nimport {\n getAuthHeader,\n getBaseURL,\n getImageDescriptionMaxTokens,\n getImageDescriptionModel,\n getImageModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\ninterface ExtendedImageGenerationParams extends ImageGenerationParams {\n quality?: ImageQuality;\n style?: ImageStyle;\n}\n\nconst DEFAULT_IMAGE_DESCRIPTION_PROMPT =\n \"Please analyze this image and provide a title and detailed description.\";\n\nexport async function handleImageGeneration(\n runtime: IAgentRuntime,\n params: ImageGenerationParams\n): Promise<ImageGenerationResult[]> {\n const modelName = getImageModel(runtime);\n const count = params.count ?? 1;\n const size: ImageSize = (params.size as ImageSize) ?? \"1024x1024\";\n const extendedParams = params as ExtendedImageGenerationParams;\n\n logger.debug(`[OpenAI] Using IMAGE model: ${modelName}`);\n\n if (!params.prompt || params.prompt.trim().length === 0) {\n throw new Error(\"IMAGE generation requires a non-empty prompt\");\n }\n\n if (count < 1 || count > 10) {\n throw new Error(\"IMAGE count must be between 1 and 10\");\n }\n\n const baseURL = getBaseURL(runtime);\n\n const requestBody: Record<string, string | number> = {\n model: modelName,\n prompt: params.prompt,\n n: count,\n size,\n };\n\n if (extendedParams.quality) {\n requestBody.quality = extendedParams.quality;\n }\n if (extendedParams.style) {\n requestBody.style = extendedParams.style;\n }\n\n const response = await fetch(`${baseURL}/images/generations`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI image generation failed: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAIImageGenerationResponse;\n\n if (!data.data || data.data.length === 0) {\n throw new Error(\"OpenAI API returned no images\");\n }\n\n return data.data.map((item) => ({\n url: item.url,\n revisedPrompt: item.revised_prompt,\n }));\n}\n\nfunction parseTitleFromResponse(content: string): string {\n const titleMatch = content.match(/title[:\\s]+(.+?)(?:\\n|$)/i);\n return titleMatch?.[1]?.trim() ?? \"Image Analysis\";\n}\n\nfunction parseDescriptionFromResponse(content: string): string {\n return content.replace(/title[:\\s]+(.+?)(?:\\n|$)/i, \"\").trim();\n}\n\nexport async function handleImageDescription(\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string\n): Promise<ImageDescriptionResult> {\n const modelName = getImageDescriptionModel(runtime);\n const maxTokens = getImageDescriptionMaxTokens(runtime);\n\n logger.debug(`[OpenAI] Using IMAGE_DESCRIPTION model: ${modelName}`);\n\n let imageUrl: string;\n let promptText: string;\n\n if (typeof params === \"string\") {\n imageUrl = params;\n promptText = DEFAULT_IMAGE_DESCRIPTION_PROMPT;\n } else {\n imageUrl = params.imageUrl;\n promptText = params.prompt ?? DEFAULT_IMAGE_DESCRIPTION_PROMPT;\n }\n\n if (!imageUrl || imageUrl.trim().length === 0) {\n throw new Error(\"IMAGE_DESCRIPTION requires a valid image URL\");\n }\n\n const baseURL = getBaseURL(runtime);\n\n const requestBody = {\n model: modelName,\n messages: [\n {\n role: \"user\",\n content: [\n { type: \"text\", text: promptText },\n { type: \"image_url\", image_url: { url: imageUrl } },\n ],\n },\n ],\n max_tokens: maxTokens,\n };\n\n const response = await fetch(`${baseURL}/chat/completions`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI image description failed: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAIChatCompletionResponse;\n\n if (data.usage) {\n emitModelUsageEvent(\n runtime,\n ModelType.IMAGE_DESCRIPTION,\n typeof params === \"string\" ? params : (params.prompt ?? \"\"),\n {\n promptTokens: data.usage.prompt_tokens,\n completionTokens: data.usage.completion_tokens,\n totalTokens: data.usage.total_tokens,\n }\n );\n }\n\n const firstChoice = data.choices?.[0];\n const content = firstChoice?.message?.content;\n\n if (!content) {\n throw new Error(\"OpenAI API returned empty image description\");\n }\n\n return {\n title: parseTitleFromResponse(content),\n description: parseDescriptionFromResponse(content),\n };\n}\n",
13
13
  "import type {\n IAgentRuntime,\n JsonValue,\n ModelTypeName,\n ObjectGenerationParams,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateObject, type LanguageModel } from \"ai\";\nimport { createOpenAIClient } from \"../providers\";\nimport { getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\nimport { getJsonRepairFunction } from \"../utils/json\";\n\ntype ModelNameGetter = (runtime: IAgentRuntime) => string;\ntype ChatModelFactory = { chat: (modelName: string) => LanguageModel };\n\nasync function generateObjectByModelType(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams,\n modelType: ModelTypeName,\n getModelFn: ModelNameGetter\n): Promise<Record<string, JsonValue>> {\n const openai = createOpenAIClient(runtime) as ChatModelFactory;\n const modelName = getModelFn(runtime);\n\n logger.debug(`[OpenAI] Using ${modelType} model: ${modelName}`);\n\n if (!params.prompt || params.prompt.trim().length === 0) {\n throw new Error(\"Object generation requires a non-empty prompt\");\n }\n\n if (params.schema) {\n logger.debug(\n \"[OpenAI] Schema provided but using no-schema mode. \" +\n \"Structure is determined by prompt instructions.\"\n );\n }\n\n const model = openai.chat(modelName);\n const { object, usage } = await generateObject({\n model,\n output: \"no-schema\",\n prompt: params.prompt,\n experimental_repairText: getJsonRepairFunction(),\n });\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, params.prompt, usage);\n }\n\n if (typeof object !== \"object\" || object === null) {\n throw new Error(`Object generation returned ${typeof object}, expected object`);\n }\n\n return object as Record<string, JsonValue>;\n}\n\nexport async function handleObjectSmall(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n return generateObjectByModelType(runtime, params, ModelType.OBJECT_SMALL, getSmallModel);\n}\n\nexport async function handleObjectLarge(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n return generateObjectByModelType(runtime, params, ModelType.OBJECT_LARGE, getLargeModel);\n}\n",
14
14
  "import { createOpenAI, type OpenAIProvider } from \"@ai-sdk/openai\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport { getApiKey, getBaseURL, isProxyMode } from \"../utils/config\";\n\nconst PROXY_API_KEY = \"sk-proxy\";\n\nexport function createOpenAIClient(runtime: IAgentRuntime): OpenAIProvider {\n const baseURL = getBaseURL(runtime);\n const apiKey = getApiKey(runtime);\n\n if (!apiKey && isProxyMode(runtime)) {\n return createOpenAI({\n apiKey: PROXY_API_KEY,\n baseURL,\n });\n }\n\n if (!apiKey) {\n throw new Error(\n \"OPENAI_API_KEY is required. Set it in your environment variables or runtime settings.\"\n );\n }\n\n return createOpenAI({\n apiKey,\n baseURL,\n });\n}\n",
15
15
  "import { logger } from \"@elizaos/core\";\nimport { JSONParseError } from \"ai\";\n\ninterface JsonRepairParams {\n text: string;\n error: Error;\n}\n\ntype JsonRepairFunction = (params: JsonRepairParams) => Promise<string | null>;\n\nconst JSON_CLEANUP_PATTERNS = {\n MARKDOWN_JSON: /```json\\n|\\n```|```/g,\n WHITESPACE: /^\\s+|\\s+$/g,\n} as const;\n\nexport function getJsonRepairFunction(): JsonRepairFunction {\n return async ({ text, error }: JsonRepairParams): Promise<string | null> => {\n if (!(error instanceof JSONParseError)) {\n return null;\n }\n try {\n const cleanedText = text.replace(JSON_CLEANUP_PATTERNS.MARKDOWN_JSON, \"\");\n JSON.parse(cleanedText);\n logger.debug(\"[JSON Repair] Successfully repaired JSON by removing markdown wrappers\");\n return cleanedText;\n } catch {\n logger.warn(\"[JSON Repair] Unable to repair JSON text\");\n return null;\n }\n };\n}\n\nexport function parseJsonWithRepair<T>(text: string): T {\n try {\n return JSON.parse(text) as T;\n } catch (firstError) {\n const cleanedText = text.replace(JSON_CLEANUP_PATTERNS.MARKDOWN_JSON, \"\");\n try {\n return JSON.parse(cleanedText) as T;\n } catch {\n const message = firstError instanceof Error ? firstError.message : String(firstError);\n throw new Error(`Failed to parse JSON: ${message}`);\n }\n }\n}\n\nexport function safeStringify(value: unknown, indent = 0): string {\n const seen = new WeakSet();\n\n const replacer = (_key: string, val: unknown): unknown => {\n if (typeof val === \"object\" && val !== null) {\n if (seen.has(val)) {\n return \"[Circular]\";\n }\n seen.add(val);\n }\n\n // Handle special types\n if (typeof val === \"bigint\") {\n return val.toString();\n }\n\n if (val instanceof Error) {\n return {\n name: val.name,\n message: val.message,\n stack: val.stack,\n };\n }\n\n if (val instanceof Date) {\n return val.toISOString();\n }\n\n if (val instanceof Map) {\n return Object.fromEntries(val);\n }\n\n if (val instanceof Set) {\n return Array.from(val);\n }\n\n return val;\n };\n\n return JSON.stringify(value, replacer, indent);\n}\n",
16
16
  "/**\n * Deep Research model handler\n *\n * Provides deep research capabilities using OpenAI's o3-deep-research and o4-mini-deep-research models.\n * These models can find, analyze, and synthesize hundreds of sources to create comprehensive reports.\n *\n * @see https://platform.openai.com/docs/guides/deep-research\n */\n\nimport type {\n IAgentRuntime,\n JsonValue,\n ResearchAnnotation,\n ResearchCodeInterpreterCall,\n ResearchFileSearchCall,\n ResearchMcpToolCall,\n ResearchMessageOutput,\n ResearchOutputItem,\n ResearchParams,\n ResearchResult,\n ResearchTool,\n ResearchWebSearchCall,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport { getApiKey, getBaseURL, getResearchModel, getResearchTimeout } from \"../utils/config\";\n\n// ============================================================================\n// Types for OpenAI Responses API\n// ============================================================================\n\n/**\n * Tool configuration for the Responses API\n */\ninterface ResponsesApiTool {\n type: \"web_search_preview\" | \"file_search\" | \"code_interpreter\" | \"mcp\";\n vector_store_ids?: string[];\n container?: { type: \"auto\" };\n server_label?: string;\n server_url?: string;\n require_approval?: \"never\";\n}\n\n/**\n * Raw response from the OpenAI Responses API\n */\ninterface ResponsesApiResponse {\n id: string;\n object: string;\n status?: \"queued\" | \"in_progress\" | \"completed\" | \"failed\";\n output?: ResponsesApiOutputItem[];\n output_text?: string;\n error?: {\n message: string;\n code: string;\n };\n}\n\n/**\n * Raw output item from the Responses API\n */\ninterface ResponsesApiOutputItem {\n id?: string;\n type: string;\n status?: string;\n action?: {\n type: string;\n query?: string;\n url?: string;\n };\n query?: string;\n results?: Array<{\n file_id: string;\n file_name: string;\n score: number;\n }>;\n code?: string;\n output?: string;\n server_label?: string;\n tool_name?: string;\n arguments?: Record<string, unknown>;\n result?: unknown;\n content?: Array<{\n type: string;\n text: string;\n annotations?: Array<{\n url: string;\n title: string;\n start_index: number;\n end_index: number;\n }>;\n }>;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Converts ResearchTool params to Responses API tool format\n */\nfunction convertToolToApi(tool: ResearchTool): ResponsesApiTool {\n switch (tool.type) {\n case \"web_search_preview\":\n return { type: \"web_search_preview\" };\n case \"file_search\":\n return {\n type: \"file_search\",\n vector_store_ids: tool.vectorStoreIds,\n };\n case \"code_interpreter\":\n return {\n type: \"code_interpreter\",\n container: tool.container ?? { type: \"auto\" },\n };\n case \"mcp\":\n return {\n type: \"mcp\",\n server_label: tool.serverLabel,\n server_url: tool.serverUrl,\n require_approval: tool.requireApproval ?? \"never\",\n };\n default:\n throw new Error(`Unknown research tool type: ${(tool as ResearchTool).type}`);\n }\n}\n\n/**\n * Converts raw API output items to typed ResearchOutputItem\n */\nfunction convertOutputItem(item: ResponsesApiOutputItem): ResearchOutputItem | null {\n switch (item.type) {\n case \"web_search_call\":\n return {\n id: item.id ?? \"\",\n type: \"web_search_call\",\n status: (item.status as \"completed\" | \"failed\") ?? \"completed\",\n action: {\n type: (item.action?.type as \"search\" | \"open_page\" | \"find_in_page\") ?? \"search\",\n query: item.action?.query,\n url: item.action?.url,\n },\n } satisfies ResearchWebSearchCall;\n\n case \"file_search_call\":\n return {\n id: item.id ?? \"\",\n type: \"file_search_call\",\n status: (item.status as \"completed\" | \"failed\") ?? \"completed\",\n query: item.query ?? \"\",\n results: item.results?.map((r) => ({\n fileId: r.file_id,\n fileName: r.file_name,\n score: r.score,\n })),\n } satisfies ResearchFileSearchCall;\n\n case \"code_interpreter_call\":\n return {\n id: item.id ?? \"\",\n type: \"code_interpreter_call\",\n status: (item.status as \"completed\" | \"failed\") ?? \"completed\",\n code: item.code ?? \"\",\n output: item.output,\n } satisfies ResearchCodeInterpreterCall;\n\n case \"mcp_tool_call\":\n return {\n id: item.id ?? \"\",\n type: \"mcp_tool_call\",\n status: (item.status as \"completed\" | \"failed\") ?? \"completed\",\n serverLabel: item.server_label ?? \"\",\n toolName: item.tool_name ?? \"\",\n arguments: (item.arguments ?? {}) as Record<string, JsonValue>,\n result: item.result as JsonValue,\n } satisfies ResearchMcpToolCall;\n\n case \"message\":\n return {\n type: \"message\",\n content:\n item.content?.map((c) => ({\n type: \"output_text\" as const,\n text: c.text,\n annotations:\n c.annotations?.map((a) => ({\n url: a.url,\n title: a.title,\n startIndex: a.start_index,\n endIndex: a.end_index,\n })) ?? [],\n })) ?? [],\n } satisfies ResearchMessageOutput;\n\n default:\n // Unknown output type, skip\n return null;\n }\n}\n\n/**\n * Extracts text and annotations from the response\n */\nfunction extractTextAndAnnotations(response: ResponsesApiResponse): {\n text: string;\n annotations: ResearchAnnotation[];\n} {\n // Try output_text first (convenience field)\n if (response.output_text) {\n // Find annotations from message output items\n const annotations: ResearchAnnotation[] = [];\n if (response.output) {\n for (const item of response.output) {\n if (item.type === \"message\" && item.content) {\n for (const content of item.content) {\n if (content.annotations) {\n for (const ann of content.annotations) {\n annotations.push({\n url: ann.url,\n title: ann.title,\n startIndex: ann.start_index,\n endIndex: ann.end_index,\n });\n }\n }\n }\n }\n }\n }\n return { text: response.output_text, annotations };\n }\n\n // Fall back to extracting from message output items\n let text = \"\";\n const annotations: ResearchAnnotation[] = [];\n\n if (response.output) {\n for (const item of response.output) {\n if (item.type === \"message\" && item.content) {\n for (const content of item.content) {\n text += content.text;\n if (content.annotations) {\n for (const ann of content.annotations) {\n annotations.push({\n url: ann.url,\n title: ann.title,\n startIndex: ann.start_index,\n endIndex: ann.end_index,\n });\n }\n }\n }\n }\n }\n }\n\n return { text, annotations };\n}\n\n// ============================================================================\n// Main Handler\n// ============================================================================\n\n/**\n * Handles RESEARCH model requests using OpenAI's deep research models.\n *\n * Deep research models can take tens of minutes to complete tasks.\n * Use background mode for long-running tasks.\n *\n * @param runtime - The agent runtime\n * @param params - Research parameters\n * @returns Research result with text, annotations, and output items\n *\n * @example\n * ```typescript\n * const result = await handleResearch(runtime, {\n * input: \"Research the economic impact of AI on global labor markets\",\n * tools: [\n * { type: \"web_search_preview\" },\n * { type: \"code_interpreter\", container: { type: \"auto\" } }\n * ],\n * background: true,\n * });\n * console.log(result.text);\n * ```\n */\nexport async function handleResearch(\n runtime: IAgentRuntime,\n params: ResearchParams\n): Promise<ResearchResult> {\n const apiKey = getApiKey(runtime);\n if (!apiKey) {\n throw new Error(\n \"OPENAI_API_KEY is required for deep research. Set it in your environment variables or runtime settings.\"\n );\n }\n\n const baseURL = getBaseURL(runtime);\n const modelName = params.model ?? getResearchModel(runtime);\n const timeout = getResearchTimeout(runtime);\n\n logger.debug(`[OpenAI] Starting deep research with model: ${modelName}`);\n logger.debug(`[OpenAI] Research input: ${params.input.substring(0, 100)}...`);\n\n // Validate that at least one data source tool is provided\n const dataSourceTools = params.tools?.filter(\n (t) => t.type === \"web_search_preview\" || t.type === \"file_search\" || t.type === \"mcp\"\n );\n\n if (!dataSourceTools || dataSourceTools.length === 0) {\n // Default to web search if no tools specified\n logger.debug(\"[OpenAI] No data source tools specified, defaulting to web_search_preview\");\n params.tools = [{ type: \"web_search_preview\" }, ...(params.tools ?? [])];\n }\n\n // Build the request body for the Responses API\n const requestBody: Record<string, unknown> = {\n model: modelName,\n input: params.input,\n };\n\n if (params.instructions) {\n requestBody.instructions = params.instructions;\n }\n\n if (params.background !== undefined) {\n requestBody.background = params.background;\n }\n\n if (params.tools && params.tools.length > 0) {\n requestBody.tools = params.tools.map(convertToolToApi);\n }\n\n if (params.maxToolCalls !== undefined) {\n requestBody.max_tool_calls = params.maxToolCalls;\n }\n\n if (params.reasoningSummary) {\n requestBody.reasoning = { summary: params.reasoningSummary };\n }\n\n logger.debug(`[OpenAI] Research request body: ${JSON.stringify(requestBody, null, 2)}`);\n\n // Make the API request\n const response = await fetch(`${baseURL}/responses`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(requestBody),\n signal: AbortSignal.timeout(timeout),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n logger.error(`[OpenAI] Research request failed: ${response.status} ${errorText}`);\n throw new Error(`Deep research request failed: ${response.status} ${response.statusText}`);\n }\n\n const data = (await response.json()) as ResponsesApiResponse;\n\n if (data.error) {\n logger.error(`[OpenAI] Research API error: ${data.error.message}`);\n throw new Error(`Deep research error: ${data.error.message}`);\n }\n\n logger.debug(`[OpenAI] Research response received. Status: ${data.status ?? \"completed\"}`);\n\n // Extract text and annotations\n const { text, annotations } = extractTextAndAnnotations(data);\n\n // Convert output items\n const outputItems: ResearchOutputItem[] = [];\n if (data.output) {\n for (const item of data.output) {\n const converted = convertOutputItem(item);\n if (converted) {\n outputItems.push(converted);\n }\n }\n }\n\n const result: ResearchResult = {\n id: data.id,\n text,\n annotations,\n outputItems,\n status: data.status,\n };\n\n logger.info(\n `[OpenAI] Research completed. Text length: ${text.length}, Annotations: ${annotations.length}, Output items: ${outputItems.length}`\n );\n\n return result;\n}\n",
17
- "/**\n * Text generation model handlers\n *\n * Provides text generation using OpenAI's language models.\n */\n\nimport type { GenerateTextParams, IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText, type LanguageModelUsage, streamText } from \"ai\";\nimport { createOpenAIClient } from \"../providers\";\nimport type { TextStreamResult, TokenUsage } from \"../types\";\nimport { getExperimentalTelemetry, getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Function to get model name from runtime\n */\ntype ModelNameGetter = (runtime: IAgentRuntime) => string;\n\ntype PromptCacheRetention = \"in_memory\" | \"24h\";\n\ninterface OpenAIPromptCacheOptions {\n promptCacheKey?: string;\n promptCacheRetention?: PromptCacheRetention;\n}\n\ninterface GenerateTextParamsWithOpenAIOptions extends GenerateTextParams {\n providerOptions?: {\n openai?: OpenAIPromptCacheOptions;\n };\n}\n\ninterface LanguageModelUsageWithCache extends LanguageModelUsage {\n cachedInputTokens?: number;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Converts AI SDK usage to our token usage format\n */\nfunction convertUsage(usage: LanguageModelUsage | undefined): TokenUsage | undefined {\n if (!usage) {\n return undefined;\n }\n\n // The AI SDK uses inputTokens/outputTokens\n const promptTokens = usage.inputTokens ?? 0;\n const completionTokens = usage.outputTokens ?? 0;\n const usageWithCache = usage as LanguageModelUsageWithCache;\n\n return {\n promptTokens,\n completionTokens,\n totalTokens: promptTokens + completionTokens,\n cachedPromptTokens: usageWithCache.cachedInputTokens,\n };\n}\n\nfunction resolvePromptCacheOptions(params: GenerateTextParams): OpenAIPromptCacheOptions {\n const withOpenAIOptions = params as GenerateTextParamsWithOpenAIOptions;\n return {\n promptCacheKey: withOpenAIOptions.providerOptions?.openai?.promptCacheKey,\n promptCacheRetention:\n withOpenAIOptions.providerOptions?.openai?.promptCacheRetention,\n };\n}\n\n// ============================================================================\n// Core Generation Function\n// ============================================================================\n\n/**\n * Generates text using the specified model type.\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @param modelType - The type of model (TEXT_SMALL or TEXT_LARGE)\n * @param getModelFn - Function to get the model name\n * @returns Generated text or stream result\n */\nasync function generateTextByModelType(\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n modelType: ModelTypeName,\n getModelFn: ModelNameGetter\n): Promise<string | TextStreamResult> {\n const openai = createOpenAIClient(runtime);\n const modelName = getModelFn(runtime);\n\n logger.debug(`[OpenAI] Using ${modelType} model: ${modelName}`);\n const promptCacheOptions = resolvePromptCacheOptions(params);\n\n // Get system prompt from character if available\n const systemPrompt = runtime.character.system ?? undefined;\n\n // Use chat() instead of languageModel() to use the Chat Completions API\n // which has better compatibility than the Responses API\n // gpt-5 and gpt-5-mini (reasoning models) don't support temperature,\n // frequencyPenalty, presencePenalty, or stop parameters - use defaults only\n const model = openai.chat(modelName);\n const generateParams = {\n model,\n prompt: params.prompt,\n system: systemPrompt,\n maxOutputTokens: params.maxTokens ?? 8192,\n experimental_telemetry: { isEnabled: getExperimentalTelemetry(runtime) },\n ...(promptCacheOptions.promptCacheKey ||\n promptCacheOptions.promptCacheRetention\n ? {\n providerOptions: {\n openai: {\n ...(promptCacheOptions.promptCacheKey\n ? { promptCacheKey: promptCacheOptions.promptCacheKey }\n : {}),\n ...(promptCacheOptions.promptCacheRetention\n ? { promptCacheRetention: promptCacheOptions.promptCacheRetention }\n : {}),\n },\n },\n }\n : {}),\n };\n\n // Handle streaming mode\n if (params.stream) {\n const result = streamText(generateParams);\n\n return {\n textStream: result.textStream,\n text: Promise.resolve(result.text),\n usage: Promise.resolve(result.usage).then(convertUsage),\n finishReason: Promise.resolve(result.finishReason).then((r) => r as string | undefined),\n };\n }\n\n // Non-streaming mode\n const { text, usage } = await generateText(generateParams);\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, params.prompt, usage);\n }\n\n return text;\n}\n\n// ============================================================================\n// Public Handlers\n// ============================================================================\n\n/**\n * Handles TEXT_SMALL model requests.\n *\n * Uses the configured small model (default: gpt-5-mini).\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @returns Generated text or stream result\n */\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextByModelType(runtime, params, ModelType.TEXT_SMALL, getSmallModel);\n}\n\n/**\n * Handles TEXT_LARGE model requests.\n *\n * Uses the configured large model (default: gpt-5).\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @returns Generated text or stream result\n */\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextByModelType(runtime, params, ModelType.TEXT_LARGE, getLargeModel);\n}\n",
17
+ "/**\n * Text generation model handlers\n *\n * Provides text generation using OpenAI's language models.\n */\n\nimport type { GenerateTextParams, IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText, type LanguageModelUsage, streamText } from \"ai\";\nimport { createOpenAIClient } from \"../providers\";\nimport type { TextStreamResult, TokenUsage } from \"../types\";\nimport { getExperimentalTelemetry, getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Function to get model name from runtime\n */\ntype ModelNameGetter = (runtime: IAgentRuntime) => string;\n\ntype PromptCacheRetention = \"in_memory\" | \"24h\";\n\ninterface OpenAIPromptCacheOptions {\n promptCacheKey?: string;\n promptCacheRetention?: PromptCacheRetention;\n}\n\ninterface GenerateTextParamsWithOpenAIOptions extends GenerateTextParams {\n providerOptions?: {\n openai?: OpenAIPromptCacheOptions;\n };\n}\n\ninterface LanguageModelUsageWithCache extends LanguageModelUsage {\n cachedInputTokens?: number;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Converts AI SDK usage to our token usage format\n */\nfunction convertUsage(usage: LanguageModelUsage | undefined): TokenUsage | undefined {\n if (!usage) {\n return undefined;\n }\n\n // The AI SDK uses inputTokens/outputTokens\n const promptTokens = usage.inputTokens ?? 0;\n const completionTokens = usage.outputTokens ?? 0;\n const usageWithCache = usage as LanguageModelUsageWithCache;\n\n return {\n promptTokens,\n completionTokens,\n totalTokens: promptTokens + completionTokens,\n cachedPromptTokens: usageWithCache.cachedInputTokens,\n };\n}\n\nfunction resolvePromptCacheOptions(params: GenerateTextParams): OpenAIPromptCacheOptions {\n const withOpenAIOptions = params as GenerateTextParamsWithOpenAIOptions;\n return {\n promptCacheKey: withOpenAIOptions.providerOptions?.openai?.promptCacheKey,\n promptCacheRetention: withOpenAIOptions.providerOptions?.openai?.promptCacheRetention,\n };\n}\n\n// ============================================================================\n// Core Generation Function\n// ============================================================================\n\n/**\n * Generates text using the specified model type.\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @param modelType - The type of model (TEXT_SMALL or TEXT_LARGE)\n * @param getModelFn - Function to get the model name\n * @returns Generated text or stream result\n */\nasync function generateTextByModelType(\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n modelType: ModelTypeName,\n getModelFn: ModelNameGetter\n): Promise<string | TextStreamResult> {\n const openai = createOpenAIClient(runtime);\n const modelName = getModelFn(runtime);\n\n logger.debug(`[OpenAI] Using ${modelType} model: ${modelName}`);\n const promptCacheOptions = resolvePromptCacheOptions(params);\n\n // Get system prompt from character if available\n const systemPrompt = runtime.character.system ?? undefined;\n\n // Use chat() instead of languageModel() to use the Chat Completions API\n // which has better compatibility than the Responses API\n // gpt-5 and gpt-5-mini (reasoning models) don't support temperature,\n // frequencyPenalty, presencePenalty, or stop parameters - use defaults only\n const model = openai.chat(modelName);\n const generateParams = {\n model,\n prompt: params.prompt,\n system: systemPrompt,\n maxOutputTokens: params.maxTokens ?? 8192,\n experimental_telemetry: { isEnabled: getExperimentalTelemetry(runtime) },\n ...(promptCacheOptions.promptCacheKey || promptCacheOptions.promptCacheRetention\n ? {\n providerOptions: {\n openai: {\n ...(promptCacheOptions.promptCacheKey\n ? { promptCacheKey: promptCacheOptions.promptCacheKey }\n : {}),\n ...(promptCacheOptions.promptCacheRetention\n ? { promptCacheRetention: promptCacheOptions.promptCacheRetention }\n : {}),\n },\n },\n }\n : {}),\n };\n\n // Handle streaming mode\n if (params.stream) {\n const result = streamText(generateParams);\n\n return {\n textStream: result.textStream,\n text: Promise.resolve(result.text),\n usage: Promise.resolve(result.usage).then(convertUsage),\n finishReason: Promise.resolve(result.finishReason).then((r) => r as string | undefined),\n };\n }\n\n // Non-streaming mode\n const { text, usage } = await generateText(generateParams);\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, params.prompt, usage);\n }\n\n return text;\n}\n\n// ============================================================================\n// Public Handlers\n// ============================================================================\n\n/**\n * Handles TEXT_SMALL model requests.\n *\n * Uses the configured small model (default: gpt-5-mini).\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @returns Generated text or stream result\n */\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextByModelType(runtime, params, ModelType.TEXT_SMALL, getSmallModel);\n}\n\n/**\n * Handles TEXT_LARGE model requests.\n *\n * Uses the configured large model (default: gpt-5).\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @returns Generated text or stream result\n */\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextByModelType(runtime, params, ModelType.TEXT_LARGE, getLargeModel);\n}\n",
18
18
  "import type { DetokenizeTextParams, IAgentRuntime, TokenizeTextParams } from \"@elizaos/core\";\nimport { ModelType } from \"@elizaos/core\";\nimport { detokenizeText, tokenizeText } from \"../utils/tokenization\";\n\nexport async function handleTokenizerEncode(\n runtime: IAgentRuntime,\n params: TokenizeTextParams\n): Promise<number[]> {\n if (!params.prompt) {\n throw new Error(\"Tokenization requires a non-empty prompt\");\n }\n const modelType = params.modelType ?? ModelType.TEXT_LARGE;\n return tokenizeText(runtime, modelType, params.prompt);\n}\n\nexport async function handleTokenizerDecode(\n runtime: IAgentRuntime,\n params: DetokenizeTextParams\n): Promise<string> {\n if (!params.tokens || !Array.isArray(params.tokens)) {\n throw new Error(\"Detokenization requires a valid tokens array\");\n }\n if (params.tokens.length === 0) {\n return \"\";\n }\n for (let i = 0; i < params.tokens.length; i++) {\n const token = params.tokens[i];\n if (typeof token !== \"number\" || !Number.isFinite(token)) {\n throw new Error(`Invalid token at index ${i}: expected number`);\n }\n }\n const modelType = params.modelType ?? ModelType.TEXT_LARGE;\n return detokenizeText(runtime, modelType, params.tokens);\n}\n",
19
19
  "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { ModelType } from \"@elizaos/core\";\nimport {\n encodingForModel,\n getEncoding,\n type Tiktoken,\n type TiktokenEncoding,\n type TiktokenModel,\n} from \"js-tiktoken\";\nimport { getLargeModel, getSmallModel } from \"./config\";\n\ntype SupportedEncoding = \"cl100k_base\" | \"o200k_base\";\n\nfunction resolveTokenizerEncoding(modelName: string): Tiktoken {\n const normalized = modelName.toLowerCase();\n const fallbackEncoding: SupportedEncoding = normalized.includes(\"4o\")\n ? \"o200k_base\"\n : \"cl100k_base\";\n try {\n return encodingForModel(modelName as TiktokenModel);\n } catch {\n return getEncoding(fallbackEncoding as TiktokenEncoding);\n }\n}\n\nfunction getModelName(runtime: IAgentRuntime, modelType: ModelTypeName): string {\n if (modelType === ModelType.TEXT_SMALL) {\n return getSmallModel(runtime);\n }\n return getLargeModel(runtime);\n}\n\nexport function tokenizeText(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n text: string\n): number[] {\n const modelName = getModelName(runtime, modelType);\n const encoder = resolveTokenizerEncoding(modelName);\n return encoder.encode(text);\n}\n\nexport function detokenizeText(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n tokens: number[]\n): string {\n const modelName = getModelName(runtime, modelType);\n const encoder = resolveTokenizerEncoding(modelName);\n return encoder.decode(tokens);\n}\n\nexport function countTokens(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n text: string\n): number {\n const tokens = tokenizeText(runtime, modelType, text);\n return tokens.length;\n}\n\nexport function truncateToTokenLimit(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n text: string,\n maxTokens: number\n): string {\n const tokens = tokenizeText(runtime, modelType, text);\n if (tokens.length <= maxTokens) {\n return text;\n }\n const truncatedTokens = tokens.slice(0, maxTokens);\n return detokenizeText(runtime, modelType, truncatedTokens);\n}\n"
20
20
  ],
21
- "mappings": "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",
21
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBkC,IAAlC;;;ACfuB,IAAvB;;;ACAuB,IAAvB;AAEA,SAAS,WAAW,CAAC,KAAiC;AAAA,EACpD,IAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,KAAK;AAAA,IAClD;AAAA,EACF;AAAA,EACA,MAAM,QAAQ,QAAQ,IAAI;AAAA,EAC1B,OAAO,UAAU,YAAY,YAAY,OAAO,KAAK;AAAA;AAGhD,SAAS,UAAU,CACxB,SACA,KACA,cACoB;AAAA,EACpB,MAAM,QAAQ,QAAQ,WAAW,GAAG;AAAA,EACpC,IAAI,UAAU,aAAa,UAAU,MAAM;AAAA,IACzC,OAAO,OAAO,KAAK;AAAA,EACrB;AAAA,EACA,OAAO,YAAY,GAAG,KAAK;AAAA;AActB,SAAS,iBAAiB,CAC/B,SACA,KACA,cACQ;AAAA,EACR,MAAM,QAAQ,WAAW,SAAS,GAAG;AAAA,EACrC,IAAI,UAAU,WAAW;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,SAAS,OAAO,SAAS,OAAO,EAAE;AAAA,EACxC,IAAI,CAAC,OAAO,SAAS,MAAM,GAAG;AAAA,IAC5B,MAAM,IAAI,MAAM,YAAY,sCAAsC,OAAO;AAAA,EAC3E;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,iBAAiB,CAC/B,SACA,KACA,cACS;AAAA,EACT,MAAM,QAAQ,WAAW,SAAS,GAAG;AAAA,EACrC,IAAI,UAAU,WAAW;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,aAAa,MAAM,YAAY;AAAA,EACrC,OAAO,eAAe,UAAU,eAAe,OAAO,eAAe;AAAA;AAGhE,SAAS,SAAS,GAAY;AAAA,EACnC,OACE,OAAO,eAAe,eACtB,OAAQ,WAAuC,aAAa;AAAA;AAIzD,SAAS,WAAW,CAAC,SAAiC;AAAA,EAC3D,OAAO,UAAU,KAAK,CAAC,CAAC,WAAW,SAAS,yBAAyB;AAAA;AAGhE,SAAS,SAAS,CAAC,SAA4C;AAAA,EACpE,OAAO,WAAW,SAAS,gBAAgB;AAAA;AAGtC,SAAS,kBAAkB,CAAC,SAA4C;AAAA,EAC7E,MAAM,kBAAkB,WAAW,SAAS,0BAA0B;AAAA,EACtE,IAAI,iBAAiB;AAAA,IACnB,mBAAO,MAAM,2CAA2C;AAAA,IACxD,OAAO;AAAA,EACT;AAAA,EACA,mBAAO,MAAM,yDAAyD;AAAA,EACtE,OAAO,UAAU,OAAO;AAAA;AAGnB,SAAS,aAAa,CAC3B,SACA,eAAe,OACS;AAAA,EAIxB,IAAI,UAAU,KAAK,CAAC,kBAAkB,SAAS,gCAAgC,KAAK,GAAG;AAAA,IACrF,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,MAAM,eAAe,mBAAmB,OAAO,IAAI,UAAU,OAAO;AAAA,EAC1E,OAAO,MAAM,EAAE,eAAe,UAAU,MAAM,IAAI,CAAC;AAAA;AAG9C,SAAS,UAAU,CAAC,SAAgC;AAAA,EACzD,MAAM,aAAa,WAAW,SAAS,yBAAyB;AAAA,EAChE,MAAM,UACJ,UAAU,KAAK,aACX,aACC,WAAW,SAAS,iBAAiB,KAAK;AAAA,EACjD,mBAAO,MAAM,sBAAsB,SAAS;AAAA,EAC5C,OAAO;AAAA;AAGF,SAAS,mBAAmB,CAAC,SAAgC;AAAA,EAClE,MAAM,eAAe,UAAU,IAC1B,WAAW,SAAS,8BAA8B,KACnD,WAAW,SAAS,yBAAyB,IAC7C,WAAW,SAAS,sBAAsB;AAAA,EAE9C,IAAI,cAAc;AAAA,IAChB,mBAAO,MAAM,sCAAsC,cAAc;AAAA,IACjE,OAAO;AAAA,EACT;AAAA,EAEA,mBAAO,MAAM,0DAA0D;AAAA,EACvE,OAAO,WAAW,OAAO;AAAA;AAGpB,SAAS,aAAa,CAAC,SAAgC;AAAA,EAC5D,OACE,WAAW,SAAS,oBAAoB,KAAK,WAAW,SAAS,aAAa,KAAK;AAAA;AAIhF,SAAS,aAAa,CAAC,SAAgC;AAAA,EAC5D,OAAO,WAAW,SAAS,oBAAoB,KAAK,WAAW,SAAS,aAAa,KAAK;AAAA;AAGrF,SAAS,iBAAiB,CAAC,SAAgC;AAAA,EAChE,OAAO,WAAW,SAAS,wBAAwB,KAAK;AAAA;AAGnD,SAAS,wBAAwB,CAAC,SAAgC;AAAA,EACvE,OAAO,WAAW,SAAS,gCAAgC,KAAK;AAAA;AAG3D,SAAS,qBAAqB,CAAC,SAAgC;AAAA,EACpE,OAAO,WAAW,SAAS,4BAA4B,KAAK;AAAA;AAGvD,SAAS,WAAW,CAAC,SAAgC;AAAA,EAC1D,OAAO,WAAW,SAAS,kBAAkB,KAAK;AAAA;AAG7C,SAAS,WAAW,CAAC,SAAgC;AAAA,EAC1D,OAAO,WAAW,SAAS,kBAAkB,KAAK;AAAA;AAG7C,SAAS,kBAAkB,CAAC,SAAgC;AAAA,EACjE,OAAO,WAAW,SAAS,yBAAyB,KAAK;AAAA;AAGpD,SAAS,aAAa,CAAC,SAAgC;AAAA,EAC5D,OAAO,WAAW,SAAS,oBAAoB,KAAK;AAAA;AAG/C,SAAS,wBAAwB,CAAC,SAAiC;AAAA,EACxE,OAAO,kBAAkB,SAAS,iCAAiC,KAAK;AAAA;AAGnE,SAAS,sBAAsB,CAAC,SAAgC;AAAA,EACrE,OAAO,kBAAkB,SAAS,+BAA+B,IAAI;AAAA;AAGhE,SAAS,4BAA4B,CAAC,SAAgC;AAAA,EAC3E,OAAO,kBAAkB,SAAS,uCAAuC,IAAI;AAAA;AAGxE,SAAS,gBAAgB,CAAC,SAAgC;AAAA,EAC/D,OAAO,WAAW,SAAS,uBAAuB,KAAK;AAAA;AAGlD,SAAS,kBAAkB,CAAC,SAAgC;AAAA,EACjE,OAAO,kBAAkB,SAAS,2BAA2B,OAAO;AAAA;;;ADjLrE,WAAuC,wBAAwB;AAEzD,SAAS,gBAAgB,CAC9B,SACA,SACM;AAAA,EACD,4BAA4B,OAAO;AAAA;AAG1C,eAAe,2BAA2B,CAAC,SAAuC;AAAA,EAChF,IAAI,UAAU,GAAG;AAAA,IACf,oBAAO,MAAM,yDAAyD;AAAA,IACtE;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,UAAU,OAAO;AAAA,EAEhC,IAAI,CAAC,QAAQ;AAAA,IACX,oBAAO,KACL,gDACE,mEACJ;AAAA,IACA;AAAA,EACF;AAAA,EAEA,IAAI;AAAA,IACF,MAAM,UAAU,WAAW,OAAO;AAAA,IAClC,MAAM,WAAW,MAAM,MAAM,GAAG,kBAAkB;AAAA,MAChD,SAAS,cAAc,OAAO;AAAA,IAChC,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,oBAAO,KACL,uCAAuC,SAAS,UAAU,SAAS,iBACjE,+CACJ;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAO,OAAO;AAAA,IACd,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IACrE,oBAAO,KAAK,kCAAkC,+CAA+C;AAAA;AAAA;;;AExC1E,IAAvB;;;ACLuB,IAAvB;AAEA,IAAM,cAAc;AAAA,EAClB,KAAK;AAAA,IACH,QAAQ,CAAC,IAAM,IAAM,IAAM,EAAI;AAAA,IAC/B,YAAY,CAAC,IAAM,IAAM,IAAM,EAAI;AAAA,EACrC;AAAA,EACA,SAAS,CAAC,IAAM,IAAM,EAAI;AAAA,EAC1B,KAAK,CAAC,IAAM,KAAM,KAAM,EAAI;AAAA,EAC5B,MAAM,CAAC,KAAM,IAAM,IAAM,EAAI;AAAA,EAC7B,MAAM,CAAC,KAAM,KAAM,KAAM,GAAI;AAAA,EAC7B,WAAW,CAAC,IAAM,IAAM,KAAM,GAAI;AACpC;AAEA,IAAM,4BAA4B;AAWlC,SAAS,UAAU,CAAC,QAAgB,QAAgB,UAAsC;AAAA,EACxF,SAAS,IAAI,EAAG,IAAI,SAAS,QAAQ,KAAK;AAAA,IACxC,MAAM,eAAe,SAAS;AAAA,IAC9B,IAAI,iBAAiB,aAAa,OAAO,SAAS,OAAO,cAAc;AAAA,MACrE,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,mBAAmB,CAAC,QAA+B;AAAA,EACjE,IAAI,OAAO,SAAS,2BAA2B;AAAA,IAC7C,OAAO;AAAA,EACT;AAAA,EAGA,IACE,WAAW,QAAQ,GAAG,YAAY,IAAI,MAAM,KAC5C,WAAW,QAAQ,GAAG,YAAY,IAAI,UAAU,GAChD;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,YAAY,OAAO;AAAA,EACzB,MAAM,aAAa,OAAO;AAAA,EAC1B,IACE,WAAW,QAAQ,GAAG,YAAY,OAAO,KACxC,cAAc,OAAQ,eAAe,cAAc,aAAa,SAAU,KAC3E;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,WAAW,QAAQ,GAAG,YAAY,GAAG,GAAG;AAAA,IAC1C,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,WAAW,QAAQ,GAAG,YAAY,IAAI,GAAG;AAAA,IAC3C,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,WAAW,QAAQ,GAAG,YAAY,IAAI,GAAG;AAAA,IAC3C,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,WAAW,QAAQ,GAAG,YAAY,SAAS,GAAG;AAAA,IAChD,OAAO;AAAA,EACT;AAAA,EAEA,oBAAO,KAAK,sEAAsE;AAAA,EAClF,OAAO;AAAA;AAGF,SAAS,uBAAuB,CAAC,UAAiC;AAAA,EACvE,QAAQ;AAAA,SACD;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA;AAAA;AAIN,SAAS,sBAAsB,CAAC,UAAiC;AAAA,EACtE,MAAM,MAAM,wBAAwB,QAAQ;AAAA,EAC5C,OAAO,aAAa;AAAA;;;AD5EtB,SAAS,YAAY,CAAC,OAAsC;AAAA,EAC1D,OAAO,iBAAiB,QAAQ,iBAAiB;AAAA;AAGnD,SAAS,QAAQ,CAAC,OAAiC;AAAA,EACjD,OAAO,OAAO,SAAS,KAAK;AAAA;AAG9B,SAAS,0BAA0B,CAAC,OAAmD;AAAA,EACrF,OACE,OAAO,UAAU,YACjB,UAAU,QACV,WAAW,UACV,aAAc,MAAmC,KAAK,KACrD,SAAU,MAAmC,KAAK;AAAA;AAIxD,SAAS,yBAAyB,CAAC,OAAkD;AAAA,EACnF,OACE,OAAO,UAAU,YACjB,UAAU,QACV,cAAc,SACd,OAAQ,MAAkC,aAAa;AAAA;AAI3D,eAAe,iBAAiB,CAAC,KAA4B;AAAA,EAC3D,MAAM,WAAW,MAAM,MAAM,GAAG;AAAA,EAChC,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,IAAI,MAAM,mCAAmC,SAAS,QAAQ;AAAA,EACtE;AAAA,EACA,OAAO,SAAS,KAAK;AAAA;AAEvB,eAAsB,mBAAmB,CACvC,SACA,OACiB;AAAA,EACjB,IAAI,YAAY,sBAAsB,OAAO;AAAA,EAC7C,IAAI;AAAA,EACJ,IAAI,cAAiD,CAAC;AAAA,EAEtD,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,oBAAO,MAAM,qCAAqC,OAAO;AAAA,IACzD,OAAO,MAAM,kBAAkB,KAAK;AAAA,EACtC,EAAO,SAAI,aAAa,KAAK,GAAG;AAAA,IAC9B,OAAO;AAAA,EACT,EAAO,SAAI,SAAS,KAAK,GAAG;AAAA,IAC1B,MAAM,YAAW,oBAAoB,KAAK;AAAA,IAC1C,oBAAO,MAAM,2CAA2C,WAAU;AAAA,IAClE,OAAO,IAAI,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,GAAG,EAAE,MAAM,UAAS,CAAC;AAAA,EAC7D,EAAO,SAAI,2BAA2B,KAAK,GAAG;AAAA,IAC5C,cAAc;AAAA,IACd,IAAI,MAAM,OAAO;AAAA,MACf,YAAY,MAAM;AAAA,IACpB;AAAA,IACA,IAAI,SAAS,MAAM,KAAK,GAAG;AAAA,MACzB,MAAM,YAAW,MAAM,YAAY,oBAAoB,MAAM,KAAK;AAAA,MAClE,oBAAO,MAAM,6BAA6B,WAAU;AAAA,MACpD,OAAO,IAAI,KAAK,CAAC,IAAI,WAAW,MAAM,KAAK,CAAC,GAAG,EAAE,MAAM,UAAS,CAAC;AAAA,IACnE,EAAO;AAAA,MACL,OAAO,MAAM;AAAA;AAAA,EAEjB,EAAO,SAAI,0BAA0B,KAAK,GAAG;AAAA,IAC3C,oBAAO,MAAM,qCAAqC,MAAM,UAAU;AAAA,IAClE,OAAO,MAAM,kBAAkB,MAAM,QAAQ;AAAA,IAC7C,cAAc,EAAE,QAAQ,MAAM,OAAO;AAAA,EACvC,EAAO;AAAA,IACL,MAAM,IAAI,MACR,qFACF;AAAA;AAAA,EAGF,oBAAO,MAAM,uCAAuC,WAAW;AAAA,EAE/D,MAAM,WAAY,KAAc,QAAQ;AAAA,EACxC,MAAM,WACH,KAAc,QACf,uBACE,SAAS,WAAW,QAAQ,IACvB,WACD,YACN;AAAA,EAEF,MAAM,WAAW,IAAI;AAAA,EACrB,SAAS,OAAO,QAAQ,MAAM,QAAQ;AAAA,EACtC,SAAS,OAAO,SAAS,SAAS;AAAA,EAElC,IAAI,YAAY,UAAU;AAAA,IACxB,SAAS,OAAO,YAAY,YAAY,QAAQ;AAAA,EAClD;AAAA,EACA,IAAI,YAAY,gBAAgB;AAAA,IAC9B,SAAS,OAAO,mBAAmB,YAAY,cAAc;AAAA,EAC/D;AAAA,EACA,IAAI,YAAY,QAAQ;AAAA,IACtB,SAAS,OAAO,UAAU,YAAY,MAAM;AAAA,EAC9C;AAAA,EACA,IAAI,YAAY,gBAAgB,WAAW;AAAA,IACzC,SAAS,OAAO,eAAe,OAAO,YAAY,WAAW,CAAC;AAAA,EAChE;AAAA,EACA,IAAI,YAAY,wBAAwB;AAAA,IACtC,WAAW,eAAe,YAAY,wBAAwB;AAAA,MAC5D,SAAS,OAAO,6BAA6B,WAAW;AAAA,IAC1D;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,WAAW,OAAO;AAAA,EAClC,MAAM,WAAW,MAAM,MAAM,GAAG,gCAAgC;AAAA,IAC9D,QAAQ;AAAA,IACR,SAAS,cAAc,OAAO;AAAA,IAC9B,MAAM;AAAA,EACR,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK,EAAE,MAAM,MAAM,eAAe;AAAA,IACnE,MAAM,IAAI,MACR,gCAAgC,SAAS,UAAU,SAAS,gBAAgB,WAC9E;AAAA,EACF;AAAA,EAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,EAClC,OAAO,KAAK;AAAA;AAGd,eAAsB,kBAAkB,CACtC,SACA,OACsB;AAAA,EACtB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,SAA0B;AAAA,EAC9B,IAAI;AAAA,EACJ,IAAI;AAAA,EAEJ,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,OAAO;AAAA,IACP,QAAQ;AAAA,EACV,EAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb,QAAQ,MAAM;AAAA,IACd,IAAI,YAAY,SAAS,MAAM,QAAQ;AAAA,MACrC,SAAS,MAAM;AAAA,IACjB;AAAA,IACA,IAAI,WAAW,SAAS,MAAM,OAAO;AAAA,MACnC,QAAQ,MAAM;AAAA,IAChB;AAAA,IACA,IAAI,kBAAkB,SAAS,MAAM,cAAc;AAAA,MACjD,eAAe,MAAM;AAAA,IACvB;AAAA;AAAA,EAGF,QAAQ,SAAS,YAAY,OAAO;AAAA,EACpC,QAAQ,SAAS,YAAY,OAAO;AAAA,EACpC,eAAe,gBAAgB,mBAAmB,OAAO;AAAA,EAEzD,oBAAO,MAAM,wCAAwC,OAAO;AAAA,EAE5D,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,WAAW,GAAG;AAAA,IACrC,MAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AAAA,EAEA,IAAI,KAAK,SAAS,MAAM;AAAA,IACtB,MAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AAAA,EAEA,MAAM,cAA0B,CAAC,SAAS,QAAQ,SAAS,QAAQ,QAAQ,SAAS;AAAA,EACpF,IAAI,SAAS,CAAC,YAAY,SAAS,KAAiB,GAAG;AAAA,IACrD,MAAM,IAAI,MAAM,kBAAkB,0BAA0B,YAAY,KAAK,IAAI,GAAG;AAAA,EACtF;AAAA,EAEA,MAAM,UAAU,WAAW,OAAO;AAAA,EAElC,MAAM,cAAsC;AAAA,IAC1C;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,iBAAiB;AAAA,EACnB;AAAA,EAEA,IAAI,gBAAgB,aAAa,SAAS,GAAG;AAAA,IAC3C,YAAY,eAAe;AAAA,EAC7B;AAAA,EAEA,MAAM,WAAW,MAAM,MAAM,GAAG,wBAAwB;AAAA,IACtD,QAAQ;AAAA,IACR,SAAS;AAAA,SACJ,cAAc,OAAO;AAAA,MACxB,gBAAgB;AAAA,SACZ,WAAW,QAAQ,EAAE,QAAQ,aAAa,IAAI,CAAC;AAAA,IACrD;AAAA,IACA,MAAM,KAAK,UAAU,WAAW;AAAA,EAClC,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK,EAAE,MAAM,MAAM,eAAe;AAAA,IACnE,MAAM,IAAI,MAAM,sBAAsB,SAAS,UAAU,SAAS,gBAAgB,WAAW;AAAA,EAC/F;AAAA,EAEA,OAAO,SAAS,YAAY;AAAA;;AEhOiB,IAA/C;;;ACA0B,IAA1B;AAGA,IAAM,oBAAoB;AAmC1B,SAAS,cAAc,CAAC,QAAwB;AAAA,EAC9C,IAAI,OAAO,UAAU,mBAAmB;AAAA,IACtC,OAAO;AAAA,EACT;AAAA,EACA,OAAO,GAAG,OAAO,MAAM,GAAG,iBAAiB;AAAA;AAG7C,SAAS,cAAc,CAAC,OAA+B;AAAA,EACrD,IAAI,kBAAkB,OAAO;AAAA,IAC3B,MAAM,sBACJ,yBAAyB,QAAQ,MAAM,sBAAsB;AAAA,IAC/D,MAAM,qBAAqB,MAAM,sBAAsB,qBAAqB;AAAA,IAC5E,OAAO;AAAA,MACL,cAAc,MAAM,gBAAgB;AAAA,MACpC,kBAAkB,MAAM,oBAAoB;AAAA,MAC5C,aAAa,MAAM,gBAAgB,MAAM,gBAAgB,MAAM,MAAM,oBAAoB;AAAA,MACzF;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI,iBAAiB,SAAS,kBAAkB,OAAO;AAAA,IACrD,MAAM,QAAS,MAAqB,eAAe;AAAA,IACnD,MAAM,SAAU,MAAqB,gBAAgB;AAAA,IACrD,MAAM,QAAS,MAAqB,eAAe,QAAQ;AAAA,IAC3D,OAAO;AAAA,MACL,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,oBAAqB,MAAqB;AAAA,IAC5C;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,cAAc;AAAA,IACd,kBAAkB;AAAA,IAClB,aAAa;AAAA,EACf;AAAA;AAGK,SAAS,mBAAmB,CACjC,SACA,MACA,QACA,OACM;AAAA,EACN,MAAM,aAAa,eAAe,KAAK;AAAA,EAEvC,MAAM,UAAkC;AAAA,IACtC;AAAA,IACA,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA,QAAQ,eAAe,MAAM;AAAA,IAC7B,QAAQ;AAAA,MACN,QAAQ,WAAW;AAAA,MACnB,YAAY,WAAW;AAAA,MACvB,OAAO,WAAW;AAAA,SACd,WAAW,uBAAuB,YAClC,EAAE,QAAQ,WAAW,mBAAmB,IACxC,CAAC;AAAA,IACP;AAAA,EACF;AAAA,EAEA,QAAQ,UAAU,uBAAU,YAAY,OAAO;AAAA;;;AD9FjD,IAAM,uBAAuB;AAa7B,SAAS,iBAAiB,CAAC,WAAoC;AAAA,EAC7D,MAAM,kBAAkB,OAAO,OAAO,wBAAW;AAAA,EACjD,IAAI,CAAC,gBAAgB,SAAS,SAAS,GAAG;AAAA,IACxC,MAAM,IAAI,MACR,gCAAgC,8BAA8B,gBAAgB,KAAK,IAAI,GACzF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,WAAW,CAAC,QAA4D;AAAA,EAC/E,IAAI,WAAW,MAAM;AAAA,IACnB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,WAAW,UAAU;AAAA,IAC9B,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,WAAW,YAAY,OAAO,OAAO,SAAS,UAAU;AAAA,IACjE,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,MAAM,IAAI,MAAM,sEAAsE;AAAA;AAGxF,eAAsB,mBAAmB,CACvC,SACA,QACmB;AAAA,EACnB,MAAM,iBAAiB,kBAAkB,OAAO;AAAA,EAChD,MAAM,qBAAqB,kBAAkB,uBAAuB,OAAO,CAAC;AAAA,EAE5E,MAAM,OAAO,YAAY,MAAM;AAAA,EAC/B,IAAI,SAAS,MAAM;AAAA,IACjB,oBAAO,MAAM,qDAAqD;AAAA,IAClE,MAAM,aAAa,IAAI,MAAM,kBAAkB,EAAE,KAAK,CAAC;AAAA,IACvD,WAAW,KAAK;AAAA,IAChB,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,cAAc,KAAK,KAAK;AAAA,EAC5B,IAAI,YAAY,WAAW,GAAG;AAAA,IAC5B,MAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAAA,EAKA,MAAM,WAAW,uBAAuB;AAAA,EACxC,IAAI,YAAY,SAAS,UAAU;AAAA,IACjC,oBAAO,KACL,uCAAuC,KAAK,KAAK,YAAY,SAAS,CAAC,6BAA6B,6BACtG;AAAA,IACA,cAAc,YAAY,MAAM,GAAG,QAAQ;AAAA,EAC7C;AAAA,EAEA,MAAM,UAAU,oBAAoB,OAAO;AAAA,EAC3C,MAAM,MAAM,GAAG;AAAA,EAEf,oBAAO,MAAM,6CAA6C,gBAAgB;AAAA,EAE1E,MAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS;AAAA,SACJ,cAAc,SAAS,IAAI;AAAA,MAC9B,gBAAgB;AAAA,IAClB;AAAA,IACA,MAAM,KAAK,UAAU;AAAA,MACnB,OAAO;AAAA,MACP,OAAO;AAAA,IACT,CAAC;AAAA,EACH,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK,EAAE,MAAM,MAAM,eAAe;AAAA,IACnE,MAAM,IAAI,MACR,+BAA+B,SAAS,UAAU,SAAS,gBAAgB,WAC7E;AAAA,EACF;AAAA,EAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,EAElC,MAAM,cAAc,MAAM,OAAO;AAAA,EACjC,IAAI,CAAC,eAAe,CAAC,YAAY,WAAW;AAAA,IAC1C,MAAM,IAAI,MAAM,0DAA0D;AAAA,EAC5E;AAAA,EAEA,MAAM,YAAY,YAAY;AAAA,EAE9B,IAAI,UAAU,WAAW,oBAAoB;AAAA,IAC3C,MAAM,IAAI,MACR,qCAAqC,UAAU,oBAAoB,yBACjE,4CACJ;AAAA,EACF;AAAA,EAEA,IAAI,KAAK,OAAO;AAAA,IACd,oBAAoB,SAAS,uBAAU,gBAAgB,aAAa;AAAA,MAClE,cAAc,KAAK,MAAM;AAAA,MACzB,kBAAkB;AAAA,MAClB,aAAa,KAAK,MAAM;AAAA,IAC1B,CAAC;AAAA,EACH;AAAA,EAEA,oBAAO,MAAM,qCAAqC,UAAU,mBAAmB;AAAA,EAC/E,OAAO;AAAA;;AEzHyB,IAAlC;AAwBA,IAAM,mCACJ;AAEF,eAAsB,qBAAqB,CACzC,SACA,QACkC;AAAA,EAClC,MAAM,YAAY,cAAc,OAAO;AAAA,EACvC,MAAM,QAAQ,OAAO,SAAS;AAAA,EAC9B,MAAM,OAAmB,OAAO,QAAsB;AAAA,EACtD,MAAM,iBAAiB;AAAA,EAEvB,oBAAO,MAAM,+BAA+B,WAAW;AAAA,EAEvD,IAAI,CAAC,OAAO,UAAU,OAAO,OAAO,KAAK,EAAE,WAAW,GAAG;AAAA,IACvD,MAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AAAA,EAEA,IAAI,QAAQ,KAAK,QAAQ,IAAI;AAAA,IAC3B,MAAM,IAAI,MAAM,sCAAsC;AAAA,EACxD;AAAA,EAEA,MAAM,UAAU,WAAW,OAAO;AAAA,EAElC,MAAM,cAA+C;AAAA,IACnD,OAAO;AAAA,IACP,QAAQ,OAAO;AAAA,IACf,GAAG;AAAA,IACH;AAAA,EACF;AAAA,EAEA,IAAI,eAAe,SAAS;AAAA,IAC1B,YAAY,UAAU,eAAe;AAAA,EACvC;AAAA,EACA,IAAI,eAAe,OAAO;AAAA,IACxB,YAAY,QAAQ,eAAe;AAAA,EACrC;AAAA,EAEA,MAAM,WAAW,MAAM,MAAM,GAAG,8BAA8B;AAAA,IAC5D,QAAQ;AAAA,IACR,SAAS;AAAA,SACJ,cAAc,OAAO;AAAA,MACxB,gBAAgB;AAAA,IAClB;AAAA,IACA,MAAM,KAAK,UAAU,WAAW;AAAA,EAClC,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK,EAAE,MAAM,MAAM,eAAe;AAAA,IACnE,MAAM,IAAI,MACR,mCAAmC,SAAS,UAAU,SAAS,gBAAgB,WACjF;AAAA,EACF;AAAA,EAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,EAElC,IAAI,CAAC,KAAK,QAAQ,KAAK,KAAK,WAAW,GAAG;AAAA,IACxC,MAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AAAA,EAEA,OAAO,KAAK,KAAK,IAAI,CAAC,UAAU;AAAA,IAC9B,KAAK,KAAK;AAAA,IACV,eAAe,KAAK;AAAA,EACtB,EAAE;AAAA;AAGJ,SAAS,sBAAsB,CAAC,SAAyB;AAAA,EACvD,MAAM,aAAa,QAAQ,MAAM,2BAA2B;AAAA,EAC5D,OAAO,aAAa,IAAI,KAAK,KAAK;AAAA;AAGpC,SAAS,4BAA4B,CAAC,SAAyB;AAAA,EAC7D,OAAO,QAAQ,QAAQ,6BAA6B,EAAE,EAAE,KAAK;AAAA;AAG/D,eAAsB,sBAAsB,CAC1C,SACA,QACiC;AAAA,EACjC,MAAM,YAAY,yBAAyB,OAAO;AAAA,EAClD,MAAM,YAAY,6BAA6B,OAAO;AAAA,EAEtD,oBAAO,MAAM,2CAA2C,WAAW;AAAA,EAEnE,IAAI;AAAA,EACJ,IAAI;AAAA,EAEJ,IAAI,OAAO,WAAW,UAAU;AAAA,IAC9B,WAAW;AAAA,IACX,aAAa;AAAA,EACf,EAAO;AAAA,IACL,WAAW,OAAO;AAAA,IAClB,aAAa,OAAO,UAAU;AAAA;AAAA,EAGhC,IAAI,CAAC,YAAY,SAAS,KAAK,EAAE,WAAW,GAAG;AAAA,IAC7C,MAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AAAA,EAEA,MAAM,UAAU,WAAW,OAAO;AAAA,EAElC,MAAM,cAAc;AAAA,IAClB,OAAO;AAAA,IACP,UAAU;AAAA,MACR;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,UACP,EAAE,MAAM,QAAQ,MAAM,WAAW;AAAA,UACjC,EAAE,MAAM,aAAa,WAAW,EAAE,KAAK,SAAS,EAAE;AAAA,QACpD;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY;AAAA,EACd;AAAA,EAEA,MAAM,WAAW,MAAM,MAAM,GAAG,4BAA4B;AAAA,IAC1D,QAAQ;AAAA,IACR,SAAS;AAAA,SACJ,cAAc,OAAO;AAAA,MACxB,gBAAgB;AAAA,IAClB;AAAA,IACA,MAAM,KAAK,UAAU,WAAW;AAAA,EAClC,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK,EAAE,MAAM,MAAM,eAAe;AAAA,IACnE,MAAM,IAAI,MACR,oCAAoC,SAAS,UAAU,SAAS,gBAAgB,WAClF;AAAA,EACF;AAAA,EAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,EAElC,IAAI,KAAK,OAAO;AAAA,IACd,oBACE,SACA,uBAAU,mBACV,OAAO,WAAW,WAAW,SAAU,OAAO,UAAU,IACxD;AAAA,MACE,cAAc,KAAK,MAAM;AAAA,MACzB,kBAAkB,KAAK,MAAM;AAAA,MAC7B,aAAa,KAAK,MAAM;AAAA,IAC1B,CACF;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,KAAK,UAAU;AAAA,EACnC,MAAM,UAAU,aAAa,SAAS;AAAA,EAEtC,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,IAAI,MAAM,6CAA6C;AAAA,EAC/D;AAAA,EAEA,OAAO;AAAA,IACL,OAAO,uBAAuB,OAAO;AAAA,IACrC,aAAa,6BAA6B,OAAO;AAAA,EACnD;AAAA;;AC/KgC,IAAlC;AACmD,IAAnD;;;ACPkD,IAAlD;AAIA,IAAM,gBAAgB;AAEf,SAAS,kBAAkB,CAAC,SAAwC;AAAA,EACzE,MAAM,UAAU,WAAW,OAAO;AAAA,EAClC,MAAM,SAAS,UAAU,OAAO;AAAA,EAEhC,IAAI,CAAC,UAAU,YAAY,OAAO,GAAG;AAAA,IACnC,OAAO,2BAAa;AAAA,MAClB,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,CAAC,QAAQ;AAAA,IACX,MAAM,IAAI,MACR,uFACF;AAAA,EACF;AAAA,EAEA,OAAO,2BAAa;AAAA,IAClB;AAAA,IACA;AAAA,EACF,CAAC;AAAA;;AC1BoB,IAAvB;AAC+B,IAA/B;AASA,IAAM,wBAAwB;AAAA,EAC5B,eAAe;AAAA,EACf,YAAY;AACd;AAEO,SAAS,qBAAqB,GAAuB;AAAA,EAC1D,OAAO,SAAS,MAAM,YAAsD;AAAA,IAC1E,IAAI,EAAE,iBAAiB,2BAAiB;AAAA,MACtC,OAAO;AAAA,IACT;AAAA,IACA,IAAI;AAAA,MACF,MAAM,cAAc,KAAK,QAAQ,sBAAsB,eAAe,EAAE;AAAA,MACxE,KAAK,MAAM,WAAW;AAAA,MACtB,oBAAO,MAAM,wEAAwE;AAAA,MACrF,OAAO;AAAA,MACP,MAAM;AAAA,MACN,oBAAO,KAAK,0CAA0C;AAAA,MACtD,OAAO;AAAA;AAAA;AAAA;;;AFXb,eAAe,yBAAyB,CACtC,SACA,QACA,WACA,YACoC;AAAA,EACpC,MAAM,SAAS,mBAAmB,OAAO;AAAA,EACzC,MAAM,YAAY,WAAW,OAAO;AAAA,EAEpC,oBAAO,MAAM,kBAAkB,oBAAoB,WAAW;AAAA,EAE9D,IAAI,CAAC,OAAO,UAAU,OAAO,OAAO,KAAK,EAAE,WAAW,GAAG;AAAA,IACvD,MAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AAAA,EAEA,IAAI,OAAO,QAAQ;AAAA,IACjB,oBAAO,MACL,wDACE,iDACJ;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ,OAAO,KAAK,SAAS;AAAA,EACnC,QAAQ,QAAQ,UAAU,MAAM,0BAAe;AAAA,IAC7C;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ,OAAO;AAAA,IACf,yBAAyB,sBAAsB;AAAA,EACjD,CAAC;AAAA,EAED,IAAI,OAAO;AAAA,IACT,oBAAoB,SAAS,WAAW,OAAO,QAAQ,KAAK;AAAA,EAC9D;AAAA,EAEA,IAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AAAA,IACjD,MAAM,IAAI,MAAM,8BAA8B,OAAO,yBAAyB;AAAA,EAChF;AAAA,EAEA,OAAO;AAAA;AAGT,eAAsB,iBAAiB,CACrC,SACA,QACoC;AAAA,EACpC,OAAO,0BAA0B,SAAS,QAAQ,uBAAU,cAAc,aAAa;AAAA;AAGzF,eAAsB,iBAAiB,CACrC,SACA,QACoC;AAAA,EACpC,OAAO,0BAA0B,SAAS,QAAQ,uBAAU,cAAc,aAAa;AAAA;;AG7ClE,IAAvB;AA6EA,SAAS,gBAAgB,CAAC,MAAsC;AAAA,EAC9D,QAAQ,KAAK;AAAA,SACN;AAAA,MACH,OAAO,EAAE,MAAM,qBAAqB;AAAA,SACjC;AAAA,MACH,OAAO;AAAA,QACL,MAAM;AAAA,QACN,kBAAkB,KAAK;AAAA,MACzB;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,MAAM;AAAA,QACN,WAAW,KAAK,aAAa,EAAE,MAAM,OAAO;AAAA,MAC9C;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,MAAM;AAAA,QACN,cAAc,KAAK;AAAA,QACnB,YAAY,KAAK;AAAA,QACjB,kBAAkB,KAAK,mBAAmB;AAAA,MAC5C;AAAA;AAAA,MAEA,MAAM,IAAI,MAAM,+BAAgC,KAAsB,MAAM;AAAA;AAAA;AAOlF,SAAS,iBAAiB,CAAC,MAAyD;AAAA,EAClF,QAAQ,KAAK;AAAA,SACN;AAAA,MACH,OAAO;AAAA,QACL,IAAI,KAAK,MAAM;AAAA,QACf,MAAM;AAAA,QACN,QAAS,KAAK,UAAqC;AAAA,QACnD,QAAQ;AAAA,UACN,MAAO,KAAK,QAAQ,QAAoD;AAAA,UACxE,OAAO,KAAK,QAAQ;AAAA,UACpB,KAAK,KAAK,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,SAEG;AAAA,MACH,OAAO;AAAA,QACL,IAAI,KAAK,MAAM;AAAA,QACf,MAAM;AAAA,QACN,QAAS,KAAK,UAAqC;AAAA,QACnD,OAAO,KAAK,SAAS;AAAA,QACrB,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO;AAAA,UACjC,QAAQ,EAAE;AAAA,UACV,UAAU,EAAE;AAAA,UACZ,OAAO,EAAE;AAAA,QACX,EAAE;AAAA,MACJ;AAAA,SAEG;AAAA,MACH,OAAO;AAAA,QACL,IAAI,KAAK,MAAM;AAAA,QACf,MAAM;AAAA,QACN,QAAS,KAAK,UAAqC;AAAA,QACnD,MAAM,KAAK,QAAQ;AAAA,QACnB,QAAQ,KAAK;AAAA,MACf;AAAA,SAEG;AAAA,MACH,OAAO;AAAA,QACL,IAAI,KAAK,MAAM;AAAA,QACf,MAAM;AAAA,QACN,QAAS,KAAK,UAAqC;AAAA,QACnD,aAAa,KAAK,gBAAgB;AAAA,QAClC,UAAU,KAAK,aAAa;AAAA,QAC5B,WAAY,KAAK,aAAa,CAAC;AAAA,QAC/B,QAAQ,KAAK;AAAA,MACf;AAAA,SAEG;AAAA,MACH,OAAO;AAAA,QACL,MAAM;AAAA,QACN,SACE,KAAK,SAAS,IAAI,CAAC,OAAO;AAAA,UACxB,MAAM;AAAA,UACN,MAAM,EAAE;AAAA,UACR,aACE,EAAE,aAAa,IAAI,CAAC,OAAO;AAAA,YACzB,KAAK,EAAE;AAAA,YACP,OAAO,EAAE;AAAA,YACT,YAAY,EAAE;AAAA,YACd,UAAU,EAAE;AAAA,UACd,EAAE,KAAK,CAAC;AAAA,QACZ,EAAE,KAAK,CAAC;AAAA,MACZ;AAAA;AAAA,MAIA,OAAO;AAAA;AAAA;AAOb,SAAS,yBAAyB,CAAC,UAGjC;AAAA,EAEA,IAAI,SAAS,aAAa;AAAA,IAExB,MAAM,eAAoC,CAAC;AAAA,IAC3C,IAAI,SAAS,QAAQ;AAAA,MACnB,WAAW,QAAQ,SAAS,QAAQ;AAAA,QAClC,IAAI,KAAK,SAAS,aAAa,KAAK,SAAS;AAAA,UAC3C,WAAW,WAAW,KAAK,SAAS;AAAA,YAClC,IAAI,QAAQ,aAAa;AAAA,cACvB,WAAW,OAAO,QAAQ,aAAa;AAAA,gBACrC,aAAY,KAAK;AAAA,kBACf,KAAK,IAAI;AAAA,kBACT,OAAO,IAAI;AAAA,kBACX,YAAY,IAAI;AAAA,kBAChB,UAAU,IAAI;AAAA,gBAChB,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO,EAAE,MAAM,SAAS,aAAa,0BAAY;AAAA,EACnD;AAAA,EAGA,IAAI,OAAO;AAAA,EACX,MAAM,cAAoC,CAAC;AAAA,EAE3C,IAAI,SAAS,QAAQ;AAAA,IACnB,WAAW,QAAQ,SAAS,QAAQ;AAAA,MAClC,IAAI,KAAK,SAAS,aAAa,KAAK,SAAS;AAAA,QAC3C,WAAW,WAAW,KAAK,SAAS;AAAA,UAClC,QAAQ,QAAQ;AAAA,UAChB,IAAI,QAAQ,aAAa;AAAA,YACvB,WAAW,OAAO,QAAQ,aAAa;AAAA,cACrC,YAAY,KAAK;AAAA,gBACf,KAAK,IAAI;AAAA,gBACT,OAAO,IAAI;AAAA,gBACX,YAAY,IAAI;AAAA,gBAChB,UAAU,IAAI;AAAA,cAChB,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,EAAE,MAAM,YAAY;AAAA;AA8B7B,eAAsB,cAAc,CAClC,SACA,QACyB;AAAA,EACzB,MAAM,SAAS,UAAU,OAAO;AAAA,EAChC,IAAI,CAAC,QAAQ;AAAA,IACX,MAAM,IAAI,MACR,yGACF;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,WAAW,OAAO;AAAA,EAClC,MAAM,YAAY,OAAO,SAAS,iBAAiB,OAAO;AAAA,EAC1D,MAAM,UAAU,mBAAmB,OAAO;AAAA,EAE1C,qBAAO,MAAM,+CAA+C,WAAW;AAAA,EACvE,qBAAO,MAAM,4BAA4B,OAAO,MAAM,UAAU,GAAG,GAAG,MAAM;AAAA,EAG5E,MAAM,kBAAkB,OAAO,OAAO,OACpC,CAAC,MAAM,EAAE,SAAS,wBAAwB,EAAE,SAAS,iBAAiB,EAAE,SAAS,KACnF;AAAA,EAEA,IAAI,CAAC,mBAAmB,gBAAgB,WAAW,GAAG;AAAA,IAEpD,qBAAO,MAAM,2EAA2E;AAAA,IACxF,OAAO,QAAQ,CAAC,EAAE,MAAM,qBAAqB,GAAG,GAAI,OAAO,SAAS,CAAC,CAAE;AAAA,EACzE;AAAA,EAGA,MAAM,cAAuC;AAAA,IAC3C,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,EAChB;AAAA,EAEA,IAAI,OAAO,cAAc;AAAA,IACvB,YAAY,eAAe,OAAO;AAAA,EACpC;AAAA,EAEA,IAAI,OAAO,eAAe,WAAW;AAAA,IACnC,YAAY,aAAa,OAAO;AAAA,EAClC;AAAA,EAEA,IAAI,OAAO,SAAS,OAAO,MAAM,SAAS,GAAG;AAAA,IAC3C,YAAY,QAAQ,OAAO,MAAM,IAAI,gBAAgB;AAAA,EACvD;AAAA,EAEA,IAAI,OAAO,iBAAiB,WAAW;AAAA,IACrC,YAAY,iBAAiB,OAAO;AAAA,EACtC;AAAA,EAEA,IAAI,OAAO,kBAAkB;AAAA,IAC3B,YAAY,YAAY,EAAE,SAAS,OAAO,iBAAiB;AAAA,EAC7D;AAAA,EAEA,qBAAO,MAAM,mCAAmC,KAAK,UAAU,aAAa,MAAM,CAAC,GAAG;AAAA,EAGtF,MAAM,WAAW,MAAM,MAAM,GAAG,qBAAqB;AAAA,IACnD,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,eAAe,UAAU;AAAA,MACzB,gBAAgB;AAAA,IAClB;AAAA,IACA,MAAM,KAAK,UAAU,WAAW;AAAA,IAChC,QAAQ,YAAY,QAAQ,OAAO;AAAA,EACrC,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,IACtC,qBAAO,MAAM,qCAAqC,SAAS,UAAU,WAAW;AAAA,IAChF,MAAM,IAAI,MAAM,iCAAiC,SAAS,UAAU,SAAS,YAAY;AAAA,EAC3F;AAAA,EAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,EAElC,IAAI,KAAK,OAAO;AAAA,IACd,qBAAO,MAAM,gCAAgC,KAAK,MAAM,SAAS;AAAA,IACjE,MAAM,IAAI,MAAM,wBAAwB,KAAK,MAAM,SAAS;AAAA,EAC9D;AAAA,EAEA,qBAAO,MAAM,gDAAgD,KAAK,UAAU,aAAa;AAAA,EAGzF,QAAQ,MAAM,gBAAgB,0BAA0B,IAAI;AAAA,EAG5D,MAAM,cAAoC,CAAC;AAAA,EAC3C,IAAI,KAAK,QAAQ;AAAA,IACf,WAAW,QAAQ,KAAK,QAAQ;AAAA,MAC9B,MAAM,YAAY,kBAAkB,IAAI;AAAA,MACxC,IAAI,WAAW;AAAA,QACb,YAAY,KAAK,SAAS;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAyB;AAAA,IAC7B,IAAI,KAAK;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,KAAK;AAAA,EACf;AAAA,EAEA,qBAAO,KACL,6CAA6C,KAAK,wBAAwB,YAAY,yBAAyB,YAAY,QAC7H;AAAA,EAEA,OAAO;AAAA;;ACnYyB,IAAlC;AACkE,IAAlE;AAuCA,SAAS,YAAY,CAAC,OAA+D;AAAA,EACnF,IAAI,CAAC,OAAO;AAAA,IACV;AAAA,EACF;AAAA,EAGA,MAAM,eAAe,MAAM,eAAe;AAAA,EAC1C,MAAM,mBAAmB,MAAM,gBAAgB;AAAA,EAC/C,MAAM,iBAAiB;AAAA,EAEvB,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,aAAa,eAAe;AAAA,IAC5B,oBAAoB,eAAe;AAAA,EACrC;AAAA;AAGF,SAAS,yBAAyB,CAAC,QAAsD;AAAA,EACvF,MAAM,oBAAoB;AAAA,EAC1B,OAAO;AAAA,IACL,gBAAgB,kBAAkB,iBAAiB,QAAQ;AAAA,IAC3D,sBAAsB,kBAAkB,iBAAiB,QAAQ;AAAA,EACnE;AAAA;AAgBF,eAAe,uBAAuB,CACpC,SACA,QACA,WACA,YACoC;AAAA,EACpC,MAAM,SAAS,mBAAmB,OAAO;AAAA,EACzC,MAAM,YAAY,WAAW,OAAO;AAAA,EAEpC,qBAAO,MAAM,kBAAkB,oBAAoB,WAAW;AAAA,EAC9D,MAAM,qBAAqB,0BAA0B,MAAM;AAAA,EAG3D,MAAM,eAAe,QAAQ,UAAU,UAAU;AAAA,EAMjD,MAAM,QAAQ,OAAO,KAAK,SAAS;AAAA,EACnC,MAAM,iBAAiB;AAAA,IACrB;AAAA,IACA,QAAQ,OAAO;AAAA,IACf,QAAQ;AAAA,IACR,iBAAiB,OAAO,aAAa;AAAA,IACrC,wBAAwB,EAAE,WAAW,yBAAyB,OAAO,EAAE;AAAA,OACnE,mBAAmB,kBAAkB,mBAAmB,uBACxD;AAAA,MACE,iBAAiB;AAAA,QACf,QAAQ;AAAA,aACF,mBAAmB,iBACnB,EAAE,gBAAgB,mBAAmB,eAAe,IACpD,CAAC;AAAA,aACD,mBAAmB,uBACnB,EAAE,sBAAsB,mBAAmB,qBAAqB,IAChE,CAAC;AAAA,QACP;AAAA,MACF;AAAA,IACF,IACA,CAAC;AAAA,EACP;AAAA,EAGA,IAAI,OAAO,QAAQ;AAAA,IACjB,MAAM,SAAS,sBAAW,cAAc;AAAA,IAExC,OAAO;AAAA,MACL,YAAY,OAAO;AAAA,MACnB,MAAM,QAAQ,QAAQ,OAAO,IAAI;AAAA,MACjC,OAAO,QAAQ,QAAQ,OAAO,KAAK,EAAE,KAAK,YAAY;AAAA,MACtD,cAAc,QAAQ,QAAQ,OAAO,YAAY,EAAE,KAAK,CAAC,MAAM,CAAuB;AAAA,IACxF;AAAA,EACF;AAAA,EAGA,QAAQ,MAAM,UAAU,MAAM,wBAAa,cAAc;AAAA,EAEzD,IAAI,OAAO;AAAA,IACT,oBAAoB,SAAS,WAAW,OAAO,QAAQ,KAAK;AAAA,EAC9D;AAAA,EAEA,OAAO;AAAA;AAgBT,eAAsB,eAAe,CACnC,SACA,QACoC;AAAA,EACpC,OAAO,wBAAwB,SAAS,QAAQ,wBAAU,YAAY,aAAa;AAAA;AAYrF,eAAsB,eAAe,CACnC,SACA,QACoC;AAAA,EACpC,OAAO,wBAAwB,SAAS,QAAQ,wBAAU,YAAY,aAAa;AAAA;;ACtL3D,IAA1B;;;ACA0B,IAA1B;AAOO,IANP;AAWA,SAAS,wBAAwB,CAAC,WAA6B;AAAA,EAC7D,MAAM,aAAa,UAAU,YAAY;AAAA,EACzC,MAAM,mBAAsC,WAAW,SAAS,IAAI,IAChE,eACA;AAAA,EACJ,IAAI;AAAA,IACF,OAAO,oCAAiB,SAA0B;AAAA,IAClD,MAAM;AAAA,IACN,OAAO,+BAAY,gBAAoC;AAAA;AAAA;AAI3D,SAAS,YAAY,CAAC,SAAwB,WAAkC;AAAA,EAC9E,IAAI,cAAc,wBAAU,YAAY;AAAA,IACtC,OAAO,cAAc,OAAO;AAAA,EAC9B;AAAA,EACA,OAAO,cAAc,OAAO;AAAA;AAGvB,SAAS,YAAY,CAC1B,SACA,WACA,MACU;AAAA,EACV,MAAM,YAAY,aAAa,SAAS,SAAS;AAAA,EACjD,MAAM,UAAU,yBAAyB,SAAS;AAAA,EAClD,OAAO,QAAQ,OAAO,IAAI;AAAA;AAGrB,SAAS,cAAc,CAC5B,SACA,WACA,QACQ;AAAA,EACR,MAAM,YAAY,aAAa,SAAS,SAAS;AAAA,EACjD,MAAM,UAAU,yBAAyB,SAAS;AAAA,EAClD,OAAO,QAAQ,OAAO,MAAM;AAAA;;;AD7C9B,eAAsB,qBAAqB,CACzC,SACA,QACmB;AAAA,EACnB,IAAI,CAAC,OAAO,QAAQ;AAAA,IAClB,MAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAAA,EACA,MAAM,YAAY,OAAO,aAAa,wBAAU;AAAA,EAChD,OAAO,aAAa,SAAS,WAAW,OAAO,MAAM;AAAA;AAGvD,eAAsB,qBAAqB,CACzC,SACA,QACiB;AAAA,EACjB,IAAI,CAAC,OAAO,UAAU,CAAC,MAAM,QAAQ,OAAO,MAAM,GAAG;AAAA,IACnD,MAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AAAA,EACA,IAAI,OAAO,OAAO,WAAW,GAAG;AAAA,IAC9B,OAAO;AAAA,EACT;AAAA,EACA,SAAS,IAAI,EAAG,IAAI,OAAO,OAAO,QAAQ,KAAK;AAAA,IAC7C,MAAM,QAAQ,OAAO,OAAO;AAAA,IAC5B,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,GAAG;AAAA,MACxD,MAAM,IAAI,MAAM,0BAA0B,oBAAoB;AAAA,IAChE;AAAA,EACF;AAAA,EACA,MAAM,YAAY,OAAO,aAAa,wBAAU;AAAA,EAChD,OAAO,eAAe,SAAS,WAAW,OAAO,MAAM;AAAA;;AbKzD,SAAS,aAAa,GAAmB;AAAA,EACvC,IAAI,OAAO,YAAY,aAAa;AAAA,IAClC,OAAO,CAAC;AAAA,EACV;AAAA,EACA,OAAO,QAAQ;AAAA;AAGjB,IAAM,MAAM,cAAc;AAEnB,IAAM,eAAuB;AAAA,EAClC,MAAM;AAAA,EACN,aAAa;AAAA,EAEb,QAAQ;AAAA,IACN,gBAAgB,IAAI,kBAAkB;AAAA,IACtC,iBAAiB,IAAI,mBAAmB;AAAA,IACxC,oBAAoB,IAAI,sBAAsB;AAAA,IAC9C,oBAAoB,IAAI,sBAAsB;AAAA,IAC9C,aAAa,IAAI,eAAe;AAAA,IAChC,aAAa,IAAI,eAAe;AAAA,IAChC,wBAAwB,IAAI,0BAA0B;AAAA,IACtD,0BAA0B,IAAI,4BAA4B;AAAA,IAC1D,sBAAsB,IAAI,wBAAwB;AAAA,IAClD,6BAA6B,IAAI,+BAA+B;AAAA,IAChE,gCAAgC,IAAI,kCAAkC;AAAA,IACtE,qCAAqC,IAAI,uCAAuC;AAAA,IAChF,+BAA+B,IAAI,iCAAiC;AAAA,IACpE,uBAAuB,IAAI,yBAAyB;AAAA,IACpD,yBAAyB,IAAI,2BAA2B;AAAA,EAC1D;AAAA,OAEM,KAAI,CAAC,QAAgC,SAAuC;AAAA,IAChF,iBAAiB,QAA0C,OAAO;AAAA;AAAA,EAGpE,QAAQ;AAAA,KACL,wBAAU,iBAAiB,OAC1B,SACA,WACsB;AAAA,MACtB,OAAO,oBAAoB,SAAS,MAAM;AAAA;AAAA,KAG3C,wBAAU,wBAAwB,OACjC,SACA,WACsB;AAAA,MACtB,OAAO,sBAAsB,SAAS,MAAM;AAAA;AAAA,KAG7C,wBAAU,wBAAwB,OACjC,SACA,WACoB;AAAA,MACpB,OAAO,sBAAsB,SAAS,MAAM;AAAA;AAAA,KAG7C,wBAAU,aAAa,OACtB,SACA,WACuC;AAAA,MACvC,OAAO,gBAAgB,SAAS,MAAM;AAAA;AAAA,KAGvC,wBAAU,aAAa,OACtB,SACA,WACuC;AAAA,MACvC,OAAO,gBAAgB,SAAS,MAAM;AAAA;AAAA,KAGvC,wBAAU,QAAQ,OACjB,SACA,WACqC;AAAA,MACrC,OAAO,sBAAsB,SAAS,MAAM;AAAA;AAAA,KAG7C,wBAAU,oBAAoB,OAC7B,SACA,WACoD;AAAA,MACpD,OAAO,uBAAuB,SAAS,MAAM;AAAA;AAAA,KAG9C,wBAAU,gBAAgB,OACzB,SACA,UACoB;AAAA,MACpB,OAAO,oBAAoB,SAAS,KAAK;AAAA;AAAA,KAG1C,wBAAU,iBAAiB,OAC1B,SACA,UACyB;AAAA,MACzB,OAAO,mBAAmB,SAAS,KAAK;AAAA;AAAA,KAGzC,wBAAU,eAAe,OACxB,SACA,WACuC;AAAA,MACvC,OAAO,kBAAkB,SAAS,MAAM;AAAA;AAAA,KAGzC,wBAAU,eAAe,OACxB,SACA,WACuC;AAAA,MACvC,OAAO,kBAAkB,SAAS,MAAM;AAAA;AAAA,KAGzC,wBAAU,WAAW,OACpB,SACA,WAC4B;AAAA,MAC5B,OAAO,eAAe,SAAS,MAAM;AAAA;AAAA,EAEzC;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA0C;AAAA,YACnD,MAAM,UAAU,WAAW,OAAO;AAAA,YAClC,MAAM,WAAW,MAAM,MAAM,GAAG,kBAAkB;AAAA,cAChD,SAAS,cAAc,OAAO;AAAA,YAChC,CAAC;AAAA,YAED,IAAI,CAAC,SAAS,IAAI;AAAA,cAChB,MAAM,IAAI,MACR,iCAAiC,SAAS,UAAU,SAAS,YAC/D;AAAA,YACF;AAAA,YAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,YAClC,qBAAO,KAAK,gCAAgC,KAAK,MAAM,UAAU,qBAAqB;AAAA;AAAA,QAE1F;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA0C;AAAA,YACnD,MAAM,YAAY,MAAM,QAAQ,SAAS,wBAAU,gBAAgB;AAAA,cACjE,MAAM;AAAA,YACR,CAAC;AAAA,YAED,IAAI,CAAC,MAAM,QAAQ,SAAS,KAAK,UAAU,WAAW,GAAG;AAAA,cACvD,MAAM,IAAI,MAAM,2CAA2C;AAAA,YAC7D;AAAA,YAEA,qBAAO,KAAK,0CAA0C,UAAU,mBAAmB;AAAA;AAAA,QAEvF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA0C;AAAA,YACnD,MAAM,OAAO,MAAM,QAAQ,SAAS,wBAAU,YAAY;AAAA,cACxD,QAAQ;AAAA,YACV,CAAC;AAAA,YAED,IAAI,OAAO,SAAS,YAAY,KAAK,WAAW,GAAG;AAAA,cACjD,MAAM,IAAI,MAAM,2CAA2C;AAAA,YAC7D;AAAA,YAEA,qBAAO,KAAK,wCAAwC,KAAK,UAAU,GAAG,EAAE,OAAO;AAAA;AAAA,QAEnF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA0C;AAAA,YACnD,MAAM,OAAO,MAAM,QAAQ,SAAS,wBAAU,YAAY;AAAA,cACxD,QAAQ;AAAA,YACV,CAAC;AAAA,YAED,IAAI,OAAO,SAAS,YAAY,KAAK,WAAW,GAAG;AAAA,cACjD,MAAM,IAAI,MAAM,2CAA2C;AAAA,YAC7D;AAAA,YAEA,qBAAO,KAAK,wCAAwC,KAAK,UAAU,GAAG,EAAE,OAAO;AAAA;AAAA,QAEnF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA0C;AAAA,YACnD,MAAM,eAAe;AAAA,YAErB,MAAM,SAAS,MAAM,QAAQ,SAAS,wBAAU,uBAAuB;AAAA,cACrE,QAAQ;AAAA,cACR,WAAW,wBAAU;AAAA,YACvB,CAAC;AAAA,YAED,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,GAAG;AAAA,cACjD,MAAM,IAAI,MAAM,kDAAkD;AAAA,YACpE;AAAA,YAEA,MAAM,cAAc,MAAM,QAAQ,SAAS,wBAAU,uBAAuB;AAAA,cAC1E;AAAA,cACA,WAAW,wBAAU;AAAA,YACvB,CAAC;AAAA,YAED,IAAI,gBAAgB,cAAc;AAAA,cAChC,MAAM,IAAI,MACR,yCAAyC,uBAAuB,cAClE;AAAA,YACF;AAAA,YAEA,qBAAO,KAAK,iDAAiD,OAAO,gBAAgB;AAAA;AAAA,QAExF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA0C;AAAA,YACnD,MAAM,SAAmB,CAAC;AAAA,YAE1B,MAAM,SAAS,MAAM,QAAQ,SAAS,wBAAU,YAAY;AAAA,cAC1D,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,eAAe,CAAC,UAAkB;AAAA,gBAChC,OAAO,KAAK,KAAK;AAAA;AAAA,YAErB,CAAC;AAAA,YAED,IAAI,OAAO,WAAW,YAAY,OAAO,WAAW,GAAG;AAAA,cACrD,MAAM,IAAI,MAAM,0CAA0C;AAAA,YAC5D;AAAA,YAEA,IAAI,OAAO,WAAW,GAAG;AAAA,cACvB,MAAM,IAAI,MAAM,8BAA8B;AAAA,YAChD;AAAA,YAEA,qBAAO,KAAK,iCAAiC,OAAO,wBAAwB;AAAA;AAAA,QAEhF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA0C;AAAA,YACnD,MAAM,eACJ;AAAA,YAEF,MAAM,SAAS,MAAM,QAAQ,SAAS,wBAAU,mBAAmB,YAAY;AAAA,YAE/E,IACE,CAAC,UACD,OAAO,WAAW,YAClB,EAAE,WAAW,WACb,EAAE,iBAAiB,SACnB;AAAA,cACA,MAAM,IAAI,MAAM,wDAAwD;AAAA,YAC1E;AAAA,YAEA,qBAAO,KAAK,mCAAmC,OAAO,QAAQ;AAAA;AAAA,QAElE;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA0C;AAAA,YAEnD,MAAM,WACJ;AAAA,YAEF,MAAM,WAAW,MAAM,MAAM,QAAQ;AAAA,YACrC,MAAM,cAAc,MAAM,SAAS,YAAY;AAAA,YAC/C,MAAM,cAAc,OAAO,KAAK,IAAI,WAAW,WAAW,CAAC;AAAA,YAE3D,MAAM,gBAAgB,MAAM,QAAQ,SAAS,wBAAU,eAAe,WAAW;AAAA,YAEjF,IAAI,OAAO,kBAAkB,UAAU;AAAA,cACrC,MAAM,IAAI,MAAM,sCAAsC;AAAA,YACxD;AAAA,YAEA,qBAAO,KAAK,iCAAiC,cAAc,UAAU,GAAG,EAAE,OAAO;AAAA;AAAA,QAErF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA0C;AAAA,YACnD,MAAM,YAAY,MAAM,QAAQ,SAAS,wBAAU,gBAAgB;AAAA,cACjE,MAAM;AAAA,YACR,CAAC;AAAA,YAED,IAAI,EAAE,qBAAqB,gBAAgB,UAAU,eAAe,GAAG;AAAA,cACrE,MAAM,IAAI,MAAM,yCAAyC;AAAA,YAC3D;AAAA,YAEA,qBAAO,KAAK,+BAA+B,UAAU,2BAA2B;AAAA;AAAA,QAEpF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA0C;AAAA,YACnD,MAAM,SAAS,MAAM,QAAQ,SAAS,wBAAU,cAAc;AAAA,cAC5D,QACE;AAAA,YACJ,CAAC;AAAA,YAED,IAAI,CAAC,UAAU,OAAO,WAAW,UAAU;AAAA,cACzC,MAAM,IAAI,MAAM,2CAA2C;AAAA,YAC7D;AAAA,YAEA,qBAAO,KACL,mCAAmC,KAAK,UAAU,MAAM,EAAE,UAAU,GAAG,GAAG,GAC5E;AAAA;AAAA,QAEJ;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA0C;AAAA,YAGnD,MAAM,SAAS,MAAM,QAAQ,SAAS,wBAAU,UAAU;AAAA,cACxD,OAAO;AAAA,cACP,OAAO,CAAC,EAAE,MAAM,qBAAqB,CAAC;AAAA,cACtC,cAAc;AAAA,YAChB,CAAC;AAAA,YAED,IAAI,CAAC,UAAU,OAAO,WAAW,YAAY,EAAE,UAAU,SAAS;AAAA,cAChE,MAAM,IAAI,MAAM,qDAAqD;AAAA,YACvE;AAAA,YAEA,IAAI,OAAO,OAAO,SAAS,YAAY,OAAO,KAAK,WAAW,GAAG;AAAA,cAC/D,MAAM,IAAI,MAAM,mDAAmD;AAAA,YACrE;AAAA,YAEA,qBAAO,KACL,kDAAkD,OAAO,KAAK,wBAAwB,OAAO,aAAa,UAAU,GACtH;AAAA;AAAA,QAEJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAe;",
22
22
  "debugId": "23E20BA2231FE80864756E2164756E21",
23
23
  "names": []
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../models/embedding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAyCxE,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,GAC1C,OAAO,CAAC,MAAM,EAAE,CAAC,CA8EnB"}
1
+ {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../models/embedding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AA0CxE,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,GAC1C,OAAO,CAAC,MAAM,EAAE,CAAC,CA8EnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../models/text.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAiB,MAAM,eAAe,CAAC;AAItF,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,UAAU,CAAC;AAkJ7D;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAEpC;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAEpC"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../models/text.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAiB,MAAM,eAAe,CAAC;AAItF,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,UAAU,CAAC;AAgJ7D;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAEpC;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAEpC"}
@@ -7,18 +7,18 @@
7
7
  "import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nfunction getEnvValue(key: string): string | undefined {\n if (typeof process === \"undefined\" || !process.env) {\n return undefined;\n }\n const value = process.env[key];\n return value === undefined ? undefined : String(value);\n}\n\nexport function getSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue?: string\n): string | undefined {\n const value = runtime.getSetting(key);\n if (value !== undefined && value !== null) {\n return String(value);\n }\n return getEnvValue(key) ?? defaultValue;\n}\nexport function getRequiredSetting(\n runtime: IAgentRuntime,\n key: string,\n errorMessage?: string\n): string {\n const value = getSetting(runtime, key);\n if (value === undefined || value.trim() === \"\") {\n throw new Error(errorMessage ?? `Required setting '${key}' is not configured`);\n }\n return value;\n}\n\nexport function getNumericSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue: number\n): number {\n const value = getSetting(runtime, key);\n if (value === undefined) {\n return defaultValue;\n }\n const parsed = Number.parseInt(value, 10);\n if (!Number.isFinite(parsed)) {\n throw new Error(`Setting '${key}' must be a valid integer, got: ${value}`);\n }\n return parsed;\n}\n\nexport function getBooleanSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue: boolean\n): boolean {\n const value = getSetting(runtime, key);\n if (value === undefined) {\n return defaultValue;\n }\n const normalized = value.toLowerCase();\n return normalized === \"true\" || normalized === \"1\" || normalized === \"yes\";\n}\n\nexport function isBrowser(): boolean {\n return (\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as { document?: Document }).document !== \"undefined\"\n );\n}\n\nexport function isProxyMode(runtime: IAgentRuntime): boolean {\n return isBrowser() && !!getSetting(runtime, \"OPENAI_BROWSER_BASE_URL\");\n}\n\nexport function getApiKey(runtime: IAgentRuntime): string | undefined {\n return getSetting(runtime, \"OPENAI_API_KEY\");\n}\n\nexport function getEmbeddingApiKey(runtime: IAgentRuntime): string | undefined {\n const embeddingApiKey = getSetting(runtime, \"OPENAI_EMBEDDING_API_KEY\");\n if (embeddingApiKey) {\n logger.debug(\"[OpenAI] Using specific embedding API key\");\n return embeddingApiKey;\n }\n logger.debug(\"[OpenAI] Falling back to general API key for embeddings\");\n return getApiKey(runtime);\n}\n\nexport function getAuthHeader(\n runtime: IAgentRuntime,\n forEmbedding = false\n): Record<string, string> {\n // By default this plugin does NOT send auth headers in the browser. This is safer because\n // frontend builds would otherwise expose secrets. For local demos, you can explicitly\n // opt-in to sending the Authorization header by setting OPENAI_ALLOW_BROWSER_API_KEY=true.\n if (isBrowser() && !getBooleanSetting(runtime, \"OPENAI_ALLOW_BROWSER_API_KEY\", false)) {\n return {};\n }\n const key = forEmbedding ? getEmbeddingApiKey(runtime) : getApiKey(runtime);\n return key ? { Authorization: `Bearer ${key}` } : {};\n}\n\nexport function getBaseURL(runtime: IAgentRuntime): string {\n const browserURL = getSetting(runtime, \"OPENAI_BROWSER_BASE_URL\");\n const baseURL =\n isBrowser() && browserURL\n ? browserURL\n : (getSetting(runtime, \"OPENAI_BASE_URL\") ?? \"https://api.openai.com/v1\");\n logger.debug(`[OpenAI] Base URL: ${baseURL}`);\n return baseURL;\n}\n\nexport function getEmbeddingBaseURL(runtime: IAgentRuntime): string {\n const embeddingURL = isBrowser()\n ? (getSetting(runtime, \"OPENAI_BROWSER_EMBEDDING_URL\") ??\n getSetting(runtime, \"OPENAI_BROWSER_BASE_URL\"))\n : getSetting(runtime, \"OPENAI_EMBEDDING_URL\");\n\n if (embeddingURL) {\n logger.debug(`[OpenAI] Using embedding base URL: ${embeddingURL}`);\n return embeddingURL;\n }\n\n logger.debug(\"[OpenAI] Falling back to general base URL for embeddings\");\n return getBaseURL(runtime);\n}\n\nexport function getSmallModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENAI_SMALL_MODEL\") ?? getSetting(runtime, \"SMALL_MODEL\") ?? \"gpt-5-mini\"\n );\n}\n\nexport function getLargeModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_LARGE_MODEL\") ?? getSetting(runtime, \"LARGE_MODEL\") ?? \"gpt-5\";\n}\n\nexport function getEmbeddingModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_EMBEDDING_MODEL\") ?? \"text-embedding-3-small\";\n}\n\nexport function getImageDescriptionModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_IMAGE_DESCRIPTION_MODEL\") ?? \"gpt-5-mini\";\n}\n\nexport function getTranscriptionModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_TRANSCRIPTION_MODEL\") ?? \"gpt-5-mini-transcribe\";\n}\n\nexport function getTTSModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_TTS_MODEL\") ?? \"tts-1\";\n}\n\nexport function getTTSVoice(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_TTS_VOICE\") ?? \"nova\";\n}\n\nexport function getTTSInstructions(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_TTS_INSTRUCTIONS\") ?? \"\";\n}\n\nexport function getImageModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_IMAGE_MODEL\") ?? \"dall-e-3\";\n}\n\nexport function getExperimentalTelemetry(runtime: IAgentRuntime): boolean {\n return getBooleanSetting(runtime, \"OPENAI_EXPERIMENTAL_TELEMETRY\", false);\n}\n\nexport function getEmbeddingDimensions(runtime: IAgentRuntime): number {\n return getNumericSetting(runtime, \"OPENAI_EMBEDDING_DIMENSIONS\", 1536);\n}\n\nexport function getImageDescriptionMaxTokens(runtime: IAgentRuntime): number {\n return getNumericSetting(runtime, \"OPENAI_IMAGE_DESCRIPTION_MAX_TOKENS\", 8192);\n}\n\nexport function getResearchModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"OPENAI_RESEARCH_MODEL\") ?? \"o3-deep-research\";\n}\n\nexport function getResearchTimeout(runtime: IAgentRuntime): number {\n return getNumericSetting(runtime, \"OPENAI_RESEARCH_TIMEOUT\", 3600000);\n}\n",
8
8
  "import type {\n TextToSpeechParams as CoreTextToSpeechParams,\n TranscriptionParams as CoreTranscriptionParams,\n IAgentRuntime,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport type {\n TextToSpeechParams as LocalTextToSpeechParams,\n TranscriptionParams as LocalTranscriptionParams,\n OpenAITranscriptionResponse,\n TTSOutputFormat,\n TTSVoice,\n} from \"../types\";\nimport { detectAudioMimeType, getFilenameForMimeType } from \"../utils/audio\";\nimport {\n getAuthHeader,\n getBaseURL,\n getTranscriptionModel,\n getTTSInstructions,\n getTTSModel,\n getTTSVoice,\n} from \"../utils/config\";\n\ntype AudioInput = Blob | File | Buffer;\ntype TranscriptionInput = AudioInput | LocalTranscriptionParams | CoreTranscriptionParams | string;\ntype TTSInput = string | LocalTextToSpeechParams | CoreTextToSpeechParams;\n\nfunction isBlobOrFile(value: unknown): value is Blob | File {\n return value instanceof Blob || value instanceof File;\n}\n\nfunction isBuffer(value: unknown): value is Buffer {\n return Buffer.isBuffer(value);\n}\n\nfunction isLocalTranscriptionParams(value: unknown): value is LocalTranscriptionParams {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"audio\" in value &&\n (isBlobOrFile((value as LocalTranscriptionParams).audio) ||\n isBuffer((value as LocalTranscriptionParams).audio))\n );\n}\n\nfunction isCoreTranscriptionParams(value: unknown): value is CoreTranscriptionParams {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"audioUrl\" in value &&\n typeof (value as CoreTranscriptionParams).audioUrl === \"string\"\n );\n}\n\nasync function fetchAudioFromUrl(url: string): Promise<Blob> {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch audio from URL: ${response.status}`);\n }\n return response.blob();\n}\nexport async function handleTranscription(\n runtime: IAgentRuntime,\n input: TranscriptionInput\n): Promise<string> {\n let modelName = getTranscriptionModel(runtime);\n let blob: Blob;\n let extraParams: Partial<LocalTranscriptionParams> = {};\n\n if (typeof input === \"string\") {\n logger.debug(`[OpenAI] Fetching audio from URL: ${input}`);\n blob = await fetchAudioFromUrl(input);\n } else if (isBlobOrFile(input)) {\n blob = input;\n } else if (isBuffer(input)) {\n const mimeType = detectAudioMimeType(input);\n logger.debug(`[OpenAI] Auto-detected audio MIME type: ${mimeType}`);\n blob = new Blob([new Uint8Array(input)], { type: mimeType });\n } else if (isLocalTranscriptionParams(input)) {\n extraParams = input;\n if (input.model) {\n modelName = input.model;\n }\n if (isBuffer(input.audio)) {\n const mimeType = input.mimeType ?? detectAudioMimeType(input.audio);\n logger.debug(`[OpenAI] Using MIME type: ${mimeType}`);\n blob = new Blob([new Uint8Array(input.audio)], { type: mimeType });\n } else {\n blob = input.audio;\n }\n } else if (isCoreTranscriptionParams(input)) {\n logger.debug(`[OpenAI] Fetching audio from URL: ${input.audioUrl}`);\n blob = await fetchAudioFromUrl(input.audioUrl);\n extraParams = { prompt: input.prompt };\n } else {\n throw new Error(\n \"TRANSCRIPTION expects Blob, File, Buffer, URL string, or TranscriptionParams object\"\n );\n }\n\n logger.debug(`[OpenAI] Using TRANSCRIPTION model: ${modelName}`);\n\n const mimeType = (blob as File).type || \"audio/webm\";\n const filename =\n (blob as File).name ||\n getFilenameForMimeType(\n mimeType.startsWith(\"audio/\")\n ? (mimeType as ReturnType<typeof detectAudioMimeType>)\n : \"audio/webm\"\n );\n\n const formData = new FormData();\n formData.append(\"file\", blob, filename);\n formData.append(\"model\", modelName);\n\n if (extraParams.language) {\n formData.append(\"language\", extraParams.language);\n }\n if (extraParams.responseFormat) {\n formData.append(\"response_format\", extraParams.responseFormat);\n }\n if (extraParams.prompt) {\n formData.append(\"prompt\", extraParams.prompt);\n }\n if (extraParams.temperature !== undefined) {\n formData.append(\"temperature\", String(extraParams.temperature));\n }\n if (extraParams.timestampGranularities) {\n for (const granularity of extraParams.timestampGranularities) {\n formData.append(\"timestamp_granularities[]\", granularity);\n }\n }\n\n const baseURL = getBaseURL(runtime);\n const response = await fetch(`${baseURL}/audio/transcriptions`, {\n method: \"POST\",\n headers: getAuthHeader(runtime),\n body: formData,\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI transcription failed: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAITranscriptionResponse;\n return data.text;\n}\n\nexport async function handleTextToSpeech(\n runtime: IAgentRuntime,\n input: TTSInput\n): Promise<ArrayBuffer> {\n let text: string;\n let voice: string | undefined;\n let format: TTSOutputFormat = \"mp3\";\n let model: string | undefined;\n let instructions: string | undefined;\n\n if (typeof input === \"string\") {\n text = input;\n voice = undefined;\n } else {\n text = input.text;\n voice = input.voice;\n if (\"format\" in input && input.format) {\n format = input.format;\n }\n if (\"model\" in input && input.model) {\n model = input.model;\n }\n if (\"instructions\" in input && input.instructions) {\n instructions = input.instructions;\n }\n }\n\n model = model ?? getTTSModel(runtime);\n voice = voice ?? getTTSVoice(runtime);\n instructions = instructions ?? getTTSInstructions(runtime);\n\n logger.debug(`[OpenAI] Using TEXT_TO_SPEECH model: ${model}`);\n\n if (!text || text.trim().length === 0) {\n throw new Error(\"TEXT_TO_SPEECH requires non-empty text\");\n }\n\n if (text.length > 4096) {\n throw new Error(\"TEXT_TO_SPEECH text exceeds 4096 character limit\");\n }\n\n const validVoices: TTSVoice[] = [\"alloy\", \"echo\", \"fable\", \"onyx\", \"nova\", \"shimmer\"];\n if (voice && !validVoices.includes(voice as TTSVoice)) {\n throw new Error(`Invalid voice: ${voice}. Must be one of: ${validVoices.join(\", \")}`);\n }\n\n const baseURL = getBaseURL(runtime);\n\n const requestBody: Record<string, string> = {\n model,\n voice: voice as TTSVoice,\n input: text,\n response_format: format,\n };\n\n if (instructions && instructions.length > 0) {\n requestBody.instructions = instructions;\n }\n\n const response = await fetch(`${baseURL}/audio/speech`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime),\n \"Content-Type\": \"application/json\",\n ...(format === \"mp3\" ? { Accept: \"audio/mpeg\" } : {}),\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(`OpenAI TTS failed: ${response.status} ${response.statusText} - ${errorText}`);\n }\n\n return response.arrayBuffer();\n}\n",
9
9
  "import { logger } from \"@elizaos/core\";\n\nconst MAGIC_BYTES = {\n WAV: {\n HEADER: [0x52, 0x49, 0x46, 0x46] as const, // \"RIFF\"\n IDENTIFIER: [0x57, 0x41, 0x56, 0x45] as const, // \"WAVE\"\n },\n MP3_ID3: [0x49, 0x44, 0x33] as const, // \"ID3\"\n OGG: [0x4f, 0x67, 0x67, 0x53] as const, // \"OggS\"\n FLAC: [0x66, 0x4c, 0x61, 0x43] as const, // \"fLaC\"\n FTYP: [0x66, 0x74, 0x79, 0x70] as const, // \"ftyp\" at offset 4 for mp4/m4a\n WEBM_EBML: [0x1a, 0x45, 0xdf, 0xa3] as const, // EBML header\n} as const;\n\nconst MIN_DETECTION_BUFFER_SIZE = 12;\n\nexport type AudioMimeType =\n | \"audio/wav\"\n | \"audio/mpeg\"\n | \"audio/ogg\"\n | \"audio/flac\"\n | \"audio/mp4\"\n | \"audio/webm\"\n | \"application/octet-stream\";\n\nfunction matchBytes(buffer: Buffer, offset: number, expected: readonly number[]): boolean {\n for (let i = 0; i < expected.length; i++) {\n const expectedByte = expected[i];\n if (expectedByte === undefined || buffer[offset + i] !== expectedByte) {\n return false;\n }\n }\n return true;\n}\n\nexport function detectAudioMimeType(buffer: Buffer): AudioMimeType {\n if (buffer.length < MIN_DETECTION_BUFFER_SIZE) {\n return \"application/octet-stream\";\n }\n\n // WAV: \"RIFF\" + size + \"WAVE\"\n if (\n matchBytes(buffer, 0, MAGIC_BYTES.WAV.HEADER) &&\n matchBytes(buffer, 8, MAGIC_BYTES.WAV.IDENTIFIER)\n ) {\n return \"audio/wav\";\n }\n\n // MP3: ID3 tag or MPEG frame sync\n const firstByte = buffer[0];\n const secondByte = buffer[1];\n if (\n matchBytes(buffer, 0, MAGIC_BYTES.MP3_ID3) ||\n (firstByte === 0xff && secondByte !== undefined && (secondByte & 0xe0) === 0xe0)\n ) {\n return \"audio/mpeg\";\n }\n\n // OGG: \"OggS\"\n if (matchBytes(buffer, 0, MAGIC_BYTES.OGG)) {\n return \"audio/ogg\";\n }\n\n // FLAC: \"fLaC\"\n if (matchBytes(buffer, 0, MAGIC_BYTES.FLAC)) {\n return \"audio/flac\";\n }\n\n // M4A/MP4: \"ftyp\" at offset 4\n if (matchBytes(buffer, 4, MAGIC_BYTES.FTYP)) {\n return \"audio/mp4\";\n }\n\n // WebM: EBML header\n if (matchBytes(buffer, 0, MAGIC_BYTES.WEBM_EBML)) {\n return \"audio/webm\";\n }\n\n logger.warn(\"Could not detect audio format from buffer, using generic binary type\");\n return \"application/octet-stream\";\n}\n\nexport function getExtensionForMimeType(mimeType: AudioMimeType): string {\n switch (mimeType) {\n case \"audio/wav\":\n return \"wav\";\n case \"audio/mpeg\":\n return \"mp3\";\n case \"audio/ogg\":\n return \"ogg\";\n case \"audio/flac\":\n return \"flac\";\n case \"audio/mp4\":\n return \"m4a\";\n case \"audio/webm\":\n return \"webm\";\n case \"application/octet-stream\":\n return \"bin\";\n }\n}\n\nexport function getFilenameForMimeType(mimeType: AudioMimeType): string {\n const ext = getExtensionForMimeType(mimeType);\n return `recording.${ext}`;\n}\n\nexport function validateAudioFormat(buffer: Buffer): AudioMimeType {\n const mimeType = detectAudioMimeType(buffer);\n if (mimeType === \"application/octet-stream\") {\n throw new Error(\n \"Unable to detect audio format. Supported formats: WAV, MP3, OGG, FLAC, M4A, WebM\"\n );\n }\n return mimeType;\n}\n",
10
- "import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { logger, ModelType, VECTOR_DIMS } from \"@elizaos/core\";\n\n// Safe default that matches @elizaos/core's MAX_EMBEDDING_TOKENS (8 000).\n// Defined locally so the plugin doesn't break against core versions older\n// than 2.0.0-alpha.4 where the symbol wasn't exported yet.\nconst MAX_EMBEDDING_TOKENS = 8_000;\nimport type { OpenAIEmbeddingResponse } from \"../types\";\nimport {\n getAuthHeader,\n getEmbeddingBaseURL,\n getEmbeddingDimensions,\n getEmbeddingModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\ntype VectorDimension = (typeof VECTOR_DIMS)[keyof typeof VECTOR_DIMS];\n\nfunction validateDimension(dimension: number): VectorDimension {\n const validDimensions = Object.values(VECTOR_DIMS) as number[];\n if (!validDimensions.includes(dimension)) {\n throw new Error(\n `Invalid embedding dimension: ${dimension}. Must be one of: ${validDimensions.join(\", \")}`\n );\n }\n return dimension as VectorDimension;\n}\n\nfunction extractText(params: TextEmbeddingParams | string | null): string | null {\n if (params === null) {\n return null;\n }\n if (typeof params === \"string\") {\n return params;\n }\n if (typeof params === \"object\" && typeof params.text === \"string\") {\n return params.text;\n }\n throw new Error(\"Invalid embedding params: expected string, { text: string }, or null\");\n}\n\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n const embeddingModel = getEmbeddingModel(runtime);\n const embeddingDimension = validateDimension(getEmbeddingDimensions(runtime));\n\n const text = extractText(params);\n if (text === null) {\n logger.debug(\"[OpenAI] Creating test embedding for initialization\");\n const testVector = new Array(embeddingDimension).fill(0);\n testVector[0] = 0.1;\n return testVector;\n }\n\n let trimmedText = text.trim();\n if (trimmedText.length === 0) {\n throw new Error(\"Cannot generate embedding for empty text\");\n }\n\n // Truncate to stay within embedding model token limits.\n // OpenAI embedding models support up to 8191 tokens per input;\n // MAX_EMBEDDING_TOKENS (8 000) provides a safe buffer.\n const maxChars = MAX_EMBEDDING_TOKENS * 4; // ~4 chars per token\n if (trimmedText.length > maxChars) {\n logger.warn(\n `[OpenAI] Embedding input too long (~${Math.ceil(trimmedText.length / 4)} tokens), truncating to ~${MAX_EMBEDDING_TOKENS} tokens`\n );\n trimmedText = trimmedText.slice(0, maxChars);\n }\n\n const baseURL = getEmbeddingBaseURL(runtime);\n const url = `${baseURL}/embeddings`;\n\n logger.debug(`[OpenAI] Generating embedding with model: ${embeddingModel}`);\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime, true),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n model: embeddingModel,\n input: trimmedText,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI embedding API error: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAIEmbeddingResponse;\n\n const firstResult = data?.data?.[0];\n if (!firstResult || !firstResult.embedding) {\n throw new Error(\"OpenAI API returned invalid embedding response structure\");\n }\n\n const embedding = firstResult.embedding;\n\n if (embedding.length !== embeddingDimension) {\n throw new Error(\n `Embedding dimension mismatch: got ${embedding.length}, expected ${embeddingDimension}. ` +\n `Check OPENAI_EMBEDDING_DIMENSIONS setting.`\n );\n }\n\n if (data.usage) {\n emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, trimmedText, {\n promptTokens: data.usage.prompt_tokens,\n completionTokens: 0,\n totalTokens: data.usage.total_tokens,\n });\n }\n\n logger.debug(`[OpenAI] Generated embedding with ${embedding.length} dimensions`);\n return embedding;\n}\n",
11
- "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { EventType } from \"@elizaos/core\";\nimport type { TokenUsage } from \"../types\";\n\nconst MAX_PROMPT_LENGTH = 200;\n\ninterface ModelUsageEventPayload {\n runtime: IAgentRuntime;\n source: \"openai\";\n provider: \"openai\";\n type: ModelTypeName;\n prompt: string;\n tokens: {\n prompt: number;\n completion: number;\n total: number;\n cached?: number;\n };\n}\n\ninterface AISDKUsage {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n}\n\ninterface OpenAIAPIUsage {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n cachedPromptTokens?: number;\n promptTokensDetails?: {\n cachedTokens?: number;\n };\n}\n\ntype ModelUsage = TokenUsage | AISDKUsage | OpenAIAPIUsage;\n\nfunction truncatePrompt(prompt: string): string {\n if (prompt.length <= MAX_PROMPT_LENGTH) {\n return prompt;\n }\n return `${prompt.slice(0, MAX_PROMPT_LENGTH)}…`;\n}\n\nfunction normalizeUsage(usage: ModelUsage): TokenUsage {\n if (\"promptTokens\" in usage) {\n const promptTokensDetails =\n \"promptTokensDetails\" in usage ? usage.promptTokensDetails : undefined;\n const cachedPromptTokens =\n usage.cachedPromptTokens ?? promptTokensDetails?.cachedTokens;\n return {\n promptTokens: usage.promptTokens ?? 0,\n completionTokens: usage.completionTokens ?? 0,\n totalTokens: usage.totalTokens ?? (usage.promptTokens ?? 0) + (usage.completionTokens ?? 0),\n cachedPromptTokens,\n };\n }\n if (\"inputTokens\" in usage || \"outputTokens\" in usage) {\n const input = (usage as AISDKUsage).inputTokens ?? 0;\n const output = (usage as AISDKUsage).outputTokens ?? 0;\n const total = (usage as AISDKUsage).totalTokens ?? input + output;\n return {\n promptTokens: input,\n completionTokens: output,\n totalTokens: total,\n cachedPromptTokens: (usage as AISDKUsage).cachedInputTokens,\n };\n }\n return {\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n };\n}\n\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n prompt: string,\n usage: ModelUsage\n): void {\n const normalized = normalizeUsage(usage);\n\n const payload: ModelUsageEventPayload = {\n runtime,\n source: \"openai\",\n provider: \"openai\",\n type,\n prompt: truncatePrompt(prompt),\n tokens: {\n prompt: normalized.promptTokens,\n completion: normalized.completionTokens,\n total: normalized.totalTokens,\n ...(normalized.cachedPromptTokens !== undefined\n ? { cached: normalized.cachedPromptTokens }\n : {}),\n },\n };\n\n runtime.emitEvent(EventType.MODEL_USED, payload);\n}\n",
10
+ "import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { logger, ModelType, VECTOR_DIMS } from \"@elizaos/core\";\n\n// Safe default that matches @elizaos/core's MAX_EMBEDDING_TOKENS (8 000).\n// Defined locally so the plugin doesn't break against core versions older\n// than 2.0.0-alpha.4 where the symbol wasn't exported yet.\nconst MAX_EMBEDDING_TOKENS = 8_000;\n\nimport type { OpenAIEmbeddingResponse } from \"../types\";\nimport {\n getAuthHeader,\n getEmbeddingBaseURL,\n getEmbeddingDimensions,\n getEmbeddingModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\ntype VectorDimension = (typeof VECTOR_DIMS)[keyof typeof VECTOR_DIMS];\n\nfunction validateDimension(dimension: number): VectorDimension {\n const validDimensions = Object.values(VECTOR_DIMS) as number[];\n if (!validDimensions.includes(dimension)) {\n throw new Error(\n `Invalid embedding dimension: ${dimension}. Must be one of: ${validDimensions.join(\", \")}`\n );\n }\n return dimension as VectorDimension;\n}\n\nfunction extractText(params: TextEmbeddingParams | string | null): string | null {\n if (params === null) {\n return null;\n }\n if (typeof params === \"string\") {\n return params;\n }\n if (typeof params === \"object\" && typeof params.text === \"string\") {\n return params.text;\n }\n throw new Error(\"Invalid embedding params: expected string, { text: string }, or null\");\n}\n\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n const embeddingModel = getEmbeddingModel(runtime);\n const embeddingDimension = validateDimension(getEmbeddingDimensions(runtime));\n\n const text = extractText(params);\n if (text === null) {\n logger.debug(\"[OpenAI] Creating test embedding for initialization\");\n const testVector = new Array(embeddingDimension).fill(0);\n testVector[0] = 0.1;\n return testVector;\n }\n\n let trimmedText = text.trim();\n if (trimmedText.length === 0) {\n throw new Error(\"Cannot generate embedding for empty text\");\n }\n\n // Truncate to stay within embedding model token limits.\n // OpenAI embedding models support up to 8191 tokens per input;\n // MAX_EMBEDDING_TOKENS (8 000) provides a safe buffer.\n const maxChars = MAX_EMBEDDING_TOKENS * 4; // ~4 chars per token\n if (trimmedText.length > maxChars) {\n logger.warn(\n `[OpenAI] Embedding input too long (~${Math.ceil(trimmedText.length / 4)} tokens), truncating to ~${MAX_EMBEDDING_TOKENS} tokens`\n );\n trimmedText = trimmedText.slice(0, maxChars);\n }\n\n const baseURL = getEmbeddingBaseURL(runtime);\n const url = `${baseURL}/embeddings`;\n\n logger.debug(`[OpenAI] Generating embedding with model: ${embeddingModel}`);\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime, true),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n model: embeddingModel,\n input: trimmedText,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI embedding API error: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAIEmbeddingResponse;\n\n const firstResult = data?.data?.[0];\n if (!firstResult || !firstResult.embedding) {\n throw new Error(\"OpenAI API returned invalid embedding response structure\");\n }\n\n const embedding = firstResult.embedding;\n\n if (embedding.length !== embeddingDimension) {\n throw new Error(\n `Embedding dimension mismatch: got ${embedding.length}, expected ${embeddingDimension}. ` +\n `Check OPENAI_EMBEDDING_DIMENSIONS setting.`\n );\n }\n\n if (data.usage) {\n emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, trimmedText, {\n promptTokens: data.usage.prompt_tokens,\n completionTokens: 0,\n totalTokens: data.usage.total_tokens,\n });\n }\n\n logger.debug(`[OpenAI] Generated embedding with ${embedding.length} dimensions`);\n return embedding;\n}\n",
11
+ "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { EventType } from \"@elizaos/core\";\nimport type { TokenUsage } from \"../types\";\n\nconst MAX_PROMPT_LENGTH = 200;\n\ninterface ModelUsageEventPayload {\n runtime: IAgentRuntime;\n source: \"openai\";\n provider: \"openai\";\n type: ModelTypeName;\n prompt: string;\n tokens: {\n prompt: number;\n completion: number;\n total: number;\n cached?: number;\n };\n}\n\ninterface AISDKUsage {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n}\n\ninterface OpenAIAPIUsage {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n cachedPromptTokens?: number;\n promptTokensDetails?: {\n cachedTokens?: number;\n };\n}\n\ntype ModelUsage = TokenUsage | AISDKUsage | OpenAIAPIUsage;\n\nfunction truncatePrompt(prompt: string): string {\n if (prompt.length <= MAX_PROMPT_LENGTH) {\n return prompt;\n }\n return `${prompt.slice(0, MAX_PROMPT_LENGTH)}…`;\n}\n\nfunction normalizeUsage(usage: ModelUsage): TokenUsage {\n if (\"promptTokens\" in usage) {\n const promptTokensDetails =\n \"promptTokensDetails\" in usage ? usage.promptTokensDetails : undefined;\n const cachedPromptTokens = usage.cachedPromptTokens ?? promptTokensDetails?.cachedTokens;\n return {\n promptTokens: usage.promptTokens ?? 0,\n completionTokens: usage.completionTokens ?? 0,\n totalTokens: usage.totalTokens ?? (usage.promptTokens ?? 0) + (usage.completionTokens ?? 0),\n cachedPromptTokens,\n };\n }\n if (\"inputTokens\" in usage || \"outputTokens\" in usage) {\n const input = (usage as AISDKUsage).inputTokens ?? 0;\n const output = (usage as AISDKUsage).outputTokens ?? 0;\n const total = (usage as AISDKUsage).totalTokens ?? input + output;\n return {\n promptTokens: input,\n completionTokens: output,\n totalTokens: total,\n cachedPromptTokens: (usage as AISDKUsage).cachedInputTokens,\n };\n }\n return {\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n };\n}\n\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n prompt: string,\n usage: ModelUsage\n): void {\n const normalized = normalizeUsage(usage);\n\n const payload: ModelUsageEventPayload = {\n runtime,\n source: \"openai\",\n provider: \"openai\",\n type,\n prompt: truncatePrompt(prompt),\n tokens: {\n prompt: normalized.promptTokens,\n completion: normalized.completionTokens,\n total: normalized.totalTokens,\n ...(normalized.cachedPromptTokens !== undefined\n ? { cached: normalized.cachedPromptTokens }\n : {}),\n },\n };\n\n runtime.emitEvent(EventType.MODEL_USED, payload);\n}\n",
12
12
  "import type { IAgentRuntime, ImageDescriptionParams, ImageGenerationParams } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport type {\n ImageDescriptionResult,\n ImageGenerationResult,\n ImageQuality,\n ImageSize,\n ImageStyle,\n OpenAIChatCompletionResponse,\n OpenAIImageGenerationResponse,\n} from \"../types\";\nimport {\n getAuthHeader,\n getBaseURL,\n getImageDescriptionMaxTokens,\n getImageDescriptionModel,\n getImageModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\ninterface ExtendedImageGenerationParams extends ImageGenerationParams {\n quality?: ImageQuality;\n style?: ImageStyle;\n}\n\nconst DEFAULT_IMAGE_DESCRIPTION_PROMPT =\n \"Please analyze this image and provide a title and detailed description.\";\n\nexport async function handleImageGeneration(\n runtime: IAgentRuntime,\n params: ImageGenerationParams\n): Promise<ImageGenerationResult[]> {\n const modelName = getImageModel(runtime);\n const count = params.count ?? 1;\n const size: ImageSize = (params.size as ImageSize) ?? \"1024x1024\";\n const extendedParams = params as ExtendedImageGenerationParams;\n\n logger.debug(`[OpenAI] Using IMAGE model: ${modelName}`);\n\n if (!params.prompt || params.prompt.trim().length === 0) {\n throw new Error(\"IMAGE generation requires a non-empty prompt\");\n }\n\n if (count < 1 || count > 10) {\n throw new Error(\"IMAGE count must be between 1 and 10\");\n }\n\n const baseURL = getBaseURL(runtime);\n\n const requestBody: Record<string, string | number> = {\n model: modelName,\n prompt: params.prompt,\n n: count,\n size,\n };\n\n if (extendedParams.quality) {\n requestBody.quality = extendedParams.quality;\n }\n if (extendedParams.style) {\n requestBody.style = extendedParams.style;\n }\n\n const response = await fetch(`${baseURL}/images/generations`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI image generation failed: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAIImageGenerationResponse;\n\n if (!data.data || data.data.length === 0) {\n throw new Error(\"OpenAI API returned no images\");\n }\n\n return data.data.map((item) => ({\n url: item.url,\n revisedPrompt: item.revised_prompt,\n }));\n}\n\nfunction parseTitleFromResponse(content: string): string {\n const titleMatch = content.match(/title[:\\s]+(.+?)(?:\\n|$)/i);\n return titleMatch?.[1]?.trim() ?? \"Image Analysis\";\n}\n\nfunction parseDescriptionFromResponse(content: string): string {\n return content.replace(/title[:\\s]+(.+?)(?:\\n|$)/i, \"\").trim();\n}\n\nexport async function handleImageDescription(\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string\n): Promise<ImageDescriptionResult> {\n const modelName = getImageDescriptionModel(runtime);\n const maxTokens = getImageDescriptionMaxTokens(runtime);\n\n logger.debug(`[OpenAI] Using IMAGE_DESCRIPTION model: ${modelName}`);\n\n let imageUrl: string;\n let promptText: string;\n\n if (typeof params === \"string\") {\n imageUrl = params;\n promptText = DEFAULT_IMAGE_DESCRIPTION_PROMPT;\n } else {\n imageUrl = params.imageUrl;\n promptText = params.prompt ?? DEFAULT_IMAGE_DESCRIPTION_PROMPT;\n }\n\n if (!imageUrl || imageUrl.trim().length === 0) {\n throw new Error(\"IMAGE_DESCRIPTION requires a valid image URL\");\n }\n\n const baseURL = getBaseURL(runtime);\n\n const requestBody = {\n model: modelName,\n messages: [\n {\n role: \"user\",\n content: [\n { type: \"text\", text: promptText },\n { type: \"image_url\", image_url: { url: imageUrl } },\n ],\n },\n ],\n max_tokens: maxTokens,\n };\n\n const response = await fetch(`${baseURL}/chat/completions`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n throw new Error(\n `OpenAI image description failed: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n const data = (await response.json()) as OpenAIChatCompletionResponse;\n\n if (data.usage) {\n emitModelUsageEvent(\n runtime,\n ModelType.IMAGE_DESCRIPTION,\n typeof params === \"string\" ? params : (params.prompt ?? \"\"),\n {\n promptTokens: data.usage.prompt_tokens,\n completionTokens: data.usage.completion_tokens,\n totalTokens: data.usage.total_tokens,\n }\n );\n }\n\n const firstChoice = data.choices?.[0];\n const content = firstChoice?.message?.content;\n\n if (!content) {\n throw new Error(\"OpenAI API returned empty image description\");\n }\n\n return {\n title: parseTitleFromResponse(content),\n description: parseDescriptionFromResponse(content),\n };\n}\n",
13
13
  "import type {\n IAgentRuntime,\n JsonValue,\n ModelTypeName,\n ObjectGenerationParams,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateObject, type LanguageModel } from \"ai\";\nimport { createOpenAIClient } from \"../providers\";\nimport { getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\nimport { getJsonRepairFunction } from \"../utils/json\";\n\ntype ModelNameGetter = (runtime: IAgentRuntime) => string;\ntype ChatModelFactory = { chat: (modelName: string) => LanguageModel };\n\nasync function generateObjectByModelType(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams,\n modelType: ModelTypeName,\n getModelFn: ModelNameGetter\n): Promise<Record<string, JsonValue>> {\n const openai = createOpenAIClient(runtime) as ChatModelFactory;\n const modelName = getModelFn(runtime);\n\n logger.debug(`[OpenAI] Using ${modelType} model: ${modelName}`);\n\n if (!params.prompt || params.prompt.trim().length === 0) {\n throw new Error(\"Object generation requires a non-empty prompt\");\n }\n\n if (params.schema) {\n logger.debug(\n \"[OpenAI] Schema provided but using no-schema mode. \" +\n \"Structure is determined by prompt instructions.\"\n );\n }\n\n const model = openai.chat(modelName);\n const { object, usage } = await generateObject({\n model,\n output: \"no-schema\",\n prompt: params.prompt,\n experimental_repairText: getJsonRepairFunction(),\n });\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, params.prompt, usage);\n }\n\n if (typeof object !== \"object\" || object === null) {\n throw new Error(`Object generation returned ${typeof object}, expected object`);\n }\n\n return object as Record<string, JsonValue>;\n}\n\nexport async function handleObjectSmall(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n return generateObjectByModelType(runtime, params, ModelType.OBJECT_SMALL, getSmallModel);\n}\n\nexport async function handleObjectLarge(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n return generateObjectByModelType(runtime, params, ModelType.OBJECT_LARGE, getLargeModel);\n}\n",
14
14
  "import { createOpenAI, type OpenAIProvider } from \"@ai-sdk/openai\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport { getApiKey, getBaseURL, isProxyMode } from \"../utils/config\";\n\nconst PROXY_API_KEY = \"sk-proxy\";\n\nexport function createOpenAIClient(runtime: IAgentRuntime): OpenAIProvider {\n const baseURL = getBaseURL(runtime);\n const apiKey = getApiKey(runtime);\n\n if (!apiKey && isProxyMode(runtime)) {\n return createOpenAI({\n apiKey: PROXY_API_KEY,\n baseURL,\n });\n }\n\n if (!apiKey) {\n throw new Error(\n \"OPENAI_API_KEY is required. Set it in your environment variables or runtime settings.\"\n );\n }\n\n return createOpenAI({\n apiKey,\n baseURL,\n });\n}\n",
15
15
  "import { logger } from \"@elizaos/core\";\nimport { JSONParseError } from \"ai\";\n\ninterface JsonRepairParams {\n text: string;\n error: Error;\n}\n\ntype JsonRepairFunction = (params: JsonRepairParams) => Promise<string | null>;\n\nconst JSON_CLEANUP_PATTERNS = {\n MARKDOWN_JSON: /```json\\n|\\n```|```/g,\n WHITESPACE: /^\\s+|\\s+$/g,\n} as const;\n\nexport function getJsonRepairFunction(): JsonRepairFunction {\n return async ({ text, error }: JsonRepairParams): Promise<string | null> => {\n if (!(error instanceof JSONParseError)) {\n return null;\n }\n try {\n const cleanedText = text.replace(JSON_CLEANUP_PATTERNS.MARKDOWN_JSON, \"\");\n JSON.parse(cleanedText);\n logger.debug(\"[JSON Repair] Successfully repaired JSON by removing markdown wrappers\");\n return cleanedText;\n } catch {\n logger.warn(\"[JSON Repair] Unable to repair JSON text\");\n return null;\n }\n };\n}\n\nexport function parseJsonWithRepair<T>(text: string): T {\n try {\n return JSON.parse(text) as T;\n } catch (firstError) {\n const cleanedText = text.replace(JSON_CLEANUP_PATTERNS.MARKDOWN_JSON, \"\");\n try {\n return JSON.parse(cleanedText) as T;\n } catch {\n const message = firstError instanceof Error ? firstError.message : String(firstError);\n throw new Error(`Failed to parse JSON: ${message}`);\n }\n }\n}\n\nexport function safeStringify(value: unknown, indent = 0): string {\n const seen = new WeakSet();\n\n const replacer = (_key: string, val: unknown): unknown => {\n if (typeof val === \"object\" && val !== null) {\n if (seen.has(val)) {\n return \"[Circular]\";\n }\n seen.add(val);\n }\n\n // Handle special types\n if (typeof val === \"bigint\") {\n return val.toString();\n }\n\n if (val instanceof Error) {\n return {\n name: val.name,\n message: val.message,\n stack: val.stack,\n };\n }\n\n if (val instanceof Date) {\n return val.toISOString();\n }\n\n if (val instanceof Map) {\n return Object.fromEntries(val);\n }\n\n if (val instanceof Set) {\n return Array.from(val);\n }\n\n return val;\n };\n\n return JSON.stringify(value, replacer, indent);\n}\n",
16
16
  "/**\n * Deep Research model handler\n *\n * Provides deep research capabilities using OpenAI's o3-deep-research and o4-mini-deep-research models.\n * These models can find, analyze, and synthesize hundreds of sources to create comprehensive reports.\n *\n * @see https://platform.openai.com/docs/guides/deep-research\n */\n\nimport type {\n IAgentRuntime,\n JsonValue,\n ResearchAnnotation,\n ResearchCodeInterpreterCall,\n ResearchFileSearchCall,\n ResearchMcpToolCall,\n ResearchMessageOutput,\n ResearchOutputItem,\n ResearchParams,\n ResearchResult,\n ResearchTool,\n ResearchWebSearchCall,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport { getApiKey, getBaseURL, getResearchModel, getResearchTimeout } from \"../utils/config\";\n\n// ============================================================================\n// Types for OpenAI Responses API\n// ============================================================================\n\n/**\n * Tool configuration for the Responses API\n */\ninterface ResponsesApiTool {\n type: \"web_search_preview\" | \"file_search\" | \"code_interpreter\" | \"mcp\";\n vector_store_ids?: string[];\n container?: { type: \"auto\" };\n server_label?: string;\n server_url?: string;\n require_approval?: \"never\";\n}\n\n/**\n * Raw response from the OpenAI Responses API\n */\ninterface ResponsesApiResponse {\n id: string;\n object: string;\n status?: \"queued\" | \"in_progress\" | \"completed\" | \"failed\";\n output?: ResponsesApiOutputItem[];\n output_text?: string;\n error?: {\n message: string;\n code: string;\n };\n}\n\n/**\n * Raw output item from the Responses API\n */\ninterface ResponsesApiOutputItem {\n id?: string;\n type: string;\n status?: string;\n action?: {\n type: string;\n query?: string;\n url?: string;\n };\n query?: string;\n results?: Array<{\n file_id: string;\n file_name: string;\n score: number;\n }>;\n code?: string;\n output?: string;\n server_label?: string;\n tool_name?: string;\n arguments?: Record<string, unknown>;\n result?: unknown;\n content?: Array<{\n type: string;\n text: string;\n annotations?: Array<{\n url: string;\n title: string;\n start_index: number;\n end_index: number;\n }>;\n }>;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Converts ResearchTool params to Responses API tool format\n */\nfunction convertToolToApi(tool: ResearchTool): ResponsesApiTool {\n switch (tool.type) {\n case \"web_search_preview\":\n return { type: \"web_search_preview\" };\n case \"file_search\":\n return {\n type: \"file_search\",\n vector_store_ids: tool.vectorStoreIds,\n };\n case \"code_interpreter\":\n return {\n type: \"code_interpreter\",\n container: tool.container ?? { type: \"auto\" },\n };\n case \"mcp\":\n return {\n type: \"mcp\",\n server_label: tool.serverLabel,\n server_url: tool.serverUrl,\n require_approval: tool.requireApproval ?? \"never\",\n };\n default:\n throw new Error(`Unknown research tool type: ${(tool as ResearchTool).type}`);\n }\n}\n\n/**\n * Converts raw API output items to typed ResearchOutputItem\n */\nfunction convertOutputItem(item: ResponsesApiOutputItem): ResearchOutputItem | null {\n switch (item.type) {\n case \"web_search_call\":\n return {\n id: item.id ?? \"\",\n type: \"web_search_call\",\n status: (item.status as \"completed\" | \"failed\") ?? \"completed\",\n action: {\n type: (item.action?.type as \"search\" | \"open_page\" | \"find_in_page\") ?? \"search\",\n query: item.action?.query,\n url: item.action?.url,\n },\n } satisfies ResearchWebSearchCall;\n\n case \"file_search_call\":\n return {\n id: item.id ?? \"\",\n type: \"file_search_call\",\n status: (item.status as \"completed\" | \"failed\") ?? \"completed\",\n query: item.query ?? \"\",\n results: item.results?.map((r) => ({\n fileId: r.file_id,\n fileName: r.file_name,\n score: r.score,\n })),\n } satisfies ResearchFileSearchCall;\n\n case \"code_interpreter_call\":\n return {\n id: item.id ?? \"\",\n type: \"code_interpreter_call\",\n status: (item.status as \"completed\" | \"failed\") ?? \"completed\",\n code: item.code ?? \"\",\n output: item.output,\n } satisfies ResearchCodeInterpreterCall;\n\n case \"mcp_tool_call\":\n return {\n id: item.id ?? \"\",\n type: \"mcp_tool_call\",\n status: (item.status as \"completed\" | \"failed\") ?? \"completed\",\n serverLabel: item.server_label ?? \"\",\n toolName: item.tool_name ?? \"\",\n arguments: (item.arguments ?? {}) as Record<string, JsonValue>,\n result: item.result as JsonValue,\n } satisfies ResearchMcpToolCall;\n\n case \"message\":\n return {\n type: \"message\",\n content:\n item.content?.map((c) => ({\n type: \"output_text\" as const,\n text: c.text,\n annotations:\n c.annotations?.map((a) => ({\n url: a.url,\n title: a.title,\n startIndex: a.start_index,\n endIndex: a.end_index,\n })) ?? [],\n })) ?? [],\n } satisfies ResearchMessageOutput;\n\n default:\n // Unknown output type, skip\n return null;\n }\n}\n\n/**\n * Extracts text and annotations from the response\n */\nfunction extractTextAndAnnotations(response: ResponsesApiResponse): {\n text: string;\n annotations: ResearchAnnotation[];\n} {\n // Try output_text first (convenience field)\n if (response.output_text) {\n // Find annotations from message output items\n const annotations: ResearchAnnotation[] = [];\n if (response.output) {\n for (const item of response.output) {\n if (item.type === \"message\" && item.content) {\n for (const content of item.content) {\n if (content.annotations) {\n for (const ann of content.annotations) {\n annotations.push({\n url: ann.url,\n title: ann.title,\n startIndex: ann.start_index,\n endIndex: ann.end_index,\n });\n }\n }\n }\n }\n }\n }\n return { text: response.output_text, annotations };\n }\n\n // Fall back to extracting from message output items\n let text = \"\";\n const annotations: ResearchAnnotation[] = [];\n\n if (response.output) {\n for (const item of response.output) {\n if (item.type === \"message\" && item.content) {\n for (const content of item.content) {\n text += content.text;\n if (content.annotations) {\n for (const ann of content.annotations) {\n annotations.push({\n url: ann.url,\n title: ann.title,\n startIndex: ann.start_index,\n endIndex: ann.end_index,\n });\n }\n }\n }\n }\n }\n }\n\n return { text, annotations };\n}\n\n// ============================================================================\n// Main Handler\n// ============================================================================\n\n/**\n * Handles RESEARCH model requests using OpenAI's deep research models.\n *\n * Deep research models can take tens of minutes to complete tasks.\n * Use background mode for long-running tasks.\n *\n * @param runtime - The agent runtime\n * @param params - Research parameters\n * @returns Research result with text, annotations, and output items\n *\n * @example\n * ```typescript\n * const result = await handleResearch(runtime, {\n * input: \"Research the economic impact of AI on global labor markets\",\n * tools: [\n * { type: \"web_search_preview\" },\n * { type: \"code_interpreter\", container: { type: \"auto\" } }\n * ],\n * background: true,\n * });\n * console.log(result.text);\n * ```\n */\nexport async function handleResearch(\n runtime: IAgentRuntime,\n params: ResearchParams\n): Promise<ResearchResult> {\n const apiKey = getApiKey(runtime);\n if (!apiKey) {\n throw new Error(\n \"OPENAI_API_KEY is required for deep research. Set it in your environment variables or runtime settings.\"\n );\n }\n\n const baseURL = getBaseURL(runtime);\n const modelName = params.model ?? getResearchModel(runtime);\n const timeout = getResearchTimeout(runtime);\n\n logger.debug(`[OpenAI] Starting deep research with model: ${modelName}`);\n logger.debug(`[OpenAI] Research input: ${params.input.substring(0, 100)}...`);\n\n // Validate that at least one data source tool is provided\n const dataSourceTools = params.tools?.filter(\n (t) => t.type === \"web_search_preview\" || t.type === \"file_search\" || t.type === \"mcp\"\n );\n\n if (!dataSourceTools || dataSourceTools.length === 0) {\n // Default to web search if no tools specified\n logger.debug(\"[OpenAI] No data source tools specified, defaulting to web_search_preview\");\n params.tools = [{ type: \"web_search_preview\" }, ...(params.tools ?? [])];\n }\n\n // Build the request body for the Responses API\n const requestBody: Record<string, unknown> = {\n model: modelName,\n input: params.input,\n };\n\n if (params.instructions) {\n requestBody.instructions = params.instructions;\n }\n\n if (params.background !== undefined) {\n requestBody.background = params.background;\n }\n\n if (params.tools && params.tools.length > 0) {\n requestBody.tools = params.tools.map(convertToolToApi);\n }\n\n if (params.maxToolCalls !== undefined) {\n requestBody.max_tool_calls = params.maxToolCalls;\n }\n\n if (params.reasoningSummary) {\n requestBody.reasoning = { summary: params.reasoningSummary };\n }\n\n logger.debug(`[OpenAI] Research request body: ${JSON.stringify(requestBody, null, 2)}`);\n\n // Make the API request\n const response = await fetch(`${baseURL}/responses`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(requestBody),\n signal: AbortSignal.timeout(timeout),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n logger.error(`[OpenAI] Research request failed: ${response.status} ${errorText}`);\n throw new Error(`Deep research request failed: ${response.status} ${response.statusText}`);\n }\n\n const data = (await response.json()) as ResponsesApiResponse;\n\n if (data.error) {\n logger.error(`[OpenAI] Research API error: ${data.error.message}`);\n throw new Error(`Deep research error: ${data.error.message}`);\n }\n\n logger.debug(`[OpenAI] Research response received. Status: ${data.status ?? \"completed\"}`);\n\n // Extract text and annotations\n const { text, annotations } = extractTextAndAnnotations(data);\n\n // Convert output items\n const outputItems: ResearchOutputItem[] = [];\n if (data.output) {\n for (const item of data.output) {\n const converted = convertOutputItem(item);\n if (converted) {\n outputItems.push(converted);\n }\n }\n }\n\n const result: ResearchResult = {\n id: data.id,\n text,\n annotations,\n outputItems,\n status: data.status,\n };\n\n logger.info(\n `[OpenAI] Research completed. Text length: ${text.length}, Annotations: ${annotations.length}, Output items: ${outputItems.length}`\n );\n\n return result;\n}\n",
17
- "/**\n * Text generation model handlers\n *\n * Provides text generation using OpenAI's language models.\n */\n\nimport type { GenerateTextParams, IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText, type LanguageModelUsage, streamText } from \"ai\";\nimport { createOpenAIClient } from \"../providers\";\nimport type { TextStreamResult, TokenUsage } from \"../types\";\nimport { getExperimentalTelemetry, getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Function to get model name from runtime\n */\ntype ModelNameGetter = (runtime: IAgentRuntime) => string;\n\ntype PromptCacheRetention = \"in_memory\" | \"24h\";\n\ninterface OpenAIPromptCacheOptions {\n promptCacheKey?: string;\n promptCacheRetention?: PromptCacheRetention;\n}\n\ninterface GenerateTextParamsWithOpenAIOptions extends GenerateTextParams {\n providerOptions?: {\n openai?: OpenAIPromptCacheOptions;\n };\n}\n\ninterface LanguageModelUsageWithCache extends LanguageModelUsage {\n cachedInputTokens?: number;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Converts AI SDK usage to our token usage format\n */\nfunction convertUsage(usage: LanguageModelUsage | undefined): TokenUsage | undefined {\n if (!usage) {\n return undefined;\n }\n\n // The AI SDK uses inputTokens/outputTokens\n const promptTokens = usage.inputTokens ?? 0;\n const completionTokens = usage.outputTokens ?? 0;\n const usageWithCache = usage as LanguageModelUsageWithCache;\n\n return {\n promptTokens,\n completionTokens,\n totalTokens: promptTokens + completionTokens,\n cachedPromptTokens: usageWithCache.cachedInputTokens,\n };\n}\n\nfunction resolvePromptCacheOptions(params: GenerateTextParams): OpenAIPromptCacheOptions {\n const withOpenAIOptions = params as GenerateTextParamsWithOpenAIOptions;\n return {\n promptCacheKey: withOpenAIOptions.providerOptions?.openai?.promptCacheKey,\n promptCacheRetention:\n withOpenAIOptions.providerOptions?.openai?.promptCacheRetention,\n };\n}\n\n// ============================================================================\n// Core Generation Function\n// ============================================================================\n\n/**\n * Generates text using the specified model type.\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @param modelType - The type of model (TEXT_SMALL or TEXT_LARGE)\n * @param getModelFn - Function to get the model name\n * @returns Generated text or stream result\n */\nasync function generateTextByModelType(\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n modelType: ModelTypeName,\n getModelFn: ModelNameGetter\n): Promise<string | TextStreamResult> {\n const openai = createOpenAIClient(runtime);\n const modelName = getModelFn(runtime);\n\n logger.debug(`[OpenAI] Using ${modelType} model: ${modelName}`);\n const promptCacheOptions = resolvePromptCacheOptions(params);\n\n // Get system prompt from character if available\n const systemPrompt = runtime.character.system ?? undefined;\n\n // Use chat() instead of languageModel() to use the Chat Completions API\n // which has better compatibility than the Responses API\n // gpt-5 and gpt-5-mini (reasoning models) don't support temperature,\n // frequencyPenalty, presencePenalty, or stop parameters - use defaults only\n const model = openai.chat(modelName);\n const generateParams = {\n model,\n prompt: params.prompt,\n system: systemPrompt,\n maxOutputTokens: params.maxTokens ?? 8192,\n experimental_telemetry: { isEnabled: getExperimentalTelemetry(runtime) },\n ...(promptCacheOptions.promptCacheKey ||\n promptCacheOptions.promptCacheRetention\n ? {\n providerOptions: {\n openai: {\n ...(promptCacheOptions.promptCacheKey\n ? { promptCacheKey: promptCacheOptions.promptCacheKey }\n : {}),\n ...(promptCacheOptions.promptCacheRetention\n ? { promptCacheRetention: promptCacheOptions.promptCacheRetention }\n : {}),\n },\n },\n }\n : {}),\n };\n\n // Handle streaming mode\n if (params.stream) {\n const result = streamText(generateParams);\n\n return {\n textStream: result.textStream,\n text: Promise.resolve(result.text),\n usage: Promise.resolve(result.usage).then(convertUsage),\n finishReason: Promise.resolve(result.finishReason).then((r) => r as string | undefined),\n };\n }\n\n // Non-streaming mode\n const { text, usage } = await generateText(generateParams);\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, params.prompt, usage);\n }\n\n return text;\n}\n\n// ============================================================================\n// Public Handlers\n// ============================================================================\n\n/**\n * Handles TEXT_SMALL model requests.\n *\n * Uses the configured small model (default: gpt-5-mini).\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @returns Generated text or stream result\n */\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextByModelType(runtime, params, ModelType.TEXT_SMALL, getSmallModel);\n}\n\n/**\n * Handles TEXT_LARGE model requests.\n *\n * Uses the configured large model (default: gpt-5).\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @returns Generated text or stream result\n */\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextByModelType(runtime, params, ModelType.TEXT_LARGE, getLargeModel);\n}\n",
17
+ "/**\n * Text generation model handlers\n *\n * Provides text generation using OpenAI's language models.\n */\n\nimport type { GenerateTextParams, IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText, type LanguageModelUsage, streamText } from \"ai\";\nimport { createOpenAIClient } from \"../providers\";\nimport type { TextStreamResult, TokenUsage } from \"../types\";\nimport { getExperimentalTelemetry, getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Function to get model name from runtime\n */\ntype ModelNameGetter = (runtime: IAgentRuntime) => string;\n\ntype PromptCacheRetention = \"in_memory\" | \"24h\";\n\ninterface OpenAIPromptCacheOptions {\n promptCacheKey?: string;\n promptCacheRetention?: PromptCacheRetention;\n}\n\ninterface GenerateTextParamsWithOpenAIOptions extends GenerateTextParams {\n providerOptions?: {\n openai?: OpenAIPromptCacheOptions;\n };\n}\n\ninterface LanguageModelUsageWithCache extends LanguageModelUsage {\n cachedInputTokens?: number;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Converts AI SDK usage to our token usage format\n */\nfunction convertUsage(usage: LanguageModelUsage | undefined): TokenUsage | undefined {\n if (!usage) {\n return undefined;\n }\n\n // The AI SDK uses inputTokens/outputTokens\n const promptTokens = usage.inputTokens ?? 0;\n const completionTokens = usage.outputTokens ?? 0;\n const usageWithCache = usage as LanguageModelUsageWithCache;\n\n return {\n promptTokens,\n completionTokens,\n totalTokens: promptTokens + completionTokens,\n cachedPromptTokens: usageWithCache.cachedInputTokens,\n };\n}\n\nfunction resolvePromptCacheOptions(params: GenerateTextParams): OpenAIPromptCacheOptions {\n const withOpenAIOptions = params as GenerateTextParamsWithOpenAIOptions;\n return {\n promptCacheKey: withOpenAIOptions.providerOptions?.openai?.promptCacheKey,\n promptCacheRetention: withOpenAIOptions.providerOptions?.openai?.promptCacheRetention,\n };\n}\n\n// ============================================================================\n// Core Generation Function\n// ============================================================================\n\n/**\n * Generates text using the specified model type.\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @param modelType - The type of model (TEXT_SMALL or TEXT_LARGE)\n * @param getModelFn - Function to get the model name\n * @returns Generated text or stream result\n */\nasync function generateTextByModelType(\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n modelType: ModelTypeName,\n getModelFn: ModelNameGetter\n): Promise<string | TextStreamResult> {\n const openai = createOpenAIClient(runtime);\n const modelName = getModelFn(runtime);\n\n logger.debug(`[OpenAI] Using ${modelType} model: ${modelName}`);\n const promptCacheOptions = resolvePromptCacheOptions(params);\n\n // Get system prompt from character if available\n const systemPrompt = runtime.character.system ?? undefined;\n\n // Use chat() instead of languageModel() to use the Chat Completions API\n // which has better compatibility than the Responses API\n // gpt-5 and gpt-5-mini (reasoning models) don't support temperature,\n // frequencyPenalty, presencePenalty, or stop parameters - use defaults only\n const model = openai.chat(modelName);\n const generateParams = {\n model,\n prompt: params.prompt,\n system: systemPrompt,\n maxOutputTokens: params.maxTokens ?? 8192,\n experimental_telemetry: { isEnabled: getExperimentalTelemetry(runtime) },\n ...(promptCacheOptions.promptCacheKey || promptCacheOptions.promptCacheRetention\n ? {\n providerOptions: {\n openai: {\n ...(promptCacheOptions.promptCacheKey\n ? { promptCacheKey: promptCacheOptions.promptCacheKey }\n : {}),\n ...(promptCacheOptions.promptCacheRetention\n ? { promptCacheRetention: promptCacheOptions.promptCacheRetention }\n : {}),\n },\n },\n }\n : {}),\n };\n\n // Handle streaming mode\n if (params.stream) {\n const result = streamText(generateParams);\n\n return {\n textStream: result.textStream,\n text: Promise.resolve(result.text),\n usage: Promise.resolve(result.usage).then(convertUsage),\n finishReason: Promise.resolve(result.finishReason).then((r) => r as string | undefined),\n };\n }\n\n // Non-streaming mode\n const { text, usage } = await generateText(generateParams);\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, params.prompt, usage);\n }\n\n return text;\n}\n\n// ============================================================================\n// Public Handlers\n// ============================================================================\n\n/**\n * Handles TEXT_SMALL model requests.\n *\n * Uses the configured small model (default: gpt-5-mini).\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @returns Generated text or stream result\n */\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextByModelType(runtime, params, ModelType.TEXT_SMALL, getSmallModel);\n}\n\n/**\n * Handles TEXT_LARGE model requests.\n *\n * Uses the configured large model (default: gpt-5).\n *\n * @param runtime - The agent runtime\n * @param params - Generation parameters\n * @returns Generated text or stream result\n */\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextByModelType(runtime, params, ModelType.TEXT_LARGE, getLargeModel);\n}\n",
18
18
  "import type { DetokenizeTextParams, IAgentRuntime, TokenizeTextParams } from \"@elizaos/core\";\nimport { ModelType } from \"@elizaos/core\";\nimport { detokenizeText, tokenizeText } from \"../utils/tokenization\";\n\nexport async function handleTokenizerEncode(\n runtime: IAgentRuntime,\n params: TokenizeTextParams\n): Promise<number[]> {\n if (!params.prompt) {\n throw new Error(\"Tokenization requires a non-empty prompt\");\n }\n const modelType = params.modelType ?? ModelType.TEXT_LARGE;\n return tokenizeText(runtime, modelType, params.prompt);\n}\n\nexport async function handleTokenizerDecode(\n runtime: IAgentRuntime,\n params: DetokenizeTextParams\n): Promise<string> {\n if (!params.tokens || !Array.isArray(params.tokens)) {\n throw new Error(\"Detokenization requires a valid tokens array\");\n }\n if (params.tokens.length === 0) {\n return \"\";\n }\n for (let i = 0; i < params.tokens.length; i++) {\n const token = params.tokens[i];\n if (typeof token !== \"number\" || !Number.isFinite(token)) {\n throw new Error(`Invalid token at index ${i}: expected number`);\n }\n }\n const modelType = params.modelType ?? ModelType.TEXT_LARGE;\n return detokenizeText(runtime, modelType, params.tokens);\n}\n",
19
19
  "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { ModelType } from \"@elizaos/core\";\nimport {\n encodingForModel,\n getEncoding,\n type Tiktoken,\n type TiktokenEncoding,\n type TiktokenModel,\n} from \"js-tiktoken\";\nimport { getLargeModel, getSmallModel } from \"./config\";\n\ntype SupportedEncoding = \"cl100k_base\" | \"o200k_base\";\n\nfunction resolveTokenizerEncoding(modelName: string): Tiktoken {\n const normalized = modelName.toLowerCase();\n const fallbackEncoding: SupportedEncoding = normalized.includes(\"4o\")\n ? \"o200k_base\"\n : \"cl100k_base\";\n try {\n return encodingForModel(modelName as TiktokenModel);\n } catch {\n return getEncoding(fallbackEncoding as TiktokenEncoding);\n }\n}\n\nfunction getModelName(runtime: IAgentRuntime, modelType: ModelTypeName): string {\n if (modelType === ModelType.TEXT_SMALL) {\n return getSmallModel(runtime);\n }\n return getLargeModel(runtime);\n}\n\nexport function tokenizeText(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n text: string\n): number[] {\n const modelName = getModelName(runtime, modelType);\n const encoder = resolveTokenizerEncoding(modelName);\n return encoder.encode(text);\n}\n\nexport function detokenizeText(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n tokens: number[]\n): string {\n const modelName = getModelName(runtime, modelType);\n const encoder = resolveTokenizerEncoding(modelName);\n return encoder.decode(tokens);\n}\n\nexport function countTokens(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n text: string\n): number {\n const tokens = tokenizeText(runtime, modelType, text);\n return tokens.length;\n}\n\nexport function truncateToTokenLimit(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n text: string,\n maxTokens: number\n): string {\n const tokens = tokenizeText(runtime, modelType, text);\n if (tokens.length <= maxTokens) {\n return text;\n }\n const truncatedTokens = tokens.slice(0, maxTokens);\n return detokenizeText(runtime, modelType, truncatedTokens);\n}\n"
20
20
  ],
21
- "mappings": "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",
21
+ "mappings": "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",
22
22
  "debugId": "A63C30D83B0EE8CA64756E2164756E21",
23
23
  "names": []
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../utils/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAkB3C,UAAU,UAAU;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,cAAc;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,KAAK,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,CAAC;AAwC3D,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,GAChB,IAAI,CAoBN"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../utils/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAkB3C,UAAU,UAAU;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,cAAc;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,KAAK,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,CAAC;AAuC3D,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,GAChB,IAAI,CAoBN"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-openai",
3
- "version": "2.0.0-alpha.6",
3
+ "version": "2.0.0-alpha.7",
4
4
  "type": "module",
5
5
  "main": "dist/cjs/index.node.cjs",
6
6
  "module": "dist/node/index.node.js",
@@ -59,8 +59,8 @@
59
59
  "format": "bunx @biomejs/biome format --write .",
60
60
  "format:check": "bunx @biomejs/biome format .",
61
61
  "typecheck": "tsc --noEmit",
62
- "test": "vitest run",
63
- "test:ts": "vitest run",
62
+ "test": "vitest run __tests__/ --passWithNoTests",
63
+ "test:ts": "vitest run __tests__/ --passWithNoTests",
64
64
  "build": "bun run build.ts"
65
65
  },
66
66
  "publishConfig": {
@@ -190,7 +190,7 @@
190
190
  }
191
191
  },
192
192
  "gitHead": "646c632924826e2b75c2304a75ee56959fe4a460",
193
- "milaidy": {
193
+ "milady": {
194
194
  "platforms": [
195
195
  "browser",
196
196
  "node"