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,696 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Agents = exports.PraisonAIAgents = exports.Agent = void 0;
37
+ const openai_1 = require("../llm/openai");
38
+ const logger_1 = require("../utils/logger");
39
+ const crypto_1 = require("crypto");
40
+ class Agent {
41
+ constructor(config) {
42
+ this.toolFunctions = {};
43
+ this.messages = [];
44
+ this.dbInitialized = false;
45
+ this.responseCache = new Map();
46
+ // AI SDK backend support
47
+ this._backend = null;
48
+ this._backendPromise = null;
49
+ this._backendSource = 'legacy';
50
+ this._useAISDKBackend = false;
51
+ // Build instructions from either simple or advanced mode
52
+ if (config.instructions) {
53
+ this.instructions = config.instructions;
54
+ }
55
+ else if (config.role || config.goal || config.backstory) {
56
+ // Advanced mode: construct instructions from role/goal/backstory
57
+ const parts = [];
58
+ if (config.role)
59
+ parts.push(`You are a ${config.role}.`);
60
+ if (config.goal)
61
+ parts.push(`Your goal is: ${config.goal}`);
62
+ if (config.backstory)
63
+ parts.push(`Background: ${config.backstory}`);
64
+ this.instructions = parts.join('\n');
65
+ }
66
+ else {
67
+ this.instructions = 'You are a helpful AI assistant.';
68
+ }
69
+ this.name = config.name || `Agent_${Math.random().toString(36).substr(2, 9)}`;
70
+ this.verbose = config.verbose ?? process.env.PRAISON_VERBOSE !== 'false';
71
+ this.pretty = config.pretty ?? process.env.PRAISON_PRETTY === 'true';
72
+ this.llm = config.llm || process.env.OPENAI_MODEL_NAME || process.env.PRAISONAI_MODEL || 'gpt-4o-mini';
73
+ this.markdown = config.markdown ?? true;
74
+ this.stream = config.stream ?? true;
75
+ this.tools = config.tools;
76
+ this.dbAdapter = config.db;
77
+ this.sessionId = config.sessionId || this.generateSessionId();
78
+ this.runId = config.runId || (0, crypto_1.randomUUID)();
79
+ this.historyLimit = config.historyLimit ?? 100;
80
+ this.autoRestore = config.autoRestore ?? true;
81
+ this.autoPersist = config.autoPersist ?? true;
82
+ this.cache = config.cache ?? false;
83
+ this.cacheTTL = config.cacheTTL ?? 3600;
84
+ this.telemetryEnabled = config.telemetry ?? false;
85
+ // Parse model string to extract provider and model ID
86
+ // Format: "provider/model" or just "model"
87
+ const providerId = this.llm.includes('/') ? this.llm.split('/')[0] : 'openai';
88
+ const modelId = this.llm.includes('/') ? this.llm.split('/').slice(1).join('/') : this.llm;
89
+ // For OpenAI, use OpenAIService directly for backward compatibility
90
+ // For other providers, we'll use the AI SDK backend via getBackend()
91
+ this._useAISDKBackend = providerId !== 'openai';
92
+ this.llmService = new openai_1.OpenAIService(modelId);
93
+ // Configure logging
94
+ logger_1.Logger.setVerbose(this.verbose);
95
+ logger_1.Logger.setPretty(this.pretty);
96
+ // Process tools array - handle both tool definitions and functions
97
+ if (config.tools && Array.isArray(config.tools)) {
98
+ // Convert tools array to proper format if it contains functions
99
+ const processedTools = [];
100
+ for (let i = 0; i < config.tools.length; i++) {
101
+ const tool = config.tools[i];
102
+ if (typeof tool === 'function') {
103
+ // If it's a function, extract its name and register it
104
+ const funcName = tool.name || `function_${i}`;
105
+ // Skip functions with empty names
106
+ if (funcName && funcName.trim() !== '') {
107
+ this.registerToolFunction(funcName, tool);
108
+ // Auto-generate tool definition
109
+ this.addAutoGeneratedToolDefinition(funcName, tool);
110
+ }
111
+ else {
112
+ // Generate a random name for functions without names
113
+ const randomName = `function_${Math.random().toString(36).substring(2, 9)}`;
114
+ this.registerToolFunction(randomName, tool);
115
+ // Auto-generate tool definition
116
+ this.addAutoGeneratedToolDefinition(randomName, tool);
117
+ }
118
+ }
119
+ else {
120
+ // If it's already a tool definition, add it as is
121
+ processedTools.push(tool);
122
+ }
123
+ }
124
+ // Add any pre-defined tool definitions
125
+ if (processedTools.length > 0) {
126
+ this.tools = this.tools || [];
127
+ this.tools.push(...processedTools);
128
+ }
129
+ }
130
+ // Register directly provided tool functions if any
131
+ if (config.toolFunctions) {
132
+ for (const [name, func] of Object.entries(config.toolFunctions)) {
133
+ this.registerToolFunction(name, func);
134
+ // Auto-generate tool definition if not already provided
135
+ if (!this.hasToolDefinition(name)) {
136
+ this.addAutoGeneratedToolDefinition(name, func);
137
+ }
138
+ }
139
+ }
140
+ }
141
+ /**
142
+ * Generate a unique session ID based on current hour, agent name, and random suffix
143
+ */
144
+ generateSessionId() {
145
+ const now = new Date();
146
+ const hourStr = now.toISOString().slice(0, 13).replace(/[-T:]/g, '');
147
+ const hash = this.name ? this.name.slice(0, 6) : 'agent';
148
+ const randomSuffix = (0, crypto_1.randomUUID)().slice(0, 8);
149
+ return `${hourStr}-${hash}-${randomSuffix}`;
150
+ }
151
+ /**
152
+ * Initialize DB session - restore history on first chat (lazy)
153
+ */
154
+ async initDbSession() {
155
+ if (this.dbInitialized || !this.dbAdapter || !this.autoRestore)
156
+ return;
157
+ try {
158
+ // Restore previous messages from DB
159
+ const history = await this.dbAdapter.getMessages(this.sessionId, this.historyLimit);
160
+ if (history.length > 0) {
161
+ this.messages = history.map(m => ({
162
+ role: m.role,
163
+ content: m.content
164
+ }));
165
+ logger_1.Logger.debug(`Restored ${history.length} messages from session ${this.sessionId}`);
166
+ }
167
+ }
168
+ catch (error) {
169
+ logger_1.Logger.warn('Failed to initialize DB session:', error);
170
+ }
171
+ this.dbInitialized = true;
172
+ }
173
+ /**
174
+ * Get cached response if available and not expired
175
+ */
176
+ getCachedResponse(prompt) {
177
+ if (!this.cache)
178
+ return null;
179
+ const cacheKey = `${this.sessionId}:${prompt}`;
180
+ const cached = this.responseCache.get(cacheKey);
181
+ if (cached) {
182
+ const age = (Date.now() - cached.timestamp) / 1000;
183
+ if (age < this.cacheTTL) {
184
+ logger_1.Logger.debug('Cache hit for prompt');
185
+ return cached.response;
186
+ }
187
+ // Expired, remove it
188
+ this.responseCache.delete(cacheKey);
189
+ }
190
+ return null;
191
+ }
192
+ /**
193
+ * Cache a response
194
+ */
195
+ cacheResponse(prompt, response) {
196
+ if (!this.cache)
197
+ return;
198
+ const cacheKey = `${this.sessionId}:${prompt}`;
199
+ this.responseCache.set(cacheKey, { response, timestamp: Date.now() });
200
+ }
201
+ createSystemPrompt() {
202
+ let prompt = this.instructions;
203
+ if (this.markdown) {
204
+ prompt += '\nPlease format your response in markdown.';
205
+ }
206
+ return prompt;
207
+ }
208
+ /**
209
+ * Register a tool function that can be called by the model
210
+ * @param name Function name
211
+ * @param fn Function implementation
212
+ */
213
+ registerToolFunction(name, fn) {
214
+ this.toolFunctions[name] = fn;
215
+ logger_1.Logger.debug(`Registered tool function: ${name}`);
216
+ }
217
+ /**
218
+ * Check if a tool definition exists for the given function name
219
+ * @param name Function name
220
+ * @returns True if a tool definition exists
221
+ */
222
+ hasToolDefinition(name) {
223
+ if (!this.tools)
224
+ return false;
225
+ return this.tools.some(tool => {
226
+ if (tool.type === 'function' && tool.function) {
227
+ return tool.function.name === name;
228
+ }
229
+ return false;
230
+ });
231
+ }
232
+ /**
233
+ * Auto-generate a tool definition based on the function
234
+ * @param name Function name
235
+ * @param func Function implementation
236
+ */
237
+ addAutoGeneratedToolDefinition(name, func) {
238
+ if (!this.tools) {
239
+ this.tools = [];
240
+ }
241
+ // Ensure we have a valid function name
242
+ const functionName = name || func.name || `function_${Math.random().toString(36).substring(2, 9)}`;
243
+ // Extract parameter names from function
244
+ const funcStr = func.toString();
245
+ const paramMatch = funcStr.match(/\(([^)]*)\)/);
246
+ const params = paramMatch ? paramMatch[1].split(',').map(p => p.trim()).filter(p => p) : [];
247
+ // Create a basic tool definition
248
+ const toolDef = {
249
+ type: "function",
250
+ function: {
251
+ name: functionName,
252
+ description: `Auto-generated function for ${functionName}`,
253
+ parameters: {
254
+ type: "object",
255
+ properties: {},
256
+ required: []
257
+ }
258
+ }
259
+ };
260
+ // Add parameters to the definition
261
+ if (params.length > 0) {
262
+ const properties = {};
263
+ const required = [];
264
+ params.forEach(param => {
265
+ // Remove type annotations if present
266
+ const paramName = param.split(':')[0].trim();
267
+ if (paramName) {
268
+ properties[paramName] = {
269
+ type: "string",
270
+ description: `Parameter ${paramName} for function ${name}`
271
+ };
272
+ required.push(paramName);
273
+ }
274
+ });
275
+ toolDef.function.parameters.properties = properties;
276
+ toolDef.function.parameters.required = required;
277
+ }
278
+ this.tools.push(toolDef);
279
+ logger_1.Logger.debug(`Auto-generated tool definition for ${functionName}`);
280
+ }
281
+ /**
282
+ * Process tool calls from the model
283
+ * @param toolCalls Tool calls from the model
284
+ * @returns Array of tool results
285
+ */
286
+ async processToolCalls(toolCalls) {
287
+ const results = [];
288
+ for (const toolCall of toolCalls) {
289
+ const { id, function: { name, arguments: argsString } } = toolCall;
290
+ await logger_1.Logger.debug(`Processing tool call: ${name}`, { arguments: argsString });
291
+ try {
292
+ // Parse arguments
293
+ const args = JSON.parse(argsString);
294
+ // Check if function exists
295
+ if (!this.toolFunctions[name]) {
296
+ throw new Error(`Function ${name} not registered`);
297
+ }
298
+ // Call the function
299
+ const result = await this.toolFunctions[name](...Object.values(args));
300
+ // Add result to messages
301
+ results.push({
302
+ role: 'tool',
303
+ tool_call_id: id,
304
+ content: result.toString()
305
+ });
306
+ await logger_1.Logger.debug(`Tool call result for ${name}:`, { result });
307
+ }
308
+ catch (error) {
309
+ await logger_1.Logger.error(`Error executing tool ${name}:`, error);
310
+ results.push({
311
+ role: 'tool',
312
+ tool_call_id: id,
313
+ content: `Error: ${error.message || 'Unknown error'}`
314
+ });
315
+ }
316
+ }
317
+ return results;
318
+ }
319
+ async start(prompt, previousResult) {
320
+ await logger_1.Logger.debug(`Agent ${this.name} starting with prompt: ${prompt}`);
321
+ try {
322
+ // Replace placeholder with previous result if available
323
+ if (previousResult) {
324
+ prompt = prompt.replace('{{previous}}', previousResult);
325
+ }
326
+ // Initialize messages array with system prompt and conversation history
327
+ const messages = [
328
+ { role: 'system', content: this.createSystemPrompt() }
329
+ ];
330
+ // Add conversation history (excluding the current prompt which will be added below)
331
+ for (const msg of this.messages) {
332
+ if (msg.role && msg.content) {
333
+ messages.push({ role: msg.role, content: msg.content });
334
+ }
335
+ }
336
+ // Add current user prompt
337
+ messages.push({ role: 'user', content: prompt });
338
+ let finalResponse = '';
339
+ // Use AI SDK backend for non-OpenAI providers
340
+ if (this._useAISDKBackend) {
341
+ const backend = await this.getBackend();
342
+ if (this.stream && !this.tools) {
343
+ // Streaming with AI SDK backend
344
+ const stream = await backend.streamText({
345
+ messages,
346
+ temperature: 0.7
347
+ });
348
+ let accumulated = '';
349
+ for await (const chunk of stream) {
350
+ if (chunk.text) {
351
+ process.stdout.write(chunk.text);
352
+ accumulated += chunk.text;
353
+ }
354
+ }
355
+ finalResponse = accumulated;
356
+ }
357
+ else {
358
+ // Non-streaming with AI SDK backend
359
+ const result = await backend.generateText({
360
+ messages,
361
+ temperature: 0.7
362
+ });
363
+ finalResponse = result.text;
364
+ }
365
+ }
366
+ else if (this.stream && !this.tools) {
367
+ // Use streaming with full conversation history (OpenAI)
368
+ finalResponse = await this.llmService.streamChat(messages, 0.7, (token) => {
369
+ process.stdout.write(token);
370
+ });
371
+ }
372
+ else if (this.tools) {
373
+ // Use tools (non-streaming for now to simplify implementation)
374
+ let continueConversation = true;
375
+ let iterations = 0;
376
+ const maxIterations = 5; // Prevent infinite loops
377
+ while (continueConversation && iterations < maxIterations) {
378
+ iterations++;
379
+ // Get response from LLM
380
+ const response = await this.llmService.generateChat(messages, 0.7, this.tools);
381
+ // Add assistant response to messages
382
+ messages.push({
383
+ role: 'assistant',
384
+ content: response.content || '',
385
+ tool_calls: response.tool_calls
386
+ });
387
+ // Check if there are tool calls to process
388
+ if (response.tool_calls && response.tool_calls.length > 0) {
389
+ // Process tool calls
390
+ const toolResults = await this.processToolCalls(response.tool_calls);
391
+ // Add tool results to messages
392
+ messages.push(...toolResults);
393
+ // Continue conversation to get final response
394
+ continueConversation = true;
395
+ }
396
+ else {
397
+ // No tool calls, we have our final response
398
+ finalResponse = response.content || '';
399
+ continueConversation = false;
400
+ }
401
+ }
402
+ if (iterations >= maxIterations) {
403
+ await logger_1.Logger.warn(`Reached maximum iterations (${maxIterations}) for tool calls`);
404
+ }
405
+ }
406
+ else {
407
+ // Use regular text generation without streaming
408
+ const response = await this.llmService.generateText(prompt, this.createSystemPrompt());
409
+ finalResponse = response;
410
+ }
411
+ return finalResponse;
412
+ }
413
+ catch (error) {
414
+ await logger_1.Logger.error('Error in agent execution', error);
415
+ throw error;
416
+ }
417
+ }
418
+ async chat(prompt, previousResult) {
419
+ // Lazy init: restore history on first chat (like Python SDK)
420
+ await this.initDbSession();
421
+ // Check cache first
422
+ const cached = this.getCachedResponse(prompt);
423
+ if (cached) {
424
+ return cached;
425
+ }
426
+ // Add user message to conversation history
427
+ this.messages.push({ role: 'user', content: prompt });
428
+ // Persist user message if db is configured and autoPersist is enabled
429
+ if (this.dbAdapter && this.autoPersist) {
430
+ await this.persistMessage('user', prompt);
431
+ }
432
+ const response = await this.start(prompt, previousResult);
433
+ // Add assistant response to history
434
+ this.messages.push({ role: 'assistant', content: response });
435
+ // Persist assistant response if db is configured and autoPersist is enabled
436
+ if (this.dbAdapter && this.autoPersist) {
437
+ await this.persistMessage('assistant', response);
438
+ }
439
+ // Cache the response
440
+ this.cacheResponse(prompt, response);
441
+ return response;
442
+ }
443
+ async execute(previousResult) {
444
+ // For backward compatibility and multi-agent support
445
+ return this.start(this.instructions, previousResult);
446
+ }
447
+ /**
448
+ * Persist a message to the database
449
+ */
450
+ async persistMessage(role, content) {
451
+ if (!this.dbAdapter)
452
+ return;
453
+ try {
454
+ const message = {
455
+ id: (0, crypto_1.randomUUID)(),
456
+ sessionId: this.sessionId,
457
+ runId: this.runId,
458
+ role,
459
+ content,
460
+ createdAt: Date.now()
461
+ };
462
+ await this.dbAdapter.saveMessage(message);
463
+ }
464
+ catch (error) {
465
+ await logger_1.Logger.warn('Failed to persist message:', error);
466
+ }
467
+ }
468
+ /**
469
+ * Get the session ID for this agent
470
+ */
471
+ getSessionId() {
472
+ return this.sessionId;
473
+ }
474
+ /**
475
+ * Get the run ID for this agent
476
+ */
477
+ getRunId() {
478
+ return this.runId;
479
+ }
480
+ getResult() {
481
+ return null;
482
+ }
483
+ getInstructions() {
484
+ return this.instructions;
485
+ }
486
+ /**
487
+ * Get conversation history
488
+ */
489
+ getHistory() {
490
+ return [...this.messages];
491
+ }
492
+ /**
493
+ * Clear conversation history (in memory and optionally in DB)
494
+ */
495
+ async clearHistory(clearDb = true) {
496
+ this.messages = [];
497
+ if (clearDb && this.dbAdapter) {
498
+ try {
499
+ await this.dbAdapter.deleteMessages(this.sessionId);
500
+ logger_1.Logger.debug(`Cleared history for session ${this.sessionId}`);
501
+ }
502
+ catch (error) {
503
+ logger_1.Logger.warn('Failed to clear DB history:', error);
504
+ }
505
+ }
506
+ }
507
+ /**
508
+ * Clear response cache
509
+ */
510
+ clearCache() {
511
+ this.responseCache.clear();
512
+ }
513
+ /**
514
+ * Get the resolved backend (AI SDK preferred, native fallback)
515
+ * Lazy initialization - backend is only resolved on first use
516
+ */
517
+ async getBackend() {
518
+ if (this._backend) {
519
+ return this._backend;
520
+ }
521
+ if (!this._backendPromise) {
522
+ this._backendPromise = (async () => {
523
+ const { resolveBackend } = await Promise.resolve().then(() => __importStar(require('../llm/backend-resolver')));
524
+ const result = await resolveBackend(this.llm, {
525
+ attribution: {
526
+ agentId: this.name,
527
+ runId: this.runId,
528
+ sessionId: this.sessionId,
529
+ },
530
+ });
531
+ this._backend = result.provider;
532
+ this._backendSource = result.source;
533
+ logger_1.Logger.debug(`Agent ${this.name} using ${result.source} backend for ${this.llm}`);
534
+ return result;
535
+ })();
536
+ }
537
+ const result = await this._backendPromise;
538
+ return result.provider;
539
+ }
540
+ /**
541
+ * Get the backend source (ai-sdk, native, custom, or legacy)
542
+ */
543
+ getBackendSource() {
544
+ return this._backendSource;
545
+ }
546
+ /**
547
+ * Embed text using AI SDK (preferred) or native provider
548
+ *
549
+ * @param text - Text to embed (string or array of strings)
550
+ * @param options - Embedding options
551
+ * @returns Embedding vector(s)
552
+ *
553
+ * @example Single text
554
+ * ```typescript
555
+ * const embedding = await agent.embed("Hello world");
556
+ * ```
557
+ *
558
+ * @example Multiple texts
559
+ * ```typescript
560
+ * const embeddings = await agent.embed(["Hello", "World"]);
561
+ * ```
562
+ */
563
+ async embed(text, options) {
564
+ const { embed, embedMany } = await Promise.resolve().then(() => __importStar(require('../llm/embeddings')));
565
+ if (Array.isArray(text)) {
566
+ const result = await embedMany(text, { model: options?.model });
567
+ return result.embeddings;
568
+ }
569
+ else {
570
+ const result = await embed(text, { model: options?.model });
571
+ return result.embedding;
572
+ }
573
+ }
574
+ /**
575
+ * Get the model string for this agent
576
+ */
577
+ getModel() {
578
+ return this.llm;
579
+ }
580
+ }
581
+ exports.Agent = Agent;
582
+ /**
583
+ * Multi-agent orchestration class
584
+ *
585
+ * @example Simple array syntax
586
+ * ```typescript
587
+ * import { Agent, Agents } from 'praisonai';
588
+ *
589
+ * const researcher = new Agent({ instructions: "Research the topic" });
590
+ * const writer = new Agent({ instructions: "Write based on research" });
591
+ *
592
+ * const agents = new Agents([researcher, writer]);
593
+ * await agents.start();
594
+ * ```
595
+ *
596
+ * @example Config object syntax
597
+ * ```typescript
598
+ * const agents = new Agents({
599
+ * agents: [researcher, writer],
600
+ * process: 'parallel'
601
+ * });
602
+ * ```
603
+ */
604
+ class PraisonAIAgents {
605
+ /**
606
+ * Create a multi-agent orchestration
607
+ * @param configOrAgents - Either an array of agents or a config object
608
+ */
609
+ constructor(configOrAgents) {
610
+ // Support array syntax: new Agents([a1, a2])
611
+ const config = Array.isArray(configOrAgents)
612
+ ? { agents: configOrAgents }
613
+ : configOrAgents;
614
+ this.agents = config.agents;
615
+ this.verbose = config.verbose ?? process.env.PRAISON_VERBOSE !== 'false';
616
+ this.pretty = config.pretty ?? process.env.PRAISON_PRETTY === 'true';
617
+ this.process = config.process || 'sequential';
618
+ // Auto-generate tasks if not provided
619
+ this.tasks = config.tasks || this.generateTasks();
620
+ // Configure logging
621
+ logger_1.Logger.setVerbose(this.verbose);
622
+ logger_1.Logger.setPretty(this.pretty);
623
+ }
624
+ generateTasks() {
625
+ return this.agents.map(agent => {
626
+ const instructions = agent.getInstructions();
627
+ // Extract task from instructions - get first sentence or whole instruction if no period
628
+ const task = instructions.split('.')[0].trim();
629
+ return task;
630
+ });
631
+ }
632
+ async executeSequential() {
633
+ const results = [];
634
+ let previousResult;
635
+ for (let i = 0; i < this.agents.length; i++) {
636
+ const agent = this.agents[i];
637
+ const task = this.tasks[i];
638
+ await logger_1.Logger.debug(`Running agent ${i + 1}: ${agent.name}`);
639
+ await logger_1.Logger.debug(`Task: ${task}`);
640
+ // For first agent, use task directly
641
+ // For subsequent agents, append previous result to their instructions
642
+ const prompt = i === 0 ? task : `${task}\n\nHere is the input: ${previousResult}`;
643
+ const result = await agent.start(prompt, previousResult);
644
+ results.push(result);
645
+ previousResult = result;
646
+ }
647
+ return results;
648
+ }
649
+ async start() {
650
+ await logger_1.Logger.debug('Starting PraisonAI Agents execution...');
651
+ await logger_1.Logger.debug('Process mode:', this.process);
652
+ await logger_1.Logger.debug('Tasks:', this.tasks);
653
+ let results;
654
+ if (this.process === 'parallel') {
655
+ // Run all agents in parallel
656
+ const promises = this.agents.map((agent, i) => {
657
+ const task = this.tasks[i];
658
+ return agent.start(task);
659
+ });
660
+ results = await Promise.all(promises);
661
+ }
662
+ else {
663
+ // Run agents sequentially (default)
664
+ results = await this.executeSequential();
665
+ }
666
+ if (this.verbose) {
667
+ await logger_1.Logger.info('PraisonAI Agents execution completed.');
668
+ for (let i = 0; i < results.length; i++) {
669
+ await logger_1.Logger.section(`Result from Agent ${i + 1}`, results[i]);
670
+ }
671
+ }
672
+ return results;
673
+ }
674
+ async chat() {
675
+ return this.start();
676
+ }
677
+ }
678
+ exports.PraisonAIAgents = PraisonAIAgents;
679
+ /**
680
+ * Agents - Alias for PraisonAIAgents
681
+ *
682
+ * This is the recommended class name for multi-agent orchestration.
683
+ * PraisonAIAgents is kept for backward compatibility.
684
+ *
685
+ * @example
686
+ * ```typescript
687
+ * import { Agent, Agents } from 'praisonai';
688
+ *
689
+ * const agents = new Agents([
690
+ * new Agent({ instructions: "Research the topic" }),
691
+ * new Agent({ instructions: "Write based on research" })
692
+ * ]);
693
+ * await agents.start();
694
+ * ```
695
+ */
696
+ exports.Agents = PraisonAIAgents;