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
mindroom/tools/pubmed.py
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""PubMed 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.pubmed import PubmedTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="pubmed",
|
|
21
|
+
display_name="PubMed",
|
|
22
|
+
description="Search and retrieve medical and life science literature from PubMed",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.AVAILABLE,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="FaStethoscope",
|
|
27
|
+
icon_color="text-blue-600", # Medical blue
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Configuration parameters
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="email",
|
|
32
|
+
label="Email Address",
|
|
33
|
+
type="text",
|
|
34
|
+
required=False,
|
|
35
|
+
default="your_email@example.com",
|
|
36
|
+
placeholder="researcher@institution.edu",
|
|
37
|
+
description="Email address for NCBI API identification (required by NCBI guidelines)",
|
|
38
|
+
),
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="max_results",
|
|
41
|
+
label="Maximum Results",
|
|
42
|
+
type="number",
|
|
43
|
+
required=False,
|
|
44
|
+
default=None,
|
|
45
|
+
placeholder="10",
|
|
46
|
+
description="Default maximum number of search results to return (can be overridden per search)",
|
|
47
|
+
),
|
|
48
|
+
ConfigField(
|
|
49
|
+
name="results_expanded",
|
|
50
|
+
label="Expanded Results",
|
|
51
|
+
type="boolean",
|
|
52
|
+
required=False,
|
|
53
|
+
default=False,
|
|
54
|
+
description="Return comprehensive article metadata including keywords, MeSH terms, and full abstracts",
|
|
55
|
+
),
|
|
56
|
+
],
|
|
57
|
+
dependencies=["httpx"],
|
|
58
|
+
docs_url="https://docs.agno.com/tools/toolkits/search/pubmed",
|
|
59
|
+
)
|
|
60
|
+
def pubmed_tools() -> type[PubmedTools]:
|
|
61
|
+
"""Return PubMed tools for medical research and literature search."""
|
|
62
|
+
from agno.tools.pubmed import PubmedTools
|
|
63
|
+
|
|
64
|
+
return PubmedTools
|
mindroom/tools/python.py
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"""Python tools 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.python import PythonTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="python",
|
|
21
|
+
display_name="Python Tools",
|
|
22
|
+
description="Execute Python code, manage files, and install packages",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT,
|
|
24
|
+
status=ToolStatus.AVAILABLE,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="FaPython",
|
|
27
|
+
icon_color="text-blue-500",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Base configuration
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="base_dir",
|
|
32
|
+
label="Base Directory",
|
|
33
|
+
type="text",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="/path/to/working/directory",
|
|
36
|
+
description="Base directory for file operations (defaults to current working directory)",
|
|
37
|
+
),
|
|
38
|
+
# Execution environment
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="safe_globals",
|
|
41
|
+
label="Safe Globals",
|
|
42
|
+
type="text",
|
|
43
|
+
required=False,
|
|
44
|
+
description="Custom global scope for code execution (advanced users only)",
|
|
45
|
+
),
|
|
46
|
+
ConfigField(
|
|
47
|
+
name="safe_locals",
|
|
48
|
+
label="Safe Locals",
|
|
49
|
+
type="text",
|
|
50
|
+
required=False,
|
|
51
|
+
description="Custom local scope for code execution (advanced users only)",
|
|
52
|
+
),
|
|
53
|
+
# Core functionality
|
|
54
|
+
ConfigField(
|
|
55
|
+
name="save_and_run",
|
|
56
|
+
label="Save and Run Files",
|
|
57
|
+
type="boolean",
|
|
58
|
+
required=False,
|
|
59
|
+
default=True,
|
|
60
|
+
description="Enable saving Python code to files and executing them",
|
|
61
|
+
),
|
|
62
|
+
ConfigField(
|
|
63
|
+
name="run_code",
|
|
64
|
+
label="Run Code",
|
|
65
|
+
type="boolean",
|
|
66
|
+
required=False,
|
|
67
|
+
default=False,
|
|
68
|
+
description="Enable direct execution of Python code in memory",
|
|
69
|
+
),
|
|
70
|
+
# File operations
|
|
71
|
+
ConfigField(
|
|
72
|
+
name="read_files",
|
|
73
|
+
label="Read Files",
|
|
74
|
+
type="boolean",
|
|
75
|
+
required=False,
|
|
76
|
+
default=False,
|
|
77
|
+
description="Enable reading file contents",
|
|
78
|
+
),
|
|
79
|
+
ConfigField(
|
|
80
|
+
name="list_files",
|
|
81
|
+
label="List Files",
|
|
82
|
+
type="boolean",
|
|
83
|
+
required=False,
|
|
84
|
+
default=False,
|
|
85
|
+
description="Enable listing files in the base directory",
|
|
86
|
+
),
|
|
87
|
+
ConfigField(
|
|
88
|
+
name="run_files",
|
|
89
|
+
label="Run Files",
|
|
90
|
+
type="boolean",
|
|
91
|
+
required=False,
|
|
92
|
+
default=False,
|
|
93
|
+
description="Enable running existing Python files",
|
|
94
|
+
),
|
|
95
|
+
# Package management
|
|
96
|
+
ConfigField(
|
|
97
|
+
name="pip_install",
|
|
98
|
+
label="Pip Install",
|
|
99
|
+
type="boolean",
|
|
100
|
+
required=False,
|
|
101
|
+
default=False,
|
|
102
|
+
description="Enable installing packages using pip",
|
|
103
|
+
),
|
|
104
|
+
ConfigField(
|
|
105
|
+
name="uv_pip_install",
|
|
106
|
+
label="UV Pip Install",
|
|
107
|
+
type="boolean",
|
|
108
|
+
required=False,
|
|
109
|
+
default=False,
|
|
110
|
+
description="Enable installing packages using uv pip",
|
|
111
|
+
),
|
|
112
|
+
],
|
|
113
|
+
dependencies=["agno"],
|
|
114
|
+
docs_url="https://docs.agno.com/tools/toolkits/local/python",
|
|
115
|
+
)
|
|
116
|
+
def python_tools() -> type[PythonTools]:
|
|
117
|
+
"""Return Python tools for code execution and file management."""
|
|
118
|
+
from agno.tools.python import PythonTools
|
|
119
|
+
|
|
120
|
+
return PythonTools
|
mindroom/tools/reddit.py
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"""Reddit 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.reddit import RedditTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="reddit",
|
|
21
|
+
display_name="Reddit",
|
|
22
|
+
description="Social media platform for browsing, posting, and interacting with Reddit communities",
|
|
23
|
+
category=ToolCategory.SOCIAL,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaReddit",
|
|
27
|
+
icon_color="text-orange-500", # Reddit's signature orange color
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Reddit instance parameter
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="reddit_instance",
|
|
32
|
+
label="Reddit Instance",
|
|
33
|
+
type="text",
|
|
34
|
+
required=False,
|
|
35
|
+
default=None,
|
|
36
|
+
description="Pre-configured Reddit instance (optional, will create one if not provided)",
|
|
37
|
+
),
|
|
38
|
+
# Authentication parameters
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="client_id",
|
|
41
|
+
label="Client ID",
|
|
42
|
+
type="text",
|
|
43
|
+
required=False,
|
|
44
|
+
placeholder="your_client_id",
|
|
45
|
+
description="Reddit API client ID (can also be set via REDDIT_CLIENT_ID env var)",
|
|
46
|
+
),
|
|
47
|
+
ConfigField(
|
|
48
|
+
name="client_secret",
|
|
49
|
+
label="Client Secret",
|
|
50
|
+
type="password",
|
|
51
|
+
required=False,
|
|
52
|
+
placeholder="your_client_secret",
|
|
53
|
+
description="Reddit API client secret (can also be set via REDDIT_CLIENT_SECRET env var)",
|
|
54
|
+
),
|
|
55
|
+
ConfigField(
|
|
56
|
+
name="user_agent",
|
|
57
|
+
label="User Agent",
|
|
58
|
+
type="text",
|
|
59
|
+
required=False,
|
|
60
|
+
default="RedditTools v1.0",
|
|
61
|
+
placeholder="MyApp v1.0",
|
|
62
|
+
description="User agent string for API requests (can also be set via REDDIT_USER_AGENT env var)",
|
|
63
|
+
),
|
|
64
|
+
ConfigField(
|
|
65
|
+
name="username",
|
|
66
|
+
label="Username",
|
|
67
|
+
type="text",
|
|
68
|
+
required=False,
|
|
69
|
+
placeholder="your_reddit_username",
|
|
70
|
+
description="Reddit username for authenticated actions (can also be set via REDDIT_USERNAME env var)",
|
|
71
|
+
),
|
|
72
|
+
ConfigField(
|
|
73
|
+
name="password",
|
|
74
|
+
label="Password",
|
|
75
|
+
type="password",
|
|
76
|
+
required=False,
|
|
77
|
+
placeholder="your_reddit_password",
|
|
78
|
+
description="Reddit password for authenticated actions (can also be set via REDDIT_PASSWORD env var)",
|
|
79
|
+
),
|
|
80
|
+
# Feature flags grouped by functionality
|
|
81
|
+
# User and community information
|
|
82
|
+
ConfigField(
|
|
83
|
+
name="get_user_info",
|
|
84
|
+
label="Get User Info",
|
|
85
|
+
type="boolean",
|
|
86
|
+
required=False,
|
|
87
|
+
default=True,
|
|
88
|
+
description="Enable getting information about Reddit users",
|
|
89
|
+
),
|
|
90
|
+
ConfigField(
|
|
91
|
+
name="get_top_posts",
|
|
92
|
+
label="Get Top Posts",
|
|
93
|
+
type="boolean",
|
|
94
|
+
required=False,
|
|
95
|
+
default=True,
|
|
96
|
+
description="Enable getting top posts from subreddits",
|
|
97
|
+
),
|
|
98
|
+
ConfigField(
|
|
99
|
+
name="get_subreddit_info",
|
|
100
|
+
label="Get Subreddit Info",
|
|
101
|
+
type="boolean",
|
|
102
|
+
required=False,
|
|
103
|
+
default=True,
|
|
104
|
+
description="Enable getting information about subreddits",
|
|
105
|
+
),
|
|
106
|
+
ConfigField(
|
|
107
|
+
name="get_trending_subreddits",
|
|
108
|
+
label="Get Trending Subreddits",
|
|
109
|
+
type="boolean",
|
|
110
|
+
required=False,
|
|
111
|
+
default=True,
|
|
112
|
+
description="Enable getting currently trending subreddits",
|
|
113
|
+
),
|
|
114
|
+
ConfigField(
|
|
115
|
+
name="get_subreddit_stats",
|
|
116
|
+
label="Get Subreddit Stats",
|
|
117
|
+
type="boolean",
|
|
118
|
+
required=False,
|
|
119
|
+
default=True,
|
|
120
|
+
description="Enable getting statistics about subreddits",
|
|
121
|
+
),
|
|
122
|
+
# Content creation and interaction
|
|
123
|
+
ConfigField(
|
|
124
|
+
name="create_post",
|
|
125
|
+
label="Create Post",
|
|
126
|
+
type="boolean",
|
|
127
|
+
required=False,
|
|
128
|
+
default=True,
|
|
129
|
+
description="Enable creating new posts in subreddits",
|
|
130
|
+
),
|
|
131
|
+
ConfigField(
|
|
132
|
+
name="reply_to_post",
|
|
133
|
+
label="Reply to Post",
|
|
134
|
+
type="boolean",
|
|
135
|
+
required=False,
|
|
136
|
+
default=True,
|
|
137
|
+
description="Enable replying to existing posts",
|
|
138
|
+
),
|
|
139
|
+
ConfigField(
|
|
140
|
+
name="reply_to_comment",
|
|
141
|
+
label="Reply to Comment",
|
|
142
|
+
type="boolean",
|
|
143
|
+
required=False,
|
|
144
|
+
default=True,
|
|
145
|
+
description="Enable replying to existing comments",
|
|
146
|
+
),
|
|
147
|
+
],
|
|
148
|
+
dependencies=["praw"],
|
|
149
|
+
docs_url=None,
|
|
150
|
+
)
|
|
151
|
+
def reddit_tools() -> type[RedditTools]:
|
|
152
|
+
"""Return Reddit tools for social media interaction."""
|
|
153
|
+
from agno.tools.reddit import RedditTools
|
|
154
|
+
|
|
155
|
+
return RedditTools
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Replicate 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.replicate import ReplicateTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="replicate",
|
|
21
|
+
display_name="Replicate",
|
|
22
|
+
description="Generate images and videos using AI models on the Replicate platform",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaVideo",
|
|
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="r8_...",
|
|
36
|
+
description="Replicate API token (can also be set via REPLICATE_API_TOKEN env var)",
|
|
37
|
+
),
|
|
38
|
+
# Model configuration
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="model",
|
|
41
|
+
label="Model",
|
|
42
|
+
type="text",
|
|
43
|
+
required=False,
|
|
44
|
+
default="minimax/video-01",
|
|
45
|
+
placeholder="minimax/video-01",
|
|
46
|
+
description="The Replicate model to use for media generation",
|
|
47
|
+
),
|
|
48
|
+
],
|
|
49
|
+
dependencies=["replicate"],
|
|
50
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/replicate",
|
|
51
|
+
)
|
|
52
|
+
def replicate_tools() -> type[ReplicateTools]:
|
|
53
|
+
"""Return Replicate tools for AI media generation."""
|
|
54
|
+
from agno.tools.replicate import ReplicateTools
|
|
55
|
+
|
|
56
|
+
return ReplicateTools
|
mindroom/tools/resend.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""Resend email 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.resend import ResendTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="resend",
|
|
21
|
+
display_name="Resend",
|
|
22
|
+
description="Email delivery service for sending transactional emails",
|
|
23
|
+
category=ToolCategory.EMAIL,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="Mail",
|
|
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="re_...",
|
|
36
|
+
description="Resend API key for authentication (can also be set via RESEND_API_KEY env var)",
|
|
37
|
+
),
|
|
38
|
+
# Configuration
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="from_email",
|
|
41
|
+
label="From Email",
|
|
42
|
+
type="text",
|
|
43
|
+
required=False,
|
|
44
|
+
placeholder="noreply@example.com",
|
|
45
|
+
description="Default sender email address for outgoing emails",
|
|
46
|
+
),
|
|
47
|
+
],
|
|
48
|
+
dependencies=["resend"],
|
|
49
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/resend",
|
|
50
|
+
)
|
|
51
|
+
def resend_tools() -> type[ResendTools]:
|
|
52
|
+
"""Return Resend email tools for sending transactional emails."""
|
|
53
|
+
from agno.tools.resend import ResendTools
|
|
54
|
+
|
|
55
|
+
return ResendTools
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"""ScrapeGraph 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.scrapegraph import ScrapeGraphTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="scrapegraph",
|
|
21
|
+
display_name="ScrapeGraph",
|
|
22
|
+
description="Extract structured data from webpages using AI and natural language prompts",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaGlobe",
|
|
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="sgai_...",
|
|
36
|
+
description="ScrapeGraph API key for enhanced services (can also be set via SGAI_API_KEY env var)",
|
|
37
|
+
),
|
|
38
|
+
# Tool features
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="smartscraper",
|
|
41
|
+
label="Smart Scraper",
|
|
42
|
+
type="boolean",
|
|
43
|
+
required=False,
|
|
44
|
+
default=True,
|
|
45
|
+
description="Enable AI-powered data extraction using natural language prompts",
|
|
46
|
+
),
|
|
47
|
+
ConfigField(
|
|
48
|
+
name="markdownify",
|
|
49
|
+
label="Markdownify",
|
|
50
|
+
type="boolean",
|
|
51
|
+
required=False,
|
|
52
|
+
default=False,
|
|
53
|
+
description="Enable webpage to markdown conversion",
|
|
54
|
+
),
|
|
55
|
+
ConfigField(
|
|
56
|
+
name="crawl",
|
|
57
|
+
label="Crawl",
|
|
58
|
+
type="boolean",
|
|
59
|
+
required=False,
|
|
60
|
+
default=False,
|
|
61
|
+
description="Enable website crawling and structured data extraction",
|
|
62
|
+
),
|
|
63
|
+
ConfigField(
|
|
64
|
+
name="searchscraper",
|
|
65
|
+
label="Search Scraper",
|
|
66
|
+
type="boolean",
|
|
67
|
+
required=False,
|
|
68
|
+
default=False,
|
|
69
|
+
description="Enable web search and information extraction",
|
|
70
|
+
),
|
|
71
|
+
ConfigField(
|
|
72
|
+
name="agentic_crawler",
|
|
73
|
+
label="Agentic Crawler",
|
|
74
|
+
type="boolean",
|
|
75
|
+
required=False,
|
|
76
|
+
default=False,
|
|
77
|
+
description="Enable automated browser actions and optional AI extraction",
|
|
78
|
+
),
|
|
79
|
+
],
|
|
80
|
+
dependencies=["scrapegraph-py"],
|
|
81
|
+
docs_url="https://docs.agno.com/tools/toolkits/web_scrape/scrapegraph",
|
|
82
|
+
)
|
|
83
|
+
def scrapegraph_tools() -> type[ScrapeGraphTools]:
|
|
84
|
+
"""Return ScrapeGraph tools for web data extraction."""
|
|
85
|
+
from agno.tools.scrapegraph import ScrapeGraphTools
|
|
86
|
+
|
|
87
|
+
return ScrapeGraphTools
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"""Searxng 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.searxng import Searxng
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="searxng",
|
|
21
|
+
display_name="SearxNG",
|
|
22
|
+
description="Open source search engine for web, images, news, science, and specialized content",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="FaSearch",
|
|
27
|
+
icon_color="text-blue-600",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Connection configuration
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="host",
|
|
32
|
+
label="Host URL",
|
|
33
|
+
type="url",
|
|
34
|
+
required=True,
|
|
35
|
+
placeholder="http://localhost:8080",
|
|
36
|
+
description="The host for the SearxNG instance connection",
|
|
37
|
+
),
|
|
38
|
+
ConfigField(
|
|
39
|
+
name="engines",
|
|
40
|
+
label="Search Engines",
|
|
41
|
+
type="text",
|
|
42
|
+
required=False,
|
|
43
|
+
default="",
|
|
44
|
+
placeholder="google,bing,duckduckgo",
|
|
45
|
+
description="Comma-separated list of search engines to use (leave empty for default)",
|
|
46
|
+
),
|
|
47
|
+
ConfigField(
|
|
48
|
+
name="fixed_max_results",
|
|
49
|
+
label="Fixed Max Results",
|
|
50
|
+
type="number",
|
|
51
|
+
required=False,
|
|
52
|
+
placeholder="10",
|
|
53
|
+
description="Optional parameter to specify the fixed maximum number of results",
|
|
54
|
+
),
|
|
55
|
+
# Content type enablement flags
|
|
56
|
+
ConfigField(
|
|
57
|
+
name="images",
|
|
58
|
+
label="Enable Image Search",
|
|
59
|
+
type="boolean",
|
|
60
|
+
required=False,
|
|
61
|
+
default=False,
|
|
62
|
+
description="Enable searching for images",
|
|
63
|
+
),
|
|
64
|
+
ConfigField(
|
|
65
|
+
name="it",
|
|
66
|
+
label="Enable IT Search",
|
|
67
|
+
type="boolean",
|
|
68
|
+
required=False,
|
|
69
|
+
default=False,
|
|
70
|
+
description="Enable searching for IT-related content",
|
|
71
|
+
),
|
|
72
|
+
ConfigField(
|
|
73
|
+
name="map",
|
|
74
|
+
label="Enable Map Search",
|
|
75
|
+
type="boolean",
|
|
76
|
+
required=False,
|
|
77
|
+
default=False,
|
|
78
|
+
description="Enable searching for maps",
|
|
79
|
+
),
|
|
80
|
+
ConfigField(
|
|
81
|
+
name="music",
|
|
82
|
+
label="Enable Music Search",
|
|
83
|
+
type="boolean",
|
|
84
|
+
required=False,
|
|
85
|
+
default=False,
|
|
86
|
+
description="Enable searching for music",
|
|
87
|
+
),
|
|
88
|
+
ConfigField(
|
|
89
|
+
name="news",
|
|
90
|
+
label="Enable News Search",
|
|
91
|
+
type="boolean",
|
|
92
|
+
required=False,
|
|
93
|
+
default=False,
|
|
94
|
+
description="Enable searching for news",
|
|
95
|
+
),
|
|
96
|
+
ConfigField(
|
|
97
|
+
name="science",
|
|
98
|
+
label="Enable Science Search",
|
|
99
|
+
type="boolean",
|
|
100
|
+
required=False,
|
|
101
|
+
default=False,
|
|
102
|
+
description="Enable searching for science-related content",
|
|
103
|
+
),
|
|
104
|
+
ConfigField(
|
|
105
|
+
name="videos",
|
|
106
|
+
label="Enable Video Search",
|
|
107
|
+
type="boolean",
|
|
108
|
+
required=False,
|
|
109
|
+
default=False,
|
|
110
|
+
description="Enable searching for videos",
|
|
111
|
+
),
|
|
112
|
+
],
|
|
113
|
+
dependencies=[], # httpx already included in main dependencies
|
|
114
|
+
docs_url="https://docs.agno.com/tools/toolkits/search/searxng",
|
|
115
|
+
)
|
|
116
|
+
def searxng_tools() -> type[Searxng]:
|
|
117
|
+
"""Return SearxNG search tools for web, images, news, and specialized content search."""
|
|
118
|
+
from agno.tools.searxng import Searxng
|
|
119
|
+
|
|
120
|
+
return Searxng
|