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,192 @@
|
|
|
1
|
+
-- Drop existing table if it exists (uncomment if needed)
|
|
2
|
+
DROP TABLE IF EXISTS navigator.ai_bots CASCADE;
|
|
3
|
+
|
|
4
|
+
-- Create the unified AI bots table
|
|
5
|
+
CREATE TABLE IF NOT EXISTS navigator.ai_bots (
|
|
6
|
+
-- Primary key
|
|
7
|
+
chatbot_id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
8
|
+
|
|
9
|
+
-- Basic bot information
|
|
10
|
+
name VARCHAR NOT NULL,
|
|
11
|
+
description TEXT,
|
|
12
|
+
avatar TEXT,
|
|
13
|
+
enabled BOOLEAN NOT NULL DEFAULT TRUE,
|
|
14
|
+
timezone VARCHAR(75) DEFAULT 'UTC',
|
|
15
|
+
|
|
16
|
+
-- Bot personality and behavior
|
|
17
|
+
role VARCHAR DEFAULT 'AI Assistant',
|
|
18
|
+
goal TEXT NOT NULL DEFAULT 'Help users accomplish their tasks effectively.',
|
|
19
|
+
backstory TEXT NOT NULL DEFAULT 'I am an AI assistant created to help users with various tasks.',
|
|
20
|
+
rationale TEXT NOT NULL DEFAULT 'I maintain a professional tone and provide accurate, helpful information.',
|
|
21
|
+
capabilities TEXT DEFAULT 'I can engage in conversation, answer questions, and use tools when needed.',
|
|
22
|
+
|
|
23
|
+
-- Prompt configuration
|
|
24
|
+
system_prompt_template TEXT,
|
|
25
|
+
human_prompt_template TEXT,
|
|
26
|
+
pre_instructions JSONB DEFAULT '[]'::JSONB,
|
|
27
|
+
|
|
28
|
+
-- LLM configuration
|
|
29
|
+
llm VARCHAR DEFAULT 'google',
|
|
30
|
+
model_name VARCHAR DEFAULT 'gemini-2.0-flash-001',
|
|
31
|
+
temperature FLOAT DEFAULT 0.1 CHECK (temperature >= 0 AND temperature <= 2),
|
|
32
|
+
max_tokens INTEGER DEFAULT 1024 CHECK (max_tokens > 0),
|
|
33
|
+
top_k INTEGER DEFAULT 41 CHECK (top_k > 0),
|
|
34
|
+
top_p FLOAT DEFAULT 0.9 CHECK (top_p >= 0 AND top_p <= 1),
|
|
35
|
+
model_config JSONB DEFAULT '{}'::JSONB,
|
|
36
|
+
|
|
37
|
+
-- Tool and agent configuration
|
|
38
|
+
tools_enabled BOOLEAN DEFAULT TRUE,
|
|
39
|
+
auto_tool_detection BOOLEAN DEFAULT TRUE,
|
|
40
|
+
tool_threshold FLOAT DEFAULT 0.7 CHECK (tool_threshold >= 0 AND tool_threshold <= 1),
|
|
41
|
+
tools JSONB DEFAULT '[]'::JSONB,
|
|
42
|
+
operation_mode VARCHAR DEFAULT 'adaptive' CHECK (operation_mode IN ('conversational', 'agentic', 'adaptive')),
|
|
43
|
+
|
|
44
|
+
-- Vector store and retrieval configuration
|
|
45
|
+
use_vector BOOLEAN DEFAULT FALSE,
|
|
46
|
+
vector_store_config JSONB DEFAULT '{}'::JSONB,
|
|
47
|
+
embedding_model JSONB DEFAULT '{"model_name": "sentence-transformers/all-MiniLM-L12-v2", "model_type": "huggingface"}'::JSONB,
|
|
48
|
+
context_search_limit INTEGER DEFAULT 10 CHECK (context_search_limit > 0),
|
|
49
|
+
context_score_threshold FLOAT DEFAULT 0.7 CHECK (context_score_threshold >= 0 AND context_score_threshold <= 1),
|
|
50
|
+
|
|
51
|
+
-- Memory and conversation configuration
|
|
52
|
+
memory_type VARCHAR DEFAULT 'memory' CHECK (memory_type IN ('memory', 'file', 'redis')),
|
|
53
|
+
memory_config JSONB DEFAULT '{}'::JSONB,
|
|
54
|
+
max_context_turns INTEGER DEFAULT 5 CHECK (max_context_turns > 0),
|
|
55
|
+
use_conversation_history BOOLEAN DEFAULT TRUE,
|
|
56
|
+
|
|
57
|
+
-- Security and permissions
|
|
58
|
+
permissions JSONB DEFAULT '{}'::JSONB,
|
|
59
|
+
|
|
60
|
+
-- Metadata
|
|
61
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
62
|
+
disclaimer TEXT,
|
|
63
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
64
|
+
created_by INTEGER,
|
|
65
|
+
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
-- Create indexes for better performance
|
|
69
|
+
CREATE INDEX IF NOT EXISTS idx_ai_bots_name ON navigator.ai_bots(name);
|
|
70
|
+
CREATE INDEX IF NOT EXISTS idx_ai_bots_enabled ON navigator.ai_bots(enabled);
|
|
71
|
+
CREATE INDEX IF NOT EXISTS idx_ai_bots_operation_mode ON navigator.ai_bots(operation_mode);
|
|
72
|
+
CREATE INDEX IF NOT EXISTS idx_ai_bots_tools_enabled ON navigator.ai_bots(tools_enabled);
|
|
73
|
+
CREATE INDEX IF NOT EXISTS idx_ai_bots_use_vector ON navigator.ai_bots(use_vector);
|
|
74
|
+
CREATE INDEX IF NOT EXISTS idx_ai_bots_created_at ON navigator.ai_bots(created_at);
|
|
75
|
+
CREATE INDEX IF NOT EXISTS idx_ai_bots_llm ON navigator.ai_bots(llm);
|
|
76
|
+
|
|
77
|
+
-- Create a GIN index for JSONB columns for efficient querying
|
|
78
|
+
CREATE INDEX IF NOT EXISTS idx_ai_bots_tools_gin ON navigator.ai_bots USING GIN (tools);
|
|
79
|
+
CREATE INDEX IF NOT EXISTS idx_ai_bots_permissions_gin ON navigator.ai_bots USING GIN (permissions);
|
|
80
|
+
CREATE INDEX IF NOT EXISTS idx_ai_bots_model_config_gin ON navigator.ai_bots USING GIN (model_config);
|
|
81
|
+
|
|
82
|
+
-- Unique constraint on name
|
|
83
|
+
ALTER TABLE navigator.ai_bots
|
|
84
|
+
ADD CONSTRAINT unq_navigator_ai_bots_name UNIQUE (name);
|
|
85
|
+
|
|
86
|
+
-- Add comments for documentation
|
|
87
|
+
COMMENT ON TABLE navigator.ai_bots IS 'Unified AI bots table supporting both conversational and agentic capabilities';
|
|
88
|
+
COMMENT ON COLUMN navigator.ai_bots.chatbot_id IS 'Primary key UUID for the bot';
|
|
89
|
+
COMMENT ON COLUMN navigator.ai_bots.name IS 'Unique name identifier for the bot';
|
|
90
|
+
COMMENT ON COLUMN navigator.ai_bots.operation_mode IS 'Bot operation mode: conversational, agentic, or adaptive';
|
|
91
|
+
COMMENT ON COLUMN navigator.ai_bots.tools_enabled IS 'Whether the bot can use tools';
|
|
92
|
+
COMMENT ON COLUMN navigator.ai_bots.auto_tool_detection IS 'Whether the bot automatically detects when to use tools';
|
|
93
|
+
COMMENT ON COLUMN navigator.ai_bots.tool_threshold IS 'Confidence threshold for automatic tool usage (0-1)';
|
|
94
|
+
COMMENT ON COLUMN navigator.ai_bots.tools IS 'JSON array of available tool names';
|
|
95
|
+
COMMENT ON COLUMN navigator.ai_bots.use_vector IS 'Whether the bot uses vector store for context retrieval';
|
|
96
|
+
COMMENT ON COLUMN navigator.ai_bots.vector_store_config IS 'JSON configuration for vector store connection';
|
|
97
|
+
COMMENT ON COLUMN navigator.ai_bots.memory_type IS 'Type of conversation memory: memory, file, or redis';
|
|
98
|
+
COMMENT ON COLUMN navigator.ai_bots.pre_instructions IS 'JSON array of pre-instructions for the bot';
|
|
99
|
+
COMMENT ON COLUMN navigator.ai_bots.permissions IS 'JSON object defining bot access permissions';
|
|
100
|
+
|
|
101
|
+
-- Create a function to update the updated_at timestamp
|
|
102
|
+
CREATE OR REPLACE FUNCTION update_ai_bots_updated_at()
|
|
103
|
+
RETURNS TRIGGER AS $$
|
|
104
|
+
BEGIN
|
|
105
|
+
NEW.updated_at = NOW();
|
|
106
|
+
RETURN NEW;
|
|
107
|
+
END;
|
|
108
|
+
$$ language 'plpgsql';
|
|
109
|
+
|
|
110
|
+
-- Create trigger to automatically update updated_at
|
|
111
|
+
CREATE TRIGGER trigger_ai_bots_updated_at
|
|
112
|
+
BEFORE UPDATE ON navigator.ai_bots
|
|
113
|
+
FOR EACH ROW
|
|
114
|
+
EXECUTE FUNCTION update_ai_bots_updated_at();
|
|
115
|
+
|
|
116
|
+
-- Insert some example configurations
|
|
117
|
+
INSERT INTO navigator.ai_bots (
|
|
118
|
+
name, description, role, goal, backstory, capabilities,
|
|
119
|
+
tools_enabled, auto_tool_detection, tools, operation_mode, tool_threshold
|
|
120
|
+
) VALUES
|
|
121
|
+
(
|
|
122
|
+
'ResearchBot',
|
|
123
|
+
'AI assistant specialized in research and information gathering',
|
|
124
|
+
'Research Assistant',
|
|
125
|
+
'Help users find and analyze information from various sources',
|
|
126
|
+
'I am a research-focused AI assistant trained to help users discover, analyze, and synthesize information.',
|
|
127
|
+
'I can search the web, analyze documents, perform calculations, and help with research tasks',
|
|
128
|
+
TRUE,
|
|
129
|
+
TRUE,
|
|
130
|
+
'["DuckDuckGoSearchTool", "MathTool", "PDFAnalysisTool"]'::JSONB,
|
|
131
|
+
'adaptive',
|
|
132
|
+
0.5
|
|
133
|
+
),
|
|
134
|
+
(
|
|
135
|
+
'ChatBot',
|
|
136
|
+
'Friendly conversational AI assistant',
|
|
137
|
+
'Conversational Assistant',
|
|
138
|
+
'Engage in helpful and friendly conversations',
|
|
139
|
+
'I am a friendly AI assistant designed to have natural conversations and help with general questions.',
|
|
140
|
+
'I can chat, answer questions, and provide information on a wide range of topics',
|
|
141
|
+
FALSE,
|
|
142
|
+
FALSE,
|
|
143
|
+
'[]'::JSONB,
|
|
144
|
+
'conversational',
|
|
145
|
+
0.7
|
|
146
|
+
),
|
|
147
|
+
(
|
|
148
|
+
'DataBot',
|
|
149
|
+
'AI assistant specialized in data analysis and visualization',
|
|
150
|
+
'Data Analyst',
|
|
151
|
+
'Help users analyze and visualize data effectively',
|
|
152
|
+
'I am a data-focused AI assistant with expertise in statistical analysis and data visualization.',
|
|
153
|
+
'I can analyze datasets, create visualizations, perform statistical calculations, and help interpret data',
|
|
154
|
+
TRUE,
|
|
155
|
+
TRUE,
|
|
156
|
+
'["MathTool", "DataAnalysisTool", "PlottingTool"]'::JSONB,
|
|
157
|
+
'adaptive',
|
|
158
|
+
0.3
|
|
159
|
+
) ON CONFLICT (name) DO NOTHING;
|
|
160
|
+
|
|
161
|
+
-- Create views for easier querying
|
|
162
|
+
CREATE OR REPLACE VIEW navigator.vw_active_bots AS
|
|
163
|
+
SELECT
|
|
164
|
+
chatbot_id,
|
|
165
|
+
name,
|
|
166
|
+
description,
|
|
167
|
+
role,
|
|
168
|
+
operation_mode,
|
|
169
|
+
tools_enabled,
|
|
170
|
+
use_vector,
|
|
171
|
+
llm,
|
|
172
|
+
model_name,
|
|
173
|
+
created_at,
|
|
174
|
+
updated_at
|
|
175
|
+
FROM navigator.ai_bots
|
|
176
|
+
WHERE enabled = TRUE;
|
|
177
|
+
|
|
178
|
+
CREATE OR REPLACE VIEW navigator.vw_tool_enabled_bots AS
|
|
179
|
+
SELECT
|
|
180
|
+
chatbot_id,
|
|
181
|
+
name,
|
|
182
|
+
description,
|
|
183
|
+
tools,
|
|
184
|
+
tool_threshold,
|
|
185
|
+
auto_tool_detection,
|
|
186
|
+
operation_mode
|
|
187
|
+
FROM navigator.ai_bots
|
|
188
|
+
WHERE enabled = TRUE AND tools_enabled = TRUE;
|
|
189
|
+
|
|
190
|
+
-- Grant appropriate permissions (adjust as needed for your setup)
|
|
191
|
+
-- GRANT SELECT, INSERT, UPDATE, DELETE ON navigator.ai_bots TO your_app_user;
|
|
192
|
+
-- GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA navigator TO your_app_user;
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
# AgentCrew REST API - Arquitectura del Sistema
|
|
2
|
+
|
|
3
|
+
## ποΈ Vista General de la Arquitectura
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
7
|
+
β Cliente / Usuario β
|
|
8
|
+
ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ
|
|
9
|
+
β
|
|
10
|
+
β HTTP Requests
|
|
11
|
+
β
|
|
12
|
+
ββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ
|
|
13
|
+
β CrewHandler (BaseView) β
|
|
14
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
15
|
+
β β PUT /api/v1/crew β Create Crew β β
|
|
16
|
+
β β GET /api/v1/crew β List/Get Crews β β
|
|
17
|
+
β β POST /api/v1/crew/execute β Execute Crew (async) β β
|
|
18
|
+
β β PATCH /api/v1/crew/job β Get Job Status/Results β β
|
|
19
|
+
β β DELETE /api/v1/crew β Delete Crew β β
|
|
20
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
21
|
+
ββββββββββββββββ¬βββββββββββββββββββββββββββββββββββ¬ββββββββββββββββ
|
|
22
|
+
β β
|
|
23
|
+
β Crew Management β Job Management
|
|
24
|
+
β β
|
|
25
|
+
ββββββββββββββββΌββββββββββββββββ βββββββββββββββΌβββββββββββββββ
|
|
26
|
+
β BotManager β β JobManager β
|
|
27
|
+
β βββββββββββββββββββββββββββ β β ββββββββββββββββββββββββ β
|
|
28
|
+
β β β’ add_crew() β β β β β’ create_job() β β
|
|
29
|
+
β β β’ get_crew() β β β β β’ execute_job() β β
|
|
30
|
+
β β β’ list_crews() β β β β β’ get_job() β β
|
|
31
|
+
β β β’ remove_crew() β β β β β’ list_jobs() β β
|
|
32
|
+
β β β’ get_crew_stats() β β β β β’ delete_job() β β
|
|
33
|
+
β βββββββββββββββββββββββββββ β β β β’ get_stats() β β
|
|
34
|
+
β β β ββββββββββββββββββββββββ β
|
|
35
|
+
β Stores: β β β
|
|
36
|
+
β _crews: Dict[str, Tuple[ β β Stores: β
|
|
37
|
+
β AgentCrew, β β jobs: Dict[str, CrewJob] β
|
|
38
|
+
β CrewDefinition β β tasks: Dict[str, Task] β
|
|
39
|
+
β ]] β β β
|
|
40
|
+
ββββββββββββββββ¬βββββββββββββββββ βββββββββββββββ¬βββββββββββββββ
|
|
41
|
+
β β
|
|
42
|
+
β Crew Execution β Async Execution
|
|
43
|
+
β β
|
|
44
|
+
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββΌβββββββββββββββ
|
|
45
|
+
β AgentCrew β
|
|
46
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
47
|
+
β β Execution Modes: β β
|
|
48
|
+
β β β β
|
|
49
|
+
β β β’ SEQUENTIAL β β
|
|
50
|
+
β β Input β Agent1 β Agent2 β Agent3 β Output β β
|
|
51
|
+
β β β β
|
|
52
|
+
β β β’ PARALLEL β β
|
|
53
|
+
β β Input β [Agent1, Agent2, Agent3] β Outputs β β
|
|
54
|
+
β β β β
|
|
55
|
+
β β β’ FLOW (DAG) β β
|
|
56
|
+
β β Input β Agent1 β [Agent2, Agent3] β Agent4 β Output β β
|
|
57
|
+
β β β β
|
|
58
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
59
|
+
β β
|
|
60
|
+
β Components: β
|
|
61
|
+
β β’ agents: Dict[str, Agent] β
|
|
62
|
+
β β’ shared_tool_manager: ToolManager β
|
|
63
|
+
β β’ workflow_graph: Dict[str, AgentNode] (for flow mode) β
|
|
64
|
+
β β’ execution_log: List[Dict] β
|
|
65
|
+
ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
|
|
66
|
+
β
|
|
67
|
+
β Agent Execution
|
|
68
|
+
β
|
|
69
|
+
ββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββ
|
|
70
|
+
β Individual Agents β
|
|
71
|
+
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
|
|
72
|
+
β β BaseAgent β β Chatbot β β Custom Agent β β
|
|
73
|
+
β β β β β β β β
|
|
74
|
+
β β β’ LLM Client β β β’ LLM Client β β β’ LLM Client β β
|
|
75
|
+
β β β’ Tools β β β’ Tools β β β’ Tools β β
|
|
76
|
+
β β β’ Memory β β β’ Memory β β β’ Memory β β
|
|
77
|
+
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
|
|
78
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## π Flujo de Datos
|
|
82
|
+
|
|
83
|
+
### 1. CreaciΓ³n de Crew (PUT)
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
Cliente
|
|
87
|
+
β
|
|
88
|
+
β PUT /api/v1/crew
|
|
89
|
+
β {crew_definition}
|
|
90
|
+
β
|
|
91
|
+
βΌ
|
|
92
|
+
CrewHandler.put()
|
|
93
|
+
β
|
|
94
|
+
β 1. Valida CrewDefinition (Pydantic)
|
|
95
|
+
β 2. Crea instancias de agentes
|
|
96
|
+
β 3. Configura tools
|
|
97
|
+
β 4. Setup flow relations (si flow mode)
|
|
98
|
+
β
|
|
99
|
+
βΌ
|
|
100
|
+
BotManager.add_crew()
|
|
101
|
+
β
|
|
102
|
+
β Almacena: (AgentCrew, CrewDefinition)
|
|
103
|
+
β
|
|
104
|
+
βΌ
|
|
105
|
+
Response {crew_id, status}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 2. EjecuciΓ³n de Crew (POST)
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
Cliente
|
|
112
|
+
β
|
|
113
|
+
β POST /api/v1/crew/execute
|
|
114
|
+
β {crew_id, query}
|
|
115
|
+
β
|
|
116
|
+
βΌ
|
|
117
|
+
CrewHandler.post()
|
|
118
|
+
β
|
|
119
|
+
β 1. Obtiene crew de BotManager
|
|
120
|
+
β 2. Crea job en JobManager
|
|
121
|
+
β 3. Define funciΓ³n async de ejecuciΓ³n
|
|
122
|
+
β
|
|
123
|
+
βΌ
|
|
124
|
+
JobManager.execute_job()
|
|
125
|
+
β
|
|
126
|
+
β 1. Crea asyncio.Task
|
|
127
|
+
β 2. Actualiza job status β RUNNING
|
|
128
|
+
β
|
|
129
|
+
βΌ
|
|
130
|
+
AgentCrew.run_[sequential|parallel|flow]()
|
|
131
|
+
β
|
|
132
|
+
β Ejecuta agentes segΓΊn modo
|
|
133
|
+
β
|
|
134
|
+
βΌ
|
|
135
|
+
JobManager
|
|
136
|
+
β
|
|
137
|
+
β 1. Actualiza job status β COMPLETED
|
|
138
|
+
β 2. Almacena resultado
|
|
139
|
+
β
|
|
140
|
+
βΌ
|
|
141
|
+
Response {job_id, status}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### 3. ObtenciΓ³n de Resultados (PATCH)
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
Cliente
|
|
148
|
+
β
|
|
149
|
+
β PATCH /api/v1/crew/job?job_id=xxx
|
|
150
|
+
β
|
|
151
|
+
βΌ
|
|
152
|
+
CrewHandler.patch()
|
|
153
|
+
β
|
|
154
|
+
β 1. Obtiene job de JobManager
|
|
155
|
+
β 2. Verifica status
|
|
156
|
+
β
|
|
157
|
+
βΌ
|
|
158
|
+
Response {
|
|
159
|
+
status,
|
|
160
|
+
result (if completed),
|
|
161
|
+
error (if failed)
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## π Ciclo de Vida de un Job
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
βββββββββββββββ
|
|
169
|
+
β PENDING β β Job creado
|
|
170
|
+
ββββββββ¬βββββββ
|
|
171
|
+
β
|
|
172
|
+
β execute_job() llamado
|
|
173
|
+
β
|
|
174
|
+
ββββββββΌβββββββ
|
|
175
|
+
β RUNNING β β EjecuciΓ³n iniciada
|
|
176
|
+
ββββββββ¬βββββββ
|
|
177
|
+
β
|
|
178
|
+
ββββββββββββ
|
|
179
|
+
β β
|
|
180
|
+
ββββββββΌβββββββ β
|
|
181
|
+
β COMPLETED β β β EjecuciΓ³n exitosa
|
|
182
|
+
βββββββββββββββ β
|
|
183
|
+
β
|
|
184
|
+
βββββββΌβββββββ
|
|
185
|
+
β FAILED β β EjecuciΓ³n fallida
|
|
186
|
+
ββββββββββββββ
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## π§© Componentes Principales
|
|
190
|
+
|
|
191
|
+
### CrewHandler
|
|
192
|
+
- **Responsabilidad**: Endpoints REST
|
|
193
|
+
- **Dependencias**: BotManager, JobManager
|
|
194
|
+
- **Entrada**: HTTP Requests (JSON)
|
|
195
|
+
- **Salida**: HTTP Responses (JSON)
|
|
196
|
+
|
|
197
|
+
### BotManager
|
|
198
|
+
- **Responsabilidad**: GestiΓ³n de crews
|
|
199
|
+
- **Almacenamiento**: Dict de crews
|
|
200
|
+
- **Operaciones**: CRUD de crews
|
|
201
|
+
|
|
202
|
+
### JobManager
|
|
203
|
+
- **Responsabilidad**: EjecuciΓ³n asΓncrona
|
|
204
|
+
- **Almacenamiento**: Dict de jobs
|
|
205
|
+
- **Operaciones**: Crear, ejecutar, monitorear jobs
|
|
206
|
+
|
|
207
|
+
### AgentCrew
|
|
208
|
+
- **Responsabilidad**: OrquestaciΓ³n de agentes
|
|
209
|
+
- **Modos**: Sequential, Parallel, Flow
|
|
210
|
+
- **Entrada**: Query/Task
|
|
211
|
+
- **Salida**: CrewResult
|
|
212
|
+
|
|
213
|
+
## π¦ Modelos de Datos
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
CrewDefinition
|
|
217
|
+
βββ crew_id: str
|
|
218
|
+
βββ name: str
|
|
219
|
+
βββ execution_mode: ExecutionMode
|
|
220
|
+
βββ agents: List[AgentDefinition]
|
|
221
|
+
βββ flow_relations: List[FlowRelation]
|
|
222
|
+
βββ metadata: Dict
|
|
223
|
+
|
|
224
|
+
AgentDefinition
|
|
225
|
+
βββ agent_id: str
|
|
226
|
+
βββ agent_class: str
|
|
227
|
+
βββ config: Dict
|
|
228
|
+
βββ tools: List[str]
|
|
229
|
+
βββ system_prompt: str
|
|
230
|
+
|
|
231
|
+
CrewJob
|
|
232
|
+
βββ job_id: str
|
|
233
|
+
βββ crew_id: str
|
|
234
|
+
βββ status: JobStatus
|
|
235
|
+
βββ query: str
|
|
236
|
+
βββ result: Any
|
|
237
|
+
βββ error: str
|
|
238
|
+
βββ timestamps: ...
|
|
239
|
+
|
|
240
|
+
CrewResult (from AgentCrew)
|
|
241
|
+
βββ output: str
|
|
242
|
+
βββ results: List[str]
|
|
243
|
+
βββ agent_ids: List[str]
|
|
244
|
+
βββ agents: List[AgentExecutionInfo]
|
|
245
|
+
βββ execution_log: List[Dict]
|
|
246
|
+
βββ metadata: Dict
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## π Interacciones entre Componentes
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
ββββββββββββββββββ
|
|
253
|
+
β Cliente β
|
|
254
|
+
βββββββββ¬βββββββββ
|
|
255
|
+
β
|
|
256
|
+
β 1. Crear Crew
|
|
257
|
+
βΌ
|
|
258
|
+
ββββββββββββββββββ ββββββββββββββββββ
|
|
259
|
+
β CrewHandler ββββββΆβ BotManager β
|
|
260
|
+
βββββββββ¬βββββββββ ββββββββββββββββββ
|
|
261
|
+
β
|
|
262
|
+
β 2. Ejecutar Crew
|
|
263
|
+
βΌ
|
|
264
|
+
ββββββββββββββββββ ββββββββββββββββββ
|
|
265
|
+
β CrewHandler ββββββΆβ JobManager β
|
|
266
|
+
βββββββββ¬βββββββββ βββββββββ¬βββββββββ
|
|
267
|
+
β β
|
|
268
|
+
β β 3. Ejecutar async
|
|
269
|
+
β βΌ
|
|
270
|
+
β ββββββββββββββββββ
|
|
271
|
+
β β AgentCrew β
|
|
272
|
+
β βββββββββ¬βββββββββ
|
|
273
|
+
β β
|
|
274
|
+
β β 4. Ejecutar agentes
|
|
275
|
+
β βΌ
|
|
276
|
+
β ββββββββββββββββββ
|
|
277
|
+
β β Agents β
|
|
278
|
+
β βββββββββ¬βββββββββ
|
|
279
|
+
β β
|
|
280
|
+
β β 5. Retornar resultado
|
|
281
|
+
β β
|
|
282
|
+
β 6. Obtener resultado β
|
|
283
|
+
βΌ β
|
|
284
|
+
ββββββββββββββββββ β
|
|
285
|
+
β CrewHandler βββββββββββββββ
|
|
286
|
+
βββββββββ¬βββββββββ
|
|
287
|
+
β
|
|
288
|
+
β 7. Response
|
|
289
|
+
βΌ
|
|
290
|
+
ββββββββββββββββββ
|
|
291
|
+
β Cliente β
|
|
292
|
+
ββββββββββββββββββ
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
## π― Patrones de DiseΓ±o Utilizados
|
|
296
|
+
|
|
297
|
+
### 1. Repository Pattern
|
|
298
|
+
- BotManager actΓΊa como repositorio de crews
|
|
299
|
+
- JobManager actΓΊa como repositorio de jobs
|
|
300
|
+
|
|
301
|
+
### 2. Factory Pattern
|
|
302
|
+
- CrewHandler crea instancias de AgentCrew
|
|
303
|
+
- CreaciΓ³n dinΓ‘mica de agentes basada en AgentDefinition
|
|
304
|
+
|
|
305
|
+
### 3. Async Pattern
|
|
306
|
+
- EjecuciΓ³n no bloqueante con asyncio
|
|
307
|
+
- Jobs tracked con futures/tasks
|
|
308
|
+
|
|
309
|
+
### 4. Strategy Pattern
|
|
310
|
+
- Diferentes modos de ejecuciΓ³n (Sequential, Parallel, Flow)
|
|
311
|
+
- SelecciΓ³n dinΓ‘mica basada en execution_mode
|
|
312
|
+
|
|
313
|
+
### 5. Observer Pattern
|
|
314
|
+
- JobManager permite polling de estado
|
|
315
|
+
- Jobs notifican cambios de estado
|
|
316
|
+
|
|
317
|
+
## π Consideraciones de Concurrencia
|
|
318
|
+
|
|
319
|
+
```
|
|
320
|
+
βββββββββββββββββββββββββββββββββββββββββββ
|
|
321
|
+
β Ejecuciones Concurrentes β
|
|
322
|
+
βββββββββββββββββββββββββββββββββββββββββββ€
|
|
323
|
+
β β
|
|
324
|
+
β Job 1: Crew A β Running β
|
|
325
|
+
β [Agent1] [Agent2] [Agent3] β
|
|
326
|
+
β β
|
|
327
|
+
β Job 2: Crew B β Running β
|
|
328
|
+
β [Agent1] [Agent2] β
|
|
329
|
+
β β
|
|
330
|
+
β Job 3: Crew A β Pending β
|
|
331
|
+
β (en cola) β
|
|
332
|
+
β β
|
|
333
|
+
βββββββββββββββββββββββββββββββββββββββββββ
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
- Cada job se ejecuta en su propio asyncio.Task
|
|
337
|
+
- No hay lΓmite de crews concurrentes (configurable)
|
|
338
|
+
- max_parallel_tasks limita agentes paralelos dentro de un crew
|
|
339
|
+
- JobManager mantiene estado independiente por job
|
|
340
|
+
|
|
341
|
+
## π Escalabilidad
|
|
342
|
+
|
|
343
|
+
### Vertical
|
|
344
|
+
- Aumentar max_parallel_tasks
|
|
345
|
+
- Reducir cleanup_interval
|
|
346
|
+
- Aumentar recursos del servidor
|
|
347
|
+
|
|
348
|
+
### Horizontal
|
|
349
|
+
- Jobs son stateless (resultado en memoria)
|
|
350
|
+
- Puede distribuirse con Redis/DB compartida
|
|
351
|
+
- Load balancing en mΓΊltiples instancias
|
|
352
|
+
|
|
353
|
+
### Optimizaciones Futuras
|
|
354
|
+
- Queue system (Redis, RabbitMQ)
|
|
355
|
+
- Persistent storage (PostgreSQL)
|
|
356
|
+
- Caching (Redis)
|
|
357
|
+
- Webhooks para notificaciones
|
|
358
|
+
- Streaming de resultados parciales
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
**Arquitectura diseΓ±ada para AI-Parrot π¦**
|