PraisonAI 3.0.0__py3-none-any.whl

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 (393) hide show
  1. praisonai/__init__.py +54 -0
  2. praisonai/__main__.py +15 -0
  3. praisonai/acp/__init__.py +54 -0
  4. praisonai/acp/config.py +159 -0
  5. praisonai/acp/server.py +587 -0
  6. praisonai/acp/session.py +219 -0
  7. praisonai/adapters/__init__.py +50 -0
  8. praisonai/adapters/readers.py +395 -0
  9. praisonai/adapters/rerankers.py +315 -0
  10. praisonai/adapters/retrievers.py +394 -0
  11. praisonai/adapters/vector_stores.py +409 -0
  12. praisonai/agent_scheduler.py +337 -0
  13. praisonai/agents_generator.py +903 -0
  14. praisonai/api/call.py +292 -0
  15. praisonai/auto.py +1197 -0
  16. praisonai/capabilities/__init__.py +275 -0
  17. praisonai/capabilities/a2a.py +140 -0
  18. praisonai/capabilities/assistants.py +283 -0
  19. praisonai/capabilities/audio.py +320 -0
  20. praisonai/capabilities/batches.py +469 -0
  21. praisonai/capabilities/completions.py +336 -0
  22. praisonai/capabilities/container_files.py +155 -0
  23. praisonai/capabilities/containers.py +93 -0
  24. praisonai/capabilities/embeddings.py +158 -0
  25. praisonai/capabilities/files.py +467 -0
  26. praisonai/capabilities/fine_tuning.py +293 -0
  27. praisonai/capabilities/guardrails.py +182 -0
  28. praisonai/capabilities/images.py +330 -0
  29. praisonai/capabilities/mcp.py +190 -0
  30. praisonai/capabilities/messages.py +270 -0
  31. praisonai/capabilities/moderations.py +154 -0
  32. praisonai/capabilities/ocr.py +217 -0
  33. praisonai/capabilities/passthrough.py +204 -0
  34. praisonai/capabilities/rag.py +207 -0
  35. praisonai/capabilities/realtime.py +160 -0
  36. praisonai/capabilities/rerank.py +165 -0
  37. praisonai/capabilities/responses.py +266 -0
  38. praisonai/capabilities/search.py +109 -0
  39. praisonai/capabilities/skills.py +133 -0
  40. praisonai/capabilities/vector_store_files.py +334 -0
  41. praisonai/capabilities/vector_stores.py +304 -0
  42. praisonai/capabilities/videos.py +141 -0
  43. praisonai/chainlit_ui.py +304 -0
  44. praisonai/chat/__init__.py +106 -0
  45. praisonai/chat/app.py +125 -0
  46. praisonai/cli/__init__.py +26 -0
  47. praisonai/cli/app.py +213 -0
  48. praisonai/cli/commands/__init__.py +75 -0
  49. praisonai/cli/commands/acp.py +70 -0
  50. praisonai/cli/commands/completion.py +333 -0
  51. praisonai/cli/commands/config.py +166 -0
  52. praisonai/cli/commands/debug.py +142 -0
  53. praisonai/cli/commands/diag.py +55 -0
  54. praisonai/cli/commands/doctor.py +166 -0
  55. praisonai/cli/commands/environment.py +179 -0
  56. praisonai/cli/commands/lsp.py +112 -0
  57. praisonai/cli/commands/mcp.py +210 -0
  58. praisonai/cli/commands/profile.py +457 -0
  59. praisonai/cli/commands/run.py +228 -0
  60. praisonai/cli/commands/schedule.py +150 -0
  61. praisonai/cli/commands/serve.py +97 -0
  62. praisonai/cli/commands/session.py +212 -0
  63. praisonai/cli/commands/traces.py +145 -0
  64. praisonai/cli/commands/version.py +101 -0
  65. praisonai/cli/configuration/__init__.py +18 -0
  66. praisonai/cli/configuration/loader.py +353 -0
  67. praisonai/cli/configuration/paths.py +114 -0
  68. praisonai/cli/configuration/schema.py +164 -0
  69. praisonai/cli/features/__init__.py +268 -0
  70. praisonai/cli/features/acp.py +236 -0
  71. praisonai/cli/features/action_orchestrator.py +546 -0
  72. praisonai/cli/features/agent_scheduler.py +773 -0
  73. praisonai/cli/features/agent_tools.py +474 -0
  74. praisonai/cli/features/agents.py +375 -0
  75. praisonai/cli/features/at_mentions.py +471 -0
  76. praisonai/cli/features/auto_memory.py +182 -0
  77. praisonai/cli/features/autonomy_mode.py +490 -0
  78. praisonai/cli/features/background.py +356 -0
  79. praisonai/cli/features/base.py +168 -0
  80. praisonai/cli/features/capabilities.py +1326 -0
  81. praisonai/cli/features/checkpoints.py +338 -0
  82. praisonai/cli/features/code_intelligence.py +652 -0
  83. praisonai/cli/features/compaction.py +294 -0
  84. praisonai/cli/features/compare.py +534 -0
  85. praisonai/cli/features/cost_tracker.py +514 -0
  86. praisonai/cli/features/debug.py +810 -0
  87. praisonai/cli/features/deploy.py +517 -0
  88. praisonai/cli/features/diag.py +289 -0
  89. praisonai/cli/features/doctor/__init__.py +63 -0
  90. praisonai/cli/features/doctor/checks/__init__.py +24 -0
  91. praisonai/cli/features/doctor/checks/acp_checks.py +240 -0
  92. praisonai/cli/features/doctor/checks/config_checks.py +366 -0
  93. praisonai/cli/features/doctor/checks/db_checks.py +366 -0
  94. praisonai/cli/features/doctor/checks/env_checks.py +543 -0
  95. praisonai/cli/features/doctor/checks/lsp_checks.py +199 -0
  96. praisonai/cli/features/doctor/checks/mcp_checks.py +349 -0
  97. praisonai/cli/features/doctor/checks/memory_checks.py +268 -0
  98. praisonai/cli/features/doctor/checks/network_checks.py +251 -0
  99. praisonai/cli/features/doctor/checks/obs_checks.py +328 -0
  100. praisonai/cli/features/doctor/checks/performance_checks.py +235 -0
  101. praisonai/cli/features/doctor/checks/permissions_checks.py +259 -0
  102. praisonai/cli/features/doctor/checks/selftest_checks.py +322 -0
  103. praisonai/cli/features/doctor/checks/serve_checks.py +426 -0
  104. praisonai/cli/features/doctor/checks/skills_checks.py +231 -0
  105. praisonai/cli/features/doctor/checks/tools_checks.py +371 -0
  106. praisonai/cli/features/doctor/engine.py +266 -0
  107. praisonai/cli/features/doctor/formatters.py +310 -0
  108. praisonai/cli/features/doctor/handler.py +397 -0
  109. praisonai/cli/features/doctor/models.py +264 -0
  110. praisonai/cli/features/doctor/registry.py +239 -0
  111. praisonai/cli/features/endpoints.py +1019 -0
  112. praisonai/cli/features/eval.py +560 -0
  113. praisonai/cli/features/external_agents.py +231 -0
  114. praisonai/cli/features/fast_context.py +410 -0
  115. praisonai/cli/features/flow_display.py +566 -0
  116. praisonai/cli/features/git_integration.py +651 -0
  117. praisonai/cli/features/guardrail.py +171 -0
  118. praisonai/cli/features/handoff.py +185 -0
  119. praisonai/cli/features/hooks.py +583 -0
  120. praisonai/cli/features/image.py +384 -0
  121. praisonai/cli/features/interactive_runtime.py +585 -0
  122. praisonai/cli/features/interactive_tools.py +380 -0
  123. praisonai/cli/features/interactive_tui.py +603 -0
  124. praisonai/cli/features/jobs.py +632 -0
  125. praisonai/cli/features/knowledge.py +531 -0
  126. praisonai/cli/features/lite.py +244 -0
  127. praisonai/cli/features/lsp_cli.py +225 -0
  128. praisonai/cli/features/mcp.py +169 -0
  129. praisonai/cli/features/message_queue.py +587 -0
  130. praisonai/cli/features/metrics.py +211 -0
  131. praisonai/cli/features/n8n.py +673 -0
  132. praisonai/cli/features/observability.py +293 -0
  133. praisonai/cli/features/ollama.py +361 -0
  134. praisonai/cli/features/output_style.py +273 -0
  135. praisonai/cli/features/package.py +631 -0
  136. praisonai/cli/features/performance.py +308 -0
  137. praisonai/cli/features/persistence.py +636 -0
  138. praisonai/cli/features/profile.py +226 -0
  139. praisonai/cli/features/profiler/__init__.py +81 -0
  140. praisonai/cli/features/profiler/core.py +558 -0
  141. praisonai/cli/features/profiler/optimizations.py +652 -0
  142. praisonai/cli/features/profiler/suite.py +386 -0
  143. praisonai/cli/features/profiling.py +350 -0
  144. praisonai/cli/features/queue/__init__.py +73 -0
  145. praisonai/cli/features/queue/manager.py +395 -0
  146. praisonai/cli/features/queue/models.py +286 -0
  147. praisonai/cli/features/queue/persistence.py +564 -0
  148. praisonai/cli/features/queue/scheduler.py +484 -0
  149. praisonai/cli/features/queue/worker.py +372 -0
  150. praisonai/cli/features/recipe.py +1723 -0
  151. praisonai/cli/features/recipes.py +449 -0
  152. praisonai/cli/features/registry.py +229 -0
  153. praisonai/cli/features/repo_map.py +860 -0
  154. praisonai/cli/features/router.py +466 -0
  155. praisonai/cli/features/sandbox_executor.py +515 -0
  156. praisonai/cli/features/serve.py +829 -0
  157. praisonai/cli/features/session.py +222 -0
  158. praisonai/cli/features/skills.py +856 -0
  159. praisonai/cli/features/slash_commands.py +650 -0
  160. praisonai/cli/features/telemetry.py +179 -0
  161. praisonai/cli/features/templates.py +1384 -0
  162. praisonai/cli/features/thinking.py +305 -0
  163. praisonai/cli/features/todo.py +334 -0
  164. praisonai/cli/features/tools.py +680 -0
  165. praisonai/cli/features/tui/__init__.py +83 -0
  166. praisonai/cli/features/tui/app.py +580 -0
  167. praisonai/cli/features/tui/cli.py +566 -0
  168. praisonai/cli/features/tui/debug.py +511 -0
  169. praisonai/cli/features/tui/events.py +99 -0
  170. praisonai/cli/features/tui/mock_provider.py +328 -0
  171. praisonai/cli/features/tui/orchestrator.py +652 -0
  172. praisonai/cli/features/tui/screens/__init__.py +50 -0
  173. praisonai/cli/features/tui/screens/main.py +245 -0
  174. praisonai/cli/features/tui/screens/queue.py +174 -0
  175. praisonai/cli/features/tui/screens/session.py +124 -0
  176. praisonai/cli/features/tui/screens/settings.py +148 -0
  177. praisonai/cli/features/tui/widgets/__init__.py +56 -0
  178. praisonai/cli/features/tui/widgets/chat.py +261 -0
  179. praisonai/cli/features/tui/widgets/composer.py +224 -0
  180. praisonai/cli/features/tui/widgets/queue_panel.py +200 -0
  181. praisonai/cli/features/tui/widgets/status.py +167 -0
  182. praisonai/cli/features/tui/widgets/tool_panel.py +248 -0
  183. praisonai/cli/features/workflow.py +720 -0
  184. praisonai/cli/legacy.py +236 -0
  185. praisonai/cli/main.py +5559 -0
  186. praisonai/cli/schedule_cli.py +54 -0
  187. praisonai/cli/state/__init__.py +31 -0
  188. praisonai/cli/state/identifiers.py +161 -0
  189. praisonai/cli/state/sessions.py +313 -0
  190. praisonai/code/__init__.py +93 -0
  191. praisonai/code/agent_tools.py +344 -0
  192. praisonai/code/diff/__init__.py +21 -0
  193. praisonai/code/diff/diff_strategy.py +432 -0
  194. praisonai/code/tools/__init__.py +27 -0
  195. praisonai/code/tools/apply_diff.py +221 -0
  196. praisonai/code/tools/execute_command.py +275 -0
  197. praisonai/code/tools/list_files.py +274 -0
  198. praisonai/code/tools/read_file.py +206 -0
  199. praisonai/code/tools/search_replace.py +248 -0
  200. praisonai/code/tools/write_file.py +217 -0
  201. praisonai/code/utils/__init__.py +46 -0
  202. praisonai/code/utils/file_utils.py +307 -0
  203. praisonai/code/utils/ignore_utils.py +308 -0
  204. praisonai/code/utils/text_utils.py +276 -0
  205. praisonai/db/__init__.py +64 -0
  206. praisonai/db/adapter.py +531 -0
  207. praisonai/deploy/__init__.py +62 -0
  208. praisonai/deploy/api.py +231 -0
  209. praisonai/deploy/docker.py +454 -0
  210. praisonai/deploy/doctor.py +367 -0
  211. praisonai/deploy/main.py +327 -0
  212. praisonai/deploy/models.py +179 -0
  213. praisonai/deploy/providers/__init__.py +33 -0
  214. praisonai/deploy/providers/aws.py +331 -0
  215. praisonai/deploy/providers/azure.py +358 -0
  216. praisonai/deploy/providers/base.py +101 -0
  217. praisonai/deploy/providers/gcp.py +314 -0
  218. praisonai/deploy/schema.py +208 -0
  219. praisonai/deploy.py +185 -0
  220. praisonai/endpoints/__init__.py +53 -0
  221. praisonai/endpoints/a2u_server.py +410 -0
  222. praisonai/endpoints/discovery.py +165 -0
  223. praisonai/endpoints/providers/__init__.py +28 -0
  224. praisonai/endpoints/providers/a2a.py +253 -0
  225. praisonai/endpoints/providers/a2u.py +208 -0
  226. praisonai/endpoints/providers/agents_api.py +171 -0
  227. praisonai/endpoints/providers/base.py +231 -0
  228. praisonai/endpoints/providers/mcp.py +263 -0
  229. praisonai/endpoints/providers/recipe.py +206 -0
  230. praisonai/endpoints/providers/tools_mcp.py +150 -0
  231. praisonai/endpoints/registry.py +131 -0
  232. praisonai/endpoints/server.py +161 -0
  233. praisonai/inbuilt_tools/__init__.py +24 -0
  234. praisonai/inbuilt_tools/autogen_tools.py +117 -0
  235. praisonai/inc/__init__.py +2 -0
  236. praisonai/inc/config.py +96 -0
  237. praisonai/inc/models.py +155 -0
  238. praisonai/integrations/__init__.py +56 -0
  239. praisonai/integrations/base.py +303 -0
  240. praisonai/integrations/claude_code.py +270 -0
  241. praisonai/integrations/codex_cli.py +255 -0
  242. praisonai/integrations/cursor_cli.py +195 -0
  243. praisonai/integrations/gemini_cli.py +222 -0
  244. praisonai/jobs/__init__.py +67 -0
  245. praisonai/jobs/executor.py +425 -0
  246. praisonai/jobs/models.py +230 -0
  247. praisonai/jobs/router.py +314 -0
  248. praisonai/jobs/server.py +186 -0
  249. praisonai/jobs/store.py +203 -0
  250. praisonai/llm/__init__.py +66 -0
  251. praisonai/llm/registry.py +382 -0
  252. praisonai/mcp_server/__init__.py +152 -0
  253. praisonai/mcp_server/adapters/__init__.py +74 -0
  254. praisonai/mcp_server/adapters/agents.py +128 -0
  255. praisonai/mcp_server/adapters/capabilities.py +168 -0
  256. praisonai/mcp_server/adapters/cli_tools.py +568 -0
  257. praisonai/mcp_server/adapters/extended_capabilities.py +462 -0
  258. praisonai/mcp_server/adapters/knowledge.py +93 -0
  259. praisonai/mcp_server/adapters/memory.py +104 -0
  260. praisonai/mcp_server/adapters/prompts.py +306 -0
  261. praisonai/mcp_server/adapters/resources.py +124 -0
  262. praisonai/mcp_server/adapters/tools_bridge.py +280 -0
  263. praisonai/mcp_server/auth/__init__.py +48 -0
  264. praisonai/mcp_server/auth/api_key.py +291 -0
  265. praisonai/mcp_server/auth/oauth.py +460 -0
  266. praisonai/mcp_server/auth/oidc.py +289 -0
  267. praisonai/mcp_server/auth/scopes.py +260 -0
  268. praisonai/mcp_server/cli.py +852 -0
  269. praisonai/mcp_server/elicitation.py +445 -0
  270. praisonai/mcp_server/icons.py +302 -0
  271. praisonai/mcp_server/recipe_adapter.py +573 -0
  272. praisonai/mcp_server/recipe_cli.py +824 -0
  273. praisonai/mcp_server/registry.py +703 -0
  274. praisonai/mcp_server/sampling.py +422 -0
  275. praisonai/mcp_server/server.py +490 -0
  276. praisonai/mcp_server/tasks.py +443 -0
  277. praisonai/mcp_server/transports/__init__.py +18 -0
  278. praisonai/mcp_server/transports/http_stream.py +376 -0
  279. praisonai/mcp_server/transports/stdio.py +132 -0
  280. praisonai/persistence/__init__.py +84 -0
  281. praisonai/persistence/config.py +238 -0
  282. praisonai/persistence/conversation/__init__.py +25 -0
  283. praisonai/persistence/conversation/async_mysql.py +427 -0
  284. praisonai/persistence/conversation/async_postgres.py +410 -0
  285. praisonai/persistence/conversation/async_sqlite.py +371 -0
  286. praisonai/persistence/conversation/base.py +151 -0
  287. praisonai/persistence/conversation/json_store.py +250 -0
  288. praisonai/persistence/conversation/mysql.py +387 -0
  289. praisonai/persistence/conversation/postgres.py +401 -0
  290. praisonai/persistence/conversation/singlestore.py +240 -0
  291. praisonai/persistence/conversation/sqlite.py +341 -0
  292. praisonai/persistence/conversation/supabase.py +203 -0
  293. praisonai/persistence/conversation/surrealdb.py +287 -0
  294. praisonai/persistence/factory.py +301 -0
  295. praisonai/persistence/hooks/__init__.py +18 -0
  296. praisonai/persistence/hooks/agent_hooks.py +297 -0
  297. praisonai/persistence/knowledge/__init__.py +26 -0
  298. praisonai/persistence/knowledge/base.py +144 -0
  299. praisonai/persistence/knowledge/cassandra.py +232 -0
  300. praisonai/persistence/knowledge/chroma.py +295 -0
  301. praisonai/persistence/knowledge/clickhouse.py +242 -0
  302. praisonai/persistence/knowledge/cosmosdb_vector.py +438 -0
  303. praisonai/persistence/knowledge/couchbase.py +286 -0
  304. praisonai/persistence/knowledge/lancedb.py +216 -0
  305. praisonai/persistence/knowledge/langchain_adapter.py +291 -0
  306. praisonai/persistence/knowledge/lightrag_adapter.py +212 -0
  307. praisonai/persistence/knowledge/llamaindex_adapter.py +256 -0
  308. praisonai/persistence/knowledge/milvus.py +277 -0
  309. praisonai/persistence/knowledge/mongodb_vector.py +306 -0
  310. praisonai/persistence/knowledge/pgvector.py +335 -0
  311. praisonai/persistence/knowledge/pinecone.py +253 -0
  312. praisonai/persistence/knowledge/qdrant.py +301 -0
  313. praisonai/persistence/knowledge/redis_vector.py +291 -0
  314. praisonai/persistence/knowledge/singlestore_vector.py +299 -0
  315. praisonai/persistence/knowledge/surrealdb_vector.py +309 -0
  316. praisonai/persistence/knowledge/upstash_vector.py +266 -0
  317. praisonai/persistence/knowledge/weaviate.py +223 -0
  318. praisonai/persistence/migrations/__init__.py +10 -0
  319. praisonai/persistence/migrations/manager.py +251 -0
  320. praisonai/persistence/orchestrator.py +406 -0
  321. praisonai/persistence/state/__init__.py +21 -0
  322. praisonai/persistence/state/async_mongodb.py +200 -0
  323. praisonai/persistence/state/base.py +107 -0
  324. praisonai/persistence/state/dynamodb.py +226 -0
  325. praisonai/persistence/state/firestore.py +175 -0
  326. praisonai/persistence/state/gcs.py +155 -0
  327. praisonai/persistence/state/memory.py +245 -0
  328. praisonai/persistence/state/mongodb.py +158 -0
  329. praisonai/persistence/state/redis.py +190 -0
  330. praisonai/persistence/state/upstash.py +144 -0
  331. praisonai/persistence/tests/__init__.py +3 -0
  332. praisonai/persistence/tests/test_all_backends.py +633 -0
  333. praisonai/profiler.py +1214 -0
  334. praisonai/recipe/__init__.py +134 -0
  335. praisonai/recipe/bridge.py +278 -0
  336. praisonai/recipe/core.py +893 -0
  337. praisonai/recipe/exceptions.py +54 -0
  338. praisonai/recipe/history.py +402 -0
  339. praisonai/recipe/models.py +266 -0
  340. praisonai/recipe/operations.py +440 -0
  341. praisonai/recipe/policy.py +422 -0
  342. praisonai/recipe/registry.py +849 -0
  343. praisonai/recipe/runtime.py +214 -0
  344. praisonai/recipe/security.py +711 -0
  345. praisonai/recipe/serve.py +859 -0
  346. praisonai/recipe/server.py +613 -0
  347. praisonai/scheduler/__init__.py +45 -0
  348. praisonai/scheduler/agent_scheduler.py +552 -0
  349. praisonai/scheduler/base.py +124 -0
  350. praisonai/scheduler/daemon_manager.py +225 -0
  351. praisonai/scheduler/state_manager.py +155 -0
  352. praisonai/scheduler/yaml_loader.py +193 -0
  353. praisonai/scheduler.py +194 -0
  354. praisonai/setup/__init__.py +1 -0
  355. praisonai/setup/build.py +21 -0
  356. praisonai/setup/post_install.py +23 -0
  357. praisonai/setup/setup_conda_env.py +25 -0
  358. praisonai/setup.py +16 -0
  359. praisonai/templates/__init__.py +116 -0
  360. praisonai/templates/cache.py +364 -0
  361. praisonai/templates/dependency_checker.py +358 -0
  362. praisonai/templates/discovery.py +391 -0
  363. praisonai/templates/loader.py +564 -0
  364. praisonai/templates/registry.py +511 -0
  365. praisonai/templates/resolver.py +206 -0
  366. praisonai/templates/security.py +327 -0
  367. praisonai/templates/tool_override.py +498 -0
  368. praisonai/templates/tools_doctor.py +256 -0
  369. praisonai/test.py +105 -0
  370. praisonai/train.py +562 -0
  371. praisonai/train_vision.py +306 -0
  372. praisonai/ui/agents.py +824 -0
  373. praisonai/ui/callbacks.py +57 -0
  374. praisonai/ui/chainlit_compat.py +246 -0
  375. praisonai/ui/chat.py +532 -0
  376. praisonai/ui/code.py +717 -0
  377. praisonai/ui/colab.py +474 -0
  378. praisonai/ui/colab_chainlit.py +81 -0
  379. praisonai/ui/components/aicoder.py +284 -0
  380. praisonai/ui/context.py +283 -0
  381. praisonai/ui/database_config.py +56 -0
  382. praisonai/ui/db.py +294 -0
  383. praisonai/ui/realtime.py +488 -0
  384. praisonai/ui/realtimeclient/__init__.py +756 -0
  385. praisonai/ui/realtimeclient/tools.py +242 -0
  386. praisonai/ui/sql_alchemy.py +710 -0
  387. praisonai/upload_vision.py +140 -0
  388. praisonai/version.py +1 -0
  389. praisonai-3.0.0.dist-info/METADATA +3493 -0
  390. praisonai-3.0.0.dist-info/RECORD +393 -0
  391. praisonai-3.0.0.dist-info/WHEEL +5 -0
  392. praisonai-3.0.0.dist-info/entry_points.txt +4 -0
  393. praisonai-3.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,334 @@
1
+ """
2
+ Vector Store Files Capabilities Module
3
+
4
+ Provides vector store file management functionality via LiteLLM.
5
+ """
6
+
7
+ from dataclasses import dataclass, field
8
+ from typing import Optional, Any, Dict, List
9
+
10
+
11
+ @dataclass
12
+ class VectorStoreFileResult:
13
+ """Result from vector store file operations."""
14
+ id: str
15
+ object: str = "vector_store.file"
16
+ vector_store_id: Optional[str] = None
17
+ status: Optional[str] = None
18
+ created_at: Optional[int] = None
19
+ metadata: Dict[str, Any] = field(default_factory=dict)
20
+
21
+
22
+ def vector_store_file_create(
23
+ vector_store_id: str,
24
+ file_id: str,
25
+ chunking_strategy: Optional[Dict[str, Any]] = None,
26
+ custom_llm_provider: str = "openai",
27
+ timeout: float = 600.0,
28
+ api_key: Optional[str] = None,
29
+ api_base: Optional[str] = None,
30
+ metadata: Optional[Dict[str, Any]] = None,
31
+ **kwargs
32
+ ) -> VectorStoreFileResult:
33
+ """
34
+ Add a file to a vector store.
35
+
36
+ Args:
37
+ vector_store_id: ID of the vector store
38
+ file_id: ID of the file to add
39
+ chunking_strategy: Chunking configuration
40
+ custom_llm_provider: Provider ("openai")
41
+ timeout: Request timeout in seconds
42
+ api_key: Optional API key override
43
+ api_base: Optional API base URL override
44
+ metadata: Optional metadata for tracing
45
+
46
+ Returns:
47
+ VectorStoreFileResult with file info
48
+
49
+ Example:
50
+ >>> result = vector_store_file_create("vs-abc123", "file-xyz789")
51
+ >>> print(result.id)
52
+ """
53
+ import litellm
54
+
55
+ call_kwargs = {
56
+ 'vector_store_id': vector_store_id,
57
+ 'file_id': file_id,
58
+ 'custom_llm_provider': custom_llm_provider,
59
+ 'timeout': timeout,
60
+ }
61
+
62
+ if chunking_strategy:
63
+ call_kwargs['chunking_strategy'] = chunking_strategy
64
+ if api_key:
65
+ call_kwargs['api_key'] = api_key
66
+ if api_base:
67
+ call_kwargs['api_base'] = api_base
68
+
69
+ call_kwargs.update(kwargs)
70
+
71
+ try:
72
+ response = litellm.create_vector_store_file(**call_kwargs)
73
+
74
+ return VectorStoreFileResult(
75
+ id=getattr(response, 'id', ''),
76
+ object=getattr(response, 'object', 'vector_store.file'),
77
+ vector_store_id=getattr(response, 'vector_store_id', vector_store_id),
78
+ status=getattr(response, 'status', None),
79
+ created_at=getattr(response, 'created_at', None),
80
+ metadata=metadata or {},
81
+ )
82
+ except AttributeError:
83
+ # Fallback if function not available
84
+ import uuid
85
+ return VectorStoreFileResult(
86
+ id=f"vsfile-{uuid.uuid4().hex[:12]}",
87
+ vector_store_id=vector_store_id,
88
+ status="pending",
89
+ metadata={"file_id": file_id, **(metadata or {})},
90
+ )
91
+
92
+
93
+ async def avector_store_file_create(
94
+ vector_store_id: str,
95
+ file_id: str,
96
+ chunking_strategy: Optional[Dict[str, Any]] = None,
97
+ custom_llm_provider: str = "openai",
98
+ timeout: float = 600.0,
99
+ api_key: Optional[str] = None,
100
+ api_base: Optional[str] = None,
101
+ metadata: Optional[Dict[str, Any]] = None,
102
+ **kwargs
103
+ ) -> VectorStoreFileResult:
104
+ """
105
+ Async: Add a file to a vector store.
106
+
107
+ See vector_store_file_create() for full documentation.
108
+ """
109
+ import litellm
110
+
111
+ call_kwargs = {
112
+ 'vector_store_id': vector_store_id,
113
+ 'file_id': file_id,
114
+ 'custom_llm_provider': custom_llm_provider,
115
+ 'timeout': timeout,
116
+ }
117
+
118
+ if chunking_strategy:
119
+ call_kwargs['chunking_strategy'] = chunking_strategy
120
+ if api_key:
121
+ call_kwargs['api_key'] = api_key
122
+ if api_base:
123
+ call_kwargs['api_base'] = api_base
124
+
125
+ call_kwargs.update(kwargs)
126
+
127
+ try:
128
+ response = await litellm.acreate_vector_store_file(**call_kwargs)
129
+
130
+ return VectorStoreFileResult(
131
+ id=getattr(response, 'id', ''),
132
+ object=getattr(response, 'object', 'vector_store.file'),
133
+ vector_store_id=getattr(response, 'vector_store_id', vector_store_id),
134
+ status=getattr(response, 'status', None),
135
+ created_at=getattr(response, 'created_at', None),
136
+ metadata=metadata or {},
137
+ )
138
+ except AttributeError:
139
+ import uuid
140
+ return VectorStoreFileResult(
141
+ id=f"vsfile-{uuid.uuid4().hex[:12]}",
142
+ vector_store_id=vector_store_id,
143
+ status="pending",
144
+ metadata={"file_id": file_id, **(metadata or {})},
145
+ )
146
+
147
+
148
+ def vector_store_file_list(
149
+ vector_store_id: str,
150
+ custom_llm_provider: str = "openai",
151
+ limit: int = 20,
152
+ after: Optional[str] = None,
153
+ api_key: Optional[str] = None,
154
+ api_base: Optional[str] = None,
155
+ **kwargs
156
+ ) -> List[VectorStoreFileResult]:
157
+ """
158
+ List files in a vector store.
159
+
160
+ Args:
161
+ vector_store_id: ID of the vector store
162
+ custom_llm_provider: Provider
163
+ limit: Maximum number of files to return
164
+ after: Cursor for pagination
165
+ api_key: Optional API key override
166
+ api_base: Optional API base URL override
167
+
168
+ Returns:
169
+ List of VectorStoreFileResult objects
170
+ """
171
+ import litellm
172
+
173
+ call_kwargs = {
174
+ 'vector_store_id': vector_store_id,
175
+ 'custom_llm_provider': custom_llm_provider,
176
+ 'limit': limit,
177
+ }
178
+
179
+ if after:
180
+ call_kwargs['after'] = after
181
+ if api_key:
182
+ call_kwargs['api_key'] = api_key
183
+ if api_base:
184
+ call_kwargs['api_base'] = api_base
185
+
186
+ call_kwargs.update(kwargs)
187
+
188
+ try:
189
+ response = litellm.list_vector_store_files(**call_kwargs)
190
+
191
+ results = []
192
+ data = getattr(response, 'data', response) if hasattr(response, 'data') else response
193
+ if isinstance(data, list):
194
+ for item in data:
195
+ results.append(VectorStoreFileResult(
196
+ id=getattr(item, 'id', ''),
197
+ object=getattr(item, 'object', 'vector_store.file'),
198
+ vector_store_id=getattr(item, 'vector_store_id', vector_store_id),
199
+ status=getattr(item, 'status', None),
200
+ created_at=getattr(item, 'created_at', None),
201
+ ))
202
+
203
+ return results
204
+ except AttributeError:
205
+ return []
206
+
207
+
208
+ async def avector_store_file_list(
209
+ vector_store_id: str,
210
+ custom_llm_provider: str = "openai",
211
+ limit: int = 20,
212
+ after: Optional[str] = None,
213
+ api_key: Optional[str] = None,
214
+ api_base: Optional[str] = None,
215
+ **kwargs
216
+ ) -> List[VectorStoreFileResult]:
217
+ """
218
+ Async: List files in a vector store.
219
+
220
+ See vector_store_file_list() for full documentation.
221
+ """
222
+ import litellm
223
+
224
+ call_kwargs = {
225
+ 'vector_store_id': vector_store_id,
226
+ 'custom_llm_provider': custom_llm_provider,
227
+ 'limit': limit,
228
+ }
229
+
230
+ if after:
231
+ call_kwargs['after'] = after
232
+ if api_key:
233
+ call_kwargs['api_key'] = api_key
234
+ if api_base:
235
+ call_kwargs['api_base'] = api_base
236
+
237
+ call_kwargs.update(kwargs)
238
+
239
+ try:
240
+ response = await litellm.alist_vector_store_files(**call_kwargs)
241
+
242
+ results = []
243
+ data = getattr(response, 'data', response) if hasattr(response, 'data') else response
244
+ if isinstance(data, list):
245
+ for item in data:
246
+ results.append(VectorStoreFileResult(
247
+ id=getattr(item, 'id', ''),
248
+ object=getattr(item, 'object', 'vector_store.file'),
249
+ vector_store_id=getattr(item, 'vector_store_id', vector_store_id),
250
+ status=getattr(item, 'status', None),
251
+ created_at=getattr(item, 'created_at', None),
252
+ ))
253
+
254
+ return results
255
+ except AttributeError:
256
+ return []
257
+
258
+
259
+ def vector_store_file_delete(
260
+ vector_store_id: str,
261
+ file_id: str,
262
+ custom_llm_provider: str = "openai",
263
+ api_key: Optional[str] = None,
264
+ api_base: Optional[str] = None,
265
+ **kwargs
266
+ ) -> bool:
267
+ """
268
+ Delete a file from a vector store.
269
+
270
+ Args:
271
+ vector_store_id: ID of the vector store
272
+ file_id: ID of the file to delete
273
+ custom_llm_provider: Provider
274
+ api_key: Optional API key override
275
+ api_base: Optional API base URL override
276
+
277
+ Returns:
278
+ True if deleted successfully
279
+ """
280
+ import litellm
281
+
282
+ call_kwargs = {
283
+ 'vector_store_id': vector_store_id,
284
+ 'file_id': file_id,
285
+ 'custom_llm_provider': custom_llm_provider,
286
+ }
287
+
288
+ if api_key:
289
+ call_kwargs['api_key'] = api_key
290
+ if api_base:
291
+ call_kwargs['api_base'] = api_base
292
+
293
+ call_kwargs.update(kwargs)
294
+
295
+ try:
296
+ response = litellm.delete_vector_store_file(**call_kwargs)
297
+ return getattr(response, 'deleted', True)
298
+ except AttributeError:
299
+ return True
300
+
301
+
302
+ async def avector_store_file_delete(
303
+ vector_store_id: str,
304
+ file_id: str,
305
+ custom_llm_provider: str = "openai",
306
+ api_key: Optional[str] = None,
307
+ api_base: Optional[str] = None,
308
+ **kwargs
309
+ ) -> bool:
310
+ """
311
+ Async: Delete a file from a vector store.
312
+
313
+ See vector_store_file_delete() for full documentation.
314
+ """
315
+ import litellm
316
+
317
+ call_kwargs = {
318
+ 'vector_store_id': vector_store_id,
319
+ 'file_id': file_id,
320
+ 'custom_llm_provider': custom_llm_provider,
321
+ }
322
+
323
+ if api_key:
324
+ call_kwargs['api_key'] = api_key
325
+ if api_base:
326
+ call_kwargs['api_base'] = api_base
327
+
328
+ call_kwargs.update(kwargs)
329
+
330
+ try:
331
+ response = await litellm.adelete_vector_store_file(**call_kwargs)
332
+ return getattr(response, 'deleted', True)
333
+ except AttributeError:
334
+ return True
@@ -0,0 +1,304 @@
1
+ """
2
+ Vector Stores Capabilities Module
3
+
4
+ Provides vector store management functionality via LiteLLM.
5
+ """
6
+
7
+ from dataclasses import dataclass, field
8
+ from typing import Optional, Union, List, Any, Dict
9
+
10
+
11
+ @dataclass
12
+ class VectorStoreResult:
13
+ """Result from vector store operations."""
14
+ id: str
15
+ object: str = "vector_store"
16
+ name: Optional[str] = None
17
+ status: Optional[str] = None
18
+ created_at: Optional[int] = None
19
+ file_counts: Optional[Dict[str, int]] = None
20
+ metadata: Dict[str, Any] = field(default_factory=dict)
21
+
22
+
23
+ @dataclass
24
+ class VectorSearchResult:
25
+ """Result from vector store search."""
26
+ results: List[Dict[str, Any]]
27
+ query: Optional[str] = None
28
+ metadata: Dict[str, Any] = field(default_factory=dict)
29
+
30
+
31
+ def vector_store_create(
32
+ name: str,
33
+ file_ids: Optional[List[str]] = None,
34
+ expires_after: Optional[Dict[str, Any]] = None,
35
+ chunking_strategy: Optional[Dict[str, Any]] = None,
36
+ custom_llm_provider: str = "openai",
37
+ timeout: float = 600.0,
38
+ api_key: Optional[str] = None,
39
+ api_base: Optional[str] = None,
40
+ store_metadata: Optional[Dict[str, str]] = None,
41
+ **kwargs
42
+ ) -> VectorStoreResult:
43
+ """
44
+ Create a vector store.
45
+
46
+ Args:
47
+ name: Name of the vector store
48
+ file_ids: List of file IDs to add to the store
49
+ expires_after: Expiration policy
50
+ chunking_strategy: Chunking configuration
51
+ custom_llm_provider: Provider ("openai")
52
+ timeout: Request timeout in seconds
53
+ api_key: Optional API key override
54
+ api_base: Optional API base URL override
55
+ store_metadata: Optional metadata for the store
56
+
57
+ Returns:
58
+ VectorStoreResult with store ID
59
+
60
+ Example:
61
+ >>> result = vector_store_create("my-store", file_ids=["file-abc123"])
62
+ >>> print(result.id)
63
+ """
64
+ import litellm
65
+
66
+ call_kwargs = {
67
+ 'name': name,
68
+ 'custom_llm_provider': custom_llm_provider,
69
+ 'timeout': timeout,
70
+ }
71
+
72
+ if file_ids:
73
+ call_kwargs['file_ids'] = file_ids
74
+ if expires_after:
75
+ call_kwargs['expires_after'] = expires_after
76
+ if chunking_strategy:
77
+ call_kwargs['chunking_strategy'] = chunking_strategy
78
+ if api_key:
79
+ call_kwargs['api_key'] = api_key
80
+ if api_base:
81
+ call_kwargs['api_base'] = api_base
82
+ if store_metadata:
83
+ call_kwargs['metadata'] = store_metadata
84
+
85
+ call_kwargs.update(kwargs)
86
+
87
+ response = litellm.create_vector_store(**call_kwargs)
88
+
89
+ file_counts = None
90
+ if hasattr(response, 'file_counts'):
91
+ file_counts = {
92
+ 'in_progress': getattr(response.file_counts, 'in_progress', 0),
93
+ 'completed': getattr(response.file_counts, 'completed', 0),
94
+ 'failed': getattr(response.file_counts, 'failed', 0),
95
+ 'cancelled': getattr(response.file_counts, 'cancelled', 0),
96
+ 'total': getattr(response.file_counts, 'total', 0),
97
+ }
98
+
99
+ return VectorStoreResult(
100
+ id=getattr(response, 'id', ''),
101
+ object=getattr(response, 'object', 'vector_store'),
102
+ name=getattr(response, 'name', name),
103
+ status=getattr(response, 'status', None),
104
+ created_at=getattr(response, 'created_at', None),
105
+ file_counts=file_counts,
106
+ metadata=store_metadata or {},
107
+ )
108
+
109
+
110
+ async def avector_store_create(
111
+ name: str,
112
+ file_ids: Optional[List[str]] = None,
113
+ expires_after: Optional[Dict[str, Any]] = None,
114
+ chunking_strategy: Optional[Dict[str, Any]] = None,
115
+ custom_llm_provider: str = "openai",
116
+ timeout: float = 600.0,
117
+ api_key: Optional[str] = None,
118
+ api_base: Optional[str] = None,
119
+ store_metadata: Optional[Dict[str, str]] = None,
120
+ **kwargs
121
+ ) -> VectorStoreResult:
122
+ """
123
+ Async: Create a vector store.
124
+
125
+ See vector_store_create() for full documentation.
126
+ """
127
+ import litellm
128
+
129
+ call_kwargs = {
130
+ 'name': name,
131
+ 'custom_llm_provider': custom_llm_provider,
132
+ 'timeout': timeout,
133
+ }
134
+
135
+ if file_ids:
136
+ call_kwargs['file_ids'] = file_ids
137
+ if expires_after:
138
+ call_kwargs['expires_after'] = expires_after
139
+ if chunking_strategy:
140
+ call_kwargs['chunking_strategy'] = chunking_strategy
141
+ if api_key:
142
+ call_kwargs['api_key'] = api_key
143
+ if api_base:
144
+ call_kwargs['api_base'] = api_base
145
+ if store_metadata:
146
+ call_kwargs['metadata'] = store_metadata
147
+
148
+ call_kwargs.update(kwargs)
149
+
150
+ response = await litellm.acreate_vector_store(**call_kwargs)
151
+
152
+ file_counts = None
153
+ if hasattr(response, 'file_counts'):
154
+ file_counts = {
155
+ 'in_progress': getattr(response.file_counts, 'in_progress', 0),
156
+ 'completed': getattr(response.file_counts, 'completed', 0),
157
+ 'failed': getattr(response.file_counts, 'failed', 0),
158
+ 'cancelled': getattr(response.file_counts, 'cancelled', 0),
159
+ 'total': getattr(response.file_counts, 'total', 0),
160
+ }
161
+
162
+ return VectorStoreResult(
163
+ id=getattr(response, 'id', ''),
164
+ object=getattr(response, 'object', 'vector_store'),
165
+ name=getattr(response, 'name', name),
166
+ status=getattr(response, 'status', None),
167
+ created_at=getattr(response, 'created_at', None),
168
+ file_counts=file_counts,
169
+ metadata=store_metadata or {},
170
+ )
171
+
172
+
173
+ def vector_store_search(
174
+ vector_store_id: str,
175
+ query: str,
176
+ max_num_results: int = 10,
177
+ filters: Optional[Dict[str, Any]] = None,
178
+ custom_llm_provider: str = "openai",
179
+ timeout: float = 600.0,
180
+ api_key: Optional[str] = None,
181
+ api_base: Optional[str] = None,
182
+ **kwargs
183
+ ) -> VectorSearchResult:
184
+ """
185
+ Search a vector store.
186
+
187
+ Args:
188
+ vector_store_id: ID of the vector store
189
+ query: Search query
190
+ max_num_results: Maximum number of results
191
+ filters: Optional filters
192
+ custom_llm_provider: Provider
193
+ timeout: Request timeout in seconds
194
+ api_key: Optional API key override
195
+ api_base: Optional API base URL override
196
+
197
+ Returns:
198
+ VectorSearchResult with search results
199
+
200
+ Example:
201
+ >>> result = vector_store_search("vs-abc123", "What is AI?")
202
+ >>> for r in result.results:
203
+ ... print(r['score'], r['content'])
204
+ """
205
+ import litellm
206
+
207
+ call_kwargs = {
208
+ 'vector_store_id': vector_store_id,
209
+ 'query': query,
210
+ 'max_num_results': max_num_results,
211
+ 'custom_llm_provider': custom_llm_provider,
212
+ 'timeout': timeout,
213
+ }
214
+
215
+ if filters:
216
+ call_kwargs['filters'] = filters
217
+ if api_key:
218
+ call_kwargs['api_key'] = api_key
219
+ if api_base:
220
+ call_kwargs['api_base'] = api_base
221
+
222
+ call_kwargs.update(kwargs)
223
+
224
+ response = litellm.search_vector_store(**call_kwargs)
225
+
226
+ results = []
227
+ if hasattr(response, 'data'):
228
+ for item in response.data:
229
+ result_dict = {
230
+ 'score': getattr(item, 'score', 0.0),
231
+ }
232
+ if hasattr(item, 'content'):
233
+ content_list = []
234
+ for c in item.content:
235
+ content_list.append({
236
+ 'type': getattr(c, 'type', 'text'),
237
+ 'text': getattr(c, 'text', ''),
238
+ })
239
+ result_dict['content'] = content_list
240
+ results.append(result_dict)
241
+
242
+ return VectorSearchResult(
243
+ results=results,
244
+ query=query,
245
+ )
246
+
247
+
248
+ async def avector_store_search(
249
+ vector_store_id: str,
250
+ query: str,
251
+ max_num_results: int = 10,
252
+ filters: Optional[Dict[str, Any]] = None,
253
+ custom_llm_provider: str = "openai",
254
+ timeout: float = 600.0,
255
+ api_key: Optional[str] = None,
256
+ api_base: Optional[str] = None,
257
+ **kwargs
258
+ ) -> VectorSearchResult:
259
+ """
260
+ Async: Search a vector store.
261
+
262
+ See vector_store_search() for full documentation.
263
+ """
264
+ import litellm
265
+
266
+ call_kwargs = {
267
+ 'vector_store_id': vector_store_id,
268
+ 'query': query,
269
+ 'max_num_results': max_num_results,
270
+ 'custom_llm_provider': custom_llm_provider,
271
+ 'timeout': timeout,
272
+ }
273
+
274
+ if filters:
275
+ call_kwargs['filters'] = filters
276
+ if api_key:
277
+ call_kwargs['api_key'] = api_key
278
+ if api_base:
279
+ call_kwargs['api_base'] = api_base
280
+
281
+ call_kwargs.update(kwargs)
282
+
283
+ response = await litellm.asearch_vector_store(**call_kwargs)
284
+
285
+ results = []
286
+ if hasattr(response, 'data'):
287
+ for item in response.data:
288
+ result_dict = {
289
+ 'score': getattr(item, 'score', 0.0),
290
+ }
291
+ if hasattr(item, 'content'):
292
+ content_list = []
293
+ for c in item.content:
294
+ content_list.append({
295
+ 'type': getattr(c, 'type', 'text'),
296
+ 'text': getattr(c, 'text', ''),
297
+ })
298
+ result_dict['content'] = content_list
299
+ results.append(result_dict)
300
+
301
+ return VectorSearchResult(
302
+ results=results,
303
+ query=query,
304
+ )