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,74 @@
|
|
|
1
|
+
from typing import List, Any
|
|
2
|
+
from enum import Enum
|
|
3
|
+
import numpy as np
|
|
4
|
+
from .base import EmbeddingModel
|
|
5
|
+
from ..conf import HUGGINGFACE_EMBEDDING_CACHE_DIR
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ModelType(Enum):
|
|
9
|
+
"""Enumerator for different model types used in embeddings."""
|
|
10
|
+
MPNET = "sentence-transformers/all-mpnet-base-v2"
|
|
11
|
+
MINILM = "sentence-transformers/all-MiniLM-L6-v2"
|
|
12
|
+
BGE_LARGE = "BAAI/bge-large-en-v1.5"
|
|
13
|
+
GTE_BASE = "thenlper/gte-base"
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class SentenceTransformerModel(EmbeddingModel):
|
|
17
|
+
"""
|
|
18
|
+
A wrapper class for HuggingFace sentence-transformers embeddings.
|
|
19
|
+
"""
|
|
20
|
+
model_name: str = "sentence-transformers/all-mpnet-base-v2"
|
|
21
|
+
|
|
22
|
+
def __init__(self, model_name: str, **kwargs):
|
|
23
|
+
"""
|
|
24
|
+
Initializes the embedding model with the specified model name.
|
|
25
|
+
|
|
26
|
+
Args:
|
|
27
|
+
model_name: The name of the Hugging Face model to load.
|
|
28
|
+
**kwargs: Additional keyword arguments for SentenceTransformer.
|
|
29
|
+
"""
|
|
30
|
+
super().__init__(model_name=model_name, **kwargs)
|
|
31
|
+
self.logger.info(
|
|
32
|
+
f"Initialized SentenceTransformerModel with model: {self.model_name}"
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
def _create_embedding(self, model_name: str = None, **kwargs) -> Any:
|
|
36
|
+
"""
|
|
37
|
+
Creates and returns the SentenceTransformer model instance.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
model_name: The name of the Hugging Face model to load.
|
|
41
|
+
|
|
42
|
+
Returns:
|
|
43
|
+
An instance of SentenceTransformer.
|
|
44
|
+
"""
|
|
45
|
+
from sentence_transformers import SentenceTransformer
|
|
46
|
+
import torch
|
|
47
|
+
|
|
48
|
+
# Access self.device via property (calls _get_device lazily)
|
|
49
|
+
device = self.device
|
|
50
|
+
model_name = model_name or self.model_name
|
|
51
|
+
|
|
52
|
+
self.logger.info(
|
|
53
|
+
f"Loading embedding model '{model_name}' on device '{device}'"
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
model = SentenceTransformer(
|
|
57
|
+
model_name,
|
|
58
|
+
device=device,
|
|
59
|
+
cache_folder=HUGGINGFACE_EMBEDDING_CACHE_DIR
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
# Set dimension after loading model
|
|
63
|
+
self._dimension = model.get_sentence_embedding_dimension()
|
|
64
|
+
|
|
65
|
+
# Production optimizations
|
|
66
|
+
model.eval()
|
|
67
|
+
if str(device) == "cuda":
|
|
68
|
+
model.half() # Use FP16 for GPU inference
|
|
69
|
+
torch.backends.cudnn.benchmark = True
|
|
70
|
+
|
|
71
|
+
return model
|
|
72
|
+
|
|
73
|
+
async def encode(self, texts: List[str], **kwargs) -> np.ndarray:
|
|
74
|
+
return self.model.encode(texts, **kwargs)
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
from typing import Any, List, Union, Optional
|
|
2
|
+
import asyncio
|
|
3
|
+
import numpy as np
|
|
4
|
+
from navconfig import config
|
|
5
|
+
from openai import AsyncOpenAI
|
|
6
|
+
from .base import EmbeddingModel
|
|
7
|
+
|
|
8
|
+
class OpenAIEmbeddingModel(EmbeddingModel):
|
|
9
|
+
"""A wrapper class for OpenAI Embedding models.
|
|
10
|
+
"""
|
|
11
|
+
model_name: str = "text-embedding-3-large"
|
|
12
|
+
|
|
13
|
+
def __init__(self, model_name: str = None, dimensions: int = None, **kwargs):
|
|
14
|
+
self.api_key = kwargs.pop('api_key', config.get('OPENAI_API_KEY'))
|
|
15
|
+
if model_name:
|
|
16
|
+
self.model_name = model_name
|
|
17
|
+
self.dimensions = dimensions
|
|
18
|
+
self._dimension = dimensions
|
|
19
|
+
super().__init__(model_name=self.model_name, **kwargs)
|
|
20
|
+
|
|
21
|
+
def _create_embedding(self, model_name: str = None, **kwargs) -> Any:
|
|
22
|
+
"""
|
|
23
|
+
Creates and returns an OpenAI client instance.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
model_name: The name of the OpenAI model to load.
|
|
27
|
+
|
|
28
|
+
Returns:
|
|
29
|
+
An instance of AsyncOpenAI client.
|
|
30
|
+
"""
|
|
31
|
+
if model_name:
|
|
32
|
+
self.model_name = model_name
|
|
33
|
+
|
|
34
|
+
self.logger.info(
|
|
35
|
+
f"Loading embedding model '{self.model_name}'"
|
|
36
|
+
)
|
|
37
|
+
# Using AsyncOpenAI as consistent with other parts of the system
|
|
38
|
+
return AsyncOpenAI(api_key=self.api_key)
|
|
39
|
+
|
|
40
|
+
async def encode(self, texts: List[str], **kwargs) -> List[List[float]]:
|
|
41
|
+
"""Generate embeddings for a list of texts using AsyncOpenAI.
|
|
42
|
+
|
|
43
|
+
This mirrors the official OpenAI embeddings guide, allowing callers to
|
|
44
|
+
override the model or dimensions per request while keeping asynchronous
|
|
45
|
+
semantics.
|
|
46
|
+
"""
|
|
47
|
+
model = kwargs.pop("model", self.model_name)
|
|
48
|
+
dimensions = kwargs.pop("dimensions", self.dimensions)
|
|
49
|
+
call_kwargs = {
|
|
50
|
+
"model": model,
|
|
51
|
+
"input": texts,
|
|
52
|
+
"encoding_format": "float",
|
|
53
|
+
**kwargs,
|
|
54
|
+
}
|
|
55
|
+
if dimensions:
|
|
56
|
+
call_kwargs["dimensions"] = dimensions
|
|
57
|
+
|
|
58
|
+
result = await self.model.embeddings.create(**call_kwargs)
|
|
59
|
+
embeddings = [data.embedding for data in result.data]
|
|
60
|
+
if embeddings and not self._dimension:
|
|
61
|
+
# Keep a record of the dimension reported by the service when not set
|
|
62
|
+
self._dimension = len(embeddings[0])
|
|
63
|
+
return embeddings
|
|
64
|
+
|
|
65
|
+
async def embed_query(
|
|
66
|
+
self,
|
|
67
|
+
text: str,
|
|
68
|
+
as_nparray: bool = False
|
|
69
|
+
) -> Union[List[float], List[np.ndarray]]:
|
|
70
|
+
"""
|
|
71
|
+
Generates an embedding for a single query string asynchronously.
|
|
72
|
+
"""
|
|
73
|
+
embeddings = await self.encode([text])
|
|
74
|
+
embedding = embeddings[0]
|
|
75
|
+
|
|
76
|
+
if as_nparray:
|
|
77
|
+
return [np.array(embedding)]
|
|
78
|
+
return embedding
|
|
79
|
+
|
|
80
|
+
async def embed_documents(self, texts: List[str], batch_size: Optional[int] = None) -> List[List[float]]:
|
|
81
|
+
"""
|
|
82
|
+
Generates embeddings for a list of documents asynchronously.
|
|
83
|
+
"""
|
|
84
|
+
return await self.encode(texts)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
from typing import List, Dict, Any, Tuple
|
|
2
|
+
import numpy as np
|
|
3
|
+
from .huggingface import SentenceTransformerModel
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class LateChunkingProcessor:
|
|
7
|
+
"""Processor for handling late chunking of documents using embeddings.
|
|
8
|
+
This class processes documents by generating embeddings for the entire document first,
|
|
9
|
+
then splitting it into semantic chunks while preserving boundaries.
|
|
10
|
+
It uses the SentenceTransformerModel to generate embeddings and chunk metadata.
|
|
11
|
+
"""
|
|
12
|
+
def __init__(self, embedding_generator: SentenceTransformerModel, chunk_size: int = 8192):
|
|
13
|
+
self.embedding_generator = embedding_generator
|
|
14
|
+
self.chunk_size = chunk_size
|
|
15
|
+
|
|
16
|
+
async def process_document_late_chunking(
|
|
17
|
+
self,
|
|
18
|
+
document_text: str,
|
|
19
|
+
document_id: str
|
|
20
|
+
) -> Tuple[List[np.ndarray], List[Dict[str, Any]]]:
|
|
21
|
+
"""Process document with late chunking strategy"""
|
|
22
|
+
|
|
23
|
+
# Step 1: Generate full-document token embeddings
|
|
24
|
+
full_embeddings = await self.embedding_generator.encode([document_text])
|
|
25
|
+
|
|
26
|
+
# Step 2: Split into semantic chunks while preserving boundaries
|
|
27
|
+
chunks = self._semantic_chunk_split(document_text)
|
|
28
|
+
|
|
29
|
+
# Step 3: Map chunks to their corresponding token ranges
|
|
30
|
+
chunk_embeddings = []
|
|
31
|
+
chunk_metadata = []
|
|
32
|
+
|
|
33
|
+
for chunk_idx, chunk_text in enumerate(chunks):
|
|
34
|
+
# Calculate token range for this chunk
|
|
35
|
+
start_pos = document_text.find(chunk_text)
|
|
36
|
+
end_pos = start_pos + len(chunk_text)
|
|
37
|
+
|
|
38
|
+
# Extract embeddings for this chunk's token range
|
|
39
|
+
chunk_embedding = await self._extract_chunk_embedding(
|
|
40
|
+
full_embeddings[0], chunk_text, document_text
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
chunk_embeddings.append(chunk_embedding)
|
|
44
|
+
chunk_metadata.append({
|
|
45
|
+
'document_id': document_id,
|
|
46
|
+
'chunk_index': chunk_idx,
|
|
47
|
+
'start_position': start_pos,
|
|
48
|
+
'end_position': end_pos,
|
|
49
|
+
'chunk_text': chunk_text[:200] + '...' if len(chunk_text) > 200 else chunk_text
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
return chunk_embeddings, chunk_metadata
|
|
53
|
+
|
|
54
|
+
def _semantic_chunk_split(self, text: str) -> List[str]:
|
|
55
|
+
"""Split text preserving sentence and paragraph boundaries"""
|
|
56
|
+
# Split by double newlines (paragraphs) first
|
|
57
|
+
paragraphs = text.split('\n\n')
|
|
58
|
+
chunks = []
|
|
59
|
+
current_chunk = []
|
|
60
|
+
current_size = 0
|
|
61
|
+
|
|
62
|
+
for paragraph in paragraphs:
|
|
63
|
+
paragraph_size = len(paragraph)
|
|
64
|
+
|
|
65
|
+
if current_size + paragraph_size > self.chunk_size and current_chunk:
|
|
66
|
+
chunks.append('\n\n'.join(current_chunk))
|
|
67
|
+
current_chunk = [paragraph]
|
|
68
|
+
current_size = paragraph_size
|
|
69
|
+
else:
|
|
70
|
+
current_chunk.append(paragraph)
|
|
71
|
+
current_size += paragraph_size
|
|
72
|
+
|
|
73
|
+
if current_chunk:
|
|
74
|
+
chunks.append('\n\n'.join(current_chunk))
|
|
75
|
+
|
|
76
|
+
return chunks
|
|
77
|
+
|
|
78
|
+
async def _extract_chunk_embedding(
|
|
79
|
+
self,
|
|
80
|
+
full_embedding: np.ndarray,
|
|
81
|
+
chunk_text: str,
|
|
82
|
+
full_text: str
|
|
83
|
+
) -> np.ndarray:
|
|
84
|
+
"""Extract contextualized embedding for chunk"""
|
|
85
|
+
# For now, re-embed the chunk with full context
|
|
86
|
+
# In practice, you might use token-level alignments
|
|
87
|
+
chunk_embedding = await self.embedding_generator.encode([chunk_text])
|
|
88
|
+
return chunk_embedding[0]
|