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,275 @@
1
+ "use strict";
2
+ /**
3
+ * Google Provider - Implementation for Google Gemini API
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GoogleProvider = void 0;
7
+ const base_1 = require("./base");
8
+ class GoogleProvider extends base_1.BaseProvider {
9
+ constructor(modelId, config = {}) {
10
+ super(modelId, config);
11
+ this.providerId = 'google';
12
+ this.apiKey = config.apiKey || process.env.GOOGLE_API_KEY || '';
13
+ this.baseUrl = config.baseUrl || 'https://generativelanguage.googleapis.com/v1beta';
14
+ if (!this.apiKey) {
15
+ throw new Error('GOOGLE_API_KEY is required');
16
+ }
17
+ }
18
+ async generateText(options) {
19
+ return this.withRetry(async () => {
20
+ const { systemInstruction, contents } = this.formatRequest(options.messages);
21
+ const response = await fetch(`${this.baseUrl}/models/${this.modelId}:generateContent?key=${this.apiKey}`, {
22
+ method: 'POST',
23
+ headers: { 'Content-Type': 'application/json' },
24
+ body: JSON.stringify({
25
+ systemInstruction: systemInstruction ? { parts: [{ text: systemInstruction }] } : undefined,
26
+ contents,
27
+ generationConfig: {
28
+ temperature: options.temperature ?? 0.7,
29
+ maxOutputTokens: options.maxTokens,
30
+ topP: options.topP,
31
+ stopSequences: options.stop,
32
+ },
33
+ tools: options.tools ? this.formatTools(options.tools) : undefined,
34
+ }),
35
+ });
36
+ if (!response.ok) {
37
+ const error = await response.json().catch(() => ({}));
38
+ throw Object.assign(new Error(error.error?.message || `Google API error: ${response.status}`), {
39
+ status: response.status,
40
+ });
41
+ }
42
+ const data = await response.json();
43
+ const candidate = data.candidates?.[0];
44
+ let text = '';
45
+ const toolCalls = [];
46
+ for (const part of candidate?.content?.parts || []) {
47
+ if (part.text) {
48
+ text += part.text;
49
+ }
50
+ else if (part.functionCall) {
51
+ toolCalls.push({
52
+ id: `call_${Math.random().toString(36).substr(2, 9)}`,
53
+ type: 'function',
54
+ function: {
55
+ name: part.functionCall.name,
56
+ arguments: JSON.stringify(part.functionCall.args || {}),
57
+ },
58
+ });
59
+ }
60
+ }
61
+ return {
62
+ text,
63
+ toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
64
+ usage: {
65
+ promptTokens: data.usageMetadata?.promptTokenCount || 0,
66
+ completionTokens: data.usageMetadata?.candidatesTokenCount || 0,
67
+ totalTokens: data.usageMetadata?.totalTokenCount || 0,
68
+ },
69
+ finishReason: this.mapFinishReason(candidate?.finishReason),
70
+ raw: data,
71
+ };
72
+ });
73
+ }
74
+ async streamText(options) {
75
+ const self = this;
76
+ const { systemInstruction, contents } = this.formatRequest(options.messages);
77
+ return {
78
+ async *[Symbol.asyncIterator]() {
79
+ const response = await fetch(`${self.baseUrl}/models/${self.modelId}:streamGenerateContent?key=${self.apiKey}&alt=sse`, {
80
+ method: 'POST',
81
+ headers: { 'Content-Type': 'application/json' },
82
+ body: JSON.stringify({
83
+ systemInstruction: systemInstruction ? { parts: [{ text: systemInstruction }] } : undefined,
84
+ contents,
85
+ generationConfig: {
86
+ temperature: options.temperature ?? 0.7,
87
+ maxOutputTokens: options.maxTokens,
88
+ },
89
+ tools: options.tools ? self.formatTools(options.tools) : undefined,
90
+ }),
91
+ });
92
+ if (!response.ok) {
93
+ const error = await response.json().catch(() => ({}));
94
+ throw new Error(error.error?.message || `Google API error: ${response.status}`);
95
+ }
96
+ const reader = response.body?.getReader();
97
+ if (!reader)
98
+ throw new Error('No response body');
99
+ const decoder = new TextDecoder();
100
+ let buffer = '';
101
+ const toolCalls = [];
102
+ while (true) {
103
+ const { done, value } = await reader.read();
104
+ if (done)
105
+ break;
106
+ buffer += decoder.decode(value, { stream: true });
107
+ const lines = buffer.split('\n');
108
+ buffer = lines.pop() || '';
109
+ for (const line of lines) {
110
+ if (!line.startsWith('data: '))
111
+ continue;
112
+ const data = line.slice(6);
113
+ if (data === '[DONE]')
114
+ continue;
115
+ try {
116
+ const event = JSON.parse(data);
117
+ const candidate = event.candidates?.[0];
118
+ for (const part of candidate?.content?.parts || []) {
119
+ if (part.text) {
120
+ if (options.onToken)
121
+ options.onToken(part.text);
122
+ yield { text: part.text };
123
+ }
124
+ else if (part.functionCall) {
125
+ toolCalls.push({
126
+ id: `call_${Math.random().toString(36).substr(2, 9)}`,
127
+ type: 'function',
128
+ function: {
129
+ name: part.functionCall.name,
130
+ arguments: JSON.stringify(part.functionCall.args || {}),
131
+ },
132
+ });
133
+ }
134
+ }
135
+ if (candidate?.finishReason) {
136
+ yield {
137
+ finishReason: self.mapFinishReason(candidate.finishReason),
138
+ toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
139
+ usage: event.usageMetadata ? {
140
+ promptTokens: event.usageMetadata.promptTokenCount || 0,
141
+ completionTokens: event.usageMetadata.candidatesTokenCount || 0,
142
+ totalTokens: event.usageMetadata.totalTokenCount || 0,
143
+ } : undefined,
144
+ };
145
+ }
146
+ }
147
+ catch (e) {
148
+ // Skip malformed JSON
149
+ }
150
+ }
151
+ }
152
+ },
153
+ };
154
+ }
155
+ async generateObject(options) {
156
+ const { systemInstruction, contents } = this.formatRequest(options.messages);
157
+ return this.withRetry(async () => {
158
+ const response = await fetch(`${this.baseUrl}/models/${this.modelId}:generateContent?key=${this.apiKey}`, {
159
+ method: 'POST',
160
+ headers: { 'Content-Type': 'application/json' },
161
+ body: JSON.stringify({
162
+ systemInstruction: systemInstruction
163
+ ? { parts: [{ text: `${systemInstruction}\n\nRespond with valid JSON matching this schema:\n${JSON.stringify(options.schema, null, 2)}` }] }
164
+ : { parts: [{ text: `Respond with valid JSON matching this schema:\n${JSON.stringify(options.schema, null, 2)}` }] },
165
+ contents,
166
+ generationConfig: {
167
+ temperature: options.temperature ?? 0.7,
168
+ maxOutputTokens: options.maxTokens,
169
+ responseMimeType: 'application/json',
170
+ },
171
+ }),
172
+ });
173
+ if (!response.ok) {
174
+ const error = await response.json().catch(() => ({}));
175
+ throw new Error(error.error?.message || `Google API error: ${response.status}`);
176
+ }
177
+ const data = await response.json();
178
+ const candidate = data.candidates?.[0];
179
+ let text = '';
180
+ for (const part of candidate?.content?.parts || []) {
181
+ if (part.text)
182
+ text += part.text;
183
+ }
184
+ let parsed;
185
+ try {
186
+ parsed = JSON.parse(text);
187
+ }
188
+ catch (e) {
189
+ // Try to extract JSON from text
190
+ const jsonMatch = text.match(/\{[\s\S]*\}/);
191
+ if (!jsonMatch)
192
+ throw new Error(`No JSON found: ${text}`);
193
+ parsed = JSON.parse(jsonMatch[0]);
194
+ }
195
+ return {
196
+ object: parsed,
197
+ usage: {
198
+ promptTokens: data.usageMetadata?.promptTokenCount || 0,
199
+ completionTokens: data.usageMetadata?.candidatesTokenCount || 0,
200
+ totalTokens: data.usageMetadata?.totalTokenCount || 0,
201
+ },
202
+ raw: data,
203
+ };
204
+ });
205
+ }
206
+ formatRequest(messages) {
207
+ const systemMessages = messages.filter(m => m.role === 'system');
208
+ const otherMessages = messages.filter(m => m.role !== 'system');
209
+ const systemInstruction = systemMessages.length > 0
210
+ ? systemMessages.map(m => m.content).join('\n')
211
+ : null;
212
+ return {
213
+ systemInstruction,
214
+ contents: this.formatMessages(otherMessages),
215
+ };
216
+ }
217
+ formatMessages(messages) {
218
+ const result = [];
219
+ for (const msg of messages) {
220
+ if (msg.role === 'system')
221
+ continue;
222
+ const role = msg.role === 'assistant' ? 'model' : 'user';
223
+ if (msg.role === 'tool') {
224
+ result.push({
225
+ role: 'user',
226
+ parts: [{
227
+ functionResponse: {
228
+ name: msg.name || 'function',
229
+ response: { result: msg.content },
230
+ },
231
+ }],
232
+ });
233
+ }
234
+ else if (msg.role === 'assistant' && msg.tool_calls) {
235
+ const parts = [];
236
+ if (msg.content)
237
+ parts.push({ text: msg.content });
238
+ for (const tc of msg.tool_calls) {
239
+ parts.push({
240
+ functionCall: {
241
+ name: tc.function.name,
242
+ args: JSON.parse(tc.function.arguments),
243
+ },
244
+ });
245
+ }
246
+ result.push({ role: 'model', parts });
247
+ }
248
+ else {
249
+ result.push({
250
+ role,
251
+ parts: [{ text: msg.content || '' }],
252
+ });
253
+ }
254
+ }
255
+ return result;
256
+ }
257
+ formatTools(tools) {
258
+ return [{
259
+ functionDeclarations: tools.map(tool => ({
260
+ name: tool.name,
261
+ description: tool.description || `Function ${tool.name}`,
262
+ parameters: tool.parameters || { type: 'object', properties: {} },
263
+ })),
264
+ }];
265
+ }
266
+ mapFinishReason(reason) {
267
+ switch (reason) {
268
+ case 'STOP': return 'stop';
269
+ case 'MAX_TOKENS': return 'length';
270
+ case 'SAFETY': return 'content_filter';
271
+ default: return 'stop';
272
+ }
273
+ }
274
+ }
275
+ exports.GoogleProvider = GoogleProvider;
@@ -0,0 +1,107 @@
1
+ /**
2
+ * LLM Providers - Factory and exports for multi-provider support
3
+ *
4
+ * This module provides an extensible provider registry system that allows
5
+ * users to register custom providers (e.g., Cloudflare, Ollama) alongside
6
+ * the built-in providers (OpenAI, Anthropic, Google).
7
+ *
8
+ * @example Register a custom provider
9
+ * ```typescript
10
+ * import { registerProvider, Agent } from 'praisonai';
11
+ * import { CloudflareProvider } from './my-cloudflare-provider';
12
+ *
13
+ * registerProvider('cloudflare', CloudflareProvider);
14
+ * const agent = new Agent({ llm: 'cloudflare/workers-ai' });
15
+ * ```
16
+ */
17
+ export * from './types';
18
+ export * from './base';
19
+ export { OpenAIProvider } from './openai';
20
+ export { AnthropicProvider } from './anthropic';
21
+ export { GoogleProvider } from './google';
22
+ export { ProviderRegistry, ProviderConstructor, ProviderLoader, RegisterOptions, IProviderRegistry, getDefaultRegistry, createProviderRegistry, registerProvider, unregisterProvider, hasProvider, listProviders, registerBuiltinProviders, } from './registry';
23
+ import type { LLMProvider, ProviderConfig } from './types';
24
+ import type { ProviderRegistry } from './registry';
25
+ /**
26
+ * Parse model string into provider and model ID
27
+ * Supports formats:
28
+ * - "provider/model" (e.g., "openai/gpt-4o")
29
+ * - "model" (defaults to OpenAI, e.g., "gpt-4o-mini")
30
+ */
31
+ export declare function parseModelString(model: string): {
32
+ providerId: string;
33
+ modelId: string;
34
+ };
35
+ /**
36
+ * Input types for createProvider
37
+ */
38
+ export type ProviderInput = string | LLMProvider | {
39
+ name: string;
40
+ modelId?: string;
41
+ config?: ProviderConfig;
42
+ };
43
+ /**
44
+ * Options for createProvider
45
+ */
46
+ export interface CreateProviderOptions {
47
+ /** Override the default registry */
48
+ registry?: ProviderRegistry;
49
+ /** Provider configuration */
50
+ config?: ProviderConfig;
51
+ /** Model ID (used when input is a constructor or spec without modelId) */
52
+ modelId?: string;
53
+ }
54
+ /**
55
+ * Create a provider instance from various input types
56
+ *
57
+ * @example String input (backward compatible)
58
+ * ```typescript
59
+ * const provider = createProvider('openai/gpt-4o');
60
+ * const provider = createProvider('anthropic/claude-3-5-sonnet-latest');
61
+ * const provider = createProvider('google/gemini-2.0-flash');
62
+ * const provider = createProvider('gpt-4o-mini'); // Defaults to OpenAI
63
+ * ```
64
+ *
65
+ * @example Custom provider (after registration)
66
+ * ```typescript
67
+ * registerProvider('cloudflare', CloudflareProvider);
68
+ * const provider = createProvider('cloudflare/workers-ai');
69
+ * ```
70
+ *
71
+ * @example Provider instance (pass-through)
72
+ * ```typescript
73
+ * const myProvider = new CustomProvider('model');
74
+ * const provider = createProvider(myProvider); // Returns same instance
75
+ * ```
76
+ *
77
+ * @example Spec object
78
+ * ```typescript
79
+ * const provider = createProvider({ name: 'openai', modelId: 'gpt-4o', config: { timeout: 5000 } });
80
+ * ```
81
+ */
82
+ export declare function createProvider(input: ProviderInput, options?: CreateProviderOptions | ProviderConfig): LLMProvider;
83
+ /**
84
+ * Get the default provider (OpenAI with gpt-4o-mini)
85
+ */
86
+ export declare function getDefaultProvider(config?: ProviderConfig): LLMProvider;
87
+ /**
88
+ * Check if a provider is available (has required API key)
89
+ */
90
+ export declare function isProviderAvailable(providerId: string): boolean;
91
+ /**
92
+ * Get list of available providers (registered and with API keys)
93
+ */
94
+ export declare function getAvailableProviders(): string[];
95
+ /**
96
+ * AI SDK Backend - Multi-provider LLM support via Vercel's AI SDK
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * import { createAISDKBackend } from 'praisonai';
101
+ *
102
+ * const backend = createAISDKBackend('anthropic/claude-3-5-sonnet');
103
+ * const result = await backend.generateText({ messages: [...] });
104
+ * ```
105
+ */
106
+ export { AISDKBackend, createAISDKBackend, isProviderSupported as isAISDKProviderSupported, listSupportedProviders as listAISDKProviders, registerCustomProvider as registerAISDKCustomProvider, validateProviderApiKey as validateAISDKProviderApiKey, getMissingApiKeyMessage as getAISDKMissingApiKeyMessage, isAISDKAvailable, getAISDKVersion, AISDKError, SAFE_DEFAULTS as AISDK_SAFE_DEFAULTS, AISDK_PROVIDERS, PROVIDER_ALIASES as AISDK_PROVIDER_ALIASES, createAttributionMiddleware, createStandardMiddleware, redactSensitiveData, } from './ai-sdk';
107
+ export type { AISDKBackendConfig, AISDKProviderOptions, AttributionContext, AISDKTelemetrySettings, AISDKErrorCode, PraisonStreamChunk, AISDKToolDefinition, AISDKToolCall, AISDKToolResult, AISDKMiddleware, } from './ai-sdk';
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ /**
3
+ * LLM Providers - Factory and exports for multi-provider support
4
+ *
5
+ * This module provides an extensible provider registry system that allows
6
+ * users to register custom providers (e.g., Cloudflare, Ollama) alongside
7
+ * the built-in providers (OpenAI, Anthropic, Google).
8
+ *
9
+ * @example Register a custom provider
10
+ * ```typescript
11
+ * import { registerProvider, Agent } from 'praisonai';
12
+ * import { CloudflareProvider } from './my-cloudflare-provider';
13
+ *
14
+ * registerProvider('cloudflare', CloudflareProvider);
15
+ * const agent = new Agent({ llm: 'cloudflare/workers-ai' });
16
+ * ```
17
+ */
18
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ var desc = Object.getOwnPropertyDescriptor(m, k);
21
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
22
+ desc = { enumerable: true, get: function() { return m[k]; } };
23
+ }
24
+ Object.defineProperty(o, k2, desc);
25
+ }) : (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ o[k2] = m[k];
28
+ }));
29
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
30
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.redactSensitiveData = exports.createStandardMiddleware = exports.createAttributionMiddleware = exports.AISDK_PROVIDER_ALIASES = exports.AISDK_PROVIDERS = exports.AISDK_SAFE_DEFAULTS = exports.AISDKError = exports.getAISDKVersion = exports.isAISDKAvailable = exports.getAISDKMissingApiKeyMessage = exports.validateAISDKProviderApiKey = exports.registerAISDKCustomProvider = exports.listAISDKProviders = exports.isAISDKProviderSupported = exports.createAISDKBackend = exports.AISDKBackend = exports.registerBuiltinProviders = exports.listProviders = exports.hasProvider = exports.unregisterProvider = exports.registerProvider = exports.createProviderRegistry = exports.getDefaultRegistry = exports.ProviderRegistry = exports.GoogleProvider = exports.AnthropicProvider = exports.OpenAIProvider = void 0;
34
+ exports.parseModelString = parseModelString;
35
+ exports.createProvider = createProvider;
36
+ exports.getDefaultProvider = getDefaultProvider;
37
+ exports.isProviderAvailable = isProviderAvailable;
38
+ exports.getAvailableProviders = getAvailableProviders;
39
+ __exportStar(require("./types"), exports);
40
+ __exportStar(require("./base"), exports);
41
+ var openai_1 = require("./openai");
42
+ Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return openai_1.OpenAIProvider; } });
43
+ var anthropic_1 = require("./anthropic");
44
+ Object.defineProperty(exports, "AnthropicProvider", { enumerable: true, get: function () { return anthropic_1.AnthropicProvider; } });
45
+ var google_1 = require("./google");
46
+ Object.defineProperty(exports, "GoogleProvider", { enumerable: true, get: function () { return google_1.GoogleProvider; } });
47
+ // Export registry types and functions
48
+ var registry_1 = require("./registry");
49
+ Object.defineProperty(exports, "ProviderRegistry", { enumerable: true, get: function () { return registry_1.ProviderRegistry; } });
50
+ Object.defineProperty(exports, "getDefaultRegistry", { enumerable: true, get: function () { return registry_1.getDefaultRegistry; } });
51
+ Object.defineProperty(exports, "createProviderRegistry", { enumerable: true, get: function () { return registry_1.createProviderRegistry; } });
52
+ Object.defineProperty(exports, "registerProvider", { enumerable: true, get: function () { return registry_1.registerProvider; } });
53
+ Object.defineProperty(exports, "unregisterProvider", { enumerable: true, get: function () { return registry_1.unregisterProvider; } });
54
+ Object.defineProperty(exports, "hasProvider", { enumerable: true, get: function () { return registry_1.hasProvider; } });
55
+ Object.defineProperty(exports, "listProviders", { enumerable: true, get: function () { return registry_1.listProviders; } });
56
+ Object.defineProperty(exports, "registerBuiltinProviders", { enumerable: true, get: function () { return registry_1.registerBuiltinProviders; } });
57
+ const registry_2 = require("./registry");
58
+ /**
59
+ * Parse model string into provider and model ID
60
+ * Supports formats:
61
+ * - "provider/model" (e.g., "openai/gpt-4o")
62
+ * - "model" (defaults to OpenAI, e.g., "gpt-4o-mini")
63
+ */
64
+ function parseModelString(model) {
65
+ if (model.includes('/')) {
66
+ const [providerId, ...rest] = model.split('/');
67
+ return { providerId: providerId.toLowerCase(), modelId: rest.join('/') };
68
+ }
69
+ // Default to OpenAI for common model prefixes
70
+ if (model.startsWith('gpt-') || model.startsWith('o1') || model.startsWith('o3')) {
71
+ return { providerId: 'openai', modelId: model };
72
+ }
73
+ if (model.startsWith('claude-')) {
74
+ return { providerId: 'anthropic', modelId: model };
75
+ }
76
+ if (model.startsWith('gemini-')) {
77
+ return { providerId: 'google', modelId: model };
78
+ }
79
+ // Default to OpenAI
80
+ return { providerId: 'openai', modelId: model };
81
+ }
82
+ /**
83
+ * Create a provider instance from various input types
84
+ *
85
+ * @example String input (backward compatible)
86
+ * ```typescript
87
+ * const provider = createProvider('openai/gpt-4o');
88
+ * const provider = createProvider('anthropic/claude-3-5-sonnet-latest');
89
+ * const provider = createProvider('google/gemini-2.0-flash');
90
+ * const provider = createProvider('gpt-4o-mini'); // Defaults to OpenAI
91
+ * ```
92
+ *
93
+ * @example Custom provider (after registration)
94
+ * ```typescript
95
+ * registerProvider('cloudflare', CloudflareProvider);
96
+ * const provider = createProvider('cloudflare/workers-ai');
97
+ * ```
98
+ *
99
+ * @example Provider instance (pass-through)
100
+ * ```typescript
101
+ * const myProvider = new CustomProvider('model');
102
+ * const provider = createProvider(myProvider); // Returns same instance
103
+ * ```
104
+ *
105
+ * @example Spec object
106
+ * ```typescript
107
+ * const provider = createProvider({ name: 'openai', modelId: 'gpt-4o', config: { timeout: 5000 } });
108
+ * ```
109
+ */
110
+ function createProvider(input, options) {
111
+ // Handle legacy signature: createProvider(model, config)
112
+ const opts = options && 'registry' in options
113
+ ? options
114
+ : { config: options };
115
+ const registry = opts.registry || (0, registry_2.getDefaultRegistry)();
116
+ // Case 1: Already a provider instance - pass through
117
+ if (isProviderInstance(input)) {
118
+ return input;
119
+ }
120
+ // Case 2: Spec object
121
+ if (typeof input === 'object' && 'name' in input) {
122
+ const { name, modelId, config } = input;
123
+ return registry.resolve(name, modelId || 'default', config || opts.config);
124
+ }
125
+ // Case 3: String - parse and resolve
126
+ if (typeof input === 'string') {
127
+ const { providerId, modelId } = parseModelString(input);
128
+ return registry.resolve(providerId, modelId, opts.config);
129
+ }
130
+ throw new Error(`Invalid provider input. Expected string, provider instance, or spec object. ` +
131
+ `Got: ${typeof input}`);
132
+ }
133
+ /**
134
+ * Type guard to check if value is a provider instance
135
+ */
136
+ function isProviderInstance(value) {
137
+ return (typeof value === 'object' &&
138
+ value !== null &&
139
+ 'providerId' in value &&
140
+ 'modelId' in value &&
141
+ 'generateText' in value &&
142
+ typeof value.generateText === 'function');
143
+ }
144
+ /**
145
+ * Get the default provider (OpenAI with gpt-4o-mini)
146
+ */
147
+ function getDefaultProvider(config) {
148
+ return createProvider('openai/gpt-4o-mini', config);
149
+ }
150
+ /**
151
+ * Check if a provider is available (has required API key)
152
+ */
153
+ function isProviderAvailable(providerId) {
154
+ const normalizedId = providerId.toLowerCase();
155
+ // Check if provider is registered
156
+ if (!(0, registry_2.getDefaultRegistry)().has(normalizedId)) {
157
+ return false;
158
+ }
159
+ // Check for API keys based on known providers
160
+ switch (normalizedId) {
161
+ case 'openai':
162
+ case 'oai':
163
+ return !!process.env.OPENAI_API_KEY;
164
+ case 'anthropic':
165
+ case 'claude':
166
+ return !!process.env.ANTHROPIC_API_KEY;
167
+ case 'google':
168
+ case 'gemini':
169
+ return !!process.env.GOOGLE_API_KEY;
170
+ default:
171
+ // For custom providers, assume available if registered
172
+ // Users can override this behavior
173
+ return true;
174
+ }
175
+ }
176
+ /**
177
+ * Get list of available providers (registered and with API keys)
178
+ */
179
+ function getAvailableProviders() {
180
+ return (0, registry_2.getDefaultRegistry)().list().filter(isProviderAvailable);
181
+ }
182
+ // ============================================================================
183
+ // AI SDK Integration Exports
184
+ // ============================================================================
185
+ /**
186
+ * AI SDK Backend - Multi-provider LLM support via Vercel's AI SDK
187
+ *
188
+ * @example
189
+ * ```typescript
190
+ * import { createAISDKBackend } from 'praisonai';
191
+ *
192
+ * const backend = createAISDKBackend('anthropic/claude-3-5-sonnet');
193
+ * const result = await backend.generateText({ messages: [...] });
194
+ * ```
195
+ */
196
+ var ai_sdk_1 = require("./ai-sdk");
197
+ // Backend
198
+ Object.defineProperty(exports, "AISDKBackend", { enumerable: true, get: function () { return ai_sdk_1.AISDKBackend; } });
199
+ Object.defineProperty(exports, "createAISDKBackend", { enumerable: true, get: function () { return ai_sdk_1.createAISDKBackend; } });
200
+ // Provider utilities
201
+ Object.defineProperty(exports, "isAISDKProviderSupported", { enumerable: true, get: function () { return ai_sdk_1.isProviderSupported; } });
202
+ Object.defineProperty(exports, "listAISDKProviders", { enumerable: true, get: function () { return ai_sdk_1.listSupportedProviders; } });
203
+ Object.defineProperty(exports, "registerAISDKCustomProvider", { enumerable: true, get: function () { return ai_sdk_1.registerCustomProvider; } });
204
+ Object.defineProperty(exports, "validateAISDKProviderApiKey", { enumerable: true, get: function () { return ai_sdk_1.validateProviderApiKey; } });
205
+ Object.defineProperty(exports, "getAISDKMissingApiKeyMessage", { enumerable: true, get: function () { return ai_sdk_1.getMissingApiKeyMessage; } });
206
+ Object.defineProperty(exports, "isAISDKAvailable", { enumerable: true, get: function () { return ai_sdk_1.isAISDKAvailable; } });
207
+ Object.defineProperty(exports, "getAISDKVersion", { enumerable: true, get: function () { return ai_sdk_1.getAISDKVersion; } });
208
+ // Types
209
+ Object.defineProperty(exports, "AISDKError", { enumerable: true, get: function () { return ai_sdk_1.AISDKError; } });
210
+ Object.defineProperty(exports, "AISDK_SAFE_DEFAULTS", { enumerable: true, get: function () { return ai_sdk_1.SAFE_DEFAULTS; } });
211
+ Object.defineProperty(exports, "AISDK_PROVIDERS", { enumerable: true, get: function () { return ai_sdk_1.AISDK_PROVIDERS; } });
212
+ Object.defineProperty(exports, "AISDK_PROVIDER_ALIASES", { enumerable: true, get: function () { return ai_sdk_1.PROVIDER_ALIASES; } });
213
+ // Middleware
214
+ Object.defineProperty(exports, "createAttributionMiddleware", { enumerable: true, get: function () { return ai_sdk_1.createAttributionMiddleware; } });
215
+ Object.defineProperty(exports, "createStandardMiddleware", { enumerable: true, get: function () { return ai_sdk_1.createStandardMiddleware; } });
216
+ Object.defineProperty(exports, "redactSensitiveData", { enumerable: true, get: function () { return ai_sdk_1.redactSensitiveData; } });
@@ -0,0 +1,18 @@
1
+ /**
2
+ * OpenAI Provider - Implementation for OpenAI API
3
+ */
4
+ import type { ChatCompletionMessageParam, ChatCompletionTool } from 'openai/resources/chat/completions';
5
+ import { BaseProvider } from './base';
6
+ import type { ProviderConfig, GenerateTextOptions, GenerateTextResult, StreamTextOptions, StreamChunk, GenerateObjectOptions, GenerateObjectResult, Message, ToolDefinition } from './types';
7
+ export declare class OpenAIProvider extends BaseProvider {
8
+ readonly providerId = "openai";
9
+ private client;
10
+ constructor(modelId: string, config?: ProviderConfig);
11
+ generateText(options: GenerateTextOptions): Promise<GenerateTextResult>;
12
+ streamText(options: StreamTextOptions): Promise<AsyncIterable<StreamChunk>>;
13
+ generateObject<T = any>(options: GenerateObjectOptions<T>): Promise<GenerateObjectResult<T>>;
14
+ protected formatMessages(messages: Message[]): ChatCompletionMessageParam[];
15
+ protected formatTools(tools: ToolDefinition[]): ChatCompletionTool[];
16
+ private mapFinishReason;
17
+ private normalizeSchema;
18
+ }