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.
- 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.0.dist-info/METADATA +425 -0
- mindroom-0.1.0.dist-info/RECORD +152 -0
- {mindroom-0.0.0.dist-info → mindroom-0.1.0.dist-info}/WHEEL +1 -2
- mindroom-0.1.0.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,55 @@
|
|
|
1
|
+
"""SerpApi 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.serpapi import SerpApiTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="serpapi",
|
|
21
|
+
display_name="SerpApi",
|
|
22
|
+
description="Google and YouTube search using SerpApi",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaGoogle",
|
|
27
|
+
icon_color="text-blue-500",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="api_key",
|
|
32
|
+
label="API Key",
|
|
33
|
+
type="password",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="YOUR_SERPAPI_KEY",
|
|
36
|
+
description="SerpApi API key for authentication (can also be set via SERP_API_KEY env var)",
|
|
37
|
+
),
|
|
38
|
+
# Search features
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="search_youtube",
|
|
41
|
+
label="Search YouTube",
|
|
42
|
+
type="boolean",
|
|
43
|
+
required=False,
|
|
44
|
+
default=False,
|
|
45
|
+
description="Enable YouTube search functionality",
|
|
46
|
+
),
|
|
47
|
+
],
|
|
48
|
+
dependencies=["google-search-results"],
|
|
49
|
+
docs_url="https://docs.agno.com/tools/toolkits/search/serpapi",
|
|
50
|
+
)
|
|
51
|
+
def serpapi_tools() -> type[SerpApiTools]:
|
|
52
|
+
"""Return SerpApi tools for Google and YouTube search."""
|
|
53
|
+
from agno.tools.serpapi import SerpApiTools
|
|
54
|
+
|
|
55
|
+
return SerpApiTools
|
mindroom/tools/serper.py
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"""Serper 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.serper import SerperTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="serper",
|
|
21
|
+
display_name="Serper",
|
|
22
|
+
description="Search Google, news, academic papers, and scrape webpages using Serper API",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaSearch",
|
|
27
|
+
icon_color="text-blue-600",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="api_key",
|
|
32
|
+
label="API Key",
|
|
33
|
+
type="password",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="your-serper-api-key",
|
|
36
|
+
description="Serper API key for authentication (can also be set via SERPER_API_KEY env var)",
|
|
37
|
+
),
|
|
38
|
+
# Search configuration
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="location",
|
|
41
|
+
label="Location",
|
|
42
|
+
type="text",
|
|
43
|
+
required=False,
|
|
44
|
+
default="us",
|
|
45
|
+
placeholder="us",
|
|
46
|
+
description="Google location code for search results (e.g., 'us', 'uk', 'ca')",
|
|
47
|
+
),
|
|
48
|
+
ConfigField(
|
|
49
|
+
name="language",
|
|
50
|
+
label="Language",
|
|
51
|
+
type="text",
|
|
52
|
+
required=False,
|
|
53
|
+
default="en",
|
|
54
|
+
placeholder="en",
|
|
55
|
+
description="Language code for search results (e.g., 'en', 'es', 'fr')",
|
|
56
|
+
),
|
|
57
|
+
ConfigField(
|
|
58
|
+
name="num_results",
|
|
59
|
+
label="Number of Results",
|
|
60
|
+
type="number",
|
|
61
|
+
required=False,
|
|
62
|
+
default=10,
|
|
63
|
+
description="Default number of search results to retrieve",
|
|
64
|
+
),
|
|
65
|
+
ConfigField(
|
|
66
|
+
name="date_range",
|
|
67
|
+
label="Date Range",
|
|
68
|
+
type="text",
|
|
69
|
+
required=False,
|
|
70
|
+
placeholder="d",
|
|
71
|
+
description="Default date range filter for searches (e.g., 'd' for day, 'w' for week, 'm' for month)",
|
|
72
|
+
),
|
|
73
|
+
],
|
|
74
|
+
dependencies=["requests"],
|
|
75
|
+
docs_url="https://docs.agno.com/tools/toolkits/search/serper",
|
|
76
|
+
)
|
|
77
|
+
def serper_tools() -> type[SerperTools]:
|
|
78
|
+
"""Return Serper tools for Google search, news, academic papers, and web scraping."""
|
|
79
|
+
from agno.tools.serper import SerperTools
|
|
80
|
+
|
|
81
|
+
return SerperTools
|
mindroom/tools/shell.py
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""Shell 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.shell import ShellTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="shell",
|
|
21
|
+
display_name="Shell Commands",
|
|
22
|
+
description="Execute shell commands and scripts",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT,
|
|
24
|
+
status=ToolStatus.AVAILABLE,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="Terminal",
|
|
27
|
+
icon_color="text-green-500",
|
|
28
|
+
config_fields=[
|
|
29
|
+
ConfigField(
|
|
30
|
+
name="base_dir",
|
|
31
|
+
label="Base Directory",
|
|
32
|
+
type="text",
|
|
33
|
+
required=False,
|
|
34
|
+
default=None,
|
|
35
|
+
placeholder="/path/to/working/directory",
|
|
36
|
+
description="Base directory for command execution (defaults to current directory)",
|
|
37
|
+
),
|
|
38
|
+
],
|
|
39
|
+
dependencies=[],
|
|
40
|
+
docs_url="https://docs.agno.com/tools/toolkits/local/shell",
|
|
41
|
+
)
|
|
42
|
+
def shell_tools() -> type[ShellTools]:
|
|
43
|
+
"""Return shell tools for command execution."""
|
|
44
|
+
from agno.tools.shell import ShellTools
|
|
45
|
+
|
|
46
|
+
return ShellTools
|
mindroom/tools/slack.py
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""Slack 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.slack import SlackTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="slack",
|
|
21
|
+
display_name="Slack",
|
|
22
|
+
description="Send messages and manage channels",
|
|
23
|
+
category=ToolCategory.COMMUNICATION,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaSlack",
|
|
27
|
+
icon_color="text-purple-600",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="token",
|
|
32
|
+
label="Slack Token",
|
|
33
|
+
type="password",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="xoxb-...",
|
|
36
|
+
description="Slack bot token (can also be set via SLACK_TOKEN env var)",
|
|
37
|
+
),
|
|
38
|
+
# Message operations
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="send_message",
|
|
41
|
+
label="Send Message",
|
|
42
|
+
type="boolean",
|
|
43
|
+
required=False,
|
|
44
|
+
default=True,
|
|
45
|
+
description="Enable sending messages to channels",
|
|
46
|
+
),
|
|
47
|
+
ConfigField(
|
|
48
|
+
name="send_message_thread",
|
|
49
|
+
label="Send Message Thread",
|
|
50
|
+
type="boolean",
|
|
51
|
+
required=False,
|
|
52
|
+
default=True,
|
|
53
|
+
description="Enable sending threaded messages",
|
|
54
|
+
),
|
|
55
|
+
# Channel operations
|
|
56
|
+
ConfigField(
|
|
57
|
+
name="list_channels",
|
|
58
|
+
label="List Channels",
|
|
59
|
+
type="boolean",
|
|
60
|
+
required=False,
|
|
61
|
+
default=True,
|
|
62
|
+
description="Enable listing workspace channels",
|
|
63
|
+
),
|
|
64
|
+
ConfigField(
|
|
65
|
+
name="get_channel_history",
|
|
66
|
+
label="Get Channel History",
|
|
67
|
+
type="boolean",
|
|
68
|
+
required=False,
|
|
69
|
+
default=True,
|
|
70
|
+
description="Enable retrieving channel message history",
|
|
71
|
+
),
|
|
72
|
+
],
|
|
73
|
+
dependencies=["slack-sdk"],
|
|
74
|
+
docs_url="https://docs.agno.com/tools/toolkits/social/slack",
|
|
75
|
+
)
|
|
76
|
+
def slack_tools() -> type[SlackTools]:
|
|
77
|
+
"""Return Slack tools for messaging and channel management."""
|
|
78
|
+
from agno.tools.slack import SlackTools
|
|
79
|
+
|
|
80
|
+
return SlackTools
|
mindroom/tools/sleep.py
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""Sleep tool configuration."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
from mindroom.tools_metadata import (
|
|
8
|
+
SetupType,
|
|
9
|
+
ToolCategory,
|
|
10
|
+
ToolStatus,
|
|
11
|
+
register_tool_with_metadata,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from agno.tools.sleep import SleepTools
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@register_tool_with_metadata(
|
|
19
|
+
name="sleep",
|
|
20
|
+
display_name="Sleep",
|
|
21
|
+
description="Sleep utility for introducing delays and pauses in execution",
|
|
22
|
+
category=ToolCategory.DEVELOPMENT, # Local utility tool
|
|
23
|
+
status=ToolStatus.AVAILABLE, # No config needed
|
|
24
|
+
setup_type=SetupType.NONE, # No authentication required
|
|
25
|
+
icon="Clock", # React icon name
|
|
26
|
+
icon_color="text-purple-500", # Tailwind color class
|
|
27
|
+
config_fields=[
|
|
28
|
+
# SleepTools has no explicit parameters, only **kwargs
|
|
29
|
+
# The tool inherits all base Toolkit configuration through **kwargs
|
|
30
|
+
],
|
|
31
|
+
dependencies=["agno"], # From agno requirements
|
|
32
|
+
docs_url="https://docs.agno.com/tools/toolkits/local/sleep",
|
|
33
|
+
)
|
|
34
|
+
def sleep_tools() -> type[SleepTools]:
|
|
35
|
+
"""Return sleep tools for introducing delays and pauses in execution."""
|
|
36
|
+
from agno.tools.sleep import SleepTools
|
|
37
|
+
|
|
38
|
+
return SleepTools
|
mindroom/tools/spider.py
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""Spider 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.spider import SpiderTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="spider",
|
|
21
|
+
display_name="Spider",
|
|
22
|
+
description="Web scraper and crawler that returns LLM-ready data",
|
|
23
|
+
category=ToolCategory.RESEARCH, # Based on web_scrape category in docs
|
|
24
|
+
status=ToolStatus.AVAILABLE, # API key handled via SPIDER_API_KEY env var
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="FaSpider",
|
|
27
|
+
icon_color="text-red-600", # Spider red color
|
|
28
|
+
config_fields=[
|
|
29
|
+
ConfigField(
|
|
30
|
+
name="max_results",
|
|
31
|
+
label="Maximum Results",
|
|
32
|
+
type="number",
|
|
33
|
+
required=False,
|
|
34
|
+
placeholder="5",
|
|
35
|
+
description="The maximum number of search results to return",
|
|
36
|
+
),
|
|
37
|
+
ConfigField(
|
|
38
|
+
name="url",
|
|
39
|
+
label="Default URL",
|
|
40
|
+
type="url",
|
|
41
|
+
required=False,
|
|
42
|
+
placeholder="https://example.com",
|
|
43
|
+
description="The default URL to be scraped or crawled",
|
|
44
|
+
),
|
|
45
|
+
ConfigField(
|
|
46
|
+
name="optional_params",
|
|
47
|
+
label="Optional Parameters",
|
|
48
|
+
type="text",
|
|
49
|
+
required=False,
|
|
50
|
+
placeholder='{"return_format": "markdown"}',
|
|
51
|
+
description="Additional optional parameters as JSON object for Spider API calls",
|
|
52
|
+
),
|
|
53
|
+
],
|
|
54
|
+
dependencies=["spider-client"],
|
|
55
|
+
docs_url="https://docs.agno.com/tools/toolkits/web_scrape/spider",
|
|
56
|
+
helper_text="Get your API key from the [Spider dashboard](https://spider.cloud)",
|
|
57
|
+
)
|
|
58
|
+
def spider_tools() -> type[SpiderTools]:
|
|
59
|
+
"""Return Spider tools for web scraping and crawling."""
|
|
60
|
+
from agno.tools.spider import SpiderTools
|
|
61
|
+
|
|
62
|
+
return SpiderTools
|
mindroom/tools/sql.py
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"""SQL 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.sql import SQLTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="sql",
|
|
21
|
+
display_name="SQL Tools",
|
|
22
|
+
description="Database query and management tools for SQL databases",
|
|
23
|
+
category=ToolCategory.PRODUCTIVITY,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.SPECIAL,
|
|
26
|
+
icon="Database",
|
|
27
|
+
icon_color="text-blue-600",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Database Connection - Primary method: Database URL
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="db_url",
|
|
32
|
+
label="Database URL",
|
|
33
|
+
type="url",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="postgresql://user:password@host:port/database",
|
|
36
|
+
description="Complete database connection URL (can also be set via DB_URL env var)",
|
|
37
|
+
),
|
|
38
|
+
# Advanced: Pre-configured database engine
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="db_engine",
|
|
41
|
+
label="Database Engine",
|
|
42
|
+
type="text",
|
|
43
|
+
required=False,
|
|
44
|
+
placeholder="Advanced: Pre-configured SQLAlchemy Engine object",
|
|
45
|
+
description="Pre-configured SQLAlchemy Engine instance (for advanced users)",
|
|
46
|
+
),
|
|
47
|
+
# Alternative connection parameters
|
|
48
|
+
ConfigField(
|
|
49
|
+
name="user",
|
|
50
|
+
label="Username",
|
|
51
|
+
type="text",
|
|
52
|
+
required=False,
|
|
53
|
+
placeholder="database_user",
|
|
54
|
+
description="Database username (alternative to db_url)",
|
|
55
|
+
),
|
|
56
|
+
ConfigField(
|
|
57
|
+
name="password",
|
|
58
|
+
label="Password",
|
|
59
|
+
type="password",
|
|
60
|
+
required=False,
|
|
61
|
+
placeholder="database_password",
|
|
62
|
+
description="Database password (alternative to db_url)",
|
|
63
|
+
),
|
|
64
|
+
ConfigField(
|
|
65
|
+
name="host",
|
|
66
|
+
label="Host",
|
|
67
|
+
type="url",
|
|
68
|
+
required=False,
|
|
69
|
+
placeholder="localhost",
|
|
70
|
+
description="Database host (alternative to db_url)",
|
|
71
|
+
),
|
|
72
|
+
ConfigField(
|
|
73
|
+
name="port",
|
|
74
|
+
label="Port",
|
|
75
|
+
type="number",
|
|
76
|
+
required=False,
|
|
77
|
+
placeholder="5432",
|
|
78
|
+
description="Database port (alternative to db_url)",
|
|
79
|
+
),
|
|
80
|
+
ConfigField(
|
|
81
|
+
name="schema",
|
|
82
|
+
label="Schema/Database",
|
|
83
|
+
type="text",
|
|
84
|
+
required=False,
|
|
85
|
+
placeholder="mydb",
|
|
86
|
+
description="Database schema or database name",
|
|
87
|
+
),
|
|
88
|
+
ConfigField(
|
|
89
|
+
name="dialect",
|
|
90
|
+
label="Database Dialect",
|
|
91
|
+
type="text",
|
|
92
|
+
required=False,
|
|
93
|
+
placeholder="postgresql",
|
|
94
|
+
description="Database dialect (postgresql, mysql, sqlite, etc.)",
|
|
95
|
+
),
|
|
96
|
+
# Table configuration
|
|
97
|
+
ConfigField(
|
|
98
|
+
name="tables",
|
|
99
|
+
label="Tables Configuration",
|
|
100
|
+
type="text",
|
|
101
|
+
required=False,
|
|
102
|
+
placeholder='{"users": {...}, "orders": {...}}',
|
|
103
|
+
description="JSON configuration of specific tables to access (optional)",
|
|
104
|
+
),
|
|
105
|
+
# SQL Operation Controls
|
|
106
|
+
ConfigField(
|
|
107
|
+
name="list_tables",
|
|
108
|
+
label="List Tables",
|
|
109
|
+
type="boolean",
|
|
110
|
+
required=False,
|
|
111
|
+
default=True,
|
|
112
|
+
description="Enable listing database tables",
|
|
113
|
+
),
|
|
114
|
+
ConfigField(
|
|
115
|
+
name="describe_table",
|
|
116
|
+
label="Describe Table",
|
|
117
|
+
type="boolean",
|
|
118
|
+
required=False,
|
|
119
|
+
default=True,
|
|
120
|
+
description="Enable describing table schemas",
|
|
121
|
+
),
|
|
122
|
+
ConfigField(
|
|
123
|
+
name="run_sql_query",
|
|
124
|
+
label="Run SQL Query",
|
|
125
|
+
type="boolean",
|
|
126
|
+
required=False,
|
|
127
|
+
default=True,
|
|
128
|
+
description="Enable executing SQL queries",
|
|
129
|
+
),
|
|
130
|
+
],
|
|
131
|
+
dependencies=["sqlalchemy"],
|
|
132
|
+
docs_url="https://docs.agno.com/tools/toolkits/database/sql",
|
|
133
|
+
)
|
|
134
|
+
def sql_tools() -> type[SQLTools]:
|
|
135
|
+
"""Return SQL tools for database operations."""
|
|
136
|
+
from agno.tools.sql import SQLTools
|
|
137
|
+
|
|
138
|
+
return SQLTools
|
mindroom/tools/tavily.py
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"""Tavily 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.tavily import TavilyTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="tavily",
|
|
21
|
+
display_name="Tavily",
|
|
22
|
+
description="Real-time web search API for retrieving current information",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaSearch",
|
|
27
|
+
icon_color="text-blue-600",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="api_key",
|
|
32
|
+
label="API Key",
|
|
33
|
+
type="password",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="tvly-...",
|
|
36
|
+
description="Tavily API key for web search access (can also be set via TAVILY_API_KEY env var)",
|
|
37
|
+
),
|
|
38
|
+
# Feature flags
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="search",
|
|
41
|
+
label="Enable Search",
|
|
42
|
+
type="boolean",
|
|
43
|
+
required=False,
|
|
44
|
+
default=True,
|
|
45
|
+
description="Enable web search functionality",
|
|
46
|
+
),
|
|
47
|
+
ConfigField(
|
|
48
|
+
name="use_search_context",
|
|
49
|
+
label="Use Search Context",
|
|
50
|
+
type="boolean",
|
|
51
|
+
required=False,
|
|
52
|
+
default=False,
|
|
53
|
+
description="Use search context method instead of regular search",
|
|
54
|
+
),
|
|
55
|
+
# Search configuration
|
|
56
|
+
ConfigField(
|
|
57
|
+
name="max_tokens",
|
|
58
|
+
label="Max Tokens",
|
|
59
|
+
type="number",
|
|
60
|
+
required=False,
|
|
61
|
+
default=6000,
|
|
62
|
+
description="Maximum number of tokens to return in search results",
|
|
63
|
+
),
|
|
64
|
+
ConfigField(
|
|
65
|
+
name="include_answer",
|
|
66
|
+
label="Include Answer",
|
|
67
|
+
type="boolean",
|
|
68
|
+
required=False,
|
|
69
|
+
default=True,
|
|
70
|
+
description="Include AI-generated answer summary in search results",
|
|
71
|
+
),
|
|
72
|
+
ConfigField(
|
|
73
|
+
name="search_depth",
|
|
74
|
+
label="Search Depth",
|
|
75
|
+
type="select",
|
|
76
|
+
required=False,
|
|
77
|
+
default="advanced",
|
|
78
|
+
options=[
|
|
79
|
+
{"label": "Basic", "value": "basic"},
|
|
80
|
+
{"label": "Advanced", "value": "advanced"},
|
|
81
|
+
],
|
|
82
|
+
description="Search depth level for query processing",
|
|
83
|
+
),
|
|
84
|
+
ConfigField(
|
|
85
|
+
name="format",
|
|
86
|
+
label="Output Format",
|
|
87
|
+
type="select",
|
|
88
|
+
required=False,
|
|
89
|
+
default="markdown",
|
|
90
|
+
options=[
|
|
91
|
+
{"label": "JSON", "value": "json"},
|
|
92
|
+
{"label": "Markdown", "value": "markdown"},
|
|
93
|
+
],
|
|
94
|
+
description="Format for search result output",
|
|
95
|
+
),
|
|
96
|
+
],
|
|
97
|
+
dependencies=["tavily-python"],
|
|
98
|
+
docs_url="https://docs.agno.com/tools/toolkits/search/tavily",
|
|
99
|
+
)
|
|
100
|
+
def tavily_tools() -> type[TavilyTools]:
|
|
101
|
+
"""Return Tavily tools for real-time web search."""
|
|
102
|
+
from agno.tools.tavily import TavilyTools
|
|
103
|
+
|
|
104
|
+
return TavilyTools
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"""Telegram 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.telegram import TelegramTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="telegram",
|
|
21
|
+
display_name="Telegram",
|
|
22
|
+
description="Send messages via Telegram bot",
|
|
23
|
+
category=ToolCategory.COMMUNICATION,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaTelegram",
|
|
27
|
+
icon_color="text-blue-500", # Telegram blue
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication/Connection parameters
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="chat_id",
|
|
32
|
+
label="Chat ID",
|
|
33
|
+
type="text",
|
|
34
|
+
required=True,
|
|
35
|
+
placeholder="123456789 or @username",
|
|
36
|
+
description="The chat ID or username to send messages to",
|
|
37
|
+
),
|
|
38
|
+
ConfigField(
|
|
39
|
+
name="token",
|
|
40
|
+
label="Bot Token",
|
|
41
|
+
type="password",
|
|
42
|
+
required=False,
|
|
43
|
+
placeholder="1234567890:ABCdefGHijKlmnOPqrSTuvwXYZ",
|
|
44
|
+
description="Telegram bot token (can also be set via TELEGRAM_TOKEN env var)",
|
|
45
|
+
),
|
|
46
|
+
],
|
|
47
|
+
dependencies=["httpx"],
|
|
48
|
+
docs_url="https://core.telegram.org/bots/api",
|
|
49
|
+
)
|
|
50
|
+
def telegram_tools() -> type[TelegramTools]:
|
|
51
|
+
"""Return Telegram tools for sending messages."""
|
|
52
|
+
from agno.tools.telegram import TelegramTools
|
|
53
|
+
|
|
54
|
+
return TelegramTools
|