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,52 @@
1
+ from PIL import Image
2
+ from imagehash import phash, dhash
3
+ from .abstract import ImagePlugin
4
+
5
+
6
+ class ImageHashPlugin(ImagePlugin):
7
+ """
8
+ ImageHashPlugin is a plugin for generating perceptual hashes of images.
9
+ It extends the ImagePlugin class and implements the analyze method to generate hashes.
10
+ """
11
+ column_name: str = "image_hash"
12
+
13
+ def __init__(self, *args, **kwargs):
14
+ super().__init__(*args, **kwargs)
15
+ self._hash_type: str = kwargs.get("model", "phash")
16
+ self._hash_size: int = kwargs.get("hash_size", 8)
17
+ self._hash_func = self._get_hash_function(self._hash_type)
18
+
19
+ def _get_hash_function(self, hash_type: str):
20
+ """
21
+ Get the hash function based on the specified hash type.
22
+
23
+ :param hash_type: Type of hash to generate (e.g., 'phash', 'dhash').
24
+ :return: Hash function.
25
+ """
26
+ if hash_type == "phash":
27
+ return phash
28
+ elif hash_type == "dhash":
29
+ return dhash
30
+ else:
31
+ raise ValueError(
32
+ f"Unsupported hash type: {hash_type}"
33
+ )
34
+
35
+ async def analyze(self, image: Image.Image, **kwargs) -> str:
36
+ """
37
+ Generate a perceptual hash of the given image.
38
+
39
+ :param image: Image Bytes opened with PIL Image.open
40
+ :return: Perceptual hash of the image.
41
+ """
42
+ try:
43
+ hash_value = self._hash_func(image, hash_size=self._hash_size)
44
+ if hash_value:
45
+ return str(hash_value)
46
+ else:
47
+ return ''
48
+ except Exception as e:
49
+ self.logger.error(
50
+ f"Error in ImageHash analysis: {str(e)}"
51
+ )
52
+ return ''
@@ -0,0 +1,104 @@
1
+ from typing import Optional
2
+ from io import BytesIO
3
+ from PIL import Image
4
+ import numpy as np
5
+ import torch
6
+ from transformers import AutoImageProcessor, AutoModel
7
+ from .abstract import ImagePlugin
8
+
9
+ SUPPORTED_MODELS = {
10
+ "dinov2-base": {
11
+ "model": "facebook/dinov2-base",
12
+ "vector_dim": 768
13
+ },
14
+ "vit-base": {
15
+ "model": "google/vit-base-patch16-224-in21k",
16
+ "vector_dim": 768
17
+ },
18
+ "dinov2-large": {
19
+ "model": "facebook/dinov2-large",
20
+ "vector_dim": 1024
21
+ },
22
+ }
23
+
24
+
25
+ class VisionTransformerPlugin(ImagePlugin):
26
+ """
27
+ VisionTransformerPlugin is a plugin for generating vector representations of images.
28
+ It extends the ImagePlugin class and implements the analyze method to generate vectors.
29
+ """
30
+ column_name: str = "image_vector"
31
+
32
+ def __init__(self, *args, device: Optional[str] = None, **kwargs):
33
+ super().__init__(*args, **kwargs)
34
+ self._vector_model: str = kwargs.get("model_name", "dinov2-base")
35
+ self._vector_size: int = kwargs.get("vector_size", 768)
36
+ self._model_info = SUPPORTED_MODELS.get(self._vector_model)
37
+ use_gpu: bool = kwargs.get("use_gpu", False)
38
+ if use_gpu and not torch.cuda.is_available():
39
+ raise ValueError("GPU is not available. Please set use_gpu to False.")
40
+ if not self._model_info:
41
+ raise ValueError(
42
+ f"Unsupported model name: {self._vector_model}. "
43
+ f"Supported models are: {list(SUPPORTED_MODELS.keys())}"
44
+ )
45
+ if use_gpu:
46
+ self.device = device or ("cuda" if torch.cuda.is_available() else "cpu")
47
+ else:
48
+ self.device = "cpu"
49
+
50
+ async def start(self):
51
+ self.processor = AutoImageProcessor.from_pretrained(self._model_info["model"])
52
+ self.model = AutoModel.from_pretrained(self._model_info["model"]).to(self.device)
53
+ self.model.eval()
54
+ return self
55
+
56
+ async def dispose(self):
57
+ """
58
+ Close the model and processor.
59
+ """
60
+ if hasattr(self, "model"):
61
+ del self.model
62
+ if hasattr(self, "processor"):
63
+ del self.processor
64
+ torch.cuda.empty_cache()
65
+ return self
66
+
67
+ async def analyze(self, image: Image.Image, **kwargs) -> np.ndarray:
68
+ """
69
+ Generate a vector representation of the given image.
70
+
71
+ :param image: Image Bytes opened with PIL Image.open
72
+ :return: Vector representation of the image.
73
+ """
74
+ if image is None:
75
+ return None
76
+ try:
77
+ image = image.convert("RGB")
78
+ # Resize and normalize the image
79
+ # image = image.resize((224, 224))
80
+ # image = np.array(image) / 255.0
81
+ # image = np.transpose(image, (2, 0, 1)) # Change to CxHxW format
82
+ # image = torch.tensor(image, dtype=torch.float32).unsqueeze(0).to(self.device)
83
+ # # Normalize the image
84
+ # image = (image - 0.5) / 0.5
85
+ # Convert to tensor and move to device
86
+ inputs = self.processor(images=image, return_tensors="pt").to(self.device)
87
+ with torch.no_grad():
88
+ outputs = self.model(**inputs)
89
+ # Use CLS token representation
90
+ vector = outputs.last_hidden_state[:, 0].squeeze().cpu().numpy()
91
+ vector = vector / np.linalg.norm(vector)
92
+ return vector.tolist()
93
+ except Exception as e:
94
+ self.logger.error(
95
+ f"Error in VisionTransformer analysis: {str(e)}"
96
+ )
97
+ return None
98
+ # features = self.model(**image).last_hidden_state
99
+ # features = features[:, 0, :].cpu().numpy()
100
+ # if features.shape[1] != self._vector_size:
101
+ # raise ValueError(
102
+ # f"Vector size mismatch: expected {self._vector_size}, got {features.shape[1]}"
103
+ # )
104
+ # return features
@@ -0,0 +1,66 @@
1
+ from ultralytics import YOLO
2
+ from PIL import Image
3
+ from .abstract import ImagePlugin
4
+
5
+
6
+ class YOLOPlugin(ImagePlugin):
7
+ """
8
+ YOLOPlugin is a plugin for performing object detection using the YOLO (You Only Look Once) model.
9
+ It extends the ImagePlugin class and implements the analyze method to perform object detection.
10
+ """
11
+ column_name: str = "image_features"
12
+
13
+ def __init__(self, *args, **kwargs):
14
+ self._model_name: str = kwargs.get("model_name", "yolov8n")
15
+ self._model_path: str = kwargs.get("model_path", "yolov11l.pt")
16
+ if not self._model_name or not self._model_path:
17
+ raise ValueError(
18
+ "Model name and model path are required."
19
+ )
20
+ super().__init__(*args, **kwargs)
21
+ try:
22
+ self.model = YOLO(self._model_path)
23
+ except Exception as e:
24
+ raise RuntimeError(
25
+ f"Error loading YOLO model: {str(e)}"
26
+ ) from e
27
+
28
+ async def dispose(self):
29
+ """
30
+ Close the YOLO model.
31
+ """
32
+ if hasattr(self, "model"):
33
+ self.model = None
34
+
35
+ async def analyze(self, image: Image.Image, **kwargs) -> dict:
36
+ """
37
+ Perform object detection on the given image using the YOLO model.
38
+
39
+ :param image: Image Bytes opened with PIL Image.open
40
+ :return: Dictionary containing detected objects and their bounding boxes.
41
+ """
42
+ try:
43
+ if image is None:
44
+ return {}
45
+ results = self.model.predict(source=image, conf=0.25, save=False, verbose=False)
46
+ return self._parse_results(results)
47
+ except Exception as e:
48
+ self.logger.error(f"Error in YOLO analysis: {str(e)}")
49
+ return {}
50
+
51
+ def _parse_results(self, results) -> dict:
52
+ """
53
+ Parse the results from the YOLO model.
54
+
55
+ :param results: Results from the YOLO model.
56
+ :return: Dictionary containing detected objects and their bounding boxes.
57
+ """
58
+ detections = []
59
+ for r in results:
60
+ for box in r.boxes:
61
+ detections.append({
62
+ "label": r.names[int(box.cls)],
63
+ "conf": float(box.conf),
64
+ "box": box.xyxy[0].tolist()
65
+ })
66
+ return {"detections": detections}
@@ -0,0 +1,197 @@
1
+ from typing import Optional, List
2
+ from collections import Counter
3
+ import torch
4
+ from PIL import Image
5
+ import numpy as np
6
+ from transformers import (
7
+ AutoProcessor,
8
+ AutoModelForZeroShotObjectDetection,
9
+ Owlv2Processor,
10
+ Owlv2ForObjectDetection
11
+ )
12
+ from transformers.utils.constants import OPENAI_CLIP_MEAN, OPENAI_CLIP_STD
13
+ from .abstract import ImagePlugin
14
+
15
+ SUPPORTED_MODELS = {
16
+ "grounding-dino-base": {
17
+ "model": "IDEA-Research/grounding-dino-base",
18
+ "model_object": AutoModelForZeroShotObjectDetection,
19
+ "processor": AutoProcessor,
20
+ "model_type": "grounding-dino"
21
+ },
22
+ "grounding-dino-tiny": {
23
+ "model": "IDEA-Research/grounding-dino-tiny",
24
+ "model_object": AutoModelForZeroShotObjectDetection,
25
+ "processor": AutoProcessor,
26
+ "model_type": "grounding-dino"
27
+ },
28
+ "owlv2-large": {
29
+ "model": "google/owlv2-large-patch14-finetuned",
30
+ "model_object": Owlv2ForObjectDetection,
31
+ "processor": Owlv2Processor,
32
+ "model_type": "google-owlv2"
33
+ },
34
+ "owlv2-base": {
35
+ "model": "google/owlv2-base-patch16",
36
+ "model_object": Owlv2ForObjectDetection,
37
+ "processor": Owlv2Processor,
38
+ "model_type": "google-owlv2"
39
+ },
40
+ "glip-large": {
41
+ "model": "microsoft/glip-large",
42
+ "model_object": AutoModelForZeroShotObjectDetection,
43
+ "processor": AutoProcessor,
44
+ "model_type": "glip"
45
+ }
46
+ }
47
+
48
+
49
+ class ZeroShotDetectionPlugin(ImagePlugin):
50
+ """
51
+ ZeroShotDetectionPlugin is a plugin for performing zero-shot object detection using the Grounding DINO model.
52
+ """
53
+ column_name: str = "image_detections"
54
+
55
+ def __init__(self, *args, device: Optional[str] = None, **kwargs):
56
+ super().__init__(*args, **kwargs)
57
+ self._vector_model: str = kwargs.get("model_name", "grounding-dino-base")
58
+ self._model_info = SUPPORTED_MODELS.get(self._vector_model)
59
+ self.prompt: List[str] = kwargs.get("prompt", ["person"])
60
+ self._model_type: str = self._model_info.get("model_type", "grounding-dino")
61
+ self._image_threshold: float = kwargs.get("image_threshold", 0.4)
62
+ if not self._model_info:
63
+ raise ValueError(
64
+ f"Unsupported model name: {self._vector_model}. "
65
+ f"Supported models are: {list(SUPPORTED_MODELS.keys())}"
66
+ )
67
+ self.device = device or ("cuda" if torch.cuda.is_available() else "cpu")
68
+
69
+ async def start(self):
70
+ """
71
+ Initialize the model and processor.
72
+ """
73
+ processor = self._model_info["processor"]
74
+ model_object = self._model_info["model_object"]
75
+ model_name = self._model_info["model"]
76
+ if model_name == "google/owlvit-base-patch14-ensemble":
77
+ self.processor = processor.from_pretrained(model_name)
78
+ self.model = model_object.from_pretrained(model_name).to(self.device)
79
+ elif model_name == "google/owlv2-base-patch16":
80
+ self.processor = AutoProcessor.from_pretrained(model_name)
81
+ self.model = Owlv2ForObjectDetection.from_pretrained(model_name).to(self.device)
82
+ else:
83
+ self.processor = processor.from_pretrained(model_name)
84
+ self.model = model_object.from_pretrained(model_name).to(self.device)
85
+ self.model.eval()
86
+ return self
87
+
88
+ async def dispose(self):
89
+ """
90
+ Close the model and processor.
91
+ """
92
+ if hasattr(self, "model"):
93
+ del self.model
94
+ if hasattr(self, "processor"):
95
+ del self.processor
96
+ torch.cuda.empty_cache()
97
+ return self
98
+
99
+ @staticmethod
100
+ def _to_xyxy(box_tensor):
101
+ """torch.Tensor([x1,y1,x2,y2]) → rounded python list"""
102
+ return [round(float(x), 2) for x in box_tensor.tolist()]
103
+
104
+ def _unnormalise(self, pixel_values):
105
+ px = pixel_values.squeeze().cpu().numpy() # ★ .cpu()
106
+ unnorm = (px * np.array(OPENAI_CLIP_STD)[:, None, None]) \
107
+ + np.array(OPENAI_CLIP_MEAN)[:, None, None]
108
+ unnorm = (unnorm * 255).astype(np.uint8)
109
+ h, w = unnorm.shape[1], unnorm.shape[2]
110
+ return h, w
111
+
112
+ async def analyze(self, image: Image.Image, **kwargs) -> dict:
113
+ """
114
+ Generate a vector representation of the given image.
115
+
116
+ :param image: Image Bytes opened with PIL Image.open
117
+ :return: Vector representation of the image.
118
+ """
119
+ if image is None:
120
+ return None
121
+ try:
122
+ image = image.convert("RGB")
123
+ text_labels = [self.prompt]
124
+ args = {
125
+ "return_tensors": "pt",
126
+ "images": image,
127
+ "text": text_labels,
128
+ }
129
+ if self._model_type in {'google-owlv2', 'glip'}:
130
+ args['text'] = self.prompt # list of strings
131
+ # ---------- encode ----- #
132
+ inputs = self.processor(
133
+ **args
134
+ ).to(self.device)
135
+ with torch.no_grad():
136
+ outputs = self.model(**inputs)
137
+
138
+ if self._model_type == "grounding-dino":
139
+ results = self.processor.post_process_grounded_object_detection(
140
+ outputs,
141
+ threshold=self._image_threshold,
142
+ text_threshold=0.35,
143
+ target_sizes=[(image.height, image.width)]
144
+ )[0] # batch size 1
145
+ boxes = results["boxes"]
146
+ scores = results["scores"]
147
+ # Grounding‑DINO returns phi indexes, map to strings:
148
+ if "text_labels" in results:
149
+ label_texts = results["text_labels"]
150
+ else:
151
+ raw_labels = results["labels"]
152
+ # raw_labels may be tensor, list[int], or list[str]
153
+ if isinstance(raw_labels[0], (int, torch.Tensor)):
154
+ label_texts = [self.prompt[int(i)] for i in raw_labels]
155
+ else: # already strings
156
+ label_texts = list(raw_labels)
157
+ elif self._model_type == "google-owlv2":
158
+ # Convert outputs (bounding boxes and class logits) to final bounding boxes and scores
159
+ h, w = self._unnormalise(inputs.pixel_values)
160
+ target_sizes = [(h, w)]
161
+ results = self.processor.post_process_grounded_object_detection(
162
+ outputs,
163
+ target_sizes=target_sizes,
164
+ threshold=self._image_threshold,
165
+ )[0] # batch size 1
166
+ boxes = results["boxes"]
167
+ scores = results["scores"]
168
+ # OWLv2 returns the actual text index already
169
+ label_ids = results["labels"]
170
+ # label_texts = [text_labels[i] for i in label_ids]
171
+ label_texts = [self.prompt[i] for i in label_ids]
172
+ else:
173
+ raise ValueError(
174
+ f"Unsupported model type: {self._model_type}. "
175
+ f"Supported models are: {list(SUPPORTED_MODELS.keys())}"
176
+ )
177
+ detections = []
178
+ for box, score, label in zip(boxes, scores, label_texts):
179
+ detection = {
180
+ "box": self._to_xyxy(box),
181
+ "score": round(float(score), 2),
182
+ "label": label
183
+ }
184
+ detections.append(detection)
185
+ counts = Counter(d["label"] for d in detections)
186
+ list_of_objects = sorted(counts) # unique labels, alphabetic
187
+ return {
188
+ "total_objects": len(detections),
189
+ "objects_detected": dict(counts),
190
+ "objects": list_of_objects,
191
+ "detections": detections
192
+ }
193
+ except Exception as e:
194
+ self.logger.error(
195
+ f"ZeroShot Detection: Error Processing Image: {e}"
196
+ )
197
+ return None