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,115 @@
|
|
|
1
|
+
BESTBUY_TEMPLATE = {
|
|
2
|
+
'search_steps': [
|
|
3
|
+
{
|
|
4
|
+
'action': 'navigate',
|
|
5
|
+
'target': 'https://www.bestbuy.com/?intl=nosplash',
|
|
6
|
+
'description': 'Best Buy home'
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
'action': 'wait',
|
|
10
|
+
'target': 'presence_of_element_located:textarea[id="autocomplete-search-bar"], input[aria-label*="Search"]',
|
|
11
|
+
'timeout': 5,
|
|
12
|
+
'description': 'Wait for Text Area input to be present'
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
'action': 'fill',
|
|
16
|
+
'target': 'textarea[id="autocomplete-search-bar"], input[aria-label*="Search"]',
|
|
17
|
+
'value': '{search_term}',
|
|
18
|
+
'description': 'Type product'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
'action': 'click',
|
|
22
|
+
'target': 'button[id="autocomplete-search-button"], button[aria-label="Search-Button"]',
|
|
23
|
+
'description': 'Submit search'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
'action': 'wait',
|
|
27
|
+
'target': '.sku-block',
|
|
28
|
+
'timeout': 15,
|
|
29
|
+
'description': 'Wait For Results'
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
'product_selectors': [
|
|
33
|
+
{
|
|
34
|
+
'name':'product_titles',
|
|
35
|
+
'selector': 'h2.product-title',
|
|
36
|
+
'extract_type':'text',
|
|
37
|
+
'multiple':True
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
'name':'product_prices',
|
|
41
|
+
'selector': 'div[data-testid="price-block-customer-price"], span',
|
|
42
|
+
'extract_type':'text',
|
|
43
|
+
'multiple':True
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
'name':'product_links',
|
|
47
|
+
'selector': '.sku-block-content-title a.product-list-item-link',
|
|
48
|
+
'extract_type':'attribute',
|
|
49
|
+
'attribute':'href',
|
|
50
|
+
'multiple':True
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
'guidance': 'Best Buy uses dynamic loading and specific CSS classes for products. Search results appear in .sku-item-list containers.'
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
AMAZON_TEMPLATE = {
|
|
57
|
+
'search_steps': [
|
|
58
|
+
{'action':'navigate','target':'https://www.amazon.com','description':'Amazon home'},
|
|
59
|
+
{'action':'wait','target':'#twotabsearchtextbox','timeout':15,'description':'Wait for search box'},
|
|
60
|
+
{'action':'fill','target':'#twotabsearchtextbox','value':'{search_term}','description':'Type product'},
|
|
61
|
+
{'action':'click','target':'#nav-search-submit-button','description':'Search'},
|
|
62
|
+
{'action':'wait','target':'[data-component-type="s-search-result"]','timeout':20,'description':'Wait results'}
|
|
63
|
+
],
|
|
64
|
+
'product_selectors': [
|
|
65
|
+
{
|
|
66
|
+
'name': 'product_titles',
|
|
67
|
+
'selector': '[data-component-type="s-search-result"] h2 a span',
|
|
68
|
+
'extract_type': 'text',
|
|
69
|
+
'multiple': True
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
'name': 'product_prices',
|
|
73
|
+
'selector': '.a-price-whole, .a-price .a-offscreen',
|
|
74
|
+
'extract_type': 'text',
|
|
75
|
+
'multiple': True
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
'guidance': 'Amazon uses data-component-type attributes for search results. Prices can be in different formats.'
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
EBAY_TEMPLATE = {
|
|
82
|
+
'search_steps': [
|
|
83
|
+
{
|
|
84
|
+
'action': 'navigate',
|
|
85
|
+
'target': 'https://www.ebay.com',
|
|
86
|
+
'description': 'Navigate to eBay homepage'
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
'action': 'fill',
|
|
90
|
+
'target': '#gh-search-input',
|
|
91
|
+
'value': '{search_term}',
|
|
92
|
+
'description': 'Fill search input'
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
'action': 'click',
|
|
96
|
+
'target': '#gh-search-btn',
|
|
97
|
+
'description': 'Click search button'
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
'product_selectors': [
|
|
101
|
+
{
|
|
102
|
+
'name': 'product_titles',
|
|
103
|
+
'selector': '.it-title-lnk',
|
|
104
|
+
'extract_type': 'text',
|
|
105
|
+
'multiple': True
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
'name': 'product_prices',
|
|
109
|
+
'selector': '.notranslate',
|
|
110
|
+
'extract_type': 'text',
|
|
111
|
+
'multiple': True
|
|
112
|
+
}
|
|
113
|
+
],
|
|
114
|
+
'guidance': 'eBay search results use .it-title-lnk for titles and .notranslate for prices.'
|
|
115
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"""
|
|
2
|
+
LocalKBMixin: Mixin to add local markdown KB support to agents.
|
|
3
|
+
|
|
4
|
+
This mixin provides automatic loading of markdown knowledge bases from
|
|
5
|
+
the agent's local directory structure (AGENTS_DIR/<agent_name>/kb/).
|
|
6
|
+
"""
|
|
7
|
+
from typing import Optional, List
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
# from ...stores.kb.local import LocalKB
|
|
10
|
+
from ...conf import AGENTS_DIR
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class LocalKBMixin:
|
|
14
|
+
"""
|
|
15
|
+
Mixin to add local markdown KB support to agents.
|
|
16
|
+
|
|
17
|
+
Usage:
|
|
18
|
+
class AbstractBot(DBInterface, LocalKBMixin, ABC):
|
|
19
|
+
...
|
|
20
|
+
|
|
21
|
+
This mixin provides:
|
|
22
|
+
- Automatic KB directory detection
|
|
23
|
+
- Loading of markdown files from AGENTS_DIR/<agent_name>/kb/
|
|
24
|
+
- Integration with the agent's knowledge_bases list
|
|
25
|
+
- Proper error handling and logging
|
|
26
|
+
"""
|
|
27
|
+
def _get_kb_local_files(self, kb_dir: Path) -> List[Path]:
|
|
28
|
+
"""
|
|
29
|
+
Get list of markdown or text files in KB directory.
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
kb_dir: Path to KB directory
|
|
33
|
+
|
|
34
|
+
Returns:
|
|
35
|
+
List[Path]: List of .md or .txt files
|
|
36
|
+
"""
|
|
37
|
+
if not kb_dir.exists():
|
|
38
|
+
return []
|
|
39
|
+
|
|
40
|
+
return list(kb_dir.glob("*.md")) + list(kb_dir.glob("*.txt"))
|
|
41
|
+
|
|
42
|
+
def _get_agent_kb_directory(self) -> Optional[Path]:
|
|
43
|
+
"""
|
|
44
|
+
Get the kb/ directory for this agent.
|
|
45
|
+
|
|
46
|
+
Returns path to AGENTS_DIR/<agent_name|agent_id>/kb/
|
|
47
|
+
"""
|
|
48
|
+
safe_name = None
|
|
49
|
+
if hasattr(self, 'agent_id'):
|
|
50
|
+
safe_name = self.agent_id.lower().replace(' ', '_')
|
|
51
|
+
|
|
52
|
+
elif hasattr(self, 'name'):
|
|
53
|
+
safe_name = self.name.lower().replace(' ', '_')
|
|
54
|
+
else:
|
|
55
|
+
return None
|
|
56
|
+
kb_dir = Path(AGENTS_DIR) / safe_name / 'kb'
|
|
57
|
+
return kb_dir
|
|
58
|
+
|
|
59
|
+
async def configure_local_kb(self) -> None:
|
|
60
|
+
"""
|
|
61
|
+
Configure local markdown KB for this agent.
|
|
62
|
+
|
|
63
|
+
Called automatically during configure().
|
|
64
|
+
Loads markdown files from AGENTS_DIR/<agent_name>/kb/
|
|
65
|
+
|
|
66
|
+
Process:
|
|
67
|
+
1. Locate agent's KB directory
|
|
68
|
+
2. Scan for .md files
|
|
69
|
+
3. Create LocalMarkdownKB instance
|
|
70
|
+
4. Load and vectorize documents
|
|
71
|
+
5. Add to agent's knowledge_bases list
|
|
72
|
+
|
|
73
|
+
This method fails gracefully - if no KB exists or loading fails,
|
|
74
|
+
the agent continues without local KB.
|
|
75
|
+
"""
|
|
76
|
+
kb_dir = self._get_agent_kb_directory()
|
|
77
|
+
|
|
78
|
+
print('::: Configuring local KB from directory:', kb_dir)
|
|
79
|
+
|
|
80
|
+
if not kb_dir or not kb_dir.exists():
|
|
81
|
+
self.logger.debug(
|
|
82
|
+
f":: No local KB directory found at {kb_dir}"
|
|
83
|
+
)
|
|
84
|
+
return
|
|
85
|
+
|
|
86
|
+
# Check if directory has markdown or text files
|
|
87
|
+
local_files = self._get_kb_local_files(kb_dir)
|
|
88
|
+
if not local_files:
|
|
89
|
+
self.logger.debug(
|
|
90
|
+
f"No document files found in local KB directory {kb_dir}"
|
|
91
|
+
)
|
|
92
|
+
return
|
|
93
|
+
|
|
94
|
+
self.logger.notice(
|
|
95
|
+
f"Loading local KB from {kb_dir} "
|
|
96
|
+
f"({len(local_files)} document files)"
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
try:
|
|
100
|
+
# Create LocalKB store
|
|
101
|
+
from ...stores.kb.local import LocalKB
|
|
102
|
+
local_kb = LocalKB(
|
|
103
|
+
name=f"{self.name}_local",
|
|
104
|
+
kb_directory=kb_dir,
|
|
105
|
+
category="agent_local",
|
|
106
|
+
description=f"Local knowledge base for {self.name}",
|
|
107
|
+
embedding_model=getattr(
|
|
108
|
+
self,
|
|
109
|
+
'kb_embedding_model',
|
|
110
|
+
'sentence-transformers/all-mpnet-base-v2'
|
|
111
|
+
),
|
|
112
|
+
dimension=getattr(self, 'kb_dimension', 384),
|
|
113
|
+
always_active=True,
|
|
114
|
+
auto_load=True,
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
# Load documents
|
|
118
|
+
num_docs = await local_kb.load_documents()
|
|
119
|
+
|
|
120
|
+
# Add to knowledge bases list
|
|
121
|
+
if not hasattr(self, 'knowledge_bases'):
|
|
122
|
+
self.knowledge_bases = []
|
|
123
|
+
|
|
124
|
+
self.knowledge_bases.append(local_kb)
|
|
125
|
+
|
|
126
|
+
self.logger.info(
|
|
127
|
+
f"Local KB loaded: {num_docs} chunks from {len(local_files)} files"
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
except Exception as e:
|
|
131
|
+
self.logger.error(
|
|
132
|
+
f"Error loading local KB: {e}",
|
|
133
|
+
exc_info=True
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
def has_local_kb(self) -> bool:
|
|
137
|
+
"""
|
|
138
|
+
Check if agent has a local KB loaded.
|
|
139
|
+
|
|
140
|
+
Returns:
|
|
141
|
+
bool: True if local KB is present in knowledge_bases
|
|
142
|
+
"""
|
|
143
|
+
if not hasattr(self, 'knowledge_bases'):
|
|
144
|
+
return False
|
|
145
|
+
|
|
146
|
+
for kb in self.knowledge_bases:
|
|
147
|
+
if hasattr(kb, 'category') and kb.category == "agent_local":
|
|
148
|
+
return True
|
|
149
|
+
|
|
150
|
+
return False
|
|
151
|
+
|
|
152
|
+
def get_local_kb_info(self) -> Optional[dict]:
|
|
153
|
+
"""
|
|
154
|
+
Get information about the loaded local KB.
|
|
155
|
+
|
|
156
|
+
Returns:
|
|
157
|
+
Optional[dict]: KB info including name, directory, files count
|
|
158
|
+
"""
|
|
159
|
+
if not hasattr(self, 'knowledge_bases'):
|
|
160
|
+
return None
|
|
161
|
+
|
|
162
|
+
for kb in self.knowledge_bases:
|
|
163
|
+
if hasattr(kb, 'category') and kb.category == "agent_local":
|
|
164
|
+
return {
|
|
165
|
+
'name': kb.name,
|
|
166
|
+
'directory': str(kb.kb_directory),
|
|
167
|
+
'files_loaded': len(kb._loaded_files),
|
|
168
|
+
'is_loaded': kb._is_loaded,
|
|
169
|
+
'cache_file': str(kb.cache_file)
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return None
|
parrot/bots/webdev.py
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
|
|
2
|
+
from typing import List, Optional
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from .agent import BasicAgent
|
|
5
|
+
from ..tools.webapp_tool import WebAppGeneratorTool
|
|
6
|
+
from ..tools.abstract import AbstractTool
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class WebDeveloperAgent(BasicAgent):
|
|
10
|
+
"""
|
|
11
|
+
Specialized agent for web application development.
|
|
12
|
+
|
|
13
|
+
This agent has deep expertise in creating web applications using Streamlit,
|
|
14
|
+
React, and HTML/JavaScript. It can generate complete, production-ready apps
|
|
15
|
+
based on natural language descriptions.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
def __init__(
|
|
19
|
+
self,
|
|
20
|
+
name: str = 'WebDeveloper',
|
|
21
|
+
agent_id: str = 'webdev',
|
|
22
|
+
use_llm: str = 'google',
|
|
23
|
+
output_dir: Optional[Path] = None,
|
|
24
|
+
**kwargs
|
|
25
|
+
):
|
|
26
|
+
"""
|
|
27
|
+
Initialize the WebDeveloper Agent.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
name: Agent name
|
|
31
|
+
agent_id: Unique agent identifier
|
|
32
|
+
use_llm: LLM provider to use
|
|
33
|
+
output_dir: Directory for saving generated apps
|
|
34
|
+
**kwargs: Additional arguments
|
|
35
|
+
"""
|
|
36
|
+
self.output_dir = output_dir or Path('./generated_apps')
|
|
37
|
+
self.output_dir.mkdir(parents=True, exist_ok=True)
|
|
38
|
+
super().__init__(
|
|
39
|
+
name=name,
|
|
40
|
+
agent_id=agent_id,
|
|
41
|
+
use_llm=use_llm,
|
|
42
|
+
system_prompt=self._get_system_prompt(),
|
|
43
|
+
**kwargs
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
def agent_tools(self) -> List[AbstractTool]:
|
|
47
|
+
"""Return web development specific tools."""
|
|
48
|
+
return [
|
|
49
|
+
WebAppGeneratorTool(
|
|
50
|
+
llm_client=self.llm,
|
|
51
|
+
output_dir=self.output_dir,
|
|
52
|
+
default_type='streamlit'
|
|
53
|
+
)
|
|
54
|
+
]
|
|
55
|
+
|
|
56
|
+
def _get_system_prompt(self) -> str:
|
|
57
|
+
"""Return the specialized system prompt for web development."""
|
|
58
|
+
return """You are an expert full-stack web developer specializing in rapid application development.
|
|
59
|
+
|
|
60
|
+
Your expertise includes:
|
|
61
|
+
- Building data-driven applications with Streamlit
|
|
62
|
+
- Creating modern single-page applications with React
|
|
63
|
+
- Developing standalone web pages with HTML/CSS/JavaScript
|
|
64
|
+
- UI/UX design and responsive layouts
|
|
65
|
+
- Data visualization and interactive dashboards
|
|
66
|
+
|
|
67
|
+
When users ask you to create applications:
|
|
68
|
+
1. Ask clarifying questions about requirements if needed
|
|
69
|
+
2. Choose the most appropriate technology (Streamlit for data apps, React for complex UIs, HTML for simple pages)
|
|
70
|
+
3. Use the web_app_generator tool to create the application
|
|
71
|
+
4. Explain the generated code and how to run/deploy it
|
|
72
|
+
5. Offer to make modifications or improvements
|
|
73
|
+
|
|
74
|
+
Always generate production-ready, well-structured code with:
|
|
75
|
+
- Clear documentation and comments
|
|
76
|
+
- Proper error handling
|
|
77
|
+
- Responsive design
|
|
78
|
+
- Accessibility considerations
|
|
79
|
+
- Modern best practices
|
|
80
|
+
|
|
81
|
+
Be conversational and helpful. Guide users through the development process."""
|
parrot/cli.py
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""Top-level CLI entrypoint for Parrot utilities."""
|
|
2
|
+
import click
|
|
3
|
+
from parrot.mcp.cli import mcp
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@click.group()
|
|
7
|
+
def cli():
|
|
8
|
+
"""Parrot command-line interface."""
|
|
9
|
+
pass
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# Attach subcommands
|
|
13
|
+
cli.add_command(mcp, name="mcp")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
if __name__ == "__main__":
|
|
17
|
+
cli()
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Client for Interactions with LLMs (Language Models)
|
|
3
|
+
This module provides a client interface for interacting with various LLMs.
|
|
4
|
+
It includes functionality for sending requests, receiving responses, and handling errors.
|
|
5
|
+
"""
|
|
6
|
+
from .base import (
|
|
7
|
+
AbstractClient,
|
|
8
|
+
LLM_PRESETS,
|
|
9
|
+
StreamingRetryConfig
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
__all__ = (
|
|
13
|
+
"AbstractClient",
|
|
14
|
+
"LLM_PRESETS",
|
|
15
|
+
"StreamingRetryConfig"
|
|
16
|
+
)
|