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.
- agentui/.prettierrc +15 -0
- agentui/QUICKSTART.md +272 -0
- agentui/README.md +59 -0
- agentui/env.example +16 -0
- agentui/jsconfig.json +14 -0
- agentui/package-lock.json +4242 -0
- agentui/package.json +34 -0
- agentui/scripts/postinstall/apply-patches.mjs +260 -0
- agentui/src/app.css +61 -0
- agentui/src/app.d.ts +13 -0
- agentui/src/app.html +12 -0
- agentui/src/components/LoadingSpinner.svelte +64 -0
- agentui/src/components/ThemeSwitcher.svelte +159 -0
- agentui/src/components/index.js +4 -0
- agentui/src/lib/api/bots.ts +60 -0
- agentui/src/lib/api/chat.ts +22 -0
- agentui/src/lib/api/http.ts +25 -0
- agentui/src/lib/components/BotCard.svelte +33 -0
- agentui/src/lib/components/ChatBubble.svelte +63 -0
- agentui/src/lib/components/Toast.svelte +21 -0
- agentui/src/lib/config.ts +20 -0
- agentui/src/lib/stores/auth.svelte.ts +73 -0
- agentui/src/lib/stores/theme.svelte.js +64 -0
- agentui/src/lib/stores/toast.svelte.ts +31 -0
- agentui/src/lib/utils/conversation.ts +39 -0
- agentui/src/routes/+layout.svelte +20 -0
- agentui/src/routes/+page.svelte +232 -0
- agentui/src/routes/login/+page.svelte +200 -0
- agentui/src/routes/talk/[agentId]/+page.svelte +297 -0
- agentui/src/routes/talk/[agentId]/+page.ts +7 -0
- agentui/static/README.md +1 -0
- agentui/svelte.config.js +11 -0
- agentui/tailwind.config.ts +53 -0
- agentui/tsconfig.json +3 -0
- agentui/vite.config.ts +10 -0
- ai_parrot-0.17.2.dist-info/METADATA +472 -0
- ai_parrot-0.17.2.dist-info/RECORD +535 -0
- ai_parrot-0.17.2.dist-info/WHEEL +6 -0
- ai_parrot-0.17.2.dist-info/entry_points.txt +2 -0
- ai_parrot-0.17.2.dist-info/licenses/LICENSE +21 -0
- ai_parrot-0.17.2.dist-info/top_level.txt +6 -0
- crew-builder/.prettierrc +15 -0
- crew-builder/QUICKSTART.md +259 -0
- crew-builder/README.md +113 -0
- crew-builder/env.example +17 -0
- crew-builder/jsconfig.json +14 -0
- crew-builder/package-lock.json +4182 -0
- crew-builder/package.json +37 -0
- crew-builder/scripts/postinstall/apply-patches.mjs +260 -0
- crew-builder/src/app.css +62 -0
- crew-builder/src/app.d.ts +13 -0
- crew-builder/src/app.html +12 -0
- crew-builder/src/components/LoadingSpinner.svelte +64 -0
- crew-builder/src/components/ThemeSwitcher.svelte +149 -0
- crew-builder/src/components/index.js +9 -0
- crew-builder/src/lib/api/bots.ts +60 -0
- crew-builder/src/lib/api/chat.ts +80 -0
- crew-builder/src/lib/api/client.ts +56 -0
- crew-builder/src/lib/api/crew/crew.ts +136 -0
- crew-builder/src/lib/api/index.ts +5 -0
- crew-builder/src/lib/api/o365/auth.ts +65 -0
- crew-builder/src/lib/auth/auth.ts +54 -0
- crew-builder/src/lib/components/AgentNode.svelte +43 -0
- crew-builder/src/lib/components/BotCard.svelte +33 -0
- crew-builder/src/lib/components/ChatBubble.svelte +67 -0
- crew-builder/src/lib/components/ConfigPanel.svelte +278 -0
- crew-builder/src/lib/components/JsonTreeNode.svelte +76 -0
- crew-builder/src/lib/components/JsonViewer.svelte +24 -0
- crew-builder/src/lib/components/MarkdownEditor.svelte +48 -0
- crew-builder/src/lib/components/ThemeToggle.svelte +36 -0
- crew-builder/src/lib/components/Toast.svelte +67 -0
- crew-builder/src/lib/components/Toolbar.svelte +157 -0
- crew-builder/src/lib/components/index.ts +10 -0
- crew-builder/src/lib/config.ts +8 -0
- crew-builder/src/lib/stores/auth.svelte.ts +228 -0
- crew-builder/src/lib/stores/crewStore.ts +369 -0
- crew-builder/src/lib/stores/theme.svelte.js +145 -0
- crew-builder/src/lib/stores/toast.svelte.ts +69 -0
- crew-builder/src/lib/utils/conversation.ts +39 -0
- crew-builder/src/lib/utils/markdown.ts +122 -0
- crew-builder/src/lib/utils/talkHistory.ts +47 -0
- crew-builder/src/routes/+layout.svelte +20 -0
- crew-builder/src/routes/+page.svelte +539 -0
- crew-builder/src/routes/agents/+page.svelte +247 -0
- crew-builder/src/routes/agents/[agentId]/+page.svelte +288 -0
- crew-builder/src/routes/agents/[agentId]/+page.ts +7 -0
- crew-builder/src/routes/builder/+page.svelte +204 -0
- crew-builder/src/routes/crew/ask/+page.svelte +1052 -0
- crew-builder/src/routes/crew/ask/+page.ts +1 -0
- crew-builder/src/routes/integrations/o365/+page.svelte +304 -0
- crew-builder/src/routes/login/+page.svelte +197 -0
- crew-builder/src/routes/talk/[agentId]/+page.svelte +487 -0
- crew-builder/src/routes/talk/[agentId]/+page.ts +7 -0
- crew-builder/static/README.md +1 -0
- crew-builder/svelte.config.js +11 -0
- crew-builder/tailwind.config.ts +53 -0
- crew-builder/tsconfig.json +3 -0
- crew-builder/vite.config.ts +10 -0
- mcp_servers/calculator_server.py +309 -0
- parrot/__init__.py +27 -0
- parrot/__pycache__/__init__.cpython-310.pyc +0 -0
- parrot/__pycache__/version.cpython-310.pyc +0 -0
- parrot/_version.py +34 -0
- parrot/a2a/__init__.py +48 -0
- parrot/a2a/client.py +658 -0
- parrot/a2a/discovery.py +89 -0
- parrot/a2a/mixin.py +257 -0
- parrot/a2a/models.py +376 -0
- parrot/a2a/server.py +770 -0
- parrot/agents/__init__.py +29 -0
- parrot/bots/__init__.py +12 -0
- parrot/bots/a2a_agent.py +19 -0
- parrot/bots/abstract.py +3139 -0
- parrot/bots/agent.py +1129 -0
- parrot/bots/basic.py +9 -0
- parrot/bots/chatbot.py +669 -0
- parrot/bots/data.py +1618 -0
- parrot/bots/database/__init__.py +5 -0
- parrot/bots/database/abstract.py +3071 -0
- parrot/bots/database/cache.py +286 -0
- parrot/bots/database/models.py +468 -0
- parrot/bots/database/prompts.py +154 -0
- parrot/bots/database/retries.py +98 -0
- parrot/bots/database/router.py +269 -0
- parrot/bots/database/sql.py +41 -0
- parrot/bots/db/__init__.py +6 -0
- parrot/bots/db/abstract.py +556 -0
- parrot/bots/db/bigquery.py +602 -0
- parrot/bots/db/cache.py +85 -0
- parrot/bots/db/documentdb.py +668 -0
- parrot/bots/db/elastic.py +1014 -0
- parrot/bots/db/influx.py +898 -0
- parrot/bots/db/mock.py +96 -0
- parrot/bots/db/multi.py +783 -0
- parrot/bots/db/prompts.py +185 -0
- parrot/bots/db/sql.py +1255 -0
- parrot/bots/db/tools.py +212 -0
- parrot/bots/document.py +680 -0
- parrot/bots/hrbot.py +15 -0
- parrot/bots/kb.py +170 -0
- parrot/bots/mcp.py +36 -0
- parrot/bots/orchestration/README.md +463 -0
- parrot/bots/orchestration/__init__.py +1 -0
- parrot/bots/orchestration/agent.py +155 -0
- parrot/bots/orchestration/crew.py +3330 -0
- parrot/bots/orchestration/fsm.py +1179 -0
- parrot/bots/orchestration/hr.py +434 -0
- parrot/bots/orchestration/storage/__init__.py +4 -0
- parrot/bots/orchestration/storage/memory.py +100 -0
- parrot/bots/orchestration/storage/mixin.py +119 -0
- parrot/bots/orchestration/verify.py +202 -0
- parrot/bots/product.py +204 -0
- parrot/bots/prompts/__init__.py +96 -0
- parrot/bots/prompts/agents.py +155 -0
- parrot/bots/prompts/data.py +216 -0
- parrot/bots/prompts/output_generation.py +8 -0
- parrot/bots/scraper/__init__.py +3 -0
- parrot/bots/scraper/models.py +122 -0
- parrot/bots/scraper/scraper.py +1173 -0
- parrot/bots/scraper/templates.py +115 -0
- parrot/bots/stores/__init__.py +5 -0
- parrot/bots/stores/local.py +172 -0
- parrot/bots/webdev.py +81 -0
- parrot/cli.py +17 -0
- parrot/clients/__init__.py +16 -0
- parrot/clients/base.py +1491 -0
- parrot/clients/claude.py +1191 -0
- parrot/clients/factory.py +129 -0
- parrot/clients/google.py +4567 -0
- parrot/clients/gpt.py +1975 -0
- parrot/clients/grok.py +432 -0
- parrot/clients/groq.py +986 -0
- parrot/clients/hf.py +582 -0
- parrot/clients/models.py +18 -0
- parrot/conf.py +395 -0
- parrot/embeddings/__init__.py +9 -0
- parrot/embeddings/base.py +157 -0
- parrot/embeddings/google.py +98 -0
- parrot/embeddings/huggingface.py +74 -0
- parrot/embeddings/openai.py +84 -0
- parrot/embeddings/processor.py +88 -0
- parrot/exceptions.c +13868 -0
- parrot/exceptions.cpython-310-x86_64-linux-gnu.so +0 -0
- parrot/exceptions.pxd +22 -0
- parrot/exceptions.pxi +15 -0
- parrot/exceptions.pyx +44 -0
- parrot/generators/__init__.py +29 -0
- parrot/generators/base.py +200 -0
- parrot/generators/html.py +293 -0
- parrot/generators/react.py +205 -0
- parrot/generators/streamlit.py +203 -0
- parrot/generators/template.py +105 -0
- parrot/handlers/__init__.py +4 -0
- parrot/handlers/agent.py +861 -0
- parrot/handlers/agents/__init__.py +1 -0
- parrot/handlers/agents/abstract.py +900 -0
- parrot/handlers/bots.py +338 -0
- parrot/handlers/chat.py +915 -0
- parrot/handlers/creation.sql +192 -0
- parrot/handlers/crew/ARCHITECTURE.md +362 -0
- parrot/handlers/crew/README_BOTMANAGER_PERSISTENCE.md +303 -0
- parrot/handlers/crew/README_REDIS_PERSISTENCE.md +366 -0
- parrot/handlers/crew/__init__.py +0 -0
- parrot/handlers/crew/handler.py +801 -0
- parrot/handlers/crew/models.py +229 -0
- parrot/handlers/crew/redis_persistence.py +523 -0
- parrot/handlers/jobs/__init__.py +10 -0
- parrot/handlers/jobs/job.py +384 -0
- parrot/handlers/jobs/mixin.py +627 -0
- parrot/handlers/jobs/models.py +115 -0
- parrot/handlers/jobs/worker.py +31 -0
- parrot/handlers/models.py +596 -0
- parrot/handlers/o365_auth.py +105 -0
- parrot/handlers/stream.py +337 -0
- parrot/interfaces/__init__.py +6 -0
- parrot/interfaces/aws.py +143 -0
- parrot/interfaces/credentials.py +113 -0
- parrot/interfaces/database.py +27 -0
- parrot/interfaces/google.py +1123 -0
- parrot/interfaces/hierarchy.py +1227 -0
- parrot/interfaces/http.py +651 -0
- parrot/interfaces/images/__init__.py +0 -0
- parrot/interfaces/images/plugins/__init__.py +24 -0
- parrot/interfaces/images/plugins/abstract.py +58 -0
- parrot/interfaces/images/plugins/analisys.py +148 -0
- parrot/interfaces/images/plugins/classify.py +150 -0
- parrot/interfaces/images/plugins/classifybase.py +182 -0
- parrot/interfaces/images/plugins/detect.py +150 -0
- parrot/interfaces/images/plugins/exif.py +1103 -0
- parrot/interfaces/images/plugins/hash.py +52 -0
- parrot/interfaces/images/plugins/vision.py +104 -0
- parrot/interfaces/images/plugins/yolo.py +66 -0
- parrot/interfaces/images/plugins/zerodetect.py +197 -0
- parrot/interfaces/o365.py +978 -0
- parrot/interfaces/onedrive.py +822 -0
- parrot/interfaces/sharepoint.py +1435 -0
- parrot/interfaces/soap.py +257 -0
- parrot/loaders/__init__.py +8 -0
- parrot/loaders/abstract.py +1131 -0
- parrot/loaders/audio.py +199 -0
- parrot/loaders/basepdf.py +53 -0
- parrot/loaders/basevideo.py +1568 -0
- parrot/loaders/csv.py +409 -0
- parrot/loaders/docx.py +116 -0
- parrot/loaders/epubloader.py +316 -0
- parrot/loaders/excel.py +199 -0
- parrot/loaders/factory.py +55 -0
- parrot/loaders/files/__init__.py +0 -0
- parrot/loaders/files/abstract.py +39 -0
- parrot/loaders/files/html.py +26 -0
- parrot/loaders/files/text.py +63 -0
- parrot/loaders/html.py +152 -0
- parrot/loaders/markdown.py +442 -0
- parrot/loaders/pdf.py +373 -0
- parrot/loaders/pdfmark.py +320 -0
- parrot/loaders/pdftables.py +506 -0
- parrot/loaders/ppt.py +476 -0
- parrot/loaders/qa.py +63 -0
- parrot/loaders/splitters/__init__.py +10 -0
- parrot/loaders/splitters/base.py +138 -0
- parrot/loaders/splitters/md.py +228 -0
- parrot/loaders/splitters/token.py +143 -0
- parrot/loaders/txt.py +26 -0
- parrot/loaders/video.py +89 -0
- parrot/loaders/videolocal.py +218 -0
- parrot/loaders/videounderstanding.py +377 -0
- parrot/loaders/vimeo.py +167 -0
- parrot/loaders/web.py +599 -0
- parrot/loaders/youtube.py +504 -0
- parrot/manager/__init__.py +5 -0
- parrot/manager/manager.py +1030 -0
- parrot/mcp/__init__.py +28 -0
- parrot/mcp/adapter.py +105 -0
- parrot/mcp/cli.py +174 -0
- parrot/mcp/client.py +119 -0
- parrot/mcp/config.py +75 -0
- parrot/mcp/integration.py +842 -0
- parrot/mcp/oauth.py +933 -0
- parrot/mcp/server.py +225 -0
- parrot/mcp/transports/__init__.py +3 -0
- parrot/mcp/transports/base.py +279 -0
- parrot/mcp/transports/grpc_session.py +163 -0
- parrot/mcp/transports/http.py +312 -0
- parrot/mcp/transports/mcp.proto +108 -0
- parrot/mcp/transports/quic.py +1082 -0
- parrot/mcp/transports/sse.py +330 -0
- parrot/mcp/transports/stdio.py +309 -0
- parrot/mcp/transports/unix.py +395 -0
- parrot/mcp/transports/websocket.py +547 -0
- parrot/memory/__init__.py +16 -0
- parrot/memory/abstract.py +209 -0
- parrot/memory/agent.py +32 -0
- parrot/memory/cache.py +175 -0
- parrot/memory/core.py +555 -0
- parrot/memory/file.py +153 -0
- parrot/memory/mem.py +131 -0
- parrot/memory/redis.py +613 -0
- parrot/models/__init__.py +46 -0
- parrot/models/basic.py +118 -0
- parrot/models/compliance.py +208 -0
- parrot/models/crew.py +395 -0
- parrot/models/detections.py +654 -0
- parrot/models/generation.py +85 -0
- parrot/models/google.py +223 -0
- parrot/models/groq.py +23 -0
- parrot/models/openai.py +30 -0
- parrot/models/outputs.py +285 -0
- parrot/models/responses.py +938 -0
- parrot/notifications/__init__.py +743 -0
- parrot/openapi/__init__.py +3 -0
- parrot/openapi/components.yaml +641 -0
- parrot/openapi/config.py +322 -0
- parrot/outputs/__init__.py +32 -0
- parrot/outputs/formats/__init__.py +108 -0
- parrot/outputs/formats/altair.py +359 -0
- parrot/outputs/formats/application.py +122 -0
- parrot/outputs/formats/base.py +351 -0
- parrot/outputs/formats/bokeh.py +356 -0
- parrot/outputs/formats/card.py +424 -0
- parrot/outputs/formats/chart.py +436 -0
- parrot/outputs/formats/d3.py +255 -0
- parrot/outputs/formats/echarts.py +310 -0
- parrot/outputs/formats/generators/__init__.py +0 -0
- parrot/outputs/formats/generators/abstract.py +61 -0
- parrot/outputs/formats/generators/panel.py +145 -0
- parrot/outputs/formats/generators/streamlit.py +86 -0
- parrot/outputs/formats/generators/terminal.py +63 -0
- parrot/outputs/formats/holoviews.py +310 -0
- parrot/outputs/formats/html.py +147 -0
- parrot/outputs/formats/jinja2.py +46 -0
- parrot/outputs/formats/json.py +87 -0
- parrot/outputs/formats/map.py +933 -0
- parrot/outputs/formats/markdown.py +172 -0
- parrot/outputs/formats/matplotlib.py +237 -0
- parrot/outputs/formats/mixins/__init__.py +0 -0
- parrot/outputs/formats/mixins/emaps.py +855 -0
- parrot/outputs/formats/plotly.py +341 -0
- parrot/outputs/formats/seaborn.py +310 -0
- parrot/outputs/formats/table.py +397 -0
- parrot/outputs/formats/template_report.py +138 -0
- parrot/outputs/formats/yaml.py +125 -0
- parrot/outputs/formatter.py +152 -0
- parrot/outputs/templates/__init__.py +95 -0
- parrot/pipelines/__init__.py +0 -0
- parrot/pipelines/abstract.py +210 -0
- parrot/pipelines/detector.py +124 -0
- parrot/pipelines/models.py +90 -0
- parrot/pipelines/planogram.py +3002 -0
- parrot/pipelines/table.sql +97 -0
- parrot/plugins/__init__.py +106 -0
- parrot/plugins/importer.py +80 -0
- parrot/py.typed +0 -0
- parrot/registry/__init__.py +18 -0
- parrot/registry/registry.py +594 -0
- parrot/scheduler/__init__.py +1189 -0
- parrot/scheduler/models.py +60 -0
- parrot/security/__init__.py +16 -0
- parrot/security/prompt_injection.py +268 -0
- parrot/security/security_events.sql +25 -0
- parrot/services/__init__.py +1 -0
- parrot/services/mcp/__init__.py +8 -0
- parrot/services/mcp/config.py +13 -0
- parrot/services/mcp/server.py +295 -0
- parrot/services/o365_remote_auth.py +235 -0
- parrot/stores/__init__.py +7 -0
- parrot/stores/abstract.py +352 -0
- parrot/stores/arango.py +1090 -0
- parrot/stores/bigquery.py +1377 -0
- parrot/stores/cache.py +106 -0
- parrot/stores/empty.py +10 -0
- parrot/stores/faiss_store.py +1157 -0
- parrot/stores/kb/__init__.py +9 -0
- parrot/stores/kb/abstract.py +68 -0
- parrot/stores/kb/cache.py +165 -0
- parrot/stores/kb/doc.py +325 -0
- parrot/stores/kb/hierarchy.py +346 -0
- parrot/stores/kb/local.py +457 -0
- parrot/stores/kb/prompt.py +28 -0
- parrot/stores/kb/redis.py +659 -0
- parrot/stores/kb/store.py +115 -0
- parrot/stores/kb/user.py +374 -0
- parrot/stores/models.py +59 -0
- parrot/stores/pgvector.py +3 -0
- parrot/stores/postgres.py +2853 -0
- parrot/stores/utils/__init__.py +0 -0
- parrot/stores/utils/chunking.py +197 -0
- parrot/telemetry/__init__.py +3 -0
- parrot/telemetry/mixin.py +111 -0
- parrot/template/__init__.py +3 -0
- parrot/template/engine.py +259 -0
- parrot/tools/__init__.py +23 -0
- parrot/tools/abstract.py +644 -0
- parrot/tools/agent.py +363 -0
- parrot/tools/arangodbsearch.py +537 -0
- parrot/tools/arxiv_tool.py +188 -0
- parrot/tools/calculator/__init__.py +3 -0
- parrot/tools/calculator/operations/__init__.py +38 -0
- parrot/tools/calculator/operations/calculus.py +80 -0
- parrot/tools/calculator/operations/statistics.py +76 -0
- parrot/tools/calculator/tool.py +150 -0
- parrot/tools/cloudwatch.py +988 -0
- parrot/tools/codeinterpreter/__init__.py +127 -0
- parrot/tools/codeinterpreter/executor.py +371 -0
- parrot/tools/codeinterpreter/internals.py +473 -0
- parrot/tools/codeinterpreter/models.py +643 -0
- parrot/tools/codeinterpreter/prompts.py +224 -0
- parrot/tools/codeinterpreter/tool.py +664 -0
- parrot/tools/company_info/__init__.py +6 -0
- parrot/tools/company_info/tool.py +1138 -0
- parrot/tools/correlationanalysis.py +437 -0
- parrot/tools/database/abstract.py +286 -0
- parrot/tools/database/bq.py +115 -0
- parrot/tools/database/cache.py +284 -0
- parrot/tools/database/models.py +95 -0
- parrot/tools/database/pg.py +343 -0
- parrot/tools/databasequery.py +1159 -0
- parrot/tools/db.py +1800 -0
- parrot/tools/ddgo.py +370 -0
- parrot/tools/decorators.py +271 -0
- parrot/tools/dftohtml.py +282 -0
- parrot/tools/document.py +549 -0
- parrot/tools/ecs.py +819 -0
- parrot/tools/edareport.py +368 -0
- parrot/tools/elasticsearch.py +1049 -0
- parrot/tools/employees.py +462 -0
- parrot/tools/epson/__init__.py +96 -0
- parrot/tools/excel.py +683 -0
- parrot/tools/file/__init__.py +13 -0
- parrot/tools/file/abstract.py +76 -0
- parrot/tools/file/gcs.py +378 -0
- parrot/tools/file/local.py +284 -0
- parrot/tools/file/s3.py +511 -0
- parrot/tools/file/tmp.py +309 -0
- parrot/tools/file/tool.py +501 -0
- parrot/tools/file_reader.py +129 -0
- parrot/tools/flowtask/__init__.py +19 -0
- parrot/tools/flowtask/tool.py +761 -0
- parrot/tools/gittoolkit.py +508 -0
- parrot/tools/google/__init__.py +18 -0
- parrot/tools/google/base.py +169 -0
- parrot/tools/google/tools.py +1251 -0
- parrot/tools/googlelocation.py +5 -0
- parrot/tools/googleroutes.py +5 -0
- parrot/tools/googlesearch.py +5 -0
- parrot/tools/googlesitesearch.py +5 -0
- parrot/tools/googlevoice.py +2 -0
- parrot/tools/gvoice.py +695 -0
- parrot/tools/ibisworld/README.md +225 -0
- parrot/tools/ibisworld/__init__.py +11 -0
- parrot/tools/ibisworld/tool.py +366 -0
- parrot/tools/jiratoolkit.py +1718 -0
- parrot/tools/manager.py +1098 -0
- parrot/tools/math.py +152 -0
- parrot/tools/metadata.py +476 -0
- parrot/tools/msteams.py +1621 -0
- parrot/tools/msword.py +635 -0
- parrot/tools/multidb.py +580 -0
- parrot/tools/multistoresearch.py +369 -0
- parrot/tools/networkninja.py +167 -0
- parrot/tools/nextstop/__init__.py +4 -0
- parrot/tools/nextstop/base.py +286 -0
- parrot/tools/nextstop/employee.py +733 -0
- parrot/tools/nextstop/store.py +462 -0
- parrot/tools/notification.py +435 -0
- parrot/tools/o365/__init__.py +42 -0
- parrot/tools/o365/base.py +295 -0
- parrot/tools/o365/bundle.py +522 -0
- parrot/tools/o365/events.py +554 -0
- parrot/tools/o365/mail.py +992 -0
- parrot/tools/o365/onedrive.py +497 -0
- parrot/tools/o365/sharepoint.py +641 -0
- parrot/tools/openapi_toolkit.py +904 -0
- parrot/tools/openweather.py +527 -0
- parrot/tools/pdfprint.py +1001 -0
- parrot/tools/powerbi.py +518 -0
- parrot/tools/powerpoint.py +1113 -0
- parrot/tools/pricestool.py +146 -0
- parrot/tools/products/__init__.py +246 -0
- parrot/tools/prophet_tool.py +171 -0
- parrot/tools/pythonpandas.py +630 -0
- parrot/tools/pythonrepl.py +910 -0
- parrot/tools/qsource.py +436 -0
- parrot/tools/querytoolkit.py +395 -0
- parrot/tools/quickeda.py +827 -0
- parrot/tools/resttool.py +553 -0
- parrot/tools/retail/__init__.py +0 -0
- parrot/tools/retail/bby.py +528 -0
- parrot/tools/sandboxtool.py +703 -0
- parrot/tools/sassie/__init__.py +352 -0
- parrot/tools/scraping/__init__.py +7 -0
- parrot/tools/scraping/docs/select.md +466 -0
- parrot/tools/scraping/documentation.md +1278 -0
- parrot/tools/scraping/driver.py +436 -0
- parrot/tools/scraping/models.py +576 -0
- parrot/tools/scraping/options.py +85 -0
- parrot/tools/scraping/orchestrator.py +517 -0
- parrot/tools/scraping/readme.md +740 -0
- parrot/tools/scraping/tool.py +3115 -0
- parrot/tools/seasonaldetection.py +642 -0
- parrot/tools/shell_tool/__init__.py +5 -0
- parrot/tools/shell_tool/actions.py +408 -0
- parrot/tools/shell_tool/engine.py +155 -0
- parrot/tools/shell_tool/models.py +322 -0
- parrot/tools/shell_tool/tool.py +442 -0
- parrot/tools/site_search.py +214 -0
- parrot/tools/textfile.py +418 -0
- parrot/tools/think.py +378 -0
- parrot/tools/toolkit.py +298 -0
- parrot/tools/webapp_tool.py +187 -0
- parrot/tools/whatif.py +1279 -0
- parrot/tools/workday/MULTI_WSDL_EXAMPLE.md +249 -0
- parrot/tools/workday/__init__.py +6 -0
- parrot/tools/workday/models.py +1389 -0
- parrot/tools/workday/tool.py +1293 -0
- parrot/tools/yfinance_tool.py +306 -0
- parrot/tools/zipcode.py +217 -0
- parrot/utils/__init__.py +2 -0
- parrot/utils/helpers.py +73 -0
- parrot/utils/parsers/__init__.py +5 -0
- parrot/utils/parsers/toml.c +12078 -0
- parrot/utils/parsers/toml.cpython-310-x86_64-linux-gnu.so +0 -0
- parrot/utils/parsers/toml.pyx +21 -0
- parrot/utils/toml.py +11 -0
- parrot/utils/types.cpp +20936 -0
- parrot/utils/types.cpython-310-x86_64-linux-gnu.so +0 -0
- parrot/utils/types.pyx +213 -0
- parrot/utils/uv.py +11 -0
- parrot/version.py +10 -0
- parrot/yaml-rs/Cargo.lock +350 -0
- parrot/yaml-rs/Cargo.toml +19 -0
- parrot/yaml-rs/pyproject.toml +19 -0
- parrot/yaml-rs/python/yaml_rs/__init__.py +81 -0
- parrot/yaml-rs/src/lib.rs +222 -0
- requirements/docker-compose.yml +24 -0
- 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,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
|
+
)
|