overai 1.4.0

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 (442) hide show
  1. package/README.md +248 -0
  2. package/dist/agent/context.d.ts +74 -0
  3. package/dist/agent/context.js +140 -0
  4. package/dist/agent/enhanced.d.ts +98 -0
  5. package/dist/agent/enhanced.js +293 -0
  6. package/dist/agent/handoff.d.ts +82 -0
  7. package/dist/agent/handoff.js +124 -0
  8. package/dist/agent/image.d.ts +57 -0
  9. package/dist/agent/image.js +116 -0
  10. package/dist/agent/index.d.ts +19 -0
  11. package/dist/agent/index.js +38 -0
  12. package/dist/agent/prompt-expander.d.ts +43 -0
  13. package/dist/agent/prompt-expander.js +99 -0
  14. package/dist/agent/proxy.d.ts +26 -0
  15. package/dist/agent/proxy.js +173 -0
  16. package/dist/agent/query-rewriter.d.ts +41 -0
  17. package/dist/agent/query-rewriter.js +94 -0
  18. package/dist/agent/research.d.ts +55 -0
  19. package/dist/agent/research.js +134 -0
  20. package/dist/agent/router.d.ts +141 -0
  21. package/dist/agent/router.js +209 -0
  22. package/dist/agent/simple.d.ts +289 -0
  23. package/dist/agent/simple.js +696 -0
  24. package/dist/agent/types.d.ts +56 -0
  25. package/dist/agent/types.js +165 -0
  26. package/dist/ai/agent-loop.d.ts +177 -0
  27. package/dist/ai/agent-loop.js +313 -0
  28. package/dist/ai/devtools.d.ts +74 -0
  29. package/dist/ai/devtools.js +216 -0
  30. package/dist/ai/embed.d.ts +71 -0
  31. package/dist/ai/embed.js +154 -0
  32. package/dist/ai/generate-image.d.ts +66 -0
  33. package/dist/ai/generate-image.js +138 -0
  34. package/dist/ai/generate-object.d.ts +132 -0
  35. package/dist/ai/generate-object.js +206 -0
  36. package/dist/ai/generate-text.d.ts +201 -0
  37. package/dist/ai/generate-text.js +253 -0
  38. package/dist/ai/index.d.ts +27 -0
  39. package/dist/ai/index.js +140 -0
  40. package/dist/ai/mcp.d.ts +181 -0
  41. package/dist/ai/mcp.js +234 -0
  42. package/dist/ai/middleware.d.ts +110 -0
  43. package/dist/ai/middleware.js +186 -0
  44. package/dist/ai/models.d.ts +67 -0
  45. package/dist/ai/models.js +249 -0
  46. package/dist/ai/multimodal.d.ts +125 -0
  47. package/dist/ai/multimodal.js +270 -0
  48. package/dist/ai/nextjs.d.ts +122 -0
  49. package/dist/ai/nextjs.js +218 -0
  50. package/dist/ai/server.d.ts +126 -0
  51. package/dist/ai/server.js +336 -0
  52. package/dist/ai/speech.d.ts +135 -0
  53. package/dist/ai/speech.js +296 -0
  54. package/dist/ai/telemetry.d.ts +162 -0
  55. package/dist/ai/telemetry.js +311 -0
  56. package/dist/ai/tool-approval.d.ts +225 -0
  57. package/dist/ai/tool-approval.js +407 -0
  58. package/dist/ai/tools.d.ts +93 -0
  59. package/dist/ai/tools.js +89 -0
  60. package/dist/ai/types.d.ts +47 -0
  61. package/dist/ai/types.js +5 -0
  62. package/dist/ai/ui-message.d.ts +218 -0
  63. package/dist/ai/ui-message.js +291 -0
  64. package/dist/auto/index.d.ts +62 -0
  65. package/dist/auto/index.js +163 -0
  66. package/dist/cache/index.d.ts +78 -0
  67. package/dist/cache/index.js +235 -0
  68. package/dist/cli/commands/agent.d.ts +30 -0
  69. package/dist/cli/commands/agent.js +151 -0
  70. package/dist/cli/commands/agents.d.ts +24 -0
  71. package/dist/cli/commands/agents.js +166 -0
  72. package/dist/cli/commands/approval.d.ts +10 -0
  73. package/dist/cli/commands/approval.js +253 -0
  74. package/dist/cli/commands/auto.d.ts +12 -0
  75. package/dist/cli/commands/auto.js +109 -0
  76. package/dist/cli/commands/autonomy.d.ts +5 -0
  77. package/dist/cli/commands/autonomy.js +152 -0
  78. package/dist/cli/commands/benchmark.d.ts +19 -0
  79. package/dist/cli/commands/benchmark.js +484 -0
  80. package/dist/cli/commands/cache.d.ts +9 -0
  81. package/dist/cli/commands/cache.js +143 -0
  82. package/dist/cli/commands/chat.d.ts +14 -0
  83. package/dist/cli/commands/chat.js +127 -0
  84. package/dist/cli/commands/checkpoints.d.ts +5 -0
  85. package/dist/cli/commands/checkpoints.js +236 -0
  86. package/dist/cli/commands/context.d.ts +11 -0
  87. package/dist/cli/commands/context.js +182 -0
  88. package/dist/cli/commands/cost.d.ts +5 -0
  89. package/dist/cli/commands/cost.js +146 -0
  90. package/dist/cli/commands/db.d.ts +9 -0
  91. package/dist/cli/commands/db.js +149 -0
  92. package/dist/cli/commands/embed.d.ts +20 -0
  93. package/dist/cli/commands/embed.js +375 -0
  94. package/dist/cli/commands/eval.d.ts +17 -0
  95. package/dist/cli/commands/eval.js +247 -0
  96. package/dist/cli/commands/external-agents.d.ts +5 -0
  97. package/dist/cli/commands/external-agents.js +170 -0
  98. package/dist/cli/commands/fast-context.d.ts +5 -0
  99. package/dist/cli/commands/fast-context.js +126 -0
  100. package/dist/cli/commands/flow.d.ts +5 -0
  101. package/dist/cli/commands/flow.js +141 -0
  102. package/dist/cli/commands/git.d.ts +5 -0
  103. package/dist/cli/commands/git.js +178 -0
  104. package/dist/cli/commands/graph-rag.d.ts +9 -0
  105. package/dist/cli/commands/graph-rag.js +131 -0
  106. package/dist/cli/commands/guardrail.d.ts +11 -0
  107. package/dist/cli/commands/guardrail.js +156 -0
  108. package/dist/cli/commands/handoff.d.ts +9 -0
  109. package/dist/cli/commands/handoff.js +133 -0
  110. package/dist/cli/commands/help.d.ts +8 -0
  111. package/dist/cli/commands/help.js +139 -0
  112. package/dist/cli/commands/image.d.ts +13 -0
  113. package/dist/cli/commands/image.js +192 -0
  114. package/dist/cli/commands/interactive.d.ts +6 -0
  115. package/dist/cli/commands/interactive.js +79 -0
  116. package/dist/cli/commands/jobs.d.ts +5 -0
  117. package/dist/cli/commands/jobs.js +282 -0
  118. package/dist/cli/commands/knowledge.d.ts +9 -0
  119. package/dist/cli/commands/knowledge.js +226 -0
  120. package/dist/cli/commands/llm.d.ts +21 -0
  121. package/dist/cli/commands/llm.js +748 -0
  122. package/dist/cli/commands/mcp.d.ts +9 -0
  123. package/dist/cli/commands/mcp.js +243 -0
  124. package/dist/cli/commands/memory.d.ts +10 -0
  125. package/dist/cli/commands/memory.js +198 -0
  126. package/dist/cli/commands/n8n.d.ts +5 -0
  127. package/dist/cli/commands/n8n.js +137 -0
  128. package/dist/cli/commands/observability.d.ts +16 -0
  129. package/dist/cli/commands/observability.js +335 -0
  130. package/dist/cli/commands/planning.d.ts +9 -0
  131. package/dist/cli/commands/planning.js +167 -0
  132. package/dist/cli/commands/prompt-expand.d.ts +11 -0
  133. package/dist/cli/commands/prompt-expand.js +100 -0
  134. package/dist/cli/commands/providers.d.ts +17 -0
  135. package/dist/cli/commands/providers.js +386 -0
  136. package/dist/cli/commands/query-rewrite.d.ts +12 -0
  137. package/dist/cli/commands/query-rewrite.js +102 -0
  138. package/dist/cli/commands/repo-map.d.ts +5 -0
  139. package/dist/cli/commands/repo-map.js +151 -0
  140. package/dist/cli/commands/reranker.d.ts +10 -0
  141. package/dist/cli/commands/reranker.js +144 -0
  142. package/dist/cli/commands/research.d.ts +12 -0
  143. package/dist/cli/commands/research.js +108 -0
  144. package/dist/cli/commands/router.d.ts +11 -0
  145. package/dist/cli/commands/router.js +142 -0
  146. package/dist/cli/commands/run.d.ts +14 -0
  147. package/dist/cli/commands/run.js +111 -0
  148. package/dist/cli/commands/sandbox.d.ts +5 -0
  149. package/dist/cli/commands/sandbox.js +135 -0
  150. package/dist/cli/commands/scheduler.d.ts +5 -0
  151. package/dist/cli/commands/scheduler.js +260 -0
  152. package/dist/cli/commands/session.d.ts +9 -0
  153. package/dist/cli/commands/session.js +238 -0
  154. package/dist/cli/commands/skills.d.ts +9 -0
  155. package/dist/cli/commands/skills.js +256 -0
  156. package/dist/cli/commands/telemetry.d.ts +9 -0
  157. package/dist/cli/commands/telemetry.js +146 -0
  158. package/dist/cli/commands/tools.d.ts +19 -0
  159. package/dist/cli/commands/tools.js +576 -0
  160. package/dist/cli/commands/vector.d.ts +10 -0
  161. package/dist/cli/commands/vector.js +171 -0
  162. package/dist/cli/commands/version.d.ts +8 -0
  163. package/dist/cli/commands/version.js +40 -0
  164. package/dist/cli/commands/voice.d.ts +10 -0
  165. package/dist/cli/commands/voice.js +162 -0
  166. package/dist/cli/commands/workflow.d.ts +13 -0
  167. package/dist/cli/commands/workflow.js +184 -0
  168. package/dist/cli/config/index.d.ts +6 -0
  169. package/dist/cli/config/index.js +22 -0
  170. package/dist/cli/config/load.d.ts +20 -0
  171. package/dist/cli/config/load.js +229 -0
  172. package/dist/cli/config/resolve.d.ts +28 -0
  173. package/dist/cli/config/resolve.js +70 -0
  174. package/dist/cli/config/schema.d.ts +15 -0
  175. package/dist/cli/config/schema.js +65 -0
  176. package/dist/cli/features/autonomy-mode.d.ts +98 -0
  177. package/dist/cli/features/autonomy-mode.js +266 -0
  178. package/dist/cli/features/background-jobs.d.ts +155 -0
  179. package/dist/cli/features/background-jobs.js +416 -0
  180. package/dist/cli/features/checkpoints.d.ts +126 -0
  181. package/dist/cli/features/checkpoints.js +288 -0
  182. package/dist/cli/features/cost-tracker.d.ts +101 -0
  183. package/dist/cli/features/cost-tracker.js +212 -0
  184. package/dist/cli/features/external-agents.d.ts +117 -0
  185. package/dist/cli/features/external-agents.js +296 -0
  186. package/dist/cli/features/fast-context.d.ts +126 -0
  187. package/dist/cli/features/fast-context.js +310 -0
  188. package/dist/cli/features/flow-display.d.ts +100 -0
  189. package/dist/cli/features/flow-display.js +254 -0
  190. package/dist/cli/features/git-integration.d.ts +138 -0
  191. package/dist/cli/features/git-integration.js +374 -0
  192. package/dist/cli/features/index.d.ts +17 -0
  193. package/dist/cli/features/index.js +102 -0
  194. package/dist/cli/features/interactive-tui.d.ts +114 -0
  195. package/dist/cli/features/interactive-tui.js +326 -0
  196. package/dist/cli/features/n8n-integration.d.ts +111 -0
  197. package/dist/cli/features/n8n-integration.js +299 -0
  198. package/dist/cli/features/repo-map.d.ts +101 -0
  199. package/dist/cli/features/repo-map.js +350 -0
  200. package/dist/cli/features/sandbox-executor.d.ts +89 -0
  201. package/dist/cli/features/sandbox-executor.js +314 -0
  202. package/dist/cli/features/scheduler.d.ts +111 -0
  203. package/dist/cli/features/scheduler.js +298 -0
  204. package/dist/cli/features/slash-commands.d.ts +77 -0
  205. package/dist/cli/features/slash-commands.js +316 -0
  206. package/dist/cli/index.d.ts +24 -0
  207. package/dist/cli/index.js +214 -0
  208. package/dist/cli/output/errors.d.ts +23 -0
  209. package/dist/cli/output/errors.js +36 -0
  210. package/dist/cli/output/json.d.ts +27 -0
  211. package/dist/cli/output/json.js +31 -0
  212. package/dist/cli/output/pretty.d.ts +13 -0
  213. package/dist/cli/output/pretty.js +31 -0
  214. package/dist/cli/runtime/env.d.ts +12 -0
  215. package/dist/cli/runtime/env.js +55 -0
  216. package/dist/cli/runtime/exit.d.ts +11 -0
  217. package/dist/cli/runtime/exit.js +49 -0
  218. package/dist/cli/runtime/index.d.ts +6 -0
  219. package/dist/cli/runtime/index.js +22 -0
  220. package/dist/cli/runtime/lazy.d.ts +18 -0
  221. package/dist/cli/runtime/lazy.js +85 -0
  222. package/dist/cli/spec/cli-spec.d.ts +87 -0
  223. package/dist/cli/spec/cli-spec.js +551 -0
  224. package/dist/cli/spec/index.d.ts +4 -0
  225. package/dist/cli/spec/index.js +20 -0
  226. package/dist/db/index.d.ts +6 -0
  227. package/dist/db/index.js +75 -0
  228. package/dist/db/types.d.ts +42 -0
  229. package/dist/db/types.js +2 -0
  230. package/dist/eval/index.d.ts +61 -0
  231. package/dist/eval/index.js +157 -0
  232. package/dist/events/index.d.ts +84 -0
  233. package/dist/events/index.js +153 -0
  234. package/dist/guardrails/index.d.ts +82 -0
  235. package/dist/guardrails/index.js +202 -0
  236. package/dist/guardrails/llm-guardrail.d.ts +46 -0
  237. package/dist/guardrails/llm-guardrail.js +112 -0
  238. package/dist/index.d.ts +92 -0
  239. package/dist/index.js +608 -0
  240. package/dist/integrations/computer-use.d.ts +182 -0
  241. package/dist/integrations/computer-use.js +356 -0
  242. package/dist/integrations/index.d.ts +7 -0
  243. package/dist/integrations/index.js +26 -0
  244. package/dist/integrations/observability/base.d.ts +123 -0
  245. package/dist/integrations/observability/base.js +183 -0
  246. package/dist/integrations/observability/index.d.ts +8 -0
  247. package/dist/integrations/observability/index.js +29 -0
  248. package/dist/integrations/observability/langfuse.d.ts +32 -0
  249. package/dist/integrations/observability/langfuse.js +174 -0
  250. package/dist/integrations/postgres.d.ts +162 -0
  251. package/dist/integrations/postgres.js +396 -0
  252. package/dist/integrations/slack.d.ts +145 -0
  253. package/dist/integrations/slack.js +270 -0
  254. package/dist/integrations/vector/base.d.ts +110 -0
  255. package/dist/integrations/vector/base.js +158 -0
  256. package/dist/integrations/vector/chroma.d.ts +25 -0
  257. package/dist/integrations/vector/chroma.js +143 -0
  258. package/dist/integrations/vector/index.d.ts +14 -0
  259. package/dist/integrations/vector/index.js +37 -0
  260. package/dist/integrations/vector/pinecone.d.ts +28 -0
  261. package/dist/integrations/vector/pinecone.js +172 -0
  262. package/dist/integrations/vector/qdrant.d.ts +25 -0
  263. package/dist/integrations/vector/qdrant.js +146 -0
  264. package/dist/integrations/vector/weaviate.d.ts +30 -0
  265. package/dist/integrations/vector/weaviate.js +206 -0
  266. package/dist/integrations/voice/base.d.ts +76 -0
  267. package/dist/integrations/voice/base.js +168 -0
  268. package/dist/integrations/voice/index.d.ts +6 -0
  269. package/dist/integrations/voice/index.js +26 -0
  270. package/dist/knowledge/chunking.d.ts +55 -0
  271. package/dist/knowledge/chunking.js +158 -0
  272. package/dist/knowledge/graph-rag.d.ts +125 -0
  273. package/dist/knowledge/graph-rag.js +289 -0
  274. package/dist/knowledge/index.d.ts +24 -0
  275. package/dist/knowledge/index.js +47 -0
  276. package/dist/knowledge/knowledge.d.ts +0 -0
  277. package/dist/knowledge/knowledge.js +1 -0
  278. package/dist/knowledge/rag.d.ts +80 -0
  279. package/dist/knowledge/rag.js +147 -0
  280. package/dist/knowledge/reranker.d.ts +86 -0
  281. package/dist/knowledge/reranker.js +196 -0
  282. package/dist/llm/backend-resolver.d.ts +77 -0
  283. package/dist/llm/backend-resolver.js +242 -0
  284. package/dist/llm/embeddings.d.ts +66 -0
  285. package/dist/llm/embeddings.js +294 -0
  286. package/dist/llm/index.d.ts +29 -0
  287. package/dist/llm/index.js +33 -0
  288. package/dist/llm/llm.d.ts +0 -0
  289. package/dist/llm/llm.js +1 -0
  290. package/dist/llm/openai.d.ts +39 -0
  291. package/dist/llm/openai.js +302 -0
  292. package/dist/llm/providers/ai-sdk/adapter.d.ts +121 -0
  293. package/dist/llm/providers/ai-sdk/adapter.js +399 -0
  294. package/dist/llm/providers/ai-sdk/backend.d.ts +49 -0
  295. package/dist/llm/providers/ai-sdk/backend.js +421 -0
  296. package/dist/llm/providers/ai-sdk/index.d.ts +69 -0
  297. package/dist/llm/providers/ai-sdk/index.js +200 -0
  298. package/dist/llm/providers/ai-sdk/middleware.d.ts +60 -0
  299. package/dist/llm/providers/ai-sdk/middleware.js +262 -0
  300. package/dist/llm/providers/ai-sdk/provider-map.d.ts +75 -0
  301. package/dist/llm/providers/ai-sdk/provider-map.js +258 -0
  302. package/dist/llm/providers/ai-sdk/types.d.ts +217 -0
  303. package/dist/llm/providers/ai-sdk/types.js +222 -0
  304. package/dist/llm/providers/anthropic.d.ts +33 -0
  305. package/dist/llm/providers/anthropic.js +291 -0
  306. package/dist/llm/providers/base.d.ts +25 -0
  307. package/dist/llm/providers/base.js +43 -0
  308. package/dist/llm/providers/google.d.ts +27 -0
  309. package/dist/llm/providers/google.js +275 -0
  310. package/dist/llm/providers/index.d.ts +107 -0
  311. package/dist/llm/providers/index.js +216 -0
  312. package/dist/llm/providers/openai.d.ts +18 -0
  313. package/dist/llm/providers/openai.js +203 -0
  314. package/dist/llm/providers/registry.d.ts +159 -0
  315. package/dist/llm/providers/registry.js +279 -0
  316. package/dist/llm/providers/types.d.ts +94 -0
  317. package/dist/llm/providers/types.js +5 -0
  318. package/dist/main.d.ts +0 -0
  319. package/dist/main.js +1 -0
  320. package/dist/memory/auto-memory.d.ts +136 -0
  321. package/dist/memory/auto-memory.js +301 -0
  322. package/dist/memory/file-memory.d.ts +88 -0
  323. package/dist/memory/file-memory.js +287 -0
  324. package/dist/memory/index.d.ts +26 -0
  325. package/dist/memory/index.js +41 -0
  326. package/dist/memory/memory.d.ts +92 -0
  327. package/dist/memory/memory.js +170 -0
  328. package/dist/observability/adapters/console.d.ts +33 -0
  329. package/dist/observability/adapters/console.js +71 -0
  330. package/dist/observability/adapters/external/arize.d.ts +20 -0
  331. package/dist/observability/adapters/external/arize.js +22 -0
  332. package/dist/observability/adapters/external/axiom.d.ts +20 -0
  333. package/dist/observability/adapters/external/axiom.js +22 -0
  334. package/dist/observability/adapters/external/braintrust.d.ts +20 -0
  335. package/dist/observability/adapters/external/braintrust.js +22 -0
  336. package/dist/observability/adapters/external/helicone.d.ts +20 -0
  337. package/dist/observability/adapters/external/helicone.js +22 -0
  338. package/dist/observability/adapters/external/laminar.d.ts +20 -0
  339. package/dist/observability/adapters/external/laminar.js +22 -0
  340. package/dist/observability/adapters/external/langfuse.d.ts +28 -0
  341. package/dist/observability/adapters/external/langfuse.js +186 -0
  342. package/dist/observability/adapters/external/langsmith.d.ts +21 -0
  343. package/dist/observability/adapters/external/langsmith.js +83 -0
  344. package/dist/observability/adapters/external/langwatch.d.ts +20 -0
  345. package/dist/observability/adapters/external/langwatch.js +22 -0
  346. package/dist/observability/adapters/external/maxim.d.ts +20 -0
  347. package/dist/observability/adapters/external/maxim.js +22 -0
  348. package/dist/observability/adapters/external/patronus.d.ts +20 -0
  349. package/dist/observability/adapters/external/patronus.js +22 -0
  350. package/dist/observability/adapters/external/scorecard.d.ts +20 -0
  351. package/dist/observability/adapters/external/scorecard.js +22 -0
  352. package/dist/observability/adapters/external/signoz.d.ts +20 -0
  353. package/dist/observability/adapters/external/signoz.js +22 -0
  354. package/dist/observability/adapters/external/traceloop.d.ts +20 -0
  355. package/dist/observability/adapters/external/traceloop.js +22 -0
  356. package/dist/observability/adapters/external/weave.d.ts +20 -0
  357. package/dist/observability/adapters/external/weave.js +22 -0
  358. package/dist/observability/adapters/index.d.ts +19 -0
  359. package/dist/observability/adapters/index.js +289 -0
  360. package/dist/observability/adapters/memory.d.ts +41 -0
  361. package/dist/observability/adapters/memory.js +190 -0
  362. package/dist/observability/adapters/noop.d.ts +25 -0
  363. package/dist/observability/adapters/noop.js +64 -0
  364. package/dist/observability/index.d.ts +47 -0
  365. package/dist/observability/index.js +115 -0
  366. package/dist/observability/types.d.ts +165 -0
  367. package/dist/observability/types.js +165 -0
  368. package/dist/planning/index.d.ts +253 -0
  369. package/dist/planning/index.js +475 -0
  370. package/dist/process/index.d.ts +25 -0
  371. package/dist/process/index.js +37 -0
  372. package/dist/process/process.d.ts +0 -0
  373. package/dist/process/process.js +1 -0
  374. package/dist/session/index.d.ts +111 -0
  375. package/dist/session/index.js +250 -0
  376. package/dist/skills/index.d.ts +70 -0
  377. package/dist/skills/index.js +233 -0
  378. package/dist/task/index.d.ts +25 -0
  379. package/dist/task/index.js +32 -0
  380. package/dist/task/task.d.ts +0 -0
  381. package/dist/task/task.js +1 -0
  382. package/dist/telemetry/index.d.ts +175 -0
  383. package/dist/telemetry/index.js +287 -0
  384. package/dist/tools/arxivTools.d.ts +32 -0
  385. package/dist/tools/arxivTools.js +81 -0
  386. package/dist/tools/base.d.ts +97 -0
  387. package/dist/tools/base.js +147 -0
  388. package/dist/tools/builtins/airweave.d.ts +32 -0
  389. package/dist/tools/builtins/airweave.js +119 -0
  390. package/dist/tools/builtins/bedrock-agentcore.d.ts +62 -0
  391. package/dist/tools/builtins/bedrock-agentcore.js +233 -0
  392. package/dist/tools/builtins/code-execution.d.ts +36 -0
  393. package/dist/tools/builtins/code-execution.js +136 -0
  394. package/dist/tools/builtins/code-mode.d.ts +54 -0
  395. package/dist/tools/builtins/code-mode.js +167 -0
  396. package/dist/tools/builtins/custom.d.ts +42 -0
  397. package/dist/tools/builtins/custom.js +195 -0
  398. package/dist/tools/builtins/exa.d.ts +53 -0
  399. package/dist/tools/builtins/exa.js +112 -0
  400. package/dist/tools/builtins/firecrawl.d.ts +56 -0
  401. package/dist/tools/builtins/firecrawl.js +158 -0
  402. package/dist/tools/builtins/index.d.ts +45 -0
  403. package/dist/tools/builtins/index.js +180 -0
  404. package/dist/tools/builtins/parallel.d.ts +30 -0
  405. package/dist/tools/builtins/parallel.js +113 -0
  406. package/dist/tools/builtins/perplexity.d.ts +32 -0
  407. package/dist/tools/builtins/perplexity.js +113 -0
  408. package/dist/tools/builtins/superagent.d.ts +66 -0
  409. package/dist/tools/builtins/superagent.js +187 -0
  410. package/dist/tools/builtins/tavily.d.ts +99 -0
  411. package/dist/tools/builtins/tavily.js +285 -0
  412. package/dist/tools/builtins/valyu.d.ts +65 -0
  413. package/dist/tools/builtins/valyu.js +193 -0
  414. package/dist/tools/decorator.d.ts +91 -0
  415. package/dist/tools/decorator.js +165 -0
  416. package/dist/tools/index.d.ts +8 -0
  417. package/dist/tools/index.js +36 -0
  418. package/dist/tools/mcpSse.d.ts +43 -0
  419. package/dist/tools/mcpSse.js +110 -0
  420. package/dist/tools/registry/index.d.ts +9 -0
  421. package/dist/tools/registry/index.js +28 -0
  422. package/dist/tools/registry/middleware.d.ts +43 -0
  423. package/dist/tools/registry/middleware.js +220 -0
  424. package/dist/tools/registry/registry.d.ts +92 -0
  425. package/dist/tools/registry/registry.js +280 -0
  426. package/dist/tools/registry/types.d.ts +217 -0
  427. package/dist/tools/registry/types.js +49 -0
  428. package/dist/tools/test.d.ts +0 -0
  429. package/dist/tools/test.js +1 -0
  430. package/dist/tools/tools.d.ts +74 -0
  431. package/dist/tools/tools.js +133 -0
  432. package/dist/utils/logger.d.ts +25 -0
  433. package/dist/utils/logger.js +149 -0
  434. package/dist/utils/pretty-logger.d.ts +21 -0
  435. package/dist/utils/pretty-logger.js +248 -0
  436. package/dist/workflows/index.d.ts +118 -0
  437. package/dist/workflows/index.js +247 -0
  438. package/dist/workflows/loop.d.ts +0 -0
  439. package/dist/workflows/loop.js +1 -0
  440. package/dist/workflows/yaml-parser.d.ts +48 -0
  441. package/dist/workflows/yaml-parser.js +304 -0
  442. package/package.json +119 -0
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ /**
3
+ * Models - AI SDK Wrapper
4
+ *
5
+ * Provides model aliases and utilities for model resolution.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.MODEL_ALIASES = void 0;
42
+ exports.parseModel = parseModel;
43
+ exports.getModel = getModel;
44
+ exports.createModel = createModel;
45
+ exports.listModelAliases = listModelAliases;
46
+ exports.hasModelAlias = hasModelAlias;
47
+ exports.resolveModelAlias = resolveModelAlias;
48
+ /**
49
+ * Model aliases for common models across providers.
50
+ * Maps friendly names to provider/model format.
51
+ */
52
+ exports.MODEL_ALIASES = {
53
+ // OpenAI
54
+ 'gpt-4o': 'openai/gpt-4o',
55
+ 'gpt-4o-mini': 'openai/gpt-4o-mini',
56
+ 'gpt-4-turbo': 'openai/gpt-4-turbo',
57
+ 'gpt-4': 'openai/gpt-4',
58
+ 'gpt-3.5-turbo': 'openai/gpt-3.5-turbo',
59
+ 'gpt-5': 'openai/gpt-5',
60
+ 'o1': 'openai/o1',
61
+ 'o1-mini': 'openai/o1-mini',
62
+ 'o1-preview': 'openai/o1-preview',
63
+ 'o3': 'openai/o3',
64
+ 'o3-mini': 'openai/o3-mini',
65
+ // Anthropic
66
+ 'claude-4': 'anthropic/claude-4-sonnet-20250514',
67
+ 'claude-4-opus': 'anthropic/claude-4-opus-20250514',
68
+ 'claude-4-sonnet': 'anthropic/claude-4-sonnet-20250514',
69
+ 'claude-3.7-sonnet': 'anthropic/claude-3-7-sonnet-20250219',
70
+ 'claude-3.5-sonnet': 'anthropic/claude-3-5-sonnet-20241022',
71
+ 'claude-3-sonnet': 'anthropic/claude-3-sonnet-20240229',
72
+ 'claude-3-opus': 'anthropic/claude-3-opus-20240229',
73
+ 'claude-3-haiku': 'anthropic/claude-3-haiku-20240307',
74
+ // Google
75
+ 'gemini-3': 'google/gemini-3.0-pro',
76
+ 'gemini-2.5-pro': 'google/gemini-2.5-pro-preview-06-05',
77
+ 'gemini-2.5-flash': 'google/gemini-2.5-flash-preview-05-20',
78
+ 'gemini-2.0-flash': 'google/gemini-2.0-flash',
79
+ 'gemini-1.5-pro': 'google/gemini-1.5-pro',
80
+ 'gemini-1.5-flash': 'google/gemini-1.5-flash',
81
+ // DeepSeek
82
+ 'deepseek-r1': 'deepseek/deepseek-reasoner',
83
+ 'deepseek-v3': 'deepseek/deepseek-chat',
84
+ 'deepseek-v3.2': 'deepseek/deepseek-chat-v3.2',
85
+ // Meta Llama
86
+ 'llama-3.1': 'groq/llama-3.1-70b-versatile',
87
+ 'llama-3.1-8b': 'groq/llama-3.1-8b-instant',
88
+ 'llama-3.1-70b': 'groq/llama-3.1-70b-versatile',
89
+ 'llama-3.1-405b': 'together/meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo',
90
+ // Embedding models
91
+ 'text-embedding-3-small': 'openai/text-embedding-3-small',
92
+ 'text-embedding-3-large': 'openai/text-embedding-3-large',
93
+ 'text-embedding-004': 'google/text-embedding-004',
94
+ // Image models
95
+ 'dall-e-3': 'openai/dall-e-3',
96
+ 'dall-e-2': 'openai/dall-e-2',
97
+ 'imagen-3': 'google/imagen-3.0-generate-002',
98
+ };
99
+ /**
100
+ * Parse a model string into provider and model ID.
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * parseModel('gpt-4o') // { provider: 'openai', modelId: 'gpt-4o', original: 'gpt-4o' }
105
+ * parseModel('anthropic/claude-3-sonnet') // { provider: 'anthropic', modelId: 'claude-3-sonnet', original: 'anthropic/claude-3-sonnet' }
106
+ * ```
107
+ */
108
+ function parseModel(model) {
109
+ // Check aliases first
110
+ const aliased = exports.MODEL_ALIASES[model];
111
+ const modelString = aliased || model;
112
+ if (modelString.includes('/')) {
113
+ const parts = modelString.split('/');
114
+ return {
115
+ provider: parts[0].toLowerCase(),
116
+ modelId: parts.slice(1).join('/'),
117
+ original: model,
118
+ };
119
+ }
120
+ // Infer provider from model name
121
+ let provider = 'openai';
122
+ if (modelString.startsWith('claude'))
123
+ provider = 'anthropic';
124
+ else if (modelString.startsWith('gemini'))
125
+ provider = 'google';
126
+ else if (modelString.startsWith('deepseek'))
127
+ provider = 'deepseek';
128
+ else if (modelString.startsWith('llama'))
129
+ provider = 'groq';
130
+ return {
131
+ provider,
132
+ modelId: modelString,
133
+ original: model,
134
+ };
135
+ }
136
+ /**
137
+ * Get a model instance from a model string.
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * const model = await getModel('gpt-4o');
142
+ * const result = await generateText({ model, prompt: 'Hello' });
143
+ * ```
144
+ */
145
+ async function getModel(model) {
146
+ const config = parseModel(model);
147
+ let providerModule;
148
+ try {
149
+ switch (config.provider) {
150
+ case 'openai':
151
+ providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
152
+ return providerModule.openai(config.modelId);
153
+ case 'anthropic':
154
+ providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/anthropic')));
155
+ return providerModule.anthropic(config.modelId);
156
+ case 'google':
157
+ providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/google')));
158
+ return providerModule.google(config.modelId);
159
+ case 'groq':
160
+ // @ts-ignore - Optional dependency
161
+ providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/groq')));
162
+ return providerModule.groq(config.modelId);
163
+ case 'deepseek':
164
+ // @ts-ignore - Optional dependency
165
+ providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/deepseek')));
166
+ return providerModule.deepseek(config.modelId);
167
+ default:
168
+ // Try OpenAI-compatible
169
+ providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
170
+ return providerModule.openai(config.modelId);
171
+ }
172
+ }
173
+ catch (error) {
174
+ throw new Error(`Failed to load provider '${config.provider}': ${error.message}. ` +
175
+ `Install with: npm install @ai-sdk/${config.provider}`);
176
+ }
177
+ }
178
+ /**
179
+ * Create a model with custom configuration.
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * const model = await createModel('gpt-4o', {
184
+ * baseURL: 'https://custom-endpoint.com/v1',
185
+ * apiKey: 'custom-key'
186
+ * });
187
+ * ```
188
+ */
189
+ async function createModel(model, options) {
190
+ const config = parseModel(model);
191
+ let providerModule;
192
+ try {
193
+ switch (config.provider) {
194
+ case 'openai':
195
+ providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
196
+ const openaiProvider = providerModule.createOpenAI({
197
+ baseURL: options?.baseURL,
198
+ apiKey: options?.apiKey,
199
+ headers: options?.headers,
200
+ });
201
+ return openaiProvider(config.modelId);
202
+ case 'anthropic':
203
+ providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/anthropic')));
204
+ const anthropicProvider = providerModule.createAnthropic({
205
+ baseURL: options?.baseURL,
206
+ apiKey: options?.apiKey,
207
+ headers: options?.headers,
208
+ });
209
+ return anthropicProvider(config.modelId);
210
+ case 'google':
211
+ providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/google')));
212
+ const googleProvider = providerModule.createGoogleGenerativeAI({
213
+ baseURL: options?.baseURL,
214
+ apiKey: options?.apiKey,
215
+ headers: options?.headers,
216
+ });
217
+ return googleProvider(config.modelId);
218
+ default:
219
+ providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
220
+ const defaultProvider = providerModule.createOpenAI({
221
+ baseURL: options?.baseURL,
222
+ apiKey: options?.apiKey,
223
+ headers: options?.headers,
224
+ });
225
+ return defaultProvider(config.modelId);
226
+ }
227
+ }
228
+ catch (error) {
229
+ throw new Error(`Failed to create model '${model}': ${error.message}`);
230
+ }
231
+ }
232
+ /**
233
+ * List all available model aliases.
234
+ */
235
+ function listModelAliases() {
236
+ return Object.keys(exports.MODEL_ALIASES);
237
+ }
238
+ /**
239
+ * Check if a model alias exists.
240
+ */
241
+ function hasModelAlias(alias) {
242
+ return alias in exports.MODEL_ALIASES;
243
+ }
244
+ /**
245
+ * Resolve a model alias to its full provider/model format.
246
+ */
247
+ function resolveModelAlias(alias) {
248
+ return exports.MODEL_ALIASES[alias] || alias;
249
+ }
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Multimodal - AI SDK Wrapper
3
+ *
4
+ * Provides utilities for multimodal inputs (images, files, PDFs).
5
+ */
6
+ export type InputPart = TextPart | ImagePart | FilePart | PdfPart;
7
+ export interface TextPart {
8
+ type: 'text';
9
+ text: string;
10
+ }
11
+ export interface ImagePart {
12
+ type: 'image';
13
+ /** Image data as URL, base64 string, or Uint8Array */
14
+ image: string | Uint8Array | URL;
15
+ /** MIME type (auto-detected if not provided) */
16
+ mimeType?: string;
17
+ }
18
+ export interface FilePart {
19
+ type: 'file';
20
+ /** File data as URL, base64 string, or Uint8Array */
21
+ data: string | Uint8Array | URL;
22
+ /** MIME type (required) */
23
+ mimeType: string;
24
+ /** File name (optional) */
25
+ name?: string;
26
+ }
27
+ export interface PdfPart {
28
+ type: 'pdf';
29
+ /** PDF data as URL, base64 string, or Uint8Array */
30
+ data: string | Uint8Array | URL;
31
+ /** Page range to extract (optional) */
32
+ pages?: {
33
+ start?: number;
34
+ end?: number;
35
+ };
36
+ /** Extract text only (default: false) */
37
+ textOnly?: boolean;
38
+ }
39
+ /**
40
+ * Create a text part.
41
+ */
42
+ export declare function createTextPart(text: string): TextPart;
43
+ /**
44
+ * Create an image part from various sources.
45
+ *
46
+ * @example From URL
47
+ * ```typescript
48
+ * const imagePart = createImagePart('https://example.com/image.png');
49
+ * ```
50
+ *
51
+ * @example From base64
52
+ * ```typescript
53
+ * const imagePart = createImagePart('data:image/png;base64,...');
54
+ * ```
55
+ *
56
+ * @example From file path
57
+ * ```typescript
58
+ * const imagePart = await createImagePart('./image.png');
59
+ * ```
60
+ */
61
+ export declare function createImagePart(source: string | Uint8Array | URL, mimeType?: string): ImagePart;
62
+ /**
63
+ * Create a file part from various sources.
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * const filePart = createFilePart('./document.txt', 'text/plain');
68
+ * ```
69
+ */
70
+ export declare function createFilePart(source: string | Uint8Array | URL, mimeType: string, name?: string): FilePart;
71
+ /**
72
+ * Create a PDF part from various sources.
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * const pdfPart = createPdfPart('./document.pdf');
77
+ * ```
78
+ *
79
+ * @example With page range
80
+ * ```typescript
81
+ * const pdfPart = createPdfPart('./document.pdf', { pages: { start: 1, end: 5 } });
82
+ * ```
83
+ */
84
+ export declare function createPdfPart(source: string | Uint8Array | URL, options?: {
85
+ pages?: {
86
+ start?: number;
87
+ end?: number;
88
+ };
89
+ textOnly?: boolean;
90
+ }): PdfPart;
91
+ /**
92
+ * Convert input parts to AI SDK message content format.
93
+ */
94
+ export declare function toMessageContent(parts: InputPart[]): any[];
95
+ /**
96
+ * Create a multimodal message with text and images.
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * const message = createMultimodalMessage(
101
+ * 'What is in this image?',
102
+ * ['https://example.com/image.png']
103
+ * );
104
+ * ```
105
+ */
106
+ export declare function createMultimodalMessage(text: string, images: (string | Uint8Array | URL)[], role?: 'user' | 'assistant'): {
107
+ role: string;
108
+ content: any[];
109
+ };
110
+ /**
111
+ * Convert a base64 string to Uint8Array.
112
+ */
113
+ export declare function base64ToUint8Array(base64: string): Uint8Array;
114
+ /**
115
+ * Convert Uint8Array to base64 string.
116
+ */
117
+ export declare function uint8ArrayToBase64(bytes: Uint8Array): string;
118
+ /**
119
+ * Check if a string is a valid URL.
120
+ */
121
+ export declare function isUrl(str: string): boolean;
122
+ /**
123
+ * Check if a string is a data URL.
124
+ */
125
+ export declare function isDataUrl(str: string): boolean;
@@ -0,0 +1,270 @@
1
+ "use strict";
2
+ /**
3
+ * Multimodal - AI SDK Wrapper
4
+ *
5
+ * Provides utilities for multimodal inputs (images, files, PDFs).
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.createTextPart = createTextPart;
42
+ exports.createImagePart = createImagePart;
43
+ exports.createFilePart = createFilePart;
44
+ exports.createPdfPart = createPdfPart;
45
+ exports.toMessageContent = toMessageContent;
46
+ exports.createMultimodalMessage = createMultimodalMessage;
47
+ exports.base64ToUint8Array = base64ToUint8Array;
48
+ exports.uint8ArrayToBase64 = uint8ArrayToBase64;
49
+ exports.isUrl = isUrl;
50
+ exports.isDataUrl = isDataUrl;
51
+ const fs = __importStar(require("fs"));
52
+ const path = __importStar(require("path"));
53
+ /**
54
+ * Create a text part.
55
+ */
56
+ function createTextPart(text) {
57
+ return { type: 'text', text };
58
+ }
59
+ /**
60
+ * Create an image part from various sources.
61
+ *
62
+ * @example From URL
63
+ * ```typescript
64
+ * const imagePart = createImagePart('https://example.com/image.png');
65
+ * ```
66
+ *
67
+ * @example From base64
68
+ * ```typescript
69
+ * const imagePart = createImagePart('data:image/png;base64,...');
70
+ * ```
71
+ *
72
+ * @example From file path
73
+ * ```typescript
74
+ * const imagePart = await createImagePart('./image.png');
75
+ * ```
76
+ */
77
+ function createImagePart(source, mimeType) {
78
+ // If it's a file path, read it
79
+ if (typeof source === 'string' && !source.startsWith('http') && !source.startsWith('data:')) {
80
+ if (fs.existsSync(source)) {
81
+ const buffer = fs.readFileSync(source);
82
+ const detectedMime = mimeType || detectImageMimeType(source);
83
+ return {
84
+ type: 'image',
85
+ image: buffer,
86
+ mimeType: detectedMime,
87
+ };
88
+ }
89
+ }
90
+ return {
91
+ type: 'image',
92
+ image: source,
93
+ mimeType,
94
+ };
95
+ }
96
+ /**
97
+ * Create a file part from various sources.
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * const filePart = createFilePart('./document.txt', 'text/plain');
102
+ * ```
103
+ */
104
+ function createFilePart(source, mimeType, name) {
105
+ // If it's a file path, read it
106
+ if (typeof source === 'string' && !source.startsWith('http') && !source.startsWith('data:')) {
107
+ if (fs.existsSync(source)) {
108
+ const buffer = fs.readFileSync(source);
109
+ return {
110
+ type: 'file',
111
+ data: buffer,
112
+ mimeType,
113
+ name: name || path.basename(source),
114
+ };
115
+ }
116
+ }
117
+ return {
118
+ type: 'file',
119
+ data: source,
120
+ mimeType,
121
+ name,
122
+ };
123
+ }
124
+ /**
125
+ * Create a PDF part from various sources.
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * const pdfPart = createPdfPart('./document.pdf');
130
+ * ```
131
+ *
132
+ * @example With page range
133
+ * ```typescript
134
+ * const pdfPart = createPdfPart('./document.pdf', { pages: { start: 1, end: 5 } });
135
+ * ```
136
+ */
137
+ function createPdfPart(source, options) {
138
+ // If it's a file path, read it
139
+ if (typeof source === 'string' && !source.startsWith('http') && !source.startsWith('data:')) {
140
+ if (fs.existsSync(source)) {
141
+ const buffer = fs.readFileSync(source);
142
+ return {
143
+ type: 'pdf',
144
+ data: buffer,
145
+ pages: options?.pages,
146
+ textOnly: options?.textOnly,
147
+ };
148
+ }
149
+ }
150
+ return {
151
+ type: 'pdf',
152
+ data: source,
153
+ pages: options?.pages,
154
+ textOnly: options?.textOnly,
155
+ };
156
+ }
157
+ /**
158
+ * Convert input parts to AI SDK message content format.
159
+ */
160
+ function toMessageContent(parts) {
161
+ return parts.map(part => {
162
+ switch (part.type) {
163
+ case 'text':
164
+ return { type: 'text', text: part.text };
165
+ case 'image':
166
+ return {
167
+ type: 'image',
168
+ image: part.image,
169
+ mimeType: part.mimeType,
170
+ };
171
+ case 'file':
172
+ return {
173
+ type: 'file',
174
+ data: part.data,
175
+ mimeType: part.mimeType,
176
+ };
177
+ case 'pdf':
178
+ // PDFs are treated as files with application/pdf mime type
179
+ return {
180
+ type: 'file',
181
+ data: part.data,
182
+ mimeType: 'application/pdf',
183
+ };
184
+ default:
185
+ return part;
186
+ }
187
+ });
188
+ }
189
+ /**
190
+ * Create a multimodal message with text and images.
191
+ *
192
+ * @example
193
+ * ```typescript
194
+ * const message = createMultimodalMessage(
195
+ * 'What is in this image?',
196
+ * ['https://example.com/image.png']
197
+ * );
198
+ * ```
199
+ */
200
+ function createMultimodalMessage(text, images, role = 'user') {
201
+ const content = [];
202
+ // Add images first
203
+ for (const image of images) {
204
+ content.push(createImagePart(image));
205
+ }
206
+ // Add text
207
+ content.push(createTextPart(text));
208
+ return {
209
+ role,
210
+ content: toMessageContent(content),
211
+ };
212
+ }
213
+ /**
214
+ * Detect image MIME type from file extension.
215
+ */
216
+ function detectImageMimeType(filePath) {
217
+ const ext = path.extname(filePath).toLowerCase();
218
+ const mimeTypes = {
219
+ '.png': 'image/png',
220
+ '.jpg': 'image/jpeg',
221
+ '.jpeg': 'image/jpeg',
222
+ '.gif': 'image/gif',
223
+ '.webp': 'image/webp',
224
+ '.svg': 'image/svg+xml',
225
+ '.bmp': 'image/bmp',
226
+ '.ico': 'image/x-icon',
227
+ };
228
+ return mimeTypes[ext] || 'image/png';
229
+ }
230
+ /**
231
+ * Convert a base64 string to Uint8Array.
232
+ */
233
+ function base64ToUint8Array(base64) {
234
+ // Handle data URLs
235
+ const base64Data = base64.includes(',') ? base64.split(',')[1] : base64;
236
+ const binaryString = atob(base64Data);
237
+ const bytes = new Uint8Array(binaryString.length);
238
+ for (let i = 0; i < binaryString.length; i++) {
239
+ bytes[i] = binaryString.charCodeAt(i);
240
+ }
241
+ return bytes;
242
+ }
243
+ /**
244
+ * Convert Uint8Array to base64 string.
245
+ */
246
+ function uint8ArrayToBase64(bytes) {
247
+ let binary = '';
248
+ for (let i = 0; i < bytes.length; i++) {
249
+ binary += String.fromCharCode(bytes[i]);
250
+ }
251
+ return btoa(binary);
252
+ }
253
+ /**
254
+ * Check if a string is a valid URL.
255
+ */
256
+ function isUrl(str) {
257
+ try {
258
+ new URL(str);
259
+ return true;
260
+ }
261
+ catch {
262
+ return false;
263
+ }
264
+ }
265
+ /**
266
+ * Check if a string is a data URL.
267
+ */
268
+ function isDataUrl(str) {
269
+ return str.startsWith('data:');
270
+ }