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,376 @@
1
+ """Tools registry for all available Agno tools.
2
+
3
+ This module provides a centralized registry for all tools that can be used by agents.
4
+ Tools are registered by string name and can be instantiated dynamically when loading agents.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from typing import TYPE_CHECKING
10
+
11
+ from mindroom.tools_metadata import (
12
+ ConfigField,
13
+ SetupType,
14
+ ToolCategory,
15
+ ToolStatus,
16
+ register_tool_with_metadata,
17
+ )
18
+
19
+ if TYPE_CHECKING:
20
+ from agno.tools.github import GithubTools
21
+
22
+
23
+ @register_tool_with_metadata(
24
+ name="github",
25
+ display_name="GitHub",
26
+ description="Repository and issue management",
27
+ category=ToolCategory.DEVELOPMENT,
28
+ status=ToolStatus.REQUIRES_CONFIG,
29
+ setup_type=SetupType.API_KEY,
30
+ icon="FaGithub",
31
+ icon_color="text-gray-800", # GitHub black
32
+ config_fields=[
33
+ # Authentication
34
+ ConfigField(
35
+ name="access_token",
36
+ label="Access Token",
37
+ type="password",
38
+ required=False,
39
+ placeholder="ghp_...",
40
+ description="GitHub personal access token (can also be set via GITHUB_ACCESS_TOKEN env var)",
41
+ ),
42
+ ConfigField(
43
+ name="base_url",
44
+ label="Base URL",
45
+ type="url",
46
+ required=False,
47
+ placeholder="https://api.github.com",
48
+ description="GitHub API base URL (for GitHub Enterprise)",
49
+ ),
50
+ # Repository operations
51
+ ConfigField(
52
+ name="search_repositories",
53
+ label="Search Repositories",
54
+ type="boolean",
55
+ required=False,
56
+ default=True,
57
+ description="Enable searching for repositories",
58
+ ),
59
+ ConfigField(
60
+ name="list_repositories",
61
+ label="List Repositories",
62
+ type="boolean",
63
+ required=False,
64
+ default=False,
65
+ description="Enable listing user/org repositories",
66
+ ),
67
+ ConfigField(
68
+ name="get_repository",
69
+ label="Get Repository",
70
+ type="boolean",
71
+ required=False,
72
+ default=False,
73
+ description="Enable getting repository details",
74
+ ),
75
+ ConfigField(
76
+ name="create_repository",
77
+ label="Create Repository",
78
+ type="boolean",
79
+ required=False,
80
+ default=False,
81
+ description="Enable creating new repositories",
82
+ ),
83
+ ConfigField(
84
+ name="delete_repository",
85
+ label="Delete Repository",
86
+ type="boolean",
87
+ required=False,
88
+ default=False,
89
+ description="Enable deleting repositories",
90
+ ),
91
+ ConfigField(
92
+ name="get_repository_languages",
93
+ label="Get Repository Languages",
94
+ type="boolean",
95
+ required=False,
96
+ default=False,
97
+ description="Enable getting repository language statistics",
98
+ ),
99
+ ConfigField(
100
+ name="get_repository_stars",
101
+ label="Get Repository Stars",
102
+ type="boolean",
103
+ required=False,
104
+ default=False,
105
+ description="Enable getting repository star count",
106
+ ),
107
+ ConfigField(
108
+ name="get_repository_with_stats",
109
+ label="Get Repository with Stats",
110
+ type="boolean",
111
+ required=False,
112
+ default=False,
113
+ description="Enable getting repository with detailed statistics",
114
+ ),
115
+ # Branch operations
116
+ ConfigField(
117
+ name="list_branches",
118
+ label="List Branches",
119
+ type="boolean",
120
+ required=False,
121
+ default=False,
122
+ description="Enable listing repository branches",
123
+ ),
124
+ ConfigField(
125
+ name="create_branch",
126
+ label="Create Branch",
127
+ type="boolean",
128
+ required=False,
129
+ default=False,
130
+ description="Enable creating new branches",
131
+ ),
132
+ ConfigField(
133
+ name="set_default_branch",
134
+ label="Set Default Branch",
135
+ type="boolean",
136
+ required=False,
137
+ default=False,
138
+ description="Enable setting the default branch",
139
+ ),
140
+ ConfigField(
141
+ name="get_branch_content",
142
+ label="Get Branch Content",
143
+ type="boolean",
144
+ required=False,
145
+ default=False,
146
+ description="Enable getting branch content",
147
+ ),
148
+ # Pull Request operations
149
+ ConfigField(
150
+ name="get_pull_request",
151
+ label="Get Pull Request",
152
+ type="boolean",
153
+ required=False,
154
+ default=False,
155
+ description="Enable getting pull request details",
156
+ ),
157
+ ConfigField(
158
+ name="get_pull_request_changes",
159
+ label="Get Pull Request Changes",
160
+ type="boolean",
161
+ required=False,
162
+ default=False,
163
+ description="Enable getting pull request file changes",
164
+ ),
165
+ ConfigField(
166
+ name="get_pull_request_count",
167
+ label="Get Pull Request Count",
168
+ type="boolean",
169
+ required=False,
170
+ default=False,
171
+ description="Enable getting pull request count",
172
+ ),
173
+ ConfigField(
174
+ name="get_pull_requests",
175
+ label="Get Pull Requests",
176
+ type="boolean",
177
+ required=False,
178
+ default=False,
179
+ description="Enable listing pull requests",
180
+ ),
181
+ ConfigField(
182
+ name="get_pull_request_comments",
183
+ label="Get Pull Request Comments",
184
+ type="boolean",
185
+ required=False,
186
+ default=False,
187
+ description="Enable getting pull request comments",
188
+ ),
189
+ ConfigField(
190
+ name="create_pull_request_comment",
191
+ label="Create Pull Request Comment",
192
+ type="boolean",
193
+ required=False,
194
+ default=False,
195
+ description="Enable creating pull request comments",
196
+ ),
197
+ ConfigField(
198
+ name="edit_pull_request_comment",
199
+ label="Edit Pull Request Comment",
200
+ type="boolean",
201
+ required=False,
202
+ default=False,
203
+ description="Enable editing pull request comments",
204
+ ),
205
+ ConfigField(
206
+ name="get_pull_request_with_details",
207
+ label="Get Pull Request with Details",
208
+ type="boolean",
209
+ required=False,
210
+ default=False,
211
+ description="Enable getting pull request with full details",
212
+ ),
213
+ ConfigField(
214
+ name="create_pull_request",
215
+ label="Create Pull Request",
216
+ type="boolean",
217
+ required=False,
218
+ default=False,
219
+ description="Enable creating new pull requests",
220
+ ),
221
+ ConfigField(
222
+ name="create_review_request",
223
+ label="Create Review Request",
224
+ type="boolean",
225
+ required=False,
226
+ default=False,
227
+ description="Enable requesting reviews on pull requests",
228
+ ),
229
+ # Issue operations
230
+ ConfigField(
231
+ name="create_issue",
232
+ label="Create Issue",
233
+ type="boolean",
234
+ required=False,
235
+ default=False,
236
+ description="Enable creating new issues",
237
+ ),
238
+ ConfigField(
239
+ name="list_issues",
240
+ label="List Issues",
241
+ type="boolean",
242
+ required=False,
243
+ default=False,
244
+ description="Enable listing repository issues",
245
+ ),
246
+ ConfigField(
247
+ name="get_issue",
248
+ label="Get Issue",
249
+ type="boolean",
250
+ required=False,
251
+ default=False,
252
+ description="Enable getting issue details",
253
+ ),
254
+ ConfigField(
255
+ name="comment_on_issue",
256
+ label="Comment on Issue",
257
+ type="boolean",
258
+ required=False,
259
+ default=False,
260
+ description="Enable commenting on issues",
261
+ ),
262
+ ConfigField(
263
+ name="close_issue",
264
+ label="Close Issue",
265
+ type="boolean",
266
+ required=False,
267
+ default=False,
268
+ description="Enable closing issues",
269
+ ),
270
+ ConfigField(
271
+ name="reopen_issue",
272
+ label="Reopen Issue",
273
+ type="boolean",
274
+ required=False,
275
+ default=False,
276
+ description="Enable reopening closed issues",
277
+ ),
278
+ ConfigField(
279
+ name="assign_issue",
280
+ label="Assign Issue",
281
+ type="boolean",
282
+ required=False,
283
+ default=False,
284
+ description="Enable assigning issues to users",
285
+ ),
286
+ ConfigField(
287
+ name="label_issue",
288
+ label="Label Issue",
289
+ type="boolean",
290
+ required=False,
291
+ default=False,
292
+ description="Enable adding labels to issues",
293
+ ),
294
+ ConfigField(
295
+ name="list_issue_comments",
296
+ label="List Issue Comments",
297
+ type="boolean",
298
+ required=False,
299
+ default=False,
300
+ description="Enable listing issue comments",
301
+ ),
302
+ ConfigField(
303
+ name="edit_issue",
304
+ label="Edit Issue",
305
+ type="boolean",
306
+ required=False,
307
+ default=False,
308
+ description="Enable editing issue details",
309
+ ),
310
+ # File operations
311
+ ConfigField(
312
+ name="create_file",
313
+ label="Create File",
314
+ type="boolean",
315
+ required=False,
316
+ default=False,
317
+ description="Enable creating new files in repositories",
318
+ ),
319
+ ConfigField(
320
+ name="get_file_content",
321
+ label="Get File Content",
322
+ type="boolean",
323
+ required=False,
324
+ default=False,
325
+ description="Enable reading file content from repositories",
326
+ ),
327
+ ConfigField(
328
+ name="update_file",
329
+ label="Update File",
330
+ type="boolean",
331
+ required=False,
332
+ default=True,
333
+ description="Enable updating files in repositories",
334
+ ),
335
+ ConfigField(
336
+ name="delete_file",
337
+ label="Delete File",
338
+ type="boolean",
339
+ required=False,
340
+ default=False,
341
+ description="Enable deleting files from repositories",
342
+ ),
343
+ ConfigField(
344
+ name="get_directory_content",
345
+ label="Get Directory Content",
346
+ type="boolean",
347
+ required=False,
348
+ default=False,
349
+ description="Enable listing directory contents",
350
+ ),
351
+ # Search operations
352
+ ConfigField(
353
+ name="search_code",
354
+ label="Search Code",
355
+ type="boolean",
356
+ required=False,
357
+ default=False,
358
+ description="Enable searching code across repositories",
359
+ ),
360
+ ConfigField(
361
+ name="search_issues_and_prs",
362
+ label="Search Issues and PRs",
363
+ type="boolean",
364
+ required=False,
365
+ default=False,
366
+ description="Enable searching issues and pull requests",
367
+ ),
368
+ ],
369
+ dependencies=["PyGithub"],
370
+ docs_url="https://docs.agno.com/tools/toolkits/others/github",
371
+ )
372
+ def github_tools() -> type[GithubTools]:
373
+ """Return GitHub tools for repository management."""
374
+ from agno.tools.github import GithubTools
375
+
376
+ return GithubTools
@@ -0,0 +1,102 @@
1
+ """Gmail 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 mindroom.custom_tools.gmail import GmailTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="gmail",
21
+ display_name="Gmail",
22
+ description="Read, search, and manage Gmail emails",
23
+ category=ToolCategory.EMAIL,
24
+ status=ToolStatus.REQUIRES_CONFIG,
25
+ setup_type=SetupType.SPECIAL,
26
+ auth_provider="google", # Authentication provided by Google Services integration
27
+ icon="FaGoogle",
28
+ icon_color="text-red-500",
29
+ config_fields=[
30
+ ConfigField(
31
+ name="get_latest_emails",
32
+ label="Get Latest Emails",
33
+ type="boolean",
34
+ required=False,
35
+ default=True,
36
+ description="Allow retrieving the latest emails",
37
+ ),
38
+ ConfigField(
39
+ name="get_emails_from_user",
40
+ label="Get Emails From User",
41
+ type="boolean",
42
+ required=False,
43
+ default=True,
44
+ description="Allow retrieving emails from specific users",
45
+ ),
46
+ ConfigField(
47
+ name="get_unread_emails",
48
+ label="Get Unread Emails",
49
+ type="boolean",
50
+ required=False,
51
+ default=True,
52
+ description="Allow retrieving unread emails",
53
+ ),
54
+ ConfigField(
55
+ name="get_starred_emails",
56
+ label="Get Starred Emails",
57
+ type="boolean",
58
+ required=False,
59
+ default=True,
60
+ description="Allow retrieving starred emails",
61
+ ),
62
+ ConfigField(
63
+ name="search_emails",
64
+ label="Search Emails",
65
+ type="boolean",
66
+ required=False,
67
+ default=True,
68
+ description="Allow searching through emails",
69
+ ),
70
+ ConfigField(
71
+ name="create_draft_email",
72
+ label="Create Draft Emails",
73
+ type="boolean",
74
+ required=False,
75
+ default=True,
76
+ description="Allow creating draft emails",
77
+ ),
78
+ ConfigField(
79
+ name="send_email",
80
+ label="Send Emails",
81
+ type="boolean",
82
+ required=False,
83
+ default=True,
84
+ description="Allow sending emails",
85
+ ),
86
+ ConfigField(
87
+ name="send_email_reply",
88
+ label="Send Email Replies",
89
+ type="boolean",
90
+ required=False,
91
+ default=True,
92
+ description="Allow sending replies to emails",
93
+ ),
94
+ ],
95
+ dependencies=["google-api-python-client", "google-auth", "google-auth-oauthlib", "google-auth-httplib2"],
96
+ docs_url="https://docs.agno.com/tools/toolkits/social/gmail",
97
+ )
98
+ def gmail_tools() -> type[GmailTools]:
99
+ """Return Gmail tools for email management."""
100
+ from mindroom.custom_tools.gmail import GmailTools
101
+
102
+ return GmailTools
@@ -0,0 +1,55 @@
1
+ """Google Calendar 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 mindroom.custom_tools.google_calendar import GoogleCalendarTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="google_calendar",
21
+ display_name="Google Calendar",
22
+ description="View and schedule meetings with Google Calendar",
23
+ category=ToolCategory.PRODUCTIVITY,
24
+ status=ToolStatus.REQUIRES_CONFIG,
25
+ setup_type=SetupType.SPECIAL,
26
+ auth_provider="google", # Authentication provided by Google Services integration
27
+ icon="FaCalendarAlt",
28
+ icon_color="text-blue-600", # Google Calendar blue
29
+ config_fields=[
30
+ ConfigField(
31
+ name="calendar_id",
32
+ label="Calendar ID",
33
+ type="text",
34
+ required=False,
35
+ default="primary",
36
+ placeholder="primary",
37
+ description="The Google Calendar ID to use (default: 'primary' for the user's main calendar)",
38
+ ),
39
+ ConfigField(
40
+ name="allow_update",
41
+ label="Allow Updates",
42
+ type="boolean",
43
+ required=False,
44
+ default=False,
45
+ description="Allow the agent to create, update, and delete calendar events",
46
+ ),
47
+ ],
48
+ dependencies=["google-api-python-client", "google-auth", "google-auth-httplib2", "google-auth-oauthlib"],
49
+ docs_url="https://docs.agno.com/tools/toolkits/others/googlecalendar",
50
+ )
51
+ def google_calendar_tools() -> type[GoogleCalendarTools]:
52
+ """Return Google Calendar tools for calendar management."""
53
+ from mindroom.custom_tools.google_calendar import GoogleCalendarTools
54
+
55
+ return GoogleCalendarTools
@@ -0,0 +1,112 @@
1
+ """Google Maps 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.google_maps import GoogleMapTools
11
+
12
+
13
+ @register_tool_with_metadata(
14
+ name="google_maps",
15
+ display_name="Google Maps",
16
+ description="Tools for interacting with Google Maps services including place search, directions, geocoding, and more",
17
+ category=ToolCategory.DEVELOPMENT,
18
+ status=ToolStatus.REQUIRES_CONFIG,
19
+ setup_type=SetupType.API_KEY,
20
+ icon="FaMapMarkedAlt",
21
+ icon_color="text-red-500",
22
+ config_fields=[
23
+ # Authentication
24
+ ConfigField(
25
+ name="key",
26
+ label="API Key",
27
+ type="password",
28
+ required=False,
29
+ placeholder="AIza...",
30
+ description="Google Maps API key (can also be set via GOOGLE_MAPS_API_KEY env var)",
31
+ ),
32
+ # Place search functionality
33
+ ConfigField(
34
+ name="search_places",
35
+ label="Search Places",
36
+ type="boolean",
37
+ required=False,
38
+ default=True,
39
+ description="Enable places search functionality",
40
+ ),
41
+ # Directions functionality
42
+ ConfigField(
43
+ name="get_directions",
44
+ label="Get Directions",
45
+ type="boolean",
46
+ required=False,
47
+ default=True,
48
+ description="Enable directions functionality",
49
+ ),
50
+ # Address validation functionality
51
+ ConfigField(
52
+ name="validate_address",
53
+ label="Validate Address",
54
+ type="boolean",
55
+ required=False,
56
+ default=True,
57
+ description="Enable address validation functionality",
58
+ ),
59
+ # Geocoding functionality
60
+ ConfigField(
61
+ name="geocode_address",
62
+ label="Geocode Address",
63
+ type="boolean",
64
+ required=False,
65
+ default=True,
66
+ description="Enable geocoding functionality",
67
+ ),
68
+ # Reverse geocoding functionality
69
+ ConfigField(
70
+ name="reverse_geocode",
71
+ label="Reverse Geocode",
72
+ type="boolean",
73
+ required=False,
74
+ default=True,
75
+ description="Enable reverse geocoding functionality",
76
+ ),
77
+ # Distance matrix functionality
78
+ ConfigField(
79
+ name="get_distance_matrix",
80
+ label="Get Distance Matrix",
81
+ type="boolean",
82
+ required=False,
83
+ default=True,
84
+ description="Enable distance matrix functionality",
85
+ ),
86
+ # Elevation functionality
87
+ ConfigField(
88
+ name="get_elevation",
89
+ label="Get Elevation",
90
+ type="boolean",
91
+ required=False,
92
+ default=True,
93
+ description="Enable elevation functionality",
94
+ ),
95
+ # Timezone functionality
96
+ ConfigField(
97
+ name="get_timezone",
98
+ label="Get Timezone",
99
+ type="boolean",
100
+ required=False,
101
+ default=True,
102
+ description="Enable timezone functionality",
103
+ ),
104
+ ],
105
+ dependencies=["googlemaps", "google-maps-places"],
106
+ docs_url="https://docs.agno.com/tools/toolkits/others/google_maps",
107
+ )
108
+ def google_maps_tools() -> type[GoogleMapTools]:
109
+ """Return Google Maps tools for location services."""
110
+ from agno.tools.google_maps import GoogleMapTools
111
+
112
+ return GoogleMapTools