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,64 @@
1
+ """ArXiv 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.arxiv import ArxivTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="arxiv",
21
+ display_name="ArXiv",
22
+ description="Search and read academic papers from ArXiv",
23
+ category=ToolCategory.RESEARCH,
24
+ status=ToolStatus.AVAILABLE,
25
+ setup_type=SetupType.NONE,
26
+ icon="FaFileAlt",
27
+ icon_color="text-red-600", # ArXiv red
28
+ config_fields=[
29
+ # Feature flags
30
+ ConfigField(
31
+ name="search_arxiv",
32
+ label="Search ArXiv",
33
+ type="boolean",
34
+ required=False,
35
+ default=True,
36
+ description="Enable searching ArXiv for academic papers",
37
+ ),
38
+ ConfigField(
39
+ name="read_arxiv_papers",
40
+ label="Read ArXiv Papers",
41
+ type="boolean",
42
+ required=False,
43
+ default=True,
44
+ description="Enable downloading and reading ArXiv papers",
45
+ ),
46
+ # Configuration
47
+ ConfigField(
48
+ name="download_dir",
49
+ label="Download Directory",
50
+ type="text",
51
+ required=False,
52
+ default=None,
53
+ placeholder="/path/to/downloads",
54
+ description="Directory to download PDF files (defaults to arxiv_pdfs in tool directory)",
55
+ ),
56
+ ],
57
+ dependencies=["arxiv", "pypdf"],
58
+ docs_url="https://docs.agno.com/tools/toolkits/search/arxiv",
59
+ )
60
+ def arxiv_tools() -> type[ArxivTools]:
61
+ """Return ArXiv tools for academic paper research."""
62
+ from agno.tools.arxiv import ArxivTools
63
+
64
+ return ArxivTools
@@ -0,0 +1,41 @@
1
+ """AWS Lambda 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.aws_lambda import AWSLambdaTools
11
+
12
+
13
+ @register_tool_with_metadata(
14
+ name="aws_lambda",
15
+ display_name="AWS Lambda",
16
+ description="Serverless function management and execution",
17
+ category=ToolCategory.DEVELOPMENT,
18
+ status=ToolStatus.AVAILABLE,
19
+ setup_type=SetupType.NONE,
20
+ icon="FaAws",
21
+ icon_color="text-orange-500",
22
+ config_fields=[
23
+ # Configuration
24
+ ConfigField(
25
+ name="region_name",
26
+ label="Region Name",
27
+ type="text",
28
+ required=False,
29
+ default="us-east-1",
30
+ placeholder="us-east-1",
31
+ description="AWS region name where Lambda functions are located",
32
+ ),
33
+ ],
34
+ dependencies=["boto3"],
35
+ docs_url="https://docs.agno.com/tools/toolkits/others/aws_lambda",
36
+ )
37
+ def aws_lambda_tools() -> type[AWSLambdaTools]:
38
+ """Return AWS Lambda tools for serverless function management."""
39
+ from agno.tools.aws_lambda import AWSLambdaTools
40
+
41
+ return AWSLambdaTools
@@ -0,0 +1,57 @@
1
+ """AWS SES 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.aws_ses import AWSSESTool
11
+
12
+
13
+ @register_tool_with_metadata(
14
+ name="aws_ses",
15
+ display_name="AWS SES",
16
+ description="Send emails using Amazon Simple Email Service",
17
+ category=ToolCategory.EMAIL,
18
+ status=ToolStatus.REQUIRES_CONFIG,
19
+ setup_type=SetupType.API_KEY,
20
+ icon="FaAws",
21
+ icon_color="text-orange-500",
22
+ config_fields=[
23
+ # Authentication/Connection parameters
24
+ ConfigField(
25
+ name="sender_email",
26
+ label="Sender Email",
27
+ type="text",
28
+ required=False,
29
+ placeholder="sender@example.com",
30
+ description="Verified SES sender address",
31
+ ),
32
+ ConfigField(
33
+ name="sender_name",
34
+ label="Sender Name",
35
+ type="text",
36
+ required=False,
37
+ placeholder="Your Name",
38
+ description="Display name that appears to recipients",
39
+ ),
40
+ ConfigField(
41
+ name="region_name",
42
+ label="AWS Region",
43
+ type="text",
44
+ required=False,
45
+ default="us-east-1",
46
+ placeholder="us-east-1",
47
+ description="AWS region where SES is provisioned",
48
+ ),
49
+ ],
50
+ dependencies=["boto3"],
51
+ docs_url="https://docs.agno.com/tools/toolkits/others/aws_ses",
52
+ )
53
+ def aws_ses_tools() -> type[AWSSESTool]:
54
+ """Return AWS SES tools for sending emails."""
55
+ from agno.tools.aws_ses import AWSSESTool
56
+
57
+ return AWSSESTool
@@ -0,0 +1,87 @@
1
+ """BaiduSearch 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.baidusearch import BaiduSearchTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="baidusearch",
21
+ display_name="Baidu Search",
22
+ description="Search the web using Baidu search engine with Chinese language support",
23
+ category=ToolCategory.RESEARCH,
24
+ status=ToolStatus.AVAILABLE,
25
+ setup_type=SetupType.NONE,
26
+ icon="Search",
27
+ icon_color="text-blue-600",
28
+ config_fields=[
29
+ # Search configuration
30
+ ConfigField(
31
+ name="fixed_max_results",
32
+ label="Fixed Max Results",
33
+ type="number",
34
+ required=False,
35
+ placeholder="5",
36
+ description="Sets a fixed number of maximum results to return",
37
+ ),
38
+ ConfigField(
39
+ name="fixed_language",
40
+ label="Fixed Language",
41
+ type="text",
42
+ required=False,
43
+ placeholder="zh",
44
+ description="Set the fixed language for the results",
45
+ ),
46
+ ConfigField(
47
+ name="headers",
48
+ label="Custom Headers",
49
+ type="text",
50
+ required=False,
51
+ placeholder='{"User-Agent": "Custom Agent"}',
52
+ description="Headers to be used in the search request",
53
+ ),
54
+ ConfigField(
55
+ name="proxy",
56
+ label="Proxy",
57
+ type="url",
58
+ required=False,
59
+ placeholder="http://proxy.example.com:8080",
60
+ description="Specifies a single proxy address as a string",
61
+ ),
62
+ ConfigField(
63
+ name="timeout",
64
+ label="Timeout",
65
+ type="number",
66
+ required=False,
67
+ default=10,
68
+ description="Sets the timeout for HTTP requests, in seconds",
69
+ ),
70
+ # Feature flags
71
+ ConfigField(
72
+ name="debug",
73
+ label="Debug Mode",
74
+ type="boolean",
75
+ required=False,
76
+ default=False,
77
+ description="Enable debug output for search requests",
78
+ ),
79
+ ],
80
+ dependencies=["baidusearch", "pycountry"],
81
+ docs_url="https://docs.agno.com/tools/toolkits/search/baidusearch",
82
+ )
83
+ def baidusearch_tools() -> type[BaiduSearchTools]:
84
+ """Return Baidu search tools for web search."""
85
+ from agno.tools.baidusearch import BaiduSearchTools
86
+
87
+ return BaiduSearchTools
@@ -0,0 +1,116 @@
1
+ """BrightData 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.brightdata import BrightDataTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="brightdata",
21
+ display_name="BrightData",
22
+ description="Web scraping, search engine queries, screenshots, and structured data extraction",
23
+ category=ToolCategory.RESEARCH,
24
+ status=ToolStatus.REQUIRES_CONFIG,
25
+ setup_type=SetupType.API_KEY,
26
+ icon="FaSpider",
27
+ icon_color="text-blue-600",
28
+ config_fields=[
29
+ # Authentication
30
+ ConfigField(
31
+ name="api_key",
32
+ label="API Key",
33
+ type="password",
34
+ required=False,
35
+ placeholder="your_brightdata_api_key",
36
+ description="BrightData API key (can also be set via BRIGHT_DATA_API_KEY env var)",
37
+ ),
38
+ # Zone configuration
39
+ ConfigField(
40
+ name="serp_zone",
41
+ label="SERP Zone",
42
+ type="text",
43
+ required=False,
44
+ default="serp_api",
45
+ placeholder="serp_api",
46
+ description="Zone for search engine requests (can be overridden with BRIGHT_DATA_SERP_ZONE env var)",
47
+ ),
48
+ ConfigField(
49
+ name="web_unlocker_zone",
50
+ label="Web Unlocker Zone",
51
+ type="text",
52
+ required=False,
53
+ default="web_unlocker1",
54
+ placeholder="web_unlocker1",
55
+ description="Zone for web scraping requests (can be overridden with BRIGHT_DATA_WEB_UNLOCKER_ZONE env var)",
56
+ ),
57
+ # Feature toggles
58
+ ConfigField(
59
+ name="scrape_as_markdown",
60
+ label="Scrape as Markdown",
61
+ type="boolean",
62
+ required=False,
63
+ default=True,
64
+ description="Enable the scrape_as_markdown tool",
65
+ ),
66
+ ConfigField(
67
+ name="get_screenshot",
68
+ label="Get Screenshot",
69
+ type="boolean",
70
+ required=False,
71
+ default=False,
72
+ description="Enable the get_screenshot tool",
73
+ ),
74
+ ConfigField(
75
+ name="search_engine",
76
+ label="Search Engine",
77
+ type="boolean",
78
+ required=False,
79
+ default=True,
80
+ description="Enable the search_engine tool",
81
+ ),
82
+ ConfigField(
83
+ name="web_data_feed",
84
+ label="Web Data Feed",
85
+ type="boolean",
86
+ required=False,
87
+ default=True,
88
+ description="Enable the web_data_feed tool",
89
+ ),
90
+ # Configuration
91
+ ConfigField(
92
+ name="verbose",
93
+ label="Verbose Logging",
94
+ type="boolean",
95
+ required=False,
96
+ default=False,
97
+ description="Enable verbose logging",
98
+ ),
99
+ ConfigField(
100
+ name="timeout",
101
+ label="Timeout",
102
+ type="number",
103
+ required=False,
104
+ default=600,
105
+ placeholder="600",
106
+ description="Timeout in seconds for web data feed requests",
107
+ ),
108
+ ],
109
+ dependencies=["requests"],
110
+ docs_url="https://docs.agno.com/tools/toolkits/web_scrape/brightdata",
111
+ )
112
+ def brightdata_tools() -> type[BrightDataTools]:
113
+ """Return BrightData tools for web scraping and data extraction."""
114
+ from agno.tools.brightdata import BrightDataTools
115
+
116
+ return BrightDataTools
@@ -0,0 +1,62 @@
1
+ """Browserbase 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.browserbase import BrowserbaseTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="browserbase",
21
+ display_name="Browserbase",
22
+ description="Browser automation and web scraping using headless browsers",
23
+ category=ToolCategory.RESEARCH,
24
+ status=ToolStatus.REQUIRES_CONFIG,
25
+ setup_type=SetupType.API_KEY,
26
+ icon="FaChrome",
27
+ icon_color="text-blue-600",
28
+ config_fields=[
29
+ # Authentication/Connection parameters
30
+ ConfigField(
31
+ name="api_key",
32
+ label="API Key",
33
+ type="password",
34
+ required=False,
35
+ placeholder="bb_...",
36
+ description="Browserbase API key (can also be set via BROWSERBASE_API_KEY env var)",
37
+ ),
38
+ ConfigField(
39
+ name="project_id",
40
+ label="Project ID",
41
+ type="text",
42
+ required=False,
43
+ placeholder="project-12345",
44
+ description="Browserbase project ID (can also be set via BROWSERBASE_PROJECT_ID env var)",
45
+ ),
46
+ ConfigField(
47
+ name="base_url",
48
+ label="Base URL",
49
+ type="url",
50
+ required=False,
51
+ placeholder="https://api.browserbase.com",
52
+ description="Custom Browserbase API endpoint URL. Only use this if you're using a self-hosted Browserbase instance or need to connect to a different region (can also be set via BROWSERBASE_BASE_URL env var)",
53
+ ),
54
+ ],
55
+ dependencies=["browserbase", "playwright"],
56
+ docs_url="https://docs.agno.com/tools/toolkits/web_scrape/browserbase",
57
+ )
58
+ def browserbase_tools() -> type[BrowserbaseTools]:
59
+ """Return Browserbase tools for browser automation and web scraping."""
60
+ from agno.tools.browserbase import BrowserbaseTools
61
+
62
+ return BrowserbaseTools
@@ -0,0 +1,98 @@
1
+ """Cal.com 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.calcom import CalComTools
11
+
12
+
13
+ @register_tool_with_metadata(
14
+ name="cal_com",
15
+ display_name="Cal.com",
16
+ description="Calendar scheduling and booking management",
17
+ category=ToolCategory.DEVELOPMENT,
18
+ status=ToolStatus.REQUIRES_CONFIG,
19
+ setup_type=SetupType.API_KEY,
20
+ icon="FaCalendarAlt",
21
+ icon_color="text-blue-600",
22
+ config_fields=[
23
+ # Authentication/Connection parameters
24
+ ConfigField(
25
+ name="api_key",
26
+ label="API Key",
27
+ type="password",
28
+ required=False,
29
+ placeholder="cal_live_...",
30
+ description="Cal.com API key (can also be set via CALCOM_API_KEY env var)",
31
+ ),
32
+ ConfigField(
33
+ name="event_type_id",
34
+ label="Event Type ID",
35
+ type="number",
36
+ required=False,
37
+ placeholder="123456",
38
+ description="Default event type ID for bookings (can also be set via CALCOM_EVENT_TYPE_ID env var)",
39
+ ),
40
+ ConfigField(
41
+ name="user_timezone",
42
+ label="User Timezone",
43
+ type="text",
44
+ required=False,
45
+ default="America/New_York",
46
+ placeholder="America/New_York",
47
+ description="User's timezone in IANA format (e.g., 'America/New_York', 'Europe/London')",
48
+ ),
49
+ # Booking management features
50
+ ConfigField(
51
+ name="get_available_slots",
52
+ label="Get Available Slots",
53
+ type="boolean",
54
+ required=False,
55
+ default=True,
56
+ description="Enable getting available time slots for booking",
57
+ ),
58
+ ConfigField(
59
+ name="create_booking",
60
+ label="Create Booking",
61
+ type="boolean",
62
+ required=False,
63
+ default=True,
64
+ description="Enable creating new bookings",
65
+ ),
66
+ ConfigField(
67
+ name="get_upcoming_bookings",
68
+ label="Get Upcoming Bookings",
69
+ type="boolean",
70
+ required=False,
71
+ default=True,
72
+ description="Enable getting upcoming bookings",
73
+ ),
74
+ ConfigField(
75
+ name="reschedule_booking",
76
+ label="Reschedule Booking",
77
+ type="boolean",
78
+ required=False,
79
+ default=True,
80
+ description="Enable rescheduling existing bookings",
81
+ ),
82
+ ConfigField(
83
+ name="cancel_booking",
84
+ label="Cancel Booking",
85
+ type="boolean",
86
+ required=False,
87
+ default=True,
88
+ description="Enable canceling existing bookings",
89
+ ),
90
+ ],
91
+ dependencies=["requests", "pytz"],
92
+ docs_url="https://docs.agno.com/tools/toolkits/others/calcom",
93
+ )
94
+ def cal_com_tools() -> type[CalComTools]:
95
+ """Return Cal.com tools for calendar scheduling and booking management."""
96
+ from agno.tools.calcom import CalComTools
97
+
98
+ return CalComTools
@@ -0,0 +1,112 @@
1
+ """Calculator 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.calculator import CalculatorTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="calculator",
21
+ display_name="Calculator",
22
+ description="Mathematical calculator with basic and advanced operations",
23
+ category=ToolCategory.DEVELOPMENT, # Local tool
24
+ status=ToolStatus.AVAILABLE, # No config needed
25
+ setup_type=SetupType.NONE, # No authentication required
26
+ icon="Calculator", # React icon name
27
+ icon_color="text-blue-500", # Tailwind color class
28
+ config_fields=[
29
+ # Basic arithmetic operations (enabled by default)
30
+ ConfigField(
31
+ name="add",
32
+ label="Addition",
33
+ type="boolean",
34
+ required=False,
35
+ default=True,
36
+ description="Enable addition operation",
37
+ ),
38
+ ConfigField(
39
+ name="subtract",
40
+ label="Subtraction",
41
+ type="boolean",
42
+ required=False,
43
+ default=True,
44
+ description="Enable subtraction operation",
45
+ ),
46
+ ConfigField(
47
+ name="multiply",
48
+ label="Multiplication",
49
+ type="boolean",
50
+ required=False,
51
+ default=True,
52
+ description="Enable multiplication operation",
53
+ ),
54
+ ConfigField(
55
+ name="divide",
56
+ label="Division",
57
+ type="boolean",
58
+ required=False,
59
+ default=True,
60
+ description="Enable division operation",
61
+ ),
62
+ # Advanced mathematical operations (disabled by default)
63
+ ConfigField(
64
+ name="exponentiate",
65
+ label="Exponentiation",
66
+ type="boolean",
67
+ required=False,
68
+ default=False,
69
+ description="Enable exponentiation operation (power calculation)",
70
+ ),
71
+ ConfigField(
72
+ name="factorial",
73
+ label="Factorial",
74
+ type="boolean",
75
+ required=False,
76
+ default=False,
77
+ description="Enable factorial calculation for integers",
78
+ ),
79
+ ConfigField(
80
+ name="is_prime",
81
+ label="Prime Check",
82
+ type="boolean",
83
+ required=False,
84
+ default=False,
85
+ description="Enable prime number checking",
86
+ ),
87
+ ConfigField(
88
+ name="square_root",
89
+ label="Square Root",
90
+ type="boolean",
91
+ required=False,
92
+ default=False,
93
+ description="Enable square root calculation",
94
+ ),
95
+ # Global control
96
+ ConfigField(
97
+ name="enable_all",
98
+ label="Enable All Operations",
99
+ type="boolean",
100
+ required=False,
101
+ default=False,
102
+ description="Enable all available mathematical operations regardless of individual settings",
103
+ ),
104
+ ],
105
+ dependencies=["agno"], # From agno requirements
106
+ docs_url="https://docs.agno.com/tools/toolkits/local/calculator",
107
+ )
108
+ def calculator_tools() -> type[CalculatorTools]:
109
+ """Return calculator tools for mathematical operations."""
110
+ from agno.tools.calculator import CalculatorTools
111
+
112
+ return CalculatorTools