mindroom 0.0.0__py3-none-any.whl → 0.1.0__py3-none-any.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 (155) hide show
  1. mindroom/__init__.py +3 -0
  2. mindroom/agent_prompts.py +963 -0
  3. mindroom/agents.py +248 -0
  4. mindroom/ai.py +421 -0
  5. mindroom/api/__init__.py +1 -0
  6. mindroom/api/credentials.py +137 -0
  7. mindroom/api/google_integration.py +355 -0
  8. mindroom/api/google_tools_helper.py +40 -0
  9. mindroom/api/homeassistant_integration.py +421 -0
  10. mindroom/api/integrations.py +189 -0
  11. mindroom/api/main.py +506 -0
  12. mindroom/api/matrix_operations.py +219 -0
  13. mindroom/api/tools.py +94 -0
  14. mindroom/background_tasks.py +87 -0
  15. mindroom/bot.py +2470 -0
  16. mindroom/cli.py +86 -0
  17. mindroom/commands.py +377 -0
  18. mindroom/config.py +343 -0
  19. mindroom/config_commands.py +324 -0
  20. mindroom/config_confirmation.py +411 -0
  21. mindroom/constants.py +52 -0
  22. mindroom/credentials.py +146 -0
  23. mindroom/credentials_sync.py +134 -0
  24. mindroom/custom_tools/__init__.py +8 -0
  25. mindroom/custom_tools/config_manager.py +765 -0
  26. mindroom/custom_tools/gmail.py +92 -0
  27. mindroom/custom_tools/google_calendar.py +92 -0
  28. mindroom/custom_tools/google_sheets.py +92 -0
  29. mindroom/custom_tools/homeassistant.py +341 -0
  30. mindroom/error_handling.py +35 -0
  31. mindroom/file_watcher.py +49 -0
  32. mindroom/interactive.py +313 -0
  33. mindroom/logging_config.py +207 -0
  34. mindroom/matrix/__init__.py +1 -0
  35. mindroom/matrix/client.py +782 -0
  36. mindroom/matrix/event_info.py +173 -0
  37. mindroom/matrix/identity.py +149 -0
  38. mindroom/matrix/large_messages.py +267 -0
  39. mindroom/matrix/mentions.py +141 -0
  40. mindroom/matrix/message_builder.py +94 -0
  41. mindroom/matrix/message_content.py +209 -0
  42. mindroom/matrix/presence.py +178 -0
  43. mindroom/matrix/rooms.py +311 -0
  44. mindroom/matrix/state.py +77 -0
  45. mindroom/matrix/typing.py +91 -0
  46. mindroom/matrix/users.py +217 -0
  47. mindroom/memory/__init__.py +21 -0
  48. mindroom/memory/config.py +137 -0
  49. mindroom/memory/functions.py +396 -0
  50. mindroom/py.typed +0 -0
  51. mindroom/response_tracker.py +128 -0
  52. mindroom/room_cleanup.py +139 -0
  53. mindroom/routing.py +107 -0
  54. mindroom/scheduling.py +758 -0
  55. mindroom/stop.py +207 -0
  56. mindroom/streaming.py +203 -0
  57. mindroom/teams.py +749 -0
  58. mindroom/thread_utils.py +318 -0
  59. mindroom/tools/__init__.py +520 -0
  60. mindroom/tools/agentql.py +64 -0
  61. mindroom/tools/airflow.py +57 -0
  62. mindroom/tools/apify.py +49 -0
  63. mindroom/tools/arxiv.py +64 -0
  64. mindroom/tools/aws_lambda.py +41 -0
  65. mindroom/tools/aws_ses.py +57 -0
  66. mindroom/tools/baidusearch.py +87 -0
  67. mindroom/tools/brightdata.py +116 -0
  68. mindroom/tools/browserbase.py +62 -0
  69. mindroom/tools/cal_com.py +98 -0
  70. mindroom/tools/calculator.py +112 -0
  71. mindroom/tools/cartesia.py +84 -0
  72. mindroom/tools/composio.py +166 -0
  73. mindroom/tools/config_manager.py +44 -0
  74. mindroom/tools/confluence.py +73 -0
  75. mindroom/tools/crawl4ai.py +101 -0
  76. mindroom/tools/csv.py +104 -0
  77. mindroom/tools/custom_api.py +106 -0
  78. mindroom/tools/dalle.py +85 -0
  79. mindroom/tools/daytona.py +180 -0
  80. mindroom/tools/discord.py +81 -0
  81. mindroom/tools/docker.py +73 -0
  82. mindroom/tools/duckdb.py +124 -0
  83. mindroom/tools/duckduckgo.py +99 -0
  84. mindroom/tools/e2b.py +121 -0
  85. mindroom/tools/eleven_labs.py +77 -0
  86. mindroom/tools/email.py +74 -0
  87. mindroom/tools/exa.py +246 -0
  88. mindroom/tools/fal.py +50 -0
  89. mindroom/tools/file.py +80 -0
  90. mindroom/tools/financial_datasets_api.py +112 -0
  91. mindroom/tools/firecrawl.py +124 -0
  92. mindroom/tools/gemini.py +85 -0
  93. mindroom/tools/giphy.py +49 -0
  94. mindroom/tools/github.py +376 -0
  95. mindroom/tools/gmail.py +102 -0
  96. mindroom/tools/google_calendar.py +55 -0
  97. mindroom/tools/google_maps.py +112 -0
  98. mindroom/tools/google_sheets.py +86 -0
  99. mindroom/tools/googlesearch.py +83 -0
  100. mindroom/tools/groq.py +77 -0
  101. mindroom/tools/hackernews.py +54 -0
  102. mindroom/tools/jina.py +108 -0
  103. mindroom/tools/jira.py +70 -0
  104. mindroom/tools/linear.py +103 -0
  105. mindroom/tools/linkup.py +65 -0
  106. mindroom/tools/lumalabs.py +71 -0
  107. mindroom/tools/mem0.py +82 -0
  108. mindroom/tools/modelslabs.py +85 -0
  109. mindroom/tools/moviepy_video_tools.py +62 -0
  110. mindroom/tools/newspaper4k.py +63 -0
  111. mindroom/tools/openai.py +143 -0
  112. mindroom/tools/openweather.py +89 -0
  113. mindroom/tools/oxylabs.py +54 -0
  114. mindroom/tools/pandas.py +35 -0
  115. mindroom/tools/pubmed.py +64 -0
  116. mindroom/tools/python.py +120 -0
  117. mindroom/tools/reddit.py +155 -0
  118. mindroom/tools/replicate.py +56 -0
  119. mindroom/tools/resend.py +55 -0
  120. mindroom/tools/scrapegraph.py +87 -0
  121. mindroom/tools/searxng.py +120 -0
  122. mindroom/tools/serpapi.py +55 -0
  123. mindroom/tools/serper.py +81 -0
  124. mindroom/tools/shell.py +46 -0
  125. mindroom/tools/slack.py +80 -0
  126. mindroom/tools/sleep.py +38 -0
  127. mindroom/tools/spider.py +62 -0
  128. mindroom/tools/sql.py +138 -0
  129. mindroom/tools/tavily.py +104 -0
  130. mindroom/tools/telegram.py +54 -0
  131. mindroom/tools/todoist.py +103 -0
  132. mindroom/tools/trello.py +121 -0
  133. mindroom/tools/twilio.py +97 -0
  134. mindroom/tools/web_browser_tools.py +37 -0
  135. mindroom/tools/webex.py +63 -0
  136. mindroom/tools/website.py +45 -0
  137. mindroom/tools/whatsapp.py +81 -0
  138. mindroom/tools/wikipedia.py +45 -0
  139. mindroom/tools/x.py +97 -0
  140. mindroom/tools/yfinance.py +121 -0
  141. mindroom/tools/youtube.py +81 -0
  142. mindroom/tools/zendesk.py +62 -0
  143. mindroom/tools/zep.py +107 -0
  144. mindroom/tools/zoom.py +62 -0
  145. mindroom/tools_metadata.json +7643 -0
  146. mindroom/tools_metadata.py +220 -0
  147. mindroom/topic_generator.py +153 -0
  148. mindroom/voice_handler.py +266 -0
  149. mindroom-0.1.0.dist-info/METADATA +425 -0
  150. mindroom-0.1.0.dist-info/RECORD +152 -0
  151. {mindroom-0.0.0.dist-info → mindroom-0.1.0.dist-info}/WHEEL +1 -2
  152. mindroom-0.1.0.dist-info/entry_points.txt +2 -0
  153. mindroom-0.0.0.dist-info/METADATA +0 -24
  154. mindroom-0.0.0.dist-info/RECORD +0 -4
  155. mindroom-0.0.0.dist-info/top_level.txt +0 -1
@@ -0,0 +1,520 @@
1
+ """Tools registry for all available Agno tools.
2
+
3
+ This module provides a centralized registry for all tools that can be used by agents.
4
+ Tools are registered by string name and can be instantiated dynamically when loading agents.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from typing import TYPE_CHECKING
10
+
11
+ from mindroom.tools_metadata import ConfigField, SetupType, ToolCategory, ToolStatus, register_tool_with_metadata
12
+
13
+ from .agentql import agentql_tools
14
+ from .airflow import airflow_tools
15
+ from .apify import apify_tools
16
+ from .arxiv import arxiv_tools
17
+ from .aws_lambda import aws_lambda_tools
18
+ from .aws_ses import aws_ses_tools
19
+ from .baidusearch import baidusearch_tools
20
+ from .brightdata import brightdata_tools
21
+ from .browserbase import browserbase_tools
22
+ from .cal_com import cal_com_tools
23
+ from .calculator import calculator_tools
24
+ from .cartesia import cartesia_tools
25
+ from .composio import composio_tools
26
+ from .config_manager import config_manager_tools
27
+ from .confluence import confluence_tools
28
+ from .crawl4ai import crawl4ai_tools
29
+ from .csv import csv_tools
30
+ from .custom_api import custom_api_tools
31
+ from .dalle import dalle_tools
32
+ from .daytona import daytona_tools
33
+ from .discord import discord_tools
34
+ from .docker import docker_tools
35
+ from .duckdb import duckdb_tools
36
+ from .duckduckgo import duckduckgo_tools
37
+ from .e2b import e2b_tools
38
+ from .eleven_labs import eleven_labs_tools
39
+ from .email import email_tools
40
+ from .exa import exa_tools
41
+ from .fal import fal_tools
42
+ from .file import file_tools
43
+ from .financial_datasets_api import financial_datasets_api_tools
44
+ from .firecrawl import firecrawl_tools
45
+ from .gemini import gemini_tools
46
+ from .giphy import giphy_tools
47
+ from .github import github_tools
48
+ from .gmail import gmail_tools
49
+ from .google_calendar import google_calendar_tools
50
+ from .google_maps import google_maps_tools
51
+ from .google_sheets import google_sheets_tools
52
+ from .googlesearch import googlesearch_tools
53
+ from .groq import groq_tools
54
+ from .hackernews import hackernews_tools
55
+ from .jina import jina_tools
56
+ from .jira import jira_tools
57
+ from .linear import linear_tools
58
+ from .linkup import linkup_tools
59
+ from .lumalabs import lumalabs_tools
60
+ from .mem0 import mem0_tools
61
+ from .modelslabs import modelslabs_tools
62
+ from .moviepy_video_tools import moviepy_video_tools
63
+ from .newspaper4k import newspaper4k_tools
64
+ from .openai import openai_tools
65
+ from .openweather import openweather_tools
66
+ from .oxylabs import oxylabs_tools
67
+ from .pandas import pandas_tools
68
+ from .pubmed import pubmed_tools
69
+ from .python import python_tools
70
+ from .reddit import reddit_tools
71
+ from .replicate import replicate_tools
72
+ from .resend import resend_tools
73
+ from .scrapegraph import scrapegraph_tools
74
+ from .searxng import searxng_tools
75
+ from .serpapi import serpapi_tools
76
+ from .serper import serper_tools
77
+ from .shell import shell_tools
78
+ from .slack import slack_tools
79
+ from .sleep import sleep_tools
80
+ from .spider import spider_tools
81
+ from .sql import sql_tools
82
+ from .tavily import tavily_tools
83
+ from .telegram import telegram_tools
84
+ from .todoist import todoist_tools
85
+ from .trello import trello_tools
86
+ from .twilio import twilio_tools
87
+ from .web_browser_tools import web_browser_tools
88
+ from .webex import webex_tools
89
+ from .website import website_tools
90
+ from .whatsapp import whatsapp_tools
91
+ from .wikipedia import wikipedia_tools
92
+ from .x import x_tools
93
+ from .yfinance import yfinance_tools
94
+ from .youtube import youtube_tools
95
+ from .zendesk import zendesk_tools
96
+ from .zep import zep_tools
97
+ from .zoom import zoom_tools
98
+
99
+ if TYPE_CHECKING:
100
+ from agno.tools import Toolkit
101
+
102
+
103
+ __all__ = [
104
+ "agentql_tools",
105
+ "airflow_tools",
106
+ "apify_tools",
107
+ "arxiv_tools",
108
+ "aws_lambda_tools",
109
+ "aws_ses_tools",
110
+ "baidusearch_tools",
111
+ "brightdata_tools",
112
+ "browserbase_tools",
113
+ "cal_com_tools",
114
+ "calculator_tools",
115
+ "cartesia_tools",
116
+ "composio_tools",
117
+ "config_manager_tools",
118
+ "confluence_tools",
119
+ "crawl4ai_tools",
120
+ "csv_tools",
121
+ "custom_api_tools",
122
+ "dalle_tools",
123
+ "daytona_tools",
124
+ "discord_tools",
125
+ "docker_tools",
126
+ "duckdb_tools",
127
+ "duckduckgo_tools",
128
+ "e2b_tools",
129
+ "eleven_labs_tools",
130
+ "email_tools",
131
+ "exa_tools",
132
+ "fal_tools",
133
+ "file_tools",
134
+ "financial_datasets_api_tools",
135
+ "firecrawl_tools",
136
+ "gemini_tools",
137
+ "giphy_tools",
138
+ "github_tools",
139
+ "gmail_tools",
140
+ "google_calendar_tools",
141
+ "google_maps_tools",
142
+ "google_sheets_tools",
143
+ "googlesearch_tools",
144
+ "groq_tools",
145
+ "hackernews_tools",
146
+ "jina_tools",
147
+ "jira_tools",
148
+ "linear_tools",
149
+ "linkup_tools",
150
+ "lumalabs_tools",
151
+ "mem0_tools",
152
+ "modelslabs_tools",
153
+ "moviepy_video_tools",
154
+ "newspaper4k_tools",
155
+ "newspaper_tools",
156
+ "openai_tools",
157
+ "openweather_tools",
158
+ "oxylabs_tools",
159
+ "pandas_tools",
160
+ "pubmed_tools",
161
+ "python_tools",
162
+ "reddit_tools",
163
+ "replicate_tools",
164
+ "resend_tools",
165
+ "scrapegraph_tools",
166
+ "searxng_tools",
167
+ "serpapi_tools",
168
+ "serper_tools",
169
+ "shell_tools",
170
+ "slack_tools",
171
+ "sleep_tools",
172
+ "spider_tools",
173
+ "sql_tools",
174
+ "tavily_tools",
175
+ "telegram_tools",
176
+ "todoist_tools",
177
+ "trello_tools",
178
+ "twilio_tools",
179
+ "web_browser_tools",
180
+ "webex_tools",
181
+ "website_tools",
182
+ "whatsapp_tools",
183
+ "wikipedia_tools",
184
+ "x_tools",
185
+ "yfinance_tools",
186
+ "youtube_tools",
187
+ "zendesk_tools",
188
+ "zep_tools",
189
+ "zoom_tools",
190
+ ]
191
+
192
+
193
+ @register_tool_with_metadata(
194
+ name="homeassistant",
195
+ display_name="Home Assistant",
196
+ description="Control and monitor smart home devices",
197
+ category=ToolCategory.SMART_HOME,
198
+ icon="Home",
199
+ icon_color="text-blue-500",
200
+ dependencies=["httpx"],
201
+ status=ToolStatus.REQUIRES_CONFIG,
202
+ setup_type=SetupType.SPECIAL,
203
+ config_fields=[
204
+ ConfigField(
205
+ name="HOMEASSISTANT_URL",
206
+ label="Home Assistant URL",
207
+ type="url",
208
+ required=True,
209
+ placeholder="http://homeassistant.local:8123",
210
+ description="URL to your Home Assistant instance",
211
+ ),
212
+ ConfigField(
213
+ name="HOMEASSISTANT_TOKEN",
214
+ label="Access Token",
215
+ type="password",
216
+ required=True,
217
+ placeholder="Bearer token",
218
+ description="Long-lived access token from Home Assistant",
219
+ ),
220
+ ],
221
+ docs_url="https://www.home-assistant.io/integrations/",
222
+ )
223
+ def homeassistant_tools() -> type[Toolkit]:
224
+ """Return Home Assistant tools for smart home control."""
225
+ from mindroom.custom_tools.homeassistant import HomeAssistantTools
226
+
227
+ return HomeAssistantTools
228
+
229
+
230
+ # Coming Soon Tools - These are planned integrations that are not yet implemented
231
+ # They raise NotImplementedError but provide metadata for the UI
232
+
233
+
234
+ @register_tool_with_metadata(
235
+ name="outlook",
236
+ display_name="Microsoft Outlook",
237
+ description="Email and calendar integration",
238
+ category=ToolCategory.EMAIL,
239
+ status=ToolStatus.COMING_SOON,
240
+ setup_type=SetupType.COMING_SOON,
241
+ icon="FaMicrosoft",
242
+ icon_color="text-blue-600",
243
+ )
244
+ def outlook_tools() -> type[Toolkit]:
245
+ """Outlook integration - coming soon."""
246
+ msg = "Outlook integration is coming soon"
247
+ raise NotImplementedError(msg)
248
+
249
+
250
+ @register_tool_with_metadata(
251
+ name="yahoo_mail",
252
+ display_name="Yahoo Mail",
253
+ description="Email and calendar access",
254
+ category=ToolCategory.EMAIL,
255
+ status=ToolStatus.COMING_SOON,
256
+ setup_type=SetupType.COMING_SOON,
257
+ icon="FaYahoo",
258
+ icon_color="text-purple-600",
259
+ )
260
+ def yahoo_mail_tools() -> type[Toolkit]:
261
+ """Yahoo Mail integration - coming soon."""
262
+ msg = "Yahoo Mail integration is coming soon"
263
+ raise NotImplementedError(msg)
264
+
265
+
266
+ # Shopping integrations (coming soon)
267
+ @register_tool_with_metadata(
268
+ name="amazon",
269
+ display_name="Amazon",
270
+ description="Search products and track orders",
271
+ category=ToolCategory.SHOPPING,
272
+ status=ToolStatus.COMING_SOON,
273
+ setup_type=SetupType.COMING_SOON,
274
+ icon="FaAmazon",
275
+ icon_color="text-orange-500",
276
+ )
277
+ def amazon_tools() -> type[Toolkit]:
278
+ """Amazon integration - coming soon."""
279
+ msg = "Amazon integration is coming soon"
280
+ raise NotImplementedError(msg)
281
+
282
+
283
+ @register_tool_with_metadata(
284
+ name="walmart",
285
+ display_name="Walmart",
286
+ description="Product search and price tracking",
287
+ category=ToolCategory.SHOPPING,
288
+ status=ToolStatus.COMING_SOON,
289
+ setup_type=SetupType.COMING_SOON,
290
+ icon="SiWalmart",
291
+ icon_color="text-blue-500",
292
+ )
293
+ def walmart_tools() -> type[Toolkit]:
294
+ """Walmart integration - coming soon."""
295
+ msg = "Walmart integration is coming soon"
296
+ raise NotImplementedError(msg)
297
+
298
+
299
+ @register_tool_with_metadata(
300
+ name="ebay",
301
+ display_name="eBay",
302
+ description="Auction monitoring and bidding",
303
+ category=ToolCategory.SHOPPING,
304
+ status=ToolStatus.COMING_SOON,
305
+ setup_type=SetupType.COMING_SOON,
306
+ icon="FaEbay",
307
+ icon_color="text-blue-500", # eBay blue
308
+ )
309
+ def ebay_tools() -> type[Toolkit]:
310
+ """EBay integration - coming soon."""
311
+ msg = "eBay integration is coming soon"
312
+ raise NotImplementedError(msg)
313
+
314
+
315
+ @register_tool_with_metadata(
316
+ name="target",
317
+ display_name="Target",
318
+ description="Product search and availability",
319
+ category=ToolCategory.SHOPPING,
320
+ status=ToolStatus.COMING_SOON,
321
+ setup_type=SetupType.COMING_SOON,
322
+ icon="SiTarget",
323
+ icon_color="text-red-600",
324
+ )
325
+ def target_tools() -> type[Toolkit]:
326
+ """Target integration - coming soon."""
327
+ msg = "Target integration is coming soon"
328
+ raise NotImplementedError(msg)
329
+
330
+
331
+ # Entertainment integrations (coming soon)
332
+ @register_tool_with_metadata(
333
+ name="netflix",
334
+ display_name="Netflix",
335
+ description="Track watch history and get recommendations",
336
+ category=ToolCategory.ENTERTAINMENT,
337
+ status=ToolStatus.COMING_SOON,
338
+ setup_type=SetupType.COMING_SOON,
339
+ icon="SiNetflix",
340
+ icon_color="text-red-600",
341
+ )
342
+ def netflix_tools() -> type[Toolkit]:
343
+ """Netflix integration - coming soon."""
344
+ msg = "Netflix integration is coming soon"
345
+ raise NotImplementedError(msg)
346
+
347
+
348
+ @register_tool_with_metadata(
349
+ name="spotify",
350
+ display_name="Spotify",
351
+ description="Music streaming and playlist management",
352
+ category=ToolCategory.ENTERTAINMENT,
353
+ status=ToolStatus.COMING_SOON,
354
+ setup_type=SetupType.COMING_SOON,
355
+ icon="FaSpotify",
356
+ icon_color="text-green-500",
357
+ )
358
+ def spotify_tools() -> type[Toolkit]:
359
+ """Spotify integration - coming soon."""
360
+ msg = "Spotify integration is coming soon"
361
+ raise NotImplementedError(msg)
362
+
363
+
364
+ @register_tool_with_metadata(
365
+ name="apple_music",
366
+ display_name="Apple Music",
367
+ description="Library and playlist management",
368
+ category=ToolCategory.ENTERTAINMENT,
369
+ status=ToolStatus.COMING_SOON,
370
+ setup_type=SetupType.COMING_SOON,
371
+ icon="FaApple",
372
+ icon_color="text-gray-800",
373
+ )
374
+ def apple_music_tools() -> type[Toolkit]:
375
+ """Apple Music integration - coming soon."""
376
+ msg = "Apple Music integration is coming soon"
377
+ raise NotImplementedError(msg)
378
+
379
+
380
+ @register_tool_with_metadata(
381
+ name="hbo",
382
+ display_name="HBO Max",
383
+ description="Watch history and content discovery",
384
+ category=ToolCategory.ENTERTAINMENT,
385
+ status=ToolStatus.COMING_SOON,
386
+ setup_type=SetupType.COMING_SOON,
387
+ icon="SiHbo",
388
+ icon_color="text-purple-600", # HBO purple
389
+ )
390
+ def hbo_tools() -> type[Toolkit]:
391
+ """HBO Max integration - coming soon."""
392
+ msg = "HBO Max integration is coming soon"
393
+ raise NotImplementedError(msg)
394
+
395
+
396
+ # Social media integrations (coming soon)
397
+ @register_tool_with_metadata(
398
+ name="facebook",
399
+ display_name="Facebook",
400
+ description="Access posts and pages",
401
+ category=ToolCategory.SOCIAL,
402
+ status=ToolStatus.COMING_SOON,
403
+ setup_type=SetupType.COMING_SOON,
404
+ icon="FaFacebook",
405
+ icon_color="text-blue-600",
406
+ )
407
+ def facebook_tools() -> type[Toolkit]:
408
+ """Facebook integration - coming soon."""
409
+ msg = "Facebook integration is coming soon"
410
+ raise NotImplementedError(msg)
411
+
412
+
413
+ @register_tool_with_metadata(
414
+ name="instagram",
415
+ display_name="Instagram",
416
+ description="View posts and stories",
417
+ category=ToolCategory.SOCIAL,
418
+ status=ToolStatus.COMING_SOON,
419
+ setup_type=SetupType.COMING_SOON,
420
+ icon="FaInstagram",
421
+ icon_color="text-pink-600",
422
+ )
423
+ def instagram_tools() -> type[Toolkit]:
424
+ """Instagram integration - coming soon."""
425
+ msg = "Instagram integration is coming soon"
426
+ raise NotImplementedError(msg)
427
+
428
+
429
+ @register_tool_with_metadata(
430
+ name="linkedin",
431
+ display_name="LinkedIn",
432
+ description="Professional network access",
433
+ category=ToolCategory.SOCIAL,
434
+ status=ToolStatus.COMING_SOON,
435
+ setup_type=SetupType.COMING_SOON,
436
+ icon="FaLinkedin",
437
+ icon_color="text-blue-700",
438
+ )
439
+ def linkedin_tools() -> type[Toolkit]:
440
+ """LinkedIn integration - coming soon."""
441
+ msg = "LinkedIn integration is coming soon"
442
+ raise NotImplementedError(msg)
443
+
444
+
445
+ # Development tools (coming soon)
446
+ @register_tool_with_metadata(
447
+ name="gitlab",
448
+ display_name="GitLab",
449
+ description="Code and CI/CD management",
450
+ category=ToolCategory.DEVELOPMENT,
451
+ status=ToolStatus.COMING_SOON,
452
+ setup_type=SetupType.COMING_SOON,
453
+ icon="FaGitlab",
454
+ icon_color="text-orange-600",
455
+ )
456
+ def gitlab_tools() -> type[Toolkit]:
457
+ """GitLab integration - coming soon."""
458
+ msg = "GitLab integration is coming soon"
459
+ raise NotImplementedError(msg)
460
+
461
+
462
+ @register_tool_with_metadata(
463
+ name="dropbox",
464
+ display_name="Dropbox",
465
+ description="File storage and sharing",
466
+ category=ToolCategory.DEVELOPMENT,
467
+ status=ToolStatus.COMING_SOON,
468
+ setup_type=SetupType.COMING_SOON,
469
+ icon="FaDropbox",
470
+ icon_color="text-blue-600",
471
+ )
472
+ def dropbox_tools() -> type[Toolkit]:
473
+ """Dropbox integration - coming soon."""
474
+ msg = "Dropbox integration is coming soon"
475
+ raise NotImplementedError(msg)
476
+
477
+
478
+ # Information tools (coming soon)
479
+ @register_tool_with_metadata(
480
+ name="goodreads",
481
+ display_name="Goodreads",
482
+ description="Book tracking and recommendations",
483
+ category=ToolCategory.INFORMATION,
484
+ status=ToolStatus.COMING_SOON,
485
+ setup_type=SetupType.COMING_SOON,
486
+ icon="FaGoodreads",
487
+ icon_color="text-amber-700",
488
+ )
489
+ def goodreads_tools() -> type[Toolkit]:
490
+ """Goodreads integration - coming soon."""
491
+ msg = "Goodreads integration is coming soon"
492
+ raise NotImplementedError(msg)
493
+
494
+
495
+ @register_tool_with_metadata(
496
+ name="imdb",
497
+ display_name="IMDb",
498
+ description="Movie and TV show information",
499
+ category=ToolCategory.ENTERTAINMENT,
500
+ status=ToolStatus.REQUIRES_CONFIG,
501
+ setup_type=SetupType.API_KEY,
502
+ icon="Film",
503
+ icon_color="text-yellow-500",
504
+ config_fields=[
505
+ ConfigField(
506
+ name="OMDB_API_KEY",
507
+ label="OMDb API Key",
508
+ type="password",
509
+ required=True,
510
+ placeholder="Enter your OMDb API key",
511
+ description="Your OMDb API key for movie and TV show information",
512
+ ),
513
+ ],
514
+ helper_text="Get a free API key from [OMDb API website](http://www.omdbapi.com/apikey.aspx)",
515
+ docs_url="http://www.omdbapi.com/",
516
+ )
517
+ def imdb_tools() -> type[Toolkit]:
518
+ """IMDb integration - coming soon."""
519
+ msg = "IMDb integration is coming soon"
520
+ raise NotImplementedError(msg)
@@ -0,0 +1,64 @@
1
+ """AgentQL tool configuration."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from mindroom.tools_metadata import (
8
+ ConfigField,
9
+ SetupType,
10
+ ToolCategory,
11
+ ToolStatus,
12
+ register_tool_with_metadata,
13
+ )
14
+
15
+ if TYPE_CHECKING:
16
+ from agno.tools.agentql import AgentQLTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="agentql",
21
+ display_name="AgentQL",
22
+ description="AI-powered web scraping and data extraction from websites",
23
+ category=ToolCategory.RESEARCH,
24
+ status=ToolStatus.REQUIRES_CONFIG,
25
+ setup_type=SetupType.API_KEY,
26
+ icon="FaSpider",
27
+ icon_color="text-purple-600",
28
+ config_fields=[
29
+ # Authentication
30
+ ConfigField(
31
+ name="api_key",
32
+ label="API Key",
33
+ type="password",
34
+ required=False,
35
+ placeholder="agentql_...",
36
+ description="AgentQL API key for authentication (can also be set via AGENTQL_API_KEY env var)",
37
+ ),
38
+ # Feature flags
39
+ ConfigField(
40
+ name="scrape",
41
+ label="Enable Text Scraping",
42
+ type="boolean",
43
+ required=False,
44
+ default=True,
45
+ description="Enable the basic text scraping functionality",
46
+ ),
47
+ ConfigField(
48
+ name="agentql_query",
49
+ label="Custom AgentQL Query",
50
+ type="text",
51
+ required=False,
52
+ default="",
53
+ placeholder='{"links": ["a"], "titles": ["h1", "h2"]}',
54
+ description="Custom AgentQL query for specific data extraction (enables custom scraping when provided)",
55
+ ),
56
+ ],
57
+ dependencies=["agentql", "playwright"],
58
+ docs_url="https://docs.agno.com/tools/toolkits/web_scrape/agentql",
59
+ )
60
+ def agentql_tools() -> type[AgentQLTools]:
61
+ """Return AgentQL tools for AI-powered web scraping."""
62
+ from agno.tools.agentql import AgentQLTools
63
+
64
+ return AgentQLTools
@@ -0,0 +1,57 @@
1
+ """Airflow tool configuration."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from mindroom.tools_metadata import ConfigField, SetupType, ToolCategory, ToolStatus, register_tool_with_metadata
8
+
9
+ if TYPE_CHECKING:
10
+ from agno.tools.airflow import AirflowTools
11
+
12
+
13
+ @register_tool_with_metadata(
14
+ name="airflow",
15
+ display_name="Airflow",
16
+ description="Apache Airflow DAG file management for workflow orchestration",
17
+ category=ToolCategory.DEVELOPMENT,
18
+ status=ToolStatus.AVAILABLE,
19
+ setup_type=SetupType.NONE,
20
+ icon="FaCog",
21
+ icon_color="text-blue-600",
22
+ config_fields=[
23
+ # Configuration parameters
24
+ ConfigField(
25
+ name="dags_dir",
26
+ label="DAGs Directory",
27
+ type="text",
28
+ required=False,
29
+ placeholder="dags",
30
+ description="Directory for DAG files (relative to current working directory)",
31
+ ),
32
+ # Feature flags
33
+ ConfigField(
34
+ name="save_dag",
35
+ label="Save DAG",
36
+ type="boolean",
37
+ required=False,
38
+ default=True,
39
+ description="Enable saving DAG files",
40
+ ),
41
+ ConfigField(
42
+ name="read_dag",
43
+ label="Read DAG",
44
+ type="boolean",
45
+ required=False,
46
+ default=True,
47
+ description="Enable reading DAG files",
48
+ ),
49
+ ],
50
+ dependencies=[], # No additional dependencies required beyond agno
51
+ docs_url="https://docs.agno.com/tools/toolkits/others/airflow",
52
+ )
53
+ def airflow_tools() -> type[AirflowTools]:
54
+ """Return Airflow tools for DAG file management."""
55
+ from agno.tools.airflow import AirflowTools
56
+
57
+ return AirflowTools
@@ -0,0 +1,49 @@
1
+ """Apify tool configuration."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from mindroom.tools_metadata import ConfigField, SetupType, ToolCategory, ToolStatus, register_tool_with_metadata
8
+
9
+ if TYPE_CHECKING:
10
+ from agno.tools.apify import ApifyTools
11
+
12
+
13
+ @register_tool_with_metadata(
14
+ name="apify",
15
+ display_name="Apify",
16
+ description="Web scraping, crawling, data extraction, and web automation platform with ready-to-use Actors",
17
+ category=ToolCategory.DEVELOPMENT, # Based on agno docs URL path 'others/'
18
+ status=ToolStatus.REQUIRES_CONFIG, # Requires API token
19
+ setup_type=SetupType.API_KEY, # Uses API token authentication
20
+ icon="FaCode", # Web scraping/automation icon
21
+ icon_color="text-blue-600", # Apify brand color
22
+ config_fields=[
23
+ # Authentication
24
+ ConfigField(
25
+ name="apify_api_token",
26
+ label="API Token",
27
+ type="password",
28
+ required=False,
29
+ placeholder="apify_api_...",
30
+ description="Apify API token for authentication (can also be set via APIFY_API_TOKEN env var)",
31
+ ),
32
+ # Configuration
33
+ ConfigField(
34
+ name="actors",
35
+ label="Actors",
36
+ type="text",
37
+ required=False,
38
+ placeholder="apify/rag-web-browser,compass/crawler-google-places",
39
+ description="Single Actor ID as string or comma-separated list of Actor IDs to register as individual tools (e.g., 'apify/rag-web-browser' for web content extraction)",
40
+ ),
41
+ ],
42
+ dependencies=["apify-client"], # Required dependency for Apify integration
43
+ docs_url="https://docs.agno.com/tools/toolkits/others/apify",
44
+ )
45
+ def apify_tools() -> type[ApifyTools]:
46
+ """Return Apify tools for web scraping and automation."""
47
+ from agno.tools.apify import ApifyTools
48
+
49
+ return ApifyTools