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
parrot/openapi/config.py
ADDED
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
"""
|
|
2
|
+
OpenAPI Configuration for AI-Parrot
|
|
3
|
+
====================================
|
|
4
|
+
|
|
5
|
+
Configure aiohttp-swagger3 with complete OpenAPI 3.0 schemas for all handlers.
|
|
6
|
+
"""
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
from aiohttp import web
|
|
9
|
+
from aiohttp_swagger3 import (
|
|
10
|
+
SwaggerDocs,
|
|
11
|
+
SwaggerInfo,
|
|
12
|
+
SwaggerContact,
|
|
13
|
+
SwaggerLicense,
|
|
14
|
+
SwaggerUiSettings,
|
|
15
|
+
ReDocUiSettings,
|
|
16
|
+
RapiDocUiSettings
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def setup_swagger(app: web.Application) -> web.Application:
|
|
21
|
+
"""
|
|
22
|
+
Configure Swagger/OpenAPI documentation for AI-Parrot.
|
|
23
|
+
|
|
24
|
+
Enables three UI options:
|
|
25
|
+
- Swagger UI at /api/docs
|
|
26
|
+
- ReDoc at /api/docs/redoc
|
|
27
|
+
- RapiDoc at /api/docs/rapidoc
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
app: aiohttp Application instance
|
|
31
|
+
|
|
32
|
+
Returns:
|
|
33
|
+
Configured application with documentation endpoints
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
# Define API Information
|
|
37
|
+
swagger_info = SwaggerInfo(
|
|
38
|
+
title="AI-Parrot API",
|
|
39
|
+
version="1.0.0",
|
|
40
|
+
description="""
|
|
41
|
+
# AI-Parrot: Multi-Agent & Chatbot Platform
|
|
42
|
+
|
|
43
|
+
AI-Parrot es una plataforma completa para trabajar con LLMs, agentes y chatbots.
|
|
44
|
+
|
|
45
|
+
## Características principales
|
|
46
|
+
|
|
47
|
+
- 🤖 **Chatbots inteligentes** con RAG y memoria conversacional
|
|
48
|
+
- 🎯 **Agentes autónomos** con herramientas y MCP servers
|
|
49
|
+
- 🔄 **Orquestación de crews** para tareas complejas
|
|
50
|
+
- 💾 **Vector stores** con PgVector para búsqueda semántica
|
|
51
|
+
- 🔧 **Toolkits extensibles** para integración con sistemas externos
|
|
52
|
+
- 📊 **Structured outputs** con validación Pydantic
|
|
53
|
+
|
|
54
|
+
## Clientes LLM soportados
|
|
55
|
+
|
|
56
|
+
- Google GenAI (Gemini)
|
|
57
|
+
- OpenAI (GPT-4, GPT-3.5)
|
|
58
|
+
- Anthropic Claude
|
|
59
|
+
- Groq
|
|
60
|
+
|
|
61
|
+
## Arquitectura REST
|
|
62
|
+
|
|
63
|
+
Todos los endpoints siguen convenciones RESTful estándar:
|
|
64
|
+
- `GET` - Obtener información
|
|
65
|
+
- `POST` - Crear o ejecutar acciones
|
|
66
|
+
- `PUT` - Crear recursos
|
|
67
|
+
- `PATCH` - Actualizar recursos parcialmente
|
|
68
|
+
- `DELETE` - Eliminar recursos
|
|
69
|
+
|
|
70
|
+
## Autenticación
|
|
71
|
+
|
|
72
|
+
La mayoría de endpoints requieren autenticación mediante session cookies.
|
|
73
|
+
Algunos endpoints administrativos requieren privilegios de superuser.
|
|
74
|
+
""",
|
|
75
|
+
contact=SwaggerContact(
|
|
76
|
+
name="AI-Parrot Development Team",
|
|
77
|
+
url="https://github.com/phenobarbital/ai-parrot",
|
|
78
|
+
email="support@ai-parrot.dev"
|
|
79
|
+
),
|
|
80
|
+
license=SwaggerLicense(
|
|
81
|
+
name="MIT License",
|
|
82
|
+
url="https://opensource.org/licenses/MIT"
|
|
83
|
+
),
|
|
84
|
+
terms_of_service="https://github.com/phenobarbital/ai-parrot/blob/main/TERMS.md"
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
# Configure Swagger UI (familiar interface for developers)
|
|
88
|
+
swagger_ui_settings = SwaggerUiSettings(
|
|
89
|
+
path="/api/docs",
|
|
90
|
+
docExpansion="list", # 'list', 'full', 'none'
|
|
91
|
+
filter=True, # Enable search filter
|
|
92
|
+
deepLinking=True, # Enable deep linking for tags and operations
|
|
93
|
+
displayRequestDuration=True, # Show request duration
|
|
94
|
+
defaultModelsExpandDepth=3, # Expand models by default
|
|
95
|
+
defaultModelExpandDepth=3,
|
|
96
|
+
showExtensions=True,
|
|
97
|
+
showCommonExtensions=True
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
# Configure ReDoc (beautiful, professional documentation)
|
|
101
|
+
redoc_ui_settings = ReDocUiSettings(
|
|
102
|
+
path="/api/docs/redoc",
|
|
103
|
+
expandResponses="200,201", # Auto-expand successful responses
|
|
104
|
+
jsonSampleExpandLevel=3, # Expand JSON examples
|
|
105
|
+
hideDownloadButton=False,
|
|
106
|
+
disableSearch=False,
|
|
107
|
+
hideHostname=False,
|
|
108
|
+
expandSingleSchemaField=True,
|
|
109
|
+
menuToggle=True,
|
|
110
|
+
sortPropsAlphabetically=True,
|
|
111
|
+
payloadSampleIdx=0, # Show first example by default
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
# Configure RapiDoc (modern, customizable with dark mode)
|
|
115
|
+
rapidoc_ui_settings = RapiDocUiSettings(
|
|
116
|
+
path="/api/docs/rapidoc",
|
|
117
|
+
theme="dark", # 'light' or 'dark'
|
|
118
|
+
render_style="focused", # 'read', 'view', 'focused'
|
|
119
|
+
schema_style="tree", # 'tree' or 'table'
|
|
120
|
+
layout="column", # 'row' or 'column'
|
|
121
|
+
allow_try=True, # Enable "Try it out"
|
|
122
|
+
allow_authentication=True,
|
|
123
|
+
allow_spec_url_load=False,
|
|
124
|
+
allow_spec_file_load=False,
|
|
125
|
+
heading_text="AI-Parrot API Documentation",
|
|
126
|
+
show_header=True,
|
|
127
|
+
show_info=True,
|
|
128
|
+
use_path_in_nav_bar=True,
|
|
129
|
+
nav_bg_color="#1e1e1e",
|
|
130
|
+
nav_text_color="#ffffff",
|
|
131
|
+
nav_hover_bg_color="#333333",
|
|
132
|
+
primary_color="#4CAF50",
|
|
133
|
+
font_size="default",
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
# Initialize SwaggerDocs
|
|
137
|
+
current_dir = Path(__file__).parent
|
|
138
|
+
components_path = current_dir / "components.yaml"
|
|
139
|
+
|
|
140
|
+
swagger = SwaggerDocs(
|
|
141
|
+
app,
|
|
142
|
+
info=swagger_info,
|
|
143
|
+
swagger_ui_settings=swagger_ui_settings,
|
|
144
|
+
redoc_ui_settings=redoc_ui_settings,
|
|
145
|
+
rapidoc_ui_settings=rapidoc_ui_settings,
|
|
146
|
+
components=str(components_path), # External components file
|
|
147
|
+
validate=True, # Validate requests against schema
|
|
148
|
+
request_key="swagger_dict", # Key to store validated data in request
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
return app
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def get_common_responses():
|
|
155
|
+
"""
|
|
156
|
+
Common HTTP responses used across all endpoints.
|
|
157
|
+
|
|
158
|
+
Returns:
|
|
159
|
+
Dict of reusable response definitions
|
|
160
|
+
"""
|
|
161
|
+
return {
|
|
162
|
+
"400": {
|
|
163
|
+
"description": "Bad Request - Invalid input parameters",
|
|
164
|
+
"content": {
|
|
165
|
+
"application/json": {
|
|
166
|
+
"schema": {
|
|
167
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
168
|
+
},
|
|
169
|
+
"example": {
|
|
170
|
+
"error": "Bad Request",
|
|
171
|
+
"message": "Invalid JSON in request body",
|
|
172
|
+
"details": {}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
"401": {
|
|
178
|
+
"description": "Unauthorized - Authentication required",
|
|
179
|
+
"content": {
|
|
180
|
+
"application/json": {
|
|
181
|
+
"schema": {
|
|
182
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
183
|
+
},
|
|
184
|
+
"example": {
|
|
185
|
+
"error": "Unauthorized",
|
|
186
|
+
"message": "Valid session required"
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"403": {
|
|
192
|
+
"description": "Forbidden - Insufficient permissions",
|
|
193
|
+
"content": {
|
|
194
|
+
"application/json": {
|
|
195
|
+
"schema": {
|
|
196
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
197
|
+
},
|
|
198
|
+
"example": {
|
|
199
|
+
"error": "Forbidden",
|
|
200
|
+
"message": "Superuser privileges required"
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"404": {
|
|
206
|
+
"description": "Not Found - Resource does not exist",
|
|
207
|
+
"content": {
|
|
208
|
+
"application/json": {
|
|
209
|
+
"schema": {
|
|
210
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
211
|
+
},
|
|
212
|
+
"example": {
|
|
213
|
+
"error": "Not Found",
|
|
214
|
+
"message": "Chatbot 'my_bot' not found"
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
"422": {
|
|
220
|
+
"description": "Unprocessable Entity - Validation error",
|
|
221
|
+
"content": {
|
|
222
|
+
"application/json": {
|
|
223
|
+
"schema": {
|
|
224
|
+
"$ref": "#/components/schemas/ValidationErrorResponse"
|
|
225
|
+
},
|
|
226
|
+
"example": {
|
|
227
|
+
"error": "Validation Error",
|
|
228
|
+
"message": "Input validation failed",
|
|
229
|
+
"errors": [
|
|
230
|
+
{
|
|
231
|
+
"loc": ["body", "temperature"],
|
|
232
|
+
"msg": "ensure this value is less than or equal to 2.0",
|
|
233
|
+
"type": "value_error"
|
|
234
|
+
}
|
|
235
|
+
]
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
"500": {
|
|
241
|
+
"description": "Internal Server Error",
|
|
242
|
+
"content": {
|
|
243
|
+
"application/json": {
|
|
244
|
+
"schema": {
|
|
245
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
246
|
+
},
|
|
247
|
+
"example": {
|
|
248
|
+
"error": "Internal Server Error",
|
|
249
|
+
"message": "An unexpected error occurred"
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def get_security_schemes():
|
|
258
|
+
"""
|
|
259
|
+
Security schemes for API authentication.
|
|
260
|
+
|
|
261
|
+
Returns:
|
|
262
|
+
Dict of security scheme definitions
|
|
263
|
+
"""
|
|
264
|
+
return {
|
|
265
|
+
"sessionAuth": {
|
|
266
|
+
"type": "apiKey",
|
|
267
|
+
"in": "cookie",
|
|
268
|
+
"name": "session",
|
|
269
|
+
"description": "Session-based authentication using HTTP cookies"
|
|
270
|
+
},
|
|
271
|
+
"bearerAuth": {
|
|
272
|
+
"type": "http",
|
|
273
|
+
"scheme": "bearer",
|
|
274
|
+
"bearerFormat": "JWT",
|
|
275
|
+
"description": "JWT token authentication"
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
# Tags for organizing endpoints
|
|
281
|
+
TAGS_METADATA = [
|
|
282
|
+
{
|
|
283
|
+
"name": "chatbots",
|
|
284
|
+
"description": "Operaciones relacionadas con chatbots - interacción y consulta de información",
|
|
285
|
+
"externalDocs": {
|
|
286
|
+
"description": "Chatbot documentation",
|
|
287
|
+
"url": "https://github.com/phenobarbital/ai-parrot/blob/main/docs/chatbots.md"
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"name": "bot-management",
|
|
292
|
+
"description": "Gestión CRUD de bots/agents - crear, listar, actualizar, eliminar",
|
|
293
|
+
"externalDocs": {
|
|
294
|
+
"description": "Bot management guide",
|
|
295
|
+
"url": "https://github.com/phenobarbital/ai-parrot/blob/main/docs/bot-management.md"
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"name": "agents",
|
|
300
|
+
"description": "Interacción con agentes autónomos - conversaciones con soporte para tools y MCP",
|
|
301
|
+
"externalDocs": {
|
|
302
|
+
"description": "Agent documentation",
|
|
303
|
+
"url": "https://github.com/phenobarbital/ai-parrot/blob/main/docs/agents.md"
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"name": "crews",
|
|
308
|
+
"description": "Orquestación de crews multi-agente para tareas complejas",
|
|
309
|
+
"externalDocs": {
|
|
310
|
+
"description": "Crew orchestration guide",
|
|
311
|
+
"url": "https://github.com/phenobarbital/ai-parrot/blob/main/docs/crews.md"
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"name": "tools",
|
|
316
|
+
"description": "Registro y gestión de herramientas para agentes",
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"name": "feedback",
|
|
320
|
+
"description": "Sistema de feedback para mejorar respuestas de bots",
|
|
321
|
+
}
|
|
322
|
+
]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Output formatters for AI-Parrot using Rich (terminal) and Panel (HTML) with Jupyter support.
|
|
3
|
+
- Interactive widgets and controls
|
|
4
|
+
- Rich markdown rendering
|
|
5
|
+
- Collapsible sections
|
|
6
|
+
- Inline visualizations
|
|
7
|
+
- Syntax highlighting
|
|
8
|
+
- Tables and structured data
|
|
9
|
+
|
|
10
|
+
Automatically detects and renders:
|
|
11
|
+
- Folium maps
|
|
12
|
+
- Plotly charts
|
|
13
|
+
- Matplotlib figures
|
|
14
|
+
- DataFrames
|
|
15
|
+
- Bokeh plots
|
|
16
|
+
- Altair charts
|
|
17
|
+
- Panel dashboards
|
|
18
|
+
- HTML widgets
|
|
19
|
+
- Images
|
|
20
|
+
|
|
21
|
+
Each output type is rendered appropriately based on the output mode (Terminal, HTML, Jupyter).
|
|
22
|
+
HTML mode generates embeddable widgets for integration with Streamlit, Gradio, web apps, etc.
|
|
23
|
+
"""
|
|
24
|
+
from ..models.outputs import OutputMode, OutputType
|
|
25
|
+
from .formatter import OutputFormatter
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
__all__ = (
|
|
29
|
+
'OutputMode',
|
|
30
|
+
'OutputType',
|
|
31
|
+
'OutputFormatter',
|
|
32
|
+
)
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import contextlib
|
|
2
|
+
from typing import Protocol, Dict, Type, Any, Optional
|
|
3
|
+
from importlib import import_module
|
|
4
|
+
from ...models.outputs import OutputMode
|
|
5
|
+
|
|
6
|
+
class Renderer(Protocol):
|
|
7
|
+
"""Protocol for output renderers."""
|
|
8
|
+
@staticmethod
|
|
9
|
+
def render(data: Any, **kwargs) -> Any:
|
|
10
|
+
...
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
RENDERERS: Dict[OutputMode, Type[Renderer]] = {}
|
|
14
|
+
_PROMPTS: Dict[OutputMode, str] = {}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def register_renderer(mode: OutputMode, system_prompt: Optional[str] = None):
|
|
18
|
+
"""
|
|
19
|
+
Decorator to register a renderer class and optionally its system prompt.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
mode: OutputMode enum value
|
|
23
|
+
system_prompt: Optional system prompt to inject when using this mode
|
|
24
|
+
"""
|
|
25
|
+
print(':::: Registering renderer for mode:', mode)
|
|
26
|
+
def decorator(cls):
|
|
27
|
+
RENDERERS[mode] = cls
|
|
28
|
+
if system_prompt:
|
|
29
|
+
_PROMPTS[mode] = system_prompt
|
|
30
|
+
return cls
|
|
31
|
+
return decorator
|
|
32
|
+
|
|
33
|
+
def get_renderer(mode: OutputMode) -> Type[Renderer]:
|
|
34
|
+
"""Get the renderer class for the given output mode."""
|
|
35
|
+
if mode not in RENDERERS:
|
|
36
|
+
# Lazy load the module to register the renderer
|
|
37
|
+
with contextlib.suppress(ImportError):
|
|
38
|
+
if mode == OutputMode.TERMINAL:
|
|
39
|
+
import_module('.terminal', 'parrot.outputs.formats')
|
|
40
|
+
elif mode == OutputMode.HTML:
|
|
41
|
+
import_module('.html', 'parrot.outputs.formats')
|
|
42
|
+
elif mode == OutputMode.JSON:
|
|
43
|
+
import_module('.json', 'parrot.outputs.formats')
|
|
44
|
+
elif mode == OutputMode.MARKDOWN:
|
|
45
|
+
import_module('.markdown', 'parrot.outputs.formats')
|
|
46
|
+
elif mode == OutputMode.YAML:
|
|
47
|
+
import_module('.yaml', 'parrot.outputs.formats')
|
|
48
|
+
elif mode == OutputMode.CHART:
|
|
49
|
+
import_module('.charts', 'parrot.outputs.formats')
|
|
50
|
+
elif mode == OutputMode.MAP:
|
|
51
|
+
import_module('.map', 'parrot.outputs.formats')
|
|
52
|
+
elif mode == OutputMode.ALTAIR:
|
|
53
|
+
import_module('.altair', 'parrot.outputs.formats')
|
|
54
|
+
elif mode == OutputMode.JINJA2:
|
|
55
|
+
import_module('.jinja2', 'parrot.outputs.formats')
|
|
56
|
+
elif mode == OutputMode.TEMPLATE_REPORT:
|
|
57
|
+
import_module('.template_report', 'parrot.outputs.formats')
|
|
58
|
+
elif mode == OutputMode.BOKEH:
|
|
59
|
+
import_module('.bokeh', 'parrot.outputs.formats')
|
|
60
|
+
elif mode == OutputMode.PLOTLY:
|
|
61
|
+
import_module('.plotly', 'parrot.outputs.formats')
|
|
62
|
+
elif mode == OutputMode.MATPLOTLIB:
|
|
63
|
+
import_module('.matplotlib', 'parrot.outputs.formats')
|
|
64
|
+
elif mode == OutputMode.D3:
|
|
65
|
+
import_module('.d3', 'parrot.outputs.formats')
|
|
66
|
+
elif mode == OutputMode.ECHARTS:
|
|
67
|
+
import_module('.echarts', 'parrot.outputs.formats')
|
|
68
|
+
elif mode == OutputMode.SEABORN:
|
|
69
|
+
import_module('.seaborn', 'parrot.outputs.formats')
|
|
70
|
+
elif mode == OutputMode.HOLOVIEWS:
|
|
71
|
+
import_module('.holoviews', 'parrot.outputs.formats')
|
|
72
|
+
elif mode == OutputMode.TABLE:
|
|
73
|
+
import_module('.table', 'parrot.outputs.formats')
|
|
74
|
+
elif mode == OutputMode.APPLICATION:
|
|
75
|
+
import_module('.application', 'parrot.outputs.formats')
|
|
76
|
+
elif mode == OutputMode.CARD:
|
|
77
|
+
import_module('.card', 'parrot.outputs.formats')
|
|
78
|
+
try:
|
|
79
|
+
return RENDERERS[mode]
|
|
80
|
+
except KeyError as exc:
|
|
81
|
+
raise ValueError(
|
|
82
|
+
f"No renderer registered for mode: {mode}"
|
|
83
|
+
) from exc
|
|
84
|
+
|
|
85
|
+
def get_output_prompt(mode: OutputMode) -> Optional[str]:
|
|
86
|
+
"""Get system prompt for mode."""
|
|
87
|
+
# Trigger lazy loading to ensure decorator has run
|
|
88
|
+
if mode not in _PROMPTS:
|
|
89
|
+
with contextlib.suppress(ValueError):
|
|
90
|
+
get_renderer(mode)
|
|
91
|
+
return _PROMPTS.get(mode)
|
|
92
|
+
|
|
93
|
+
def has_system_prompt(mode: OutputMode) -> bool:
|
|
94
|
+
"""Check if mode has a registered system prompt."""
|
|
95
|
+
if mode not in _PROMPTS:
|
|
96
|
+
with contextlib.suppress(ValueError):
|
|
97
|
+
get_renderer(mode)
|
|
98
|
+
return mode in _PROMPTS
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
__all__ = (
|
|
102
|
+
'RENDERERS',
|
|
103
|
+
'register_renderer',
|
|
104
|
+
'get_renderer',
|
|
105
|
+
'Renderer',
|
|
106
|
+
'get_output_prompt',
|
|
107
|
+
'has_system_prompt',
|
|
108
|
+
)
|