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.
Files changed (535) hide show
  1. agentui/.prettierrc +15 -0
  2. agentui/QUICKSTART.md +272 -0
  3. agentui/README.md +59 -0
  4. agentui/env.example +16 -0
  5. agentui/jsconfig.json +14 -0
  6. agentui/package-lock.json +4242 -0
  7. agentui/package.json +34 -0
  8. agentui/scripts/postinstall/apply-patches.mjs +260 -0
  9. agentui/src/app.css +61 -0
  10. agentui/src/app.d.ts +13 -0
  11. agentui/src/app.html +12 -0
  12. agentui/src/components/LoadingSpinner.svelte +64 -0
  13. agentui/src/components/ThemeSwitcher.svelte +159 -0
  14. agentui/src/components/index.js +4 -0
  15. agentui/src/lib/api/bots.ts +60 -0
  16. agentui/src/lib/api/chat.ts +22 -0
  17. agentui/src/lib/api/http.ts +25 -0
  18. agentui/src/lib/components/BotCard.svelte +33 -0
  19. agentui/src/lib/components/ChatBubble.svelte +63 -0
  20. agentui/src/lib/components/Toast.svelte +21 -0
  21. agentui/src/lib/config.ts +20 -0
  22. agentui/src/lib/stores/auth.svelte.ts +73 -0
  23. agentui/src/lib/stores/theme.svelte.js +64 -0
  24. agentui/src/lib/stores/toast.svelte.ts +31 -0
  25. agentui/src/lib/utils/conversation.ts +39 -0
  26. agentui/src/routes/+layout.svelte +20 -0
  27. agentui/src/routes/+page.svelte +232 -0
  28. agentui/src/routes/login/+page.svelte +200 -0
  29. agentui/src/routes/talk/[agentId]/+page.svelte +297 -0
  30. agentui/src/routes/talk/[agentId]/+page.ts +7 -0
  31. agentui/static/README.md +1 -0
  32. agentui/svelte.config.js +11 -0
  33. agentui/tailwind.config.ts +53 -0
  34. agentui/tsconfig.json +3 -0
  35. agentui/vite.config.ts +10 -0
  36. ai_parrot-0.17.2.dist-info/METADATA +472 -0
  37. ai_parrot-0.17.2.dist-info/RECORD +535 -0
  38. ai_parrot-0.17.2.dist-info/WHEEL +6 -0
  39. ai_parrot-0.17.2.dist-info/entry_points.txt +2 -0
  40. ai_parrot-0.17.2.dist-info/licenses/LICENSE +21 -0
  41. ai_parrot-0.17.2.dist-info/top_level.txt +6 -0
  42. crew-builder/.prettierrc +15 -0
  43. crew-builder/QUICKSTART.md +259 -0
  44. crew-builder/README.md +113 -0
  45. crew-builder/env.example +17 -0
  46. crew-builder/jsconfig.json +14 -0
  47. crew-builder/package-lock.json +4182 -0
  48. crew-builder/package.json +37 -0
  49. crew-builder/scripts/postinstall/apply-patches.mjs +260 -0
  50. crew-builder/src/app.css +62 -0
  51. crew-builder/src/app.d.ts +13 -0
  52. crew-builder/src/app.html +12 -0
  53. crew-builder/src/components/LoadingSpinner.svelte +64 -0
  54. crew-builder/src/components/ThemeSwitcher.svelte +149 -0
  55. crew-builder/src/components/index.js +9 -0
  56. crew-builder/src/lib/api/bots.ts +60 -0
  57. crew-builder/src/lib/api/chat.ts +80 -0
  58. crew-builder/src/lib/api/client.ts +56 -0
  59. crew-builder/src/lib/api/crew/crew.ts +136 -0
  60. crew-builder/src/lib/api/index.ts +5 -0
  61. crew-builder/src/lib/api/o365/auth.ts +65 -0
  62. crew-builder/src/lib/auth/auth.ts +54 -0
  63. crew-builder/src/lib/components/AgentNode.svelte +43 -0
  64. crew-builder/src/lib/components/BotCard.svelte +33 -0
  65. crew-builder/src/lib/components/ChatBubble.svelte +67 -0
  66. crew-builder/src/lib/components/ConfigPanel.svelte +278 -0
  67. crew-builder/src/lib/components/JsonTreeNode.svelte +76 -0
  68. crew-builder/src/lib/components/JsonViewer.svelte +24 -0
  69. crew-builder/src/lib/components/MarkdownEditor.svelte +48 -0
  70. crew-builder/src/lib/components/ThemeToggle.svelte +36 -0
  71. crew-builder/src/lib/components/Toast.svelte +67 -0
  72. crew-builder/src/lib/components/Toolbar.svelte +157 -0
  73. crew-builder/src/lib/components/index.ts +10 -0
  74. crew-builder/src/lib/config.ts +8 -0
  75. crew-builder/src/lib/stores/auth.svelte.ts +228 -0
  76. crew-builder/src/lib/stores/crewStore.ts +369 -0
  77. crew-builder/src/lib/stores/theme.svelte.js +145 -0
  78. crew-builder/src/lib/stores/toast.svelte.ts +69 -0
  79. crew-builder/src/lib/utils/conversation.ts +39 -0
  80. crew-builder/src/lib/utils/markdown.ts +122 -0
  81. crew-builder/src/lib/utils/talkHistory.ts +47 -0
  82. crew-builder/src/routes/+layout.svelte +20 -0
  83. crew-builder/src/routes/+page.svelte +539 -0
  84. crew-builder/src/routes/agents/+page.svelte +247 -0
  85. crew-builder/src/routes/agents/[agentId]/+page.svelte +288 -0
  86. crew-builder/src/routes/agents/[agentId]/+page.ts +7 -0
  87. crew-builder/src/routes/builder/+page.svelte +204 -0
  88. crew-builder/src/routes/crew/ask/+page.svelte +1052 -0
  89. crew-builder/src/routes/crew/ask/+page.ts +1 -0
  90. crew-builder/src/routes/integrations/o365/+page.svelte +304 -0
  91. crew-builder/src/routes/login/+page.svelte +197 -0
  92. crew-builder/src/routes/talk/[agentId]/+page.svelte +487 -0
  93. crew-builder/src/routes/talk/[agentId]/+page.ts +7 -0
  94. crew-builder/static/README.md +1 -0
  95. crew-builder/svelte.config.js +11 -0
  96. crew-builder/tailwind.config.ts +53 -0
  97. crew-builder/tsconfig.json +3 -0
  98. crew-builder/vite.config.ts +10 -0
  99. mcp_servers/calculator_server.py +309 -0
  100. parrot/__init__.py +27 -0
  101. parrot/__pycache__/__init__.cpython-310.pyc +0 -0
  102. parrot/__pycache__/version.cpython-310.pyc +0 -0
  103. parrot/_version.py +34 -0
  104. parrot/a2a/__init__.py +48 -0
  105. parrot/a2a/client.py +658 -0
  106. parrot/a2a/discovery.py +89 -0
  107. parrot/a2a/mixin.py +257 -0
  108. parrot/a2a/models.py +376 -0
  109. parrot/a2a/server.py +770 -0
  110. parrot/agents/__init__.py +29 -0
  111. parrot/bots/__init__.py +12 -0
  112. parrot/bots/a2a_agent.py +19 -0
  113. parrot/bots/abstract.py +3139 -0
  114. parrot/bots/agent.py +1129 -0
  115. parrot/bots/basic.py +9 -0
  116. parrot/bots/chatbot.py +669 -0
  117. parrot/bots/data.py +1618 -0
  118. parrot/bots/database/__init__.py +5 -0
  119. parrot/bots/database/abstract.py +3071 -0
  120. parrot/bots/database/cache.py +286 -0
  121. parrot/bots/database/models.py +468 -0
  122. parrot/bots/database/prompts.py +154 -0
  123. parrot/bots/database/retries.py +98 -0
  124. parrot/bots/database/router.py +269 -0
  125. parrot/bots/database/sql.py +41 -0
  126. parrot/bots/db/__init__.py +6 -0
  127. parrot/bots/db/abstract.py +556 -0
  128. parrot/bots/db/bigquery.py +602 -0
  129. parrot/bots/db/cache.py +85 -0
  130. parrot/bots/db/documentdb.py +668 -0
  131. parrot/bots/db/elastic.py +1014 -0
  132. parrot/bots/db/influx.py +898 -0
  133. parrot/bots/db/mock.py +96 -0
  134. parrot/bots/db/multi.py +783 -0
  135. parrot/bots/db/prompts.py +185 -0
  136. parrot/bots/db/sql.py +1255 -0
  137. parrot/bots/db/tools.py +212 -0
  138. parrot/bots/document.py +680 -0
  139. parrot/bots/hrbot.py +15 -0
  140. parrot/bots/kb.py +170 -0
  141. parrot/bots/mcp.py +36 -0
  142. parrot/bots/orchestration/README.md +463 -0
  143. parrot/bots/orchestration/__init__.py +1 -0
  144. parrot/bots/orchestration/agent.py +155 -0
  145. parrot/bots/orchestration/crew.py +3330 -0
  146. parrot/bots/orchestration/fsm.py +1179 -0
  147. parrot/bots/orchestration/hr.py +434 -0
  148. parrot/bots/orchestration/storage/__init__.py +4 -0
  149. parrot/bots/orchestration/storage/memory.py +100 -0
  150. parrot/bots/orchestration/storage/mixin.py +119 -0
  151. parrot/bots/orchestration/verify.py +202 -0
  152. parrot/bots/product.py +204 -0
  153. parrot/bots/prompts/__init__.py +96 -0
  154. parrot/bots/prompts/agents.py +155 -0
  155. parrot/bots/prompts/data.py +216 -0
  156. parrot/bots/prompts/output_generation.py +8 -0
  157. parrot/bots/scraper/__init__.py +3 -0
  158. parrot/bots/scraper/models.py +122 -0
  159. parrot/bots/scraper/scraper.py +1173 -0
  160. parrot/bots/scraper/templates.py +115 -0
  161. parrot/bots/stores/__init__.py +5 -0
  162. parrot/bots/stores/local.py +172 -0
  163. parrot/bots/webdev.py +81 -0
  164. parrot/cli.py +17 -0
  165. parrot/clients/__init__.py +16 -0
  166. parrot/clients/base.py +1491 -0
  167. parrot/clients/claude.py +1191 -0
  168. parrot/clients/factory.py +129 -0
  169. parrot/clients/google.py +4567 -0
  170. parrot/clients/gpt.py +1975 -0
  171. parrot/clients/grok.py +432 -0
  172. parrot/clients/groq.py +986 -0
  173. parrot/clients/hf.py +582 -0
  174. parrot/clients/models.py +18 -0
  175. parrot/conf.py +395 -0
  176. parrot/embeddings/__init__.py +9 -0
  177. parrot/embeddings/base.py +157 -0
  178. parrot/embeddings/google.py +98 -0
  179. parrot/embeddings/huggingface.py +74 -0
  180. parrot/embeddings/openai.py +84 -0
  181. parrot/embeddings/processor.py +88 -0
  182. parrot/exceptions.c +13868 -0
  183. parrot/exceptions.cpython-310-x86_64-linux-gnu.so +0 -0
  184. parrot/exceptions.pxd +22 -0
  185. parrot/exceptions.pxi +15 -0
  186. parrot/exceptions.pyx +44 -0
  187. parrot/generators/__init__.py +29 -0
  188. parrot/generators/base.py +200 -0
  189. parrot/generators/html.py +293 -0
  190. parrot/generators/react.py +205 -0
  191. parrot/generators/streamlit.py +203 -0
  192. parrot/generators/template.py +105 -0
  193. parrot/handlers/__init__.py +4 -0
  194. parrot/handlers/agent.py +861 -0
  195. parrot/handlers/agents/__init__.py +1 -0
  196. parrot/handlers/agents/abstract.py +900 -0
  197. parrot/handlers/bots.py +338 -0
  198. parrot/handlers/chat.py +915 -0
  199. parrot/handlers/creation.sql +192 -0
  200. parrot/handlers/crew/ARCHITECTURE.md +362 -0
  201. parrot/handlers/crew/README_BOTMANAGER_PERSISTENCE.md +303 -0
  202. parrot/handlers/crew/README_REDIS_PERSISTENCE.md +366 -0
  203. parrot/handlers/crew/__init__.py +0 -0
  204. parrot/handlers/crew/handler.py +801 -0
  205. parrot/handlers/crew/models.py +229 -0
  206. parrot/handlers/crew/redis_persistence.py +523 -0
  207. parrot/handlers/jobs/__init__.py +10 -0
  208. parrot/handlers/jobs/job.py +384 -0
  209. parrot/handlers/jobs/mixin.py +627 -0
  210. parrot/handlers/jobs/models.py +115 -0
  211. parrot/handlers/jobs/worker.py +31 -0
  212. parrot/handlers/models.py +596 -0
  213. parrot/handlers/o365_auth.py +105 -0
  214. parrot/handlers/stream.py +337 -0
  215. parrot/interfaces/__init__.py +6 -0
  216. parrot/interfaces/aws.py +143 -0
  217. parrot/interfaces/credentials.py +113 -0
  218. parrot/interfaces/database.py +27 -0
  219. parrot/interfaces/google.py +1123 -0
  220. parrot/interfaces/hierarchy.py +1227 -0
  221. parrot/interfaces/http.py +651 -0
  222. parrot/interfaces/images/__init__.py +0 -0
  223. parrot/interfaces/images/plugins/__init__.py +24 -0
  224. parrot/interfaces/images/plugins/abstract.py +58 -0
  225. parrot/interfaces/images/plugins/analisys.py +148 -0
  226. parrot/interfaces/images/plugins/classify.py +150 -0
  227. parrot/interfaces/images/plugins/classifybase.py +182 -0
  228. parrot/interfaces/images/plugins/detect.py +150 -0
  229. parrot/interfaces/images/plugins/exif.py +1103 -0
  230. parrot/interfaces/images/plugins/hash.py +52 -0
  231. parrot/interfaces/images/plugins/vision.py +104 -0
  232. parrot/interfaces/images/plugins/yolo.py +66 -0
  233. parrot/interfaces/images/plugins/zerodetect.py +197 -0
  234. parrot/interfaces/o365.py +978 -0
  235. parrot/interfaces/onedrive.py +822 -0
  236. parrot/interfaces/sharepoint.py +1435 -0
  237. parrot/interfaces/soap.py +257 -0
  238. parrot/loaders/__init__.py +8 -0
  239. parrot/loaders/abstract.py +1131 -0
  240. parrot/loaders/audio.py +199 -0
  241. parrot/loaders/basepdf.py +53 -0
  242. parrot/loaders/basevideo.py +1568 -0
  243. parrot/loaders/csv.py +409 -0
  244. parrot/loaders/docx.py +116 -0
  245. parrot/loaders/epubloader.py +316 -0
  246. parrot/loaders/excel.py +199 -0
  247. parrot/loaders/factory.py +55 -0
  248. parrot/loaders/files/__init__.py +0 -0
  249. parrot/loaders/files/abstract.py +39 -0
  250. parrot/loaders/files/html.py +26 -0
  251. parrot/loaders/files/text.py +63 -0
  252. parrot/loaders/html.py +152 -0
  253. parrot/loaders/markdown.py +442 -0
  254. parrot/loaders/pdf.py +373 -0
  255. parrot/loaders/pdfmark.py +320 -0
  256. parrot/loaders/pdftables.py +506 -0
  257. parrot/loaders/ppt.py +476 -0
  258. parrot/loaders/qa.py +63 -0
  259. parrot/loaders/splitters/__init__.py +10 -0
  260. parrot/loaders/splitters/base.py +138 -0
  261. parrot/loaders/splitters/md.py +228 -0
  262. parrot/loaders/splitters/token.py +143 -0
  263. parrot/loaders/txt.py +26 -0
  264. parrot/loaders/video.py +89 -0
  265. parrot/loaders/videolocal.py +218 -0
  266. parrot/loaders/videounderstanding.py +377 -0
  267. parrot/loaders/vimeo.py +167 -0
  268. parrot/loaders/web.py +599 -0
  269. parrot/loaders/youtube.py +504 -0
  270. parrot/manager/__init__.py +5 -0
  271. parrot/manager/manager.py +1030 -0
  272. parrot/mcp/__init__.py +28 -0
  273. parrot/mcp/adapter.py +105 -0
  274. parrot/mcp/cli.py +174 -0
  275. parrot/mcp/client.py +119 -0
  276. parrot/mcp/config.py +75 -0
  277. parrot/mcp/integration.py +842 -0
  278. parrot/mcp/oauth.py +933 -0
  279. parrot/mcp/server.py +225 -0
  280. parrot/mcp/transports/__init__.py +3 -0
  281. parrot/mcp/transports/base.py +279 -0
  282. parrot/mcp/transports/grpc_session.py +163 -0
  283. parrot/mcp/transports/http.py +312 -0
  284. parrot/mcp/transports/mcp.proto +108 -0
  285. parrot/mcp/transports/quic.py +1082 -0
  286. parrot/mcp/transports/sse.py +330 -0
  287. parrot/mcp/transports/stdio.py +309 -0
  288. parrot/mcp/transports/unix.py +395 -0
  289. parrot/mcp/transports/websocket.py +547 -0
  290. parrot/memory/__init__.py +16 -0
  291. parrot/memory/abstract.py +209 -0
  292. parrot/memory/agent.py +32 -0
  293. parrot/memory/cache.py +175 -0
  294. parrot/memory/core.py +555 -0
  295. parrot/memory/file.py +153 -0
  296. parrot/memory/mem.py +131 -0
  297. parrot/memory/redis.py +613 -0
  298. parrot/models/__init__.py +46 -0
  299. parrot/models/basic.py +118 -0
  300. parrot/models/compliance.py +208 -0
  301. parrot/models/crew.py +395 -0
  302. parrot/models/detections.py +654 -0
  303. parrot/models/generation.py +85 -0
  304. parrot/models/google.py +223 -0
  305. parrot/models/groq.py +23 -0
  306. parrot/models/openai.py +30 -0
  307. parrot/models/outputs.py +285 -0
  308. parrot/models/responses.py +938 -0
  309. parrot/notifications/__init__.py +743 -0
  310. parrot/openapi/__init__.py +3 -0
  311. parrot/openapi/components.yaml +641 -0
  312. parrot/openapi/config.py +322 -0
  313. parrot/outputs/__init__.py +32 -0
  314. parrot/outputs/formats/__init__.py +108 -0
  315. parrot/outputs/formats/altair.py +359 -0
  316. parrot/outputs/formats/application.py +122 -0
  317. parrot/outputs/formats/base.py +351 -0
  318. parrot/outputs/formats/bokeh.py +356 -0
  319. parrot/outputs/formats/card.py +424 -0
  320. parrot/outputs/formats/chart.py +436 -0
  321. parrot/outputs/formats/d3.py +255 -0
  322. parrot/outputs/formats/echarts.py +310 -0
  323. parrot/outputs/formats/generators/__init__.py +0 -0
  324. parrot/outputs/formats/generators/abstract.py +61 -0
  325. parrot/outputs/formats/generators/panel.py +145 -0
  326. parrot/outputs/formats/generators/streamlit.py +86 -0
  327. parrot/outputs/formats/generators/terminal.py +63 -0
  328. parrot/outputs/formats/holoviews.py +310 -0
  329. parrot/outputs/formats/html.py +147 -0
  330. parrot/outputs/formats/jinja2.py +46 -0
  331. parrot/outputs/formats/json.py +87 -0
  332. parrot/outputs/formats/map.py +933 -0
  333. parrot/outputs/formats/markdown.py +172 -0
  334. parrot/outputs/formats/matplotlib.py +237 -0
  335. parrot/outputs/formats/mixins/__init__.py +0 -0
  336. parrot/outputs/formats/mixins/emaps.py +855 -0
  337. parrot/outputs/formats/plotly.py +341 -0
  338. parrot/outputs/formats/seaborn.py +310 -0
  339. parrot/outputs/formats/table.py +397 -0
  340. parrot/outputs/formats/template_report.py +138 -0
  341. parrot/outputs/formats/yaml.py +125 -0
  342. parrot/outputs/formatter.py +152 -0
  343. parrot/outputs/templates/__init__.py +95 -0
  344. parrot/pipelines/__init__.py +0 -0
  345. parrot/pipelines/abstract.py +210 -0
  346. parrot/pipelines/detector.py +124 -0
  347. parrot/pipelines/models.py +90 -0
  348. parrot/pipelines/planogram.py +3002 -0
  349. parrot/pipelines/table.sql +97 -0
  350. parrot/plugins/__init__.py +106 -0
  351. parrot/plugins/importer.py +80 -0
  352. parrot/py.typed +0 -0
  353. parrot/registry/__init__.py +18 -0
  354. parrot/registry/registry.py +594 -0
  355. parrot/scheduler/__init__.py +1189 -0
  356. parrot/scheduler/models.py +60 -0
  357. parrot/security/__init__.py +16 -0
  358. parrot/security/prompt_injection.py +268 -0
  359. parrot/security/security_events.sql +25 -0
  360. parrot/services/__init__.py +1 -0
  361. parrot/services/mcp/__init__.py +8 -0
  362. parrot/services/mcp/config.py +13 -0
  363. parrot/services/mcp/server.py +295 -0
  364. parrot/services/o365_remote_auth.py +235 -0
  365. parrot/stores/__init__.py +7 -0
  366. parrot/stores/abstract.py +352 -0
  367. parrot/stores/arango.py +1090 -0
  368. parrot/stores/bigquery.py +1377 -0
  369. parrot/stores/cache.py +106 -0
  370. parrot/stores/empty.py +10 -0
  371. parrot/stores/faiss_store.py +1157 -0
  372. parrot/stores/kb/__init__.py +9 -0
  373. parrot/stores/kb/abstract.py +68 -0
  374. parrot/stores/kb/cache.py +165 -0
  375. parrot/stores/kb/doc.py +325 -0
  376. parrot/stores/kb/hierarchy.py +346 -0
  377. parrot/stores/kb/local.py +457 -0
  378. parrot/stores/kb/prompt.py +28 -0
  379. parrot/stores/kb/redis.py +659 -0
  380. parrot/stores/kb/store.py +115 -0
  381. parrot/stores/kb/user.py +374 -0
  382. parrot/stores/models.py +59 -0
  383. parrot/stores/pgvector.py +3 -0
  384. parrot/stores/postgres.py +2853 -0
  385. parrot/stores/utils/__init__.py +0 -0
  386. parrot/stores/utils/chunking.py +197 -0
  387. parrot/telemetry/__init__.py +3 -0
  388. parrot/telemetry/mixin.py +111 -0
  389. parrot/template/__init__.py +3 -0
  390. parrot/template/engine.py +259 -0
  391. parrot/tools/__init__.py +23 -0
  392. parrot/tools/abstract.py +644 -0
  393. parrot/tools/agent.py +363 -0
  394. parrot/tools/arangodbsearch.py +537 -0
  395. parrot/tools/arxiv_tool.py +188 -0
  396. parrot/tools/calculator/__init__.py +3 -0
  397. parrot/tools/calculator/operations/__init__.py +38 -0
  398. parrot/tools/calculator/operations/calculus.py +80 -0
  399. parrot/tools/calculator/operations/statistics.py +76 -0
  400. parrot/tools/calculator/tool.py +150 -0
  401. parrot/tools/cloudwatch.py +988 -0
  402. parrot/tools/codeinterpreter/__init__.py +127 -0
  403. parrot/tools/codeinterpreter/executor.py +371 -0
  404. parrot/tools/codeinterpreter/internals.py +473 -0
  405. parrot/tools/codeinterpreter/models.py +643 -0
  406. parrot/tools/codeinterpreter/prompts.py +224 -0
  407. parrot/tools/codeinterpreter/tool.py +664 -0
  408. parrot/tools/company_info/__init__.py +6 -0
  409. parrot/tools/company_info/tool.py +1138 -0
  410. parrot/tools/correlationanalysis.py +437 -0
  411. parrot/tools/database/abstract.py +286 -0
  412. parrot/tools/database/bq.py +115 -0
  413. parrot/tools/database/cache.py +284 -0
  414. parrot/tools/database/models.py +95 -0
  415. parrot/tools/database/pg.py +343 -0
  416. parrot/tools/databasequery.py +1159 -0
  417. parrot/tools/db.py +1800 -0
  418. parrot/tools/ddgo.py +370 -0
  419. parrot/tools/decorators.py +271 -0
  420. parrot/tools/dftohtml.py +282 -0
  421. parrot/tools/document.py +549 -0
  422. parrot/tools/ecs.py +819 -0
  423. parrot/tools/edareport.py +368 -0
  424. parrot/tools/elasticsearch.py +1049 -0
  425. parrot/tools/employees.py +462 -0
  426. parrot/tools/epson/__init__.py +96 -0
  427. parrot/tools/excel.py +683 -0
  428. parrot/tools/file/__init__.py +13 -0
  429. parrot/tools/file/abstract.py +76 -0
  430. parrot/tools/file/gcs.py +378 -0
  431. parrot/tools/file/local.py +284 -0
  432. parrot/tools/file/s3.py +511 -0
  433. parrot/tools/file/tmp.py +309 -0
  434. parrot/tools/file/tool.py +501 -0
  435. parrot/tools/file_reader.py +129 -0
  436. parrot/tools/flowtask/__init__.py +19 -0
  437. parrot/tools/flowtask/tool.py +761 -0
  438. parrot/tools/gittoolkit.py +508 -0
  439. parrot/tools/google/__init__.py +18 -0
  440. parrot/tools/google/base.py +169 -0
  441. parrot/tools/google/tools.py +1251 -0
  442. parrot/tools/googlelocation.py +5 -0
  443. parrot/tools/googleroutes.py +5 -0
  444. parrot/tools/googlesearch.py +5 -0
  445. parrot/tools/googlesitesearch.py +5 -0
  446. parrot/tools/googlevoice.py +2 -0
  447. parrot/tools/gvoice.py +695 -0
  448. parrot/tools/ibisworld/README.md +225 -0
  449. parrot/tools/ibisworld/__init__.py +11 -0
  450. parrot/tools/ibisworld/tool.py +366 -0
  451. parrot/tools/jiratoolkit.py +1718 -0
  452. parrot/tools/manager.py +1098 -0
  453. parrot/tools/math.py +152 -0
  454. parrot/tools/metadata.py +476 -0
  455. parrot/tools/msteams.py +1621 -0
  456. parrot/tools/msword.py +635 -0
  457. parrot/tools/multidb.py +580 -0
  458. parrot/tools/multistoresearch.py +369 -0
  459. parrot/tools/networkninja.py +167 -0
  460. parrot/tools/nextstop/__init__.py +4 -0
  461. parrot/tools/nextstop/base.py +286 -0
  462. parrot/tools/nextstop/employee.py +733 -0
  463. parrot/tools/nextstop/store.py +462 -0
  464. parrot/tools/notification.py +435 -0
  465. parrot/tools/o365/__init__.py +42 -0
  466. parrot/tools/o365/base.py +295 -0
  467. parrot/tools/o365/bundle.py +522 -0
  468. parrot/tools/o365/events.py +554 -0
  469. parrot/tools/o365/mail.py +992 -0
  470. parrot/tools/o365/onedrive.py +497 -0
  471. parrot/tools/o365/sharepoint.py +641 -0
  472. parrot/tools/openapi_toolkit.py +904 -0
  473. parrot/tools/openweather.py +527 -0
  474. parrot/tools/pdfprint.py +1001 -0
  475. parrot/tools/powerbi.py +518 -0
  476. parrot/tools/powerpoint.py +1113 -0
  477. parrot/tools/pricestool.py +146 -0
  478. parrot/tools/products/__init__.py +246 -0
  479. parrot/tools/prophet_tool.py +171 -0
  480. parrot/tools/pythonpandas.py +630 -0
  481. parrot/tools/pythonrepl.py +910 -0
  482. parrot/tools/qsource.py +436 -0
  483. parrot/tools/querytoolkit.py +395 -0
  484. parrot/tools/quickeda.py +827 -0
  485. parrot/tools/resttool.py +553 -0
  486. parrot/tools/retail/__init__.py +0 -0
  487. parrot/tools/retail/bby.py +528 -0
  488. parrot/tools/sandboxtool.py +703 -0
  489. parrot/tools/sassie/__init__.py +352 -0
  490. parrot/tools/scraping/__init__.py +7 -0
  491. parrot/tools/scraping/docs/select.md +466 -0
  492. parrot/tools/scraping/documentation.md +1278 -0
  493. parrot/tools/scraping/driver.py +436 -0
  494. parrot/tools/scraping/models.py +576 -0
  495. parrot/tools/scraping/options.py +85 -0
  496. parrot/tools/scraping/orchestrator.py +517 -0
  497. parrot/tools/scraping/readme.md +740 -0
  498. parrot/tools/scraping/tool.py +3115 -0
  499. parrot/tools/seasonaldetection.py +642 -0
  500. parrot/tools/shell_tool/__init__.py +5 -0
  501. parrot/tools/shell_tool/actions.py +408 -0
  502. parrot/tools/shell_tool/engine.py +155 -0
  503. parrot/tools/shell_tool/models.py +322 -0
  504. parrot/tools/shell_tool/tool.py +442 -0
  505. parrot/tools/site_search.py +214 -0
  506. parrot/tools/textfile.py +418 -0
  507. parrot/tools/think.py +378 -0
  508. parrot/tools/toolkit.py +298 -0
  509. parrot/tools/webapp_tool.py +187 -0
  510. parrot/tools/whatif.py +1279 -0
  511. parrot/tools/workday/MULTI_WSDL_EXAMPLE.md +249 -0
  512. parrot/tools/workday/__init__.py +6 -0
  513. parrot/tools/workday/models.py +1389 -0
  514. parrot/tools/workday/tool.py +1293 -0
  515. parrot/tools/yfinance_tool.py +306 -0
  516. parrot/tools/zipcode.py +217 -0
  517. parrot/utils/__init__.py +2 -0
  518. parrot/utils/helpers.py +73 -0
  519. parrot/utils/parsers/__init__.py +5 -0
  520. parrot/utils/parsers/toml.c +12078 -0
  521. parrot/utils/parsers/toml.cpython-310-x86_64-linux-gnu.so +0 -0
  522. parrot/utils/parsers/toml.pyx +21 -0
  523. parrot/utils/toml.py +11 -0
  524. parrot/utils/types.cpp +20936 -0
  525. parrot/utils/types.cpython-310-x86_64-linux-gnu.so +0 -0
  526. parrot/utils/types.pyx +213 -0
  527. parrot/utils/uv.py +11 -0
  528. parrot/version.py +10 -0
  529. parrot/yaml-rs/Cargo.lock +350 -0
  530. parrot/yaml-rs/Cargo.toml +19 -0
  531. parrot/yaml-rs/pyproject.toml +19 -0
  532. parrot/yaml-rs/python/yaml_rs/__init__.py +81 -0
  533. parrot/yaml-rs/src/lib.rs +222 -0
  534. requirements/docker-compose.yml +24 -0
  535. requirements/requirements-dev.txt +21 -0
@@ -0,0 +1,539 @@
1
+ <script>
2
+ import { goto } from '$app/navigation';
3
+ import { browser } from '$app/environment';
4
+ import { ThemeSwitcher, LoadingSpinner } from '../components';
5
+ import { crew as crewApi } from '$lib/api';
6
+ import { crewStore } from '$lib/stores/crewStore';
7
+ import { authStore } from '$lib/stores/auth.svelte.ts';
8
+
9
+ let redirecting = $state(false);
10
+ let crews = $state([]);
11
+ let crewsLoading = $state(false);
12
+ let crewsError = $state('');
13
+ let totalCrews = $state(0);
14
+
15
+ $effect(() => {
16
+ if (!browser) return;
17
+
18
+ if (!authStore.loading && !authStore.isAuthenticated && !redirecting) {
19
+ redirecting = true;
20
+ goto('/login');
21
+ }
22
+ });
23
+
24
+ async function fetchCrews() {
25
+ if (!browser) return;
26
+
27
+ crewsLoading = true;
28
+ crewsError = '';
29
+
30
+ try {
31
+ const response = await crewApi.listCrews();
32
+ crews = Array.isArray(response?.crews) ? response.crews : [];
33
+ totalCrews = typeof response?.total === 'number' ? response.total : crews.length;
34
+ } catch (error) {
35
+ console.error('Failed to load crews', error);
36
+ let responseMessage;
37
+ if (
38
+ typeof error === 'object' &&
39
+ error !== null &&
40
+ 'response' in error &&
41
+ error.response &&
42
+ typeof error.response === 'object' &&
43
+ 'data' in error.response &&
44
+ error.response.data &&
45
+ typeof error.response.data === 'object' &&
46
+ 'message' in error.response.data &&
47
+ typeof error.response.data.message === 'string'
48
+ ) {
49
+ responseMessage = error.response.data.message;
50
+ }
51
+ const fallbackMessage =
52
+ error instanceof Error && typeof error.message === 'string'
53
+ ? error.message
54
+ : 'Unable to load crews at this time.';
55
+ crewsError = responseMessage ?? fallbackMessage;
56
+ crews = [];
57
+ totalCrews = 0;
58
+ } finally {
59
+ crewsLoading = false;
60
+ }
61
+ }
62
+
63
+ $effect(() => {
64
+ if (!browser) return;
65
+
66
+ if (!authStore.loading && authStore.isAuthenticated) {
67
+ fetchCrews();
68
+ }
69
+ });
70
+
71
+ async function handleLogout() {
72
+ await authStore.logout();
73
+ }
74
+
75
+ function handleStartBuilding(event) {
76
+ if (!browser) return;
77
+
78
+ event?.preventDefault?.();
79
+ crewStore.reset();
80
+ goto('/builder');
81
+ }
82
+
83
+ function formatDate(dateString) {
84
+ if (!dateString) {
85
+ return '—';
86
+ }
87
+
88
+ const date = new Date(dateString);
89
+ if (Number.isNaN(date.getTime())) {
90
+ return dateString;
91
+ }
92
+
93
+ return date.toLocaleString(undefined, {
94
+ year: 'numeric',
95
+ month: 'short',
96
+ day: 'numeric',
97
+ hour: '2-digit',
98
+ minute: '2-digit'
99
+ });
100
+ }
101
+ </script>
102
+
103
+ <svelte:head>
104
+ <title>Dashboard - Crew Builder</title>
105
+ </svelte:head>
106
+
107
+ {#if authStore.loading}
108
+ <div class="flex min-h-screen items-center justify-center">
109
+ <LoadingSpinner text="Loading your workspace..." />
110
+ </div>
111
+ {:else}
112
+ <div class="drawer lg:drawer-open">
113
+ <input id="main-drawer" type="checkbox" class="drawer-toggle" />
114
+ <div class="drawer-content flex flex-col">
115
+ <!-- Navbar -->
116
+ <div class="navbar sticky top-0 z-30 bg-base-100 shadow-md">
117
+ <div class="flex-none lg:hidden">
118
+ <label for="main-drawer" class="btn btn-square btn-ghost">
119
+ <svg
120
+ xmlns="http://www.w3.org/2000/svg"
121
+ fill="none"
122
+ viewBox="0 0 24 24"
123
+ class="inline-block h-6 w-6 stroke-current"
124
+ >
125
+ <path
126
+ stroke-linecap="round"
127
+ stroke-linejoin="round"
128
+ stroke-width="2"
129
+ d="M4 6h16M4 12h16M4 18h16"
130
+ ></path>
131
+ </svg>
132
+ </label>
133
+ </div>
134
+ <div class="flex-1">
135
+ <h1 class="px-4 text-xl font-bold">Crew Builder</h1>
136
+ </div>
137
+ <div class="flex-none gap-2">
138
+ <!-- Theme Selector -->
139
+ <ThemeSwitcher showLabel={false} buttonClass="btn-ghost btn-square" />
140
+
141
+ <!-- User Menu -->
142
+ <div class="dropdown dropdown-end">
143
+ <button class="btn btn-circle btn-ghost">
144
+ <div class="avatar placeholder">
145
+ <div class="w-10 rounded-full bg-primary text-primary-content">
146
+ <span class="text-xs">
147
+ {authStore.user?.username?.[0]?.toUpperCase() || 'U'}
148
+ </span>
149
+ </div>
150
+ </div>
151
+ </button>
152
+ <ul
153
+ class="menu dropdown-content menu-sm z-[1] mt-3 w-52 rounded-box bg-base-100 p-2 shadow"
154
+ >
155
+ <li class="menu-title">
156
+ <span>{authStore.user?.username || 'User'}</span>
157
+ </li>
158
+ <li><a href="/profile">Profile</a></li>
159
+ <li><a href="/settings">Settings</a></li>
160
+ <li><button onclick={handleLogout}>Logout</button></li>
161
+ </ul>
162
+ </div>
163
+ </div>
164
+ </div>
165
+
166
+ <!-- Page Content -->
167
+ <div class="flex-1 p-6">
168
+ <div class="mb-6">
169
+ <h2 class="text-3xl font-bold">Welcome back, {authStore.user?.username || 'User'}!</h2>
170
+ <p class="text-base-content/70">Build and manage your AI agent crews</p>
171
+ </div>
172
+
173
+ <!-- Quick Stats -->
174
+ <div class="mb-6 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4">
175
+ <div class="stat bg-base-100 shadow">
176
+ <div class="stat-figure text-primary">
177
+ <svg
178
+ xmlns="http://www.w3.org/2000/svg"
179
+ fill="none"
180
+ viewBox="0 0 24 24"
181
+ class="inline-block h-8 w-8 stroke-current"
182
+ >
183
+ <path
184
+ stroke-linecap="round"
185
+ stroke-linejoin="round"
186
+ stroke-width="2"
187
+ d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"
188
+ />
189
+ </svg>
190
+ </div>
191
+ <div class="stat-title">Total Crews</div>
192
+ <div class="stat-value text-primary">{crewsLoading ? '…' : totalCrews}</div>
193
+ <div class="stat-desc">Active agent crews</div>
194
+ </div>
195
+
196
+ <div class="stat bg-base-100 shadow">
197
+ <div class="stat-figure text-secondary">
198
+ <svg
199
+ xmlns="http://www.w3.org/2000/svg"
200
+ fill="none"
201
+ viewBox="0 0 24 24"
202
+ class="inline-block h-8 w-8 stroke-current"
203
+ >
204
+ <path
205
+ stroke-linecap="round"
206
+ stroke-linejoin="round"
207
+ stroke-width="2"
208
+ d="M13 10V3L4 14h7v7l9-11h-7z"
209
+ />
210
+ </svg>
211
+ </div>
212
+ <div class="stat-title">Executions</div>
213
+ <div class="stat-value text-secondary">0</div>
214
+ <div class="stat-desc">Total runs</div>
215
+ </div>
216
+
217
+ <div class="stat bg-base-100 shadow">
218
+ <div class="stat-figure text-accent">
219
+ <svg
220
+ xmlns="http://www.w3.org/2000/svg"
221
+ fill="none"
222
+ viewBox="0 0 24 24"
223
+ class="inline-block h-8 w-8 stroke-current"
224
+ >
225
+ <path
226
+ stroke-linecap="round"
227
+ stroke-linejoin="round"
228
+ stroke-width="2"
229
+ d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z"
230
+ />
231
+ </svg>
232
+ </div>
233
+ <div class="stat-title">Success Rate</div>
234
+ <div class="stat-value text-accent">100%</div>
235
+ <div class="stat-desc">Last 30 days</div>
236
+ </div>
237
+
238
+ <div class="stat bg-base-100 shadow">
239
+ <div class="stat-figure text-info">
240
+ <svg
241
+ xmlns="http://www.w3.org/2000/svg"
242
+ fill="none"
243
+ viewBox="0 0 24 24"
244
+ class="inline-block h-8 w-8 stroke-current"
245
+ >
246
+ <path
247
+ stroke-linecap="round"
248
+ stroke-linejoin="round"
249
+ stroke-width="2"
250
+ d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
251
+ />
252
+ </svg>
253
+ </div>
254
+ <div class="stat-title">Avg Duration</div>
255
+ <div class="stat-value text-info">0s</div>
256
+ <div class="stat-desc">Per execution</div>
257
+ </div>
258
+ </div>
259
+
260
+ <!-- Action Cards -->
261
+ <div class="grid grid-cols-1 gap-6 lg:grid-cols-2">
262
+ <div class="card bg-base-100 shadow-xl">
263
+ <div class="card-body">
264
+ <h2 class="card-title">Create New Crew</h2>
265
+ <p>Design a new agent crew using our visual workflow builder.</p>
266
+ <div class="card-actions justify-end">
267
+ <a href="/builder" class="btn btn-primary" onclick={handleStartBuilding}>Start Building</a>
268
+ </div>
269
+ </div>
270
+ </div>
271
+
272
+ <div class="card bg-base-100 shadow-xl">
273
+ <div class="card-body">
274
+ <h2 class="card-title">Import Crew</h2>
275
+ <p>Import an existing crew configuration from a JSON file.</p>
276
+ <div class="card-actions justify-end">
277
+ <button class="btn btn-secondary">Import JSON</button>
278
+ </div>
279
+ </div>
280
+ </div>
281
+
282
+ <div class="card bg-base-100 shadow-xl">
283
+ <div class="card-body">
284
+ <h2 class="card-title">Authorize Office 365</h2>
285
+ <p>Grant delegated Microsoft 365 access for Parrot tools.</p>
286
+ <div class="card-actions justify-end">
287
+ <a class="btn btn-accent" href="/integrations/o365">Open Authorization</a>
288
+ </div>
289
+ </div>
290
+ </div>
291
+
292
+ <div class="card bg-base-100 shadow-xl">
293
+ <div class="card-body">
294
+ <h2 class="card-title">Talk to Agents</h2>
295
+ <p>Browse existing agents and start chatting without leaving Crew Builder.</p>
296
+ <div class="card-actions justify-end">
297
+ <a class="btn btn-info" href="/agents">Open Agents</a>
298
+ </div>
299
+ </div>
300
+ </div>
301
+ </div>
302
+
303
+ <!-- Recent Crews -->
304
+ <div class="mt-6">
305
+ <h3 class="mb-4 text-2xl font-bold">My Crews</h3>
306
+ <div class="overflow-x-auto bg-base-100 shadow-xl">
307
+ <table class="table">
308
+ <thead>
309
+ <tr>
310
+ <th>Name</th>
311
+ <th>Agents</th>
312
+ <th>Execution Mode</th>
313
+ <th>Created</th>
314
+ <th>Actions</th>
315
+ </tr>
316
+ </thead>
317
+ <tbody>
318
+ {#if crewsLoading}
319
+ <tr>
320
+ <td colspan="5" class="text-center text-base-content/70">
321
+ Loading crews...
322
+ </td>
323
+ </tr>
324
+ {:else if crewsError}
325
+ <tr>
326
+ <td colspan="5" class="text-center text-error">
327
+ {crewsError}
328
+ </td>
329
+ </tr>
330
+ {:else if !crews.length}
331
+ <tr>
332
+ <td colspan="5" class="text-center text-base-content/70">
333
+ No crews yet. Create your first crew to get started!
334
+ </td>
335
+ </tr>
336
+ {:else}
337
+ {#each crews as crewItem (crewItem.crew_id)}
338
+ <tr>
339
+ <td>
340
+ <div class="flex flex-col">
341
+ <span class="font-semibold capitalize">{crewItem.name}</span>
342
+ <span class="text-sm text-base-content/70">{crewItem.description}</span>
343
+ </div>
344
+ </td>
345
+ <td>{crewItem.agent_count ?? '—'}</td>
346
+ <td class="capitalize">{crewItem.execution_mode || '—'}</td>
347
+ <td>{formatDate(crewItem.created_at)}</td>
348
+ <td>
349
+ <div class="flex gap-2">
350
+ <a class="btn btn-ghost btn-xs" href={`/builder?crew_id=${crewItem.crew_id}`}>
351
+ View
352
+ </a>
353
+ <a class="btn btn-primary btn-xs" href={`/crew/ask?crew_id=${crewItem.crew_id}`}>
354
+ Ask
355
+ </a>
356
+ </div>
357
+ </td>
358
+ </tr>
359
+ {/each}
360
+ {/if}
361
+ </tbody>
362
+ </table>
363
+ </div>
364
+ </div>
365
+ </div>
366
+ </div>
367
+
368
+ <!-- Sidebar -->
369
+ <div class="drawer-side">
370
+ <label for="main-drawer" aria-label="close sidebar" class="drawer-overlay"></label>
371
+ <aside class="flex min-h-screen w-64 flex-col bg-base-200">
372
+ <!-- Logo -->
373
+ <div class="flex h-16 items-center gap-2 px-4">
374
+ <div class="avatar">
375
+ <div class="w-10 rounded-lg bg-primary text-primary-content">
376
+ <svg
377
+ xmlns="http://www.w3.org/2000/svg"
378
+ fill="none"
379
+ viewBox="0 0 24 24"
380
+ class="h-6 w-6 stroke-current"
381
+ >
382
+ <path
383
+ stroke-linecap="round"
384
+ stroke-linejoin="round"
385
+ stroke-width="2"
386
+ d="M13 10V3L4 14h7v7l9-11h-7z"
387
+ />
388
+ </svg>
389
+ </div>
390
+ </div>
391
+ <span class="text-lg font-bold">AI-Parrot</span>
392
+ </div>
393
+
394
+ <!-- Navigation Menu -->
395
+ <ul class="menu flex-1 p-4">
396
+ <li class="menu-title">
397
+ <span>Main</span>
398
+ </li>
399
+ <li>
400
+ <a href="/" class="active">
401
+ <svg
402
+ xmlns="http://www.w3.org/2000/svg"
403
+ class="h-5 w-5"
404
+ fill="none"
405
+ viewBox="0 0 24 24"
406
+ stroke="currentColor"
407
+ >
408
+ <path
409
+ stroke-linecap="round"
410
+ stroke-linejoin="round"
411
+ stroke-width="2"
412
+ d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"
413
+ />
414
+ </svg>
415
+ Dashboard
416
+ </a>
417
+ </li>
418
+ <li>
419
+ <a href="/builder" onclick={handleStartBuilding}>
420
+ <svg
421
+ xmlns="http://www.w3.org/2000/svg"
422
+ class="h-5 w-5"
423
+ fill="none"
424
+ viewBox="0 0 24 24"
425
+ stroke="currentColor"
426
+ >
427
+ <path
428
+ stroke-linecap="round"
429
+ stroke-linejoin="round"
430
+ stroke-width="2"
431
+ d="M14 10l-2 1m0 0l-2-1m2 1v2.5M20 7l-2 1m2-1l-2-1m2 1v2.5M14 4l-2-1-2 1M4 7l2-1M4 7l2 1M4 7v2.5M12 21l-2-1m2 1l2-1m-2 1v-2.5M6 18l-2-1v-2.5M18 18l2-1v-2.5"
432
+ />
433
+ </svg>
434
+ Crew Builder
435
+ </a>
436
+ </li>
437
+ <li>
438
+ <a href="/crew/ask">
439
+ <svg
440
+ xmlns="http://www.w3.org/2000/svg"
441
+ class="h-5 w-5"
442
+ fill="none"
443
+ viewBox="0 0 24 24"
444
+ stroke="currentColor"
445
+ >
446
+ <path
447
+ stroke-linecap="round"
448
+ stroke-linejoin="round"
449
+ stroke-width="2"
450
+ d="M7 8h10M7 12h6m-5 8l-4 4v-4H4a3 3 0 01-3-3V5a3 3 0 013-3h16a3 3 0 013 3v10a3 3 0 01-3 3H9z"
451
+ />
452
+ </svg>
453
+ Ask a Crew
454
+ </a>
455
+ </li>
456
+ <li>
457
+ <a href="/agents">
458
+ <svg
459
+ xmlns="http://www.w3.org/2000/svg"
460
+ class="h-5 w-5"
461
+ fill="none"
462
+ viewBox="0 0 24 24"
463
+ stroke="currentColor"
464
+ >
465
+ <path
466
+ stroke-linecap="round"
467
+ stroke-linejoin="round"
468
+ stroke-width="2"
469
+ d="M8 10h.01M12 10h.01M16 10h.01M9 16h6m2 5a2 2 0 002-2V6a2 2 0 00-2-2H7a2 2 0 00-2 2v13l3-3h10z"
470
+ />
471
+ </svg>
472
+ Agents
473
+ </a>
474
+ </li>
475
+ <li>
476
+ <a href="/crews">
477
+ <svg
478
+ xmlns="http://www.w3.org/2000/svg"
479
+ class="h-5 w-5"
480
+ fill="none"
481
+ viewBox="0 0 24 24"
482
+ stroke="currentColor"
483
+ >
484
+ <path
485
+ stroke-linecap="round"
486
+ stroke-linejoin="round"
487
+ stroke-width="2"
488
+ d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"
489
+ />
490
+ </svg>
491
+ My Crews
492
+ </a>
493
+ </li>
494
+ <li class="menu-title">
495
+ <span>Resources</span>
496
+ </li>
497
+ <li>
498
+ <a href="/templates">
499
+ <svg
500
+ xmlns="http://www.w3.org/2000/svg"
501
+ class="h-5 w-5"
502
+ fill="none"
503
+ viewBox="0 0 24 24"
504
+ stroke="currentColor"
505
+ >
506
+ <path
507
+ stroke-linecap="round"
508
+ stroke-linejoin="round"
509
+ stroke-width="2"
510
+ d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"
511
+ />
512
+ </svg>
513
+ Templates
514
+ </a>
515
+ </li>
516
+ <li>
517
+ <a href="/docs">
518
+ <svg
519
+ xmlns="http://www.w3.org/2000/svg"
520
+ class="h-5 w-5"
521
+ fill="none"
522
+ viewBox="0 0 24 24"
523
+ stroke="currentColor"
524
+ >
525
+ <path
526
+ stroke-linecap="round"
527
+ stroke-linejoin="round"
528
+ stroke-width="2"
529
+ d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"
530
+ />
531
+ </svg>
532
+ Documentation
533
+ </a>
534
+ </li>
535
+ </ul>
536
+ </aside>
537
+ </div>
538
+ </div>
539
+ {/if}