ai-parrot 0.17.2__cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.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 (535) hide show
  1. agentui/.prettierrc +15 -0
  2. agentui/QUICKSTART.md +272 -0
  3. agentui/README.md +59 -0
  4. agentui/env.example +16 -0
  5. agentui/jsconfig.json +14 -0
  6. agentui/package-lock.json +4242 -0
  7. agentui/package.json +34 -0
  8. agentui/scripts/postinstall/apply-patches.mjs +260 -0
  9. agentui/src/app.css +61 -0
  10. agentui/src/app.d.ts +13 -0
  11. agentui/src/app.html +12 -0
  12. agentui/src/components/LoadingSpinner.svelte +64 -0
  13. agentui/src/components/ThemeSwitcher.svelte +159 -0
  14. agentui/src/components/index.js +4 -0
  15. agentui/src/lib/api/bots.ts +60 -0
  16. agentui/src/lib/api/chat.ts +22 -0
  17. agentui/src/lib/api/http.ts +25 -0
  18. agentui/src/lib/components/BotCard.svelte +33 -0
  19. agentui/src/lib/components/ChatBubble.svelte +63 -0
  20. agentui/src/lib/components/Toast.svelte +21 -0
  21. agentui/src/lib/config.ts +20 -0
  22. agentui/src/lib/stores/auth.svelte.ts +73 -0
  23. agentui/src/lib/stores/theme.svelte.js +64 -0
  24. agentui/src/lib/stores/toast.svelte.ts +31 -0
  25. agentui/src/lib/utils/conversation.ts +39 -0
  26. agentui/src/routes/+layout.svelte +20 -0
  27. agentui/src/routes/+page.svelte +232 -0
  28. agentui/src/routes/login/+page.svelte +200 -0
  29. agentui/src/routes/talk/[agentId]/+page.svelte +297 -0
  30. agentui/src/routes/talk/[agentId]/+page.ts +7 -0
  31. agentui/static/README.md +1 -0
  32. agentui/svelte.config.js +11 -0
  33. agentui/tailwind.config.ts +53 -0
  34. agentui/tsconfig.json +3 -0
  35. agentui/vite.config.ts +10 -0
  36. ai_parrot-0.17.2.dist-info/METADATA +472 -0
  37. ai_parrot-0.17.2.dist-info/RECORD +535 -0
  38. ai_parrot-0.17.2.dist-info/WHEEL +6 -0
  39. ai_parrot-0.17.2.dist-info/entry_points.txt +2 -0
  40. ai_parrot-0.17.2.dist-info/licenses/LICENSE +21 -0
  41. ai_parrot-0.17.2.dist-info/top_level.txt +6 -0
  42. crew-builder/.prettierrc +15 -0
  43. crew-builder/QUICKSTART.md +259 -0
  44. crew-builder/README.md +113 -0
  45. crew-builder/env.example +17 -0
  46. crew-builder/jsconfig.json +14 -0
  47. crew-builder/package-lock.json +4182 -0
  48. crew-builder/package.json +37 -0
  49. crew-builder/scripts/postinstall/apply-patches.mjs +260 -0
  50. crew-builder/src/app.css +62 -0
  51. crew-builder/src/app.d.ts +13 -0
  52. crew-builder/src/app.html +12 -0
  53. crew-builder/src/components/LoadingSpinner.svelte +64 -0
  54. crew-builder/src/components/ThemeSwitcher.svelte +149 -0
  55. crew-builder/src/components/index.js +9 -0
  56. crew-builder/src/lib/api/bots.ts +60 -0
  57. crew-builder/src/lib/api/chat.ts +80 -0
  58. crew-builder/src/lib/api/client.ts +56 -0
  59. crew-builder/src/lib/api/crew/crew.ts +136 -0
  60. crew-builder/src/lib/api/index.ts +5 -0
  61. crew-builder/src/lib/api/o365/auth.ts +65 -0
  62. crew-builder/src/lib/auth/auth.ts +54 -0
  63. crew-builder/src/lib/components/AgentNode.svelte +43 -0
  64. crew-builder/src/lib/components/BotCard.svelte +33 -0
  65. crew-builder/src/lib/components/ChatBubble.svelte +67 -0
  66. crew-builder/src/lib/components/ConfigPanel.svelte +278 -0
  67. crew-builder/src/lib/components/JsonTreeNode.svelte +76 -0
  68. crew-builder/src/lib/components/JsonViewer.svelte +24 -0
  69. crew-builder/src/lib/components/MarkdownEditor.svelte +48 -0
  70. crew-builder/src/lib/components/ThemeToggle.svelte +36 -0
  71. crew-builder/src/lib/components/Toast.svelte +67 -0
  72. crew-builder/src/lib/components/Toolbar.svelte +157 -0
  73. crew-builder/src/lib/components/index.ts +10 -0
  74. crew-builder/src/lib/config.ts +8 -0
  75. crew-builder/src/lib/stores/auth.svelte.ts +228 -0
  76. crew-builder/src/lib/stores/crewStore.ts +369 -0
  77. crew-builder/src/lib/stores/theme.svelte.js +145 -0
  78. crew-builder/src/lib/stores/toast.svelte.ts +69 -0
  79. crew-builder/src/lib/utils/conversation.ts +39 -0
  80. crew-builder/src/lib/utils/markdown.ts +122 -0
  81. crew-builder/src/lib/utils/talkHistory.ts +47 -0
  82. crew-builder/src/routes/+layout.svelte +20 -0
  83. crew-builder/src/routes/+page.svelte +539 -0
  84. crew-builder/src/routes/agents/+page.svelte +247 -0
  85. crew-builder/src/routes/agents/[agentId]/+page.svelte +288 -0
  86. crew-builder/src/routes/agents/[agentId]/+page.ts +7 -0
  87. crew-builder/src/routes/builder/+page.svelte +204 -0
  88. crew-builder/src/routes/crew/ask/+page.svelte +1052 -0
  89. crew-builder/src/routes/crew/ask/+page.ts +1 -0
  90. crew-builder/src/routes/integrations/o365/+page.svelte +304 -0
  91. crew-builder/src/routes/login/+page.svelte +197 -0
  92. crew-builder/src/routes/talk/[agentId]/+page.svelte +487 -0
  93. crew-builder/src/routes/talk/[agentId]/+page.ts +7 -0
  94. crew-builder/static/README.md +1 -0
  95. crew-builder/svelte.config.js +11 -0
  96. crew-builder/tailwind.config.ts +53 -0
  97. crew-builder/tsconfig.json +3 -0
  98. crew-builder/vite.config.ts +10 -0
  99. mcp_servers/calculator_server.py +309 -0
  100. parrot/__init__.py +27 -0
  101. parrot/__pycache__/__init__.cpython-310.pyc +0 -0
  102. parrot/__pycache__/version.cpython-310.pyc +0 -0
  103. parrot/_version.py +34 -0
  104. parrot/a2a/__init__.py +48 -0
  105. parrot/a2a/client.py +658 -0
  106. parrot/a2a/discovery.py +89 -0
  107. parrot/a2a/mixin.py +257 -0
  108. parrot/a2a/models.py +376 -0
  109. parrot/a2a/server.py +770 -0
  110. parrot/agents/__init__.py +29 -0
  111. parrot/bots/__init__.py +12 -0
  112. parrot/bots/a2a_agent.py +19 -0
  113. parrot/bots/abstract.py +3139 -0
  114. parrot/bots/agent.py +1129 -0
  115. parrot/bots/basic.py +9 -0
  116. parrot/bots/chatbot.py +669 -0
  117. parrot/bots/data.py +1618 -0
  118. parrot/bots/database/__init__.py +5 -0
  119. parrot/bots/database/abstract.py +3071 -0
  120. parrot/bots/database/cache.py +286 -0
  121. parrot/bots/database/models.py +468 -0
  122. parrot/bots/database/prompts.py +154 -0
  123. parrot/bots/database/retries.py +98 -0
  124. parrot/bots/database/router.py +269 -0
  125. parrot/bots/database/sql.py +41 -0
  126. parrot/bots/db/__init__.py +6 -0
  127. parrot/bots/db/abstract.py +556 -0
  128. parrot/bots/db/bigquery.py +602 -0
  129. parrot/bots/db/cache.py +85 -0
  130. parrot/bots/db/documentdb.py +668 -0
  131. parrot/bots/db/elastic.py +1014 -0
  132. parrot/bots/db/influx.py +898 -0
  133. parrot/bots/db/mock.py +96 -0
  134. parrot/bots/db/multi.py +783 -0
  135. parrot/bots/db/prompts.py +185 -0
  136. parrot/bots/db/sql.py +1255 -0
  137. parrot/bots/db/tools.py +212 -0
  138. parrot/bots/document.py +680 -0
  139. parrot/bots/hrbot.py +15 -0
  140. parrot/bots/kb.py +170 -0
  141. parrot/bots/mcp.py +36 -0
  142. parrot/bots/orchestration/README.md +463 -0
  143. parrot/bots/orchestration/__init__.py +1 -0
  144. parrot/bots/orchestration/agent.py +155 -0
  145. parrot/bots/orchestration/crew.py +3330 -0
  146. parrot/bots/orchestration/fsm.py +1179 -0
  147. parrot/bots/orchestration/hr.py +434 -0
  148. parrot/bots/orchestration/storage/__init__.py +4 -0
  149. parrot/bots/orchestration/storage/memory.py +100 -0
  150. parrot/bots/orchestration/storage/mixin.py +119 -0
  151. parrot/bots/orchestration/verify.py +202 -0
  152. parrot/bots/product.py +204 -0
  153. parrot/bots/prompts/__init__.py +96 -0
  154. parrot/bots/prompts/agents.py +155 -0
  155. parrot/bots/prompts/data.py +216 -0
  156. parrot/bots/prompts/output_generation.py +8 -0
  157. parrot/bots/scraper/__init__.py +3 -0
  158. parrot/bots/scraper/models.py +122 -0
  159. parrot/bots/scraper/scraper.py +1173 -0
  160. parrot/bots/scraper/templates.py +115 -0
  161. parrot/bots/stores/__init__.py +5 -0
  162. parrot/bots/stores/local.py +172 -0
  163. parrot/bots/webdev.py +81 -0
  164. parrot/cli.py +17 -0
  165. parrot/clients/__init__.py +16 -0
  166. parrot/clients/base.py +1491 -0
  167. parrot/clients/claude.py +1191 -0
  168. parrot/clients/factory.py +129 -0
  169. parrot/clients/google.py +4567 -0
  170. parrot/clients/gpt.py +1975 -0
  171. parrot/clients/grok.py +432 -0
  172. parrot/clients/groq.py +986 -0
  173. parrot/clients/hf.py +582 -0
  174. parrot/clients/models.py +18 -0
  175. parrot/conf.py +395 -0
  176. parrot/embeddings/__init__.py +9 -0
  177. parrot/embeddings/base.py +157 -0
  178. parrot/embeddings/google.py +98 -0
  179. parrot/embeddings/huggingface.py +74 -0
  180. parrot/embeddings/openai.py +84 -0
  181. parrot/embeddings/processor.py +88 -0
  182. parrot/exceptions.c +13868 -0
  183. parrot/exceptions.cpython-310-x86_64-linux-gnu.so +0 -0
  184. parrot/exceptions.pxd +22 -0
  185. parrot/exceptions.pxi +15 -0
  186. parrot/exceptions.pyx +44 -0
  187. parrot/generators/__init__.py +29 -0
  188. parrot/generators/base.py +200 -0
  189. parrot/generators/html.py +293 -0
  190. parrot/generators/react.py +205 -0
  191. parrot/generators/streamlit.py +203 -0
  192. parrot/generators/template.py +105 -0
  193. parrot/handlers/__init__.py +4 -0
  194. parrot/handlers/agent.py +861 -0
  195. parrot/handlers/agents/__init__.py +1 -0
  196. parrot/handlers/agents/abstract.py +900 -0
  197. parrot/handlers/bots.py +338 -0
  198. parrot/handlers/chat.py +915 -0
  199. parrot/handlers/creation.sql +192 -0
  200. parrot/handlers/crew/ARCHITECTURE.md +362 -0
  201. parrot/handlers/crew/README_BOTMANAGER_PERSISTENCE.md +303 -0
  202. parrot/handlers/crew/README_REDIS_PERSISTENCE.md +366 -0
  203. parrot/handlers/crew/__init__.py +0 -0
  204. parrot/handlers/crew/handler.py +801 -0
  205. parrot/handlers/crew/models.py +229 -0
  206. parrot/handlers/crew/redis_persistence.py +523 -0
  207. parrot/handlers/jobs/__init__.py +10 -0
  208. parrot/handlers/jobs/job.py +384 -0
  209. parrot/handlers/jobs/mixin.py +627 -0
  210. parrot/handlers/jobs/models.py +115 -0
  211. parrot/handlers/jobs/worker.py +31 -0
  212. parrot/handlers/models.py +596 -0
  213. parrot/handlers/o365_auth.py +105 -0
  214. parrot/handlers/stream.py +337 -0
  215. parrot/interfaces/__init__.py +6 -0
  216. parrot/interfaces/aws.py +143 -0
  217. parrot/interfaces/credentials.py +113 -0
  218. parrot/interfaces/database.py +27 -0
  219. parrot/interfaces/google.py +1123 -0
  220. parrot/interfaces/hierarchy.py +1227 -0
  221. parrot/interfaces/http.py +651 -0
  222. parrot/interfaces/images/__init__.py +0 -0
  223. parrot/interfaces/images/plugins/__init__.py +24 -0
  224. parrot/interfaces/images/plugins/abstract.py +58 -0
  225. parrot/interfaces/images/plugins/analisys.py +148 -0
  226. parrot/interfaces/images/plugins/classify.py +150 -0
  227. parrot/interfaces/images/plugins/classifybase.py +182 -0
  228. parrot/interfaces/images/plugins/detect.py +150 -0
  229. parrot/interfaces/images/plugins/exif.py +1103 -0
  230. parrot/interfaces/images/plugins/hash.py +52 -0
  231. parrot/interfaces/images/plugins/vision.py +104 -0
  232. parrot/interfaces/images/plugins/yolo.py +66 -0
  233. parrot/interfaces/images/plugins/zerodetect.py +197 -0
  234. parrot/interfaces/o365.py +978 -0
  235. parrot/interfaces/onedrive.py +822 -0
  236. parrot/interfaces/sharepoint.py +1435 -0
  237. parrot/interfaces/soap.py +257 -0
  238. parrot/loaders/__init__.py +8 -0
  239. parrot/loaders/abstract.py +1131 -0
  240. parrot/loaders/audio.py +199 -0
  241. parrot/loaders/basepdf.py +53 -0
  242. parrot/loaders/basevideo.py +1568 -0
  243. parrot/loaders/csv.py +409 -0
  244. parrot/loaders/docx.py +116 -0
  245. parrot/loaders/epubloader.py +316 -0
  246. parrot/loaders/excel.py +199 -0
  247. parrot/loaders/factory.py +55 -0
  248. parrot/loaders/files/__init__.py +0 -0
  249. parrot/loaders/files/abstract.py +39 -0
  250. parrot/loaders/files/html.py +26 -0
  251. parrot/loaders/files/text.py +63 -0
  252. parrot/loaders/html.py +152 -0
  253. parrot/loaders/markdown.py +442 -0
  254. parrot/loaders/pdf.py +373 -0
  255. parrot/loaders/pdfmark.py +320 -0
  256. parrot/loaders/pdftables.py +506 -0
  257. parrot/loaders/ppt.py +476 -0
  258. parrot/loaders/qa.py +63 -0
  259. parrot/loaders/splitters/__init__.py +10 -0
  260. parrot/loaders/splitters/base.py +138 -0
  261. parrot/loaders/splitters/md.py +228 -0
  262. parrot/loaders/splitters/token.py +143 -0
  263. parrot/loaders/txt.py +26 -0
  264. parrot/loaders/video.py +89 -0
  265. parrot/loaders/videolocal.py +218 -0
  266. parrot/loaders/videounderstanding.py +377 -0
  267. parrot/loaders/vimeo.py +167 -0
  268. parrot/loaders/web.py +599 -0
  269. parrot/loaders/youtube.py +504 -0
  270. parrot/manager/__init__.py +5 -0
  271. parrot/manager/manager.py +1030 -0
  272. parrot/mcp/__init__.py +28 -0
  273. parrot/mcp/adapter.py +105 -0
  274. parrot/mcp/cli.py +174 -0
  275. parrot/mcp/client.py +119 -0
  276. parrot/mcp/config.py +75 -0
  277. parrot/mcp/integration.py +842 -0
  278. parrot/mcp/oauth.py +933 -0
  279. parrot/mcp/server.py +225 -0
  280. parrot/mcp/transports/__init__.py +3 -0
  281. parrot/mcp/transports/base.py +279 -0
  282. parrot/mcp/transports/grpc_session.py +163 -0
  283. parrot/mcp/transports/http.py +312 -0
  284. parrot/mcp/transports/mcp.proto +108 -0
  285. parrot/mcp/transports/quic.py +1082 -0
  286. parrot/mcp/transports/sse.py +330 -0
  287. parrot/mcp/transports/stdio.py +309 -0
  288. parrot/mcp/transports/unix.py +395 -0
  289. parrot/mcp/transports/websocket.py +547 -0
  290. parrot/memory/__init__.py +16 -0
  291. parrot/memory/abstract.py +209 -0
  292. parrot/memory/agent.py +32 -0
  293. parrot/memory/cache.py +175 -0
  294. parrot/memory/core.py +555 -0
  295. parrot/memory/file.py +153 -0
  296. parrot/memory/mem.py +131 -0
  297. parrot/memory/redis.py +613 -0
  298. parrot/models/__init__.py +46 -0
  299. parrot/models/basic.py +118 -0
  300. parrot/models/compliance.py +208 -0
  301. parrot/models/crew.py +395 -0
  302. parrot/models/detections.py +654 -0
  303. parrot/models/generation.py +85 -0
  304. parrot/models/google.py +223 -0
  305. parrot/models/groq.py +23 -0
  306. parrot/models/openai.py +30 -0
  307. parrot/models/outputs.py +285 -0
  308. parrot/models/responses.py +938 -0
  309. parrot/notifications/__init__.py +743 -0
  310. parrot/openapi/__init__.py +3 -0
  311. parrot/openapi/components.yaml +641 -0
  312. parrot/openapi/config.py +322 -0
  313. parrot/outputs/__init__.py +32 -0
  314. parrot/outputs/formats/__init__.py +108 -0
  315. parrot/outputs/formats/altair.py +359 -0
  316. parrot/outputs/formats/application.py +122 -0
  317. parrot/outputs/formats/base.py +351 -0
  318. parrot/outputs/formats/bokeh.py +356 -0
  319. parrot/outputs/formats/card.py +424 -0
  320. parrot/outputs/formats/chart.py +436 -0
  321. parrot/outputs/formats/d3.py +255 -0
  322. parrot/outputs/formats/echarts.py +310 -0
  323. parrot/outputs/formats/generators/__init__.py +0 -0
  324. parrot/outputs/formats/generators/abstract.py +61 -0
  325. parrot/outputs/formats/generators/panel.py +145 -0
  326. parrot/outputs/formats/generators/streamlit.py +86 -0
  327. parrot/outputs/formats/generators/terminal.py +63 -0
  328. parrot/outputs/formats/holoviews.py +310 -0
  329. parrot/outputs/formats/html.py +147 -0
  330. parrot/outputs/formats/jinja2.py +46 -0
  331. parrot/outputs/formats/json.py +87 -0
  332. parrot/outputs/formats/map.py +933 -0
  333. parrot/outputs/formats/markdown.py +172 -0
  334. parrot/outputs/formats/matplotlib.py +237 -0
  335. parrot/outputs/formats/mixins/__init__.py +0 -0
  336. parrot/outputs/formats/mixins/emaps.py +855 -0
  337. parrot/outputs/formats/plotly.py +341 -0
  338. parrot/outputs/formats/seaborn.py +310 -0
  339. parrot/outputs/formats/table.py +397 -0
  340. parrot/outputs/formats/template_report.py +138 -0
  341. parrot/outputs/formats/yaml.py +125 -0
  342. parrot/outputs/formatter.py +152 -0
  343. parrot/outputs/templates/__init__.py +95 -0
  344. parrot/pipelines/__init__.py +0 -0
  345. parrot/pipelines/abstract.py +210 -0
  346. parrot/pipelines/detector.py +124 -0
  347. parrot/pipelines/models.py +90 -0
  348. parrot/pipelines/planogram.py +3002 -0
  349. parrot/pipelines/table.sql +97 -0
  350. parrot/plugins/__init__.py +106 -0
  351. parrot/plugins/importer.py +80 -0
  352. parrot/py.typed +0 -0
  353. parrot/registry/__init__.py +18 -0
  354. parrot/registry/registry.py +594 -0
  355. parrot/scheduler/__init__.py +1189 -0
  356. parrot/scheduler/models.py +60 -0
  357. parrot/security/__init__.py +16 -0
  358. parrot/security/prompt_injection.py +268 -0
  359. parrot/security/security_events.sql +25 -0
  360. parrot/services/__init__.py +1 -0
  361. parrot/services/mcp/__init__.py +8 -0
  362. parrot/services/mcp/config.py +13 -0
  363. parrot/services/mcp/server.py +295 -0
  364. parrot/services/o365_remote_auth.py +235 -0
  365. parrot/stores/__init__.py +7 -0
  366. parrot/stores/abstract.py +352 -0
  367. parrot/stores/arango.py +1090 -0
  368. parrot/stores/bigquery.py +1377 -0
  369. parrot/stores/cache.py +106 -0
  370. parrot/stores/empty.py +10 -0
  371. parrot/stores/faiss_store.py +1157 -0
  372. parrot/stores/kb/__init__.py +9 -0
  373. parrot/stores/kb/abstract.py +68 -0
  374. parrot/stores/kb/cache.py +165 -0
  375. parrot/stores/kb/doc.py +325 -0
  376. parrot/stores/kb/hierarchy.py +346 -0
  377. parrot/stores/kb/local.py +457 -0
  378. parrot/stores/kb/prompt.py +28 -0
  379. parrot/stores/kb/redis.py +659 -0
  380. parrot/stores/kb/store.py +115 -0
  381. parrot/stores/kb/user.py +374 -0
  382. parrot/stores/models.py +59 -0
  383. parrot/stores/pgvector.py +3 -0
  384. parrot/stores/postgres.py +2853 -0
  385. parrot/stores/utils/__init__.py +0 -0
  386. parrot/stores/utils/chunking.py +197 -0
  387. parrot/telemetry/__init__.py +3 -0
  388. parrot/telemetry/mixin.py +111 -0
  389. parrot/template/__init__.py +3 -0
  390. parrot/template/engine.py +259 -0
  391. parrot/tools/__init__.py +23 -0
  392. parrot/tools/abstract.py +644 -0
  393. parrot/tools/agent.py +363 -0
  394. parrot/tools/arangodbsearch.py +537 -0
  395. parrot/tools/arxiv_tool.py +188 -0
  396. parrot/tools/calculator/__init__.py +3 -0
  397. parrot/tools/calculator/operations/__init__.py +38 -0
  398. parrot/tools/calculator/operations/calculus.py +80 -0
  399. parrot/tools/calculator/operations/statistics.py +76 -0
  400. parrot/tools/calculator/tool.py +150 -0
  401. parrot/tools/cloudwatch.py +988 -0
  402. parrot/tools/codeinterpreter/__init__.py +127 -0
  403. parrot/tools/codeinterpreter/executor.py +371 -0
  404. parrot/tools/codeinterpreter/internals.py +473 -0
  405. parrot/tools/codeinterpreter/models.py +643 -0
  406. parrot/tools/codeinterpreter/prompts.py +224 -0
  407. parrot/tools/codeinterpreter/tool.py +664 -0
  408. parrot/tools/company_info/__init__.py +6 -0
  409. parrot/tools/company_info/tool.py +1138 -0
  410. parrot/tools/correlationanalysis.py +437 -0
  411. parrot/tools/database/abstract.py +286 -0
  412. parrot/tools/database/bq.py +115 -0
  413. parrot/tools/database/cache.py +284 -0
  414. parrot/tools/database/models.py +95 -0
  415. parrot/tools/database/pg.py +343 -0
  416. parrot/tools/databasequery.py +1159 -0
  417. parrot/tools/db.py +1800 -0
  418. parrot/tools/ddgo.py +370 -0
  419. parrot/tools/decorators.py +271 -0
  420. parrot/tools/dftohtml.py +282 -0
  421. parrot/tools/document.py +549 -0
  422. parrot/tools/ecs.py +819 -0
  423. parrot/tools/edareport.py +368 -0
  424. parrot/tools/elasticsearch.py +1049 -0
  425. parrot/tools/employees.py +462 -0
  426. parrot/tools/epson/__init__.py +96 -0
  427. parrot/tools/excel.py +683 -0
  428. parrot/tools/file/__init__.py +13 -0
  429. parrot/tools/file/abstract.py +76 -0
  430. parrot/tools/file/gcs.py +378 -0
  431. parrot/tools/file/local.py +284 -0
  432. parrot/tools/file/s3.py +511 -0
  433. parrot/tools/file/tmp.py +309 -0
  434. parrot/tools/file/tool.py +501 -0
  435. parrot/tools/file_reader.py +129 -0
  436. parrot/tools/flowtask/__init__.py +19 -0
  437. parrot/tools/flowtask/tool.py +761 -0
  438. parrot/tools/gittoolkit.py +508 -0
  439. parrot/tools/google/__init__.py +18 -0
  440. parrot/tools/google/base.py +169 -0
  441. parrot/tools/google/tools.py +1251 -0
  442. parrot/tools/googlelocation.py +5 -0
  443. parrot/tools/googleroutes.py +5 -0
  444. parrot/tools/googlesearch.py +5 -0
  445. parrot/tools/googlesitesearch.py +5 -0
  446. parrot/tools/googlevoice.py +2 -0
  447. parrot/tools/gvoice.py +695 -0
  448. parrot/tools/ibisworld/README.md +225 -0
  449. parrot/tools/ibisworld/__init__.py +11 -0
  450. parrot/tools/ibisworld/tool.py +366 -0
  451. parrot/tools/jiratoolkit.py +1718 -0
  452. parrot/tools/manager.py +1098 -0
  453. parrot/tools/math.py +152 -0
  454. parrot/tools/metadata.py +476 -0
  455. parrot/tools/msteams.py +1621 -0
  456. parrot/tools/msword.py +635 -0
  457. parrot/tools/multidb.py +580 -0
  458. parrot/tools/multistoresearch.py +369 -0
  459. parrot/tools/networkninja.py +167 -0
  460. parrot/tools/nextstop/__init__.py +4 -0
  461. parrot/tools/nextstop/base.py +286 -0
  462. parrot/tools/nextstop/employee.py +733 -0
  463. parrot/tools/nextstop/store.py +462 -0
  464. parrot/tools/notification.py +435 -0
  465. parrot/tools/o365/__init__.py +42 -0
  466. parrot/tools/o365/base.py +295 -0
  467. parrot/tools/o365/bundle.py +522 -0
  468. parrot/tools/o365/events.py +554 -0
  469. parrot/tools/o365/mail.py +992 -0
  470. parrot/tools/o365/onedrive.py +497 -0
  471. parrot/tools/o365/sharepoint.py +641 -0
  472. parrot/tools/openapi_toolkit.py +904 -0
  473. parrot/tools/openweather.py +527 -0
  474. parrot/tools/pdfprint.py +1001 -0
  475. parrot/tools/powerbi.py +518 -0
  476. parrot/tools/powerpoint.py +1113 -0
  477. parrot/tools/pricestool.py +146 -0
  478. parrot/tools/products/__init__.py +246 -0
  479. parrot/tools/prophet_tool.py +171 -0
  480. parrot/tools/pythonpandas.py +630 -0
  481. parrot/tools/pythonrepl.py +910 -0
  482. parrot/tools/qsource.py +436 -0
  483. parrot/tools/querytoolkit.py +395 -0
  484. parrot/tools/quickeda.py +827 -0
  485. parrot/tools/resttool.py +553 -0
  486. parrot/tools/retail/__init__.py +0 -0
  487. parrot/tools/retail/bby.py +528 -0
  488. parrot/tools/sandboxtool.py +703 -0
  489. parrot/tools/sassie/__init__.py +352 -0
  490. parrot/tools/scraping/__init__.py +7 -0
  491. parrot/tools/scraping/docs/select.md +466 -0
  492. parrot/tools/scraping/documentation.md +1278 -0
  493. parrot/tools/scraping/driver.py +436 -0
  494. parrot/tools/scraping/models.py +576 -0
  495. parrot/tools/scraping/options.py +85 -0
  496. parrot/tools/scraping/orchestrator.py +517 -0
  497. parrot/tools/scraping/readme.md +740 -0
  498. parrot/tools/scraping/tool.py +3115 -0
  499. parrot/tools/seasonaldetection.py +642 -0
  500. parrot/tools/shell_tool/__init__.py +5 -0
  501. parrot/tools/shell_tool/actions.py +408 -0
  502. parrot/tools/shell_tool/engine.py +155 -0
  503. parrot/tools/shell_tool/models.py +322 -0
  504. parrot/tools/shell_tool/tool.py +442 -0
  505. parrot/tools/site_search.py +214 -0
  506. parrot/tools/textfile.py +418 -0
  507. parrot/tools/think.py +378 -0
  508. parrot/tools/toolkit.py +298 -0
  509. parrot/tools/webapp_tool.py +187 -0
  510. parrot/tools/whatif.py +1279 -0
  511. parrot/tools/workday/MULTI_WSDL_EXAMPLE.md +249 -0
  512. parrot/tools/workday/__init__.py +6 -0
  513. parrot/tools/workday/models.py +1389 -0
  514. parrot/tools/workday/tool.py +1293 -0
  515. parrot/tools/yfinance_tool.py +306 -0
  516. parrot/tools/zipcode.py +217 -0
  517. parrot/utils/__init__.py +2 -0
  518. parrot/utils/helpers.py +73 -0
  519. parrot/utils/parsers/__init__.py +5 -0
  520. parrot/utils/parsers/toml.c +12078 -0
  521. parrot/utils/parsers/toml.cpython-310-x86_64-linux-gnu.so +0 -0
  522. parrot/utils/parsers/toml.pyx +21 -0
  523. parrot/utils/toml.py +11 -0
  524. parrot/utils/types.cpp +20936 -0
  525. parrot/utils/types.cpython-310-x86_64-linux-gnu.so +0 -0
  526. parrot/utils/types.pyx +213 -0
  527. parrot/utils/uv.py +11 -0
  528. parrot/version.py +10 -0
  529. parrot/yaml-rs/Cargo.lock +350 -0
  530. parrot/yaml-rs/Cargo.toml +19 -0
  531. parrot/yaml-rs/pyproject.toml +19 -0
  532. parrot/yaml-rs/python/yaml_rs/__init__.py +81 -0
  533. parrot/yaml-rs/src/lib.rs +222 -0
  534. requirements/docker-compose.yml +24 -0
  535. requirements/requirements-dev.txt +21 -0
parrot/models/crew.py ADDED
@@ -0,0 +1,395 @@
1
+ """
2
+ Data models for Agent Crew execution results.
3
+
4
+ Provides standardized output format for all crew execution modes.
5
+ """
6
+ from __future__ import annotations
7
+ from typing import List, Dict, Any, Optional, Literal, Union, Protocol
8
+ from datetime import datetime
9
+ import uuid
10
+ from dataclasses import dataclass, field
11
+ import numpy as np
12
+ from datamodel.parsers.json import json_encoder # pylint: disable=E0611 # noqa
13
+ from .responses import AIMessage, AgentResponse
14
+
15
+
16
+ ResponseType = Union[AIMessage, AgentResponse, Any]
17
+
18
+
19
+ @dataclass
20
+ class AgentExecutionInfo:
21
+ """Information about an agent's execution in a crew workflow."""
22
+ agent_id: str
23
+ """Unique identifier for the agent"""
24
+ agent_name: str
25
+ """Human-readable name of the agent"""
26
+ provider: Optional[str] = None
27
+ """LLM provider used (e.g., 'openai', 'anthropic', 'google')"""
28
+ model: Optional[str] = None
29
+ """Model name used (e.g., 'gpt-4', 'claude-3-opus')"""
30
+ execution_time: float = 0.0
31
+ """Time taken to execute this agent (seconds)"""
32
+ tool_calls: List[Dict[str, Any]] = field(default_factory=list)
33
+ """List of tool calls made by this agent"""
34
+ status: Literal['completed', 'failed', 'pending', 'running'] = 'pending'
35
+ """Execution status of the agent"""
36
+ error: Optional[str] = None
37
+ """Error message if agent failed"""
38
+ client: Optional[str] = None
39
+ """Concrete client class name backing the agent (if available)"""
40
+
41
+ def to_dict(self) -> Dict[str, Any]:
42
+ """Serialise the execution info to a plain dictionary."""
43
+
44
+ return {
45
+ 'agent_id': self.agent_id,
46
+ 'agent_name': self.agent_name,
47
+ 'llm_provider': self.provider,
48
+ 'model': self.model,
49
+ 'execution_time': self.execution_time,
50
+ 'tool_calls': self.tool_calls,
51
+ 'status': self.status,
52
+ 'error': self.error,
53
+ 'client': self.client,
54
+ }
55
+
56
+
57
+ @dataclass
58
+ class CrewResult:
59
+ """
60
+ Standardized result from crew execution.
61
+
62
+ This dataclass provides a consistent interface across all crew execution modes
63
+ (sequential, parallel, flow, FSM) and is compatible with OutputFormatter.
64
+
65
+ Attributes:
66
+ output: The final output text (alias for content)
67
+ content: The final output text (primary field for OutputFormatter compatibility)
68
+ response: List of raw response objects (AIMessage/AgentResponse) from each agent
69
+ results: List of all agent outputs in execution order
70
+ agent_ids: List of agent IDs that executed
71
+ agents: Detailed information about each agent's execution
72
+ execution_log: Detailed log of execution steps
73
+ total_time: Total execution time in seconds
74
+ status: Overall execution status
75
+ errors: Dictionary of errors by agent_id (if any)
76
+ metadata: Additional metadata about the execution
77
+ """
78
+
79
+ output: str
80
+ response: Dict[str, ResponseType] = field(default_factory=dict)
81
+ results: List[Any] = field(default_factory=list)
82
+ agent_ids: List[str] = field(default_factory=list)
83
+ agents: List[AgentExecutionInfo] = field(default_factory=list)
84
+ """Detailed information about each agent's execution"""
85
+ execution_log: List[Dict[str, Any]] = field(default_factory=list)
86
+ """Detailed log of execution steps"""
87
+ total_time: float = 0.0
88
+ status: Literal['completed', 'partial', 'failed'] = 'completed'
89
+ """
90
+ Overall execution status:
91
+ - completed: All agents succeeded
92
+ - partial: Some agents succeeded, some failed
93
+ - failed: All agents failed or critical error
94
+ """
95
+ errors: Dict[str, str] = field(default_factory=dict)
96
+ metadata: Dict[str, Any] = field(default_factory=dict)
97
+ """Additional metadata about the execution (mode, iterations, etc.)"""
98
+
99
+ def __str__(self) -> str:
100
+ """String representation showing the final output."""
101
+ return str(self.content)
102
+
103
+ def __repr__(self) -> str:
104
+ """Detailed representation for debugging."""
105
+ return f"CrewResult(status={self.status}, agents={len(self.agents)}, time={self.total_time:.2f}s)"
106
+
107
+ @property
108
+ def content(self) -> Optional[Any]:
109
+ """Alias for the final output content."""
110
+
111
+ return self.output
112
+
113
+ @property
114
+ def final_result(self) -> Optional[Any]:
115
+ """Compatibility alias for previous API."""
116
+
117
+ return self.output
118
+
119
+ @property
120
+ def success(self) -> bool:
121
+ """Boolean success flag for backward compatibility."""
122
+
123
+ return self.status == "completed"
124
+
125
+ @property
126
+ def agent_results(self) -> Dict[str, Any]:
127
+ """Map agent IDs to their outputs."""
128
+
129
+ return {
130
+ agent_id: self.results[idx]
131
+ for idx, agent_id in enumerate(self.agent_ids)
132
+ if idx < len(self.results)
133
+ }
134
+
135
+ @property
136
+ def completed(self) -> List[str]:
137
+ """Return agent IDs with successful execution."""
138
+ completed_agents: List[str] = []
139
+
140
+ for agent in self.agents:
141
+ if isinstance(agent, AgentExecutionInfo):
142
+ if agent.status == "completed" and agent.agent_id:
143
+ completed_agents.append(agent.agent_id)
144
+ elif isinstance(agent, dict):
145
+ agent_id = agent.get("agent_id")
146
+ status = _normalise_agent_status(agent.get("status", ""))
147
+
148
+ if agent_id and status == "completed":
149
+ completed_agents.append(agent_id)
150
+
151
+ return completed_agents
152
+
153
+ @property
154
+ def failed(self) -> List[str]:
155
+ """Return agent IDs with failed execution."""
156
+ failed_agents: List[str] = []
157
+
158
+ for agent in self.agents:
159
+ if isinstance(agent, AgentExecutionInfo):
160
+ if agent.status == "failed" and agent.agent_id:
161
+ failed_agents.append(agent.agent_id)
162
+ elif isinstance(agent, dict):
163
+ agent_id = agent.get("agent_id")
164
+ status = _normalise_agent_status(agent.get("status", ""))
165
+
166
+ if agent_id and status == "failed":
167
+ failed_agents.append(agent_id)
168
+
169
+ return failed_agents
170
+
171
+ @property
172
+ def total_execution_time(self) -> float:
173
+ """Compatibility alias for total execution time."""
174
+ return self.total_time
175
+
176
+ def __getitem__(self, item: str) -> Any:
177
+ """Dictionary-style access for backward compatibility."""
178
+
179
+ mapping = {
180
+ "final_result": self.output,
181
+ "output": self.output,
182
+ "content": self.content,
183
+ "results": self.agent_results,
184
+ "results_list": self.results,
185
+ "agent_results": self.agent_results,
186
+ "agent_ids": self.agent_ids,
187
+ "agents": [agent.to_dict() if isinstance(agent, AgentExecutionInfo) else agent for agent in self.agents],
188
+ "errors": self.errors,
189
+ "execution_log": self.execution_log,
190
+ "total_time": self.total_time,
191
+ "total_execution_time": self.total_time,
192
+ "success": self.success,
193
+ "status": self.status,
194
+ "response": self.response,
195
+ "completed": self.completed,
196
+ "failed": self.failed,
197
+ }
198
+
199
+ if item in mapping:
200
+ return mapping[item]
201
+
202
+ raise KeyError(item)
203
+
204
+
205
+ """Crew-related data models."""
206
+ def determine_run_status(
207
+ success_count: int,
208
+ failure_count: int,
209
+ ) -> Literal['completed', 'partial', 'failed']:
210
+ """Compute the overall status for a crew execution."""
211
+
212
+ if failure_count == 0:
213
+ return 'completed'
214
+
215
+ return 'failed' if success_count == 0 else 'partial'
216
+
217
+ def _serialise_tool_calls(tool_calls: Any) -> List[Any]:
218
+ """Normalise tool call structures for metadata output."""
219
+
220
+ if not tool_calls:
221
+ return []
222
+
223
+ serialised: List[Any] = []
224
+
225
+ for call in tool_calls:
226
+ if hasattr(call, "model_dump"):
227
+ serialised.append(call.model_dump())
228
+ elif hasattr(call, "dict"):
229
+ serialised.append(call.dict())
230
+ else:
231
+ serialised.append(call)
232
+
233
+ return serialised
234
+
235
+
236
+ def _get_llm_info(agent: Optional[Any]) -> Dict[str, Any]:
237
+ """Extract lightweight information about the agent LLM/client."""
238
+
239
+ if agent is None:
240
+ return {}
241
+
242
+ llm_info: Dict[str, Any] = {}
243
+
244
+ provider = getattr(agent, "use_llm", None) or getattr(agent, "provider", None)
245
+ if provider:
246
+ llm_info["provider"] = provider
247
+
248
+ if (client := getattr(agent, "llm", None) or getattr(agent, "_llm", None)):
249
+ if (model_name := getattr(client, "model", None) or getattr(client, "deployment_name", None)):
250
+ llm_info["model"] = model_name
251
+ llm_info.setdefault("client", client.__class__.__name__)
252
+
253
+ return llm_info
254
+
255
+ def _normalise_agent_status(
256
+ status: str,
257
+ ) -> Literal['completed', 'failed', 'pending', 'running']:
258
+ """Map legacy status strings to the AgentExecutionInfo status options."""
259
+
260
+ normalised = status.lower()
261
+ mapping = {
262
+ 'success': 'completed',
263
+ 'completed': 'completed',
264
+ 'error': 'failed',
265
+ 'failed': 'failed',
266
+ 'pending': 'pending',
267
+ 'running': 'running',
268
+ }
269
+
270
+ return mapping.get(normalised, 'pending')
271
+
272
+
273
+ def build_agent_metadata(
274
+ agent_id: str,
275
+ agent: Optional[Any],
276
+ response: Optional[ResponseType],
277
+ output: Optional[Any],
278
+ execution_time: float,
279
+ status: str,
280
+ error: Optional[str] = None,
281
+ ) -> AgentExecutionInfo:
282
+ """Create execution metadata for an agent run."""
283
+
284
+ model = None
285
+ provider = None
286
+ tool_calls: List[Any] = []
287
+
288
+ # Prefer structured response information when available
289
+ if isinstance(response, AgentResponse):
290
+ ai_message = response.response if isinstance(response.response, AIMessage) else None
291
+ model = getattr(response, 'model', None) or getattr(ai_message, 'model', None)
292
+ provider = getattr(response, 'provider', None) or getattr(ai_message, 'provider', None)
293
+ raw_tool_calls = (
294
+ getattr(response, 'tool_calls', None)
295
+ or getattr(ai_message, 'tool_calls', None)
296
+ or []
297
+ )
298
+ tool_calls = _serialise_tool_calls(raw_tool_calls)
299
+ if output is None:
300
+ output = response.output or getattr(ai_message, 'output', None)
301
+ elif isinstance(response, AIMessage):
302
+ model = getattr(response, 'model', None)
303
+ provider = getattr(response, 'provider', None)
304
+ tool_calls = _serialise_tool_calls(getattr(response, 'tool_calls', None))
305
+ if output is None:
306
+ output = getattr(response, 'output', None) or getattr(response, 'content', None)
307
+ elif response is not None:
308
+ model = getattr(response, 'model', None)
309
+ provider = getattr(response, 'provider', None)
310
+ tool_calls = _serialise_tool_calls(getattr(response, 'tool_calls', None))
311
+
312
+ llm_info = _get_llm_info(agent)
313
+ provider = provider or llm_info.get('provider')
314
+ model = model or llm_info.get('model')
315
+
316
+ return AgentExecutionInfo(
317
+ agent_id=agent_id,
318
+ agent_name=getattr(agent, 'name', agent_id) if agent else agent_id,
319
+ provider=provider,
320
+ model=model,
321
+ execution_time=execution_time,
322
+ tool_calls=tool_calls,
323
+ status=_normalise_agent_status(status),
324
+ error=error,
325
+ client=llm_info.get('client'),
326
+ )
327
+
328
+ @dataclass
329
+ class AgentResult:
330
+ """Captures a single agent execution with full context"""
331
+ agent_id: str
332
+ agent_name: str
333
+ task: str
334
+ result: Any
335
+ metadata: Dict[str, Any]
336
+ execution_time: float
337
+ timestamp: datetime = field(default_factory=datetime.utcnow)
338
+ parent_execution_id: Optional[str] = None # For tracking re-executions
339
+ execution_id: str = field(default_factory=lambda: str(uuid.uuid4()))
340
+
341
+ def to_text(self) -> str:
342
+ """Convert execution result to text for vectorization"""
343
+ from pandas import DataFrame # noqa F401
344
+
345
+ result_type = type(self.result).__name__
346
+
347
+ base_info = f"""Agent: {self.agent_name}
348
+ Task: {self.task}
349
+ Result Type: {result_type}
350
+ Execution Time: {self.execution_time}s
351
+ Timestamp: {self.timestamp.isoformat()}
352
+ """
353
+
354
+ if isinstance(self.result, DataFrame):
355
+ df = self.result
356
+ content = f"""
357
+ Shape: {df.shape[0]} rows × {df.shape[1]} columns
358
+ Columns: {', '.join(df.columns)}
359
+
360
+ Data Types:
361
+ {df.dtypes.to_string()}
362
+
363
+ Statistics:
364
+ {df.describe().to_string() if len(df) > 0 else 'No numerical data'}
365
+
366
+ Sample Data (first 10 rows):
367
+ {df.head(10).to_string()}
368
+ """
369
+ elif isinstance(self.result, dict):
370
+ content = f"""
371
+ Keys: {', '.join(self.result.keys())}
372
+ Content:
373
+ {json_encoder(self.result)}
374
+ """
375
+ elif isinstance(self.result, list):
376
+ content = f"""
377
+ Length: {len(self.result)} items
378
+ Item Types: {', '.join(set(type(item).__name__ for item in self.result[:100]))}
379
+ Sample Items:
380
+ {json_encoder(self.result[:10]) if len(self.result) > 0 else '[]'}
381
+ """
382
+ else:
383
+ content = f"""
384
+ Content:
385
+ {str(self.result)}
386
+ """
387
+
388
+ return base_info + content
389
+
390
+
391
+ class VectorStoreProtocol(Protocol):
392
+ """Protocol for vector store implementations"""
393
+ def encode(self, texts: List[str]) -> np.ndarray:
394
+ """Encode texts to embeddings"""
395
+ ...