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/github.py
ADDED
|
@@ -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
|
mindroom/tools/gmail.py
ADDED
|
@@ -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
|