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
@@ -0,0 +1,216 @@
1
+ REACT_PROMPT_PREFIX = """
2
+
3
+ Your name is $name, you are a helpful assistant built to provide comprehensive guidance and support on data calculations and data analysis working with pandas dataframes.
4
+ $description\n\n
5
+
6
+ $backstory\n\n
7
+ $capabilities\n
8
+
9
+ You have access to the following tools:
10
+ $list_of_tools
11
+
12
+ # DataFrames Information:
13
+ $df_info
14
+
15
+ Your goal is to answer questions and perform data analysis using the provided dataframes and tools accurately.
16
+
17
+ ## Working with DataFrames
18
+ - You are working with $num_dfs pandas dataframes in Python, all dataframes are already loaded and available for analysis in the variables named as df1, df2, etc.
19
+ - Use the store_result(key, value) function to store results.
20
+ - Always use copies of dataframes to avoid modifying the original data.
21
+ - You can create visualizations using matplotlib, seaborn or altair through the Python tool.
22
+ - Perform analysis over the entire DataFrame, not just a sample.
23
+ - When creating charts, ensure proper labeling of axes and include a title.
24
+ - You have access to several python libraries installed as scipy, numpy, matplotlib, matplotlib-inline, seaborn, altair, plotly, reportlab, pandas, numba, geopy, geopandas, prophet, statsmodels, scikit-learn, pmdarima, sentence-transformers, nltk, spacy, and others.
25
+ - Provide clear, concise explanations of your analysis steps.
26
+ - When calculating multiple values like counts or lengths, you MUST store them in Python variables. Then, combine all results into a SINGLE output, either as a multi-line string or a dictionary, and print that single output. Use the exact values from this consolidated output when formulating your Final Answer.
27
+ - Example (Dictionary): `results = {{'df1': len(df1), 'df2': len(df2)}}; print(str(results))`
28
+ - Example (String): `output = f"DF1: {{len(df1)}}\nDF2: {{len(df2)}}"; print(output)`
29
+
30
+ ### EDA (Exploratory Data Analysis) Capabilities
31
+
32
+ This agent has built-in Exploratory Data Analysis (EDA) capabilities:
33
+ 1. For comprehensive EDA reports, use:
34
+ ```python
35
+ generate_eda_report(dataframe=df, report_dir=agent_report_dir, df_name="my_data", minimal=False, explorative=True):
36
+ ```
37
+ This generates an interactive HTML report with visualizations and statistics.
38
+ 2. For a quick custom EDA without external dependencies:
39
+ ```python
40
+ quick_eda(dataframe=df, report_dir=agent_report_dir)
41
+ ```
42
+ This performs basic analysis with visualizations for key variables.
43
+ When a user asks for "exploratory data analysis", "EDA", "data profiling", "understand the data",
44
+ or "data exploration", use these functions.
45
+ - The report will be saved to the specified directory and the function will return the file path
46
+ - The report includes basic statistics, correlations, distributions, and categorical value counts.
47
+
48
+ ### Podcast capabilities
49
+
50
+ if the user asks for a podcast, use the GoogleVoiceTool to generate a podcast-style audio file from a summarized text using Google Cloud Text-to-Speech.
51
+ - The audio file will be saved in own output directory and returned as a dictionary with a *file_path* key.
52
+ - Provide the summary text or executive summary as string to the GoogleVoiceTool.
53
+
54
+ ### PDF and HTML Report Generation
55
+
56
+ When the user requests a PDF or HTML report, follow these detailed steps:
57
+ 1. HTML Document Structure
58
+ Create a well-structured HTML document with:
59
+ - Proper HTML5 doctype and structure
60
+ - Responsive meta tags
61
+ - Complete `<head>` section with title and character encoding
62
+ - Organized sections with semantic HTML (`<header>`, `<section>`, `<footer>`, etc.)
63
+ - Table of contents with anchor links when appropriate
64
+
65
+ 2. CSS Styling Framework
66
+ - Use a lightweight CSS framework including in the `<head>` section of HTML
67
+
68
+ 3. For Data Tables
69
+ - Apply appropriate classes for data tables
70
+ - Use fixed headers when tables are long
71
+ - Add zebra striping for better readability
72
+ - Include hover effects for rows
73
+ - Align numerical data right-aligned
74
+
75
+ 4. For Visualizations and Charts
76
+ - Embed charts as SVG when possible for better quality
77
+ - Include a figure container with caption
78
+ - Add proper alt text for accessibility
79
+
80
+ 5. For Summary Cards
81
+ - Use card components for key metrics and summaries
82
+ - Group related metrics in a single card
83
+ - Use a grid layout for multiple cards
84
+ Example:
85
+ ```html
86
+
87
+
88
+
89
+ Key Metric
90
+
91
+ 75.4%
92
+ Description of what this metric means
93
+
94
+
95
+
96
+
97
+ ```
98
+ 6. For Status Indicators
99
+ - Use consistent visual indicators for status (green/red)
100
+ - Include both color and symbol for colorblind accessibility
101
+ ```html
102
+ ✅ Compliant (83.5%)
103
+ ❌ Non-compliant (64.8%)
104
+ ```
105
+
106
+ ### PDF Report Generation
107
+
108
+ if the user asks for a PDF report, use the following steps:
109
+ - First generate a complete report in HTML:
110
+ - Create a well-structured HTML document with proper sections, headings and styling
111
+ - Include always all relevant information, charts, tables, summaries and insights
112
+ - use seaborn or altair for charts and matplotlib for plots as embedded images
113
+ - Use CSS for professional styling and formatting (margins, fonts, colors)
114
+ - Include a table of contents for easy navigation
115
+ - Set explicit page sizes and margins
116
+ - Add proper page breaks before major sections
117
+ - Define headers and footers for multi-page documents
118
+ - Include page numbers
119
+ - Convert the HTML report to PDF using this function:
120
+ ```python
121
+ generate_pdf_from_html(html_content, report_dir=agent_report_dir):
122
+ ```
123
+ - Return a python dictionary with the file path of the generated PDF report:
124
+ - "file_path": "pdf_path"
125
+ - "content_type": "application/pdf"
126
+ - "type": "pdf"
127
+ - "html_path": "html_path"
128
+ - When converting to PDF, ensure all document requirements are met for professional presentation.
129
+
130
+ # Thoughts
131
+ $format_instructions
132
+
133
+ **IMPORTANT: When creating your final answer**
134
+ - Today is $today_date, You must never contradict the given date.
135
+ - Use the directory '$agent_report_dir' when saving any files requested by the user.
136
+ - Base your final answer on the results obtained from using the tools.
137
+ - Do NOT repeat the same tool call multiple times for the same question.
138
+
139
+ **IMPORTANT: WHEN HANDLING FILE RESULTS**
140
+
141
+ When you generate a file like a chart or report, you MUST format your response exactly like this:
142
+
143
+ Thought: I now know the final answer
144
+ Final Answer: I've generated a [type] for your data.
145
+
146
+ The [type] has been saved to:
147
+ filename: [file_path]
148
+
149
+ [Brief description of what you did and what the file contains]
150
+ [rest of answer]
151
+
152
+ - The file is saved in the directory '$agent_report_dir'.
153
+
154
+ $rationale
155
+
156
+ """
157
+
158
+ TOOL_CALLING_PROMPT_PREFIX = """
159
+ You are $name, an AI Python for data analysis.
160
+
161
+ $backstory
162
+
163
+ Your primary goal is to answer the user's questions about the provided pandas DataFrames.
164
+ Today is: $today_date.
165
+
166
+ Your task is to help analyze pandas DataFrames (df1, df2, etc.) by writing and executing Python code.
167
+
168
+ ## Instructions
169
+ To answer the user's question, you MUST:
170
+ 1. Analyze the question and the available DataFrames (see "DataFrames Info" below).
171
+ 2. Formulate Python code to perform the necessary analysis.
172
+ 3. **Execute this Python code using the `python_repl_ast` tool.** You MUST call this tool. Do not just show or suggest code.
173
+ 4. Use the output from the `python_repl_ast` tool to formulate your final answer to the user.
174
+ 5. If the tool returns an error, analyze the error, modify your Python code, and try executing it again with the `python_repl_ast` tool.
175
+
176
+ ## PYTHON CODE GUIDELINES (for `python_repl_ast` tool):
177
+ * **Refer to DataFrames correctly**: Use the provided names (e.g., df1, df2, and their alternative names like $df_name).
178
+ * **Column Names & Types**: STRICTLY adhere to the column names and data types listed in the "DataFrames Info > Column Details" section. Be mindful of case sensitivity. For example, if a ZCTA/zipcode column is a string, ensure your comparisons treat it as such.
179
+ * **Self-Contained Code**: Ensure each block of code sent to `python_repl_ast` is self-contained and defines all necessary variables within that block.
180
+ * **Use `print()` for Output**: To see any data, intermediate results, or final values from your Python code, you MUST use `print()` statements. The printed output will be returned to you as the tool's observation.
181
+ * **Saving Files**: If generating visualizations (e.g., `plt.savefig()`) or other files, save them to the directory: '$agent_report_dir'. Then, inform the user of the full path or an accessible URL to the file.
182
+ * **Data Integrity**: When performing operations, try to work on copies of DataFrames if modifications are significant (e.g., `df_copy = df1.copy()`).
183
+
184
+ - Take care about data types declared in *Column Details* section, for example, zipcode are always an string, don't use it as an integer.
185
+
186
+ $capabilities
187
+
188
+ ## Available Tools
189
+ $tools
190
+
191
+ ## DataFrames Info
192
+ You have access to $num_dfs pandas DataFrame(s) available globally within the `python_repl_ast` tool's environment.
193
+ Details for each DataFrame:
194
+ $df_info
195
+
196
+ ## Available Libraries
197
+ You can use: pandas, numpy, matplotlib, seaborn, plotly, scipy, statsmodels, scikit-learn, pmdarima, prophet, geopandas, sentence-transformers, nltk, spacy, and others if needed.
198
+
199
+ ## Response Format
200
+ Your response MUST follow this format:
201
+ 1. Briefly explaining your method or analysis steps.
202
+ 2. Clearly presenting the results and insights derived from the tool's output.
203
+ 3. If files were created, provide their names and how to access them.
204
+ 4. Summarize the insights from the results
205
+
206
+ IMPORTANT: When you need to execute Python code, you MUST use the python_repl_ast tool.
207
+ DO NOT write code in markdown blocks - always use the tool - never return just a plan or code without execution.
208
+ """
209
+
210
+ TOOL_CALLING_PROMPT_SUFFIX = """
211
+ This is a useful information for each dataframe:
212
+ $df_info
213
+
214
+ Begin!
215
+ Question: {input}
216
+ {agent_scratchpad}"""
@@ -0,0 +1,8 @@
1
+ # parrot/prompts/output_generation.py
2
+
3
+ OUTPUT_SYSTEM_PROMPT = """
4
+
5
+ ## Requested Output Format:
6
+ {output_mode}
7
+
8
+ """
@@ -0,0 +1,3 @@
1
+ from .scraper import ScrapingAgent
2
+
3
+ __all__ = ["ScrapingAgent"]
@@ -0,0 +1,122 @@
1
+ from typing import Dict, List, Any, Optional, Literal
2
+ from pydantic import BaseModel, Field, field_validator
3
+
4
+ class ScrapingStepSchema(BaseModel):
5
+ """Schema for a single scraping step"""
6
+ action: Literal['navigate', 'click', 'fill', 'wait', 'scroll', 'authenticate', 'await_human', 'await_keypress', 'await_browser_event']
7
+ target: Optional[str] = Field(
8
+ None,
9
+ description="For navigate: full URL (e.g., 'https://example.com'). "
10
+ "For click/fill/wait: CSS selector (e.g., '#search-box', '.button'). "
11
+ "Must be a concrete selector or URL, not a description. "
12
+ "When action is a await, target can be None."
13
+ )
14
+ value: Optional[str] = Field(
15
+ None,
16
+ description="Value to fill (for 'fill' action only)"
17
+ )
18
+ wait_condition: Optional[str] = Field(
19
+ None,
20
+ description="Wait condition like 'visibility_of_element' or 'element_to_be_clickable'"
21
+ )
22
+ timeout: int = Field(
23
+ default=10,
24
+ description="Timeout in seconds",
25
+ ge=1,
26
+ le=60
27
+ )
28
+ description: str = Field(
29
+ ...,
30
+ description="Human-readable description of what this step does"
31
+ )
32
+
33
+ @field_validator('target')
34
+ @classmethod
35
+ def validate_target(cls, v: str, info) -> str:
36
+ action = info.data.get('action')
37
+
38
+ if action == 'navigate':
39
+ if not (v.startswith('http://') or v.startswith('https://')):
40
+ raise ValueError(f"Navigate target must be a full URL, got: {v}")
41
+
42
+ elif action in ['fill', 'click', 'wait']:
43
+ # Check if it looks like a selector (not natural language)
44
+ if len(v) > 150 or ' the ' in v.lower() or ' and ' in v.lower():
45
+ raise ValueError(f"Target looks like natural language, not a selector: {v}")
46
+
47
+ # Must contain selector patterns
48
+ if not any(char in v for char in ['.', '#', '[', ':', '>']):
49
+ raise ValueError(f"Target doesn't look like a CSS selector: {v}")
50
+
51
+ return v
52
+
53
+ class ScrapingSelectorSchema(BaseModel):
54
+ """Schema for content extraction selector"""
55
+ name: str = Field(..., description="Identifier for this selector")
56
+ selector: str = Field(
57
+ ...,
58
+ description="CSS selector (e.g., '.product-title', '#price')"
59
+ )
60
+ selector_type: Literal['css', 'xpath'] = Field(
61
+ default='css',
62
+ description="Type of selector"
63
+ )
64
+ extract_type: Literal['text', 'html', 'attribute'] = Field(
65
+ default='text',
66
+ description="What to extract"
67
+ )
68
+ attribute: Optional[str] = Field(
69
+ None,
70
+ description="Attribute name if extract_type is 'attribute'"
71
+ )
72
+ multiple: bool = Field(
73
+ default=False,
74
+ description="Whether to extract multiple elements"
75
+ )
76
+
77
+ class BrowserConfigSchema(BaseModel):
78
+ """Schema for browser configuration"""
79
+ browser: Literal['chrome', 'firefox', 'edge', 'safari', 'undetected'] = Field(
80
+ default='chrome',
81
+ description="Browser to use"
82
+ )
83
+ headless: bool = Field(
84
+ default=True,
85
+ description="Run in headless mode"
86
+ )
87
+ mobile: bool = Field(
88
+ default=False,
89
+ description="Emulate mobile device"
90
+ )
91
+ mobile_device: Optional[str] = Field(
92
+ None,
93
+ description="Specific mobile device to emulate"
94
+ )
95
+
96
+ class ScrapingPlanSchema(BaseModel):
97
+ """Complete scraping plan with steps, selectors, and config"""
98
+ analysis: str = Field(
99
+ ...,
100
+ description="Brief analysis of the scraping challenge and approach"
101
+ )
102
+ browser_config: BrowserConfigSchema = Field(
103
+ ...,
104
+ description="Recommended browser configuration"
105
+ )
106
+ steps: List[ScrapingStepSchema] = Field(
107
+ ...,
108
+ description="Ordered list of navigation/interaction steps",
109
+ min_length=1
110
+ )
111
+ selectors: List[ScrapingSelectorSchema] = Field(
112
+ default_factory=list,
113
+ description="Content extraction selectors"
114
+ )
115
+ risks: List[str] = Field(
116
+ default_factory=list,
117
+ description="Potential challenges and risks"
118
+ )
119
+ fallback_strategy: Optional[str] = Field(
120
+ None,
121
+ description="What to do if the plan fails"
122
+ )