mindroom 0.0.0__py3-none-any.whl → 0.1.1__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.
- mindroom/__init__.py +3 -0
- mindroom/agent_prompts.py +963 -0
- mindroom/agents.py +248 -0
- mindroom/ai.py +421 -0
- mindroom/api/__init__.py +1 -0
- mindroom/api/credentials.py +137 -0
- mindroom/api/google_integration.py +355 -0
- mindroom/api/google_tools_helper.py +40 -0
- mindroom/api/homeassistant_integration.py +421 -0
- mindroom/api/integrations.py +189 -0
- mindroom/api/main.py +506 -0
- mindroom/api/matrix_operations.py +219 -0
- mindroom/api/tools.py +94 -0
- mindroom/background_tasks.py +87 -0
- mindroom/bot.py +2470 -0
- mindroom/cli.py +86 -0
- mindroom/commands.py +377 -0
- mindroom/config.py +343 -0
- mindroom/config_commands.py +324 -0
- mindroom/config_confirmation.py +411 -0
- mindroom/constants.py +52 -0
- mindroom/credentials.py +146 -0
- mindroom/credentials_sync.py +134 -0
- mindroom/custom_tools/__init__.py +8 -0
- mindroom/custom_tools/config_manager.py +765 -0
- mindroom/custom_tools/gmail.py +92 -0
- mindroom/custom_tools/google_calendar.py +92 -0
- mindroom/custom_tools/google_sheets.py +92 -0
- mindroom/custom_tools/homeassistant.py +341 -0
- mindroom/error_handling.py +35 -0
- mindroom/file_watcher.py +49 -0
- mindroom/interactive.py +313 -0
- mindroom/logging_config.py +207 -0
- mindroom/matrix/__init__.py +1 -0
- mindroom/matrix/client.py +782 -0
- mindroom/matrix/event_info.py +173 -0
- mindroom/matrix/identity.py +149 -0
- mindroom/matrix/large_messages.py +267 -0
- mindroom/matrix/mentions.py +141 -0
- mindroom/matrix/message_builder.py +94 -0
- mindroom/matrix/message_content.py +209 -0
- mindroom/matrix/presence.py +178 -0
- mindroom/matrix/rooms.py +311 -0
- mindroom/matrix/state.py +77 -0
- mindroom/matrix/typing.py +91 -0
- mindroom/matrix/users.py +217 -0
- mindroom/memory/__init__.py +21 -0
- mindroom/memory/config.py +137 -0
- mindroom/memory/functions.py +396 -0
- mindroom/py.typed +0 -0
- mindroom/response_tracker.py +128 -0
- mindroom/room_cleanup.py +139 -0
- mindroom/routing.py +107 -0
- mindroom/scheduling.py +758 -0
- mindroom/stop.py +207 -0
- mindroom/streaming.py +203 -0
- mindroom/teams.py +749 -0
- mindroom/thread_utils.py +318 -0
- mindroom/tools/__init__.py +520 -0
- mindroom/tools/agentql.py +64 -0
- mindroom/tools/airflow.py +57 -0
- mindroom/tools/apify.py +49 -0
- mindroom/tools/arxiv.py +64 -0
- mindroom/tools/aws_lambda.py +41 -0
- mindroom/tools/aws_ses.py +57 -0
- mindroom/tools/baidusearch.py +87 -0
- mindroom/tools/brightdata.py +116 -0
- mindroom/tools/browserbase.py +62 -0
- mindroom/tools/cal_com.py +98 -0
- mindroom/tools/calculator.py +112 -0
- mindroom/tools/cartesia.py +84 -0
- mindroom/tools/composio.py +166 -0
- mindroom/tools/config_manager.py +44 -0
- mindroom/tools/confluence.py +73 -0
- mindroom/tools/crawl4ai.py +101 -0
- mindroom/tools/csv.py +104 -0
- mindroom/tools/custom_api.py +106 -0
- mindroom/tools/dalle.py +85 -0
- mindroom/tools/daytona.py +180 -0
- mindroom/tools/discord.py +81 -0
- mindroom/tools/docker.py +73 -0
- mindroom/tools/duckdb.py +124 -0
- mindroom/tools/duckduckgo.py +99 -0
- mindroom/tools/e2b.py +121 -0
- mindroom/tools/eleven_labs.py +77 -0
- mindroom/tools/email.py +74 -0
- mindroom/tools/exa.py +246 -0
- mindroom/tools/fal.py +50 -0
- mindroom/tools/file.py +80 -0
- mindroom/tools/financial_datasets_api.py +112 -0
- mindroom/tools/firecrawl.py +124 -0
- mindroom/tools/gemini.py +85 -0
- mindroom/tools/giphy.py +49 -0
- mindroom/tools/github.py +376 -0
- mindroom/tools/gmail.py +102 -0
- mindroom/tools/google_calendar.py +55 -0
- mindroom/tools/google_maps.py +112 -0
- mindroom/tools/google_sheets.py +86 -0
- mindroom/tools/googlesearch.py +83 -0
- mindroom/tools/groq.py +77 -0
- mindroom/tools/hackernews.py +54 -0
- mindroom/tools/jina.py +108 -0
- mindroom/tools/jira.py +70 -0
- mindroom/tools/linear.py +103 -0
- mindroom/tools/linkup.py +65 -0
- mindroom/tools/lumalabs.py +71 -0
- mindroom/tools/mem0.py +82 -0
- mindroom/tools/modelslabs.py +85 -0
- mindroom/tools/moviepy_video_tools.py +62 -0
- mindroom/tools/newspaper4k.py +63 -0
- mindroom/tools/openai.py +143 -0
- mindroom/tools/openweather.py +89 -0
- mindroom/tools/oxylabs.py +54 -0
- mindroom/tools/pandas.py +35 -0
- mindroom/tools/pubmed.py +64 -0
- mindroom/tools/python.py +120 -0
- mindroom/tools/reddit.py +155 -0
- mindroom/tools/replicate.py +56 -0
- mindroom/tools/resend.py +55 -0
- mindroom/tools/scrapegraph.py +87 -0
- mindroom/tools/searxng.py +120 -0
- mindroom/tools/serpapi.py +55 -0
- mindroom/tools/serper.py +81 -0
- mindroom/tools/shell.py +46 -0
- mindroom/tools/slack.py +80 -0
- mindroom/tools/sleep.py +38 -0
- mindroom/tools/spider.py +62 -0
- mindroom/tools/sql.py +138 -0
- mindroom/tools/tavily.py +104 -0
- mindroom/tools/telegram.py +54 -0
- mindroom/tools/todoist.py +103 -0
- mindroom/tools/trello.py +121 -0
- mindroom/tools/twilio.py +97 -0
- mindroom/tools/web_browser_tools.py +37 -0
- mindroom/tools/webex.py +63 -0
- mindroom/tools/website.py +45 -0
- mindroom/tools/whatsapp.py +81 -0
- mindroom/tools/wikipedia.py +45 -0
- mindroom/tools/x.py +97 -0
- mindroom/tools/yfinance.py +121 -0
- mindroom/tools/youtube.py +81 -0
- mindroom/tools/zendesk.py +62 -0
- mindroom/tools/zep.py +107 -0
- mindroom/tools/zoom.py +62 -0
- mindroom/tools_metadata.json +7643 -0
- mindroom/tools_metadata.py +220 -0
- mindroom/topic_generator.py +153 -0
- mindroom/voice_handler.py +266 -0
- mindroom-0.1.1.dist-info/METADATA +425 -0
- mindroom-0.1.1.dist-info/RECORD +152 -0
- {mindroom-0.0.0.dist-info → mindroom-0.1.1.dist-info}/WHEEL +1 -2
- mindroom-0.1.1.dist-info/entry_points.txt +2 -0
- mindroom-0.0.0.dist-info/METADATA +0 -24
- mindroom-0.0.0.dist-info/RECORD +0 -4
- 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
|
mindroom/tools/apify.py
ADDED
|
@@ -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
|