@elizaos/plugin-elizacloud 2.0.3-beta.2 → 2.0.3-beta.4

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.
Files changed (182) hide show
  1. package/dist/cjs/index.node.cjs +32 -8
  2. package/dist/cjs/index.node.js.map +7 -7
  3. package/dist/cloud/auth-service-types.js +1 -1
  4. package/dist/cloud/auth-service-types.js.map +1 -1
  5. package/dist/cloud/auth.js +1 -1
  6. package/dist/cloud/auth.js.map +1 -1
  7. package/dist/cloud/backup.js +1 -1
  8. package/dist/cloud/backup.js.map +1 -1
  9. package/dist/cloud/base-url.js +1 -1
  10. package/dist/cloud/base-url.js.map +1 -1
  11. package/dist/cloud/bridge-client.js +1 -1
  12. package/dist/cloud/bridge-client.js.map +1 -1
  13. package/dist/cloud/clack-observer.js +1 -1
  14. package/dist/cloud/clack-observer.js.map +1 -1
  15. package/dist/cloud/cloud-api-key.js +1 -1
  16. package/dist/cloud/cloud-api-key.js.map +1 -1
  17. package/dist/cloud/cloud-manager.js +1 -1
  18. package/dist/cloud/cloud-manager.js.map +1 -1
  19. package/dist/cloud/cloud-proxy.js +1 -1
  20. package/dist/cloud/cloud-proxy.js.map +1 -1
  21. package/dist/cloud/cloud-wallet.js +1 -1
  22. package/dist/cloud/cloud-wallet.js.map +1 -1
  23. package/dist/cloud/duffel-client.js +1 -1
  24. package/dist/cloud/duffel-client.js.map +1 -1
  25. package/dist/cloud/index.js +914 -11
  26. package/dist/cloud/index.js.map +13 -4
  27. package/dist/cloud/lifeops-schedule-sync-client.js +1 -1
  28. package/dist/cloud/lifeops-schedule-sync-client.js.map +1 -1
  29. package/dist/cloud/lifeops-schedule-sync-contracts.js +1 -1
  30. package/dist/cloud/lifeops-schedule-sync-contracts.js.map +1 -1
  31. package/dist/cloud/managed-payment-clients.js +1 -1
  32. package/dist/cloud/managed-payment-clients.js.map +1 -1
  33. package/dist/cloud/null-observer.js +1 -1
  34. package/dist/cloud/null-observer.js.map +1 -1
  35. package/dist/cloud/reconnect.js +1 -1
  36. package/dist/cloud/reconnect.js.map +1 -1
  37. package/dist/cloud/validate-url.js +1 -1
  38. package/dist/cloud/validate-url.js.map +1 -1
  39. package/dist/cloud/x402-payment-handler.js +1 -1
  40. package/dist/cloud/x402-payment-handler.js.map +1 -1
  41. package/dist/cloud-providers/cloud-status.js +1 -1
  42. package/dist/cloud-providers/cloud-status.js.map +1 -1
  43. package/dist/cloud-providers/container-health.js +1 -1
  44. package/dist/cloud-providers/container-health.js.map +1 -1
  45. package/dist/cloud-providers/credit-balance.js +1 -1
  46. package/dist/cloud-providers/credit-balance.js.map +1 -1
  47. package/dist/cloud-providers/index.js +1 -1
  48. package/dist/cloud-providers/index.js.map +1 -1
  49. package/dist/cloud-providers/model-registry.js +1 -1
  50. package/dist/cloud-providers/model-registry.js.map +1 -1
  51. package/dist/cloud-setup.js +1 -1
  52. package/dist/cloud-setup.js.map +1 -1
  53. package/dist/cloud-voice-catalog.js +1 -1
  54. package/dist/cloud-voice-catalog.js.map +2 -2
  55. package/dist/index.js +45 -16
  56. package/dist/index.js.map +9 -8
  57. package/dist/init.js +1 -1
  58. package/dist/init.js.map +1 -1
  59. package/dist/lib/cloud-connection.js +1 -1
  60. package/dist/lib/cloud-connection.js.map +1 -1
  61. package/dist/lib/cloud-secrets.js +1 -1
  62. package/dist/lib/cloud-secrets.js.map +1 -1
  63. package/dist/lib/config-env.js +1 -1
  64. package/dist/lib/config-env.js.map +1 -1
  65. package/dist/lib/config-like.js +1 -1
  66. package/dist/lib/config-like.js.map +1 -1
  67. package/dist/lib/credential-type-map.js +1 -1
  68. package/dist/lib/credential-type-map.js.map +1 -1
  69. package/dist/lib/feature-flags.js +1 -1
  70. package/dist/lib/feature-flags.js.map +1 -1
  71. package/dist/lib/http.js +1 -1
  72. package/dist/lib/http.js.map +1 -1
  73. package/dist/lib/server-cloud-tts.js +1 -1
  74. package/dist/lib/server-cloud-tts.js.map +1 -1
  75. package/dist/lib/state-paths.js +1 -1
  76. package/dist/lib/state-paths.js.map +1 -1
  77. package/dist/lib/tts-debug.js +1 -1
  78. package/dist/lib/tts-debug.js.map +1 -1
  79. package/dist/models/embeddings.d.ts.map +1 -1
  80. package/dist/models/embeddings.js +4 -1
  81. package/dist/models/embeddings.js.map +3 -3
  82. package/dist/models/image.js +1 -1
  83. package/dist/models/image.js.map +1 -1
  84. package/dist/models/index.js +32 -8
  85. package/dist/models/index.js.map +5 -5
  86. package/dist/models/research.js +1 -1
  87. package/dist/models/research.js.map +1 -1
  88. package/dist/models/speech.js +1 -1
  89. package/dist/models/speech.js.map +2 -2
  90. package/dist/models/text.d.ts +1 -0
  91. package/dist/models/text.d.ts.map +1 -1
  92. package/dist/models/text.js +30 -8
  93. package/dist/models/text.js.map +3 -3
  94. package/dist/models/tokenization.js +1 -1
  95. package/dist/models/tokenization.js.map +1 -1
  96. package/dist/models/transcription.js +1 -1
  97. package/dist/models/transcription.js.map +1 -1
  98. package/dist/node/index.node.js +32 -8
  99. package/dist/node/index.node.js.map +7 -7
  100. package/dist/plugin.js +1 -1
  101. package/dist/plugin.js.map +1 -1
  102. package/dist/providers/openai.js +1 -1
  103. package/dist/providers/openai.js.map +1 -1
  104. package/dist/register-routes.js +1 -1
  105. package/dist/register-routes.js.map +1 -1
  106. package/dist/routes/cloud-billing-routes.js +1 -1
  107. package/dist/routes/cloud-billing-routes.js.map +1 -1
  108. package/dist/routes/cloud-coding-container-routes.js +1 -1
  109. package/dist/routes/cloud-coding-container-routes.js.map +1 -1
  110. package/dist/routes/cloud-compat-routes.js +1 -1
  111. package/dist/routes/cloud-compat-routes.js.map +1 -1
  112. package/dist/routes/cloud-features-routes.js +1 -1
  113. package/dist/routes/cloud-features-routes.js.map +1 -1
  114. package/dist/routes/cloud-provisioning.js +1 -1
  115. package/dist/routes/cloud-provisioning.js.map +1 -1
  116. package/dist/routes/cloud-relay-routes.js +1 -1
  117. package/dist/routes/cloud-relay-routes.js.map +1 -1
  118. package/dist/routes/cloud-routes-autonomous.js +1 -1
  119. package/dist/routes/cloud-routes-autonomous.js.map +1 -1
  120. package/dist/routes/cloud-routes.js +1 -1
  121. package/dist/routes/cloud-routes.js.map +1 -1
  122. package/dist/routes/cloud-status-routes-autonomous.js +1 -1
  123. package/dist/routes/cloud-status-routes-autonomous.js.map +1 -1
  124. package/dist/routes/cloud-status-routes.js +1 -1
  125. package/dist/routes/cloud-status-routes.js.map +1 -1
  126. package/dist/routes/home-remote-runner-access-url.js +1 -1
  127. package/dist/routes/home-remote-runner-access-url.js.map +1 -1
  128. package/dist/routes/travel-provider-relay-routes.js +1 -1
  129. package/dist/routes/travel-provider-relay-routes.js.map +1 -1
  130. package/dist/services/cloud-auth.js +1 -1
  131. package/dist/services/cloud-auth.js.map +1 -1
  132. package/dist/services/cloud-backup.js +1 -1
  133. package/dist/services/cloud-backup.js.map +1 -1
  134. package/dist/services/cloud-bootstrap.js +1 -1
  135. package/dist/services/cloud-bootstrap.js.map +1 -1
  136. package/dist/services/cloud-bridge.js +1 -1
  137. package/dist/services/cloud-bridge.js.map +1 -1
  138. package/dist/services/cloud-container.js +1 -1
  139. package/dist/services/cloud-container.js.map +1 -1
  140. package/dist/services/cloud-credential-provider.js +1 -1
  141. package/dist/services/cloud-credential-provider.js.map +1 -1
  142. package/dist/services/cloud-managed-gateway-relay.js +1 -1
  143. package/dist/services/cloud-managed-gateway-relay.js.map +1 -1
  144. package/dist/services/cloud-model-registry.js +1 -1
  145. package/dist/services/cloud-model-registry.js.map +1 -1
  146. package/dist/services/index.js +1 -1
  147. package/dist/services/index.js.map +1 -1
  148. package/dist/types/cloud.js +1 -1
  149. package/dist/types/cloud.js.map +1 -1
  150. package/dist/types/index.js +1 -1
  151. package/dist/types/index.js.map +1 -1
  152. package/dist/utils/cloud-api.js +1 -1
  153. package/dist/utils/cloud-api.js.map +1 -1
  154. package/dist/utils/cloud-sdk/client.js +1 -1
  155. package/dist/utils/cloud-sdk/client.js.map +1 -1
  156. package/dist/utils/cloud-sdk/http.js +1 -1
  157. package/dist/utils/cloud-sdk/http.js.map +1 -1
  158. package/dist/utils/cloud-sdk/index.js +1 -1
  159. package/dist/utils/cloud-sdk/index.js.map +1 -1
  160. package/dist/utils/cloud-sdk/public-routes.js +1 -1
  161. package/dist/utils/cloud-sdk/public-routes.js.map +1 -1
  162. package/dist/utils/cloud-sdk/types.js +1 -1
  163. package/dist/utils/cloud-sdk/types.js.map +1 -1
  164. package/dist/utils/config.js +1 -1
  165. package/dist/utils/config.js.map +1 -1
  166. package/dist/utils/events.js +1 -1
  167. package/dist/utils/events.js.map +1 -1
  168. package/dist/utils/helpers.js +1 -1
  169. package/dist/utils/helpers.js.map +1 -1
  170. package/dist/utils/responses-output.js +1 -1
  171. package/dist/utils/responses-output.js.map +1 -1
  172. package/dist/utils/sdk-client.js +1 -1
  173. package/dist/utils/sdk-client.js.map +1 -1
  174. package/dist/utils/waifu-metering.js +1 -1
  175. package/dist/utils/waifu-metering.js.map +1 -1
  176. package/package.json +6 -5
  177. package/registry-entry.json +208 -0
  178. package/src/cloud-voice-catalog.ts +2 -2
  179. package/src/index.ts +1 -1
  180. package/src/models/embeddings.ts +9 -0
  181. package/src/models/speech.ts +2 -2
  182. package/src/models/text.ts +54 -6
@@ -338,4 +338,4 @@ export {
338
338
  handleResearch
339
339
  };
340
340
 
341
- //# debugId=9CB55D8877604A1C64756E2164756E21
341
+ //# debugId=444555B8E32C14C964756E2164756E21
@@ -8,6 +8,6 @@
8
8
  "/** Research model handler — calls /responses for deep-research models. */\n\nimport type {\n IAgentRuntime,\n ResearchAnnotation,\n ResearchOutputItem,\n ResearchParams,\n ResearchResult,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { getResearchModel, resolveCloudTimeoutMs } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\nimport { createCloudApiClient } from \"../utils/sdk-client\";\n\n// Deep research is a long-running, TURN-BLOCKING call; without a timeout a\n// stalled gateway hangs the turn forever (cloud-sdk applies no default). The\n// default is deliberately generous (10 min) so a legitimately slow run isn't\n// aborted; `ELIZAOS_CLOUD_RESEARCH_TIMEOUT_MS=0` opts out.\nconst DEFAULT_RESEARCH_TIMEOUT_MS = 600_000;\n\ninterface ResponsesAPIOutput {\n id: string;\n status: string;\n output: Array<{\n type: string;\n id?: string;\n status?: string;\n content?: Array<{\n type: string;\n text?: string;\n annotations?: Array<{\n type: string;\n url?: string;\n title?: string;\n start_index?: number;\n end_index?: number;\n }>;\n }>;\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 }>;\n usage?: {\n input_tokens: number;\n output_tokens: number;\n total_tokens: number;\n };\n}\n\ntype ResponsesAPIInput =\n | string\n | Array<{\n role: \"user\" | \"system\" | \"assistant\";\n content: Array<{\n type: \"input_text\";\n text: string;\n }>;\n }>;\n\nfunction normalizeInput(input: ResearchParams[\"input\"]): ResponsesAPIInput {\n if (typeof input !== \"string\") {\n return input as ResponsesAPIInput;\n }\n\n return [\n {\n role: \"user\",\n content: [\n {\n type: \"input_text\",\n text: input,\n },\n ],\n },\n ];\n}\n\nfunction buildResearchApiError(status: number, errorText: string): Error {\n try {\n const parsed = JSON.parse(errorText) as {\n error?: { message?: string; param?: string; code?: string };\n };\n const message = parsed.error?.message;\n const param = parsed.error?.param;\n if (param === \"tools.0.type\" && message?.includes('expected \"function\"')) {\n return new Error(\n `Research API error: ${status} Eliza Cloud /responses rejected deep-research tool types; the provider currently only accepts function tools on this route`\n );\n }\n } catch {\n // Fall through to the raw error text.\n }\n\n return new Error(`Research API error: ${status} ${errorText}`);\n}\n\nfunction parseAnnotations(\n raw: Array<{\n type: string;\n url?: string;\n title?: string;\n start_index?: number;\n end_index?: number;\n }>\n): ResearchAnnotation[] {\n return raw\n .filter((a) => a.url !== undefined)\n .map((a) => ({\n url: a.url as string,\n title: a.title ?? \"\",\n startIndex: a.start_index ?? 0,\n endIndex: a.end_index ?? 0,\n }));\n}\n\nfunction parseOutputItems(raw: ResponsesAPIOutput[\"output\"]): ResearchOutputItem[] {\n const items: ResearchOutputItem[] = [];\n\n for (const item of raw) {\n switch (item.type) {\n case \"web_search_call\":\n items.push({\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 });\n break;\n case \"file_search_call\":\n items.push({\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 });\n break;\n case \"code_interpreter_call\":\n items.push({\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 });\n break;\n case \"mcp_tool_call\":\n items.push({\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, import(\"@elizaos/core\").JsonValue>,\n result: item.result as import(\"@elizaos/core\").JsonValue | undefined,\n });\n break;\n case \"message\": {\n const content = item.content ?? [];\n items.push({\n type: \"message\",\n content: content\n .filter((c) => c.type === \"output_text\")\n .map((c) => ({\n type: \"output_text\" as const,\n text: c.text ?? \"\",\n annotations: parseAnnotations(c.annotations ?? []),\n })),\n });\n break;\n }\n }\n }\n\n return items;\n}\n\nexport async function handleResearch(\n runtime: IAgentRuntime,\n params: ResearchParams\n): Promise<ResearchResult> {\n const modelName = params.model ?? getResearchModel(runtime);\n logger.log(`[ELIZAOS_CLOUD] Using RESEARCH model: ${modelName}`);\n\n const tools = params.tools ?? [{ type: \"web_search_preview\" }];\n\n const requestBody: Record<string, unknown> = {\n model: modelName,\n input: normalizeInput(params.input),\n tools: tools,\n };\n\n if (params.instructions) {\n requestBody.instructions = params.instructions;\n }\n if (params.background !== undefined) {\n requestBody.background = params.background;\n }\n if (params.maxToolCalls !== undefined) {\n requestBody.max_tool_calls = params.maxToolCalls;\n }\n if (params.reasoningSummary) {\n requestBody.reasoning = { summary: params.reasoningSummary };\n }\n\n const response = await createCloudApiClient(runtime).requestRaw(\"POST\", \"/responses\", {\n json: requestBody,\n timeoutMs: resolveCloudTimeoutMs(\n \"ELIZAOS_CLOUD_RESEARCH_TIMEOUT_MS\",\n DEFAULT_RESEARCH_TIMEOUT_MS\n ),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw buildResearchApiError(response.status, errorText);\n }\n\n const data = (await response.json()) as ResponsesAPIOutput;\n\n if (data.usage) {\n emitModelUsageEvent(runtime, ModelType.RESEARCH, params.input, {\n inputTokens: data.usage.input_tokens,\n outputTokens: data.usage.output_tokens,\n totalTokens: data.usage.total_tokens,\n });\n }\n\n const outputItems = parseOutputItems(data.output);\n\n // Extract final text and annotations from the last message output\n let text = \"\";\n const annotations: ResearchAnnotation[] = [];\n\n for (const item of outputItems) {\n if (item.type === \"message\") {\n for (const content of item.content) {\n if (content.type === \"output_text\") {\n text += content.text;\n annotations.push(...content.annotations);\n }\n }\n }\n }\n\n return {\n id: data.id,\n text,\n annotations,\n outputItems,\n status: data.status as ResearchResult[\"status\"],\n };\n}\n"
9
9
  ],
10
10
  "mappings": "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",
11
- "debugId": "9CB55D8877604A1C64756E2164756E21",
11
+ "debugId": "444555B8E32C14C964756E2164756E21",
12
12
  "names": []
13
13
  }
@@ -426,4 +426,4 @@ export {
426
426
  CloudTtsUnavailableError
427
427
  };
428
428
 
429
- //# debugId=FE6610E8B1CB634464756E2164756E21
429
+ //# debugId=FE37C015969DE2E064756E2164756E21
@@ -5,9 +5,9 @@
5
5
  "import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport { DEFAULT_ELIZA_CLOUD_TEXT_MODEL } from \"@elizaos/core\";\n\nexport const DEFAULT_ELIZA_CLOUD_LARGE_MODEL = \"zai-glm-4.7\";\n\nfunction getEnvValue(key: string): string | undefined {\n if (typeof process === \"undefined\") {\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}\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, \"ELIZAOS_CLOUD_BROWSER_BASE_URL\");\n}\n\nexport function getBaseURL(runtime: IAgentRuntime): string {\n const browserURL = getSetting(runtime, \"ELIZAOS_CLOUD_BROWSER_BASE_URL\");\n const baseURL = (\n isBrowser() && browserURL\n ? browserURL\n : getSetting(runtime, \"ELIZAOS_CLOUD_BASE_URL\", \"https://www.elizacloud.ai/api/v1\")\n ) as string;\n return baseURL;\n}\n\nexport function getEmbeddingBaseURL(runtime: IAgentRuntime): string {\n const embeddingURL = isBrowser()\n ? getSetting(runtime, \"ELIZAOS_CLOUD_BROWSER_EMBEDDING_URL\") ||\n getSetting(runtime, \"ELIZAOS_CLOUD_BROWSER_BASE_URL\")\n : getSetting(runtime, \"ELIZAOS_CLOUD_EMBEDDING_URL\");\n if (embeddingURL) {\n logger.debug(`[ELIZAOS_CLOUD] Using specific embedding base URL: ${embeddingURL}`);\n return embeddingURL;\n }\n logger.debug(\"[ELIZAOS_CLOUD] Falling back to general base URL for embeddings.\");\n return getBaseURL(runtime);\n}\n\nexport function getApiKey(runtime: IAgentRuntime): string | undefined {\n return getSetting(runtime, \"ELIZAOS_CLOUD_API_KEY\");\n}\n\nexport function getEmbeddingApiKey(runtime: IAgentRuntime): string | undefined {\n const embeddingApiKey = getSetting(runtime, \"ELIZAOS_CLOUD_EMBEDDING_API_KEY\");\n if (embeddingApiKey) {\n logger.debug(\"[ELIZAOS_CLOUD] Using specific embedding API key (present)\");\n return embeddingApiKey;\n }\n logger.debug(\"[ELIZAOS_CLOUD] Falling back to general API key for embeddings.\");\n return getApiKey(runtime);\n}\n\nexport function getSmallModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_SMALL_MODEL\") ??\n (getSetting(runtime, \"SMALL_MODEL\", DEFAULT_ELIZA_CLOUD_TEXT_MODEL) as string)\n );\n}\n\nexport function getNanoModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_NANO_MODEL\") ??\n getSetting(runtime, \"NANO_MODEL\") ??\n getSmallModel(runtime)\n );\n}\n\nexport function getMediumModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_MEDIUM_MODEL\") ??\n getSetting(runtime, \"MEDIUM_MODEL\") ??\n getSmallModel(runtime)\n );\n}\n\nexport function getLargeModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_LARGE_MODEL\") ??\n (getSetting(runtime, \"LARGE_MODEL\", DEFAULT_ELIZA_CLOUD_LARGE_MODEL) as string)\n );\n}\n\nexport function getMegaModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_MEGA_MODEL\") ??\n getSetting(runtime, \"MEGA_MODEL\") ??\n getLargeModel(runtime)\n );\n}\n\nexport function getResponseHandlerModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_RESPONSE_HANDLER_MODEL\") ??\n getSetting(runtime, \"ELIZAOS_CLOUD_SHOULD_RESPOND_MODEL\") ??\n getSetting(runtime, \"RESPONSE_HANDLER_MODEL\") ??\n getSetting(runtime, \"SHOULD_RESPOND_MODEL\") ??\n getSmallModel(runtime)\n );\n}\n\nexport function getActionPlannerModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_ACTION_PLANNER_MODEL\") ??\n getSetting(runtime, \"ELIZAOS_CLOUD_PLANNER_MODEL\") ??\n getSetting(runtime, \"ACTION_PLANNER_MODEL\") ??\n getSetting(runtime, \"PLANNER_MODEL\") ??\n getLargeModel(runtime)\n );\n}\n\nexport function getResponseModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_RESPONSE_MODEL\") ??\n getSetting(runtime, \"RESPONSE_MODEL\") ??\n getLargeModel(runtime)\n );\n}\n\nexport function getImageDescriptionModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MODEL\", \"gpt-5.4-mini\") as string;\n}\n\nexport function getImageGenerationModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_IMAGE_GENERATION_MODEL\", \"google/gemini-2.5-flash-image\") ??\n \"google/gemini-2.5-flash-image\"\n );\n}\n\nexport function getResearchModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_RESEARCH_MODEL\") ??\n (getSetting(runtime, \"RESEARCH_MODEL\", \"o3-deep-research\") as string)\n );\n}\n\nexport function getTTSModel(runtime: IAgentRuntime): string {\n return getSetting(runtime, \"ELIZAOS_CLOUD_TTS_MODEL\", \"gpt-5-mini-tts\") as string;\n}\n\nexport function getTranscriptionModel(runtime: IAgentRuntime): string {\n return getSetting(\n runtime,\n \"ELIZAOS_CLOUD_TRANSCRIPTION_MODEL\",\n \"gpt-5-mini-transcribe\"\n ) as string;\n}\n\nexport function getExperimentalTelemetry(runtime: IAgentRuntime): boolean {\n const setting = getSetting(runtime, \"ELIZAOS_CLOUD_EXPERIMENTAL_TELEMETRY\", \"false\");\n return String(setting).toLowerCase() === \"true\";\n}\n\n/**\n * Resolve a client-side timeout (ms) for a cloud model round-trip from `envKey`,\n * falling back to `defaultMs`. `0`/negative/non-numeric → undefined (opt out).\n *\n * cloud-sdk applies NO default timeout (a fetch with no signal hangs until the\n * platform default), so turn-blocking calls (TTS/STT in a voice turn, deep\n * research) need an explicit ceiling or a stalled gateway hangs the turn.\n */\nexport function resolveCloudTimeoutMs(\n envKey: string,\n defaultMs: number\n): number | undefined {\n const raw = typeof process !== \"undefined\" ? process.env[envKey] : undefined;\n if (raw === undefined || raw.trim() === \"\") return defaultMs;\n const parsed = Number.parseInt(raw, 10);\n if (!Number.isFinite(parsed)) return defaultMs;\n return parsed <= 0 ? undefined : parsed;\n}\n",
6
6
  "import { CloudApiClient, ElizaCloudClient } from \"@elizaos/cloud-sdk\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport {\n getApiKey,\n getBaseURL,\n getEmbeddingApiKey,\n getEmbeddingBaseURL,\n isBrowser,\n} from \"./config\";\n\nfunction trimTrailingSlash(value: string): string {\n return value.replace(/\\/+$/, \"\");\n}\n\nfunction apiBaseToSiteBaseUrl(apiBaseUrl: string): string {\n const trimmed = trimTrailingSlash(apiBaseUrl);\n return trimmed.endsWith(\"/api/v1\") ? trimmed.slice(0, -\"/api/v1\".length) : trimmed;\n}\n\nfunction apiKeyForRuntime(runtime: IAgentRuntime, embedding = false): string | undefined {\n if (isBrowser()) return undefined;\n return embedding ? getEmbeddingApiKey(runtime) : getApiKey(runtime);\n}\n\nexport function createCloudApiClient(runtime: IAgentRuntime, embedding = false): CloudApiClient {\n const baseUrl = embedding ? getEmbeddingBaseURL(runtime) : getBaseURL(runtime);\n return new ElizaCloudClient({\n apiBaseUrl: trimTrailingSlash(baseUrl),\n baseUrl: apiBaseToSiteBaseUrl(baseUrl),\n apiKey: apiKeyForRuntime(runtime, embedding),\n }).v1;\n}\n\nexport function createElizaCloudClient(runtime: IAgentRuntime): ElizaCloudClient {\n const apiBaseUrl = trimTrailingSlash(getBaseURL(runtime));\n return new ElizaCloudClient({\n apiBaseUrl,\n baseUrl: apiBaseToSiteBaseUrl(apiBaseUrl),\n apiKey: apiKeyForRuntime(runtime),\n });\n}\n",
7
7
  "import { logger } from \"@elizaos/core\";\nimport { JSONParseError } from \"ai\";\nimport type { ImageDescriptionResult } from \"../types\";\n\nexport function getJsonRepairFunction(): (params: {\n text: string;\n error: unknown;\n}) => Promise<string | null> {\n return async ({ text, error }: { text: string; error: unknown }) => {\n try {\n if (error instanceof JSONParseError) {\n const cleanedText = text.replace(/```json\\n|\\n```|```/g, \"\");\n JSON.parse(cleanedText);\n return cleanedText;\n }\n return null;\n } catch (jsonError) {\n const message = jsonError instanceof Error ? jsonError.message : String(jsonError);\n logger.warn(`Failed to repair JSON text: ${message}`);\n return null;\n }\n };\n}\n\nexport function detectAudioMimeType(buffer: Buffer): string {\n if (buffer.length < 12) {\n return \"application/octet-stream\";\n }\n\n if (\n buffer[0] === 0x52 &&\n buffer[1] === 0x49 &&\n buffer[2] === 0x46 &&\n buffer[3] === 0x46 &&\n buffer[8] === 0x57 &&\n buffer[9] === 0x41 &&\n buffer[10] === 0x56 &&\n buffer[11] === 0x45\n ) {\n return \"audio/wav\";\n }\n\n if (\n (buffer[0] === 0x49 && buffer[1] === 0x44 && buffer[2] === 0x33) || // ID3\n (buffer[0] === 0xff && (buffer[1] & 0xe0) === 0xe0) // MPEG sync\n ) {\n return \"audio/mpeg\";\n }\n\n if (buffer[0] === 0x4f && buffer[1] === 0x67 && buffer[2] === 0x67 && buffer[3] === 0x53) {\n return \"audio/ogg\";\n }\n\n if (buffer[0] === 0x66 && buffer[1] === 0x4c && buffer[2] === 0x61 && buffer[3] === 0x43) {\n return \"audio/flac\";\n }\n\n if (buffer[4] === 0x66 && buffer[5] === 0x74 && buffer[6] === 0x79 && buffer[7] === 0x70) {\n return \"audio/mp4\";\n }\n\n if (buffer[0] === 0x1a && buffer[1] === 0x45 && buffer[2] === 0xdf && buffer[3] === 0xa3) {\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 async function webStreamToNodeStream(webStream: ReadableStream<Uint8Array>) {\n try {\n const { Readable } = await import(\"node:stream\");\n const reader = webStream.getReader();\n\n return new Readable({\n async read() {\n try {\n const { done, value } = await reader.read();\n if (done) {\n this.push(null);\n } else {\n this.push(value);\n }\n } catch (error) {\n this.destroy(error as Error);\n }\n },\n destroy(error, callback) {\n reader.cancel().finally(() => callback(error));\n },\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Failed to load node:stream module: ${message}`);\n throw new Error(\n `Cannot convert stream: node:stream module unavailable. This feature requires a Node.js environment.`\n );\n }\n}\n\nexport function parseImageDescriptionResponse(responseText: string): ImageDescriptionResult {\n const titleMatch = responseText.match(/title[:\\s]+(.+?)(?:\\n|$)/i);\n const title = titleMatch?.[1]?.trim() || \"Image Analysis\";\n const description = responseText.replace(/title[:\\s]+(.+?)(?:\\n|$)/i, \"\").trim();\n\n return { title, description };\n}\n",
8
- "import type { Readable } from \"node:stream\";\nimport type { AudioStreamResult, IAgentRuntime } from \"@elizaos/core\";\nimport { isCloudConnected, logger, toRuntimeSettings } from \"@elizaos/core\";\nimport type { OpenAITextToSpeechParams } from \"../types\";\nimport { getSetting, isBrowser, resolveCloudTimeoutMs } from \"../utils/config\";\nimport { webStreamToNodeStream } from \"../utils/helpers\";\nimport { createElizaCloudClient } from \"../utils/sdk-client\";\n\n/**\n * Narrow client interface the speech handler actually exercises. Lets tests\n * substitute a fake without rebuilding the full SDK surface.\n */\nexport interface CloudTtsClient {\n routes: {\n postApiV1VoiceTts<T = unknown>(options: {\n headers?: Record<string, unknown>;\n json: { text: string; voiceId?: string; modelId?: string };\n timeoutMs?: number;\n }): Promise<T>;\n };\n}\n\ntype CloudTtsClientFactory = (runtime: IAgentRuntime) => CloudTtsClient;\n\nlet cloudTtsClientFactory: CloudTtsClientFactory = (runtime) =>\n createElizaCloudClient(runtime) as unknown as CloudTtsClient;\n\n/**\n * Test seam: substitute the SDK client factory used by `handleTextToSpeech`.\n * Pass `null` to reset to the real `createElizaCloudClient`. Production code\n * should never call this.\n */\nexport function setCloudTtsClientFactoryForTesting(\n factory: CloudTtsClientFactory | null,\n): void {\n if (factory === null) {\n cloudTtsClientFactory = (runtime) =>\n createElizaCloudClient(runtime) as unknown as CloudTtsClient;\n } else {\n cloudTtsClientFactory = factory;\n }\n}\n\n/**\n * Extended TTS params accepted by the cloud handler.\n *\n * The runtime canonical type (`TextToSpeechParams`) only carries `text`, but\n * the cloud TTS upstream maps to ElevenLabs and therefore accepts arbitrary\n * ElevenLabs `voiceId` + `modelId`. We accept those via either OpenAI-style\n * (`voice`, `model`) or ElevenLabs-style (`voiceId`, `modelId`) fields and\n * normalize them to the upstream shape.\n */\nexport interface CloudTextToSpeechParams extends OpenAITextToSpeechParams {\n voiceId?: string;\n modelId?: string;\n}\n\n/**\n * Marker error used so the runtime can fall through to the next TTS handler\n * (e.g. local omnivoice) when Eliza Cloud is not connected.\n */\nexport class CloudTtsUnavailableError extends Error {\n constructor(message = \"Eliza Cloud is not connected\") {\n super(message);\n this.name = \"CloudTtsUnavailableError\";\n }\n}\n\nfunction normalizeTextInput(\n input: string | CloudTextToSpeechParams | OpenAITextToSpeechParams,\n): CloudTextToSpeechParams {\n if (typeof input === \"string\") return { text: input };\n return input as CloudTextToSpeechParams;\n}\n\n/**\n * Pull an ElevenLabs `modelId` out of (in order):\n * 1. options.modelId — explicit ElevenLabs model id\n * 2. options.model with `elevenlabs/` prefix or `eleven_*` shape\n *\n * Returns `undefined` when nothing usable was provided so the upstream\n * can apply its own default (currently `eleven_flash_v2_5`).\n */\nfunction resolveModelId(\n options: CloudTextToSpeechParams,\n): string | undefined {\n if (options.modelId && options.modelId.trim()) {\n return options.modelId.trim();\n }\n const model = options.model?.trim();\n if (!model) return undefined;\n if (model.startsWith(\"elevenlabs/\")) {\n return model.split(\"/\").slice(1).join(\"/\");\n }\n if (model.startsWith(\"eleven_\")) {\n return model;\n }\n return undefined;\n}\n\n/**\n * Pull an ElevenLabs `voiceId` out of (in order):\n * 1. options.voiceId — explicit ElevenLabs voice id (preferred)\n * 2. options.voice — OpenAI-style voice name (rejected unless it looks\n * like an ElevenLabs id, i.e. neither an OpenAI alias nor \"nova\")\n *\n * Returns `undefined` when nothing usable was provided so the upstream\n * can apply its own default voice.\n */\nfunction resolveVoiceId(\n options: CloudTextToSpeechParams,\n): string | undefined {\n if (options.voiceId && options.voiceId.trim()) {\n return options.voiceId.trim();\n }\n const voice = options.voice?.trim();\n if (!voice) return undefined;\n // \"nova\" is the OpenAI default — treat as unset so the upstream falls back\n // to the cloud default voice instead of being forwarded as an opaque alias.\n if (voice === \"nova\") return undefined;\n return voice;\n}\n\nasync function fetchTextToSpeech(\n runtime: IAgentRuntime,\n options: CloudTextToSpeechParams,\n): Promise<ReadableStream<Uint8Array> | Readable> {\n const format = options.format || \"mp3\";\n const modelId = resolveModelId(options);\n const voiceId = resolveVoiceId(options);\n\n try {\n const res = (await cloudTtsClientFactory(runtime).routes.postApiV1VoiceTts({\n headers: {\n ...(format === \"mp3\" ? { Accept: \"audio/mpeg\" } : {}),\n },\n json: {\n text: options.text,\n ...(voiceId ? { voiceId } : {}),\n ...(modelId ? { modelId } : {}),\n },\n timeoutMs: resolveCloudTimeoutMs(\"ELIZAOS_CLOUD_TTS_TIMEOUT_MS\", 60_000),\n })) as Response;\n\n if (!res.ok) {\n const err = await res.text();\n throw new Error(`ElizaOS Cloud TTS error ${res.status}: ${err}`);\n }\n\n if (!res.body) {\n throw new Error(\"ElizaOS Cloud TTS response body is null\");\n }\n\n if (!isBrowser()) {\n return await webStreamToNodeStream(res.body);\n }\n\n return res.body;\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`Failed to fetch speech from ElizaOS Cloud TTS: ${message}`);\n }\n}\n\nfunction toUint8Array(chunk: unknown): Uint8Array {\n if (chunk instanceof Uint8Array) return chunk;\n if (chunk instanceof ArrayBuffer) return new Uint8Array(chunk);\n if (typeof chunk === \"string\") return new TextEncoder().encode(chunk);\n throw new TypeError(`Unexpected TTS chunk type: ${typeof chunk}`);\n}\n\nfunction concatChunks(chunks: Uint8Array[]): Uint8Array {\n const total = chunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);\n const out = new Uint8Array(total);\n let offset = 0;\n for (const chunk of chunks) {\n out.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return out;\n}\n\nasync function webStreamToUint8Array(\n stream: ReadableStream<Uint8Array>,\n): Promise<Uint8Array> {\n const reader = stream.getReader();\n const chunks: Uint8Array[] = [];\n try {\n while (true) {\n const result = await reader.read();\n if (result.done) break;\n chunks.push(toUint8Array(result.value));\n }\n } finally {\n reader.releaseLock();\n }\n return concatChunks(chunks);\n}\n\nasync function nodeStreamToUint8Array(stream: Readable): Promise<Uint8Array> {\n const chunks: Uint8Array[] = [];\n for await (const chunk of stream) {\n chunks.push(toUint8Array(chunk));\n }\n return concatChunks(chunks);\n}\n\nfunction isReadableStream(\n stream: ReadableStream<Uint8Array> | Readable,\n): stream is ReadableStream<Uint8Array> {\n return typeof (stream as { getReader?: unknown }).getReader === \"function\";\n}\n\nasync function ttsStreamToBytes(\n stream: ReadableStream<Uint8Array> | Readable,\n): Promise<Uint8Array> {\n if (isReadableStream(stream)) {\n return webStreamToUint8Array(stream);\n }\n return nodeStreamToUint8Array(stream);\n}\n\n/**\n * Wrap the upstream TTS byte stream as an {@link AudioStreamResult}: `audioStream`\n * yields each chunk as it arrives (so playback can start on the first byte\n * instead of draining the whole clip via {@link ttsStreamToBytes}), and `bytes`\n * resolves to the full concatenated audio once the stream is consumed.\n */\nfunction buildAudioStreamResult(\n stream: ReadableStream<Uint8Array> | Readable,\n mimeType: string,\n): AudioStreamResult {\n const collected: Uint8Array[] = [];\n let resolveBytes!: (value: Uint8Array) => void;\n let rejectBytes!: (reason: unknown) => void;\n const bytes = new Promise<Uint8Array>((resolve, reject) => {\n resolveBytes = resolve;\n rejectBytes = reject;\n });\n async function* generate(): AsyncGenerator<Uint8Array> {\n try {\n if (isReadableStream(stream)) {\n const reader = stream.getReader();\n try {\n for (;;) {\n const { value, done } = await reader.read();\n if (done) break;\n const chunk = toUint8Array(value);\n collected.push(chunk);\n yield chunk;\n }\n } finally {\n reader.releaseLock();\n }\n } else {\n for await (const value of stream) {\n const chunk = toUint8Array(value);\n collected.push(chunk);\n yield chunk;\n }\n }\n resolveBytes(concatChunks(collected));\n } catch (err) {\n rejectBytes(err);\n throw err;\n }\n }\n return { audioStream: generate(), bytes, mimeType };\n}\n\n/**\n * TEXT_TO_SPEECH handler for plugin-elizacloud.\n *\n * Behavior:\n * - When Eliza Cloud is **not** connected, throws `CloudTtsUnavailableError`\n * so the runtime's model-handler fallback chain can pick the next\n * provider (e.g. local omnivoice, ElevenLabs direct, etc.).\n * - When connected, forwards `text`, `voiceId`, and `modelId` to the\n * upstream cloud TTS proxy and returns the audio stream.\n *\n * Accepts both OpenAI-style (`voice` / `model`) and ElevenLabs-style\n * (`voiceId` / `modelId`) input fields. ElevenLabs-style wins when both are\n * present.\n */\nexport async function handleTextToSpeech(\n runtime: IAgentRuntime,\n input: string | CloudTextToSpeechParams | OpenAITextToSpeechParams,\n): Promise<Uint8Array | AudioStreamResult> {\n if (!isCloudConnected(toRuntimeSettings(runtime))) {\n throw new CloudTtsUnavailableError(\n \"Eliza Cloud is not connected — falling through to next TTS handler\",\n );\n }\n\n const options = normalizeTextInput(input);\n // Explicit opt-in only (NOT the generic `stream` that useModel auto-injects\n // from an ambient text-streaming turn) so byte-expecting callers like the\n // GENERATE_MEDIA action keep getting a buffer.\n const wantsStream =\n typeof input === \"object\" &&\n input !== null &&\n (input as { audioStream?: boolean }).audioStream === true;\n\n const resolvedModel =\n options.modelId ||\n options.model ||\n (getSetting(runtime, \"ELIZAOS_CLOUD_TTS_MODEL\", \"eleven_flash_v2_5\") as string);\n logger.log(`[ELIZAOS_CLOUD] Using TEXT_TO_SPEECH model: ${resolvedModel}`);\n try {\n const speechStream = await fetchTextToSpeech(runtime, options);\n if (wantsStream) {\n const format = options.format || \"mp3\";\n const mimeType = format === \"mp3\" ? \"audio/mpeg\" : `audio/${format}`;\n return buildAudioStreamResult(speechStream, mimeType);\n }\n return ttsStreamToBytes(speechStream);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in TEXT_TO_SPEECH: ${message}`);\n throw error;\n }\n}\n\nexport { fetchTextToSpeech };\n"
8
+ "import type { Readable } from \"node:stream\";\nimport type { AudioStreamResult, IAgentRuntime } from \"@elizaos/core\";\nimport { isCloudConnected, logger, toRuntimeSettings } from \"@elizaos/core\";\nimport type { OpenAITextToSpeechParams } from \"../types\";\nimport { getSetting, isBrowser, resolveCloudTimeoutMs } from \"../utils/config\";\nimport { webStreamToNodeStream } from \"../utils/helpers\";\nimport { createElizaCloudClient } from \"../utils/sdk-client\";\n\n/**\n * Narrow client interface the speech handler actually exercises. Lets tests\n * substitute a fake without rebuilding the full SDK surface.\n */\nexport interface CloudTtsClient {\n routes: {\n postApiV1VoiceTts<T = unknown>(options: {\n headers?: Record<string, unknown>;\n json: { text: string; voiceId?: string; modelId?: string };\n timeoutMs?: number;\n }): Promise<T>;\n };\n}\n\ntype CloudTtsClientFactory = (runtime: IAgentRuntime) => CloudTtsClient;\n\nlet cloudTtsClientFactory: CloudTtsClientFactory = (runtime) =>\n createElizaCloudClient(runtime) as CloudTtsClient;\n\n/**\n * Test seam: substitute the SDK client factory used by `handleTextToSpeech`.\n * Pass `null` to reset to the real `createElizaCloudClient`. Production code\n * should never call this.\n */\nexport function setCloudTtsClientFactoryForTesting(\n factory: CloudTtsClientFactory | null,\n): void {\n if (factory === null) {\n cloudTtsClientFactory = (runtime) =>\n createElizaCloudClient(runtime) as CloudTtsClient;\n } else {\n cloudTtsClientFactory = factory;\n }\n}\n\n/**\n * Extended TTS params accepted by the cloud handler.\n *\n * The runtime canonical type (`TextToSpeechParams`) only carries `text`, but\n * the cloud TTS upstream maps to ElevenLabs and therefore accepts arbitrary\n * ElevenLabs `voiceId` + `modelId`. We accept those via either OpenAI-style\n * (`voice`, `model`) or ElevenLabs-style (`voiceId`, `modelId`) fields and\n * normalize them to the upstream shape.\n */\nexport interface CloudTextToSpeechParams extends OpenAITextToSpeechParams {\n voiceId?: string;\n modelId?: string;\n}\n\n/**\n * Marker error used so the runtime can fall through to the next TTS handler\n * (e.g. local omnivoice) when Eliza Cloud is not connected.\n */\nexport class CloudTtsUnavailableError extends Error {\n constructor(message = \"Eliza Cloud is not connected\") {\n super(message);\n this.name = \"CloudTtsUnavailableError\";\n }\n}\n\nfunction normalizeTextInput(\n input: string | CloudTextToSpeechParams | OpenAITextToSpeechParams,\n): CloudTextToSpeechParams {\n if (typeof input === \"string\") return { text: input };\n return input as CloudTextToSpeechParams;\n}\n\n/**\n * Pull an ElevenLabs `modelId` out of (in order):\n * 1. options.modelId — explicit ElevenLabs model id\n * 2. options.model with `elevenlabs/` prefix or `eleven_*` shape\n *\n * Returns `undefined` when nothing usable was provided so the upstream\n * can apply its own default (currently `eleven_flash_v2_5`).\n */\nfunction resolveModelId(\n options: CloudTextToSpeechParams,\n): string | undefined {\n if (options.modelId && options.modelId.trim()) {\n return options.modelId.trim();\n }\n const model = options.model?.trim();\n if (!model) return undefined;\n if (model.startsWith(\"elevenlabs/\")) {\n return model.split(\"/\").slice(1).join(\"/\");\n }\n if (model.startsWith(\"eleven_\")) {\n return model;\n }\n return undefined;\n}\n\n/**\n * Pull an ElevenLabs `voiceId` out of (in order):\n * 1. options.voiceId — explicit ElevenLabs voice id (preferred)\n * 2. options.voice — OpenAI-style voice name (rejected unless it looks\n * like an ElevenLabs id, i.e. neither an OpenAI alias nor \"nova\")\n *\n * Returns `undefined` when nothing usable was provided so the upstream\n * can apply its own default voice.\n */\nfunction resolveVoiceId(\n options: CloudTextToSpeechParams,\n): string | undefined {\n if (options.voiceId && options.voiceId.trim()) {\n return options.voiceId.trim();\n }\n const voice = options.voice?.trim();\n if (!voice) return undefined;\n // \"nova\" is the OpenAI default — treat as unset so the upstream falls back\n // to the cloud default voice instead of being forwarded as an opaque alias.\n if (voice === \"nova\") return undefined;\n return voice;\n}\n\nasync function fetchTextToSpeech(\n runtime: IAgentRuntime,\n options: CloudTextToSpeechParams,\n): Promise<ReadableStream<Uint8Array> | Readable> {\n const format = options.format || \"mp3\";\n const modelId = resolveModelId(options);\n const voiceId = resolveVoiceId(options);\n\n try {\n const res = (await cloudTtsClientFactory(runtime).routes.postApiV1VoiceTts({\n headers: {\n ...(format === \"mp3\" ? { Accept: \"audio/mpeg\" } : {}),\n },\n json: {\n text: options.text,\n ...(voiceId ? { voiceId } : {}),\n ...(modelId ? { modelId } : {}),\n },\n timeoutMs: resolveCloudTimeoutMs(\"ELIZAOS_CLOUD_TTS_TIMEOUT_MS\", 60_000),\n })) as Response;\n\n if (!res.ok) {\n const err = await res.text();\n throw new Error(`ElizaOS Cloud TTS error ${res.status}: ${err}`);\n }\n\n if (!res.body) {\n throw new Error(\"ElizaOS Cloud TTS response body is null\");\n }\n\n if (!isBrowser()) {\n return await webStreamToNodeStream(res.body);\n }\n\n return res.body;\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`Failed to fetch speech from ElizaOS Cloud TTS: ${message}`);\n }\n}\n\nfunction toUint8Array(chunk: unknown): Uint8Array {\n if (chunk instanceof Uint8Array) return chunk;\n if (chunk instanceof ArrayBuffer) return new Uint8Array(chunk);\n if (typeof chunk === \"string\") return new TextEncoder().encode(chunk);\n throw new TypeError(`Unexpected TTS chunk type: ${typeof chunk}`);\n}\n\nfunction concatChunks(chunks: Uint8Array[]): Uint8Array {\n const total = chunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);\n const out = new Uint8Array(total);\n let offset = 0;\n for (const chunk of chunks) {\n out.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return out;\n}\n\nasync function webStreamToUint8Array(\n stream: ReadableStream<Uint8Array>,\n): Promise<Uint8Array> {\n const reader = stream.getReader();\n const chunks: Uint8Array[] = [];\n try {\n while (true) {\n const result = await reader.read();\n if (result.done) break;\n chunks.push(toUint8Array(result.value));\n }\n } finally {\n reader.releaseLock();\n }\n return concatChunks(chunks);\n}\n\nasync function nodeStreamToUint8Array(stream: Readable): Promise<Uint8Array> {\n const chunks: Uint8Array[] = [];\n for await (const chunk of stream) {\n chunks.push(toUint8Array(chunk));\n }\n return concatChunks(chunks);\n}\n\nfunction isReadableStream(\n stream: ReadableStream<Uint8Array> | Readable,\n): stream is ReadableStream<Uint8Array> {\n return typeof (stream as { getReader?: unknown }).getReader === \"function\";\n}\n\nasync function ttsStreamToBytes(\n stream: ReadableStream<Uint8Array> | Readable,\n): Promise<Uint8Array> {\n if (isReadableStream(stream)) {\n return webStreamToUint8Array(stream);\n }\n return nodeStreamToUint8Array(stream);\n}\n\n/**\n * Wrap the upstream TTS byte stream as an {@link AudioStreamResult}: `audioStream`\n * yields each chunk as it arrives (so playback can start on the first byte\n * instead of draining the whole clip via {@link ttsStreamToBytes}), and `bytes`\n * resolves to the full concatenated audio once the stream is consumed.\n */\nfunction buildAudioStreamResult(\n stream: ReadableStream<Uint8Array> | Readable,\n mimeType: string,\n): AudioStreamResult {\n const collected: Uint8Array[] = [];\n let resolveBytes!: (value: Uint8Array) => void;\n let rejectBytes!: (reason: unknown) => void;\n const bytes = new Promise<Uint8Array>((resolve, reject) => {\n resolveBytes = resolve;\n rejectBytes = reject;\n });\n async function* generate(): AsyncGenerator<Uint8Array> {\n try {\n if (isReadableStream(stream)) {\n const reader = stream.getReader();\n try {\n for (;;) {\n const { value, done } = await reader.read();\n if (done) break;\n const chunk = toUint8Array(value);\n collected.push(chunk);\n yield chunk;\n }\n } finally {\n reader.releaseLock();\n }\n } else {\n for await (const value of stream) {\n const chunk = toUint8Array(value);\n collected.push(chunk);\n yield chunk;\n }\n }\n resolveBytes(concatChunks(collected));\n } catch (err) {\n rejectBytes(err);\n throw err;\n }\n }\n return { audioStream: generate(), bytes, mimeType };\n}\n\n/**\n * TEXT_TO_SPEECH handler for plugin-elizacloud.\n *\n * Behavior:\n * - When Eliza Cloud is **not** connected, throws `CloudTtsUnavailableError`\n * so the runtime's model-handler fallback chain can pick the next\n * provider (e.g. local omnivoice, ElevenLabs direct, etc.).\n * - When connected, forwards `text`, `voiceId`, and `modelId` to the\n * upstream cloud TTS proxy and returns the audio stream.\n *\n * Accepts both OpenAI-style (`voice` / `model`) and ElevenLabs-style\n * (`voiceId` / `modelId`) input fields. ElevenLabs-style wins when both are\n * present.\n */\nexport async function handleTextToSpeech(\n runtime: IAgentRuntime,\n input: string | CloudTextToSpeechParams | OpenAITextToSpeechParams,\n): Promise<Uint8Array | AudioStreamResult> {\n if (!isCloudConnected(toRuntimeSettings(runtime))) {\n throw new CloudTtsUnavailableError(\n \"Eliza Cloud is not connected — falling through to next TTS handler\",\n );\n }\n\n const options = normalizeTextInput(input);\n // Explicit opt-in only (NOT the generic `stream` that useModel auto-injects\n // from an ambient text-streaming turn) so byte-expecting callers like the\n // GENERATE_MEDIA action keep getting a buffer.\n const wantsStream =\n typeof input === \"object\" &&\n input !== null &&\n (input as { audioStream?: boolean }).audioStream === true;\n\n const resolvedModel =\n options.modelId ||\n options.model ||\n (getSetting(runtime, \"ELIZAOS_CLOUD_TTS_MODEL\", \"eleven_flash_v2_5\") as string);\n logger.log(`[ELIZAOS_CLOUD] Using TEXT_TO_SPEECH model: ${resolvedModel}`);\n try {\n const speechStream = await fetchTextToSpeech(runtime, options);\n if (wantsStream) {\n const format = options.format || \"mp3\";\n const mimeType = format === \"mp3\" ? \"audio/mpeg\" : `audio/${format}`;\n return buildAudioStreamResult(speechStream, mimeType);\n }\n return ttsStreamToBytes(speechStream);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in TEXT_TO_SPEECH: ${message}`);\n throw error;\n }\n}\n\nexport { fetchTextToSpeech };\n"
9
9
  ],
10
10
  "mappings": "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",
11
- "debugId": "FE6610E8B1CB634464756E2164756E21",
11
+ "debugId": "FE37C015969DE2E064756E2164756E21",
12
12
  "names": []
13
13
  }
@@ -74,6 +74,7 @@ type NativeToolCall = {
74
74
  input: unknown;
75
75
  };
76
76
  export declare function normalizeNativeTools(tools: unknown): unknown[] | undefined;
77
+ export declare function normalizeNativeToolChoice(toolChoice: unknown): unknown;
77
78
  type TextModelType = typeof TEXT_NANO_MODEL_TYPE | typeof TEXT_MEDIUM_MODEL_TYPE | typeof TEXT_SMALL_MODEL_TYPE | typeof TEXT_LARGE_MODEL_TYPE | typeof TEXT_MEGA_MODEL_TYPE | typeof RESPONSE_HANDLER_MODEL_TYPE | typeof ACTION_PLANNER_MODEL_TYPE;
78
79
  export declare function generateNativeChatCompletion(runtime: IAgentRuntime, modelType: TextModelType, params: GenerateTextParamsWithNativeOptions, context: {
79
80
  modelName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/models/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/models/text.ts"],"names":[],"mappings":"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"}
@@ -381,6 +381,9 @@ function isReasoningModel(modelName) {
381
381
  const lower = modelName.toLowerCase();
382
382
  return REASONING_MODEL_PATTERNS.some((pattern) => lower.includes(pattern));
383
383
  }
384
+ function isCerebrasServedModel(modelName) {
385
+ return modelName.toLowerCase().includes("gpt-oss");
386
+ }
384
387
  function isRecord(value) {
385
388
  return typeof value === "object" && value !== null && !Array.isArray(value);
386
389
  }
@@ -502,7 +505,15 @@ function normalizeNativeToolChoice(toolChoice) {
502
505
  }
503
506
  const choice = asRecord2(toolChoice);
504
507
  if (choice.type === "function") {
505
- return toolChoice;
508
+ const functionChoice2 = recordAt(choice, "function");
509
+ const toolName2 = firstString(functionChoice2.name, choice.name, choice.toolName);
510
+ return toolName2 ? {
511
+ type: "function",
512
+ function: {
513
+ ...functionChoice2,
514
+ name: toolName2
515
+ }
516
+ } : undefined;
506
517
  }
507
518
  if (choice.type === "tool") {
508
519
  const toolName2 = firstString(choice.toolName, choice.name);
@@ -512,10 +523,13 @@ function normalizeNativeToolChoice(toolChoice) {
512
523
  const toolName = firstString(choice.toolName, choice.name, functionChoice.name);
513
524
  return toolName ? { type: "function", function: { name: toolName } } : toolChoice;
514
525
  }
515
- function buildNativeResponseFormat(responseSchema) {
526
+ function buildNativeResponseFormat(responseSchema, modelName) {
516
527
  if (!responseSchema) {
517
528
  return;
518
529
  }
530
+ if (isCerebrasServedModel(modelName)) {
531
+ return { type: "json_object" };
532
+ }
519
533
  const schemaRecord = asRecord2(responseSchema);
520
534
  if (schemaRecord.responseFormat) {
521
535
  return schemaRecord.responseFormat;
@@ -593,15 +607,20 @@ function buildNativeRequestBody(params, modelName, promptText, systemPrompt) {
593
607
  const promptCacheKey = providerOptions ? resolvePromptCacheKey(providerOptions) : undefined;
594
608
  const tools = normalizeNativeTools(params.tools);
595
609
  const toolChoice = normalizeNativeToolChoice(params.toolChoice);
596
- const responseFormat = buildNativeResponseFormat(params.responseSchema);
610
+ const responseFormat = buildNativeResponseFormat(params.responseSchema, modelName);
597
611
  const requestBody = {
598
612
  model: modelName,
599
- messages: buildNativeMessages(params, promptText, systemPrompt),
600
- max_tokens: params.maxTokens ?? 8192
613
+ messages: buildNativeMessages(params, promptText, systemPrompt)
601
614
  };
615
+ if (!params.omitMaxTokens) {
616
+ requestBody.max_tokens = params.maxTokens ?? 8192;
617
+ }
602
618
  if (!isReasoningModel(modelName) && typeof params.temperature === "number") {
603
619
  requestBody.temperature = params.temperature;
604
620
  }
621
+ if (isCerebrasServedModel(modelName) && recordAt(asRecord2(params.providerOptions), "eliza").thinking === "off") {
622
+ requestBody.reasoning_effort = "low";
623
+ }
605
624
  if (tools) {
606
625
  requestBody.tools = tools;
607
626
  }
@@ -763,9 +782,11 @@ async function generateTextWithModel(runtime, modelType, params) {
763
782
  });
764
783
  const requestBody = {
765
784
  model: modelName,
766
- input,
767
- max_output_tokens: params.maxTokens ?? 8192
785
+ input
768
786
  };
787
+ if (!params.omitMaxTokens) {
788
+ requestBody.max_output_tokens = params.maxTokens ?? 8192;
789
+ }
769
790
  if (!reasoning && typeof params.temperature === "number") {
770
791
  requestBody.temperature = params.temperature;
771
792
  }
@@ -1157,6 +1178,7 @@ export {
1157
1178
  resolveStreamingEnabled,
1158
1179
  parseOpenAiSseStream,
1159
1180
  normalizeNativeTools,
1181
+ normalizeNativeToolChoice,
1160
1182
  handleTextSmall,
1161
1183
  handleTextNano,
1162
1184
  handleTextMega,
@@ -1171,4 +1193,4 @@ export {
1171
1193
  __resetNativeChatLimiterForTests
1172
1194
  };
1173
1195
 
1174
- //# debugId=4B93D6FA8FC79FF364756E2164756E21
1196
+ //# debugId=8C7301DC53E50E9164756E2164756E21