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
mindroom/tools/dalle.py
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""DALL-E 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.dalle import DalleTools
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@register_tool_with_metadata(
|
|
14
|
+
name="dalle",
|
|
15
|
+
display_name="DALL-E",
|
|
16
|
+
description="OpenAI DALL-E image generation from text prompts",
|
|
17
|
+
category=ToolCategory.DEVELOPMENT, # others/ maps to DEVELOPMENT
|
|
18
|
+
status=ToolStatus.REQUIRES_CONFIG, # Requires API key
|
|
19
|
+
setup_type=SetupType.API_KEY, # Uses OpenAI API key
|
|
20
|
+
icon="FaImage", # React icon for image generation
|
|
21
|
+
icon_color="text-green-600", # OpenAI brand color
|
|
22
|
+
config_fields=[
|
|
23
|
+
# Authentication parameter first
|
|
24
|
+
ConfigField(
|
|
25
|
+
name="api_key",
|
|
26
|
+
label="API Key",
|
|
27
|
+
type="password",
|
|
28
|
+
required=False,
|
|
29
|
+
placeholder="sk-...",
|
|
30
|
+
description="OpenAI API key for authentication (can also be set via OPENAI_API_KEY env var)",
|
|
31
|
+
),
|
|
32
|
+
# Model configuration
|
|
33
|
+
ConfigField(
|
|
34
|
+
name="model",
|
|
35
|
+
label="Model",
|
|
36
|
+
type="text",
|
|
37
|
+
required=False,
|
|
38
|
+
default="dall-e-3",
|
|
39
|
+
placeholder="dall-e-3",
|
|
40
|
+
description="The DALL-E model to use (dall-e-3 or dall-e-2)",
|
|
41
|
+
),
|
|
42
|
+
ConfigField(
|
|
43
|
+
name="size",
|
|
44
|
+
label="Image Size",
|
|
45
|
+
type="text",
|
|
46
|
+
required=False,
|
|
47
|
+
default="1024x1024",
|
|
48
|
+
placeholder="1024x1024",
|
|
49
|
+
description="Image size (256x256, 512x512, 1024x1024, 1792x1024, or 1024x1792)",
|
|
50
|
+
),
|
|
51
|
+
ConfigField(
|
|
52
|
+
name="quality",
|
|
53
|
+
label="Quality",
|
|
54
|
+
type="text",
|
|
55
|
+
required=False,
|
|
56
|
+
default="standard",
|
|
57
|
+
placeholder="standard",
|
|
58
|
+
description="Image quality (standard or hd)",
|
|
59
|
+
),
|
|
60
|
+
ConfigField(
|
|
61
|
+
name="style",
|
|
62
|
+
label="Style",
|
|
63
|
+
type="text",
|
|
64
|
+
required=False,
|
|
65
|
+
default="vivid",
|
|
66
|
+
placeholder="vivid",
|
|
67
|
+
description="Image style (vivid or natural)",
|
|
68
|
+
),
|
|
69
|
+
ConfigField(
|
|
70
|
+
name="n",
|
|
71
|
+
label="Number of Images",
|
|
72
|
+
type="number",
|
|
73
|
+
required=False,
|
|
74
|
+
default=1,
|
|
75
|
+
description="Number of images to generate (DALL-E 3 only supports 1)",
|
|
76
|
+
),
|
|
77
|
+
],
|
|
78
|
+
dependencies=["openai"], # OpenAI Python package
|
|
79
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/dalle", # URL without .md extension
|
|
80
|
+
)
|
|
81
|
+
def dalle_tools() -> type[DalleTools]:
|
|
82
|
+
"""Return DALL-E tools for image generation from text prompts."""
|
|
83
|
+
from agno.tools.dalle import DalleTools
|
|
84
|
+
|
|
85
|
+
return DalleTools
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"""Daytona 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.daytona import DaytonaTools
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@register_tool_with_metadata(
|
|
14
|
+
name="daytona",
|
|
15
|
+
display_name="Daytona",
|
|
16
|
+
description="Execute code in secure, remote sandbox environments",
|
|
17
|
+
category=ToolCategory.DEVELOPMENT, # others/ maps to DEVELOPMENT
|
|
18
|
+
status=ToolStatus.REQUIRES_CONFIG, # Requires API key
|
|
19
|
+
setup_type=SetupType.API_KEY, # Uses API key authentication
|
|
20
|
+
icon="FaTerminal", # Terminal icon for code execution
|
|
21
|
+
icon_color="text-blue-600", # Blue color for development tools
|
|
22
|
+
config_fields=[
|
|
23
|
+
# Authentication parameters
|
|
24
|
+
ConfigField(
|
|
25
|
+
name="api_key",
|
|
26
|
+
label="API Key",
|
|
27
|
+
type="password",
|
|
28
|
+
required=False,
|
|
29
|
+
placeholder="dt_...",
|
|
30
|
+
description="Daytona API key (can also be set via DAYTONA_API_KEY env var)",
|
|
31
|
+
),
|
|
32
|
+
ConfigField(
|
|
33
|
+
name="api_url",
|
|
34
|
+
label="API URL",
|
|
35
|
+
type="url",
|
|
36
|
+
required=False,
|
|
37
|
+
placeholder="https://api.daytona.io",
|
|
38
|
+
description="Daytona API URL (can also be set via DAYTONA_API_URL env var)",
|
|
39
|
+
),
|
|
40
|
+
# Sandbox configuration
|
|
41
|
+
ConfigField(
|
|
42
|
+
name="sandbox_id",
|
|
43
|
+
label="Sandbox ID",
|
|
44
|
+
type="text",
|
|
45
|
+
required=False,
|
|
46
|
+
placeholder="sandbox-123",
|
|
47
|
+
description="Specific sandbox ID to use. If None, creates or uses persistent sandbox",
|
|
48
|
+
),
|
|
49
|
+
ConfigField(
|
|
50
|
+
name="sandbox_language",
|
|
51
|
+
label="Sandbox Language",
|
|
52
|
+
type="text",
|
|
53
|
+
required=False,
|
|
54
|
+
default="PYTHON",
|
|
55
|
+
placeholder="PYTHON",
|
|
56
|
+
description="Primary language for the sandbox (PYTHON, JAVASCRIPT, TYPESCRIPT)",
|
|
57
|
+
),
|
|
58
|
+
ConfigField(
|
|
59
|
+
name="sandbox_target",
|
|
60
|
+
label="Sandbox Target",
|
|
61
|
+
type="text",
|
|
62
|
+
required=False,
|
|
63
|
+
placeholder="target-config",
|
|
64
|
+
description="Target configuration for the sandbox",
|
|
65
|
+
),
|
|
66
|
+
ConfigField(
|
|
67
|
+
name="sandbox_os",
|
|
68
|
+
label="Sandbox OS",
|
|
69
|
+
type="text",
|
|
70
|
+
required=False,
|
|
71
|
+
placeholder="ubuntu-20.04",
|
|
72
|
+
description="Operating system for the sandbox",
|
|
73
|
+
),
|
|
74
|
+
ConfigField(
|
|
75
|
+
name="auto_stop_interval",
|
|
76
|
+
label="Auto Stop Interval",
|
|
77
|
+
type="number",
|
|
78
|
+
required=False,
|
|
79
|
+
default=60,
|
|
80
|
+
description="Auto-stop interval in minutes (0 to disable)",
|
|
81
|
+
),
|
|
82
|
+
ConfigField(
|
|
83
|
+
name="sandbox_os_user",
|
|
84
|
+
label="Sandbox OS User",
|
|
85
|
+
type="text",
|
|
86
|
+
required=False,
|
|
87
|
+
placeholder="daytona",
|
|
88
|
+
description="OS user for the sandbox",
|
|
89
|
+
),
|
|
90
|
+
ConfigField(
|
|
91
|
+
name="sandbox_env_vars",
|
|
92
|
+
label="Sandbox Environment Variables",
|
|
93
|
+
type="text",
|
|
94
|
+
required=False,
|
|
95
|
+
placeholder='{"ENV_VAR": "value"}',
|
|
96
|
+
description="Environment variables for the sandbox (JSON format)",
|
|
97
|
+
),
|
|
98
|
+
ConfigField(
|
|
99
|
+
name="sandbox_labels",
|
|
100
|
+
label="Sandbox Labels",
|
|
101
|
+
type="text",
|
|
102
|
+
required=False,
|
|
103
|
+
default="{}",
|
|
104
|
+
placeholder='{"label": "value"}',
|
|
105
|
+
description="Labels for the sandbox (JSON format)",
|
|
106
|
+
),
|
|
107
|
+
ConfigField(
|
|
108
|
+
name="organization_id",
|
|
109
|
+
label="Organization ID",
|
|
110
|
+
type="text",
|
|
111
|
+
required=False,
|
|
112
|
+
placeholder="org-123",
|
|
113
|
+
description="Organization ID for the sandbox",
|
|
114
|
+
),
|
|
115
|
+
ConfigField(
|
|
116
|
+
name="timeout",
|
|
117
|
+
label="Timeout",
|
|
118
|
+
type="number",
|
|
119
|
+
required=False,
|
|
120
|
+
default=300,
|
|
121
|
+
description="Timeout for sandbox operations in seconds",
|
|
122
|
+
),
|
|
123
|
+
# Feature flags
|
|
124
|
+
ConfigField(
|
|
125
|
+
name="auto_create_sandbox",
|
|
126
|
+
label="Auto Create Sandbox",
|
|
127
|
+
type="boolean",
|
|
128
|
+
required=False,
|
|
129
|
+
default=True,
|
|
130
|
+
description="Automatically create sandbox if none exists",
|
|
131
|
+
),
|
|
132
|
+
ConfigField(
|
|
133
|
+
name="verify_ssl",
|
|
134
|
+
label="Verify SSL",
|
|
135
|
+
type="boolean",
|
|
136
|
+
required=False,
|
|
137
|
+
default=False,
|
|
138
|
+
description="Whether to verify SSL certificates",
|
|
139
|
+
),
|
|
140
|
+
ConfigField(
|
|
141
|
+
name="persistent",
|
|
142
|
+
label="Persistent",
|
|
143
|
+
type="boolean",
|
|
144
|
+
required=False,
|
|
145
|
+
default=True,
|
|
146
|
+
description="Whether to reuse the same sandbox across agent sessions",
|
|
147
|
+
),
|
|
148
|
+
ConfigField(
|
|
149
|
+
name="sandbox_public",
|
|
150
|
+
label="Sandbox Public",
|
|
151
|
+
type="boolean",
|
|
152
|
+
required=False,
|
|
153
|
+
description="Whether the sandbox should be public",
|
|
154
|
+
),
|
|
155
|
+
# Custom instructions
|
|
156
|
+
ConfigField(
|
|
157
|
+
name="instructions",
|
|
158
|
+
label="Instructions",
|
|
159
|
+
type="text",
|
|
160
|
+
required=False,
|
|
161
|
+
placeholder="Custom guidelines for the toolkit",
|
|
162
|
+
description="Custom instructions for the toolkit",
|
|
163
|
+
),
|
|
164
|
+
ConfigField(
|
|
165
|
+
name="add_instructions",
|
|
166
|
+
label="Add Instructions",
|
|
167
|
+
type="boolean",
|
|
168
|
+
required=False,
|
|
169
|
+
default=False,
|
|
170
|
+
description="Whether to add instructions to the agent",
|
|
171
|
+
),
|
|
172
|
+
],
|
|
173
|
+
dependencies=["daytona"],
|
|
174
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/daytona",
|
|
175
|
+
)
|
|
176
|
+
def daytona_tools() -> type[DaytonaTools]:
|
|
177
|
+
"""Return Daytona tools for secure code execution in remote sandbox environments."""
|
|
178
|
+
from agno.tools.daytona import DaytonaTools
|
|
179
|
+
|
|
180
|
+
return DaytonaTools
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"""Discord 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.discord import DiscordTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="discord",
|
|
21
|
+
display_name="Discord",
|
|
22
|
+
description="Tool for interacting with Discord channels and servers",
|
|
23
|
+
category=ToolCategory.COMMUNICATION,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaDiscord",
|
|
27
|
+
icon_color="text-indigo-500", # Discord brand color
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="bot_token",
|
|
32
|
+
label="Bot Token",
|
|
33
|
+
type="password",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="MTAx...",
|
|
36
|
+
description="Discord bot token for authentication (can also be set via DISCORD_BOT_TOKEN env var)",
|
|
37
|
+
),
|
|
38
|
+
# Feature flags - Messaging
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="enable_messaging",
|
|
41
|
+
label="Enable Messaging",
|
|
42
|
+
type="boolean",
|
|
43
|
+
required=False,
|
|
44
|
+
default=True,
|
|
45
|
+
description="Enable sending messages to Discord channels",
|
|
46
|
+
),
|
|
47
|
+
# Feature flags - History and Channel Management
|
|
48
|
+
ConfigField(
|
|
49
|
+
name="enable_history",
|
|
50
|
+
label="Enable History",
|
|
51
|
+
type="boolean",
|
|
52
|
+
required=False,
|
|
53
|
+
default=True,
|
|
54
|
+
description="Enable retrieving message history from channels",
|
|
55
|
+
),
|
|
56
|
+
ConfigField(
|
|
57
|
+
name="enable_channel_management",
|
|
58
|
+
label="Enable Channel Management",
|
|
59
|
+
type="boolean",
|
|
60
|
+
required=False,
|
|
61
|
+
default=True,
|
|
62
|
+
description="Enable getting channel info and listing channels",
|
|
63
|
+
),
|
|
64
|
+
# Feature flags - Message Management
|
|
65
|
+
ConfigField(
|
|
66
|
+
name="enable_message_management",
|
|
67
|
+
label="Enable Message Management",
|
|
68
|
+
type="boolean",
|
|
69
|
+
required=False,
|
|
70
|
+
default=True,
|
|
71
|
+
description="Enable deleting messages from channels",
|
|
72
|
+
),
|
|
73
|
+
],
|
|
74
|
+
dependencies=["requests"],
|
|
75
|
+
docs_url="https://docs.agno.com/tools/toolkits/social/discord",
|
|
76
|
+
)
|
|
77
|
+
def discord_tools() -> type[DiscordTools]:
|
|
78
|
+
"""Return Discord tools for interacting with Discord channels and servers."""
|
|
79
|
+
from agno.tools.discord import DiscordTools
|
|
80
|
+
|
|
81
|
+
return DiscordTools
|
mindroom/tools/docker.py
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"""Docker 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.docker import DockerTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="docker",
|
|
21
|
+
display_name="Docker",
|
|
22
|
+
description="Container, image, volume, and network management",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT,
|
|
24
|
+
status=ToolStatus.AVAILABLE,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="FaDocker",
|
|
27
|
+
icon_color="text-blue-500",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Container Management
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="enable_container_management",
|
|
32
|
+
label="Enable Container Management",
|
|
33
|
+
type="boolean",
|
|
34
|
+
required=False,
|
|
35
|
+
default=True,
|
|
36
|
+
description="Enable container operations (list, start, stop, remove, logs, inspect, run, exec)",
|
|
37
|
+
),
|
|
38
|
+
# Image Management
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="enable_image_management",
|
|
41
|
+
label="Enable Image Management",
|
|
42
|
+
type="boolean",
|
|
43
|
+
required=False,
|
|
44
|
+
default=True,
|
|
45
|
+
description="Enable image operations (list, pull, remove, build, tag, inspect)",
|
|
46
|
+
),
|
|
47
|
+
# Volume Management
|
|
48
|
+
ConfigField(
|
|
49
|
+
name="enable_volume_management",
|
|
50
|
+
label="Enable Volume Management",
|
|
51
|
+
type="boolean",
|
|
52
|
+
required=False,
|
|
53
|
+
default=False,
|
|
54
|
+
description="Enable volume operations (list, create, remove, inspect)",
|
|
55
|
+
),
|
|
56
|
+
# Network Management
|
|
57
|
+
ConfigField(
|
|
58
|
+
name="enable_network_management",
|
|
59
|
+
label="Enable Network Management",
|
|
60
|
+
type="boolean",
|
|
61
|
+
required=False,
|
|
62
|
+
default=False,
|
|
63
|
+
description="Enable network operations (list, create, remove, inspect, connect, disconnect)",
|
|
64
|
+
),
|
|
65
|
+
],
|
|
66
|
+
dependencies=["docker"],
|
|
67
|
+
docs_url="https://docs.agno.com/tools/toolkits/local/docker",
|
|
68
|
+
)
|
|
69
|
+
def docker_tools() -> type[DockerTools]:
|
|
70
|
+
"""Return Docker tools for container management."""
|
|
71
|
+
from agno.tools.docker import DockerTools
|
|
72
|
+
|
|
73
|
+
return DockerTools
|
mindroom/tools/duckdb.py
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"""DuckDB 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.duckdb import DuckDbTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="duckdb",
|
|
21
|
+
display_name="DuckDB",
|
|
22
|
+
description="In-memory analytical database for data processing and analysis",
|
|
23
|
+
category=ToolCategory.PRODUCTIVITY,
|
|
24
|
+
status=ToolStatus.AVAILABLE,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="Database",
|
|
27
|
+
icon_color="text-yellow-600",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Database connection parameters
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="db_path",
|
|
32
|
+
label="Database Path",
|
|
33
|
+
type="text",
|
|
34
|
+
required=False,
|
|
35
|
+
default=None,
|
|
36
|
+
placeholder="/path/to/database.db",
|
|
37
|
+
description="Path to the DuckDB database file (if None, uses in-memory database)",
|
|
38
|
+
),
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="connection",
|
|
41
|
+
label="Database Connection",
|
|
42
|
+
type="text",
|
|
43
|
+
required=False,
|
|
44
|
+
default=None,
|
|
45
|
+
placeholder="Optional existing DuckDB connection",
|
|
46
|
+
description="Existing DuckDB connection object (advanced users only)",
|
|
47
|
+
),
|
|
48
|
+
ConfigField(
|
|
49
|
+
name="init_commands",
|
|
50
|
+
label="Initialization Commands",
|
|
51
|
+
type="text",
|
|
52
|
+
required=False,
|
|
53
|
+
default=None,
|
|
54
|
+
placeholder='["INSTALL spatial", "LOAD spatial"]',
|
|
55
|
+
description="List of SQL commands to run on initialization (as JSON array)",
|
|
56
|
+
),
|
|
57
|
+
ConfigField(
|
|
58
|
+
name="read_only",
|
|
59
|
+
label="Read Only",
|
|
60
|
+
type="boolean",
|
|
61
|
+
required=False,
|
|
62
|
+
default=False,
|
|
63
|
+
description="Open database in read-only mode",
|
|
64
|
+
),
|
|
65
|
+
ConfigField(
|
|
66
|
+
name="config",
|
|
67
|
+
label="Database Config",
|
|
68
|
+
type="text",
|
|
69
|
+
required=False,
|
|
70
|
+
default=None,
|
|
71
|
+
placeholder='{"memory_limit": "1GB"}',
|
|
72
|
+
description="Database configuration as JSON string (optional)",
|
|
73
|
+
),
|
|
74
|
+
# Query operations
|
|
75
|
+
ConfigField(
|
|
76
|
+
name="run_queries",
|
|
77
|
+
label="Run Queries",
|
|
78
|
+
type="boolean",
|
|
79
|
+
required=False,
|
|
80
|
+
default=True,
|
|
81
|
+
description="Enable executing SQL queries",
|
|
82
|
+
),
|
|
83
|
+
ConfigField(
|
|
84
|
+
name="inspect_queries",
|
|
85
|
+
label="Inspect Queries",
|
|
86
|
+
type="boolean",
|
|
87
|
+
required=False,
|
|
88
|
+
default=False,
|
|
89
|
+
description="Enable query plan inspection and analysis",
|
|
90
|
+
),
|
|
91
|
+
# Table operations
|
|
92
|
+
ConfigField(
|
|
93
|
+
name="create_tables",
|
|
94
|
+
label="Create Tables",
|
|
95
|
+
type="boolean",
|
|
96
|
+
required=False,
|
|
97
|
+
default=True,
|
|
98
|
+
description="Enable creating tables from files and data sources",
|
|
99
|
+
),
|
|
100
|
+
ConfigField(
|
|
101
|
+
name="summarize_tables",
|
|
102
|
+
label="Summarize Tables",
|
|
103
|
+
type="boolean",
|
|
104
|
+
required=False,
|
|
105
|
+
default=True,
|
|
106
|
+
description="Enable table summarization with statistical analysis",
|
|
107
|
+
),
|
|
108
|
+
ConfigField(
|
|
109
|
+
name="export_tables",
|
|
110
|
+
label="Export Tables",
|
|
111
|
+
type="boolean",
|
|
112
|
+
required=False,
|
|
113
|
+
default=False,
|
|
114
|
+
description="Enable exporting tables to various file formats",
|
|
115
|
+
),
|
|
116
|
+
],
|
|
117
|
+
dependencies=["duckdb"],
|
|
118
|
+
docs_url="https://docs.agno.com/tools/toolkits/database/duckdb",
|
|
119
|
+
)
|
|
120
|
+
def duckdb_tools() -> type[DuckDbTools]:
|
|
121
|
+
"""Return DuckDB tools for data analysis and processing."""
|
|
122
|
+
from agno.tools.duckdb import DuckDbTools
|
|
123
|
+
|
|
124
|
+
return DuckDbTools
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"""DuckDuckGo 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.duckduckgo import DuckDuckGoTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="duckduckgo",
|
|
21
|
+
display_name="DuckDuckGo",
|
|
22
|
+
description="Search engine for web search and news",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.AVAILABLE,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="FaSearch",
|
|
27
|
+
icon_color="text-orange-500", # DuckDuckGo orange
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Search features
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="search",
|
|
32
|
+
label="Search",
|
|
33
|
+
type="boolean",
|
|
34
|
+
required=False,
|
|
35
|
+
default=True,
|
|
36
|
+
description="Enable DuckDuckGo search function",
|
|
37
|
+
),
|
|
38
|
+
ConfigField(
|
|
39
|
+
name="news",
|
|
40
|
+
label="News",
|
|
41
|
+
type="boolean",
|
|
42
|
+
required=False,
|
|
43
|
+
default=True,
|
|
44
|
+
description="Enable DuckDuckGo news function",
|
|
45
|
+
),
|
|
46
|
+
# Search configuration
|
|
47
|
+
ConfigField(
|
|
48
|
+
name="modifier",
|
|
49
|
+
label="Search Modifier",
|
|
50
|
+
type="text",
|
|
51
|
+
required=False,
|
|
52
|
+
default=None,
|
|
53
|
+
placeholder="site:example.com",
|
|
54
|
+
description="A modifier to be used in the search request",
|
|
55
|
+
),
|
|
56
|
+
ConfigField(
|
|
57
|
+
name="fixed_max_results",
|
|
58
|
+
label="Fixed Max Results",
|
|
59
|
+
type="number",
|
|
60
|
+
required=False,
|
|
61
|
+
default=None,
|
|
62
|
+
placeholder="10",
|
|
63
|
+
description="A fixed number of maximum results",
|
|
64
|
+
),
|
|
65
|
+
ConfigField(
|
|
66
|
+
name="proxy",
|
|
67
|
+
label="Proxy",
|
|
68
|
+
type="url",
|
|
69
|
+
required=False,
|
|
70
|
+
default=None,
|
|
71
|
+
placeholder="http://proxy.example.com:8080",
|
|
72
|
+
description="Proxy to be used in the search request",
|
|
73
|
+
),
|
|
74
|
+
ConfigField(
|
|
75
|
+
name="timeout",
|
|
76
|
+
label="Timeout",
|
|
77
|
+
type="number",
|
|
78
|
+
required=False,
|
|
79
|
+
default=10,
|
|
80
|
+
placeholder="10",
|
|
81
|
+
description="The maximum number of seconds to wait for a response",
|
|
82
|
+
),
|
|
83
|
+
ConfigField(
|
|
84
|
+
name="verify_ssl",
|
|
85
|
+
label="Verify SSL",
|
|
86
|
+
type="boolean",
|
|
87
|
+
required=False,
|
|
88
|
+
default=True,
|
|
89
|
+
description="Verify SSL certificates for secure connections",
|
|
90
|
+
),
|
|
91
|
+
],
|
|
92
|
+
dependencies=["ddgs"],
|
|
93
|
+
docs_url="https://docs.agno.com/tools/toolkits/search/duckduckgo",
|
|
94
|
+
)
|
|
95
|
+
def duckduckgo_tools() -> type[DuckDuckGoTools]:
|
|
96
|
+
"""Return DuckDuckGo tools for web search and news."""
|
|
97
|
+
from agno.tools.duckduckgo import DuckDuckGoTools
|
|
98
|
+
|
|
99
|
+
return DuckDuckGoTools
|