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.
Files changed (155) hide show
  1. mindroom/__init__.py +3 -0
  2. mindroom/agent_prompts.py +963 -0
  3. mindroom/agents.py +248 -0
  4. mindroom/ai.py +421 -0
  5. mindroom/api/__init__.py +1 -0
  6. mindroom/api/credentials.py +137 -0
  7. mindroom/api/google_integration.py +355 -0
  8. mindroom/api/google_tools_helper.py +40 -0
  9. mindroom/api/homeassistant_integration.py +421 -0
  10. mindroom/api/integrations.py +189 -0
  11. mindroom/api/main.py +506 -0
  12. mindroom/api/matrix_operations.py +219 -0
  13. mindroom/api/tools.py +94 -0
  14. mindroom/background_tasks.py +87 -0
  15. mindroom/bot.py +2470 -0
  16. mindroom/cli.py +86 -0
  17. mindroom/commands.py +377 -0
  18. mindroom/config.py +343 -0
  19. mindroom/config_commands.py +324 -0
  20. mindroom/config_confirmation.py +411 -0
  21. mindroom/constants.py +52 -0
  22. mindroom/credentials.py +146 -0
  23. mindroom/credentials_sync.py +134 -0
  24. mindroom/custom_tools/__init__.py +8 -0
  25. mindroom/custom_tools/config_manager.py +765 -0
  26. mindroom/custom_tools/gmail.py +92 -0
  27. mindroom/custom_tools/google_calendar.py +92 -0
  28. mindroom/custom_tools/google_sheets.py +92 -0
  29. mindroom/custom_tools/homeassistant.py +341 -0
  30. mindroom/error_handling.py +35 -0
  31. mindroom/file_watcher.py +49 -0
  32. mindroom/interactive.py +313 -0
  33. mindroom/logging_config.py +207 -0
  34. mindroom/matrix/__init__.py +1 -0
  35. mindroom/matrix/client.py +782 -0
  36. mindroom/matrix/event_info.py +173 -0
  37. mindroom/matrix/identity.py +149 -0
  38. mindroom/matrix/large_messages.py +267 -0
  39. mindroom/matrix/mentions.py +141 -0
  40. mindroom/matrix/message_builder.py +94 -0
  41. mindroom/matrix/message_content.py +209 -0
  42. mindroom/matrix/presence.py +178 -0
  43. mindroom/matrix/rooms.py +311 -0
  44. mindroom/matrix/state.py +77 -0
  45. mindroom/matrix/typing.py +91 -0
  46. mindroom/matrix/users.py +217 -0
  47. mindroom/memory/__init__.py +21 -0
  48. mindroom/memory/config.py +137 -0
  49. mindroom/memory/functions.py +396 -0
  50. mindroom/py.typed +0 -0
  51. mindroom/response_tracker.py +128 -0
  52. mindroom/room_cleanup.py +139 -0
  53. mindroom/routing.py +107 -0
  54. mindroom/scheduling.py +758 -0
  55. mindroom/stop.py +207 -0
  56. mindroom/streaming.py +203 -0
  57. mindroom/teams.py +749 -0
  58. mindroom/thread_utils.py +318 -0
  59. mindroom/tools/__init__.py +520 -0
  60. mindroom/tools/agentql.py +64 -0
  61. mindroom/tools/airflow.py +57 -0
  62. mindroom/tools/apify.py +49 -0
  63. mindroom/tools/arxiv.py +64 -0
  64. mindroom/tools/aws_lambda.py +41 -0
  65. mindroom/tools/aws_ses.py +57 -0
  66. mindroom/tools/baidusearch.py +87 -0
  67. mindroom/tools/brightdata.py +116 -0
  68. mindroom/tools/browserbase.py +62 -0
  69. mindroom/tools/cal_com.py +98 -0
  70. mindroom/tools/calculator.py +112 -0
  71. mindroom/tools/cartesia.py +84 -0
  72. mindroom/tools/composio.py +166 -0
  73. mindroom/tools/config_manager.py +44 -0
  74. mindroom/tools/confluence.py +73 -0
  75. mindroom/tools/crawl4ai.py +101 -0
  76. mindroom/tools/csv.py +104 -0
  77. mindroom/tools/custom_api.py +106 -0
  78. mindroom/tools/dalle.py +85 -0
  79. mindroom/tools/daytona.py +180 -0
  80. mindroom/tools/discord.py +81 -0
  81. mindroom/tools/docker.py +73 -0
  82. mindroom/tools/duckdb.py +124 -0
  83. mindroom/tools/duckduckgo.py +99 -0
  84. mindroom/tools/e2b.py +121 -0
  85. mindroom/tools/eleven_labs.py +77 -0
  86. mindroom/tools/email.py +74 -0
  87. mindroom/tools/exa.py +246 -0
  88. mindroom/tools/fal.py +50 -0
  89. mindroom/tools/file.py +80 -0
  90. mindroom/tools/financial_datasets_api.py +112 -0
  91. mindroom/tools/firecrawl.py +124 -0
  92. mindroom/tools/gemini.py +85 -0
  93. mindroom/tools/giphy.py +49 -0
  94. mindroom/tools/github.py +376 -0
  95. mindroom/tools/gmail.py +102 -0
  96. mindroom/tools/google_calendar.py +55 -0
  97. mindroom/tools/google_maps.py +112 -0
  98. mindroom/tools/google_sheets.py +86 -0
  99. mindroom/tools/googlesearch.py +83 -0
  100. mindroom/tools/groq.py +77 -0
  101. mindroom/tools/hackernews.py +54 -0
  102. mindroom/tools/jina.py +108 -0
  103. mindroom/tools/jira.py +70 -0
  104. mindroom/tools/linear.py +103 -0
  105. mindroom/tools/linkup.py +65 -0
  106. mindroom/tools/lumalabs.py +71 -0
  107. mindroom/tools/mem0.py +82 -0
  108. mindroom/tools/modelslabs.py +85 -0
  109. mindroom/tools/moviepy_video_tools.py +62 -0
  110. mindroom/tools/newspaper4k.py +63 -0
  111. mindroom/tools/openai.py +143 -0
  112. mindroom/tools/openweather.py +89 -0
  113. mindroom/tools/oxylabs.py +54 -0
  114. mindroom/tools/pandas.py +35 -0
  115. mindroom/tools/pubmed.py +64 -0
  116. mindroom/tools/python.py +120 -0
  117. mindroom/tools/reddit.py +155 -0
  118. mindroom/tools/replicate.py +56 -0
  119. mindroom/tools/resend.py +55 -0
  120. mindroom/tools/scrapegraph.py +87 -0
  121. mindroom/tools/searxng.py +120 -0
  122. mindroom/tools/serpapi.py +55 -0
  123. mindroom/tools/serper.py +81 -0
  124. mindroom/tools/shell.py +46 -0
  125. mindroom/tools/slack.py +80 -0
  126. mindroom/tools/sleep.py +38 -0
  127. mindroom/tools/spider.py +62 -0
  128. mindroom/tools/sql.py +138 -0
  129. mindroom/tools/tavily.py +104 -0
  130. mindroom/tools/telegram.py +54 -0
  131. mindroom/tools/todoist.py +103 -0
  132. mindroom/tools/trello.py +121 -0
  133. mindroom/tools/twilio.py +97 -0
  134. mindroom/tools/web_browser_tools.py +37 -0
  135. mindroom/tools/webex.py +63 -0
  136. mindroom/tools/website.py +45 -0
  137. mindroom/tools/whatsapp.py +81 -0
  138. mindroom/tools/wikipedia.py +45 -0
  139. mindroom/tools/x.py +97 -0
  140. mindroom/tools/yfinance.py +121 -0
  141. mindroom/tools/youtube.py +81 -0
  142. mindroom/tools/zendesk.py +62 -0
  143. mindroom/tools/zep.py +107 -0
  144. mindroom/tools/zoom.py +62 -0
  145. mindroom/tools_metadata.json +7643 -0
  146. mindroom/tools_metadata.py +220 -0
  147. mindroom/topic_generator.py +153 -0
  148. mindroom/voice_handler.py +266 -0
  149. mindroom-0.1.1.dist-info/METADATA +425 -0
  150. mindroom-0.1.1.dist-info/RECORD +152 -0
  151. {mindroom-0.0.0.dist-info → mindroom-0.1.1.dist-info}/WHEEL +1 -2
  152. mindroom-0.1.1.dist-info/entry_points.txt +2 -0
  153. mindroom-0.0.0.dist-info/METADATA +0 -24
  154. mindroom-0.0.0.dist-info/RECORD +0 -4
  155. mindroom-0.0.0.dist-info/top_level.txt +0 -1
@@ -0,0 +1,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
@@ -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
@@ -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